๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ „์ฒด ๊ธ€166

[Firebase] ๋นŒ๋“œ ์‹œ ์ˆ˜์ •๋œ ๊ทœ์น™์ด ์ž๋™์œผ๋กœ ์ ์šฉ๋˜๊ฒŒ ํ•˜๊ธฐ [Firebase] Cloud Firestore ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ํด๋ผ์ด์–ธํŠธ ์•ก์„ธ์Šค๊ฐ€ 4์ผ ํ›„์— ๋งŒ๋ฃŒ๋ฉ๋‹ˆ๋‹ค ๋ฌธ์ œ ์ƒํ™ฉ ๋‚ด๊ฐ€ ์ฒ˜์Œ ํŒŒ์ด์–ด๋ฒ ์ด์Šค ์—ฐ๊ฒฐํ•  ๋•Œ ํ…Œ์ŠคํŠธ ๋ชจ๋“œ๋กœ ์„ค์ •ํ•ด๋‘ฌ๊ฐ€์ง€๊ณ  ๊ณง ํด๋ผ์ด์–ธํŠธ ์•ก์„ธ์Šค๊ฐ€ ๋งŒ๋ฃŒ๋˜๋‹ˆ ๋ณด์•ˆ ๊ทœ์น™์„ ์ˆ˜์ •ํ•˜๋ผ๊ณ  ๋ฉ”์ผ์ด ๋‚ ์•„์™”๋‹ค. ์šฐ์„ , (๋‚˜์ฒ˜๋Ÿผ) ํ…Œ์ŠคํŠธ ๋ชจ๋“œ์—์„œ ๊ฐœ๋ฐœ inner-stella.tistory.com firestore ๊ทœ์น™์„ ์ฝ˜์†”์—์„œ ์ˆ˜์ •ํ–ˆ๋”๋‹ˆ, VS code์—์„œ ์ฝ”๋“œ ์ˆ˜์ • ํ›„ ๋นŒ๋“œ๋ฅผ ํ•˜๋ฉด ์ดˆ๊ธฐ ๊ทœ์น™์œผ๋กœ ๋นŒ๋“œ๊ฐ€ ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค. ๊ฐ„๋‹จํ•œ ๋ฌธ์ œ์˜€๋Š”๋ฐ, ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ๋กœ์ปฌ ํด๋”์˜ firebase.rules ํŒŒ์ผ์—์„œ ๊ทœ์น™์„ ์ˆ˜์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. 2022. 10. 24.
[React] favicon ๋ณ€๊ฒฝํ•˜๊ธฐ react-create-app์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด, ๋ธŒ๋ผ์šฐ์ € ํƒญ์˜ ์™ผ์ชฝ์— ์žˆ๋Š” favicon์ด ๋ฆฌ์•กํŠธ ๋กœ๊ณ ๋กœ ๋œฌ๋‹ค. (์•„๋ž˜ ๊ทธ๋ฆผ์—์„œ ํฌ๋กฌ ๋กœ๊ณ  ์œ„์น˜์— ๋ง์ด๋‹ค) ๋‚ด ์„œ๋น„์Šค์— ๋งž๋Š” ์•„์ด์ฝ˜์„ ๋””์ž์ธํ•ด์„œ ๊ทธ๊ฒƒ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ์„ ๋•Œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ํ•˜๋ฉด ๋œ๋‹ค. 1. ์•„์ด์ฝ˜ ๋””์ž์ธ ํ•˜๊ธฐ ์ผ๋‹จ ๋””์ž์ธ ํ•œ ์•„์ด์ฝ˜ ํŒŒ์ผ์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. 2. favicon์œผ๋กœ ๋งŒ๋“ค๊ธฐ https://www.favicon-generator.org/ Favicon & App Icon Generator Upload an image (PNG to ICO, JPG to ICO, GIF to ICO) and convert it to a Windows favicon (.ico) and App Icons. Learn more about favicons.. 2022. 10. 24.
[Firebase] Cloud Firestore ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ํด๋ผ์ด์–ธํŠธ ์•ก์„ธ์Šค๊ฐ€ 4์ผ ํ›„์— ๋งŒ๋ฃŒ๋ฉ๋‹ˆ๋‹ค ๋ฌธ์ œ ์ƒํ™ฉ ๋‚ด๊ฐ€ ์ฒ˜์Œ ํŒŒ์ด์–ด๋ฒ ์ด์Šค ์—ฐ๊ฒฐํ•  ๋•Œ ํ…Œ์ŠคํŠธ ๋ชจ๋“œ๋กœ ์„ค์ •ํ•ด๋‘ฌ๊ฐ€์ง€๊ณ  ๊ณง ํด๋ผ์ด์–ธํŠธ ์•ก์„ธ์Šค๊ฐ€ ๋งŒ๋ฃŒ๋˜๋‹ˆ ๋ณด์•ˆ ๊ทœ์น™์„ ์ˆ˜์ •ํ•˜๋ผ๊ณ  ๋ฉ”์ผ์ด ๋‚ ์•„์™”๋‹ค. ์šฐ์„ , (๋‚˜์ฒ˜๋Ÿผ) ํ…Œ์ŠคํŠธ ๋ชจ๋“œ์—์„œ ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•œ ๊ฒฝ์šฐ ๋ณด์•ˆ ๊ทœ์น™ ํƒญ์— ๋“ค์–ด๊ฐ€๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑ๋˜์–ด ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /{document=**} { allow read, write: if request.time < timestamp.date(2022, 10, 14); } } } Cloud Firestore ๋ณด์•ˆ ๊ทœ์น™ Cloud Firestore ๋ณด์•ˆ ๊ทœ์น™์„ ์‚ฌ์šฉํ•˜๋ฉด ์ธํ”„๋ผ๋ฅผ .. 2022. 10. 10.
[HTML] input ํƒœ๊ทธ ํด๋ฆญ์‹œ ์ž๋™ ์คŒ์ธ๋˜์ง€ ์•Š๊ฒŒ ํ•˜๊ธฐ ์˜ฌํ•ด ์ดˆ์— ๋งŒ๋“ค์—ˆ๋˜ ๋ง›์ง‘ ๊ฒ€์ƒ‰๊ธฐ๋ฅผ ๋ฐฐํฌํ–ˆ์„ ๋•Œ, ํ•œ ๊ฐœ๋ฐœ์ž๋ถ„๊ป˜์„œ ํ”ผ๋“œ๋ฐฑ์„ ์ฃผ์…จ์—ˆ๋‹ค. input ํƒœ๊ทธ ๋ˆ„๋ฅด๊ฒŒ ๋˜๋ฉด ํฐํŠธ์‚ฌ์ด์ฆˆ๊ฐ€ ์ž‘์„ ๋•Œ ์ž๋™์œผ๋กœ ์คŒ์ธ์„ ์‹œํ‚ค๋Š” ๋ถ€๋ถ„์ด ์žˆ๋Š”๋ฐ์š” ์ด ๋ถ€๋ถ„์ด ์‚ฌ์‹ค ์‚ฌ์šฉ์ž์„ฑ์„ ๋งŽ์ด ๋–จ์–ด๋œจ๋ ค์„œ ์ง€์–‘ํ•˜๊ณ  ์žˆ๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค ์ฐธ๊ณ  ๋ถ€ํƒ๋“œ๋ ค์š”! input ํƒœ๊ทธ, ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ๊ฒ€์ƒ‰์ฐฝ์„ ๋ˆ„๋ฅด๋ฉด ์ž๋™์œผ๋กœ ํ™”๋ฉด์ด ํ™•๋Œ€๊ฐ€ ๋˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. font-size๊ฐ€ 16์ดํ•˜๋ฉด ์ž๋™์œผ๋กœ ํ™•๋Œ€๊ฐ€ ๋œ๋‹ค๊ณ  ํ•œ๋‹ค. ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›๊ณ  ๋‚˜์„œ ๋‹ค์‹œ ์‚ฌ์šฉํ•ด๋ณด๋‹ˆ, ํ™•๋Œ€๊ฐ€ ๋˜๊ณ  ๋‚˜์„œ ์ž…๋ ฅ์„ ๋ฐ›์€ ํ›„์—๋„ ๊ณ„์†ํ•ด์„œ ํ™•๋Œ€๋œ ์ƒํƒœ๋กœ ํ™”๋ฉด์ด ์œ ์ง€๋˜์—ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ทธ ๋•Œ๋งˆ๋‹ค ํ™”๋ฉด์„ ๋‹ค์‹œ ์ถ•์†Œ ์‹œ์ผœ์ค˜์•ผ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ถˆํŽธํ–ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์–‘ํ•˜์ง€๋งŒ, ๋‚˜๋Š” ๊ทธ๋ƒฅ ํฐํŠธ ์‚ฌ์ด์ฆˆ์™€ ์ธํ’‹์˜ ํฌ๊ธฐ ์ž์ฒด๋ฅผ ๊ณ ์ •์‹œ์ผœ์ฃผ์—ˆ๋‹ค. + ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•๋“ค https:/.. 2022. 10. 8.
10์›” ๋ถ๋งˆํฌ๋“ค ์ฝ”๋“œ ์Šค๋ฉœ (Code Smell) ๋ผ์ธ๊ฐœ๋ฐœ์‹ค๋ก 1. ํ”„๋ ˆ์ž„์›Œํฌ & ๊ฐœ๋ฐœ ๋„๊ตฌ : spring - react - kubernetes - flutter - docker - armeria 2. ์–ธ์–ด : java - python - javascript - kotlin java OOP์˜ ๊ธฐ๋ณธ, ์›น ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ํ•„์ˆ˜, ๊ฐ์ฒด์ง€ํ–ฅ์˜ ์ •์„ ์–ด๋ ค์›€. ํด๋ž˜์Šค ๊ฐœ๋…์ด ํ—ท๊ฐˆ๋ฆผ. python ์ •๋ณด๊ฐ€ ๋งŽ์Œ. ์‰ฌ์›€. ๋‹ค์–‘ํ•˜๊ฒŒ ํ™œ์šฉ ๊ฐ€๋Šฅํ•จ. ๊ธฐ๋Šฅ์ด ๊ฐ•๋ ฅํ•จ, ์ฒ˜์Œ ๊ฐœ๋ฐœํ•  ๋•Œ ์ ‘๊ทผ์„ฑ ์ข‹์Œ ๋ฌธ๋ฒ•์ด ๋ณ„๋กœ๋‹ค. ๋™์  ํƒ€์ž… ์–ธ์–ด๋ผ ๋ณ„๋กœ๋‹ค. js ์›น ๊ฐœ๋ฐœ์ž ํ•„์ˆ˜. ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๋ฅผ ํ•œ ์–ธ์–ด๋กœ ๊ตฌํ˜„. ์ž์œ ๋„ ๋น„์ง๊ด€์ , ํ˜ธ์ด์ŠคํŒ… ์‹ซ์Œ, ํƒ€์ž…์„ธ์ดํ”„ํ•˜์ง€ ์•Š์Œ, ๋„ˆ๋ฌด ์ž์œ ๋ถ„๋ฐฉ, ์ฝœ๋ฐฑ, ๋™์ ํƒ€์ž… kotlin : ์ž๋ฐ”๋ณด๋‹ค ํŽธํ•จ. ๊น”๋”ํ•˜๊ณ  ๋ชจ๋˜ํ•˜๋‹ค. typesc.. 2022. 10. 8.
[JS] href ํ‘œํ˜„์‹ <a href=“javascript:;”> </a> ์ž์ฃผ ์‚ฌ์šฉํ•˜๋˜ ์‚ฌ์ดํŠธ์˜ ๋ฒ„ํŠผ์ด ์ž‘๋™ํ•˜์ง€ ์•Š์•„์„œ dev tool์„ ์ผœ๋ณด์•˜๋‹ค. 3๊ฐœ์˜ a ํƒœ๊ทธ๊ฐ€ ์žˆ๊ณ  ์œ„์— ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ์ด์ „๋ฒ„ํŠผ, ๋ฐ”๋กœ ๋ฐฐํฌํ•˜๊ธฐ ๋ฒ„ํŠผ, ๋ฐ”๋กœ ์ €์žฅํ•˜๊ธฐ ๋ฒ„ํŠผ์ด๋‹ค. ์ด์ „ ๋ฒ„ํŠผ์€ ์ž˜ ์ž‘๋™ํ•˜๋Š”๋ฐ, ๋ฐ”๋กœ ๋ฐฐํฌํ•˜๊ธฐ์™€ ๋ฐ”๋กœ ์ €์žฅํ•˜๊ธฐ ๋ฒ„ํŠผ์ด ์ž‘๋™ํ•˜์ง€ ์•Š์•˜๋‹ค. ์ฝ”๋“œ๋ฅผ ๋ณด๋‹ˆ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•จ์ˆ˜๊ฐ€ a href ์˜ ํ˜•์‹์œผ๋กœ ์ง€์ •์ด ๋˜์–ด ์žˆ์—ˆ๋‹ค. ๋ฒ„ํŠผ์„ ํ†ตํ•ด ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๋Š” ๊ฒฝ์šฐ, ๋‚˜๋Š” ์ฃผ๋กœ onclick์„ ํ†ตํ•ด ์ด๋ฒคํŠธ๋ฅผ ๊ฑธ์–ด๋†“๋Š” ํ˜•์‹์œผ๋กœ ์ž‘์—…์„ ํ–ˆ์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ฒ˜์Œ๋ณด๋Š” ํ˜•์‹์ด๋ผ ์–ด๋–ค ๋ฐฉ๋ฒ•์ธ์ง€ ์ฐพ์•„๋ณด์•˜๋‹ค. ๐Ÿ“Œ href ํ‘œํ˜„์‹ onclick์„ ์ค„์—ฌ์„œ ์ฝ”๋”ฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ธ๋“ฏ ํ•˜๋‹ค. ๋‚ด๊ฐ€ ์ƒ๊ฐํ–ˆ๋˜ ๋ฌธ์ œ์˜ ์›์ธ ์œ„์— ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด, ์ž˜ ์ž‘๋™ํ•˜๋Š” '์ด์ „' ๋ฒ„ํŠผ์— ๋Œ€ํ•œ ์ฝ”๋“œ์—์„œ๋Š” href='javascript: ๋’ค์— ํ•จ์ˆ˜ ์ด.. 2022. 10. 8.
[React] react-scroll ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ๋ฒ• ๋ฐ ์ฃผ์˜์‚ฌํ•ญ https://www.npmjs.com/package/react-scroll react-scroll A scroll component for React.js. Latest version: 1.8.7, last published: 6 months ago. Start using react-scroll in your project by running `npm i react-scroll`. There are 606 other projects in the npm registry using react-scroll. www.npmjs.com ์‚ฌ์šฉ ์ˆœ์„œ 1. ์„ค์น˜ํ•˜๊ธฐ npm install react-scroll 2. ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ๋‹ค ๋ถˆ๋Ÿฌ์˜ฌ ํ•„์š”๋Š” ์—†๊ณ , ์“ธ ๊ฒƒ๋“ค๋งŒ ๋ถˆ๋Ÿฌ์˜ค๋ฉด ๋œ๋‹ค. import * as Scroll from.. 2022. 10. 3.
[CSS] body ์œ—๋ถ€๋ถ„ ๋นˆ ์นธ ์—†์• ๋Š” ๋ฒ• CSS ์ž‘์—…์„ ํ•˜๋˜ ์ค‘, ์ƒ๋‹จ ๋„ค๋น„๊ฒŒ์ดํ„ฐ ๋ถ€๋ถ„์˜ ์œ—๋ถ€๋ถ„์ด ์ฐฝ ์ƒ๋‹จ๊ณผ ๋–จ์–ด์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค. const HeadWrap = styled.div` ... top: 0; ... `; top์„ 0์œผ๋กœ ์ฃผ๋ฉด ์œ„์— ๋ถ™๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ƒ๊ฐ๋ณด๋‹ค ๊ฐ„๋‹จํ•œ ๋ฌธ์ œ์˜€๋‹ค. 2022. 10. 1.
[CSS] ํด๋ฆญ ์ด๋ฒคํŠธ๊ฐ€ ์žˆ์œผ๋ฉด ์ปค์„œ ๋ชจ์–‘ ๋ฐ”๊พธ๊ธฐ ๊ฐœ์ธ ํฌํŠธํด๋ฆฌ์˜ค ์‚ฌ์ดํŠธ๋ฅผ ๋งŒ๋“  ํ›„ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๊ณผ์ •์—์„œ ํด๋ฆญ ์ด๋ฒคํŠธ๊ฐ€ ์žˆ๋Š” ๋ถ€๋ถ„ ์œ„์— ๋งˆ์šฐ์Šค๊ฐ€ ์˜ฌ๋ผ๊ฐ€๋ฉด ์ปค์„œ ๋ชจ์–‘์ด ๋ฐ”๋€Œ๋ฉด ๋” ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค๋Š” ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์•˜๋‹ค. ์•„๋ฌด๋ž˜๋„ ์ปค์„œ ๋ชจ์–‘์ด ๊ทธ๋Œ€๋กœ ์œ ์ง€๋˜๋‹ค ๋ณด๋‹ˆ, ๊ทธ ๋ถ€๋ถ„์„ ํด๋ฆญํ–ˆ์„ ๋•Œ ์™ธ๋ถ€ ๋งํฌ๋กœ ์—ฐ๊ฒฐ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์ž˜ ๋ชจ๋ฅผ ์ˆ˜ ์žˆ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ๋ฆฌ์•กํŠธ๋กœ ์ž‘์—…ํ•ด์„œ CSS์—๋Š” styled-components๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ, ๊ทธ๋ƒฅ CSS์—๋„ ์ ์šฉ๋˜๋Š” ๊ฒƒ์ธ์ง€๋Š” ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค. const Menu = styled.p` ... &:hover { cursor: pointer; } `; ์œ„์™€ ๊ฐ™์ด ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด, ๋ฉ”๋‰ด ์Šคํƒ€์ผ์„ ์ง€์ •ํ•ด์ค€ ์ปดํฌ๋„ŒํŠธ ์œ„์— ๋งˆ์šฐ์Šค ํ˜ธ๋ฒ„์‹œ ์ปค์„œ ๋ชจ์–‘์ด ์†๊ฐ€๋ฝ ๋ชจ์–‘์œผ๋กœ ๋ฐ”๋€๋‹ค! 2022. 10. 1.