분류 전체보기 143

Mapbox(MapLibre)의 glyphs strites와 PBF 폰트 파일 이해하기

개요Mapbox에서 사용하는 폰트 파일(*.pbf)은 Protocol Buffer Font의 약자로, Google의 Protocol Buffers를 기반으로 하는 벡터 글리프 포맷입니다. 오늘은 이 PBF 폰트 파일의 구조와 CJK(중국어, 일본어, 한국어) 폰트를 만드는 방법에 대해 알아보겠습니다.PBF 폰트 파일이란?Mapbox의 PBF 폰트 파일은 다음과 같은 특징을 가집니다:벡터 기반 글리프 저장용량 최적화 (바이너리 포맷)범위별 글리프 분할 저장동적 로딩 지원폰트 생성 과정1. 준비물# 필요한 도구 설치npm install @mapbox/fontniknpm install glyph-pbf-composite2. TTF/OTF 폰트 준비CJK 폰트 파일을 준비합니다. 예시로 Noto Sans를 사용..

Gaussian Splatting 3D 모델 만들기

Gaussian Splatting로 3D 모델 파일(*.ply) 만드는 방법은 여러가지가 있겠지만, 이번 글에서는 CLI(Command Line Interface)로 생성하는 방법을 설명합니다.PostShot 이라는 프로그램을 이용하면 영상 또는 이미지를 통해 실사같은 3차원 모델을 만들 수 있습니다.그런데 최근에 이 PostShot-cli 명령어가 추가되면서 명령줄에서 배치형태로 3차원 모델을 만드는 방법이 추가되었습니다. 기존 GUI를 통해 3차원 모델을 만드는 방법은 PostShot 홈페이지를 참고하시고 여기서는 명령행으로 만드는 방법을 설명합니다. 순서는1) 모델링 대상을 360도로 돌면서 영상으로 촬영한다.2) 영상에서 이미지들을 추출한다.3) PostShot CLI 명령어로 3차원 모델을 만든..

IT일반 2024.11.11

Windows Service에 Postgresql 등록하기

postgresql을 수동으로 Windows 서비스에 등록하려면 아래 명령어로 가능합니다. pg_ctl.exe register -N "PostgreSQL" -U "NT AUTHORITY\NetworkService" -D "C:\Program Files\PostgreSQL\17\data" -w 해당 명령어는 PostgreSQL을 Windows 서비스로 등록하는 명령어입니다. 각 부분을 설명하면:pg_ctl.exe register: PostgreSQL 서비스 등록 명령어-N "PostgreSQL": 서비스 이름을 "PostgreSQL"로 지정-U "NT AUTHORITY\NetworkService": 서비스 실행 계정을 NetworkService로 설정-D "C:\Program Files\PostgreSQL..

MiniZinc: 초보자를 위한 소개

MiniZinc(미니징크)는 수학과 컴퓨터 과학의 매력을 발견할 수 있는 강력하고 유용한 도구입니다. MiniZinc는 OPTIMA의 지원을 받아 모나쉬 대학에서 개발되었습니다. 이 글에서는 MiniZinc의 주요 특징과 활용 방법을 소개하겠습니다. MiniZinc란? MiniZinc은 제약 모델링 언어로, 복잡한 문제를 쉽게 표현하고 해결할 수 있게 도와줍니다. 수학적 최적화 문제나 제약 만족 문제를 풀 때 사용됩니다. MiniZinc의 장점 높은 수준의 언어: 직관적이고 읽기 쉬운 논리적 구조로 문제를 모델링할 수 있습니다. 타입 안전성도 보장되어 있어 오류를 줄일 수 있습니다. 다양한 솔버 지원: 특정 솔버에 종속되지 않고 다양한 솔버 기술을 사용할 수 있습니다. 하나의 모델로 여러 솔버를 시험해 ..

IT일반 2024.11.10

FFmpeg를 사용한 동영상을 이미지 크기 설정해서 시퀀스 저장하기

동영상을 개별 프레임 이미지로 추출하는 작업은 영상 편집, 애니메이션 작업, 또는 컴퓨터 비전 프로젝트에서 자주 필요한 작업입니다. 오늘은 FFmpeg를 사용해 동영상을 이미지 시퀀스로 변환하는 방법을 알아보겠습니다.명령어 분석ffmpeg -i input.mp4 -vf "fps=20,scale=1920:1080" frames/out%04d.png이 명령어를 하나씩 살펴보겠습니다:ffmpeg: 비디오/오디오 처리를 위한 명령행 도구입니다.-i input.mp4: 입력 파일을 지정합니다. 여기서는 'input.mp4'라는 동영상 파일입니다.-vf: 비디오 필터를 적용하겠다는 옵션입니다.fps=20: 초당 20프레임으로 추출하겠다는 의미입니다.scale=1920:1080: 출력 이미지의 해상도를 1920x10..

