목록분류 전체보기 (498)
규도자 블로그
[프로그래머스/Level2/파이썬3(python3)] 압축 문제 신입사원 어피치는 카카오톡으로 전송되는 메시지를 압축하여 전송 효율을 높이는 업무를 맡게 되었다. 메시지를 압축하더라도 전달되는 정보가 바뀌어서는 안 되므로, 압축 전의 정보를 완벽하게 복원 가능한 무손실 압축 알고리즘을 구현하기로 했다. 어피치는 여러 압축 알고리즘 중에서 성능이 좋고 구현이 간단한 LZW(Lempel–Ziv–Welch) 압축을 구현하기로 했다. LZW 압축은 1983년 발표된 알고리즘으로, 이미지 파일 포맷인 GIF 등 다양한 응용에서 사용되었다. LZW 압축은 다음 과정을 거친다. 길이가 1인 모든 단어를 포함하도록 사전을 초기화한다. 사전에서 현재 입력과 일치하는 가장 긴 문자열 w를 찾는다. w에 해당하는 사전의 색..

macOS에서 ELK stack 구성하기 (elasticsearch) 그냥 brew install로 무지성 설치를 하려니 안되더라. 해서 내가 삽질한 내용과 더불어 다른 사람들은 헤매지 않길 바라며 기록해둘 요량이다. 먼저 현재(2022년 2월 27일) brew search elasticsearch 하면 나오는 내용이다. $ brew search elasticsearch ==> Formulae elasticsearch elasticsearch@6 ShellCopy 깔아보자. $ elasticsearch -V warning: no-jdk distributions that do not bundle a JDK are deprecated and will be removed in a future release W..

과연 여기서 말하는 강한 온도는 높은 온도를 의미하는 것인가, 낮은 온도를 의미하는 것인가. 숫자가 온도를 의미하는 것인가 아니면 강도를 의미하는 것인가. 여기서 강도를 의미하는 것이라면 높은게 강도가 높은 것인가 낮은게 강도가 높은 것인가. 또 이 강도가 높은 게 온도가 높은 것인가, 강도가 낮은 게 온도가 높은 것인가. 온도를 강하게 하려면 저 화살표 방향으로 돌리라는 것인가 아니면 상단의 화살표가 거기에 존재할 때 온도가 강하게 설정돼있다는 것인가. 진짜 그 어떤 정보도 도움이 되지 않는 최악의 UI가 아닐까. 결국엔 UX로 해결해야한다. 성에제거가 곧 높은 온도를 의미하는 것이니 온도를 낮추려면 성에제거로 갈 수 있는 방향의 반댓방향으로 돌리면 되고, 온도를 높이려면 성에제거방향으로 가면 된다.

django로 github actions찍먹해보기 github actions라고 요즘 핫한 친구가 있다. 간단하게 말하자면 github actions를 설정한 저장소에 특정 이벤트가 일어나면(push를 했을 때나 정해진 시간 등) 정해놓은 워크플로우를 자동으로 실행하게 해주는 기능이다. 일종의 CI/CD작업을 깃허브에서 실행하게 만들 수도 있는 셈이다. 그래서 보통 jenkins에서 수행하던 CI작업을 github actions로 많이 옮기는 추세이다. 허나 완전한 무료는 아니라는 걸(2,000 Actions minute/month FREE) 알아둬야 한다. github에서 직접 지원하는 기능일 뿐더러 build, test, package, release, deploy 등 다양한 이벤트를 기반으로 직접 ..
[macOS] kubectl, kustomize, minukube설치하기 $ brew install kubectl kustomize minikube $ kubectl version Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.5", GitCommit:"5c99e2ac2ff9a3c549d9ca665e7bc05a3e18f07e", GitTreeState:"clean", BuildDate:"2021-12-16T08:38:33Z", GoVersion:"go1.16.12", Compiler:"gc", Platform:"darwin/amd64"} Server Version: version.Info{Major:"1", Minor:"22"..

