Before / After ์ด๋ฏธ์ง€ ์Šฌ๋ผ์ด๋”

Before / After ์ด๋ฏธ์ง€ ์Šฌ๋ผ์ด๋”

Github ์š”์ฆ˜ ๊ฐ„๊ฐ„์ด ํฌํ† ์ƒต๋„ ๋งŒ์ง€์ž‘๊ฑฐ๋ฆฌ๋Š”๋ฐ, ๋ณด์ • ์—ด์‹ฌํžˆ ๋๋‚ด๋ฉด ์›๋ณธ์ด๋ž‘ ๋น„๊ตํ•ด๋ณด๋Š” ์žฌ๋ฏธ๊ฐ€ ์ ์ ํ•˜๋”๋ผ๊ณ ์š”. ๊ทธ๋Ÿฌ๋‹ค ์ด๋ฏธ์ง€ ๋น„๊ต์—” ์Šฌ๋ผ์ด๋”๋งŒ ํ•œ ๊ฒŒ ์—†๋‹จ ์ƒ๊ฐ์—, ์Šฌ๋ผ์ด๋”๋ฅผ ํ•œ ๋ฒˆ ์ œ์ž‘ํ•ด๋ดค์Šต๋‹ˆ๋‹ค.

JavaScriptCSS
์›น ์‚ฌ์ดํŠธ๋ฅผ PWA๋กœ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ

์›น ์‚ฌ์ดํŠธ๋ฅผ PWA๋กœ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ

PWA(Progressive Web App)๋ž€ ์›น์€ ๋†’์€ ์ ‘๊ทผ์„ฑ์„ ๊ฐ€์ง„ ๋งค๋ ฅ์ ์ธ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.ํ•œ ๋ฒˆ์˜ ์ฝ”๋”ฉ์œผ๋กœ ๊ฑฐ์˜ ๋ชจ๋“  ๊ธฐ๊ธฐ์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ณ , ๊ฒ€์ƒ‰์ด๋‚˜ ์ฃผ์†Œ์˜ ๊ณต์œ ๋กœ ๋ˆ„๊ตฌ๋‚˜ ์–ด๋””์—์„œ๋‚˜ ์ ‘์†ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณ„๋„์˜ ์—…๋ฐ์ดํŠธ ๋˜ํ•œ ํ•„์š”์—†์ด ์ ‘์†ํ•  ๋•Œ๋งˆ๋‹ค ์ตœ์‹  ์ƒํƒœ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์œ ์ €๋ฅผ ๋ฌถ์–ด๋‘๊ธฐ ํž˜๋“ค๋‹จ ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.์•ฑ์„ ์„ค์น˜ํ•˜๋ฉด ๋‹จ์ˆœํžˆ ์•„์ด์ฝ˜ ํ•œ ๋ฒˆ ํด๋ฆญํ•˜๋ฉด ์•ฑ์„ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ์ง€๋งŒ, ์›น์€ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ผœ๊ณ  ์‚ฌ์ดํŠธ์— ์ ‘์†ํ•˜๋Š”

JavaScriptPWA
ํ‘ธ์‹œ ์•Œ๋ฆผ ๊ตฌ๋… ์žฌ์ถ”๊ฐ€!

ํ‘ธ์‹œ ์•Œ๋ฆผ ๊ตฌ๋… ์žฌ์ถ”๊ฐ€!