PandasAI와 Streamlit으로 만드는 데이터 분석 챗봇

이번 글에서는 Streamlit과 PandasAI를 활용해서 CSV 파일을 분석할 수 있는 챗봇을 만드는 방법을 소개하려고 합니다.pandasai는 데이터 분석을 위한 오픈소스 AI 도구입니다. 주요 특징은 다음과 같습니다:일반 언어로 데이터에 대한 질문을 하면 실시간 인사이트를 제공복잡한 코딩 없이도 데이터 분석 가능SQL, NoSQL, CSV, xls 등 다양한 데이터 소스 연결 지원여러 데이터 소스를 통합 분석 가능1. 개요이 프로젝트는 여러 개의 CSV 파일을 업로드하고, 자연어로 데이터에 대해 질문하면 답변을 제공하는 웹 애플리케이션입니다. 2. 필요한 라이브러리 설치pip install pandas pandasai streamlit openai3. 코드 설명먼저 필요한 라이브러리들을 임포트합니..

가로 또는 세로 비율을 유지하면 이미지 크기 변경하기

이번 글에서는 ImageMagick을 사용하여 원본 이미지의 가로, 세로 크기 비율을 유지하면서 크기를 변경하는 두가지 명령어에 대해 알아보겠습니다. ImageMagick은 강력한 오픈소스 이미지 처리 소프트웨어입니다. 200가지 이상의 이미지 파일 형식을 지원하며, 이미지 생성, 편집, 변환 등 다양한 작업을 명령줄에서 수행할 수 있습니다. 주요 기능이미지 형식 변환 (JPG, PNG, GIF, WebP 등)크기 조정 및 회전필터 및 효과 적용이미지 최적화배치 처리 지원 아래 두가지 명령은 기능적으로는 똑같이 이미지 크기를 변경하나 조금은 다른 형식인데 상황에 따라 적적한 명령어를 실행하시면 됩니다.convert 명령어 magick convert -format png -geometry 900x inpu..

Leaflet과 Turf.js를 활용한 다각형 버퍼 및 등간격 포인트 생성하기

이 코드는 지도상에 다각형을 그리고, 버퍼 영역을 생성한 후 그 경계선을 따라 일정한 간격으로 포인트를 배치하는 방법을 보여줍니다.1. 기본 지도 설정var map = L.map("map").setView([-26, 128], 5);L.tileLayer('https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png', {...});호주 중심부(-26°, 128°)를 초기 뷰포인트로 설정Carto의 밝은 스타일 베이스맵 사용2. 다각형 생성const polygon = turf.polygon([...]);호주 내륙 일부를 포함하는 사각형 다각형 생성좌표: 위도 -28° ~ -20°, 경도 126° ~ 140°3. 버퍼 생성const polygon1 = turf...

Leaflet과 Turf.js를 활용한 폴리곤 차집합 구현하기

오늘은 Leaflet 지도 라이브러리와 Turf.js를 사용하여 폴리곤 간의 차집합(Difference)을 구현하는 방법을 알아보겠습니다.1. 기본 지도 설정먼저 호주 중심부를 보여주는 지도를 초기화합니다:var map = L.map("map").setView([-26, 128], 5);L.tileLayer('https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png', { attribution: '© Carto Maps contributors'}).addTo(map);여기서 지도의 중심점을 남위 26도, 동경 128도로 설정하고 줌 레벨은 5로 지정했습니다. 베이스맵으로는 Carto의 라이트 스타일을 사용했습니다.2. 폴리곤 정의세 개의 폴리곤을 정..

지도 위에 경로를 그리고 회전시키는 웹 앱 만들기

이번 포스팅에서는 지도 위에 경로를 그리는 간단한 웹 애플리케이션을 만들어보겠습니다. 이 프로젝트에서는 지도를 설정하고, 경로를 그리고, 슬라이더를 통해 경로를 회전시키는 기능을 구현할 것입니다. 자, 시작해볼까요? 1. 지도 설정하기 먼저, 지도를 화면에 띄우는 방법을 알아보겠습니다. 우리는 Leaflet이라는 라이브러리를 사용할 것입니다. 아래 코드는 지도를 생성하고, 초기 위치를 설정합니다. var map = L.map("map").setView([37.393667, 126.95737], 15);여기서 [37.393667, 126.95737]는 서울 근처의 특정 좌표입니다. 숫자 15는 확대 수준을 나타냅니다. 숫자가 클수록 더 자세히 볼 수 있습니다. 2. 지도 배경 설정 다음으로, 지도의 배경을..