gmail에는 여러 용도로 사용할 수 있게 아이디 뒤에 +{something}을 붙여서도 사용할 수 있는 기능이 있다. 예를 들어 내 이메일주소가 jujumilk3@gmail.com인데 여기에 jujumilk3+2022@gmail.com을 붙여도 내 원래 계정으로 온다. 이렇게 말이다. 물론 숫자뿐만이 아니라 영어도 되므로 특정 메일을 리스팅하거나 라벨링할 때 쓰기 좋은 기능이지만 이 기능을 aws계정가입과 함께 활용하면 같은 gmail계정으로 여러개의 프리티어계정을 계속 생성할 수 있다. 프리티어계정은 1년 후에 종료되기 때문에 나 같은 경우에는 뒤에 해당년도를 붙여 새로운 계정을 만들어 사용하고 있다. 이렇게 가입시도를 하면 멀쩡히 잘 진행된다. 프리티어 기능을 정상적으로 사용할 수 있다는 확인메일이..

오늘 깃허브 계정을 점검해봤는데 아직도 전직장의 github repository에 내가 등록이 돼있었다. 원래는 그냥 로컬에서만 개인적으로 공부하고 있는 걸 push하는 용도로 썼는데 요즘 fastapi 기여때문에 자주 들어가보게 돼서 발견했다. 보안문제도 있고 할 텐데 왜 내가 아직도 등록이 돼있을까. 아마 발견하기 힘들어서 잊은 게 아닐까 하는 추측 뿐이다. 그리고 당연스레 나 스스로 collaborator를 끊어서 해당 repo를 안볼 수 있지 않을까 싶었는데 아니었다. 레포 세팅에 접근할 권한이 없기 때문에 내가 날 없앨 수 없었다. 방법은 다음과 같다. 그냥 그 유저를 block했다가 다시 풀면 된다. 저 버튼을 눌러서 계정을 Block하고 다시 settings에서 풀면 된다. 그럼 해당 계정과..

FastAPI 기여하기 저번에도 썼던 게시물의 2편이라 봐도 무방하다. 일단 Contribute에 대한 공식 안내는 이 링크를 찾아가보면 된다. 근데 이게 한사람이 관리하는 프로젝트라 언제 PR이 될지 모른다. 하지만 그냥 하는 거다. 구멍이 숭숭 뚫린 프레임워크니까.. 먼저 fastapi 공식 repository에 간다. 그리고 fork를 딴다. 요기따. 그리고 local에 project를 클론해서 연다. 그럼 이런 모양이 된다. 그럼 fastapi를 실행해보자 당연히안된다. Fastapi는 다른 의존패키지가 꽤나 많기 때문이다. poetry에서 사용되는 pyproject.toml파일을 살펴보면 FastAPI의 프로젝트 의존성이 어떻게 구성돼있는지 알 수 있는데 각설하고 이걸 실행하고 싶으면 pypro..

리눅스, 유닉스 백그라운드프로세스 방법 정리 (&, bg, nohup, screen) 서버는 왜 필요할가. 당연히 내가 보고 있지 않아도 서비스를 안전하게 제공하기 위해서다. 백그라운드 프로세스는 왜 필요할까. 당연히 내가 보고 있지 않는 상태에서도 돌아가고 있는 프로세스를 실행하고 싶거나 혹은 여러개의 프로세스를 돌리고 싶기 때문일 것이다. 하지만 백그라운드 프로세스를 돌리는 방법은 많고 각각의 방법은 어떤 특성이 있는지 여기저기 파편화돼있는 정보들을 스스로 취합하지 않으면 언제 어떤 방법을 선택해야할지 알기 힘들다. 그래서 여기에 정리해본다. 1. &(ampersand) 리눅스기반 os의 명령어에서 흔히 쓰이는 Semicolon(;)과 Pipe(|)의 형제라고 할 수 있다. &연산자 자체는 "앞의 명..
파이썬 프로세스 킬러 import os def kill_process(process_name): process_read = os.popen(f"ps -ef | grep {process_name} | grep -v 'grep'").readlines() terminate_result = None for process in process_read: process_id = process.split()[1] terminate_result = os.popen(f"kill {process_id}") return terminate_result 프로세스단위에서 프로세스를 죽이는 스크립트이다. 내가 개인적인 용도로 사용했을 땐 내가 돌리고 있는 퀀트프로그램에서 웹소켓이 깨졌을 때 해당 프로세스를 전부 종료하..