20 POSTS

Page 16

  • #typescript#nodejs

    ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋กœ koa ๋ฏธ๋“ค์›จ์–ด ๋งŒ๋“ค๊ธฐ

    koa ๋ฏธ๋“ค์›จ์–ด ๋งŒ๋“ค๊ธฐ

    1๋ถ„
  • #nodejs#websocket

    Socket.IO ๊ณต๋ถ€ํ•˜๊ธฐ (1)

    ## WebSocket ์›น์€ ์ „ํ˜•์ ์œผ๋กœ HTTP ์š”์ฒญ์— ๋Œ€ํ•œ HTTP ์‘๋‹ต์„ ๋ฐ›๊ณ , ์ด์— ๋”ฐ๋ผ ๋ธŒ๋ผ์šฐ์ € ํ™”๋ฉด์„ ์ƒˆ๋กœ ๋งŒ๋“œ๋Š” ๋ฐฉ์‹์ด๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐ์ดํ„ฐ ํ†ต์‹ ์€ ์š”์ฒญ๊ณผ ์‘๋‹ต์ด ํ•œ ์Œ์œผ๋กœ ๋ฌถ์—ฌ์™”๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์›น ํŽ˜์ด์ง€๊ฐ€ ๋ณด๋‹ค ์‰ฝ๊ฒŒ ์ƒํ˜ธ์ž‘์šฉ์„ ํ•˜๋ ค๋ฉด, ๋ธŒ๋ผ์šฐ์ €์™€ ์›น ์‚ฌ์ด์— ์ด๋Ÿฌํ•œ ์š”์ฒญ - ์‘๋‹ต ๋ฐฉ์‹์ด ์•„๋‹Œ ๋” ์ž์œ ๋กœ์šด ์–‘๋ฐฉํ–ฅ ๋ฉ”์‹œ์ง€ ์†ก์ˆ˜์‹  ๊ธฐ์ˆ ์ด ํ•„์š”ํ•˜๋‹ค. ์ด๋Ÿฌํ•œ ...

    4๋ถ„
  • #python#backend

    [Python] Send ncloud sms message

    ๋„ค์ด๋ฒ„ ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ์˜ ์„œ๋น„์Šค ์ค‘ ํ•˜๋‚˜์ธ https://www.ncloud.com/product/applicationService/sens ๋กœ SMS๋ฅผ ๋ฐœ์†กํ•˜๋Š” ์˜ˆ์ œ. ncloud์„œ๋น„์Šค๋ฅผ ๋‹ค ์จ๋ณธ๊ฑด ์•„๋‹ˆ์ง€๋งŒ, `make_signature`๋Š” ์ „ ์„œ๋น„์Šค์— ๋‹ค ๋˜‘๊ฐ™์ด ์“ธ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์€ ๊ธฐ๋ถ„์ด๋‹ค. ```python import time import req...

    1๋ถ„
  • #javascript#regex

    Javascript Regex ์ˆซ์ž๋ฅผ comma์™€ ํ•จ๊ป˜ Formatting ํ•˜๊ธฐ

    regex๋ฅผ ํ™œ์šฉํ•ด์„œ ์ˆซ์ž๋ฅผ ๋ณด๊ธฐ์ข‹๊ฒŒ formatting์„ ํ•ด๋ณด์ž.

    2๋ถ„
  • #nextjs#react#frontend

    NextJS 1. Page & Route

    ์š”์ฆ˜ ๋ฆฌ์•กํŠธ๋ฅผ ์“ฐ๋Š” ๋งŽ์€ ํ”„๋กœ์ ํŠธ์—์„œ, SSR์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด [nextjs](https://nextjs.org/)๋ฅผ ์“ฐ๊ณ  ์žˆ๋‹ค. ์ดˆ๊ธฐ ๋กœ๋”ฉ ์†๋„๋‚˜, SEO ์ง€์› ์ด์Šˆ ๋“ฑ ๋“ฑ ๋•Œ๋ฌธ์— ์•„๋ฌด๋ž˜๋„ SPA๋Š” ์š”์ฆ˜ ํŠธ๋ Œ๋“œ์—์„œ ๋งŽ์ด ๋ฐ€๋ฆฐ ๊ธฐ๋ถ„์ด๋‹ค. ๋ฌผ๋ก  [razzle](https://github.com/jaredpalmer/razzle) ์„ ์“ฐ๊ฑฐ๋‚˜ custom ser...

    8๋ถ„
  • #nextjs#frontend

    NextJS 2. Data Fetching

    [nextjs์˜ ๊ณต์‹ ๋ฌธ์„œ](https://nextjs.org/docs/basic-features/data-fetching)๋ฅผ ๋ณด๊ณ  ์š”์•ฝํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ```toc tight: true, from-heading: 1 to-heading: 2 ``` ## 1. getInitialProps Nextjs 9.3 ์ด์ „์—๋Š” `getInitialProps` ๋ฐ–์—...

    13๋ถ„
  • #javascript

    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ปค๋ง๊ณผ ํด๋กœ์ ธ

    ## ์ปค๋ง [์ด ๊ธ€](https://www.sitepoint.com/currying-in-functional-javascript/) ์— ์ž˜ ์ •๋ฆฌ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. Currying์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ธ์ž๋ฅผ ๊ฐ€์ง„ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ ํ•  ๊ฒฝ์šฐ, ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์ˆ˜๋ณด๋‹ค ์ ์€ ์ˆ˜์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ธ์ž๋กœ ๋ฐ›์œผ๋ฉด ๋ˆ„๋ฝ๋œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ธ์ž๋กœ ๋ฐ›๋Š” ๊ธฐ๋ฒ•์„ ๋งํ•œ๋‹ค. ์ฆ‰ ์ปค๋ง์€ ํ•จ์ˆ˜ ํ•˜๋‚˜๊ฐ€ n๊ฐœ...

    2๋ถ„
  • #javascript#web-performance

    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ http ์š”์ฒญํ•˜๊ธฐ - fetch์— ๋Œ€ํ•œ ๊ณ ์ฐฐ

    `toc tight: true, from-heading: 2 to-heading: 3 ` ## 1. ์„œ๋ก  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ http ์š”์ฒญ์„ ํ•˜๋Š” ๊ฒƒ์€ ์ด์ œ ๋น„์ผ๋น„์žฌํ•œ ์ผ์ด ๋˜์—ˆ๋‹ค. ์„œ๋ฒ„์—์„œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์„œ static ํ•œ html์„ ๋งŒ๋“ค์–ด์„œ ๋ณด์—ฌ์ฃผ๊ณ  ์žˆ๋Š” ์›นํŽ˜์ด์ง€๋Š” ์•„๋งˆ ์ฐพ๊ธฐ ์–ด๋ ค์šธ ๊ฒƒ์ด๋‹ค. ๋งจ ์ฒ˜์Œ ์›น์„ ๋ฐฐ์šธ ๋•Œ, jquery์˜ ajax ...

    6๋ถ„
  • #react#javascript#web-performance

    React count down์—์„œ ๋ฐฐ์šด event-emitter ์™€ requestAnimationFrame

    # ๋ฆฌ์•กํŠธ์—์„œ ์นด์šดํŠธ ๋‹ค์šด์„ ๋งŒ๋“ค๋ฉฐ ๋ฐฐ์šด ๊ฒƒ๋“ค ๋ฆฌ์•กํŠธ์—์„œ ์นด์šดํŠธ ๋‹ค์šด์„ ๋งŒ๋“ ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž. ๊ฐ€์žฅ ๋จผ์ € ์ƒ๊ฐ๋‚˜๋Š”๋Œ€๋กœ, ๋น ๋ฅด๊ฒŒ ๊ตฌํ˜„ํ•œ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๋А๋‚Œ์ด ๋  ๊ฒƒ์ด๋‹ค. https://codepen.io/yceffort/pen/BayPyNe ํ•˜์ง€๋งŒ ์ด ์ฝ”๋“œ๋Š” ํ•œ๊ฐ€์ง€ ๋ฌธ์ œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ## setInterval, setTimeout `setInte...

    6๋ถ„
  • #github#career

    2020๋…„, ๋งค์ผ github์— contribution ํ•˜๊ธฐ

    ## ๋ธ”๋กœ๊ทธ์˜ ์„ฑ์žฅ 2018๋…„ 5์›” 1์ผ์— ๋ธ”๋กœ๊ทธ๋ฅผ ์‹œ์ž‘ํ•œ ์ด๋ก€๋กœ ํ—›์†Œ๋ฆฌ๋ฅผ ์ง€๊ป„์ด๋Š” ๋ธ”๋กœ๊ทธ์—์„œ, ์ œ๋ฒ• ์ด์‚ฌ๋žŒ ์ €์‚ฌ๋žŒ ์ฐพ์•„์˜ค๋Š” ๋ธ”๋กœ๊ทธ๋กœ ์„ฑ์žฅํ–ˆ๋‹ค. ![history1](./images/history1.png) ![history2](./images/history2.png) ๊พธ์ค€ํ•œ ๋ธ”๋กœ๊ทธ ๋ป˜ ๊ธ€๊ณผ ํšŒ์‚ฌ์—์„œ ์ผํ•˜๋Š” ๊ฒƒ ๋•๋ถ„์— github contributi...

    2๋ถ„
  • #security#browser#backend

    Chrome Samesite ์ฟ ํ‚ค ์ •์ฑ…

    # ๋ฌธ์ œ์˜ ์‹œ์ž‘ ์ง€๋‚œ ์ฃผ๋ง, ์—„์ฒญ๋‚˜๊ฒŒ ๊ธ‰ํ•˜๊ฒŒ ๋น ๋ฅธ ์†๋„๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ heroku์— ์˜ฌ๋ฆด ์ผ์ด ์žˆ์—ˆ๋‹ค. DB๋„ ์ƒˆ๋กœ๋งŒ๋“ค์–ด์•ผํ•˜๊ณ , ๋กœ๊ทธ์ธ๋„ ํ•„์š”ํ•œ ์‚ฌ์ดํŠธ๋ผ DB๋Š” Heroku์˜ Clean DB๋ฅผ, ๋กœ๊ทธ์ธ์€ [google sign-in for websites](https://developers.google.com/identity/sign-in/web)์„ ์‚ฌ์šฉํ•˜...

    9๋ถ„
  • #git#devops

    ๋จธ์ง€๋œ ๋ธŒ๋žœ์น˜๋ฅผ ์‚ญ์ œํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ

    ์ด๋ฏธ ๋จธ์ง€๋œ ๋ธŒ๋žœ์น˜๋ฅผ ๋กœ์ปฌ์—์„œ ์‚ญ์ œํ•˜๊ธฐ

    1๋ถ„
  • #gatsby#frontend

    ๋ธ”๋กœ๊ทธ ๊ฐœํŽธํ–ˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜Ž

    ์ฃผ๋ง์— ์ง‘๊ตฌ์„์— ํ˜ผ์ž ์˜ค๋ž˜์žˆ์„ ์ผ์ด ์žˆ์–ด์„œ, ์ƒ๊ฐ๋‚œ ๊น€์— ๋ธ”๋กœ๊ทธ๋ฅผ ๊ฐœํŽธํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ „์—๋Š” hexo ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ๋ธ”๋กœ๊ทธ๋ฅผ ์ž‘์—…ํ–ˆ๋Š”๋ฐ, hexo ์ƒํƒœ๊ณ„๊ฐ€ ๊ด€๋ฆฌ๊ฐ€ ์ž˜ ์•ˆ๋˜๊ณ  ์žˆ๋Š” ๊ฑด์ง€ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด๋‚˜ ๊ธฐ๋Šฅ๋“ค์ด ์ œ๋Œ€๋กœ ๋™์ž‘์„ ์•ˆํ•˜๋”๊ตฐ์š”. wordpress -> ??? -> github pages -> hexo -> gatsby ๊นŒ์ง€ ๋ฒŒ์จ ๊ฐœํŽธ๋งŒ ํ•œ ๋‹ค์„ฏ๋ฒˆ ์ฏค...

    3๋ถ„
  • #javascript#browser

    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์ด๋ฒคํŠธ๋ฃจํ”„, ํƒœ์Šคํฌ, ๊ทธ๋ฆฌ๊ณ  ๋งˆ์ดํฌ๋กœ ํƒœ์Šคํฌ

    ## ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋‹จ์ผ ์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜์˜ ์–ธ์–ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” '๋‹จ์ผ ์Šค๋ ˆ๋“œ' ๊ธฐ๋ฐ˜์˜ ์–ธ์–ด๋‹ค. ์ฆ‰, ์Šค๋ ˆ๋“œ๊ฐ€ ํ•˜๋‚˜์ด๊ธฐ ๋•Œ๋ฌธ์— ๋™์‹œ์— ํ•˜๋‚˜์˜ ์ž‘์—…๋งŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” ์›น์„ ๊ณฐ๊ณฐํžˆ ์ƒ๊ฐํ•ด๋ณด๋ฉด ๋™์‹œ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ชจ์Šต์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์Šค๋ ˆ๋“œ๊ฐ€ ํ•˜๋‚˜์ธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋™์‹œ์„ฑ์„ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ• ๊นŒ? ๋จผ์ € ๋ธŒ๋ผ์šฐ์ € ๊ตฌ๋™ํ™˜๊ฒฝ์„ ์‚ดํŽด๋ณด...

    5๋ถ„
  • #ai#javascript#algorithm

    2020๋…„ ๋ชฉํ‘œ

    Don't do anything boring ## Tensorflow JS ์ค‘์š”๋„: โ˜…โ˜…โ˜…โ˜…โ˜… ๋‚œ์ด๋„: โ˜…โ˜…โ˜…โ˜…โ˜… AI๊ฐ€ ํ•˜๊ณ  ์‹ถ์–ด์š” ์„ ์ƒ๋‹˜... tensorflowjs ๋ฅผ ํŠœํ† ๋ฆฌ์–ผ๋ถ€ํ„ฐ ๋”ฐ๋ผํ•˜๋ฉด์„œ ๋ฐฐ์›Œ๋ณด์ž. ## ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐ•์˜ [๋ฐฑ์ค€๊ฐ•์˜](https://code.plus/bundle/8) ์ด์ œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ •๋ณตํ•  ๋•Œ๊ฐ€ ๋˜์—ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ ํŒŒ์ด์ฌ์œผ...

    2๋ถ„
  • #git#devops

    Github์„ ์•„๋ฆ„๋‹ต๊ฒŒ ๊ด€๋ฆฌํ•˜๊ธฐ

    ## Commit Message [์ข‹์€ git commit ๋ฉ”์‹œ์ง€๋ฅผ ์œ„ํ•œ ์˜์–ด์‚ฌ์ „](https://blog.ull.im/engineering/2019/03/10/logs-on-git.html) [์ข‹์€ git ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ 7๊ฐ€์ง€ ์•ฝ์†](https://meetup.toast.com/posts/106) ### ์š”์•ฝ Single Line ...

    3๋ถ„
  • #react

    ๋ฆฌ์•กํŠธ ํ…์ŠคํŠธ ํ•˜์ด๋ผ์ดํŠธ ๋งŒ๋“ค๊ธฐ

    ๋ฆฌ์•กํŠธ์—์„œ ํ…์ŠคํŠธ ๊ฐ•์กฐํ•˜๋Š” ๋ฐฉ๋ฒ•

    4๋ถ„
  • #typescript#web-performance

    typescript debounce

    > Creates a debounced function that delays invoking func until after wait milliseconds have elapsed since the last time the debounced function was invoked. The debounced function comes with a cancel m...

    2๋ถ„
  • #javascript#browser

    ๋ธŒ๋ผ์šฐ์ € ํžˆ์Šคํ† ๋ฆฌ ์กฐ์ž‘

    ๋ธŒ๋ผ์šฐ์ € ํžˆ์Šคํ† ๋ฆฌ ์กฐ์ž‘ํ•˜๊ธฐ

    4๋ถ„
  • #typescript

    ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ œ๋„ค๋ฆญ

    ## ์ œ๋„ค๋ฆญ์ด๋ž€ ์ œ๋„ค๋ฆญ์€ ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ํƒ€์ž…์„ ์™ธ๋ถ€์—์„œ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์–ด๋–ค ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์“ธ์ง€๋ฅผ, ํด๋ž˜์Šค ์„ ์–ธ๋ถ€๊ฐ€ ์•„๋‹ˆ๋ผ ์™ธ๋ถ€์—์„œ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ผ๋‹จ ์ž๋ฐ” ์ฝ”๋“œ๋กœ ํ•œ๋ฒˆ ์‚ดํŽด๋ณด์ž. ```java class Person<T>{ public T name; } Person<String> p1 = new Person<...

    4๋ถ„