프로그래밍 언어 50

express에서 공통 트랜잭션 ID 부여하기

express를 사용한 서버를 만들면서 각 트랜잭션마다 공통적인 ID가 있으면 좋겠다는 생각이 들었다. 이러한 생각에 기반하여 여러가지 방법을 찾아 보았는데, 역시 동시성 제어 관련해서 문제가 있었다. 해당 문제와 관련해서 해결 방법을 생각해 보았다. 개요 한개의 요청마다 고유ID를 부여하여 로그를 쉽게 남길 수 있게 하고 싶다. 이 때 동시성 제어와 관련한 문제를 해결해 보려고 한다. 사례 조사 오래전부터 사용되었던 Spring 프레임워크에서는 ThreadLocal를 사용하고 있었다. Java는 기본적으로 멀티스레드를 지원하는 언어이기 때문에 동시에 여러개의 트랜잭션을 처리할 때 스레드를 나누어서 처리한다. 이 때 ThreadLocal를 사용하여 각 스레드마다 특정 값을 저장할 수 있다. 이 덕분에 각..

유용한 쉘 스크립트 시나리오 정리

쉘 스크립트의 exit code 분리하기 # 예시 : azure cli 로그인 여부 확인하기 if az account show &>/dev/null; then echo "Azure Logined!" else echo "You need to login Azure!" fi &>/dev/null 을 붙이면 쓰레기통(/dev/null)에 출력 결과물이 들어가고, exit code만 남게 된다. 마지막으로 실행한 스크립트의 exit code 확인하기 $? 변수값 만들어서 저장하기 # nowGroup에 group이라는 변수를 저장 후 출력한다 nowGroup=$(echo "group") echo $nowGroup $([본문])을 통해서 출력값을 저장한다. 폴더의 존재 확인하기 # 폴더 존재 확인 FOLDER_NAM..

Bandit Level 6 해설

❗️모든 문제는 Mac 기준으로 풀이합니다❗️ Bandit Level 6 문제를 풀어 보자. 문제를 요약해 보자. 문제 암호를 찾아라. 암호가 있는 파일은 다음 조건을 만족한다. 사람이 읽을 수 있다. 1033 바이트의 크기 실행 불가능한 파일이다. 해설 find 명령어에 파일 사이즈를 제한할 수 있는 명령어가 있다. 이것으로 1차 분류 ls -al을 통해 실행 불가능한 권한을 가진 파일을 찾는다. 정답 find ./* -size +1032c -size -1034c ls -al 참고자료 https://coding-factory.tistory.com/804 [Linux] 리눅스 find 명령어 사용법 (파일 찾기, 검색) find 명령어 리눅스의 find 명령어는 리눅스 파일 시스템에서 파일을 검색하는 데..

Bandit Level 5 해설

❗️모든 문제는 Mac 기준으로 풀이합니다❗️ Bandit Level 5 문제를 풀어 보자. 문제를 요약해 보자. 문제 사람이 읽을 수 있는 유일한 파일에 있다! 해설 인코딩 형식을 확인한다. 사람이 읽을 수 있는 파일을 아스키 코드라고 가정하고 아스키 코드 형식의 파일을 찾는다. 파일을 찾아 보니 한 개의 파일만 아스키 코드로 인코딩 되어 있었다. 정답 file ./-file* cat ./-file07 참고자료 https://linux.die.net/man/1/file file(1): determine file type - Linux man page file(1) - Linux man page Name file - determine file type Synopsis file [-bchikLNnprsvz..

Bandit Level 3 해설

❗️모든 문제는 Mac 기준으로 풀이합니다❗️ Bandit Level 3 문제를 풀어 보자. 문제를 요약해 보자. 문제 파일 이름 사이에 공백이 있는 파일에 암호가 있다. 해설 큰따옴표로 묶어준다. 정답 cat "spaces in this filename" 참고자료 https://appuals.com/how-to-handle-passing-filenames-with-spaces-in-bash/ How to Handle Passing Filenames with Spaces in Bash Linux has a default shell Bash (aka Bourne again shell) to execute commands for the system. Most programmers prefer bash ove..

Bandit Level 2 해설

❗️모든 문제는 Mac 기준으로 풀이합니다❗️ Bandit Level 2 문제를 풀어 보자. 문제를 요약해 보자. 문제 파일 이름은 "-" 이다. 해당 파일안에 암호가 있다. 해설 대시는 기본 파일 입출력에서 dev/stdin 또는 dev/stdout으로 인식할 수도 있다. 해당 파일을 열기 위해서는 전체 위치까지 지정해 주어야 한다. 정답 cat ./- # 또는 cat < - 참고자료 https://stackoverflow.com/questions/42187323/how-to-open-a-dashed-filename-using-terminal How to open a "-" dashed filename using terminal? I tried gedit, nano, vi, leafpad and oth..

Bandit Level 0 해설

❗️모든 문제는 Mac 기준으로 풀이합니다❗️ Bandit Level 0 문제를 풀어 보자. 문제를 요약해 보자. 문제 해당 호스트에 ssh 로그인 하세요. 포트는 2200번 입니다. 해설 -p 옵션을 사용하면 포트를 지정할 수 있다. 정답 ssh bandit0@bandit.labs.overthewire.org -p 2220 참고자료 https://linux.die.net/man/1/ssh ssh(1): OpenSSH SSH client - Linux man page ssh(1) - Linux man page Name ssh - OpenSSH SSH client (remote login program) Synopsis ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address..

This is not the tsc command you are looking for 에러 해결하기

Express를 JS에서 TS로 마이그레이션을 하는 도중, tsc를 사용해 js로 컴파일 할려고 tsc 명령어를 치니 다음과 같은 에러 메시지가 나왔다. This is not the tsc command you are looking for To get access to the TypeScript compiler, tsc, from the command line either: - Use npm install typescript to first add TypeScript to your project before using npx - Use yarn to avoid accidentally running code from un-installed packages 검색을 해보니, 해당 문제는 tsc 패키지와 typ..