수달의 IT 세상

[Java] Rhino Engine, Nashorn Engine, GraalVM 포스트 Teaser

[Java] Rhino Engine, Nashorn Engine, GraalVM

카테고리:

3 분 소요

자바스크립트 인터프리터 엔진 Rhino 엔진, Nashorn 엔진, 그리고 GraalVM은 모두 자바스크립트를 인터프리팅하고 실행하는데 사용되었거나 사용하는 엔진들이다. Java의 버전이 올라감에 따라서 자바스크립트를 인터프리팅하는데 사용하는 엔진들이 바뀌었는데, JDK 버전에 맞추어 각각을 간단히 설명하고자 한다. Rhino Engine (~ Java SE 7) Rhino는 Mozilla Foundation에서 개발한 자바스크립트 인터프리터 엔진이다. 자바 가상 머신(JVM)에서 실행되며, 자바스크립트 코드를 자바 바이트 코드로 변환하여 실행한다. Rhino는 자바 애플리케이션에서 자바스크립트를 사용하는 데 주로 사용되었으나, 성능 면에서 한계가 있어 Java 표준 라이브러리에서 제공하는 공식적인 J

게임 AI를 위한 탐색 알고리즘 입문 포스트 Teaser

게임 AI를 위한 탐색 알고리즘 입문

카테고리:

2 분 소요

게임 AI라고 하면 머신러닝을 생각하겠지만, 또 다른 핵심요소인 ‘탐색’에 집중한 책 필요한 선수 지식 요구 학력 : 관련학과 대졸 이상(자료구조와 알고리즘의 심화 및 응용) 예제 코드 : C++ 난이도 : ★★★☆☆ 책의 구성 중 마음에 들었던 주제 Chapter 05 교대로 두는 2인 게임에서 사용하고 싶은 탐색 알고리즘 미니맥스 알고리즘, 알파-베타 가지치기, 몬테카를로 탐색과 같은 전통적 트리 탐색과 관련된 알고리즘과 필자가 만들었다는 Thunder 탐색 알고리즘을 설명한다. Chapter 07 더 좋은 탐색을 하는 기법 탐색에서 중요한 가중치를 설정하는 법, 탐색의 고속화를 위해 동일한 게임판을 저장하고 빨리 연산하는 법, 비트열을 이용하여 게임판 표현하는 방법을 설

[Python] PyInstaller로 컴파일한 코드를 decompyle3로 디컴파일 하기 포스트 Teaser

[Python] PyInstaller로 컴파일한 코드를 decompyle3로 디컴파일 하기

카테고리:

3 분 소요

PyInstaller PyInstaller는 Python 애플리케이션과 모든 종속 요소를 단일 패키지로 묶는 소프트웨어이다. 이를 통해 프로그램 사용자는 파이썬 인터프리터나 모듈을 설치하지 않고도 프로그램을 실행할 수 있다. PyInstaller는 Python 3.8 이상을 지원하며 numpy, matplotlib, PyQt, wxPython 등과 같은 많은 주요 Python 라이브러리들을 패키징한다. ※ 해당 프로그램이 무엇으로 패킹 되었는지는 Exeinfo PE를 사용하여 확인한다. 언패킹 python-exe-unpacker 스크립트를 사용하여 PyInstaller로 묶인 파일들을 언패킹해준다. git clone https://github.com/countercept/python-exe-un

불안형 애착과 회피형 애착 포스트 Teaser

불안형 애착과 회피형 애착

카테고리:

2 분 소요

애착은 개인이 대인관계에서 형성된 감정적인 유대감과 그에 대한 대응 방식을 나타낸다. 불안형 애착 불안형 애착 (Anxious Attachment)을 가진 사람들은 주로 부모나 돌봄자와의 관계에서 불안정한 유대감을 형성한다. 이들은 상대방이 자신을 버릴 것이라고 느끼며 일정한 안정성과 관심을 필요로 한다. 불안형 애착을 가진 사람들은 종종 상대방에게 과도한 의존이나 심리적인 안전을 찾으려 하나 때로는 과도한 불안감으로 인해 상대방에게 부담을 주는 집착을 한다. 회피형 애착 회피형 애착 (Avoidant Attachment)을 가진 사람들은 주로 부모나 돌봄자와의 관계에서 덜 감정적인 연결을 형성한다. 이들은 다른 사람들에게 의존하지 않고 자립적으로 살려는 성향이 있다. 회피형 애착을 가진 사람들은