6๊ฐœ์›” ์ „์— One Signal๋กœ ์ถ”๊ฐ€ํ–ˆ๋˜ ํ‘ธ์‹œ ์•Œ๋ฆผ ๊ตฌ๋…์„ ์ง์ ‘ ๊ตฌํ˜„ํ•ด๋ดค์Šต๋‹ˆ๋‹ค! ๊ตฌํ˜„์„ ์œ„ํ•ด ์•Œ๋ฆผ์„ ๋ณด๋‚ด๋Š” ์ž‘์€ ์„œ๋ฒ„๋ฅผ ํ•˜๋‚˜ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. Node.js๋กœ https ์„œ๋ฒ„ ๋งŒ๋“ค๋ ค๋‹ค ๊ณ ์ƒ๋งŒ ์‹ค์ปท ํ•˜๊ณ  ์‹คํŒจํ–ˆ๋Š”๋ฐ, ssl ์ธ์ฆ์€ Nginx๊ฐ€ ํ•˜๊ณ  proxy_pass๋กœ Node.js ์„œ๋ฒ„๋กœ ๋„˜๊ฒจ์ฃผ๋‹ˆ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋˜๋”๋ผ๊ณ ์š”.MongoDB๋„ ์ฒ˜์Œ ์จ๋ด…๋‹ˆ๋‹ค๋งŒ, ๊ตฌ๋… ์ •๋ณด๋„ JSON ํ˜•์‹์ด๊ณ , Node.js๋กœ ์„œ๋ฒ„๋ฅผ ๋Œ๋ฆฌ๋‹ˆ ์ œ์ผ ๋งž๋Š” DB ๊ฐ™์•„ ๊ณจ๋ž์Šต๋‹ˆ๋‹ค. ๋“ค์–ด๊ฐ€๊ธฐ ์ „์—, ๋Œ“๊ธ€ ์•Œ๋ฆผ ๊ตฌํ˜„์„

ํ‘ธ์‹œ ์•Œ๋ฆผ๊ตฌ๋…์ œ์ž‘์ผ์ง€
Project SPA

Project SPA

ํ‹ฐ์Šคํ† ๋ฆฌ์—์„œ ์›Œ๋“œํ”„๋ ˆ์Šค๋กœ ๋„˜์–ด์˜ฌ ๋•Œ๋„ ์ด๋ ‡๊ฒŒ ํž˜๋“ค์ง„ ์•Š์•˜๋˜ ๊ฒƒ ๊ฐ™์€๋ฐ, ์ด๋ฒˆ ๋Œ€๊ทœ๋ชจ ์—…๋ฐ์ดํŠธ๋Š” ์ •๋ง ์ง„์ด ๋‹ค ๋น ์ง€๋„ค์š”. ์ด๋ฒˆ ๋Œ€๊ทœ๋ชจ ์‚ฝ์งˆ์˜ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค.์ด์ œ ์ƒˆ ํƒญ์—์„œ ์—ด๋ฆฌ๋Š” ๋งํฌ๊ฐ€ ์•„๋‹ˆ๋ฉด DOM ๋‚ด์šฉ๋งŒ ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค. ๋˜๊ฒŒ ํž˜๋“ค์—ˆ๋Š”๋ฐ ํ•œ ์ค„๋กœ ์ •๋ฆฌ๋˜๋‹ˆ๊นŒ ์Šฌํ”„๋„ค์š”. SPA ๊นƒํ—ˆ๋ธŒ, ์œ ํŠœ๋ธŒ ๋“ฑ์˜ ์›น์‚ฌ์ดํŠธ๋‚˜ Ghost.js, Gatsby.js ๋“ฑ์œผ๋กœ ๋งŒ๋“  ์›น์‚ฌ์ดํŠธ๋ฅผ ๋ณด๋ฉฐ ๋™๊ฒฝํ•˜๋˜ ๊ฒŒ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์—์„œ ๋„คํŠธ์›Œํฌ ํƒญ ์ผœ๋‘๋ฉด ์ €๋ ‡๊ฒŒ ์ฐจ๊ณก์ฐจ๊ณก ๋‚ด์šฉ์ด

์›Œ๋“œํ”„๋ ˆ์ŠคSPA์ œ์ž‘์ผ์ง€
200719 ๋ธ”๋กœ๊ทธ ์ œ์ž‘์ผ์ง€ ๋ฐ ์•ž์œผ๋กœ ๋‚˜์•„๊ฐˆ ๋ฐฉํ–ฅ

200719 ๋ธ”๋กœ๊ทธ ์ œ์ž‘์ผ์ง€ ๋ฐ ์•ž์œผ๋กœ ๋‚˜์•„๊ฐˆ ๋ฐฉํ–ฅ

