๐งฑ ๋ถ์ฑ โ
๊ธฐ์ ๊ธ โ
- JavaScript Proxy. ๊ทผ๋ฐ ์ด์ Reflect๋ฅผ ๊ณ๋ค์ธ
- BEM
- CloudFront + CloudFront functions ์ด์ฉํด Next.js ๋ฒ๋คํ์ผ ํจ์จ์ ์ผ๋ก ์๋นํ๊ธฐ
- ํ๋ก ํธ์๋์ THE TWELVE-FACTOR APP
- Lambda ํ๊ฐ๋ก ๋ง๋๋ On-demand Image Resizing
- ํ๋ก ํธ์๋์์ MV* ์ํคํ ์ณ๋ ๋ฌด์์ธ๊ฐ์?
- ์นด์นด์ค์นํฐ์ ํ๋์จ์ด ๊ฐ์๊ณผ IntersectionObserver๋ฅผ ์ด๋ป๊ฒ ์ฌ์ฉํ์๊น?
- ์ฃผ์ ๋ถ์๊ธฐ๋ฅผ ์ด์ฉํ ๊ฐ๋จํ API ๋ฌธ์ํ ๋ฐฉ๋ฒ
- ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ ํ๋กํ ํ์ ์ ์ ํํ์๊น
- ๋คํ์ฑ
- 3๋ถ ๋ชจ๋๋
- ์ฌ์ฉ์ ์ ๋ ฅ ํ ์คํธ๋ฅผ ๋ฐ์ดํธ(byte) ๊ธธ์ด๋ก ์ ํํ๋ Vue ์ปดํฌ๋ํธ ๋ง๋ค๊ธฐ
- demystifying-memory-management-in-modern-programming-languages
- A crash course in just-in-time (JIT) compilers
- WebAssembly: Docker without containers!
- Tweet: list of fundamentals you think every web developer should know (Kent C. Dodds)
๊ธ๊ฐ โ
Vue.js Google Tag Manager, Google Analytics, UserID ์ ์ฉ โ
- ์น์ฌ์ดํธ์ ๊ตฌ๊ธ ํ๊ทธ ๋งค๋์ (GTM) ์ค์นํ๊ธฐ
- ๊ตฌ๊ธ ํ๊ทธ๋งค๋์ ๋ก GA ์ค์นํ๊ธฐ
- Google Analytics 4(GA4)๋ฅผ ๊ตฌ๊ธํ๊ทธ๋งค๋์ (GTM)์ ์ฐ๋ํ๊ธฐ
์นดํก ์ธ๋ค์ผ, ์ค๋ช ์ ์ฉํ๊ธฐ โ
Vue.js use both inline and external SVGs โ
- How to use both inline and external SVGs
- https://github.com/visualfanatic/vue-svg-loader/issues/141
- Using SVG and Vue.js: A Complete Guide
- How load external svg in css section in Vue
- https://stackoverflow.com/questions/44695560/how-can-i-import-a-svg-file-to-a-vue-component/56855843#56855843
useEffect ํ ์์ async await ๋ฌธ๋ฒ์ ์ด๋ป๊ฒ ์ฌ์ฉํ ์ง ๊ฒฐ์ ํ๋ ๋ฐฉ๋ฒ โ
- grep.app ๊ฒ์
- microsoft/BotFramework-Composer/.../WebChatPanel.tsx
- [react] useEffect ํ ์์ async await ํจ์ ์ฌ์ฉํ๊ธฐ
iOS React Native Webview์์ ์บ์ ๊ฐฑ์ ์ด ์๋๋ ๋ฌธ์ โ
- Expo ReactNative : Webview cache setting
- Cache Control Mdn
- ์์๋ฌ์ผ ํ HTTP ์ฟ ํค & ์บ์ ํค๋
- ์น ์๋น์ค ์บ์ ๋๋ํ๊ฒ ๋ค๋ฃจ๊ธฐ
@media print๋ก ํ์ด์ง๋ฅผ ํ๋ฆฐํธ์ ์ ํฉํ๋๋ก ํ๊ธฐ โ
- [CSS] ์นํ์ด์ง ํ๋ฆฐํธ ์ค์
- Force print preview mode
- scale html table before printing using css
- ๋ด๊ฐ ํธํ๋ ค๊ณ ์ ๋ฆฌํ๋ - ์น ์ธ์, @media print, @page
Vue.js + prettier์์ ์๋์น ์๊ฒ ์์ฑ๋๋ ๊ณต๋ฐฑ ์ ๊ฑฐํ๊ธฐ (WhitespaceSensitivity) โ
- Prettier - HTML Whitespace Sensitivity
- Prettier - Prettier 1.15: HTML, Vue, Angular and MDX Support
- eslint - vue/html-closing-bracket-newline
heroku + node.js app + google chart๋ก Vuepress ๋ธ๋ก๊ทธ์ ์ค์๊ฐ ์ฃผ์ ์ฐจํธ ๊ทธ๋ฆฌ๊ธฐ โ
- ๋ง์ดํฌ๋ก์ํํธ ๋ธ๋ฆฌ์๋ ์ธ์
- node-yahoo-finance2
- heroku + express
- heroku github connect
- ์๋ฌ ๋ก๊ทธ ํ์ธ
- heroku cli ์ค์น
- login,
heroku logs -a <app> -tail
- ์ heroku?
- ๋ฌด๋ฃ
- ๊ท์ฐฎ์ ์ค์ ์์ด ๋น ๋ฅด๊ฒ ํ ์ ์์ ๊ฒ์ผ๋ก ๋ดค์ -> ๋ง์์, ํนํ github ์ฐ๋
- cors anywhere app ์ฌ์ฉ ๊ฒฝํ
- ํฅํ
- web dyno ์๋ app์ผ๋ก ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ?
- ์ฐธ๊ณ
- google chart
- ์?
- ๋ค์ํ ์์ , ์์ธํ ๋ฌธ์ (chart documentation - linechart)
- ๊ตฌ๊ธ์ด ๋ง๋ค์์ผ๋๊น ๋ค์ํ ๊ณ ๋ ค๊ฐ ๋ฏธ๋ฆฌ ๋ผ์์ ๊ฒ์ด๋ผ๋ ๋ฏฟ..์..
- ์ฌํํ ์ฐจํธ๋ฅผ ์งํฅํ๋ ๊ฒ ๊ฐ์๋ณด์์
- ํฅํ ๋น๊ต ์ฐจํธ ํํ ์ถ๊ฐ ํ์ : google finance - ๋น๊ต ์ฐจํธ
- ์?
Promise, async await๋ฑ ES6์ด์ ๋ฌธ๋ฒ๋ค์ ES5 polyfill๊ณผ ์ฑ๋ฅ ์ธก์ โ
- Promise์ async await์ ES5์์ ์ด๋ป๊ฒ ๋ฐ๋๊น?
- Polyfills might slow down code
- Polyfills: everything you ever wanted to know, or maybe a bit less
git alias๋ฅผ ์ด์ฉํ ๋น ๋ฅธ ํซํฝ์ค ๋ธ๋์น ์์ฑ ๋ฐ package.json, package-lock.json ๋ฒ์ ์ ๋ฐ์ดํธ โ
[alias]
hf = "!function hf(){ git checkout master && v=$(cat package.json | grep -m 1 version | sed 's/[^0-9.]//g'); p=${v##*.}; uP=$((p+1)); mV=${v%.*}.$uP; sed -i '' 's/\"version\": \"'$v'\"/\"version\": \"'$mV'\"/g' package*.json; git checkout -b hotfix/$mV;}; hf"
- ์ฌ๋ด์์ ๋ฐ๋ณต์ ์ผ๋ก ์ฌ์ฉํ๋ hotfix ๋ธ๋์น ์์ฑ ๋ฐ package.json ๋ฒ์ ์์ ์ ์คํฌ๋ฆฝํธํ
์ฐธ๊ณ โ
vite + vue github pages์ ๋ฐฐํฌํ๊ธฐ โ
multiline truncate + with more
text โ
์๋ ์ ๋ ฅ input Vue ์ปดํฌ๋ํธ ๋ง๋ค๊ธฐ โ
- input event ํ์ฉ
- DOM์ ์ง์ ์ ๊ทผ, ๊ฐ์ด ๋ณ๊ฒฝ๋ ํ ๋ฐ์ํ๋ input ์ด๋ฒคํธ์์ ๋ณ๊ฒฝ๋ ๊ฐ์ ๋ฎ์ด์ฃผ๋ ๋ฐฉ์
- ์ค์ ๋ฐ์ดํฐ, ๋ณด์ฌ์ง๋ ๊ฐ 2๊ฐ์ง ์ํ๋ฅผ ์ ์
checklist โ
- [ ] ์ ๋ ฅ๋์ด ์๋ ๊ฐ์ ์ง์ธ ์ ์๋ค.
- [ ] 0์ผ๋ก ์์ํ์ง ์๋ ์ซ์, ๋น ๊ฐ๋ง ์ ๋ ฅ ๊ฐ๋ฅํ๋ค.
- [ ] ๋ณ๊ฒฝ ์ค์๋ ๋ฐ์ดํฐ์ ๋ฐ์๋์ง ์๋๋ค.
- [ ] focus๊ฐ ๋ฒ์ด๋ ๋ ๋ฐ์ดํฐ์ ๋ฐ์๋๋ค.
- [ ] ์ต๋ ๊ตฌ๋งค ์๋์ ์ด๊ณผํ ๊ฒฝ์ฐ, ์ต์ ๊ตฌ๋งค ์๋ ๋ฏธ๋ง์ธ ๊ฒฝ์ฐ tooltip message ๋ฅผ ๋์ฐ๋๋ก ํ๋ค.
- [ ] ์ต๋ ๊ตฌ๋งค ์๋์ ์ด๊ณผํ ๊ฒฝ์ฐ focus๋ฅผ ๋ฒ์ด๋ ๋ ์ต๋ ๊ตฌ๋งค ์๋์ผ๋ก ๋ณ๊ฒฝ๋๋ค.
- [ ] ์ต์ ๊ตฌ๋งค ์๋ ๋ฏธ๋ง์ธ ๊ฒฝ์ฐ focus๋ฅผ ๋ฒ์ด๋ ๋ ์ต์ ๊ตฌ๋งค ์๋์ผ๋ก ๋ณ๊ฒฝ๋๋ค.
์ฐธ๊ณ โ
- https://maxkim-j.github.io/posts/keyboard-input
- https://developer.mozilla.org/en-US/docs/Web/API/Document/keydown_event#ignoring_keydown_during_ime_composition
strapi aws์ ๊ตฌ์ฑํ๊ธฐ โ
ec2, postgres rds, s3 bucket
mix-blend-mode ์์ฑ ์ฌ์ฉํ๊ธฐ โ
svg์ gradient ์์ ์ ์ฉํ๊ธฐ โ
Vue 3 ํ๋ก๋์ ์ ์ฉ๊ธฐ โ
AWS Lambda + Puppteeer (with Serverless Framework)๋ก ์ฃผ๊ธฐ์ ์ธ Scrapingํ๊ธฐ โ
chrome-aws-lambda๋ก chrome binary ํ์ฌ
puppeteer-core๋ฅผ ์ฌ์ฉํด lambda ์ฉ๋ ์ ํ์ ํผํจ
serverless-offline plugin์ผ๋ก ๋ก์ปฌ์์ ํ ์คํธ, ๋ก์ปฌ ํ ์คํธ๋ฅผ ์ํด puppeteer ์ฌ์ฉ, puppeteer๋ฅผ devDependencies๋ก ์ค์น
[Node.js] serverless computing with AWS Lambda (feat.puppeteer)
Flexible Environment Variable Support for AWS Lambda - Serverless Framework V1.2
serverless-managing-environment-variables-efficiently-with-stages-part-1
How to deploy fastify server to fly.io (fly.io์ fastify ์๋ฒ ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ) โ
follow the instructions โ
- install flyctl
curl -L https://fly.io/install.sh | sh
or (Mac OS)
brew install flyctl
- create or login to fly.io account
fly auth signup
or
fly auth login
- launch
flyctl launch
you can choose app name, region.
? Choose an app name (leave blank to generate one): [your-app-name]
automatically selected personal organization: [your-username]
? Choose a region for deployment: [Use arrows to move, type to filter]
Ashburn, Virginia (US) (iad)
Johannesburg, South Africa (jnb)
Los Angeles, California (US) (lax)
London, United Kingdom (lhr)
Chennai (Madras), India (maa)
Madrid, Spain (mad)
Miami, Florida (US) (mia)
> Tokyo, Japan (nrt)
Chicago, Illinois (US) (ord)
Bucharest, Romania (otp)
? Would you like to set up a Postgresql database now? No
? Would you like to set up an Upstash Redis database now? No
? Would you like to deploy now? No
โจ ready to deploy
deploy โ
- (optional) define node version in
fly.toml
[build]
[build.args]
PHP_VERSION = "8.1"
NODE_VERSION = "14"
- check host and port
https://fly.io/docs/getting-started/troubleshooting/#host-checking
The problem is that no one else can talk to the localhost so although the app may have the right port, it's on the wrong network interface. The Rule of thumb to fix this is to get the app to open up port 8080 on the IP address 0.0.0.0. That's anyone outside the system
...
const start = async () => {
try {
await fastify.listen(8080,"0.0.0.0")
...
- ๐ deploy
flyctl deploy
์ฑ โ
- TLS ๊ตฌํ์ผ๋ก ๋ฐฐ์ฐ๋ ์ํธํ (from)
- ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ๋ก ๋ฐฐ์ฐ๋ ๊ฐ์ฒด ์งํฅ ์ค๊ณ์ ์ค์ฒ (from ํ์ฌ๋)
- ์์ ๋ค์ด์ค๋ ํจ์ํ ์ฝ๋ฉ (from ํ ์ค์ ํ๋ก ํธ์๋)