본문 바로가기

전체 글

(259)
JWT(JSON Web Token) 으로 3행시 해보겠습니다 JWT(JSON Web Token)으로 3행시 해보겠습니다 J : 제이슨 웹 토큰이 W : 왜 중요한지 모른다면 T : 토킹 어바웃 JWT(Json Web Token) 이란 인증에 필요한 정보들을 암호화시킨 JSON 토큰 JWT는 세 부분으로 구성되고 .(점)을 구분자로 나누어지는 세 가지 문자열의 조합 세 가지 문자열? Header Payload Signature Header Header는 일반적으로 두 가지 정보를 포함 Header는 Base64URL로 인코딩 되어 생성 alg : 사용되는 암호화 알고리즘(HMAC SHA256, RSA) typ : 토큰의 타입을 나타냄. 일반적으로 "JWT" { "alg": "HS256", "typ": "JWT" } Payload(Claims) 실제 전달하고자 하는 ..
개발자가 사용자와 소통하는 방법(Nonetype object has no attribute write, pyinstaller) 개발자가 사용자와 소통하는 방법(Nonetype object has no attribute write, pyinstaller) 부제 : 오픈마켓 상품 정보 수집기 버그를 고치며.. 1. 사건 Pyinstaller를 이용해서 패키징 한 EXE 파일을 지인에게 전달하고, 또 다른 버그가 생겼다 하지만 내가 테스트할 때 발생하지 않은 버그라 당황했다. 2. 사용자 환경 문제 "사용자가 프로그램을 실행하는 환경이 뭐가 잘못된 건가?"라고 처음엔 생각했다. 사실상 최악의 접근방식이었다. 실행하는 환경에 상관없이 동작하도록 만들었어야 하는 것이지 사용자는 잘못 없다. 3. 원인 파악 먼저 Pyinstaller 도큐먼트에서 5.7 버전에서 Bugfix 내용을 확인할 수 있다 Pyinstaller Docs 설명 패키징..
Pyside6로 만든 EXE 파일을 수정하다 알게 된 것들 Pyside6로 만든 EXE 파일을 수정하다 알게 된 것들 최근에 Pyside6을 가지고 프로그램을 만들어서 지인에게 제공했다 쿠팡 상품 정보 수집기 -> 오픈 마켓 상품 정보 수집기 쿠팡 상품 정보 수집기 -> 오픈 마켓 상품 정보 수집기 로그인 로그인 기능 추가 DataBase는 Ncloud의 CloudDB를 사용 중 2. 카테고리 및 연관 키워드 수집 사용자의 엑셀 데이터를 입력받고 오픈 마켓별 junnyhi.tistory.com 하루뒤에 피드백이 왔는데 버그가 엄청 많았다. 그래서 버그들을 수정하면서 알게 된 것들을 기록으로 남기려고 한다. 1. Lazy initialization Pyside6을 사용해 EXE 파일을 만들고 실행하는 경우, 로드시간이 생각보다 오래 걸렸다 따라서 특정 객체의 초기..
NCloud API 배포 시, Usage Plan 적용하기 NCloud API 배포 시, Usage Plan 적용하기 NCloud를 사용해서 FastAPI 배포 시, 사용자 별로 사용량 측정 어떻게 하는지 궁금해서 찾아봤는데 아주 좋은 서비스를 제공하고 있더라.. Usage Plan 생성 2개의 Usage Plan을 만들었다 월 10회를 사용할 수 있는 홍길동 월 30회를 사용할 수 있는 김나박 API KEYS 각 사용자들이 사용할 수 있는 API KEYS 생성 그다음 Products 카테고리에서 방금 만든 API KEYS를 등록 그다음 배포할 Product 클릭해서, Usage Plan을 연결 (Usage Plan에서 Stage 선택을 할 수 있는 걸 나중에 발견했다) 그다음 API KEYS 버튼을 누르고 Stage 별로 Plan을 등록했다 월 1회만 사용가능..
VScode를 사용했더니 kswapd0 사용률이 100%?.. VScode를 사용했더니 kswapd0 사용률이 100%?.. API 배포를 위한 개발용으로 네이버 클라우드 플랫폼에 서버를 하나 두고 사용하고 있다 최근 들어 계속 아래 그림처럼, CPU랑 MEM 사용량이 100% 찍어 느려지거나 재부팅되는 현상이 발생됐다 그래서 Top 명령어 실행해두고 곁눈질로 모니터링하면서 업무를 하던 도중, kswapd0라는 놈을 잡아냈다 참고: WhaTap - 리눅스 free 명령어로 메모리 상태 확인하기 SWAP 스왑은 디스크의 일정 부분을 메모리 공간 부족 시 메모리 처럼 사용하기 위해 설정해 둔 공간으로, 커널은 메모리가 부족한 상황에서는 Buffer와 Cache로 할당된 것 중에 자주 사용되지 않는 것들을 비우고 메모리에 할당하려고 시도함 또한 메모리에 있는 데이터 중 ..
Race Condition과 Thread.Lock (Feat. 파이썬) Race Condition과 Thread.Lock (Feat. 파이썬) NCP에서 Fast API관련한 서버가 계속 OOM이 발생해서 원인을 파악하던 도중.. 갑자기 딴 길로 샜다. Race Condition 동시성 프로그래밍에서 발생하는 상황으로, 두개 이상의 동시적인 연산(스레드나 프로세스에 의해 수행되는)이 자원에 접근하고 그 순서에 따라 결과가 달라지는 상황 예를 들어, 두 스레드가 동시에 같은 메모리 위치에 쓰기 작업을 수행하려고 할 때, 어느 스레드가 먼저 쓰기 작업을 수행하느냐에 따라 결과가 달라질 수 있음 따라서 동시성 프로그래밍을 할 때는 Race Condition을 방지하기 위한 동기화 메커니즘(뮤텍스, 세마포어)을 사용해서 한 번에 오직 하나의 연산만이 해당 자원에 접근할 수 있도록 ..
만약 내가 Seller라면, 어떤 물건을 팔까? (1) 만약 내가 Seller라면, 어떤 물건을 팔까? 스마트스토어, 쿠팡, 11번가 등등 오픈마켓에 물건을 판매하려는 Seller 들은 데이터 분석 플랫폼에서 판매할 물건을 찾고 적합한 키워드로 상품명을 짓는다. 상품과 키워드를 찾기위한 플랫폼은 아이템스카우트, 셀링하니 같은 사이트가 여러 개 있었고 해당 사이트를 참조하면서 만들어보려고 한다 궁극적으로 하고 싶은 것은, '뭐 팔까?' 라고 물어보면 'A'라고 결과를 받아볼 수 있는 원클릭 소싱 프로그램(?)을 만들려고 한다. 이때 필요한 건 "데이터를 얼마나 잘 분석하는가?" 라고 생각하는데, 만들려는 사람은 데이터 사이언티스트, 애널리스트 뭐 그런쪽 능력치가 없는 애송이다. 신청한 API 데이터랩 API에 추가로 파파고도 신청했다 여기에 추가로 검색광고 A..
dict.fromkeys()에 관한 사실 dict.fromkeys()에 관한 사실 나는 파이썬 내장 함수인 dict.fromkeys()를 자주 사용하는 편인데, 처음 회사를 다닐 때 본 뒤로 자주 사용하는 것 같다. 사용하는 이유 간결성, 내장함수, 그리고 핵심이유는 "불변 객체를 사용한 초기화"가 유용해서 자주 사용한다. 하지만 오늘 아래와 같은 만행을 저질렀다. 간략한 예시를 들어보겠다. key = ['key1', 'key2', 'key3'] dict1 = dict.fromkeys(key, []) dict1['key1'].append('value1') print(dict1) 여기서 내가 예상한 기댓값은 아래였지만, {'key1': ['value1'], 'key2': [], 'key3': []} 실제 결과는 다음과 같았다. {'key1': [..