수달의 IT 세상

[Kotlin] 싱글톤 객체와 싱글톤 패턴 포스트 Teaser

[Kotlin] 싱글톤 객체와 싱글톤 패턴

카테고리:

4 분 소요

싱글톤(Singleton) 싱글톤은 프로그램 내에서 하나의 인스턴스만 존재하며, 어느 시점에서 호출하든 동일한 인스턴스를 참조하는 것을 말한다. 전통적으로 객체 지향 프로그래밍에서 사용되는 디자인 패턴 중 하나이다. 싱글톤 객체와 싱글톤 패턴 싱글톤 객체 Kotlin에서는 싱글톤 객체를 쉽게 정의할 수 있도록 object 키워드를 제공한다. object 키워드는 클래스를 정의할 때 사용되며, 해당 클래스를 하나의 인스턴스만 가지도록 보장한다. 이를 통해 아래와 같이 싱글톤 객체를 간단하게 생성할 수 있다. object SingletonObject { var counter: Int = 0 fun printCounter() { println("Counter:

[C#] Thread abort is not supported on this platform. 오류 해결하기. 포스트 Teaser

[C#] Thread abort is not supported on this platform. 오류 해결하기.

카테고리:

3 분 소요

문제 상황 .NET Core 3.1 버전까지의 C#에서는 Thread를 강제종료할 때 아래와 같이 Abort 함수를 사용한다. static void Main(string[] args) { Thread thread = new Thread(foo) { IsBackground = true }; thread.Start(); Thread.Sleep(5000); thread.Abort(); } static void foo() { int i = 0; while (true) { Console.WriteLine(i); i++; Thread.Sleep(1000); } } 하지만, .NET 5 버전 이

[Kotlin, Netty] Echo Server 구현하기 포스트 Teaser

[Kotlin, Netty] Echo Server 구현하기

카테고리:

4 분 소요

Netty Netty는 비동기 이벤트 기반 네트워크 애플리케이션 프레임워크이다. Java 기반의 NIO(Non-blocking I/O)를 바탕으로 서버 및 클라이언트와 같은 네트워크 애플리케이션을 빠르고 쉽게 개발할 수 있다. 이전에 자주 사용했던 MINA와 Netty는 NIO를 사용한다는 점에선 같지만, 많은 부분에서 다르다. Netty는 성능과 확장성을 우선시한 모듈식 설계와 더 큰 커뮤니티를 바탕으로 개발자가 네트워크 운영을 위한 프로그램을 작성할 수 있다. 또한, Netty의 아키텍처와 스레딩 모델은 처리량이 많은 서버 애플리케이션을 위한 탁월한 성능을 제공한다. https://stackshare.io/stackups/mina-vs-netty EchoServer 예제 MainServer

개발자를 위한 커리어 관리 핸드북 포스트 Teaser

개발자를 위한 커리어 관리 핸드북

카테고리:

4 분 소요

엉킨 코드를 리팩토링하는 것보다 더 어려운 인간관계와 이직 걱정까지 어떻게 풀어 나가야 할까 걱정인 개발자들에게 1:1 멘토링하듯 알려주는 책 필요한 선수 지식 요구 학력 : 관련학과 대졸 이상(실무에 관련된 내용) 예제 코드 : X 난이도 : ★☆☆☆☆ 책의 구성 중 마음에 들었던 주제 3장 이직의 신호 새로운 직장에 대해 고민할 때는 그 직장으로 옮기고 싶은지 여부가 아니라 무엇을 하고 싶은지, 하고 싶은 일을 하러 떠나는지 알아야 한다고 설명한다. 5장 면접에서 긴장감 이겨내기 면접에서 긴장감의 큰 원인은 평가받고 있다고 생각하기 때문이다. 먼저 크고 모호한 질문의 경우에는 질문의 포인트를 명확히 질문하고 답변이 확실해지기 전까지 입을 열지 않는 질문을 이해해야 한다.

[아이폰] google의 시스템이 컴퓨터 네트워크에서 비정상적인 트래픽을 감지했습니다. 해결하기 포스트 Teaser

[아이폰] google의 시스템이 컴퓨터 네트워크에서 비정상적인 트래픽을 감지했습니다. 해결하기

카테고리:

3 분 소요

문제 상황 아이폰 내 사파리 어플로 구글 검색을 하려고 하면 간헐적으로 아래와 같은 메시지를 출력하며 “로봇이 아닙니다.”를 체크하게 하는 reCAPTCHA를 수행하라고 표시된다. 문제 원인 이는 아이폰의 비공개 릴레이 때문에 발생하는 간헐적으로 문제이다. 아이폰의 비공개 릴레이에 대해 공식 홈페이지에서는 아래와 같이 설명하고 있다. iCloud 비공개 릴레이는 사용자가 Safari에서 웹 검색을 할 때 Apple을 비롯한 어느 한 당사자도 사용자의 신원과 사용자가 방문 중인 사이트를 확인할 수 없게 하여 개인 정보를 보호하도록 설계되었습니다. 비공개 릴레이가 활성화되면 사용자의 요청이 두 개의 별도 보안 인터넷 릴레이를 통해 전송됩니다. iCloud 비공개 릴레이를 자세히 살펴보면 아래

[Unity] can only be called from the main thread. 문제 해결하기 포스트 Teaser

[Unity] can only be called from the main thread. 문제 해결하기

카테고리:

2 분 소요

Unity 엔진의 동작 원리 Unity 엔진은 많은 블로그와 Unity 공식 문서에서 아래의 그림과 같이 Main Thread와 Render Thread, Worker Thread들로 구성되어 있다고 설명한다. 위와 같은 구조로 인해서 UI 요소를 변경하는 함수들은 메인 스레드 위에서만 작동한다. 이로 인해서 멀티 스레드 환경에서 메인 스레드가 아닌 다른 스레드가 UI 요소를 변경하면 아래와 같은 메시지를 출력한다. [문제가 된 함수] can only be called from the main thread. [문제가 된 함수]는 메인 스레드에서만 호출할 수 있습니다. 문제 해결 위와 같은 문제를 C#에서는 Invoke를 사용하여 메인 스레드로 호출을 위임하지만, Unity에서는 해당

[C#] TcpClient Class에서 Nagle 알고리즘 적용 해제하기 포스트 Teaser

[C#] TcpClient Class에서 Nagle 알고리즘 적용 해제하기

카테고리:

최대 1 분 소요

TcpClient C#에서의 TcpClient 클래스는 TCP/IP 프로토콜을 사용하여 네트워크 통신을 수행하는 데 사용된다. 이 클래스는 클라이언트 측 TCP 연결을 만들고 관리하는 기능을 제공하는데, 주로 네트워크 기반 응용 프로그램에서 서버와의 통신 또는 다른 클라이언트와의 통신에 사용된다. https://learn.microsoft.com/ko-kr/dotnet/api/system.net.sockets.tcpclient?view=net-8.0 Nagle 알고리즘? https://syudal.kr/post/Network-Nagle알고리즘과-TCPNODELAY/ Nagle 알고리즘 적용 해제하기 TcpClient client = new TcpClient(ip, port) { NoDela

[C#] .NET 8 부터 적용된 제품 버전 접미사 제거하기 포스트 Teaser

[C#] .NET 8 부터 적용된 제품 버전 접미사 제거하기

카테고리:

1 분 소요

소스 링크 빌드 도구 .NET 8부터 도입된 Source Link는 개발자가 라이브러리의 소스 코드를 디버깅할 때 더 쉽게 따라갈 수 있도록 도와주는 기능이다. 이 기능을 사용하면 라이브러리 제공자는 라이브러리를 빌드할 때 소스 코드 파일과 함께 컴파일러가 해당 파일이 정의된 위치를 나타내는 정보를 생성한다. IDE나 디버거는 NuGet 패키지에서 제공되는 Source Link 정보를 사용하여 필요한 경우 소스 코드 파일을 자동으로 다운로드하고 불러오는데, 이는 개발자가 외부 라이브러리의 소스 코드를 보다 쉽게 이해하고 디버깅할 수 있도록 도와준다. https://github.com/dotnet/sourcelink 문제 상황 빌드한 결과가 아래 사진과 같이 제품 버전에 접미사가 붙어서 빌드된다. 사