목록분류 전체보기 (389)
만족
생성된지 24시간 이내라면 저장된 파일을 사용하고, 캐시가 존재하지 않거나 24시간을 초과했다면 파일을 overwrite 하는 식으로 이미지 캐시를 운영하고 있다. 그런데 뒤늦게 캐시가 정상적으로 작동하지 않았다는걸 알았다. birthtime과 mtimebirthtime은 파일의 최초 생성 시간을 의미한다.mtime은 파일의 마지막 업데이트(modified) 시간을 의미한다. 이미 존재하는 파일에 append모드로 파일을 '쓰기'하면birthtime은 변경되지 않지만 mtime은 현재 시간으로 업데이트된다 overwrite file?그렇다면 파일을 overwrite 하면 어떻게 될까? 파일 내용을 완전히 대체하는 작업이기에 내 생각에는 birthtime이 변경된다고 생각했다. 하지만 write 모드로 o..
const str= '😅';console.log(str.length); 위 코드를 실행하면 콘솔에는 어떻게 표시될까? '1글자니까 1이겠지' 라고 생각할 수 있지만 2가 표시된다. 왜 이렇게 표시되는지 알아보자 써로게이트 페어 (surrogate pair) 기본적으로 js에서 string은 UTF-16으로 다뤄진다. UTF-16은 문자를 표현할 때 2바이트 또는 4바이트를 가변적으로 사용한다. 한국어 문자(가, 나, 다...)는 2바이트로 표현이 가능하지만일부 한자나 이모지 등은 2바이트로 표현이 불가능해 2바이트를 더 사용해야 한다, 따라서 기본적으로는 2바이트를 사용하되, 2바이트로 표현 가능한 범위 바깥의 문자열들은 2바이트를 더 사용하여 표현한다. 두 글자만큼의 공간을 한 글자를 표현하는데 사..
지난번에 독거미 키보드를 구매해서 산 이후로 사무실에서 쓸 커스텀 키보드를 하나 더 마련하고 싶어서 알아보다가닌자87 하우징을 저렴하게 판매하고 있길래 하나 구매했다. https://smartstore.naver.com/monstarkorea/products/4766961551?NaPm=ct%3Dlx4pnsu7%7Cci%3Dcheckout%7Ctr%3Dppc%7Ctrx%3Dnull%7Chk%3D78b40d7009bde36d59bd8fafc7d603465f52e8be 닌자87 v2 RGB DIY키트 핫스왑 기계식키보드 커스텀키보드 : 몬스타기어#닌자87 #커스텀키보드 #축교체 #기계식키보드 #데빌스킬 #닌자키보드 #측각키캡 #조립식키보드 #아크릴키보드 #닌자87RGBsmartstore.naver.com 판..
tsc 로 컴파일할때 항상 ts 파일만 컴파일하지는 않는다. ts + js 가 섞인 프로젝트에서 allowJS 옵션을 통해 js 파일도 tsc input으로 사용될 수 있다. 그러나 이렇게 js 를 tsc 인풋으로 사용할 때는 일부 오류들이 표시되지 않아 문제를 인식할 수 없다. 그 중 얼마 전 발견한 하나의 케이스를 소개한다. iterator + for-of iterator는 iterable(반복 가능) 한 객체로 Array, Map 도 iterable 객체다. iterable 객체는 for-of 를 이용해 순회 가능하다. for (const str of ['1', '2']){ console.log(str);} 이런식으로 of 뒤에 iterable 객체를 두고, of 앞의 변수에 할당하여 반복한다...
가성비 키보드로 유명한 AULA F87 PRO, 일명 독거미 키보드를 구매했다. 쿠팡같은 국내 쇼핑몰에서 해외직구 대행으로 판매하기도 하지만,직접 직구하는 것 보다 2만원 이상 비싸기도 하고 배송기간은 훨씬 길었기 때문에 직접 직구했다. 물론 국내정발판도 있지만 재고가 들어오자마자 나가는 수준이라 포기했다. Qoo10에서 해외직구 https://plus.wish.com/gmkt.inc/Goods/Goods.aspx?goodscode=925066902 구매시점(2024.05.07)에 가장 저렴한 Qoo10 에서 해외직구를 진행했고약 44000원에 구매했다. 요즘 늘어나는 해외직구 때문에 세관이 바쁘다더니 세관 통과까지 꽤나 시간이 걸렸다. 타임라인을 정리하면 다음과 같다. 05.07 구매05.12 판매자..
https://startatage30.tistory.com/12 [MongoDB] 우분투(ubuntu 20.04)에 (몽고디비)mongodb 설치 1. wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add - 2. echo "deb [ arch=amd64, arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list 3. sudo ap startatage30.tistory.com
웹 어플리케이션에서 데이터 패칭, 캐싱, 서버 상태와 동기화 및 업데이트(fetching, caching, synchronizing and updating server state)를 쉽게 만들어주는 library 이 포스트에서는 react-query의 기초적인 개념 몇 가지에 대해 다룬다. Installation yarn add @tanstack/react-query eslint와 함께 사용하는 것을 추천, 세팅은 아래 링크 참조 https://tanstack.com/query/latest/docs/eslint/eslint-plugin-query ESLint Plugin Query | TanStack Query Docs tanstack.com Quick Start: queryClient https://t..
const normalDoc = await MyModel.findOne(); mongoose를 이용하여 쿼리할 때 위와 같은 형태로 쿼리한다. https://mongoosejs.com/docs/index.html mongoose 의 quick start에서도 위와 같이 소개하고 있어 계속 이렇게 사용해왔지만, 클러스터링까지 사용하게 되면서 cpu, memory 사용량이 증가하여 조치를 취해야만 한다. 쿼리 시 어떤 데이터를 반환하는가? const normalDoc = await MyModel.findOne(); 이 코드를 사용했을 때 normalDoc에는 어떤 데이터가 할당될까? util.inspect와 console.log를 이용해 normalDoc을 찍어보면 { _id: 659bc8cc415b117a..
