수달의 IT 세상

[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 문제 상황 빌드한 결과가 아래 사진과 같이 제품 버전에 접미사가 붙어서 빌드된다. 사

[Ubuntu, Shadowsocks] Shadowsocks 서버 구축하기 포스트 Teaser

[Ubuntu, Shadowsocks] Shadowsocks 서버 구축하기

카테고리:

1 분 소요

Shadowsocks Shadowsocks는 SOCKS5 프록시 프로토콜을 기반으로 하는 인터넷 트래픽을 안전하게 전송하기 위한 프록시 소프트웨어이다. 암호화 및 터널링 기술을 사용하여 사용자의 인터넷 트래픽을 안전하게 전달하는 만큼 인터넷 검열이 심한 중국에서 주로 사용된다. 이처럼 사용자가 개인 정보를 보호하고 인터넷 검열을 피하기 위해 사용하지만 기업에서 원격 액세스 및 보안 터널링에도 활용된다. https://github.com/shadowsocks ※ 본 게시글은 Ubuntu 24.04 LTS 버전을 기준으로 작성되었습니다. 설치 방법 apt 리포지토리에서 shadowsocks-libev 패키지를 설치한다. sudo apt-get update sudo apt install shadows

[Ubuntu, OpenVPN] 특정 아이피 대역 빼고 라우팅하기 포스트 Teaser

[Ubuntu, OpenVPN] 특정 아이피 대역 빼고 라우팅하기

카테고리:

1 분 소요

문제 상황 OpenVPN을 사용하면 모든 연결을 VPN 서버를 통해서 접속하고자 하는 서버로 연결된다. 여기서 문제가 발생하는데, 모든 연결을 VPN 서버를 통함으로써 VPN 서버에서 해당 사이트가 차단된 경우 혹은 내부망에서만 접근 가능한 경우에는 접속이 불가능하다. 해결 방안 아래와 같은 내용을 .ovpn 파일에 넣고 저장한다. 이후 해당 프로파일을 이용하여 연결하면 해당 대역에 있는 ip는 VPN을 통과하지 않고 바로 연결된다. route 아이피 서브넷마스크 net_gateway .ovpn에 ip : 192.168.0.0, subnetmask : 255.255.0.0을 적용한 예제는 아래와 같다. client dev tun proto tcp remote [OPENVPN_SERVER_IP]

[Java, SLF4J] org.slf4j.impl.StaticLoggerBinder 에러 해결하기 포스트 Teaser

[Java, SLF4J] org.slf4j.impl.StaticLoggerBinder 에러 해결하기

카테고리:

3 분 소요

SLF4J SLF4J는 “Simple Logging Facade for Java”의 약자로, 자바 애플리케이션에서 사용되는 로깅 인터페이스이다. SLF4J는 로깅 시스템에 대한 추상화 계층을 제공하여 애플리케이션 코드가 특정 로깅 프레임워크에 종속되지 않도록 하며, 애플리케이션 코드에서 로깅을 위한 API를 호출할 때 어떤 구현체를 사용할지 결정할 수 있다. 문제 상황 HikariCP를 프로젝트에서 사용하기 위해 Maven을 통해 라이브러리를 추가하자 발생한 오류로 아래와 같이 출력되었다. SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logg

[Java, Netty] Nagle 알고리즘 적용 해제하기 포스트 Teaser

[Java, Netty] Nagle 알고리즘 적용 해제하기

카테고리:

2 분 소요

Nagle 알고리즘? https://syudal.kr/post/Network-Nagle알고리즘과-TCPNODELAY/ Nagle 알고리즘 적용 해제하기 아래는 Netty EchoServer 예제에 TCP_NODELAY 옵션을 true로 적용하여 Nagle 알고리즘의 적용을 해제 하는 방법이다. EchoServer.java public final class EchoServer { static final int PORT = Integer.parseInt(System.getProperty("port", "8007")); public static void main(String[] args) throws Exception { // C

개발자 기술 면접 노트 포스트 Teaser

개발자 기술 면접 노트

카테고리:

3 분 소요

개발은 알지만 면접은 잘 모르는 주니어 개발자와 시니어 개발자 모두에게 면접관의 입장에서 알차게 작성한 취업 및 이직이라는 대장정에 등대가 되어주는 책 필요한 선수 지식 요구 학력 : 관련학과 대졸 이상(취업 및 이직에 관련된 내용) 예제 코드 : X 난이도 : ★☆☆☆☆ 책의 구성 중 마음에 들었던 주제 Chapter 03 취업과 이직을 위한 첫 걸음, 이력서와 자기소개서 이력서를 관리하는 방법과 꼭 챙겨야 할 항목, 경력사항을 작성하는 방법 및 해당 언어의 숙련도를 표현하는 방법, 심플하면서도 매력적인 자기소개서를 작성하는 방법들을 사례 연구를 통해 설명한다. Chapter 04 시선을 사로잡은 커리어, 경력기술서 포트폴리오에서의 기본적인 유의 사항과 적어야 할 내용인 트