Tech
-
LLM은 Turing Completeness 할까?
발생 문뜩 떠오른 생각이다 대충 생각하기에는 Turing Complete(튜링 완전)할거 같긴한데 실제로 확인 해보고 싶었다. 참고 이 글에서 말하는 LLM은 Transformer 모델 기반의 순수한 단일 LLM을 의미한다. 이 글에서 말하는 튜링...
-
Turing Completeness
발생 Turing Completeness(튜링 완전성) 정리 정의 튜링 완전하다는 것은 어떠한 계산 시스템으로 튜링 머신과 동일한 계산 능력을 가질 수 있다는 것이다. 진정으로 튜링 완전하려면 튜링이 처음 튜링 머신(amachine)에 대해 정의...
-
스피커 잡음 해결
발생 예전에 대충 산 스피커가 있었는데 요즘들어 잡음이 많이 발생해 잡음을 없애려다 안 사실이다. 환경 현재 내가 사용중인 스피커의 환경은 아래와 같다. 환경 모니터와 연결된 오디오 선으로 소리를 내보내고 있는...
-
DIY Drone 부품
발생 드론 조종을 오랜만에 하고 싶은데 내가 만들어서 조종하면 더 재밌을거 같아서 관련 내용을 찾아보았다. 부품 드론을 만드려면 필요한 최소한의 부품은 총 5가지이다. 1. 프레임 2. 모터 3. ESC (Electronic...
-
JS Signal
발생 프론트 작업에 이제는 거의 필수가 된 React는 상태 변화 시 컴포넌트를 리렌더링하여 최신화 시킨다. 이러한 컴포넌트 단위 리렌더는 이제는 모두가 알정도로 불필요한 연산을 불러오기 쉽다. 이러한 불필요한 동작을 막기위해...
-
왜 컴퓨터 소프트웨어에서는 Y축이 반전일까?
발생 물리 엔진 충돌에 대한 글을 쓰다 찾아본 자료들을 보다보니 좌표평면의 값이 내가 아는 좌표평면과 다른것에 의문이 생겨 알아본 사실이다. 의문 보통 우리는 좌표평면계를 배울때 아래와 같은 형태로 배운다. 좌표평면계...
-
AABB
발생 충돌 검출에 대해 알아보다 알게된 용어이다. AABB AxisAligned Bounding Box AABB란 AxisAligned Bounding Box 의 단축어다. 한국어로는 축 경계 정렬 상자 라고 부를 수 있다. AABB는 물체의 충돌 범위를...
-
물리 엔진 궁금증 4 - 충돌 검출
발생 이번에는 충돌에 대해 알아보았다. 충돌을 처리하기 위한 과정 3가지 충돌을 처리하기 위해선 3가지 과정이 필요하다 그 과정은 아래와 같다. 1. 충돌 검출 (Collision Detection) 2. 접촉 생성 (Contact generation,...
-
모니터에 어떻게 정보를 표시 할 수 있는걸까?
발생 예전부터 궁금했다 그래픽스가 어쩌고 점, 선, 면이 어쩌고 픽셀이 어쩌고 근데 근본적으로 모니터에 어떤 명령을 내려야 정보들이 표시되는지 너무 의문이었다. 그래서 알아보았다. 모니터의 구조 모니터는 크게 다음과 같은 주요...
-
Thread 어원
발생 Thread를 계속 보고 듣다보니 익숙해져서 그런데 도대체 Thread는 어원이 뭘까 알아보자 정의 영문 사전을 보니 Thread는 실이라는 뜻이다. 바느질 할때 사용하는 그 실을 의미한다. 어원 컴퓨터 과학에서 Thread라는 용어의...
-
GPU 구조 2 - SM
GPU 구조 2 - SM
-
GPU 구조 1 - 개요
GPU 구조 1 개요
-
물리 엔진 궁금증 3
발생 오늘은 간단한 물리 엔진을 만들어 보았다. 중력 구현 Day33 tech 20251012물리 엔진 궁금증 1
-
물리 엔진 궁금증 2
발생 어제 뉴턴 역학 제 2법칙 $Fma$에 대해 알아보았는데 오늘은 어제의 내용에 연관된 내용을 마저 알아보았다. $v dx/dt$ 속도(velocity $v$)와 시간 간격(differential time $dt$), 위치 간격(differential x $dx$)의 관계를 나타내는...
-
물리 엔진 궁금증 1
발생 요새는 게임 만들때 거의 필수적으로 게임 엔진을 쓰는데 게임 엔진에 기본적으로 물리 엔진도 같이 들어가있어서 물리 엔진을 따로 구현 할 일이 없다. 물리 엔진에 궁금증이 생겨 물리 엔진은 어떤...
-
CPU 설계 종류 차이
발생 클라우드 서버에 도커 레지스트리에 있는 컨테이너를 받아서 실행 시켜려고 할 때 가끔 CPU Architecture가 맞지 않아서 실행이 안되는 경우가 있다. 그냥 이미지 빌드만 그 서버에 맞게 바꿔서 쓰곤 했는데...
-
어째서 Shader 분리?
어째서 Shader 분리? 발생 어제 진짜 궁금했던 Shader 코드를 왜 굳이 언어 형식도 다르게 해서 따로 관리를 하는지에 대해서 알아보았다. 이유 이유는 CPU와 GPU의 역할 차이에서 온 것이다. 어제 알아본 Shader의 역사를 보면 초기 그래픽스에서는 현재는 GPU에서 처리하는 이펙트, 일부 물리 연산, 애니메이션 등을 과거에는 CPU를 이용해 처리하였었다. 하지만 GPU가 생겨나고 발전하면서 단순 반복적이고 빠른 병렬 연산을 요구하는 이펙트, 애니메이션 등을 GPU가 위임하기 시작했다. CPU가 하던 일을 GPU가 위임하기 시작하면서 기존 CPU에 맞추어 설계된 코드들을 GPU에 그대로 사용하려고 보니 명령 집합이 다르고 GPU는 CPU와 달리 병렬 연산이 기본이여서 기존 CPU에 맞추어 작성된 코드를 사용하기 힘들었고 언어도 그대로 사용하기 힘들었다. 점점 GPU의 렌더링 단계에서의 커스텀을 프로그래밍하여 적용하고싶은 요구와 이를 간편히 하기위한 GPU 설계에 맞는 언어에 대한 요구가 생기게 되었고 이를 해소하기 위해 나온것이 지금의 Shader 프로그래밍 언어인 HLSL, GLSL, Cg 등 이다. 언어의 분리로 인한 코드의 분리는 자연스럽게 진행되었고 CPU는 게임 로직 같이 복잡한 연산을 처리 하기 용이한 기존 범용 프로그래밍 언어를 이용해 코드를 작성하게 되었고 GPU는 음영처리, 이펙트 등 단순 반복 병렬 연산을 처리하기 용이한 GPU 전용 언어로 코드를 작성하게 되었다. 결론 Shader에 대해 알아보니 GPU의 발전에 대해 알게 되었고 어쩌다보니 왜 현재에 와서는 GPU가 AI 개발에 필수 자원이 됐는지 더 깊이있게 이해가 된 것 같다. 조금 비약일 순 있지만 어찌보면 그래픽스, 게임 개발 중 만들어진 연구들이 현재 AI 혁명의 뿌리일거라는 생각이 든다. Day-24
-
Shader History
목차 Shader History 목차 발생 Shader의 기원 1. 어원적 의미 2. 초기 형태 3. Programmable Shader 4. 현재 5. 차이 결론 발생 js로 게임 만드려고 하는데 WebGL에서 쉐이더를 적용하려고 생각하다보니...
-
MSA
발생 최근에 회사에서 새로운 프로젝트를 시작하면서 아키텍처에 대해 고민하고 있다. 기존에는 모놀리식 아키텍처를 사용했는데, 팀이 커지고 서비스가 복잡해지면서 마이크로서비스 아키텍처로 전환을 고려하고 있다. 마이크로서비스가 정말 모든 문제를 해결해주는 만능 해결책일까?...
-
GraphQL vs REST API
발생 최근에 새로운 프로젝트를 시작하면서 API 설계에 대해 고민하고 있다. 기존에는 REST API를 주로 사용했는데, GraphQL에 대한 이야기를 자주 듣게 되었다. GraphQL이 REST API의 문제점을 해결한다고 하는데, 정말 그런지 실제로...
-
Docker 컨테이너 보안
발생 최근에 Docker를 사용해서 애플리케이션을 배포하는 프로젝트를 진행하고 있다. 개발 환경에서는 문제없이 동작했는데, 프로덕션 환경에 배포할 때 보안에 대한 고민이 생겼다. 컨테이너는 가상머신보다 가볍고 빠르지만, 그만큼 보안 취약점도 있을 수...
-
HTTP/3와 QUIC
발생 최근에 웹 개발 관련 자료를 보다가 HTTP/3에 대한 언급을 봤다. HTTP/1.1, HTTP/2는 알고 있었는데 HTTP/3는 처음 들어봤다. HTTP/3가 무엇이고 기존 버전들과 어떤 차이가 있는지 궁금해졌다. 특히 QUIC이라는 프로토콜을 기반으로...
-
해저 케이블
발생 어쩌다 든 생각인데 인터넷은 전세계에서 사용이 가능한데 이게 물리적으로는 어떻게 연결이 되있을까 궁금해졌다. 그래서 해저 케이블 지도라는게 있길래 봤는데 생각보다 해저 케이블이 범지구적으로 촘촘히 연결 되어있어서 깜짝 놀랬다. 해저...
-
RPA에 대하여
발생 어쩌다 rpa 프로그램을 만들어야 할 상황이 왔다. 간단하게 python selenium으로 rpa 프로그램을 만든 경험은 있었다. 개인적으로 다른 시스템에 종속되는 rpa 시스템을 만들 경우 깔끔한 시스템을 만들기는 거의 불가능에 가깝다고...
-
JavaScript 게임 개발
발생 요즘 회사 점심 시간마다 게임을 만들고 있는데 js 로 만든 게임은 얼마나 있을까 찾아보니 제일 대박친 게임은 뱀파이어 서바이벌이어서 조금 더 자세히 알아보니 js 게임용 프레임워크인 Phaser 라이브러리를 이용해서...
-
SIMD?
발생 게임 관련해서 정보를 알아보다가 알게된 용어이다. 정의 SIMD SIMD(Single Instruction, Multiple Data) 명령어는 CPU가 하나의 명령어로 여러 데이터를 동시에 처리할 수 있게 해 주는 방식이다. e.g., 일반적인 명령어는 한...
-
Pooling?
발생 게임 관련해서 정보를 알아보다가 알게된 용어이다. 정의 Pooling Pooling 메모리 풀 기법 C/CPP 기준 동적으로 malloc/new를 매번 호출하면 할당/해제 비용이 크고, 메모리 단편화(fragmentation)도 생긴다. 게임 엔진은 수천수만 개 객체(총알,...
-
AoS, SoA?
발생 게임 관련해서 정보를 알아보다가 알게된 용어이다. 정의 AoS AoS Array of Structures, 구조체 배열 객체를 하나씩 배열에 담는 방식이다. 게임으로 예시를 들자면 위치, 속도, 체력 등을 가진 엔티티 구조체를...
-
요즘 보안 사고 너무 많다
발생 요즘 보안 사고가 너무 많은거같다. NPM에 올라와있는 패키지의 기여자들에게 피싱 메일 혹은 직접적 해킹으로 개인정보 및 토큰 탈취 후 패키지에 악성코드를 심는 사례도 최근들어 더 많이 보이고 있고 대한민국의...
-
History about Packet
패킷 스위칭의 역사에 대해 알아봅니다. List 1. 정의 2. 냉전속에 생겨난 기술 3. 결론 정의 패킷(packet)이란 패킷 교환 통신에서 사용되는 정보 전달의 단위이다. 패킷 교환 통신은 데이터를 작은 패킷 단위로...
-
What is TTY?
TTY(Teletypewriter)에 대해 알아봅니다. List 1. 정의 2. 역사 3. 정리 정의 유닉스·리눅스에서 TTY(Teletypewriter) 는 운영체제가 사용자와 프로세스 간 문자 기반 입·출력을 중개하기 위해 추상화한 “터미널 장치”를 통칭한다. 커널은 키보드·디스플레이가 직결된...
-
GitHub Action's Environment
GitHub Action’s Environment
-
Haskell Tip
Haskell Tip 목록
-
Haskell Setup in Mac
Mac에서 Haskell 개발 환경을 설정하는 방법을 알아봅니다. 작업 환경 OS: macOS 14.2 23C64 arm64 Host: Mac14,2 CPU: Apple M2 GPU: Apple M2 Memory: 16384MiB 1. GHCup (GlassgowHaskellCompilerup) 설치 GHCup은 GHC,...
-
Tail Recursion (꼬리 재귀)
꼬리 재귀는 재귀 함수의 최적화 기법 중 하나입니다. 꼬리 재귀를 알기 위해선 꼬리 호출 (Tail Call) 에 대하여 알아야 한다. Tail Call 꼬리 호출 꼬리 호출은 함수의 마지막 동작으로 함수를...
-
Jekyll with Obsidian Blog
List 1. 서론 2. 요구사항 3. 도구 선정 4. 환경 5. 결론 서론 1. 블로그 만들어야 한다. 2. 평소 로컬 환경에서 옵시디언으로 정보를 정리 했었다. 3. 옵시디언에서 정리한 정보들을 그대로...
-
Index
My First Post