๋ฐ˜์‘ํ˜•

nextjs,tailwindcss,vercel 75

Address the Layout Shift Issues ํ•ด๊ฒฐ, ํŽ˜์ด์ง€ ์„ฑ๋Šฅ๊ณผ SEO ๊ฐœ์„ 

๋ ˆ์ด์•„์›ƒ ์‹œํ”„ํŠธ ๋ฌธ์ œ ํ•ด๊ฒฐํ•˜๊ธฐ: ์‚ฌ์šฉ์ž ๊ฒฝํ—˜๊ณผ SEO ๊ฐœ์„ ๋ ˆ์ด์•„์›ƒ ์‹œํ”„ํŠธ๋Š” ์‚ฌ์šฉ์ž ๊ฒฝํ—˜๊ณผ SEO ์„ฑ๋Šฅ์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์›์ธ๊ณผ ํšจ๊ณผ์ ์ธ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.๋ ˆ์ด์•„์›ƒ ์‹œํ”„ํŠธ ์ดํ•ดํ•˜๊ธฐ๋ ˆ์ด์•„์›ƒ ์‹œํ”„ํŠธ๋Š” ํŽ˜์ด์ง€ ๋กœ๋”ฉ ๊ณผ์ •์—์„œ ์š”์†Œ๋“ค์ด ์˜ˆ๊ธฐ์น˜ ์•Š๊ฒŒ ์ด๋™ํ•˜๋Š” ํ˜„์ƒ์ž…๋‹ˆ๋‹ค. ๋ˆ„์  ๋ ˆ์ด์•„์›ƒ ์‹œํ”„ํŠธ(CLS) ์ง€ํ‘œ๋Š” ์ด๋Ÿฌํ•œ ์‹œ๊ฐ์  ๋ถˆ์•ˆ์ •์„ฑ์„ ์ธก์ •ํ•˜๋ฉฐ, Google์€ ์ตœ์ ์˜ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์œ„ํ•ด 0.1 ๋ฏธ๋งŒ์˜ ์ ์ˆ˜๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.๋ ˆ์ด์•„์›ƒ ์‹œํ”„ํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ์ƒํ™ฉ:ํฌ๊ธฐ๊ฐ€ ์ •์˜๋˜์ง€ ์•Š์€ ์ด๋ฏธ์ง€ ๋กœ๋”ฉ๋Šฆ๊ฒŒ ๋กœ๋“œ๋˜๋Š” ์›น ํฐํŠธ๋กœ ์ธํ•œ ํ…์ŠคํŠธ ์žฌ๋ฐฐ์น˜๋™์  ์ฝ˜ํ…์ธ  ์‚ฝ์ž… (๊ด‘๊ณ , ํŒ์—… ๋“ฑ)์„œ๋“œํŒŒํ‹ฐ ๋ฆฌ์†Œ์Šค๊ฐ€ ํŽ˜์ด์ง€ ๋ ˆ์ด์•„์›ƒ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๊ฒฝ์šฐ์ฃผ์š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•1. ์ด๋ฏธ์ง€ ์ตœ์ ํ™”   ์ด๋ฏธ์ง€๊ฐ€ ๋กœ๋“œ๋˜๊ธฐ ์ „์— ๊ณต..

expo router ๋กœ ์ฒ˜์Œ๋ถ€ํ„ฐ ์•ฑ ๊ฐœ๋ฐœ ๋ช…๋ น์–ด ์ด์ •๋ฆฌ , android react native ๊ฐœ๋ฐœ

1. expo router  ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ npx create-expo-app@latest -e with-router margin-calculator margin-calculator๋Š” ์ƒ์„ฑํ•  ์ด๋ฆ„ 2, expo go ์•ฑ ์„ค์น˜ ,  npm run android - npm run ios npx expo start๋กœ ์‹คํ–‰ํ•˜๊ณ  ๊ฐœ๋ฐœํ•˜๊ธฐ expo router ๊ธฐ๋ณธ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐapp/  โ”œโ”€โ”€ (tabs)                   // ํƒญ ๋„ค๋น„๊ฒŒ์ด์…˜ ๊ทธ๋ฃน  โ”‚   โ”œโ”€โ”€ _layout.tsx         // ํƒญ ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ ˆ์ด์•„์›ƒ  โ”‚   โ”œโ”€โ”€ index.tsx           // ํ™ˆ ํƒญ ์Šคํฌ๋ฆฐ  โ”‚   โ”œโ”€โ”€ profile/            // ํ”„๋กœํ•„ ๊ด€๋ จ ์Šคํƒ ๋„ค๋น„๊ฒŒ์ด์…˜  โ”‚   โ”‚   ..

