Study122 [알고리즘] 다익스트라 알고리즘(Dijkstra Algorithm) 다익스트라 알고리즘에 대해 알아보자.1. 다익스트라 알고리즘이란?- 시작 노드에서 다른 모든 노드까지의 최단 경로를 찾는 알고리즘- 음수 가중치가 없는 그래프에서 동작- 그리디 (Greedy) 알고리즘의 한 종류- 네비게이션, 게임 AI 경로 찾기, 네트워크 최적화 등 다양한 곳에서 활용됨- 시간 복잡도 : O(V^2) 2. 동작 원리1. 초기화 : 시작 노드의 최단 거리는 0, 시작노드에서 나머지 모든 노드까지의 최단 거리는 무한대로 설정(초기화)한다.2. 노드 선택 : 방문하지 않은 노드 중 시작점으로부터의 거리가 가장 짧은 노드를 선택한다.3. 거리 갱신 : 선택한 노드와 연결된 이웃 노드들의 거리를 확인 후 갱신한다.- 기존 거리 값 = 이전까지 계산된 이웃노드의 거리 값 - 새로운 거리 값 = .. 2025. 9. 18. [개발 지식] git repository 생성 및 Git Bash를 이용한 git 최초 연결 Git Bash 커맨드를 이용해 git repository에 연결해보겠다.1. git repository 생성- 내부망 환경에서 구축한 gitea 환경을 기준으로 한다. (gitea 생성은 아래 포스팅 참고)https://steadycodist.tistory.com/entry/%EA%B0%9C%EB%B0%9C-%EC%A7%80%EC%8B%9D-%EC%82%AC%EB%82%B4-%EB%82%B4%EB%B6%80%EB%A7%9D-%ED%99%98%EA%B2%BD-Gitea-%EC%84%9C%EB%B2%84-%EA%B5%AC%EC%B6%95 [개발 지식] 사내 내부망 환경 Gitea 서버 구축인터넷이 안되는 사내 내부망 환경에서 코드를 관리하기 위한 gitea 서버를 구축해보겠다. 1단계 - gitea 다운로.. 2025. 9. 16. [개발 지식] CI/CD 개념 CI/CD 개념에 대해 알아보자.1. CI/CD 란?- CI (Continuous Integration) : '지속적인 통합'을 의미하며, 개발자들이 작업한 코드를 저장소에 지속적으로 통합(merge)하는 과정을 말한다. 코드가 통합될 때마다 자동화된 빌드 및 테스트가 실행되어 코드 충돌 및 버그들을 조기에 식별할 수 있다.- CD (Conintuous Delivery/Deployment) : '지속적인 전달/배포'를 의미하며, CI가 끝난 후 사용자에게 배포하는 과정을 말한다. - CD의 의미 중 '지속적 전달' 이란, CI를 통과한 코드를 배포가능한 상태로 유지하는 것을 의미하고, '지속적 배포' 란 한 단계 더 나아간 개념으로 모든 테스트를 통과한 코드가 사람의 개입없이 자동으로 프로덕션 환경에 배.. 2025. 9. 15. [개발 지식] 공유 폴더 만들기 같은 ip 대역에서 사용 가능한 공유 폴더를 만들어 보겠다.1. 네트워크 설정 확인 - 탐색기 > 네트워크 > 우클릭 후 속성 클릭 > 좌측바 메뉴의 고급 공유 설정 클릭- 아래 사진과 같이 세팅한다. 2. 공유 폴더 생성- 임의로 폴더 생성 후 우클릭 > 속성 > 공유 탭 클릭 > 고급 공유 클릭- 선택한 폴더 공유 체크 > 권한 클릭 > Everyone 모든 권한 허용하도록 설정 - 설정 완료 후 나와서 이번엔 공유 클릭 > Everyone 선택 후 추가 > 사용 권한 수준을 읽기/쓰기 모두 허용하도록 설정- 공유 버튼 클릭 후 완료 3. 공유 폴더 접근- Win + R 키를 눌러 실행창 접근 > "₩₩ pc에 현재 할당된 ip번호" 입력- 아래 그림과 같이 방금 생성한 공유 폴더에 접근 가능 4... 2025. 9. 12. [개발 지식] 사내 내부망 환경 Gitea 서버 구축 인터넷이 안되는 사내 내부망 환경에서 코드를 관리하기 위한 gitea 서버를 구축해보겠다. 1단계 - gitea 다운로드- gitea 공식 홈페이지에서 windows 버전으로 gitea를 다운 받는다. 링크 : https://about.gitea.com/products/gitea/ Gitea Official WebsiteGitea - Git with a cup of tea! Painless self-hosted all-in-one software development service, including Git hosting, code review, team collaboration, package registry and CI/CDabout.gitea.com 2단계 - gitea 설치 서버 실행- 서버의 저.. 2025. 9. 11. [MCP] Math MCP 서버 생성 및 연결 이 글은 책 '나만의 MCP 서버 만들기 with 커서 AI'를 바탕으로 작성했습니다.더하기와 빼기 기능을 수행하는 간단한 Math MCP 서버 만들기 실습해보자.- 커서에서 math-server 폴더를 선택 - math_server.py를 실행 math_server.py 코드# 로깅 기능을 위한 모듈 가져오기import logging# FastMCP 서버를 사용하기 위한 클래스 가져오기from mcp.server.fastmcp import FastMCP# 로깅 설정: INFO 레벨 이상의 로그를 출력logging.basicConfig(level=logging.INFO)# MCP 서버 인스턴스 생성 ("Math"는 이 MCP의 이름 역할)mcp = FastMCP("Math")# 도구 1: 더하기 함수@m.. 2025. 9. 5. [Unity] 로그 파일 생성 및 기본 Debug 로직 확장 유니티에서 내가 원하는 형식에 맞게 디버그 로그가 찍히도록 기존 UnityEngine의 Debug를 확장했다. 또한, 유니티 빌드 후 테스트 시 Crash 등의 이슈에 대한 원인을 찾기위해 로그 파일 생성 클래스를 만들었다. 코드 예시using System;using System.Collections.Concurrent;using System.IO;using System.Text;using System.Threading;public static class Debug{ private static string _logFilePath = "Logs/log.txt"; // 로그 파일 경로 private static StreamWriter _logWriter; // 파일에 쓰는 S.. 2025. 9. 3. [Unity] Unity Main Thread 처리 Unity에서 외부 Thread를 만들어 사용할 때 유니티 관련 처리는 유니티 Main Thread에서 처리해야한다. - 유니티 내에서 외부 Thread를 사용해 TCP/UDP 서버가 동작하도록 만들었는데, 내부에서 유니티 관련 함수를 하니 빌드해서 테스트 했을 때 간혹 빌드본이 응답없음이 되면서 잘못된 주소를 참조했습니다.라는 오류가 떴다. 그래서 알아보니 유니티에서 외부 Thread를 사용할 때, 유니티의 GameObject나 Transform을 변경하거나 GetComponent 등의 함수를 호출했을 때 그런 문제가 발생할 수 있다고 한다. - 그래서 이런 문제를 해결하기 위해 해당 함수를 유니티 Main Thread로 가져와 사용하는 방식을 사용해서 해결했고, 그 방식은 아래와 같이 외부에서 사용되.. 2025. 9. 2. [Unity] Unity Render Streaming(유니티 스트리밍) 유니티의 화면을 외부에 스트리밍 하는 방법 1. PakageManager에서 좌측 상단의 + 버튼을 누르고 Add package by name을 누른 뒤 아래의 문자를 입력 후 Add 클릭 com.unity.renderstreaming 2. 다운받은 뒤 뜨는 Render Streaming Wizard에서 Fix All 클릭 3. 같은 창 하단의 WebApp에서 첫번째 버튼을 클릭하여 web app 다운 4. 다운받은 실행파일 실행 5. 실행 후 가장 하단의 경로를 인터넷 주소창에 복사하여 진입 http://127.0.0.1:80 6. Receiver Sample 클릭 7. 유니티로 다시 돌아와서 다운받은 Unity Render Streaming 패키지의 샘플을 프로젝트에 임포트 8. 외부로 스트리밍하고 .. 2024. 4. 18. [Gstreamer] Gstreamer 기본 튜토리얼 4 : 시간 관리 전체 소스코드 #include #ifdef __APPLE__ #include #endif /* Structure to contain all our information, so we can pass it around */ typedef struct _CustomData { GstElement *playbin; /* Our one and only element */ gboolean playing; /* Are we in the PLAYING state? */ gboolean terminate; /* Should we terminate execution? */ gboolean seek_enabled; /* Is seeking enabled for this media? */ gboolean seek_done; .. 2024. 3. 25. [Gstreamer] Gstreamer 기본 튜토리얼 3 전체 소스코드 #include #ifdef __APPLE__ #include #endif /* Structure to contain all our information, so we can pass it to callbacks */ typedef struct _CustomData { GstElement *pipeline; GstElement *source; GstElement *convert; GstElement *resample; GstElement *sink; } CustomData; /* Handler for the pad-added signal */ static void pad_added_handler (GstElement * src, GstPad * pad, CustomData * data); i.. 2024. 3. 22. [Gstreamer] Gstreamer 기본 튜토리얼 2 전체 소스코드 #include #ifdef __APPLE__ #include #endif int tutorial_main (int argc, char *argv[]) { GstElement *pipeline, *source, *sink; GstBus *bus; GstMessage *msg; GstStateChangeReturn ret; /* Initialize GStreamer */ gst_init (&argc, &argv); /* Create the elements */ source = gst_element_factory_make ("videotestsrc", "source"); sink = gst_element_factory_make ("autovideosink", "sink"); /* Create .. 2024. 3. 21. 이전 1 2 3 4 ··· 11 다음