전체 글 102

DI & DIP 의존성주입과 의존관계 역전원칙

의존성 주입이란 메인 모듈이 직접 다른 하위 모듈을 참조하지 않고 중간 매개체를 통해모듈 간 간접적인 의존성을 주입하는 방식이다.  이미지 출처 https://velog.io/@tiger/CS-%EC%8B%B1%EA%B8%80%ED%86%A4-%ED%8C%A8%ED%84%B4-%EC%9D%98%EC%A1%B4%EC%84%B1-%EC%A3%BC%EC%9E%85 의존성 주입 전 이미지의 경우 메인 모듈이 하위 모듈을 직접 참조하고 있으며의존성 주입 후 이미지의 경우 메인 모듈이 모든 하위 모듈을 직접 참조하지 않고 중간 주입자를 통해상호작용을 진행하는 구조이다. 의존한다 의 의미A 가 B 에 의존한다 => B 가 변하면 A 에 영향을 끼친다public class A{ private B _b; pu..

CS 2024.12.11

마이그레이션이란? Migration

Migration데이터, 시스템같은 애플리케이션을 한 환경에서 다른 환경으로 이동하는 과정이러한 과정은 보통 새로운 플랫폼, 데이터베이스, 서버 를 옮길 때 발생하며 다양한 종류의 마이그레이션이 존재한다. 1. 데이터 마이그레이션데이터를 A 데이터 베이스에서 B 데이터 베이스로 이전하는 것을 의미한다.MySQL 데이터베이스에서 PostgreSQL 로 변경할 때 데이터를 옮기는 과정 2. 애플리케이션 마이그레이션애플리케이션이 동작하는 운영체제나, 플랫폼에서 다른 환경으로 이전하는 것을 뜻한다.윈도우 에서 리눅스로 옮기는 것 3. 서버 마이그레이션기존 서버 환경에서 새로운 서버 환경으로 시스템을 이전하는 것 마이그레이션의 고려사항데이터 무결성 - 데이터가 손실, 변형이 없게한다.호환성 - 새로운 환경에서도 ..

브루트포스 알고리즘 - Brute Force

브루트 : 무식한명칭처럼 무식하게 탐색하는 알고리즘이다. 문제를 해결하기 위해 모든 경우의 수를 확인해본다 라고 생각하면된다.그럼 완전탐색 알고리즘과 백트레킹 알고리즘과 거의 유사해 보이지만, 브루트포스는 그냥 완전히 확인하는 것이라 생각하면 된다. 모든 경우의 수를 확인하는 점은 최적의 결과를 반환시켜 주지만, 반대로 시간이 오래걸린다는 점이 단점이 된다. 브루트포스 : 모든 탐색을 진행완전탐색 : 모든 탐색을 진행하지만 가능하다면 조건을 활용해 불필요한 탐색을 제거백트레킹 : 명확한 조건을 두어, 불필요한 탐색을 제거하는 가지치기 방식 예시 문제https://www.acmicpc.net/problem/2798주어지는 카드들로 3장의 카드를 골라서 주어지는 값에 가장 근접하게 만들어 내야한다.대신 반드..

알고리즘/탐색 2024.11.10

C#을 활용한 콘솔 환경 채팅프로그램 만들기

개발기간 24.11.08 ~ 24.11.09 참고자료https://www.csharpstudy.com/net/article/1 C# 네트워크 프로그래밍 - C# 프로그래밍 배우기 (Learn C# Programming)C# 네트워크 프로그래밍 네트워크 프로그래밍은 그 범위를 상당히 넓은데, 이 섹션에서는 .NET에 기반한 TCP/IP와 UDP 프로그래밍을 중점적으로 다룬다. 네트워크 모델 네트워크의 세부 기능들을 매www.csharpstudy.com 현재까지 개발된 기능순서1. 프로그램 동작시 클라이언트가 사용할 이름을 받는다.1-1 클라이언트 이름이 admin 이라면 서버를 개설하는 관리자로 판단1-2 admin 이 아니라면 서버에서 사용될 닉네임이 된다.2. 서버는 클라이언트들의 입장, 메세지 전달의..

C# 2024.11.09

동일한 프로젝트를 두개 열기, 동기화 - ParrelSync

네트워크 관련 작업을 진행할때, 기능이 정상적으로 작동하는지 확인하는 방법은현재까지 작업물을 빌드하고 여러 클라이언트를 동작시키는 방법도 있다. 하지만 개발상황에서 빌드과정을 거치지 않고, 실시간으로 테스트하는 방법이 있다. https://github.com/VeriorPies/ParrelSync/ GitHub - VeriorPies/ParrelSync: (Unity3D) Test multiplayer without building(Unity3D) Test multiplayer without building. Contribute to VeriorPies/ParrelSync development by creating an account on GitHub.github.com해당 레포지토리에서 아무나 사용 가..

Unity 2024.11.08