vercel 404 not found ์—๋Ÿฌ ์ดˆ๊ฐ„๋‹จ ํ•ด๊ฒฐ๋ฒ•

์ƒˆ๋กœ์šด ์›น์‚ฌ์ดํŠธ ๊ฐœ์„ค ํ›„ ์ •์ƒ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์—ˆ๋Š”๋ฐ ๋“ค์–ด๊ฐ€๋ณด๋ฉด not found ์—๋Ÿฌ๊ฐ€ ๋–ด๋‹ค  ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์˜ setting์œผ๋กœ ๊ฐ€์„œ framework preset ๋ฅผ other ์—์„œ Next.js๋กœ ๋ฐ”๊พธ๊ณ , ๋‹ค์‹œ redeployํ•ด์ฃผ๋ฉด ๋œ๋‹ค.๋‹ค์‹œ ๋ฐฐํฌ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ์ž˜ ๋œจ๋Š” ๋ชจ์Šต์ด๋‹ค

[react native] ์• ๋“œ๋ชน ํ…Œ์ŠคํŠธ ๊ด‘๊ณ  ์„ค์ •ํ•˜๋Š” ๋ฒ•, ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ๊ฐœ๋ฐœ , expo router

1. ๊ตฌ๊ธ€ ์• ๋“œ๋ชน์— ์•ฑ ์ถ”๊ฐ€, ๊ด‘๊ณ  ๋‹จ์œ„ ์„ค์ •react-native-google-mobile-ads ์„ค์น˜ 2. app.json์— plugins ์— ์•ฑ id ์ถ”๊ฐ€(์‹ค์ œ ์•ฑ id ๊ฐ’ ๋„ฃ๊ธฐ) "plugins": [      [        "react-native-google-mobile-ads",        {          "androidAppId": "ca-app-pub- xxx~xxx",          "iosAppId": "ca-app-pub- xxx~xxx"        }      ],  3. ์ „์ฒด ํ™”๋ฉด ํ•˜๋‹จ์— ๋ฐฐ๋„ˆ ๊ด‘๊ณ  ๋„ฃ๊ธฐ ์ฝ”๋“œ_layout.tsx์— ์ ์šฉimport { BannerAd, BannerAdSize, TestIds } from "react-native-google-mobile-..

expo router ๋กœ react native ์•ฑ ๊ฐœ๋ฐœ ๋ช…๋ น์–ด ์ด์ •๋ฆฌ

1. ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ npx create-expo-app@latest -e with-router margin-calculator margin-calculator๋Š” ์ƒ์„ฑํ•  ์ด๋ฆ„ 2. ํŒจํ‚ค์ง€๋“ค ์„ค์น˜npx expo install react-native-google-mobile-ads @react-native-async-storage/async-storage expo-localization๊ด‘๊ณ , ํ˜„์ง€ํ™”(๋‹ค๊ตญ์–ด ์•ฑ) 3. ์• ๋“œ๋ชน ๊ด‘๊ณ  ๋ถ™์ด๊ณ  ์‹คํ–‰ํ•˜๊ธฐ- ๋น„๊ณต๊ฐœํ…Œ์ŠคํŠธ ๊นŒ์ง€๋Š” ํ…Œ์ŠคํŠธ๊ด‘๊ณ  ๋ถ™์ผ๊ฒƒ(์• ๋“œ๋ชน์€ expo go ํ˜ธํ™˜ ์•ˆ๋จ)npx expo prebuild --platform androidnpx expo run:android ์‹คํ–‰์˜ค๋ฅ˜๋‚˜๋ฉดnpx expo prebuild --clean --platform android(k..

Params,Props ๋ž€?

Params์™€ Props๋Š” ์šฐ๋ฆฌ ํ”„๋กœ๊ทธ๋žจ์—๊ฒŒ "์–ด๋–ค ์ •๋ณด๋ฅผ ๋ฐ›์„ ๊ฑฐ์•ผ?"๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ๋ผ๋ฒจ ๊ฐ™์€ ๊ฑฐ์˜ˆ์š”.Params(๋งค๊ฐœ๋ณ€์ˆ˜):์›น ์ฃผ์†Œ์—์„œ ๋„˜์–ด์˜ค๋Š” ์ •๋ณด๋ฅผ ๋‹ด์•„์š”์—ฌ๊ธฐ์„œ๋Š” tag๋ผ๋Š” ์ด๋ฆ„์˜ ๋ฌธ์ž์—ด์„ ๋ฐ›์•„์š”์˜ˆ๋ฅผ ๋“ค์–ด /cute ํŽ˜์ด์ง€๋ฉด, tag๋Š” "cute"๊ฐ€ ๋˜๋Š” ๊ฑฐ์ฃ type Params = {  tag: string;  // ์ด ํŽ˜์ด์ง€์˜ ํƒœ๊ทธ};Props(์†์„ฑ):์ปดํฌ๋„ŒํŠธ(ํŽ˜์ด์ง€)์—๊ฒŒ ์ „๋‹ฌ๋˜๋Š” ๋ชจ๋“  ์ •๋ณด๋ฅผ ์„ค๋ช…ํ•ด์š”์—ฌ๊ธฐ์„œ๋Š” Params๋ฅผ Promise(์•ฝ์†)๋กœ ๊ฐ์‹ธ์„œ ๋ณด๋‚ด์š”Promise๋Š” "๋‚˜์ค‘์— ๊ฐ’์„ ์ค„๊ฒŒ!"๋ผ๊ณ  ์•ฝ์†ํ•˜๋Š” ๊ฑฐ์˜ˆ์š”type Props = {  params: Promise;  // Params๋ฅผ ๋‚˜์ค‘์— ์ค„๊ฒŒ!};์ •๋ฆฌํ•˜๋ฉด, ์ด ์ฝ”๋“œ๋Š” "๋‚˜์ค‘์— ํƒœ๊ทธ ์ •๋ณด๋ฅผ ์ค„๊ฒŒ!"๋ผ๊ณ  Next.js์— ์•Œ๋ ค์ฃผ๋Š” ๊ฑฐ์˜ˆ์š”..

์•ˆ๋“œ๋กœ์ด๋“œ ๋น„๊ณต๊ฐœ ํ…Œ์ŠคํŠธ ํ…Œ์Šคํ„ฐ ๊ตฌ๊ธ€ ๊ทธ๋ฃน์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๋ฒ•

ํ’ˆ์•—์ด ํ•˜๋‹ค๊ฐ€ ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์ด ์žˆ์–ด์„œ ๊ธฐ๋กhttps://cafe.naver.com/devsharing ์—๋„ ๊ธ€ ์”€ ์ฒ˜์Œ ์•ฑ ์ถœ์‹œํ•˜๊ณ  ์žˆ๋Š”๋ฐ ๋งŽ์€ ๋ถ„๋“ค์ด ํ…Œ์Šคํ„ฐ๋ฅผ ์ง์ ‘ ์ถ”๊ฐ€ํ•˜์‹œ๊ณ  ๋“ฑ๋กํ•˜์‹œ๋”๋ผ๊ตฌ์š”๊ตฌ๊ธ€ ๊ทธ๋ฃน ์“ฐ์‹œ๋ฉด ๊ฐ„ํŽธํ•˜๊ฒŒ ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜ ์žˆ์–ด์„œ ์ œ์•ˆ๋“œ๋ฆฝ๋‹ˆ๋‹คโ€‹โ€‹[๊ฐœ๋ฐœ์ž ์„ค์ •]โ€‹1. google groups ์—์„œ ํ…Œ์Šคํ„ฐ ๊ทธ๋ฃน๋งŒ๋“ค๊ธฐhttps://groups.google.com/ ์—์„œ create groupํ•ด์„œ ๋งŒ๋“ค๋ฉด ๊ทธ๋ฃน๊ณผ ๊ทธ๋ฃน์˜ ๋ฉ”์ผ ์ฃผ์†Œ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹คโ€‹โ€‹2. ํ…Œ์Šคํ„ฐ๋ฅผ google groups๋กœ ์„ค์ •ํ•˜๊ธฐโ€‹play console์—์„œ ํ…Œ์Šคํ„ฐ๋ฅผ ์ด๋ฉ”์ผ ๋ชฉ๋ก์ด ์•„๋‹Œ google ๊ทธ๋ฃน์Šค๋กœ ์„ค์ • google groups์—์„œ ๊ทธ๋ฃน ๋งŒ๋“ค๋ฉด ์ฃผ์†Œ๊ฐ€ ์ƒ๊ธฐ๋Š”๋ฐ ๊ทธ ์ฃผ์†Œ๋กœ ์„ค์ •ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹คโ€‹โ€‹3. ๊ทธ๋ฃน url๊ณผ ์•ฑ/์›น ๋งํฌ ๊ณต์œ ํ•˜๊ธฐโ€‹๊ทธ..

์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ์•„์ด์ฝ˜ ์•ฑ ์ด๋ฆ„ ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š๋Š” ์˜ค๋ฅ˜ ํ•ด๊ฒฐ

app.json์„ ์ž˜ ์„ธํŒ…ํ•ด๋„ ๋ง‰์ƒ ๋ฐฐํฌ ํ›„ ๋‹ค์šด๋ฐ›์œผ๋ฉด ์•ฑ ์•„์ด์ฝ˜, ์•ฑ ์ด๋ฏธ์ง€๊ฐ€ ์ œ๋Œ€๋กœ ๋ฐ˜์˜์ด ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•  npx expo prebuild --clean  npx expo prebuild --platform androidnpx expo run:android cd android./gradlew clean./gradlew bundleRelease

react native app expo ์•ฑ ์ด๋ฆ„ ,์•ฑ ์•„์ด์ฝ˜ ์„ค์ •ํ•˜๊ธฐ (๋‹ค๊ตญ์–ด)

๋ฌธ์ œ๋Š” Android์˜ strings.xml ํŒŒ์ผ๊ณผ adaptive icon ์„ค์ •์ด ์ œ๋Œ€๋กœ ๋˜์–ด์žˆ์ง€ ์•Š์•„์„œ ๋ฐœ์ƒํ–ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ˆ˜์ •ํ•ด๋ณด์„ธ์š”:1. ๋จผ์ € android/app/src/main/res/values/strings.xml ํŒŒ์ผ์„ ์ˆ˜์ •:    Dividend Calculator ํ•œ๊ตญ์–ด ๋ฒ„์ „์„ ์œ„ํ•ด android/app/src/main/res/values-ko/strings.xml ํŒŒ์ผ ์ƒ์„ฑ:strings.xml    ๋ฐฐ๋‹นํˆฌ์ž ๊ณ„์‚ฐ๊ธฐ app.json ํŒŒ์ผ์—์„œ ์•„์ด์ฝ˜ ์„ค์ • ํ™•์ธ:app.json}์•„์ด์ฝ˜ ์ด๋ฏธ์ง€ ํŒŒ์ผ์ด ์˜ฌ๋ฐ”๋ฅธ ์œ„์น˜์— ์žˆ๋Š”์ง€ ํ™•์ธ:./assets/images/icon.png./assets/images/adaptive-icon.png์•„์ด์ฝ˜ ์š”๊ตฌ์‚ฌํ•ญ:icon.png: 1024x1..

๋ฒ„์ „ ์ฝ”๋“œ๋Š” ์ด๋ฏธ ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ฒ„์ „ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์„ธ์š”.

์˜ค๋ฅ˜ ๋‚ด์šฉ๋ฒ„์ „ ์ฝ”๋“œ๋Š” ์ด๋ฏธ ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ฒ„์ „ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์„ธ์š”. ๋ฌธ์ œ์ƒํ™ฉ์•ˆ๋“œ๋กœ์ด๋“œ react native ์•ฑ bundle ํŒŒ์ผ ์ƒˆ ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธ ํ• ๋•Œ , ๋ฒ„์ „ ์ฝ”๋“œ๋Š” ์ด๋ฏธ ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ฒ„์ „ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์„ธ์š”.๋ผ๋Š” ์˜ค๋ฅ˜ ๋ฐœ์ƒ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•build.gradle, app.json ํŒŒ์ผ์˜ versionCode ๋ฅผ ์˜ฌ๋ ค์ฃผ์–ด์•ผ ํ•œ๋‹ค.

๋ฐ˜์‘ํ˜•