์›€์งค ์ฒจ๋ถ€ ์‹œ mp4๋กœ ๋ณ€ํ™˜ ffmpeg๋ฅผ ํ™œ์šฉํ•ด gif ์ด๋ฏธ์ง€๋ฅผ ์˜ฌ๋ฆฌ์‹œ๋ฉด mp4๋กœ ์ „ํ™˜๋˜๊ฒŒ ํ•ด๋’€์Šต๋‹ˆ๋‹ค.์˜ˆ์ „๋ถ€ํ„ฐ gif๋Š” ๋‚ก๊ณ  ๋น„ํšจ์œจ์ ์ธ ํŒŒ์ผ์ด๋ผ๊ณ  ์ฃผ์žฅํ•ด์™”๋Š”๋ฐ, ์ •์ž‘ ์ œ ์›น์‚ฌ์ดํŠธ์—์„  gif ํŒŒ์ผ์„ ์ฒจ๋ถ€ํ•˜๋ฉด gif ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋˜ ์•„์ด๋Ÿฌ๋‹ˆํ•œ ์ผ์ด ์ด์   ๋ฒŒ์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ffmpeg๋ฅผ ์ฒ˜์Œ ํ™œ์šฉํ•ด๋ด์„œ ์ฒ˜์Œ์—” ๋ชจ๋ฐ”์ผ์—์„œ ๋น„๋””์˜ค๊ฐ€ ์žฌ์ƒ ์•ˆ ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค๋งŒ, ์ด์   Chrome(android + macOS + windows), Firefox(windows), Safari(iOS, macOS), Internet Explorer ๋“ฑ์˜

์›Œ๋“œํ”„๋ ˆ์Šค์ œ์ž‘์ผ์ง€
[์›Œ๋“œํ”„๋ ˆ์Šค] ํ•œ๊ธ€์ด ์—†๋Š” ๋Œ“๊ธ€ ์ž๋™์œผ๋กœ ์‚ญ์ œํ•˜๊ธฐ

[์›Œ๋“œํ”„๋ ˆ์Šค] ํ•œ๊ธ€์ด ์—†๋Š” ๋Œ“๊ธ€ ์ž๋™์œผ๋กœ ์‚ญ์ œํ•˜๊ธฐ

์›Œ๋“œํ”„๋ ˆ์Šค ๋ธ”๋กœ๊ทธ๋ฅผ ์šด์˜ํ•˜๋‹ค ๋ณด๋ฉด ํ•˜๋ฃจ์— 10๊ฐœ๊ฐ€ ๋„˜๊ฒŒ๋„ ์Œ“์ด๋Š” ์ŠคํŒธ ๋Œ“๊ธ€ ๋•Œ๋ฌธ์— ๊ณจ๋จธ๋ฆฌ๋ฅผ ์•“๋Š” ๊ฒŒ ํ•œ๋‘ ๋ฒˆ์ด ์•„๋‹™๋‹ˆ๋‹ค.๋ธ”๋ž™๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•ด ํŠน์ • ๋‹จ์–ด๋“ค๋งŒ ์ฐจ๋‹จํ•ด๋‘ฌ๋„ 9ํ• ์€ ์ฐจ๋‹จํ•˜๊ธด ํ•ฉ๋‹ˆ๋‹ค๋งŒ, ๊ฐ€๋” ๊ดด์ƒํ•œ ๋‚ด์šฉ์œผ๋กœ ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ๋ฅผ ํ”ผํ•˜๋Š” ๋Œ“๊ธ€์ด ์žˆ์Šต๋‹ˆ๋‹ค. Akismet ๋“ฑ์˜ ์ŠคํŒธ ์ฐจ๋‹จ ํ”Œ๋Ÿฌ๊ทธ์ธ๋„ ๊ดœ์ฐฎ์€ ์„ ํƒ์ง€์ผ ์ˆ˜ ์žˆ๊ฒ ์ง€๋งŒ, ํ•œ๊ธ€๋กœ ๋ธ”๋กœ๊ทธ๋ฅผ ์šด์˜ํ•˜๋ฉด ๊ตณ์ด ๋ฌด๊ฑฐ์šด ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ถ™์—ฌ๋‹ค ์ŠคํŒธ์„ ์ฐจ๋‹จํ•  ํ•„์š”๊ฐ€ ์žˆ๋‚˜ ์‹ถ์Šต๋‹ˆ๋‹ค.๊ธ€ ์ž‘์„ฑ์ž๋„ ํ•œ๊ธ€์„ ์“ฐ๋‹ˆ,