라우팅 알고리즘 - Routing

라우팅 알고리즘은 네트워크에서 데이터 패킷이 목적지까지 가장 효과적으로 전달될 수 있게 최적의 경로를 결정하는 알고리즘이다. 라우팅 알고리즘의 여러가지 방식1. 정적 라우팅과 동적 라우팅 - 정적 라우팅경로가 미리 설정 고정되어 있어 관리자가 직접 경로를 설정한다.네트워크 환경이 변하지 않는 경우에 적합하지만 이후 변화에 대응하기가 어렵다. - 동적 라우팅네트워크 상태에 따라 경로가 자동으로 변경된다.라우팅 프로토콜을 통해 실시간으로 네트워크 상태 정보를 교환하여 최적 경로를 선택할수 있다.정적 라우팅에 비해 상태 변화에 쉽게 대응이 가능하며 유연성이 높다.2. 거리 벡터 알고리즘과 링크 상태 알고리즘- 거리벡터 알고리즘각 라우터가 인접한 라우터와 정보를 교환하고 최단 경로를 바탕으로 목적지까지의 거리와..

알고리즘 2024.11.07

TCP 와 UDP

TCP와 UDP 는 OSI 4계층(전송 계층) 에서 데이터를 전달하는 두 가지 주요 프로토콜이다. TCP Transmission Control ProtocolTCP는 신뢰성 있는 데이터 전송을 보장하는 프로토콜이다.데이터를 보내는 쪽과 받는 쪽 서로 연결을 하고, 데이터가 정확히 도착했는지 확인하며,오류가 발생될 경우 재전송을 통해 이러한 문제를 해결한다. TCP 의 주요 특징은 3-Way Handshake의 통신 방식이다.3-Way Handshake 는 3번의 교류과정을 거친다고 생각하면 된다.1. 송신자가 수신자에게 연결되어 있는지 확인요청2. 수신자는 1의 요청을 확인하고 연결되어 있음을 송신자에게 다시알림3. 송신자는 수신자의 응답을 확인하고 데이터를 전달한다. TCP 장점데이터 전달 과정이 체계..

네트워크와 OSI 7 계층

네트워크란?두 대 이상의 컴퓨터가 데이터를 주고받기 위해 연결된 시스템을 말합니다.네트워크의 목적은 정보를 공유하고 자원을 효과적으로 사용하는것이 목적이며,다양한 프로토콜을 통해 데이터가 안전하고 정확하게 전송될 수 있게 구성된다. OSI(Open Systems Interconnection) 7OSI 7 계층 모델은 네트워크 통신을 7개의 계층으로 나누어 설명하는 모델이다.각 계층은 특정 역할을 담당하는 것이 목적이며, 상호 독립적이면서도다른 계층과 상호작용한 이후 데이터를 전송하게 된다.  1. 물리 계층가장 아래의 계층으로 전기 신호, 무선 신호 등을 물리적 형태로 전송되는 것을 담당한다.컴퓨터가 데이터를 구성하는 0 과 1의 뭉쳐진 형태를 떠올리면 된다. 2. 데이터 링크 계층데이터의 물리적 전송에..

유니티 UI 최적화 팁

1. 정적UI와 동적UI 요소는 개별적 캔버스로 관리 2. 필요없는 레이캐스터 비활성화 3. 그리드레이아웃 사용자제 4. 가능한 레이아웃 그룹 사용자제 5. 캔버스를 숨겨야할땐 캔버스 컴포넌트 자체를 비활성화한다. 6. 화면전체를 뒤덮는 UI 를 사용할 땐 표시되지 않는 UI는 사용하지 않는다.  https://unity.com/kr/how-to/unity-ui-optimization-tips Unity UI 성능 최적화 팁게임에 최적화된 Unity UI 엘리먼트를 쉽게 제작할 수 있습니다.unity.com

Unity 2024.09.05

UGUI 와 NGUI

UGUI - Unity GUI유니티에서 공식적으로 제공하는 UI 시스템이다.유니티엔진에 완벽하게 통합되었으며 조작이 직관적이며 뛰어난 기능을 제공하여편하게 UI를 제작할 수 있다. UGUI 의 경우 유니티의 기본 렌더링 파이프라인에 통합되어 있어 최적화, 성능 측면에서 뛰어나며에디터상에서 드래그, 드롭으로 UI요소를 조작할 수 있으며, 인스펙터창을 통해 속성이 조정가능하다. 또한 이벤트, 다양한 레이아웃 시스템처럼 다양한 편의성을 제공한다. NGUI - NextGen UI유니티 3.x 4.x 에서 사용된 상용UI 패키지다.유니티의 기본 UI 시스템이 불편했을때 사용하였고, 현재는 별도의 패키지로 판매되며유니티에 기본적으로 내장되어 있지 않다. NGUI는 전용 편집도구가 있어 유연한 편집이 가능하며NGUI..

Unity 2024.09.05