[작성자:] Ashveil
-
[암호학] Tiny Encryption Algorithm(TEA), XTEA
암호학에서, Tiny Encryption Algorithm은 구현과 설명이 매우 쉬운 블록 암호이다. TEA는 두 개의 32비트 부호없는 정수에서 작동하며, 128bit(16 바이트)의 키를 사용한다. 이것은 Feistel 구조와 함께 64 라운드를 사용하며, 일반적으로 cycles로 명칭된 쌍에서 구현된다. 매우 간편한 키 스케쥴을 가지고 있으며, 핵심 재료를 섞는 것은 각 사이클마다 모두 동일하다. *파이스탈 구조는 다른 포스팅에서 다루도록 한다. 서로 다른…
-
[GDB] gdb에서 입력 함수에 호출 지점 찾고 싶을 때
GDB를 사용하다 보면 입력을 받는 함수인 read에서 breakpoint를 걸고 싶을 때가 있다. 이때 함수 목록에서 해당 입력을 수행하는 함수에 모두 breakpoint를 거는 것보다 더 유용한 기술을 소개하려고 한다. 명령어 catch syscall 이후 read 외에도 여러 이벤트에 브레이크 포인트를 걸 수 있는데, 해당 OS의 unistd.h 헤더파일을 참조하면 된다. 예). i686-linux-android : https://github.com/EdgeApp/android-ndk-linux/blob/master/sysroot/usr/include/i686-linux-android/asm/unistd_64.h List up ** [0] Read…
-
[Clsx] Tailwindcss에 조건 추가하기
Tailwindcss를 이용하여 상태 값에 따른 css 변화를 주기 위해서는 삼항 연산자를 주로 사용하였다. 그런데 사용할수록 코드가 너무 더러워지는 느낌이 자주 들어서 어떻게 해결할 까 생각하던 중 GPT가 clsx 패키지를 추천해 줬다. 맨 처음 리액트를 배웠을 때는 clsx라는 패키지는 없었고, classnames라는 패키지를 주로 사용했었다. 하지만 tailwindcss를 삼항연산자로 조건을 줄 때, classnames를 사용하지 않고 아래와 같이 사용했었다.…
-
[Git] Git Rebase
Git rebase는 브랜치를 병합할 때 기존의 커밋 기록을 그대로 유지하지 않고, 새로운 커밋 기록으로 재정렬하여 보다 깔끔하고 선형적인 히스토리를 만드는 방식이다. 일반적으로 기능 개발을 위해 feature 브랜치를 만들면, 그 동안 main 브랜치는 계속 업데이트되고 커밋이 쌓인다. 이때 feature 브랜치는 main보다 뒤쳐지게 되는데, rebase는 feature 브랜치의 시작점을 main의 최신 커밋으로 옮겨서 마치 feature 브랜치가 최신 시점부터…
-
NPM (Node Package Manager)
-
[Nest.js] Nest.js란?
Nest.js는 Node.js 환경에서 구조적이고 유지보수가 쉬운 서버 애플리케이션을 만들기 위해 설계된 백엔드 프레임워크입니다. 기본적으로 TypeScript를 중심으로 구성되어 있으며, 대규모 애플리케이션을 체계적으로 구축할 수 있도록 Angular에서 영감을 받은 모듈 구조와 의존성 주입(Dependency Injection) 패턴을 사용합니다. 이러한 구조 덕분에 서비스, 컨트롤러, 모듈이 명확하게 구분되고, 코드가 커져도 프로젝트를 정리된 상태로 유지하기 쉽습니다. Nest.js는 내부적으로 Express를 기본 HTTP 플랫폼으로 사용하지만, 필요하면 Fastify로 쉽게 교체할 수도…
-
[Tanstack-Query] Tanstack-Query로 가져온 데이터에 추가 정보를 덧붙이고 싶을 때
처음 Tanstack-Query를 공부할 때는 단순히 axios의 상위 버전 패키지인 줄 알았다. axios가 get, post, put, delete 기능을 제공하여 다른 url에서 데이터를 가져오는데 이에 조금 더 옵션을 추가한 거 아닐까라는 단순한 생각에 접근했다가 Overview를 읽고 되게 신기해 했었던 기억이 있다. TanStack Query (formerly known as React Query) is often described as the missing data-fetching library for…