์ ์ฒด ๊ธ208 ์์ด๋ก ๋ด ์ฝ๋๋ฅผ ์ค๋ช ํ ์ ์๋๊ฐ? https://www.youtube.com/live/fBlf_vml5w4?feature=shared ์ต๊ทผ ๋ฐฐ๋ฏผ ์ ํ๋ธ ์ฑ๋์ ์ค๋ฌด ์์ด์ ๊ด๋ จํ ๋ผ์ด๋ธ๊ฐ ์์๋ค. ์ค๊ฐ ๋ถ๋ถ๋ถํฐ๋ ๋๋ฌด ๋ํ ์ผํ ๋ด์ฉ๋ค์ด๋ผ ์คํตํ์๊ณ ๊ฐ์ฐ์๊ฐ ์์ด๋ฅผ ๊ณต๋ถํ๊ฒ๋ ๋๊ธฐ์ ๊ณต๋ถ๋ฒ์ ๋ํ ์ค๋ช ์ ์์ฃผ๋ก ๋ณด์๋ค. ๊ฐ์ฐ์๋ ๊ตฐ๋์์๋ถํฐ ์์ด๋ฅผ ์์ฒญ ์ด์ฌํ ๊ณต๋ถํ์๋ค๊ณ ํ๋ค. IT์ ์ฃผ๋ฅ๋ ๋๊ฐ ๋ญ๋๋ ์ค๋ฆฌ์ฝ ๋ฐธ๋ฆฌ์ด๋ฉฐ ์ค๋ฆฌ์ฝ ๋ฐธ๋ฆฌ๋ฅผ ๋์ด์ค ์ง์ญ์ ๋น๋ถ๊ฐ ์์ ๊ฒ๊ฐ๋ค. ๋ฐ๋ผ์ ๋ชจ๋ ๊ฒ์ด ์์ด๊ฐ ๊ธฐ๋ฐ์ด๋ฉฐ ์์ด๋ก ๋ ํ์ค ๋ฌธ์, git, stackoverflow ์ ์ปค๋ฎค๋ํฐ๋ค์ด ๊ธฐ๋ณธ์ด ๋์๋ค. ๊ฐ๋ฐ ๋ถ์ผ์์ ํ๊ธ์ ์ฐ๋ ์ฌ๋์ด ์ผ๋ง๋ ๋ ๊น? ๊ฐ์ฐ ๊ธฐ์ค์ผ๋ก๋ 3%, 4%๋์ด๋ค. ๊ตฌ๊ธ๋ง์์๋ ์์ด๋ก ๊ฒ์ํ์ ๋์ ํ๊ธ๋ก ๊ฒ์ํ์ ๋์ ๊ฒฐ๊ณผ ๊ฐฏ์,.. 2024. 2. 26. ์ฐ๋ ์ ๋์งธ๋ฅผ ์์ ํ๋ค. ๋จํธ์๊ฒ ๋์งธ๊น์ง๋ ๋ณ๊ณ ์ถ๋ค๊ณ ์์ฃผ ์ด์ผ๊ธฐํ๊ณ , ๋จํธ ๋ํ ๊ทธ์ ๋์ํ๋ฉฐ ์ฌ๋ฌ๋ฒ ์ฐ๋ฆฌ์ ๋ฏธ๋ ๊ฐ์กฑ ๊ตฌ์ฑ์์ ๋ํ ์ด์ผ๊ธฐ๋ฅผ ๋๋ด๋ค. ๊ทธ๋ฌ๋ค ๊ฒฐ๊ตญ 23๋ 12์. ๋ณต์๋ฅผ ๋ณ์์ง 11๊ฐ์๋ง์ ์ํ ๊ธฐ๋ก ๋์งธ ์์ ์ ํ์ธํ๋ค. ์๊ฐ๋ณด๋ค ์ฝ๊ฒ ์์ ์ ํ๊ฒ๋์ด ๊ฝค๋ ๋๋๋ค. ์ฒซ์งธ๋ ์์ ์ ์ค๋นํ์ง 6~7๊ฐ์๋ง์ ์์ ์ด ๋์๊ธฐ ๋๋ฌธ์ธ๋ฐ ์ฃผ๋ณ ๋ง๋๋ก ์ฒซ์งธ ๋ณ๊ณ ๋ ํ, ์๊ถ์ด ๊นจ๋ํด์ ธ์ ์์๊น? ๋๋ฌด๋ ์ฌ์ด๋น ๊ณผํ์ด๊ธด ํ์ง๋ง ๊ทธ๋ด๋ฏํ๊ฒ ๋ค๋ ธ๋ค. ๊ทธ๋ก๋ถํฐ ์ผ์ฃผ์ผ ํ์ ์ฐ๋ถ์ธ๊ณผ์ ๊ฐ์ ์์ ํ์ธ์ ๋ฐ์๊ณ , ๊ทธ๋ก๋ถํฐ 2์ฃผํ์๋ ์ฌ์ฅ์๋ฆฌ๊น์ง ๋ค์๋ค. ์ฐ๋ฆฌ ๋์งธ์ ํ๋ช ์ ๋์์ด๋ก ์ ํด์ก๋ค. ๊ฒจ์ธ์ ์๊ธด ์์์ด๋ผ '๋์'์ด๊ฐ ๋์๋ค. ๋จํธ์ ๋์งธ๋ ๋ธ์ ์ํ๊ณ , ๋๋ ๋ค๋ฅธ ์ฑ๋ณ๋ ์ข์ง ์์๊น ์ถ๊ธด ํ์ง๋ง ๋ธ์ด์ด๋ ๊ทธ ๋ํ ํ๋ณตํ ๊ฑฐ.. 2024. 2. 2. firestore rules ์ ๋ฐ์ดํธ๊ฐ ๊ณ์ ์๋ณต๋๋ ๋ฌธ์ (+ํด๊ฒฐ) test ๋ชจ๋๋ก ์์ฑ์ ํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ ์ง๊ฐ ํ๋ฌ ๋ค๋ก ์ค์ ๋์ด์์๋ค. rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /{document=**} { allow read, write: if request.time < timestamp.date(2023, 11, 26); } } } ๊ทธ๋์ read๋ ๋ชจ๋๊ฐ ๊ฐ๋ฅํ๊ณ , write๋ ์ธ์ฆ๋ ์ฌ์ฉ์๋ง ๊ฐ๋ฅํ๋๋ก ๋ฐ๊พธ์๋ค. rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /{document=**} { allow read:.. 2023. 11. 30. ์๊ฐ์ ๋ณด์ก ์ฒซ๋ ์์นจ๋ถํฐ ํ๋ฅ๋๋ค. 6์ 50๋ถ์ฏค ๊นฌ ์๊ธฐ์๊ฒ ์ด์ ์์ ๋จน์ด๊ณ ๋ถ์ ๋ฅผ ๋จน์ด๊ณ ์ํ์ ์ ๋ฆฌํ๊ณ ๋ค๋์์๋ ์๊ฐ์ ๋ณด์ก์ ๋งก๊ธฐ๋ฌ๊ฐ์ผํ ์๊ฐ์ด๋ค. ๊ทธ๋ฌ๋ฉด ์๋๋๋ฐ ๋ด ๋ง๋ ์์ ๋ถ์ , ์๋ชป๋ ์ฐจ์ ์ ํ๋ฒ๋ฆฐ ๋์๊ฒ ์์ ๋ถ์ . ์๊ฐ์ ๋ณด์ก์ ๋งก๊ธฐ๋ฐ ๊ฐ ๊ณณ์๋ ์ฃผ์ฐจํ ๊ณณ์ด ๋ง๋ ์น ์์ ๋ค์ ํ๋ฒ ์ฐจ๋ฅผ ๋๋ฆฌ๊ณ , ๋ ๊ธธ์ ์๋ชป๋ค๊ณ , ๊ฒฐ๊ตญ์ ๋์จ์ง 20๋ถ๋ง์(์๋๋ 10๋ถ์ด๋ฉด ๋๋ค.) ์งํ์ฒ ์ญ ์ฃผ์ฐจ์ฅ์ ์ฐจ๋ฅผ ๋๊ณ , ๋ง ์ ์ด๋ค๋ ค๊ณ ํ๋ ๋๋ฅผ ์๊ณ ๋ค์ ๊ธธ์ ๋์ฐ๋ค. ์ฑํผ์ฑํผ ๊ธธ์ ๊ฑธ์ด ๋ณด์ก์ผํฐ์ ๋์ฐฉํ๊ณ ๋ฐ๋ปํ๊ฒ ๋ง์์ฃผ์๋ ์ ์๋๋ค์ ๋ง์์ ์์ฌ๋์ผ๋ ๊ณง ๋๋ ๋ด ์ ํผ์ ์ท๊น์ ๋ถ์ก๊ณ ๋์ฃผ์ง ์๋๋ค. ์์์ฃผ๋ค๊ฐ ์ ๊น ๋ด๋ ค๋๊ณ ์๋ฅ๋ฅผ ์์ฑํ๊ณ ์๋๋ฐ ๋ฉ๋ฑ๋ฉ๋ฑ ๋๋ฅผ ์ณ๋ค๋ณด๋ค ๊ฐ์๊ธฐ ๋ ๋๋ฌผ์ ํ์น๋ ๋. ์๋ฅ๋ฅผ ๊ธํ ์์ฑํ๊ณ .. 2023. 11. 17. vue Toast Viewer์ data๊ฐ ์ ๋์ด๊ฐ๋ค.(+ํด๊ฒฐ) ๋ผ์ฐํฐ params๋ก ๋์ด์ค๋ id๋ฅผ ์ด์ฉํด firestore์์ ๋ํ๋จผํธ๋ฅผ ์ฝ์ด์จ ํ, template ํ๊ทธ ์์ ๋ณ์๋ค์ ๊ฐ์ ๋ฃ๊ณ ToastViewer ์ปดํฌ๋ํธ์๋ ๋ฐ์ดํฐ๋ฅผ ๋๊ธฐ๋ ค ํ์ผ๋ ๊ณ์ํด์ ToastViewer props์์๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค์ง ๋ชปํ๋ค. {{ title }} {{ dt }} import TuiViewer from "./Editor/ToastViewer.vue"; import {getDocument} from "../firestore.js" export default { components: { TuiViewer, }, data(){ return{ title: '', dt: '', content: '', } }, async mounted() { const id = this.$r.. 2023. 11. 12. vue2, vue3 ์ฐจ์ด์ Options API VS. Composition API ์๋๋ vue2์ vue3์ ์ํ์ฝ๋๋ค. vue2 ์ํ ์ฝ๋ (Options API) {{ message }} Change Message vue3 ์ํ์ฝ๋ (Composition API) {{ message }} Change Message Options API์ Composition API ๊ฐ ๋๋์ฒด ๋ญ๊น? ์ ์๋ฅผ ์ฝ์ด๋ดค์๋ ๋ฑํ ์๋ฟ๋ ์ค๋ช ๋ค์ด ํฌ๊ฒ ์์๋ค. ๊ทธ๋์ ์ฐจ์ด์ ์ ํ๋ฒ ์ ๋ฆฌํด๋ณด์. Options API Composition API ๊ตฌ์ฑ ๊ฐ์ฒด ์ค์ฌ์ ์ ๊ทผ๋ฐฉ๋ฒ data, methods, computed ๋ฑ์ ์ต์ ๋ฑ์ ํตํ์ฌ ์ปดํฌ๋ํธ๋ฅผ ๊ตฌ์ฑํ๋ค. ํจ์ ์ค์ฌ์ ์ ๊ทผ. data ์ต์ ๋์ ๋ฐ๋ก ๋ณ์๋ฅผ return{}ํ๋ค. methods๋์ ๋ฐ๋ก ํจ์๋ฅผ ์ ์ธํ๊ณ mounted ์ต์ ๋์ onMounte.. 2023. 11. 9. ์๋จน์ด์ ์์ด์ฃผ๋ ์ด์ ์ ์ด์ ์์ ์์ํ์ง ์ด์ ๋ง 4๊ฐ์์ฐจ์ ์ ์ด๋ค์๋ค. ๋ด ํ์ ๋๊ตฐ๊ฐ๋ฅผ ์ํด์ ์ด๋ ๊ฒ ๊ณ์ ์์์ ๋ง๋ค์ด๋๋ ์๊ธฐ๊ฐ ์์์๊น? ํผ์์ด๋๋ ๋ด ์ ํ๋ ๊ฑด์ฌํ๊ธฐ ์ํด์, ๋ด ๋ฐฐ๋ฅผ ์ฑ์ฐ๊ธฐ ์ํด ์๋ฆฌ๋ผ๊ธฐ ๋ณด๋จ ๋ผ๋๋ฅผ ๋ง๋๋ ๋๋์ด ๊ฐํ์๋ค. ๊ฒฐํผํ๊ณ ๋์๋ ๋จํธ๊ณผ ์ ๋ ์์ฌ ํ๋ผ, ์ฃผ๋ง์ ๋จน์ ์์ฌ ์ ๋(ํด์ง ์ ์๋ ๋จํธ๊ณผ ๋ฒ๊ฐ์๊ฐ๋ฉด์ ํ๋๊ฒ ๊ฐ๋ค. ๋จผ์ ํด๊ทผํ ์ฌ๋์ด ์๋ฆฌ๋ฅผ ํ๋ ๊ฒ์ผ๋ก ์ ํ์์)๋ฅผ ์ค๋นํ์๋ค. ๋ณต์๊ฐ ํ์ด๋๊ณ , ์ด๋ค ์์์ด ์ ์ ๋ ๋ง์๊น, ์ด๋ค ์ฌ๋ฃ๋ฅผ ๋ ๋จน์ฌ๋ณผ๊น? ๋ฅผ ๋งค๋ฒ ๊ณ ๋ฏผํ๋ฉด์ ์ฅ์ ๋ณธ๋ค. ๋ฐ๋ฅ์ ๋๋ถ๋ฌ์ ธ์๋ ์์๋ค์ ํ์ฃผ๋ก ๋ฆ์๋ด๊ณ , ํ์ด์ฒด์ด์ ์ธ์ ๋ถ์ด์ ์ด๋ ๊ฒ ๊พธ๋ํด์ก์๊น ์ถ์ ๋ฐฅํ ๋ฉ์ด๋ฆฌ๋ฅผ ์ค๋๋ ์น์ฐ๋ฉฐ ๋๊ตฐ๊ฐ๋ฅผ ๋จน์ด๋ ํ์์ ๋ํด์ ์๊ฐํด๋ณธ๋ค. ์ฒ์์ ๋ญฃ๋ ๋ชจ๋ฅด๊ณ ์ ์ ์ฉ์ฉ๋ฒ๋ ค.. 2023. 11. 9. ๊ฐ๋ฆผ์น๋ฃ ์ค ์ ์๋์์ ์ฌ์๊ฐ ๋ณด์๋ค. 10์ 17์ผ, ์ฒซ๋ฒ์งธ ์ง๋ฃ(์์๋ด์ฌ์ ํ์ ) ์ดํ ํ๋ฌ๋ง์ด๋ค. ์ฒซ๋ฒ์งธ ์ง๋ฃ๋ ์ง๋ฃ๋ ์ง๋ฃ์ง๋ง ์ฐ๋๊ฒ์ฌ๋ฅผ ํ๋๋ผ ์๊ฐ์ด ๊ฝค ๊ฑธ๋ ธ์๋๋ฐ ์ด๋ฒ ์ง๋ฃ์์๋ ์ ๋ณด๊ณ ์๋์ง ์ ๋๋ง ํ์ ํ์๋ค. ์ ์๋๊ป์๋ ๊ฐ๋ฆผ์น๋ฃ๊ฐ ์๋๊ณ ์๋ค ํ์ จ๋ค. ์ ์๋๊ป ๊ฐ๋ฆผํจ์น๋ฅผ ๋ผ๋ฉด ๊ทธ๋๋ ๋ค์ ์ฌ์์ฒ๋ผ ๋ณด์ธ๋ค๊ณ ํ๋๋ ๊ฐ๋ฆผํจ์น์ ๋ชฉ์ ์ ์ฌ์์ ๊ต์ ์ด ์๋๋ผ ์๋ ฅ ๊ต์ ์ ์ํ ๊ฒ์ด๋ผ๊ณ ํ์ จ๋ค. ์ฌ์๊ฐ ์๋ ๋์ด ๋ฐ๊นฅ์ชฝ์ผ๋ก ํฅํ์ง ์์์๋๋ฐ(๋๋์๋ฅผ ๊ตด๋ฆฐ๋ค๊ณ ์๊ฐํ์ ๋ ์ผ๊ตด์ ์ ๋ฉด์ ๋ณด์ง๋ง ๋์๋ง ์์ผ๋ก ๊ฐ๊ฒํ ์์๋ ๊ฒ. ๋ธ์ ๋ฐ๊นฅ์ชฝ์ผ๋ก ๋๊ณต์ด ๊ฐ์ง ๋ชปํ๋ค.) ๊ฐ๋ฆผ์น๋ฃํ์๋ ๊ฝค๋ ๋ฐ๊นฅ์ชฝ์ผ๋ก๋ ๋๊ณต์ ์์ง์๋ค. ๊ฐ๋ฆผ์น๋ฃ๋ฅผ ๋ ๋ฌ ์ ๋ ๋ ํ๊ณ ๋ค์ ์ง๋ฃ๋ฅผ ๋ณด๊ธฐ๋ก ํ๋ค. ๊ทธ๋ ๊ฒ ์ผ์ฃผ์ผ์ด ์ข ์ง๋ฌ์๊น.. ์ ์๋์ฒ๋ผ(์ค๋ ์ง๋ฃ๋ณด๋ ๊ทธ๋ ์ง .. 2023. 10. 31. vue.js ๋ผ์ฐํฐ ๋งํฌ์ ๋ฐ๋ผ ๋ณํ๋ ์ปดํฌ๋ํธ ์ ํ์ ๋ณด ํ์ด์ง๋ฅผ ๋ง๋๋ ์ค์ด๋ค. ์ปดํฌ๋ํธ ์์ router-link :to="/guide/notice" router-link :to="/guide/qna" ๋ฑ์ ๋งํฌ๋ฅผ ๊ฑธ์ด๋์ผ๋ฉด Guide๋ผ๋ ์ปดํฌ๋ํธ๋ฅผ ๋ถ๋ฌ์ค๊ฒ ๋๋๋ฐ Guide ๋ผ๋ ์ปดํฌ๋ํธ ์์ ์ฌ๋ฌ ์ปดํฌ๋ํธ๋ค์ import ํด๋๊ณ $router.params์ ๊ฐ์ ์ฝ์ด ํ๋จ ์์ญ์ ์ถ๋ ฅํ๊ฒ ๋๋ค. ์ฒ์์ div ํ๊ทธ์ v-if๋ฅผ ๊ฑธ์ด์ $router.params.board === "notice" ์์ผ๋ก ์กฐ๊ฑด๋ฌธ์ ๊ฑธ์ด์ผ ํ๋. ์กฐ๊ฑด๋ฌธ์ ํจ์๋ก ๋ง๋ค์ด์ผ ํ๋ ํ๋ค๊ฐ ์์ฒญ ์ฌํํ ๋ฐฉ๋ฒ์ ์ฐพ๊ฒ๋๋ค. 1. data()์ ๋ณ์ ์ ์ธ - selectedComponent๋ $router.params.board ๊ฐ์ด ์์ผ๋ฉด ๊ทธ ๊ฐ์ด set ๋๊ณ , ์๋๋ผ๋ฉด ๋ณด์ฌ์ค.. 2023. 10. 27. ์ด์ 1 2 3 4 ยทยทยท 24 ๋ค์