์›Œ๋“œํ”„๋ ˆ์ŠคPHP
[ํ‹ฐ์Šคํ† ๋ฆฌ] ๋Œ“๊ธ€์— ๋งํฌ ๋ฐ ์ด๋ฏธ์ง€ ์ถ”๊ฐ€ํ•˜๊ธฐ

[ํ‹ฐ์Šคํ† ๋ฆฌ] ๋Œ“๊ธ€์— ๋งํฌ ๋ฐ ์ด๋ฏธ์ง€ ์ถ”๊ฐ€ํ•˜๊ธฐ

์—…๋ฐ์ดํŠธ 2020.07.03 - innerHTML์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋Œ“๊ธ€ ๋‚ด์šฉ์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ํ…์ŠคํŠธ๋ฐ–์— ์ ์„ ์ˆ˜ ์—†๋Š” ํ‹ฐ์Šคํ† ๋ฆฌ ๋Œ“๊ธ€์— ๋งํฌ, ์ด๋ฏธ์ง€, ๋น„๋””์˜ค, ์œ ํŠœ๋ธŒ ๋“ฑ์„ ์ถ”๊ฐ€ํ•ด ํ™”๋ คํ•˜๊ฒŒ ๊พธ๋ฏธ๋Š” ์Šคํฌ๋ฆฝํŠธ์ž…๋‹ˆ๋‹ค. HTML ์ˆ˜์ • <s_rp_container> ๋ฐ”๋กœ ์•„๋ž˜์— ์žˆ๋Š” ์š”์†Œ์— id๊ฐ€ ์—†๋‹ค๋ฉด ํ•˜๋‚˜ ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”.๋ฐฉ๋ช…๋ก์—๋„ ์‚ฌ์šฉํ•˜์‹œ๋ ค๋ฉด <s_guest_container> ์•„๋ž˜์— ์žˆ๋Š” ์š”์†Œ์— ๊ฐ™์€ id๋ฅผ ์ถ”๊ฐ€ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. [##_rp_rep_desc_##]์„ ๊ฐ์‹ผ ์š”์†Œ์— class๊ฐ€ ์—†๋‹ค๋ฉด ํ•˜๋‚˜ ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”. ๋Œ“๊ธ€์šฉ๊ณผ ๋‹ต๊ธ€์šฉ 2๊ฐœ๊ฐ€

JavaScriptํ‹ฐ์Šคํ† ๋ฆฌ
์›Œ๋“œํ”„๋ ˆ์Šค ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ ์ฐจ๋‹จ์˜ ํ•„์š”์„ฑ

์›Œ๋“œํ”„๋ ˆ์Šค ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ ์ฐจ๋‹จ์˜ ํ•„์š”์„ฑ

๊ฝค ์˜ˆ์ „์— ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋ฅผ ํŠน์ • IP๋ฅผ ์ œ์™ธํ•˜๊ณค ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋„๋ก ๋ง‰๋Š” ์ž‘์—…์„ ํ–ˆ์—ˆ๋Š”๋ฐ, ์ง‘ ๋ฐ–์—์„  ๋กœ๊ทธ์ธ์ด ๊นŒ๋‹ค๋กญ๋‹จ ์ด์œ ๋กœ ๋‹ค์‹œ ๋ชจ๋“  IP์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฐ”๊ฟ”๋’€์Šต๋‹ˆ๋‹ค.์ตœ๊ทผ ์œ ๋… /admin/login.asp์— ์ ‘๊ทผ์„ ์‹œ๋„ํ•˜๊ฑฐ๋‚˜ xmlrpc.php์— post ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๋กœ๊ทธ๊ฐ€ ๋งŽ์ด ๋ณด์—ฌ, ์ด๊ฒŒ ๊ณผ์—ฐ ๊ดœ์ฐฎ์€ ๊ฑธ๊นŒ ์‹ถ์–ด ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค ๋ชฉ์ ์œผ๋กœ ๋กœ๊ทธ์ธ ์‹คํŒจ ์‹œ ์ œ๊ฒŒ ๋ฉ”์ผ์ด ์˜ค๊ฒŒ ์ž‘์—…ํ•ด๋ดค์Šต๋‹ˆ๋‹ค. function loginFailed() { $ip