์ „์ฒด ๊ธ€

๋ฌธ์ œ์ƒํ™ฉmsw๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œ ํ–ˆ๋‹ค (ํ”„๋กœ์ ํŠธ ๋‚ด๋ถ€์—์„œ ๊ธฐ์กด msw 1.xx ๋ฒ„์ „์„ 2.31๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•จ)Migration guideline ์— ๋”ฐ๋ผ ์ฝ”๋“œ migration์„ ํ–ˆ๋Š”๋ฐ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ํ•˜๋Š” msw์˜ ๋ชจํ‚นAPI์˜ ์‘๋‹ต์ด ์ž๊พธ 404 (Not Found)๊ฐ€ ๋–จ์–ด์กŒ๋‹ค. ๊ทธ๋ž˜์„œ ํŽ˜์ด์ง€๊ฐ€ ์•„์˜ˆ ์•ˆ๋œจ๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค.  ๋””๋ฒ„๊น…ํŽ˜์ด์ง€๊ฐ€ ๋ Œ๋”๋ง๋˜๋ฉด์„œ api๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉ์ž ์ด๋ฒคํŠธ๋ฅผ ๋ฐ›์•„์•ผ์ง€๋งŒ api๊ฐ€ ํ˜ธ์ถœ๋˜๋Š” ํŽ˜์ด์ง€๋“ค์€ ์ •์ƒ์ ์œผ๋กœ msw์˜ mocking ์‘๋‹ต์„ ์ž˜ ์ฃผ์—ˆ๋‹ค.๋ฌธ์ œ๋Š” ํŽ˜์ด์ง€๋ฅผ ๋„์šฐ๋ฉด์„œ ๋ฐ”๋กœ api๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ํŽ˜์ด์ง€์—์„œ๋งŒ ํ•ด๋‹น 404 ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. https://mswjs.io/docs/getting-started#step-2-describe Getting startedThree st..
ยท Flutter
์ƒํ™ฉ ๋กœ์ปฌ์—์„œ ๋ฆฌ์•กํŠธ๋กœ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ๋Š” ํ™”๋ฉด์„ ๋ชจ๋ฐ”์ผ ์›น๋ทฐํ™”๋ฉด์—์„œ๋Š” ์–ด๋–ป๊ฒŒ ๋ณด์ด๋Š”์ง€ ๋ฐ”๋กœ ํ™•์ธํ•˜๊ณ  ์‹ถ์–ด ์•ฑ ๋‚ด์—์„œ ๋กœ์ปฌ ์„œ๋ฒ„์ฃผ์†Œ๋ฅผ ํ˜ธ์ถœํ–ˆ๋”๋‹ˆ ERR_CLEARTEXT_NOT_PERMITTED ๋ผ๋Š” ์—๋Ÿฌ๊ฐ€ ๋–ด๋‹ค.์•„๋ž˜์™€ ๊ฐ™์ด ์›นํŽ˜์ด์ง€ ์ฃผ์†Œ๊ฐ€ ๋œจ๋ฉด์„œ ๋กœ๋”ฉ์ด ์•ˆ๋œ๋‹ค๊ณ  ํ•จ    ํ•ด๋‹น ์˜ค๋ฅ˜๋Š” https ํ†ต์‹ ์ด ์•„๋‹Œ http ํ†ต์‹ ์„ ๋ณด์•ˆ๋ฌธ์ œ๋กœ ๋ง‰์•„๋‘ฌ์„œ ๊ทธ๋Ÿฌ๋‹ˆ http ํ†ต์‹ ์„ ์˜คํ”ˆํ•˜๋ฉด ๋œ๋‹ค.  ํ•ด๊ฒฐmain > AdroidManifest.xml ํŒŒ์ผ์— ์•„๋ž˜๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๊ณ , ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ์žฌ์‹œ์ž‘ํ•˜๋‹ˆ ์ž˜ ๋˜์—ˆ๋‹ค.  Refhttps://docs.flutter.dev/release/breaking-changes/network-policy-ios-android#allowing-cleartext-connection-for-debug-b..
ยท Python
๊ตฌ๊ธ€ ์ฝ”๋žฉ?์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ…์ŠคํŠธ, ํŒŒ์ด์ฌ ์ฝ”๋“œ๋ฅผ ์ž์œ ๋กญ๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ํ…์ŠคํŠธ ์—๋””ํ„ฐ ํŠน์ง•ํ”„๋กœ๊ทธ๋žจ์„ ์„ค์น˜ํ•˜์ง€์•Š๊ณ ๋„ ์›น ๋ธŒ๋ผ์šฐ์ €๋งŒ ์žˆ์œผ๋ฉด ํŒŒ์ด์ฌ์œผ๋กœ ๊ฐœ๋ฐœ ๊ฐ€๋Šฅ ํŒŒ์ด์ฌ์„ ์‹คํ–‰ํ•˜๊ธฐ์œ„ํ•œ ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋ฅผ pc์— ์„ค์น˜ํ•ด์„œ ์†Œ์Šค์ฝ”๋“œ-์ปดํŒŒ์ผ-์‹คํ–‰ ๋ฐฉ์‹์„ ๊ฑฐ์ณ์•ผ ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅํ•œ ์ „ํ†ต์ ์ธ ๋ฐฉ์‹ ํƒˆํ”ผ ๊ตฌ๊ธ€ ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„ ์ž์›์„ ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉ ์‰ฌ์šด ๊ณต์œ  - ๋‹ค๋ฅธ ์‚ฌ๋žŒ๊ณผ๋„ ์‹ค์‹œ๊ฐ„ ๊ณต์œ  ๊ฐ€๋Šฅ, ๊ตฌ๊ธ€ ๋“œ๋ผ์ด๋ธŒ ์—ฐ๋™ ์‚ฌ์šฉ์ฝ”๋žฉ์—์„œ ํŒŒ์ผ์€ ๋…ธํŠธ๋ถ์ด๋ผ๊ณ  ๋ถ€๋ฆ„์ƒˆ ํŒŒ์ผ ์—ด๊ธฐ File < New notebook ํ™•์žฅ์ž๋Š” .ipynb๋กœ interactive python notebook ์˜ ์•ฝ์žIPython Notebook๋ž€? ํŒŒ์ด์ฌ์„ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์†Œ์Šค์ฝ”๋“œ์™€ ํ…์ŠคํŠธ๋ฅผ ์“ธ ์ˆ˜ ์žˆ๋Š” ์บ”๋ฒ„์Šค ํŒŒ์ผ์ธ Jupyter Notebook์˜ ์ด์ „ ๋ช…์นญ ์ฃผํ”ผํ„ฐ ..
ยท React
ํ„ฐ๋ณด๋ ˆํฌ๋กœ ๊ตฌ์ถ•ํ•œ ํ”„๋กœ์ ํŠธ์˜ ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ์˜ turbo.json ํŒŒ์ผ์€ ์œ„์™€ ๊ฐ™๋‹ค. ์ฐฉ๊ฐํ–ˆ๋˜ ๊ฒƒturbo.json { "pipeline": { "build": { "dependsOn": ["^build"], "outputs": ["dist/**"] }, ... }์ด๊ฑธ ๋ณด๊ณ  ๋นŒ๋“œ ๊ฒฐ๊ณผ๋ฌผ์˜ outputs์ด ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ์˜ dist์—๋„ ์ €์žฅ๋˜๊ฒ ๊ตฌ๋‚˜ ์ƒ๊ฐํ–ˆ๋‹ค. ๊ทผ๋ฐ turbo run build๋ฅผ ํ•˜๊ณ  ์•„๋ฌด๋ฆฌ ์ฐพ์•„๋ด๋„ ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ์— dist ํด๋”๊ฐ€ ๋ณด์ด์ง€์•Š์•˜๋‹ค;;๋ฃจํŠธ์—์„œ ๋นŒ๋“œ๋ฅผ ํ•˜๊ณ ๋‚˜๋ฉด, ์›Œํฌ์ŠคํŽ˜์ด์Šค ์ž‘์—…๋ฌผ์ธ ํŒจํ‚ค์ง€, ํ•˜์œ„ ํ”„๋กœ์ ํŠธ๋“ค์˜ ๋นŒ๋“œ ๊ฒฐ๊ณผ๋ฌผ์ด ๋ฃจํŠธ์—๋„ ๋ฌถ์—ฌ์„œ dist ํด๋”์— ์ €์žฅ์ด ๋œ๋‹ค๊ณ  ์ฐฉ๊ฐํ–ˆ๋˜ ๊ฒƒ์ด๋‹ค.๋นŒ๋“œ Outputs ๊ฒฝ๋กœ๋นŒ๋“œ ๊ฒฐ๊ณผ๋ฌผ์€ ๊ฐ ์›Œํฌ์ŠคํŽ˜์ด์Šค์˜ dist..
ํ”„๋กœ์ ํŠธ์˜ ์˜์กด์„ฑ ํŒจํ‚ค์ง€๋ฅผ ์ตœ์‹  ๋ฒ„์ „(latest version)์œผ๋กœ ์—…๋ฐ์ดํŠธ ํ•˜๋ ค๊ณ ํ–ˆ๋‹ค. npm update๋ผ๋Š” ๋ช…๋ น์–ด๋ฅผ ์ณ์„œ ์—…๋ฐ์ดํŠธ๋ฅผ ํ–ˆ๋Š”๋ฐ package.json ํŒŒ์ผ์— ์ƒˆ๋กœ์šด ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธ๊ฐ€ ์ ˆ~๋Œ€ ๋˜์ง€์•Š์•˜๋‹ค.   ์—๋Ÿฌ๋ฉ”์‹œ์ง€๊ฐ€๋œจ๊ณ  npm audit ์œผ๋กœ ์ ๊ฒ€ํ•ด๋ณด๋ผ๋”๋‹ˆ fix --force ๋ฅผ ํ•ด๋„ package-lock.json์—๋งŒ ๋ช‡๋ช‡ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ๋œจ๊ณ , ํŠน์ • ํŒจํ‚ค์ง€๋ฅผ updateํ•˜๋ž˜๋„ ๊ทธ ํŒจํ‚ค์ง€๋Š” package-lock์—๋„ ์—…๋ฐ์ดํŠธ๊ฐ€ ์•ˆ๋˜๊ณ  ๋‹ค๋ฅธ ์—„ํ•œ ํŒจํ‚ค์ง€๋“ค๋งŒ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋˜์–ด ์žˆ์—ˆ๋‹ค.  ์•Œ๊ณ ๋ณด๋‹ˆ ์˜์กด์„ฑ ํŒจํ‚ค์ง€๋ฅผ `์ตœ์‹  ๋ฒ„์ „์œผ๋กœ` ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ช…๋ น์–ด๋Š” `npm update`๊ฐ€ ์•„๋‹ˆ์—ˆ๋‹ค;;  npm update npm-update ๋Š” package.json์— ์ •์˜๋œ ์ตœ์‹ ๋ฒ„์ „๊นŒ์ง€๋งŒ ์—…๋ฐ์ดํŠธ ๋œ..
์ƒํ™ฉ turbo๋ผ๋Š” ํŒจํ‚ค์ง€๋ฅผ global๋กœ ์„ค์น˜ํ–ˆ๋Š”๋ฐ, terminal์—์„œ ์ฐพ์„ ์ˆ˜ ์—†๋Š” ๋ช…๋ น์–ด๋ผ๋Š” ์—๋Ÿฌ๊ฐ€ ๊ณ„์† ๋–ด๋‹ค. npm list -g ๋ช…๋ น์–ด๋กœ ์–ด๋–ค ํŒจํ‚ค์ง€๋“ค์ด global๋กœ ๊น”๋ ค์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ฉด, ์ž˜ ๋‚˜์˜จ๋‹ค.    ๋ฌธ์ œํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ–ˆ์ง€๋งŒ command not found ์—๋Ÿฌ๋ฅผ ๊ณ„์† ๋งˆ์ฃผํ•œ๋‹ค๋ฉด, ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๋ฌธ์ œ์ด๋‹ค.  ํ•ด๊ฒฐ ๊ธ€๋กœ๋ฒŒ ํŒจํ‚ค์ง€์˜ ์‹คํ–‰ํŒŒ์ผ์ด ์œ„์น˜ํ•˜๋Š” ๊ฒฝ๋กœ๋ฅผ ํ™˜๊ฒฝ๋ณ€์ˆ˜์— ์ถ”๊ฐ€ํ•ด์„œ, ๋ช…๋ น์–ด๋ฅผ ์–ด๋””์—์„œ๋“ ์ง€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.zsh ์‰˜์˜ configuration file (์„ค์ • ํŒŒ์ผ)์ธ `.zshrc` ํŒŒ์ผ์— ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. ํ˜„์žฌ npm global path๋ฅผ ์•Œ์•„๋‚ด๊ธฐ npm config get prefix ๊ทธ๋Ÿผ npm global ํŒจํ‚ค์ง€๊ฐ€ ์„ค์น˜๋˜์–ด์žˆ๋Š” ๊ฒฝ๋กœ๊ฐ€ ๋‚˜์˜จ๋‹ค. .zshrc ํŒŒ์ผ์„ ์ˆ˜์ •..
์ƒํ™ฉ1๋ฒˆ์งธ api ์š”์ฒญ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ์„œ 2๋ฒˆ์งธ api๊ฐ€ ์ฒ˜๋ฆฌ๋˜๋„๋ก ๋™๊ธฐ์ ์œผ๋กœ ์‹คํ–‰์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜๊ณ  ์‹ถ๋‹ค. 1๋ฒˆ์งธ api ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๊ธฐ์กด ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธ //์‚ฌ์šฉ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ checkCurrentPassword: builder.mutation({ query: (password: string) => ({ url: ๋น„๋ฐ€๋ฒˆํ˜ธํ™•์ธ ์š”์ฒญ ์ฃผ์†Œ, method: 'POST', headers: { 'Content-type': 'text/plain', }, body: password, }), }), 2๋ฒˆ์งธ api์‚ฌ์šฉ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ณ€๊ฒฝ//๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝupdatePasswordQuery: b..
ยท Flutter
๋ชฉํ‘œํ”Œ๋Ÿฌํ„ฐ APP์—์„œ webview_flutter ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•ด์„œ ์ตœ์†Œํ•œ์˜ ์ฝ”๋“œ๋กœ ๋ฆฌ์•กํŠธ ์›นํŽ˜์ด์ง€๋ฅผ ๋„์šด๋‹ค. ํ”Œ๋Ÿฌํ„ฐ ํ”„๋กœ์ ํŠธ ์ค€๋น„https://hanaindec.tistory.com/entry/flutter-%EC%9B%B9%EB%B7%B0#2.%20%ED%94%8C%EB%9F%AC%ED%84%B0%20%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%20%EC%83%9D%EC%84%B1-1 flutter ์„ค์น˜ ๋ฐ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ • - VS Code, Android Studio ํ™˜๊ฒฝ (Mac silicon)ํ”Œ๋Ÿฌํ„ฐ๋กœ ์•ฑ ๊ฐœ๋ฐœ์„ ํ•ด๋ณด๋ ค๊ณ  ํ”Œ๋Ÿฌํ„ฐ๋ฅผ ์„ค์น˜ํ•˜๊ณ  ํ•„์š”ํ•œ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•ด๋ณด์•˜๋‹ค.๋‚˜๋Š” ์›๋ž˜ ์›น ํ”„๋ก ํŠธ ๊ฐœ๋ฐœ์ž์ด๋ฏ€๋กœ VS Code๋Š” ์„ค์น˜๋˜์–ด์žˆ์–ด ์•ฑ ๊ฐœ๋ฐœ editor๋„ VS Code๋ฅผ ๊ทธ๋Œ€๋กœ ..
hana1203
hana's lab ๐ŸŒฑ