서론Cloudflare worker를 사용하는 sh0rt.kr 을 개발하며 가장 중요했던 것은 분산 Sqlite 호환 데이터베이스인 D1에 접근하는 방법이였다.D1에 접근하는 방법은 크게 두가지가 있다. Wrangler를 활용하는 방법과 @nuxthub/core 패키지를 사용하는 방법이다.두가지의 차이점과 왜 @nuxthub/core 라이브러리를 사용해야 하는지를 간단히 살펴보자.본론Wrangler를 활용하려면 wrangler dev 명령어를 통해 Worker 환경과 비슷한 로컬 환경을 만들 수 있다. 하지만 단점이 명확하다.Nuxt의 dev 모드에서는 D1에 접근할 수 없다는 것이다.Cloudflare D1은 Sqlite와 호환되는 데이터베이스이다. 장점은 다음과 같다.Worker와 같이 쓸 수 있는 ..
서론Cloudflare worker를 이용해 URL Shorter를 만들어보려는 사이드 프로젝트 계획을 시작했다.하지만 wrangler를 이용해 디버깅을 해야하는 등, 만만치 않았던 과정이였다.하지만 Nitro.js의 문서를 살펴보다 보니 새로운 방법을 찾게 되었다.본론살펴본 문서는 다음과 같다.Cloudflare는 Worker와 D1, KV Namespace와 같은 Serverless 환경을 제공하고 있다.하지만 이것을 이용해 개발하는 과정은 조금 험난하다.wrangler라는 cli 도구를 이용해야 개발 환경에서 D1과 같은 서비스에 접근하는 코드를 짤 수 있다.하지만 이제는 다르다.nitro-cloudflare-dev 패키지를 설치해 보자.Nuxt3에서는 설치 후 다음과 같이 설정한다.export d..
서론지난번에는 Callback hell을 해결하기 위해 Promise 문법을 알아보았다.하지만 Callback hell을 완벽하게 회피할 수 있는 방법은 아니다.그래서 async/await 문법이 ES7부터 나오게 되었다.ES7의 async/await에 대해 알아보자.본문import fs from 'fs'const openFile = (file: string) => new Promise((resolve, reject) => { fs.readFile(file, (err, data) => { if(err) reject(err); resolve(data); });});지난번 포스트의 openFile 함수다. 이걸 쓰기 위해openFile('location') .catch((err) => con..
서론Promise는 JavaScript의 비동기 프로그래밍을 도와주는 라이브러리다.현재는 JavaScript V8엔진에 기본 탑재되어 있다. (즉 Node.js에서도 활용할 수 있다.)IE10 이전 버전에서는 작동하지 않는데 Babel과 Promise polyfill을 통해 비슷하게 작동하도록 만들 수 있다. 본론그렇다면 어떻게 Promise가 비동기 작동을 돕는걸까?간단한 Wait 함수를 살펴보자.const wait = (time: number): Promise => new Promise((resolve, reject) => { setTimeout(() => resolve(), time);});wait(4000).then(() => console.log("done"))이 코드를 실행한다면 4초 후 P..
서론Powerlevel10k도 oh-my-zsh에 엮어 많이 사용하는 라이브러리다.간단히 설치하고 사용할 수 있고, 비주얼 적으로도 좋아 자주 사용된다.본론우선 여기를 참고해 oh-my-zsh와 폰트를 설치해준다.두번째로 여기를 참고해 설치할 수 있다.oh-my-zsh와 연계해 설치하는 코드는 다음과 같다.git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k마지막으로 ~/.zshrc의 theme 부분을 다음과 같이 설정한다.# Set name of the theme to load --- if set to "random", it will#..