Banner

My Tech Blog (ํ”„๋กœ๊ทธ๋ž˜๋ฐ์–ธ์–ด)

โš ๏ธ ๋ฌธ์ œ์Šคํฌ๋กค์„ ๋‚ด๋ฆด ๋•Œ ํ—ค๋”๊ฐ€ ํ™”๋ฉด ์œ„์ชฝ์— ๋‚˜ํƒ€๋‚˜๋„๋ก css์— position: fixed; ์†์„ฑ์„ ์ฃผ์—ˆ๋Š”๋ฐ ๋ณธ๋ฌธ ์ปจํ…์ธ ๊ฐ€ ํ—ค๋” ๋ฐ‘์œผ๋กœ ๋“ค์–ด๊ฐ€์„œ ์ž˜๋ฆฌ๋Š” ๋ฌธ์ œ๐Ÿง ์›์ธheader๊ฐ€ position: fixed๋กœ ์„ค์ •๋˜์–ด ์žˆ์œผ๋ฉด, section์ด ๊ทธ ๊ณต๊ฐ„์„ ์ž๋™์œผ๋กœ ์ธ์‹ํ•˜์ง€ ๋ชปํ•˜๊ณ  ์ตœ์ƒ๋‹จ์— ๋ถ™์–ด ์žˆ๋Š” ์ƒํƒœ๊ฐ€ ๋œ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด, section.visual์— margin-top์ด ์•„๋‹Œ padding-top์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.margin-top์€ ์š”์†Œ์˜ ์™ธ๋ถ€ ๋งˆ์ง„์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด์ง€๋งŒ, padding-top์€ ์š”์†Œ ๋‚ด์—์„œ ์‹ค์ œ ์ฝ˜ํ…์ธ ์˜ ์œ„์น˜๋ฅผ ์กฐ์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ณ ์ •๋œ header์˜ ํฌ๊ธฐ๋ฅผ ๊ณ ๋ คํ•ด์„œ ์š”์†Œ๋ฅผ ์ž๋ฆฌ์— ๋ฐฐ์น˜ํ•œ๋‹ค. โšก ํ•ด๊ฒฐ๋ฒ•header์˜ ๋†’์ด๋งŒํผ margin-top ์†์„ฑ ์ถ”๊ฐ€/* section...
โš ๏ธ ํ—ค๋”๋ฅผ ์œ„์— ๊ณ ์ •ํ•˜๋‹ˆ๊นŒ ์„น์…˜์ด ํ—ค๋” ๋ฐ‘์œผ๋กœ ๋“ค์–ด๊ฐ€์„œ ๊ฐ€๋ ค์ง€๋Š” ๋ฌธ์ œโš ๏ธ ํ–„๋ฒ„๊ฑฐ ๋ฒ„ํŠผ์ด๋ž‘ ๋กœ๊ณ  ๋ถ„๋ฆฌโš ๏ธ ํ–„๋ฒ„๊ฑฐ ๋ฒ„ํŠผ ์•„์ด์ฝ˜ X์ž๋กœ ๋ฐ”๊พธ๊ธฐโš ๏ธ ํ–„๋ฒ„๊ฑฐ ๋ฉ”๋‰ด margin-topโš ๏ธ ํ—ค๋”๋ž‘ ํ–„๋ฒ„๊ฑฐ ๋ฉ”๋‰ด ์•ˆ๊ฒน์น˜๊ฒŒ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑํ• ์ง€ - innerHeader์ด ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ–„๋ฒ„๊ฑฐ ๋ฉ”๋‰ด ๋„“์ด๋งŒํผ ์ด๋™ - ์‚ฌ๋žŒ ์ด๋ฏธ์ง€ ๋ฐฐ๊ฒฝ ์ œ๊ฑฐํ•ด์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋ฐ€๋ฆฌ๋„๋ก - ์‚ฌ๋žŒ ์‹ค๋ฃจ์—ฃ ๋”ฐ์„œ ๋™์ ์œผ๋กœ ์„ ์ด ์ƒ๊ธฐ๊ฒŒ ํ•˜๊ธฐโš ๏ธ Nav ๋ฉ”๋‰ด hover ํšจ๊ณผ ์ˆ˜์ •โš ๏ธ ํ–ฅ์ˆ˜ ์ด๋ฏธ์ง€์— ์ผ€๋Ÿฌ์…€ ์ถ”๊ฐ€ํ•˜๊ธฐ ๋‹ค๋ฅธ ํ–ฅ์ˆ˜๋กœ ์ „ํ™˜๋˜๊ฒŒ ์ผ๋‹จ ๋Œ€์ถฉ ์ ์–ด๋†“๊ณ  ๋‚˜์ค‘์— ์งœ์ง‘๊ธฐ ํ•ด์„œ ๊นƒ readMe์—์„œ ์“ฐ์ž ์˜ค๋Š˜ ํ•œ ๋ถ€๋ถ„ํ”„๋ž‘์Šค์–ด๋กœ "๊ฟˆ์˜ ํ–ฅ์ˆ˜", "๊ฟˆ์˜ ๋ฌผ"์„ ๋”ฐ์„œ  EAU DE REVE(์˜ค ๋“œ ๋ ˆ๋ธŒ)์ผ๋‹จ ๋ผˆ๋Œ€๋งŒ ๋งŒ๋“ค๊ณ  ํŽ˜์ด์ง€ 5๊ฐœ ์ •๋„ ์ถ”๊ฐ€ํ•˜์ž ๋กœ๊ณ  Canva ํฐํŠธ[๊ตฌ๊ธ€ ..
๐Ÿ”ฅ ๋ฌธ์ œ์ž๋ฐ” ์†Œ์ผ“ ํ†ต์‹ ์—์„œ Gson ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ + BufferedWriter ์‚ฌ์šฉ ์ค‘ host ๊ด€๋ จ ์—๋Ÿฌ ๋ฐœ์ƒํ•จ์ž๋ฐ”์—์„œ ๋ฐ๋ชฌ์„ ๋งŒ๋“ค๊ณ , ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๋ ค ํ–ˆ๋Š”๋ฐ ํ†ต์‹ ์ด ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ ๐Ÿ” ์›์ธ๊ฒฐ๊ตญ TCP/IP ๋ฌธ์ œ์˜€๊ณ , ์„œ๋ฒ„๋Š” IPv4, ํด๋ผ์ด์–ธํŠธ(๋‚˜)๋Š” IPv6๋กœ ์„ค์ •๋˜์–ด ์žˆ์–ด์„œ ํ˜ธํ™˜์ด ์•ˆ ๋œ ๊ฒƒ์ด์—ˆ๋‹ค.๋„คํŠธ์›Œํฌ ๋‹ด๋‹น์ž๊ฐ€ ์„œ๋ฒ„์˜ TCP/IP ๋ฒ„์ „์„ IPv4๋กœ ์„ค์ •ํ–ˆ๋Š”๋ฐ ๋‚˜๋Š” ๊ทธ๋ƒฅ Runnable JAR์„ ์‹คํ–‰ํ•ด์„œ IPv6๋กœ ๋™์ž‘ํ•œ ๊ฒƒ์ด ์›์ธ์ด๋‹ค. โญ ํ•ด๊ฒฐ๋ฒ•WSL์— nohup ๋ช…๋ น์–ด๋กœ JVM ์˜ต์…˜ ์ถ”๊ฐ€ํ•˜๋ฉด ํ•ด๊ฒฐ ๊ฐ€๋Šฅnohup java -Djava.net.preferIPv4Stack=true -Dpath="๊ฒฝ๋กœ" -jar ์ด๋ฆ„.jar >> server.log 2>&1 &nohup → ํ„ฐ๋ฏธ..
๋‚ด๊ฐ€ ๋ณด๋ ค๊ณ  ๋งŒ๋“  ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ๐Ÿฆ๋ชฉํ‘œ์ด๋ฒคํŠธ, ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ, ์ด๋ฒคํŠธ ๋ฒ„์Šค ๋ฐ addEventListener์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.๊ทธ๋ฆฌ๊ณ  jQuery์™€ Vanilla JavaScript์—์„œ ์ด๋ฒคํŠธ๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. ๋‹ค์‹œ ํ•œ ๋ฒˆ ๋งํ•˜์ง€๋งŒ jQuery๋Š” ํ•œ๋•Œ ์›น ๊ฐœ๋ฐœ์—์„œ ํ•„์ˆ˜์ ์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜€์ง€๋งŒ, ์ด์ œ๋Š” Vanilla JavaScript(์ˆœ์ˆ˜ JS)๋‚˜ React, Vue, Svelte ๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋Œ€์ฒดํ•˜๋ฉด์„œ ์‚ฌ์šฉ์ด ์ค„์–ด๋“ค๊ณ  ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ addEventListener ์œ„์ฃผ๋กœ๋งŒ ์ •๋ฆฌํ–ˆ๊ณ  ์ˆœ์ˆ˜ํ•˜๊ฒŒ ์ด๋ฒคํŠธ ์ข…๋ฅ˜๋งŒ ๊ถ๊ธˆํ•œ ์‚ฌ๋žŒ์€ 6๋ฒˆ๋ถ€ํ„ฐ ์ฝ์œผ๋ฉด ๋œ๋‹ค. 1. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ด๋ฒคํŠธ (JavaScript Event)์ด๋ฒคํŠธ(Event)๋Š” ์‚ฌ์šฉ์ž๋‚˜ ์‹œ์Šคํ…œ์ด ์›น ํŽ˜์ด์ง€์—์„œ ์ผ์œผํ‚ค๋Š” ๋™์ž‘์ด๋‹ค.์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฒ„ํŠผ ํด..
ํƒ์ƒ‰์„ ํƒ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ธฐ๋ณธ ์„ ํƒ์ž๋กœ ์„ ํƒํ•œ ์š”์†Œ ์ค‘ ์›ํ•˜๋Š” ์š”์†Œ๋ฅผ ํ•œ ๋ฒˆ ๋” ํƒ์ƒ‰ํ•ด์„œ ์ข€ ๋” ์ •ํ™•ํ•˜๊ฒŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค. ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์„ ํƒํ•˜๋Š” `์œ„์น˜ํƒ์ƒ‰ ์„ ํƒ์ž`์™€ ๋ฐฐ์—ด์— ๋‹ด๊ฒจ์ง„ ์š”์†Œ ์ค‘ ์ง€์ •๋œ ์†์„ฑ๊ณผ ๊ฐ’์œผ๋กœ ์„ ํƒํ•˜๋Š” `์†์„ฑ ํƒ์ƒ‰ ์„ ํƒ์ž`๊ฐ€ ์žˆ๋‹ค.  1. ์œ„์น˜ ํƒ์ƒ‰ ์„ ํƒ์ž โ–ผ๊ธฐ๋ณธ ์„ ํƒ์ž๋กœ ์„ ํƒํ•œ ์š”์†Œ๋Š” ๋ฐฐ์—ด์— ๋‹ด๊ธฐ๊ฒŒ ๋œ๋‹ค.๊ทธ๋ž˜์„œ ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŠน์ • ์š”์†Œ๋ฅผ ์ข€ ๋” ์ •ํ™•ํ•˜๊ฒŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค. ์ข…๋ฅ˜์šฉ๋ฒ•์„ค๋ช…$("์š”์†Œ ์„ ํƒ:first")$("์š”์†Œ ์„ ํƒ").first()$("li:first")$("li").first()์ „์ฒด ์š”์†Œ ์ค‘ ์ฒซ๋ฒˆ์งธ ์š”์†Œ๋งŒ ์„ ํƒ$("์š”์†Œ ์„ ํƒ:last")$("์š”์†Œ ์„ ํƒ").last()$("li:last")$("li").last()์ „์ฒด ์š”์†Œ ..
ํ•จ๊ป˜ ๋ณด๋ฉด ์ข‹์€ ๊ด€๋ จ ํฌ์ŠคํŒ… โ–ผ [JavaScript] jQuery๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์œ ์˜ํ•ด์•ผ ํ•  ์‚ฌํ•ญ๋“คโญ ๋ฌธ์„œ๊ฐ€ ๋กœ๋“œ๋œ ํ›„ ์‹คํ–‰ํ•˜์žโญ jQuery ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋จผ์ € ๋กœ๋“œํ•˜์žโญ $ ์ถฉ๋Œ ๋ฐฉ์ง€ ํ•„์š” ์‹œ noConflict โญ ์ด๋ฒคํŠธ ์ค‘๋ณต ๋ฐฉ์ง€ off()โญ AJAX ์บ์‹ฑ ๋ฐฉ์ง€ (cache: false) โญ ๋™์  ์š”์†Œ์— ์ด๋ฒคํŠธ ์ ์šฉ on()โญ ์„ฑ๋Šฅ ์ตœawesomepossum.tistory.com [JavaScript] Object(๊ฐ์ฒด), DOM(๋ฌธ์„œ๊ฐ์ฒด๋ชจ๋ธ), function() ํ•จ์ˆ˜ ๊ธฐ์ดˆ ์‹ค์Šต1. Object (๊ฐ์ฒด)  2. DOM (Document Object Model)2-1. DOM(๋ฌธ์„œ๊ฐ์ฒด๋ชจ๋ธ) ๋ฌธ์„œ๊ฐ์ฒด๋ชจ๋ธ(DOM) HTML CSS JS  2-2. innerHTML vs textContent ์˜ค๋Š˜์€ ๋ฌธ์„œ๊ฐ..
1. ์ž๋™ ์ž„ํฌํŠธ & ์ •๋ฆฌ ๊ด€๋ จ ๋‹จ์ถ•ํ‚คCtrl + Shift + O : ์ž๋™ ์ž„ํฌํŠธ (Organize Imports) → ํ•„์š”ํ•œ import ์ถ”๊ฐ€ ๋ฐ ๋ถˆํ•„์š”ํ•œ import ์ •๋ฆฌCtrl + Shift + F : ์ฝ”๋“œ ์ž๋™ ์ •๋ ฌ (Format Code) → ์ฝ”๋“œ ์Šคํƒ€์ผ์— ๋งž์ถฐ ์ •๋ฆฌCtrl + Shift + S : ๋ชจ๋“  ํŒŒ์ผ ์ €์žฅCtrl + / : ํ•œ ์ค„ ์ฃผ์„ ์ถ”๊ฐ€ ๋ฐ ์ œ๊ฑฐCtrl + Shift + / : ์—ฌ๋Ÿฌ ์ค„์„ ์„ ํƒํ•œ ํ›„ ์ „์ฒด๋ฅผ ๋ธ”๋ก ์ฃผ์„(/* */)์œผ๋กœ ๊ฐ์‹ธ๊ธฐCtrl + Shift + \ : ๋ธ”๋ก ์ฃผ์„ ํ•ด์ œ (/* */ ์‚ญ์ œ)2. ์ฝ”๋“œ ์ด๋™ ๊ด€๋ จ ๋‹จ์ถ•ํ‚คCtrl + Click : ๋ณ€์ˆ˜, ๋ฉ”์„œ๋“œ, ํด๋ž˜์Šค ์ •์˜๋กœ ์ด๋™F3 : ์„ ์–ธ๋œ ๊ณณ์œผ๋กœ ์ด๋™ (Open Declaration)Ctrl + O : ํ˜„์žฌ ํด๋ž˜..
โญ ๋ฌธ์„œ๊ฐ€ ๋กœ๋“œ๋œ ํ›„ ์‹คํ–‰ํ•˜์žโญ jQuery ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋จผ์ € ๋กœ๋“œํ•˜์žโญ $ ์ถฉ๋Œ ๋ฐฉ์ง€ ํ•„์š” ์‹œ noConflict โญ ์ด๋ฒคํŠธ ์ค‘๋ณต ๋ฐฉ์ง€ off()โญ AJAX ์บ์‹ฑ ๋ฐฉ์ง€ (cache: false) โญ ๋™์  ์š”์†Œ์— ์ด๋ฒคํŠธ ์ ์šฉ on()โญ ์„ฑ๋Šฅ ์ตœ์ ํ™” (map(), .append() ์ตœ์†Œํ™”) 1. ๋ฌธ์„œ๊ฐ€ ์™„์ „ํžˆ ๋กœ๋“œ๋œ ํ›„ ์‹คํ–‰ํ•˜๊ธฐ์„ ํƒ์ž๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฌธ์„œ ๊ฐ์ฒด๋ฅผ ๋จผ์ € ๋ถˆ๋Ÿฌ์™€์•ผ ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ HTML์ด ๋กœ๋“œ๋˜๊ธฐ ์ „์— jQuery ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋ฉด ์š”์†Œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.๐Ÿ“Œ ํ•ด๊ฒฐ์ฑ…: $(document).ready() ์‚ฌ์šฉ ๋˜๋Š” ๋ณ€๊ฒฝ๋  ํ…์ŠคํŠธ โญ• [๋ฐฉ๋ฒ• 2] $(document).ready() ์‚ฌ์šฉ ๋ณ€๊ฒฝ๋  ํ…์ŠคํŠธ$(document).ready()๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌธ์„œ๊ฐ€ ์™„์ „ํžˆ ..
์ธ์ ˆ๋ฏธ์˜€๋˜๊ฒƒ
'ํ”„๋กœ๊ทธ๋ž˜๋ฐ์–ธ์–ด' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก
์ƒ๋‹จ์œผ๋กœ