[C#] WinAPI OpenProcess 함수로 프로세스 핸들 얻기 포스트 Teaser

[C#] WinAPI OpenProcess 함수로 프로세스 핸들 얻기

카테고리:

3 분 소요

프로세스 핸들 프로세스 핸들(Process Handle)은 컴퓨터 운영 체제에서 프로세스를 식별하고 관리하기 위한 개념이다. 프로세스 핸들은 보통 운영 체제 API에서 제공되며, 각 언어 및 환경에서는 해당 API를 이용하여 프로세스 핸들을 얻고 조작한다. 프로그래밍에서는 핸들을 이용하여 프로세스나 자원을 제어하는 데 사용한다. 주요한 Windows API 함수 및 프로세스 핸들과 관련된 몇 가지가 있다. CreateProcess 함수: 새로운 프로세스를 생성하고 핸들을 반환한다. OpenProcess 함수: 기존 프로세스의 핸들을 얻는다. CloseHandle 함수: 프로세스 핸들을 닫는다. 소스 코드 using System; using System.Diagnostics; using

[C#] 대리자와 delegate, Action, Func 포스트 Teaser

[C#] 대리자와 delegate, Action, Func

카테고리:

2 분 소요

대리자 대리자는 특정 매개 변수 목록 및 반환 형식이 있는 메서드에 대한 참조를 나타내는 형식이다. 쉽게 설명하면, 대리자를 통해 함수를 매개 변수로 전달할 수 있다. 이는 콜백 함수와 같은 이벤트에서 사용한다는 점에서 C++의 함수 포인터와 유사하지만, 멤버 함수에 대해 완전히 개체 지향이라는 점에서 다르다. 매개변수로는 상황에 따라 Action이나 Func를 사용한다. 매개 변수가 없으며 값을 반환하지 않는 경우에는 Action을 사용하고, 이외의 경우에는 모두 Func<TResult>를 사용한다. 1. Action과 delegate를 사용하는 경우 예를 들어 아래와 같은 경우를 볼 수 있다. using System; using System.Windows.Forms; public c

[Unity] Destory의 비밀과 DestroyImmediate 포스트 Teaser

[Unity] Destory의 비밀과 DestroyImmediate

카테고리:

2 분 소요

Destory 함수 유니티에서는 하이어라키(Hierarchy)에 살아있는 GameObject를 스크립트로 삭제하는 방법으로 Destory 함수를 사용한다. 일반적으로 Destory 함수를 사용하면 즉시 제거된다고 생각하기 쉽지만, 사실 지연된 소멸을 통해 해당 함수의 호출이 발생한 시점에서부터 다음 Update 함수가 호출되기 전 사이에 파괴된다. 그래서 흔히 다음과 같은 실수를 하기 쉽다. foreach (Transform child in GameObject.Find("EMPTYOBJECT").transform) { GameObject.Destroy(child.gameObject); } foreach (Transform child in GameObject.Find("

개발자를 위한 최소한의 실무 지식 포스트 Teaser

개발자를 위한 최소한의 실무 지식

카테고리:

3 분 소요

‘시행착오’라는 비용을 덜 지불하고 기본기의 중요성을 알게 해주는 책 필요 선수 지식 요구 학력 : 관련학과 대졸 이상(프로그래밍, 데이터베이스, 보안, 테스팅 기법등을 실무 관점에서 풀어내었기 때문) 예제 코드 : Java 난이도 : ★★☆☆☆ 책의 구성 중 마음에 들었던 주제 Chapter 01 데이터베이스의 효과적인 활용 데이터베이스의 중요한 개념들을 실무적인 관점에서 설명하고 다양한 DBMS들을 특징에 따라 왜 사용하는지 설명한다. Chapter 03 체계적인 자원 관리 다수의 사용자가 동시에 사용하는 소프트웨어의 사례를 바탕으로 동시성 프로그래밍, 메모리 누수(C, Java, Python의 관점으로), 스레드 풀링에 대해 설명한다. Chapter 04 성능을 향상하