Skip to content

mock-rp3/rp3_test_android_carrot_market_bono

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

82 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ“Œ API Sheet

๐Ÿ“Œ ์•ฑ ๋™์˜์ƒ

๐Ÿ“Œ ์ผ๋ถ€ ํ™”๋ฉด Preview

1 2 3 4


๐Ÿ“Œ 1์ฃผ์ฐจ ๋ชฉํ‘œ ์ž‘์—… ๋ฒ”์œ„

2021/08/14 ~ 2021/08/17

  • ๋กœ๊ทธ์ธ ํ™”๋ฉด ( 08/14 ) โ†’ ( 08/16 )
  • ํšŒ์›๊ฐ€์ž… ํ™”๋ฉด ( 08/14 ) โ†’ ( 08/16 )
  • ํ™ˆ ํ™”๋ฉด ( 08/15 ) โ†’ ( 08/16 )
  • ์Šคํ”Œ๋ž˜์‰ฌ ํ™”๋ฉด ( 08/17 )
  • ๋ผˆ๋Œ€ ๋ ˆ์ด์•„์›ƒ ๊ตฌ์„ฑ(๋„ค๋น„๊ฒŒ์ด์…˜ ํƒญ ๋“ฑ) ( 08/14 ) โ†’ ( 08/16 )
  • ์ด๋ฏธ์ง€ ๋ฆฌ์†Œ์Šค ๊ตฌํ•˜๊ธฐ
  • ์ž๋™ ๋กœ๊ทธ์ธ ๊ตฌํ˜„ ( 08/20 )

API

  • Open API๋กœ ๋„๋กœ๋ช… ์ฃผ์†Œ ๊ฐ€์ ธ์˜ค๊ธฐ >> ๋‚˜์ค‘์— ํ•ด๋ณด๊ธฐ
  • ํšŒ์›๊ฐ€์ž… API ์—ฐ๋™ ( 08/16 ) >>> ๋กœ๊ทธ์ธ ๋ฐ ํšŒ์›๊ฐ€์ž… ํ†ตํ•ฉ API
  • ๋กœ๊ทธ์ธ API ์—ฐ๋™ >> ์„œ๋ฒ„๊ฐ€ ์—ด๋ฆฌ๋ฉด ํ…Œ์ŠคํŠธ ํ•˜๊ธฐ >> ( 08/17 )

๐Ÿ“Œ 2์ฃผ์ฐจ ๋ชฉํ‘œ ์ž‘์—… ๋ฒ”์œ„

2021/08/17 ~ 2021/08/24
๊ฐœ์ธ ๋ชฉํ‘œ: ํ•˜๋ฃจ์— 1.5๊ฐœ ์™„์„ฑํ•˜๊ธฐ ( 17 ๐Ÿ˜Ž / 18 ๐Ÿ˜Ž / 19 ๐Ÿ˜Ž / 20 ๐Ÿ˜ญ / 21 ๐Ÿ˜ญ / 22 ๐Ÿ˜Ž / 23 ๐Ÿ˜Ž )


๋ ˆ์ด์•„์›ƒ

  • ์ƒํ’ˆ ๋””ํ…Œ์ผ ํ™”๋ฉด ( 08/17 )
  • ๋‚˜์˜ ๋‹น๊ทผ ํŽ˜์ด์ง€ ( 08/18 ) โ†’ ( 08/19 )
  • ํŒ๋งค๋‚ด์—ญ ( 08/19 )
  • ์ƒํ’ˆ ๋“ฑ๋ก ( 08/19 )
  • ์นดํ…Œ๊ณ ๋ฆฌ ( 08/20 )
  • ๊ฒ€์ƒ‰ํ™”๋ฉด ( 08/22 )
  • ์•ฑ ์„ค์ • ( 08/20 )
  • ํšŒ์›๊ฐ€์ž… ํ™”๋ฉด ๋‹ค์‹œ ๊ตฌํ˜„ํ•˜๊ธฐ ( 08/18 )
  • ์ž๋™ ๋กœ๊ทธ์ธ
  • ๋™๋„ค์ƒํ™œ

API

  • ๋‚˜์˜ ๋‹น๊ทผ ํŽ˜์ด์ง€ API ( 08/19 )
  • ์ƒˆ๋กœ ์ž‘์„ฑ๋œ ํšŒ์›๊ฐ€์ž… API >> ์„œ๋ฒ„๊ฐ€ ์—ด๋ฆฌ๋ฉด ํ…Œ์ŠคํŠธ ํ•˜๊ธฐ ( 08/18 )
  • ์ƒˆ๋กœ ์ž‘์„ฑ๋œ ๋กœ๊ทธ์ธ API ( 08/19 )
  • ์ „์ฒด ๊ฒŒ์‹œ๊ธ€ ์กฐํšŒ API >> ์„œ๋ฒ„๊ฐ€ ์—ด๋ฆฌ๋ฉด ํ…Œ์ŠคํŠธ ํ•˜๊ธฐ ( 08/21 )
  • ์ƒํ’ˆ ๋””ํ…Œ์ผ ํ™”๋ฉด API ( 08/22 ) >> Image๋ฅผ vp2์— ์—ฐ๊ฒฐ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅด๊ฒ ์Œ ( 08/26 )
  • ํŒ๋งค๊ธ€ ์ž‘์„ฑ API >> ๋ฉ”์ธํ™”๋ฉด์— ๋ฐ˜์˜๋˜๊ฒŒํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅด๊ฒ ์Œ >> ์„œ๋ฒ„ ๋ฌธ์ œ >> ์„œ๋ฒ„์— ์ˆ˜์ •์š”์ฒญ ํ›„ ์ •์ƒ ๋ฐ˜์˜ ( 08/23 )
  • ํŠน์ • ์œ ์ € ๋‹‰๋„ค์ž„์œผ๋กœ ๊ฒ€์ƒ‰ API ( 08/23 )
  • ๊ฒŒ์‹œ๊ธ€ ์ œ๋ชฉ์œผ๋กœ ๊ฒ€์ƒ‰ API ( 08/23 )

๐Ÿ“Œ ๋งˆ์ง€๋ง‰ ๋ชฉํ‘œ ์ž‘์—… ๋ฒ”์œ„

2021/08/24 ~ 2021/08/27

firebase

  • ๊ฐค๋Ÿฌ๋ฆฌ์—์„œ ๋ถˆ๋Ÿฌ์˜จ ์‚ฌ์ง„ firestore์— ์ €์žฅํ•˜๊ธฐ
    image
  • ๊ฐค๋Ÿฌ๋ฆฌ์˜ ์‚ฌ์ง„์„ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ users-permission ํ—ˆ์šฉ, ๊ฑฐ์ ˆ ๋ฐ›๊ธฐ

๋ ˆ์ด์•„์›ƒ

  • ํŒ๋งค๋‚ด์—ญ
  • ๊ฒ€์ƒ‰ํ™”๋ฉด
  • ๋™๋„ค์ƒํ™œ
  • ์นดํ…Œ๊ณ ๋ฆฌ ์„ ํƒ ์‹œ ๋‚˜์˜ค๋Š” ํ™”๋ฉด

API

  • ๊ฒŒ์‹œ๊ธ€ ์‚ญ์ œํ•˜๊ธฐ API
  • ๊ฒŒ์‹œ๊ธ€ ์ˆ˜์ •ํ•˜๊ธฐ API
  • ์œ ์ € ํ”„๋กœํ•„ ๋ณ€๊ฒฝ API
  • ์นดํ…Œ๊ณ ๋ฆฌ ์กฐํšŒ API
  • ์ƒํ’ˆ ํŒ๋งค๊ธ€ ์กฐํšŒ์ˆ˜ ์ฆ๊ฐ€ API
  • ๋žœ๋ค๋งค๋ฌผ ์กฐํšŒ API
  • ํŒ๋งค์ค‘ ์กฐํšŒ API
  • ์ƒํ’ˆ ๊ฒŒ์‹œ๊ธ€ ๊ด€์‹ฌ ์„ค์ • API
  • ์ƒํ’ˆ ๊ฒŒ์‹œ๊ธ€ ๊ด€์‹ฌ ํ•ด์ œ API
  • ํŒ๋งค ๊ฒŒ์‹œ๊ธ€ ์ƒํƒœ ๋ณ€๊ฒฝ API >> ์—ฎ๊ธด ํ–ˆ๋Š”๋ฐ productIdx ์•ˆ ๋ฐ›์•„์™€์ง ๋ณ€๊ฒฝ์ด ์•ˆ๋˜์„œ ํฌ๊ธฐ
  • ๋™๋„ค์ƒํ™œ ์กฐํšŒ API
  • ๋™๋„ค์ƒํ™œ ๊ธ€์“ฐ๊ธฐ API
  • ๋กœ๊ทธ์ธ ๋ฐ ํšŒ์›๊ฐ€์ž… ํ†ตํ•ฉ API

๐Ÿ“Œ ๊ฐœ๋ฐœ์ผ์ง€

2021/08/14 ~ 2021/08/27 ๊นŒ์ง€์˜ ๊ณผ์ •์„ ๋‹ด์€ ๊ฐœ๋ฐœ์ผ์ง€

2021๋…„ 08์›” 14์ผ ๐ŸŒž

  • ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์ถ• ( 70% โœ”)
    • Sourcetree ์‚ฌ์šฉ์— ์–ด๋ ค์›€์ด ์žˆ์–ด GitHub Desktop ์œผ๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ์ง„ํ–‰ํ•˜๋„๋ก ํ•จ.
  • ๋ผˆ๋Œ€ ๋ ˆ์ด์•„์›ƒ ๊ตฌ์„ฑ ( 50 % โœ”)

2021๋…„ 08์›” 15์ผ ๐ŸŒž๐Ÿ’ง

  • ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์ถ• ( 100% โœ”)
  • ๋กœ๊ทธ์ธ ํ™”๋ฉด ๊ตฌํ˜„ ( 90% โœ”)
  • ์ด๋ฏธ์ง€ ๋ฆฌ์†Œ์Šค ๊ตฌํ•˜๊ธฐ

2021๋…„ 08์›” 16์ผ ๐ŸŒž

  • ๋กœ๊ทธ์ธ ํ™”๋ฉด ๊ตฌํ˜„ ( 100% โœ”)
  • ํšŒ์›๊ฐ€์ž… ํ™”๋ฉด ๊ตฌํ˜„ ( 100% โœ”)
  • ํšŒ์›๊ฐ€์ž… API ์—ฎ๊ธฐ ( 90% โœ”)
  • ํ™ˆ ํ™”๋ฉด ( 100% โœ”)
  • ์Šคํ”Œ๋ž˜์‰ฌ ํ™”๋ฉด ( 100% โœ”)
  • ๋ผˆ๋Œ€ ๋ ˆ์ด์•„์›ƒ ๋””ํ…Œ์ผ ๊ตฌ์„ฑ ( 100% โœ”)
  • ์ด๋ฏธ์ง€ ๋ฆฌ์†Œ์Šค ๊ตฌํ•˜๊ธฐ

2021๋…„ 08์›” 17์ผ ๐ŸŒช๐ŸŒง [1์ฐจ ํ”ผ๋“œ๋ฐฑ]

  • ๋กœ๊ทธ์ธ API ์—ฐ๋™ ( 100% โœ” ) ์ง€๋งŒ ๋กœ๊ทธ์ธ ๋ฐฉ์‹ ๋ณ€๊ฒฝ์œผ๋กœ ์ˆ˜์ •ํ•˜๊ธฐ
  • ์Šคํ”Œ๋ž˜์‰ฌ ํ™”๋ฉด ( 100% โœ”)
  • ์ž๋™ ๋กœ๊ทธ์ธ

๐Ÿ“Œ 1์ฐจ ํ”ผ๋“œ๋ฐฑ

  • floating action button ๋ฉ”์ธ ์•กํ‹ฐ๋น„ํ‹ฐ์— ๊ตฌํ˜„ํ•˜๊ธฐ ( ์™„๋ฃŒ โœ” )
    • int๋กœ ๋‚˜๋ˆ ์ค˜์„œ ๋™๋„ค์ƒํ™œ์ด๋ž‘ ๋‹ค๋ฅด๊ฒŒ ๋‚˜์˜ค๋„๋กํ•˜๊ณ , ๋‚˜๋จธ์ง€ ํ”„๋ž˜๊ทธ๋จผํŠธ ๋ˆŒ๋ €์„ ๋•Œ๋Š” ์—†์• ์ฃผ๊ธฐ ( ์™„๋ฃŒ โœ” )
      • ์‹œ๋„ ํ•ด๋ณธ์  ์—†์–ด์„œ ๋‚œ์ด๋„๋ฅผ ๋ชจ๋ฅด๊ฒ ์Œ. ๋‹ค๋ฅธ ๊ฒƒ๋“ค ์šฐ์„  ์ง„ํ–‰ํ•˜๊ณ  ์‹œ๋„ํ•ด๋ณผ ์˜ˆ์ • ( ์•„์ฃผ ๊ฐ„๋‹จ )
  • ๊ฐœ๋ฐœ ์šฐ์„ ์ˆœ์œ„์˜ 7๋ฒˆ ~ 10๋ฒˆ ์‚ฌ์ด๋กœ ๊ตฌํ˜„ํ•ด๋ณด๊ธฐ
  • divider ์ฝ”ํ‹€๋ฆฐ ์ฝ”๋”ฉ ๋ง๊ณ  item์— ์„  ํ•˜๋‚˜ ๊ทธ์–ด์ค˜๋„ ๋จ. ( ์™„๋ฃŒ โœ” )
  • ์ฒ˜์Œ ํผ๋ธ”๋ฆฌ์‹ฑ ํ€„๋ฆฌํ‹ฐ๋ฅผ ์ž˜ ์žก์•„๋‘๊ธฐ (๋‚˜์ค‘์— ํ•ด์•ผ์ง€ ํ•˜์ง€๋ง๊ธฐ !!)
  • ๐Ÿšจ ๋กœ๊ทธ์ธ api๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ํšŒ์›๊ฐ€์ž… api๋ฅผ ์‚ฌ์šฉ์ž api๋กœ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ•จ. (ํšŒ์›๊ฐ€์ž…๊ณผ ๋กœ๊ทธ์ธ์„ ๋™์‹œ์— ํ•œ๋‹ค.)

[์†Œ์…œ ๋กœ๊ทธ์ธ ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰]

 โ†’ ์„œ๋ฒ„์—์„œ ๋ฌธ์ž ์ธ์ฆ๋ฐฉ์‹์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์–ด๋ ค์›Œ, id/pw/profileImage/nickname์„ ๋ฐ›์•„ ํšŒ์›๊ฐ€์ž… ํ›„ 
   id/pw๋กœ ๋กœ๊ทธ์ธํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ƒ์˜ ํ›„ ๋ณ€๊ฒฝํ•˜์˜€์œผ๋‚˜ (issue 2๋ฒˆ ์ฐธ๊ณ ) 
   ํด๋ผ์—์„œ ๊ธฐ์กด ๋””์ž์ธ์„ ๋ณ€๊ฒฝํ•ด์„œ ์ œ์ž‘ํ•ด์•ผ ํ•˜๋Š” ์–ด๋ ค์›€์ด ๋ฐœ์ƒํ•จ.
 
    โ†’  ๋กœ๊ทธ์ธ/ํšŒ์›๊ฐ€์ž…์—์„œ ๊ธฐ์กด ๋””์ž์ธ ๋ฐฉ์‹ (๋ฒˆํ˜ธ ์ž…๋ ฅ ํ›„ ์ธ์ฆ๋ฒˆํ˜ธ๋ฅผ ๋ฐ›๊ณ  ์ธ์ฆ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋กœ๊ทธ์ธ์ด ๋˜๋Š” ๋ฐฉ์‹)์„ ์‚ฌ์šฉํ•˜๋˜,
       ๋ฒˆํ˜ธ๋Š” id, ์ธ์ฆ๋ฒˆํ˜ธ๋Š” password๋กœ ๊ตฌํ˜„ํ•˜๋„๋ก ํ•จ. (์ธ์ฆ๋ฒˆํ˜ธ๋Š” ๋”ฐ๋กœ ๋ฐœ๊ธ‰๋ฐ›์ง€ ์•Š๋Š”๋‹ค.)
  
        โ†’  ์„œ๋ฒ„์—์„œ๋Š” ๊ตฌํ˜„ ์–ด๋ ค์›€์„ ์ค„์ด๊ณ , ํด๋ผ์—์„œ๋Š” ๋””์ž์ธ/ํผํฌ๋จผ์Šค ํ€„๋ฆฌํ‹ฐ๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ๊ฒŒ๋จ !
      
  • ์ƒํ’ˆ ๋””ํ…Œ์ผ ํ™”๋ฉด ๊ตฌํ˜„ ( 100% โœ”)
  • ๋กœ๊ทธ์ธํ™”๋ฉด ๋‹ค์‹œ ๊ตฌํ˜„ํ•˜๊ธฐ
  • [Q] ์„œ๋ฒ„๊ฐ€ ์„œ๋ฒ„๋ฅผ ์—ด์—ฌ์ค˜์•ผ๋งŒ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ issue๊ฐ€ ์žˆ์—ˆ์œผ๋‚˜,
    • [A] ์˜ค๋Š˜์ด๋‚˜ ๋‚ด์ผ aws์„œ๋ฒ„๋กœ ์˜ฎ๊ธฐ๋ฉด ์•ž์œผ๋กœ ์„œ๋ฒ„๊ฐ€ ๊ณ„์† ์—ด๋ ค์žˆ์„ ๊ฑฐ๋ผ๊ณ  ๋ง์”€ํ•ด์ฃผ์‹ฌ!

2021๋…„ 08์›” 18์ผ ๐ŸŒž๐ŸŒช

Thread๋ฅผ ์ œ์™ธํ•˜๊ณ  ์‚ฝ์งˆ์—†์ด ์ฐฉ์ฐฉ ์ง„ํ–‰ํ•จ !

  • [Q] ๋กœ๊ทธ์ธ/ํšŒ์›๊ฐ€์ž… ํด๋ผ ๋ณ€๊ฒฝ์‚ฌํ•ญ ์„œ๋ฒ„์—๊ฒŒ ์ „๋‹ฌํ•˜๊ณ  ์„œ๋ฒ„ ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ „๋‹ฌ๋ฐ›๊ธฐ

    • [A] ํšŒ์›๊ฐ€์ž… ์‹œ์—๋Š” ๋ฒˆํ˜ธ๋ฅผ ์•„์ด๋””, ์ธ์ฆ๋ฒˆํ˜ธ๋ฅผ ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ๋ฐ›์ง€๋งŒ ๋กœ๊ทธ์ธํ•  ๋•Œ๋Š” ์ผ๋‹จ DB์— ์žˆ๋Š” ๋ฒˆํ˜ธ๋ผ๋ฉด ๋กœ๊ทธ์ธ๋˜๋Š” ๊ตฌ์กฐ๋กœ ์ˆ˜์ •ํ–ˆ๋‹ค๋Š” ๋‹ต๋ณ€ ๋ฐ›์Œ !
  • ํšŒ์›๊ฐ€์ž… ํ™”๋ฉด ๋‹ค์‹œ ๊ตฌํ˜„ํ•˜๊ธฐ ( 100% โœ”) >> editText ๋””ํ…Œ์ผ ์‹ ๊ฒฝ์“ฐ๊ธฐ

    • ์ฝ”ํ‹€๋ฆฐ์—์„œ ์ œ๊ณตํ•˜๋Š” Timer ์‚ฌ์šฉ
    • ๊ธ€์ž ์ง€์šฐ๋ฉด ๋‹ค์‹œ ์›๋ž˜ ์ƒํƒœ๋กœ ๋Œ์•„๊ฐ€๊ฒŒ + ๊ธ€์ž ์ˆ˜ ์ถฉ์กฑ ๋ชปํ•˜๋ฉด ๋‹ค์Œ์œผ๋กœ ๋ชป ๋„˜์–ด๊ฐ€๊ฒŒ~
    • ์ปค์Šคํ…€ ํ† ์ŠคํŠธ
  • ํšŒ์›๊ฐ€์ž… API ๋‹ค์‹œ ์—ฎ๊ธฐ ( 100% โœ”)

  • ์ƒํ’ˆ ๋””ํ…Œ์ผ ํ™”๋ฉด ๋””ํ…Œ์ผ ์‹ ๊ฒฝ์“ฐ๊ธฐ ( 100% โœ”)

  • ๋‚˜์˜ ๋‹น๊ทผ ํŽ˜์ด์ง€ ๊ตฌํ˜„ํ•˜๊ธฐ ( 70% โœ”)

  • ๋‚˜์˜ ๋‹น๊ทผ ํŽ˜์ด์ง€ API ์—ฎ๊ธฐ ( 80% โœ”)

  • [Q] ๋‚˜์˜ ๋‹น๊ทผ ํŽ˜์ด์ง€ API์— ํ•ด์‹œํƒœ๊ทธ ๊ฐ’์ด ์—†์–ด์„œ ์„œ๋ฒ„์— ์—ฌ์ญค๋ด„

    • [A] userInfoIdx(์œ ์ € ์ธ๋ฑ์Šค๊ฐ’)๋กœ ์ƒ๊ฐํ•˜๊ณ  ๊ตฌํ˜„ํ•˜์…จ๋‹ค๋Š” ๋‹ต๋ณ€์„ ๋ฐ›์Œ !
    • ์œ ์ผํ•œ ๊ฐ’์ด๋‹ˆ ์šฉ๋„๊ฐ€ ๋งž์„ ๊ฒƒ ๊ฐ™์•„์„œ ๋‹ต๋ณ€๋Œ€๋กœ ์ง„ํ–‰ํ•˜๋„๋ก ํ•จ
  • [Q] ๋‚˜์˜ ๋‹น๊ทผ ํŽ˜์ด์ง€์˜ ์ฃผ์†Œ ๊ฐ’์ด ๋น„์–ด์žˆ์–ด์„œ GPS ๊ตฌํ˜„ ํ›„ ์ถ”๊ฐ€ ํ•ด์ฃผ์‹ค๊ฑด์ง€ ์—ฌ์ญค๋ด„

    • [A] ์ฃผ์†Œ ๋ฐ์ดํ„ฐ๋Š” ์˜๋…ผ์ด ํ•„์š”ํ•œ ๋ฌธ์ œ๋กœ ์„œ๋ฒ„์—์„œ api๋ฅผ ์—ฎ์„์ง€ ํด๋ผ์—์„œ api๋ฅผ ์—ฎ์„์ง€ ์ •ํ•ด๋ณด๊ธฐ๋กœ ํ•จ
    • ์šฐ์„  ํ…์ŠคํŠธ๋ทฐ๋กœ ๋‚จ๊ฒจ๋†“๊ณ  ์ฒœ์ฒœํžˆ ์ง„ํ–‰ํ•˜๊ธฐ๋กœ ํ•จ

2021๋…„ 08์›” 19์ผ ๐ŸŒž

์ž๋™ ๋กœ๊ทธ์ธ๊ณผ ๋‚˜์˜ ๋‹น๊ทผ ํŽ˜์ด์ง€ API ์—ฎ๊ธฐ์—์„œ ์‚ฝ์งˆ์„ ์ข€ ๋งŽ์ดํ–ˆ๋‹ค. ์„ฑ๊ณต์กฐ์ฐจ ๋ชปํ–ˆ๋‹ค ๐Ÿ˜ฅ >> SharedPreferences ์ด์šฉํ•ด์„œ ๊ฐ€๋ณ๊ฒŒ ์„ฑ๊ณตํ–ˆ๋‹ค. ( 8/20 )

  • ๋กœ๊ทธ์ธ API ๋‹ค์‹œ ์—ฎ๊ธฐ ( 100% โœ”)

  • ์ž๋™ ๋กœ๊ทธ์ธ

  • ๋‚˜์˜ ๋‹น๊ทผ ํŽ˜์ด์ง€ API ์—ฎ๊ธฐ ( 50% โœ”)

    • ์–ด์ œ ๋‚˜์˜ ๋‹น๊ทผ ํŽ˜์ด์ง€ API ์—ฎ๊ธฐ๋Š” ์„ฑ๊ณตํ–ˆ๋Š”๋ฐ, ๋ฐ”๋กœ ํ™”๋ฉด์— ํ‘œ์‹œ๋˜๋Š”๊ฒŒ ์•ˆ๋œ๋‹ค. >> path Variable ๊ฐ’์„ ์ž„์˜๋กœ ์ž…๋ ฅํ•ด์ฃผ๋ฉด ์„ฑ๊ณตํ•˜๋Š”๋ฐ, ๋ฐ›์•„์˜ค๋Š” ๋ฐฉ๋ฒ•์€ ์•„์ง ! (08/21)
    • Glide ์‚ฌ์šฉ
  • ๋‚˜์˜ ๋‹น๊ทผํŽ˜์ด์ง€ ๊ตฌํ˜„ ( 100% โœ”) >> API๋ฅผ ์—ฎ์–ด์•ผ ํ•˜๋Š”๋ฐ ์ž˜ ์•ˆ๋ผ์œ  >> ์„ฑ๊ณตํ•˜๊ธด ํ–ˆ๋Š”๋ฐ ๋ญ”๊ฐ€ ๋ถ€์กฑํ•จ

    • ๋‚˜์˜ ๋‹น๊ทผ ํŽ˜์ด์ง€์— ์žˆ๋Š” ๋ชฉ๋ก๋“ค์„ RecyclerView๋กœ ๊ตฌํ˜„ ํ•ด์•ผํ• ์ง€ ์•„๋‹ˆ๋ฉด ๊ทธ๋ƒฅ Linear๋กœ ํ•ด์ค˜์•ผํ• ์ง€ ๋ชจ๋ฅด๊ฒ ์–ด์„œ ๊ณ ๋ฏผ ํ•ด๋ณด๊ธฐ
    • ์นดํ…Œ๊ณ ๋ฆฌ ํ™”๋ฉด๊ฐ™์€ ๊ฒฝ์šฐ ์•ฑ์ด ์—…๋ฐ์ดํŠธ ๋ผ์„œ ์ˆ˜์ •์ด ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ๋ฅผ ๊ฐ€์ •ํ•ด๋ณด๋ฉด RecyclerView GridLayoutMananger ํ˜น์€ GridView ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์ ์ ˆํ•˜๋‹ค.
    • ์‚ฌ์ง„ ๋ฐ›์•„์˜ฌ ๋•Œ oval ๋ชจ์–‘์œผ๋กœ ๋ฐ›์•„์˜ค๊ธฐ ์•„์ง ์•ˆ ํ•จ. ( 08/22 )
  • ํŒ๋งค๋‚ด์—ญ ๊ตฌํ˜„ ( 60% โœ”)

    • TabLayout + Viewpager2 ์—ฐ๊ฒฐ ์„ฑ๊ณต
  • [Q] ๋‚˜์˜ ๋‹น๊ทผ ํŽ˜์ด์ง€ ๊ฐ™์€ ๊ฒฝ์šฐ ๋กœ๊ทธ์ธ ํ›„ ๋‚˜๋งŒ ๋ณผ ์ˆ˜ ์žˆ๋Š” ํŽ˜์ด์ง€์ธ๋ฐ api ํ—ค๋” ๋ถ€๋ถ„์— jwt๊ฐ™์€ ํ† ํฐ์ด ์—†์–ด์„œ ๋‚ด๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ์œ ์ €๋“ค๋„ ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ๋งŒ ์ž…๋ ฅํ•˜๋ฉด ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ฆ

    • [A] ์„œ๋ฒ„์—๊ฒŒ ๋ง์”€๋“œ๋ ธ๋”๋‹ˆ ๊ทธ ๋ถ€๋ถ„์„ ์ž ๊น ์ƒ๊ฐ ๋ชปํ•˜์…จ๋‹ค๊ณ  ์ถ”๊ฐ€ ํ•ด์ฃผ์‹œ๊ฒ ๋‹ค๊ณ  ๋‹ต๋ณ€์„ ์ฃผ์‹ฌ ( ์™„๋ฃŒ โœ” )
    • [A+] ์ถ”๊ฐ€์ ์œผ๋กœ [ํ”„๋กœํ•„ ์กฐํšŒ] ํŽ˜์ด์ง€๋Š” ์œ ์ € ์ธ๋ฑ์Šค๋กœ๋งŒ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด๋„ ๊ดœ์ฐฎ์„ ๊ฑฐ ๊ฐ™์•„์„œ ์ถ”ํ›„์— ํŽ˜์ด์ง€ ์ œ์ž‘ํ•  ๋•Œ๋Š” ์ด ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ํ•˜๋„๋ก ํ•จ.
  • [Q] api๋ฅผ ๊ณ„์† ์‹œ๋„ํ•˜๊ณ  ์‹ถ์€๋ฐ ์˜ค๋ฅ˜๋ฅผ ํ•ด๊ฒฐํ•˜๋Š๋ƒ๊ณ  ์‹œ๊ฐ„์„ ์“ฐ๊ฒŒ ๋จ. ์•Œ๊ณ ๋ณด๋‹ˆ ์„œ๋ฒ„๊ฐ€ ๋‹ซํ˜€์žˆ์–ด์„œ ๋ฐœ์ƒํ•œ ๋ฌธ์ œ. ์„œ๋ฒ„์— ๋ถˆํŽธํ•จ์„ ๋ง์”€๋“œ๋ฆผ.

    • [A] aws๋กœ ์ง„ํ–‰ํ•˜๋ฉด ์—๋Ÿฌ๋„ ๋งŽ์ด ๋‚˜๊ณ  ๋ถˆ์•ˆ์ •ํ•˜์—ฌ ๋‹น๋ถ„๊ฐ„์€ ์ด๋ ‡๊ฒŒ ์ง„ํ–‰ํ•  ๊ฒƒ ๊ฐ™๋‹ค๋Š” ๋‹ต๋ณ€์„ ๋“ค์Œ
      • [Q] ์„œ๋ฒ„๊ฐ€ ๋‹ซํ˜€์žˆ์œผ๋ฉด ๊ฒช๋Š” ๋ถˆํŽธํ•จ์„ ๋‹ค์‹œ ๋ง์”€ ๋“œ๋ฆฌ๊ณ  ์ž‘์—… ์‹œ๊ฐ„๋Œ€(PM 2:00 ~ AM 3:00) ์‚ฌ์ด์— ์„œ๋ฒ„๋ฅผ ์žฅ์‹œ๊ฐ„ ๋‹ซ์„ ๊ฒฝ์šฐ ๋ฏธ๋ฆฌ ์•Œ๋ ค์ฃผ์‹ค ๊ฒƒ์„ ์š”์ฒญํ•จ.
        • [A] ์„œ๋ฒ„๊ฐ€ ์—ด๋ฆฌ๊ณ  ๋‹ซํžˆ๋Š” ๊ฒƒ์„ ์Šฌ๋ž™๊ณผ ๋ช…์„ธ์„œ์— ์•Œ๋ ค์ฃผ์‹œ๊ธฐ๋กœ ํ•จ >> ์ž์ฃผ์ž์ฃผ ์›ํ™œํ•œ ์†Œํ†ต์œผ๋กœ ๋ฌธ์ œ์—†์ด ์ง„ํ–‰ ์ค‘

2021๋…„ 08์›” 20์ผ ๐ŸŒž๐ŸŒง

๊ฑด๊ฐ• Issue,,

  • ์ƒํ’ˆ ๋“ฑ๋ก ๊ตฌํ˜„ ( 70% โœ”)
    • Contextual menu, popupMenu ? , Custom Dialog โ€ผ >> ๋‹ค์ด์–ผ๋กœ๊ทธ ๋ฆฌ์ŠคํŠธ๋กœ ๋ณด์—ฌ์ฃผ๊ธฐ
  • ์นดํ…Œ๊ณ ๋ฆฌ ๊ตฌํ˜„ ( 80% โœ”)
  • ์•ฑ ์„ค์ • ๊ตฌํ˜„ ( 100% โœ”)
  • ์ž๋™ ๋กœ๊ทธ์ธ ( 100% โœ”)

2021๋…„ 08์›” 21์ผ ๐ŸŒž

๊ผญ ํ•ด์•ผํ•˜๋Š” ์ผ: ์ด๋ฒˆ ์ฃผ๊นŒ์ง€ ์ž‘์—…ํ–ˆ๋˜ ๊ฒƒ๋“ค ๊ฒ€ํ† ํ•˜๋ฉฐ ๋””ํ…Œ์ผ ๋” ๋งŽ์ด ์‹ ๊ฒฝ์จ๋ณด๊ธฐ + ๋ฏธ๋Ÿฌ๋กœ์ด๋“œ ์‚ฌ์ด์ฆˆ ๊ณ ๋ คํ•˜๊ธฐ

  • ์ƒํ’ˆ ๋“ฑ๋ก ๊ตฌํ˜„ ( 100% โœ”)
  • ๋‚˜์˜ ๋‹น๊ทผ ํŽ˜์ด์ง€ API path Variable ๊ฐ’ ๋„˜๊ฒจ์ฃผ๊ธฐ // ๋‚˜์˜ ๋‹น๊ทผ ํŽ˜์ด์ง€ API ์™„๋ฃŒ ( 100% โœ”)
  • ์ „์ฒด ๊ฒŒ์‹œ๊ธ€ ์กฐํšŒ API >> ์„œ๋ฒ„ ์—ด๋ฆฌ๋ฉด ํ™•์ธ..

2021๋…„ 08์›” 22์ผ ๐ŸŒž

๊ผญ ํ•ด์•ผํ•˜๋Š” ์ผ: ์ด๋ฒˆ ์ฃผ๊นŒ์ง€ ์ž‘์—…ํ–ˆ๋˜ ๊ฒƒ๋“ค ๊ฒ€ํ† ํ•˜๋ฉฐ ๋””ํ…Œ์ผ ๋” ๋งŽ์ด ์‹ ๊ฒฝ์จ๋ณด๊ธฐ

  • [Q] ์–ด์ œ ํ•˜๋ฃจ์ข…์ผ + ์˜ค๋Š˜ ์ ์‹ฌ๊นŒ์ง€ ์„œ๋ฒ„๊ฐ€ ๋‹ซํ˜€์žˆ์–ด์„œ api ์ž‘์—…์„ ๋ชปํ–ˆ๋‹ค. api๋ฅผ ์—ฎ์–ด๋‘” ํŽ˜์ด์ง€๋Š” ์„œ๋ฒ„๊ฐ€ ๋‹ซํžˆ๋ฉด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์—†์–ด์„œ ์ด ์ƒํƒœ๋กœ๋Š” ๋”์ด์ƒ ์ž‘์—…์ด ๋ถˆ๊ฐ€๋Šฅํ• ๊ฑฐ ๊ฐ™์•„ ๋‹ค์‹œ ํ•œ๋ฒˆ ์š”์ฒญ ๋“œ๋ฆผ

    • [A] ์–ด์ œ๋Š” ์—ด์–ด๋†“๊ณ  ๋‚˜๊ฐ€์‹ ์ค„ ์•Œ์•˜๋‹ค๊ณ  ํ•˜์…จ๋‹ค. ์˜ค๋Š˜๋„ ์—ด์–ด๋†“์œผ์‹ ์ค„ ์•„์…จ๋‹ค ํ•œ๋‹ค..! ์•ž์œผ๋กœ๋Š” ๊ณ„์† ์„œ๋ฒ„ ์œ ์ง€ํ•˜์‹ค๊ฑฐ๋ผ๋Š” ๋‹ต๋ณ€ ๋ฐ›์Œ !
  • ์ด๋ฏธ์ง€๋“ค ๋‘ฅ๊ทผ ๋ชจ์„œ๋ฆฌ๋กœ ๋งŒ๋“ค๊ธฐ

  • ์ƒํ’ˆ ๋””ํ…Œ์ผ ํ™”๋ฉด API ( 90% โœ”)

    • ์ด๋ฏธ์ง€๋Š” ํ•˜๋‚˜์”ฉ ์˜ค๋Š”๋ฐ, vp2์— ์ด๋ฏธ์ง€๋ฅผ ์–ด๋–ป๊ฒŒ ๋„ฃ์–ด์ค˜์•ผ๋ ์ง€ ๋ชจ๋ฅด๊ฒ ์Œ ( ์™„๋ฃŒ โœ” )
    • ์œ ์ € ์˜จ๋„๋งˆ๋‹ค temIcon ๋ฐ”๊พธ๊ธฐ // ์•„์ง
  • ์ „์ฒด ๊ฒŒ์‹œ๊ธ€ ์กฐํšŒ API ( 100% โœ”)

    • [Q] ~ ์ดˆ์ „, ~ ๋ถ„์ „ ํƒ€์ž„์Šคํƒฌํ”„๋กœ ๊ณ„์‚ฐ๋œ ์ƒํƒœ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ฒจ์ฃผ์‹ค ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ์ญค๋ด„ //ํด๋ผ์—์„œ๋„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์œผ๋‚˜ ์„œ๋ฒ„๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๊ฒŒ ๋งž๋Š”๊ฑฐ ๊ฐ™์•„์„œ
      • [A] ์ž‘์—… ๋‹ค ๋งˆ์น˜์‹œ๊ณ  ์‹œ๊ฐ„๋˜์‹ค ๋•Œ ํ•ด์ฃผ์‹ ๋‹ค๊ณ  ๋ง์”€ํ•ด์ฃผ์‹ฌ. ์šฐ์„  ์ƒ์„ฑ๋œ ๋‚ ์งœ ๋„ฃ์–ด๋‘  //์‹œ๊ฐ„๋‚จ์œผ๋ฉด ๋‚ด๊ฐ€ ํ•ด๋ณด๊ธฐ
    • price ๊ฐ’ int๋กœ ๋„˜์–ด์˜ค๋Š”๊ฑฐ 3๊ธ€์ž๋งˆ๋‹ค ์‰ผํ‘œ ์ฐ์–ด์ฃผ๊ธฐ >> DecimalFormat ์‚ฌ์šฉํ•ด์„œ ๊ตฌํ˜„
  • ๋กœ๋”ฉ dialog ๋งŒ๋“ค๊ธฐ

    • progress bar๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋งŒ๋“ค์–ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์€๋ฐ, ์ผ๋‹จ SpinKitView๋กœ ์ƒ‰์ƒ๊ณผ ๋ชจ์–‘ ๋ฐ”๊ฟ”์„œ ์ ์šฉํ•ด๋†“์Œ
  • ํŒ๋งค๊ธ€ ์ž‘์„ฑ API ( 70% โœ”)

    • ์—ฎ๋Š”๊ฑด ์„ฑ๊ณตํ–ˆ๋Š”๋ฐ ์„ฑ๊ณต ํ›„ ํ™”๋ฉด์— ๋„์šฐ๋Š”๊ฑธ ๋ชปํ•จ ( ์„œ๋ฒ„์—์„œ ์ˆ˜์ • ํ›„ ์™„๋ฃŒ โœ” )

2021๋…„ 08์›” 23์ผ ๐ŸŒง

  • ๊ฒŒ์‹œ๊ธ€ ์ œ๋ชฉ์œผ๋กœ ๊ฒ€์ƒ‰ API ( 100% โœ”)

  • ํŠน์ • ์œ ์ € ๋‹‰๋„ค์ž„์œผ๋กœ ๊ฒ€์ƒ‰ API ( 100% โœ”)

  • ๊ฒ€์ƒ‰ํ™”๋ฉด ๊ตฌํ˜„ ( 80% โœ”)

    • ๊ตฌํ˜„ํ•˜๋Š”๊ฒŒ ๊ต‰์žฅํžˆ ์–ด๋ ค์› ๋‹ค. tab์— ํ•ญ๋ชฉ์„ ์„ ํƒํ•˜์—ฌ ๋ฉ”์ธ์— ์žˆ๋Š” edt ํ•˜๋‚˜๋กœ ๊ฒ€์ƒ‰ํ•˜๋Š”๋ฐ ์ด๊ฑธ ํ”„๋ž˜๊ทธ๋จผํŠธ์— ์–ด๋–ป๊ฒŒ ๋„˜๊ฒจ์ฃผ๊ณ  ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•ด์•ผํ•  ์ง€ ๊ณ ๋ฏผ์ด ๋งŽ์•˜๊ณ , ํ™•์ธ์„ ๋ˆ„๋ฅด๋ฉด get์ด ์ „์†ก๋˜๋„๋ก ํ•˜๋Š” ๋ฐฉ์‹๋„ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ• ์ง€ ๋– ์˜ฌ๋ฆฌ๊ธฐ ํž˜๋“ค์—ˆ๋‹ค. ๋˜ํ•œ edt ์•ˆ์— ๋””ํ…Œ์ผํ•œ ๊ธฐ๋Šฅ๋“ค์ด ์ƒ๋‹นํžˆ ๋งŽ์•„์„œ ์ตœ๋Œ€ํ•œ ๋˜‘๊ฐ™์ด ๊ตฌํ˜„ํ•ด๋ณด๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ๋‹ค.
      • ํ”„๋ž˜๊ทธ๋จผํŠธ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ฒจ์ค„ ๋•Œ, intent๋Š” ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ„์˜ ์ด๋™์ด ํ•„์š”ํ•œ๊ฑฐ ๊ฐ™์•„์„œ SharedPreferences๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋„˜๊ฒจ์คฌ๋‹ค. >> Bundle๋กœ ๋„˜๊ฒจ์ฃผ๊ธฐ !
      • ํ”„๋ž˜๊ทธ๋จผํŠธ ๋ณ„ ๊ฒ€์ƒ‰์€ TabLayoutMediator์—์„œ position == 0 ์ผ๋•Œ, position == 2 ์ผ๋•Œ, ๋“ฑ๋“ฑ ๋‚˜๋ˆ ์„œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์—ˆ๋‹ค. ์‹ค์ œ ์•ฑ์—์„œ๋Š” ํ”„๋ž˜๊ทธ๋จผํŠธ ๋ณ„ ๊ฒ€์ƒ‰์ด ์•„๋‹Œ ํ†ตํ•ฉ๊ฒ€์ƒ‰์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š”๊ฑฐ ๊ฐ™์•„ ์ˆ˜์ •ํ•จ.
      • edt์—๋Š” setOnEditorActionListener, InputMethodManager, addTextChangedListener ๋“ฑ๋“ฑ ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๊ณ , ํ•œ๊ตญ์–ด ์žํŒ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ์„ค์ •ํ•ด์ฃผ์—ˆ๋‹ค.
    • edt์—์„œ ํ‚ค๋ณด๋“œ์˜ ํ™•์ธ์„ ๋ˆŒ๋ €์„ ๋•Œ, ๊ฒฐ๊ณผ๊ฐ€ ๋ฐ”๋กœ ๋œจ๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ• ๋ชจ๋ฅด๊ฒ ์Œ >> Bundle ์‚ฌ์šฉํ•˜๊ธฐ !
  • ํŒ๋งค๊ธ€ ์ž‘์„ฑ API ( 70% โœ”) >> ( 100% โœ”)

    • Activity -> Fragment ๋ฐ์ดํ„ฐ ์ „๋‹ฌ์—๋Š” intent๊ฐ€ ์•„๋‹Œ Bundle์„ ์‚ฌ์šฉํ•˜๋Š”๊ฑฐ๋ผ๋Š”๋ฐ ์ž๊พธ null์—๋Ÿฌ ๋œธ ๋ฐ์ดํ„ฐ๊ฐ€ ์•ˆ ๋ฐ›์•„์ง€๋Š” ๋“ฏ //์‹œ๊ฐ„ ๋„ˆ๋ฌด ์˜ค๋ž˜์”€ >>์ด๊ฑฐ ํ•„์š”์—†์—ˆ์Œ ! ์„œ๋ฒ„ ๋ฌธ์ œ
    • [Q] ์ „์ฒด ๊ฒŒ์‹œ๊ธ€์„ ์กฐํšŒํ•˜๋ฉด ๋”๋ฏธ๋ฐ์ดํ„ฐ๋งŒ ํ‘œ์‹œ๋˜๊ณ  ํŒ๋งค ๋“ฑ๋กํ•œ ๊ฒŒ์‹œ๋ฌผ์€ ์•ˆ๋œฌ๋‹ค. ํ˜น์‹œ ๋”ฐ๋กœ ๊ด€๋ฆฌํ•˜์‹œ๋Š”์ง€ ์—ฌ์ญค๋ด„
      • [A] ๋”ฐ๋กœ ๊ด€๋ฆฌํ•˜์ง€ ์•Š๊ณ , ๋“ฑ๋กํ•œ ์œ ์ € ์ƒํƒœ๊ฐ€ normal์ด๊ณ , ์œ ์ €๊ฐ€ ๋“ฑ๋กํ•œ ์ง€์—ญ ์•„์ด๋””(regionId)๊ฐ€ ์œ ์ €์•„์ด๋””(sellerId)์— ๋งž๊ฒŒ ๋“ฑ๋กํ•ด์•ผ ๋˜์„œ ๊ทธ๋Ÿฐ ๊ฒƒ ๊ฐ™์Œ. ๋”๋ฏธ ๋ฐ์ดํ„ฐ์—๋„ regionId๋ฅผ ์ถ”๊ฐ€ํ• ํ…Œ๋‹ˆ ๋‹ค์‹œ ์‹œ๋„ํ•ด๋ณด๋ผ๊ณ  ๋‹ต๋ณ€์ฃผ์‹ฌ --> ์ง์ ‘ ๋‹ค์‹œ ํ™•์ธํ•ด๋ดค๋Š”๋ฐ ์•ˆ ๋œ๋‹ค๊ณ  ํ•˜์‹ฌ ! post ํ–ˆ์„ ๋•Œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด๊ฐ€๋Š” ๊ฑด ํ™•์ธ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฒƒ์—์„œ ๋ญ”๊ฐ€ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด ๊ฒƒ ๊ฐ™๋‹ค๊ณ  ๋‹ต๋ณ€์ฃผ์‹ฌ --> ์ˆ˜์ • ํ›„ ์•Œ๋ ค์ฃผ์‹ ๋‹ค๊ณ  ํ•จ!!
        • ์šฐ์„  ๋‚˜์ค‘ ์ˆœ์œ„๋กœ ๋ฏธ๋ฃจ๊ณ  api๊ฐ€ ์ˆ˜์ •๋œ ํ›„ ์ž‘์—…ํ•ด๋ณด๊ธฐ
        • ์ˆ˜์ • ํ›„ ํ…Œ์ŠคํŠธ ํ–ˆ์„ ๋•Œ ์ฝ”๋“œ ์ˆ˜์ •์—†์ด ์ •์ƒ์ ์œผ๋กœ ์—…๋กœ๋“œ ๋จ! ( ์™„๋ฃŒ โœ” )
  • ์ „์ฒด์ ์ธ ๋””ํ…Œ์ผ ์ˆ˜์ •

2021๋…„ 08์›” 24์ผ ๐ŸŒง [2์ฐจ ํ”ผ๋“œ๋ฐฑ]

๐Ÿ“Œ 2์ฐจ ํ”ผ๋“œ๋ฐฑ

  • ์Šคํฌ๋กค๋˜๋ฉด ์ƒ๋‹จ๋ฐ” ๋ณ€ํ•˜๋Š”๊ฑฐ -> ๋ฆฌ์Šค๋„ˆ ํ†ตํ•ด์„œ ์ฒ˜์Œ ์‹œ์ž‘ํ•  ๋•Œ ๋‘๊ฐ€์ง€๋กœ ๋งŒ๋“ค๊ณ  visible ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•ด๋„ ๋จ
    [๊ฐœ๋ฐœ ์šฐ์„  ์ˆœ์œ„]
  • ์Šคํฌ๋กค๋ง ์•กํ‹ฐ๋น„ํ‹ฐ >> ์ƒˆ๋กœ ์•กํ‹ฐ๋น„ํ‹ฐ ํŒŒ์„œ ์Šคํฌ๋กค๋ง ์•กํ‹ฐ๋น„ํ‹ฐ ๊ตฌ์กฐ ๋œฏ์–ด๋ณด๊ธฐ ( ์™„๋ฃŒ โœ” )
  • ํŒŒ์ด์–ด๋ฒ ์ด์Šค ์ด๋ฏธ์ง€ >> ์ค‘๊ณ ๊ฒŒ์‹œ๊ธ€ ์ถ”๊ฐ€ ์ˆ˜์ • //ํŒŒ์ด์–ด๋ฒ ์ด์Šค ( ์™„๋ฃŒ โœ” )
  • ํ™”๋ฉด ๊ฐœ์ˆ˜, api ๊ฐœ์ˆ˜ ๋Š˜๋ ค๋ณด๊ธฐ
  • ํŒŒ์ด์–ด๋ฒ ์ด์Šค ์—ฐ๋™ ( ์™„๋ฃŒ โœ” )
  • ์Šคํฌ๋กค ๋ ˆ์ด์•„์›ƒ ๋œฏ์–ด๋ณด๊ธฐ ( ์™„๋ฃŒ โœ” )

2021๋…„ 08์›” 25์ผ โ˜

ํ”ผ๋“œ๋ฐฑ ๋‚ด์šฉ ๋ฐ˜์˜ํ•˜๊ธฐ

  • ๊ฐค๋Ÿฌ๋ฆฌ์—์„œ ๋ถˆ๋Ÿฌ์˜จ ์‚ฌ์ง„ firestore์— ์ €์žฅํ•˜๊ธฐ ( ์™„๋ฃŒ โœ” )

  • ์œ ์ € ํ”„๋กœํ•„ ๋ณ€๊ฒฝ API ( 100% โœ”)

  • ํŒ๋งค๊ธ€ ์ˆ˜์ • API ์—ฐ๋™ ( 100% โœ”)

    • [Q] ์‚ฌ์ง„ ๋ณ€๊ฒฝ์€ ์›๋ž˜ ์•ˆ๋˜๋Š”์ง€?
      • [A] ์‚ฌ์ง„ ๋ณ€๊ฒฝ๋ฐฉ๋ฒ•์€ ์ฟผ๋ฆฌ๋ฌธ์ด ๊ผฌ์—ฌ์„œ ์•ˆ๋œ๋‹คํ•˜์‹ฌ
  • ํŒ๋งค๊ธ€ ์‚ญ์ œ API ์—ฐ๋™ ( 100% โœ”) >> ์ด์ง€๋งŒ ์„œ๋ฒ„์—์„œ ๊ฒŒ์‹œ๊ธ€๋งˆ๋‹ค status ๊ฐ’์„ ์ฃผ์ง€ ์•Š์•„ ์‚ญ์ œ๋œ ์ƒํƒœ์ธ ๊ฒŒ์‹œ๋ฌผ๋„ ์•ฑ ์ƒ์—์„œ ๋ณด์ด๊ฒŒ ๋œ๋‹ค.

    • [Q] ์„œ๋ฒ„์— ๊ฒŒ์‹œ๊ธ€๋งˆ๋‹ค status ๊ฐ’์„ response๋กœ ์ฃผ์‹œ๊ธธ ์š”์ฒญํ•จ
      • [A] ์ƒํƒœ ๊ด€๋ฆฌ๋Š” ์„œ๋ฒ„์—์„œ ํ•˜๊ณ  ์žˆ๊ณ , deleted ๋œ ์ƒํ’ˆ์€ ํ‘œ์‹œ ์•ˆ๋˜๋„๋ก ํ•ด๋†“์•˜์Œ
        • [Q] ๊ทธ๋ž˜๋„ ํ‘œ์‹œ๋œ๋‹ค. >> ์ˆ˜์ •ํ•ด์ฃผ์‹ฌ ! ( ์™„๋ฃŒ โœ” )
  • [Q] PATCH, DELETE๊ฐ€ ์•ˆ๋ผ์š” ใ… 

    • [A] ๋’ค์— ํฌํŠธ ๋ฒˆํ˜ธ ๋„ฃ์–ด์ค˜์•ผ ํ•จ. get์—์„œ๋Š” ํฌํŠธ ๋ฒˆํ˜ธ ์•ˆ ๋„ฃ์–ด๋„ ์ž‘๋™ํ•˜๋Š”๋ฐ patch, post, delete๋Š” ๋ญ”๊ฐ€ ์ž˜๋ชป๋œ ๊ฒƒ ๊ฐ™๋‹ค. ๊ณ ์น˜๋ ค๋ฉด ์„œ๋ฒ„๋ฅผ ๊ฐˆ์•„์•ผ ํ•ด์„œ ์„œ๋ฒ„ ๊ฐœ๋ฐœํŒ€์žฅ๊ณผ ์ƒ์˜ํ•ด์„œ ๊ทธ๋Œ€๋กœ ๊ฐ€๊ธฐ๋กœ ํ–ˆ์Œ! ์ž‘์„ฑํ•˜๋‹ค ๋ณด๋ฉด ํ—ท๊ฐˆ๋ฆฌ์‹ค ํ…Œ๋‹ˆ ๊ทธ๋ƒฅ ํฌํŠธ๋ฒˆํ˜ธ ๋ถ™์—ฌ์„œ ์ž‘์—…ํ•˜๊ธธ ๊ถŒ๊ณ  >> ํฌํŠธ๋ฒˆํ˜ธ ๋„ฃ๊ธฐ๋กœ ! ( ์ˆ˜์ •์™„๋ฃŒ โœ” )
  • ์ƒํ’ˆ ํŒ๋งค๊ธ€ ์กฐํšŒ์ˆ˜ ์ฆ๊ฐ€ API ( 100% โœ”)

  • [Q] ์กฐํšŒ์ˆ˜๋Š” ์ƒ์„ธ์กฐํšŒ์˜ response์— ํฌํ•จ๋˜์žˆ์ง€ ์•Š์•„์„œ ํฌํ•จ๋˜์–ด์•ผํ•˜๋Š” ์ด์œ ์™€ ํ•จ๊ป˜ ์š”์ฒญ ๋“œ๋ฆผ

    • [A] response์— viewCount๋กœ ํ‘œ์‹œํ•ด์ฃผ์‹œ๊ธฐ๋กœ ํ•จ ! ( ์ˆ˜์ •์™„๋ฃŒ โœ” )
  • ์นดํ…Œ๊ณ ๋ฆฌ ์กฐํšŒ API ์—ฐ๋™ ( 100% โœ”)

  • ๋žœ๋ค๋งค๋ฌผ ์กฐํšŒ API ( 100% โœ”)

  • ํŒ๋งค๋‚ด์—ญ ๋ ˆ์ด์•„์›ƒ ์™„์„ฑํ•˜๊ธฐ ( ์™„๋ฃŒ โœ” )

  • ํŒ๋งค์ค‘ ์กฐํšŒ API ( 100% โœ”)

  • ์ƒํ’ˆ ๊ฒŒ์‹œ๊ธ€ ๊ด€์‹ฌ ์„ค์ • API ( 100% โœ”)

  • ์ƒํ’ˆ ๊ฒŒ์‹œ๊ธ€ ๊ด€์‹ฌ ํ•ด์ œ API ( 100% โœ”) >> tag ๊ฐ’์œผ๋กœ ๋‘˜์ด ์ƒํƒœ ๋ณ€๊ฒฝ

    • Non-body HTTP method cannot contain @Body. ์—๋Ÿฌ ๋ฐœ์ƒ >> ( ์™„๋ฃŒ โœ” )
  • ํŒ๋งค ๊ฒŒ์‹œ๊ธ€ ์ƒํƒœ ๋ณ€๊ฒฝ API ( 80% โœ”)

    • [Q] ํŒ๋งค์ค‘ ์กฐํšŒ API์— productId๊ฐ€ response ๋˜์–ด์•ผ ์ด API๋ฅผ ์—ฎ์„ ์ˆ˜ ์žˆ์–ด์„œ ์š”์ฒญ๋“œ๋ฆผ

2021๋…„ 08์›” 26์ผ ๐ŸŒž

๋ฏธ๋ค„๋’€๋˜ ๊ฒƒ๋“ค ํ•ด๊ฒฐํ•ด๋†“๊ธฐ

  • vp2์— ์ด๋ฏธ์ง€ ์—ฐ๊ฒฐ
  • ํ”„๋กœํ•„ ๋ณ€๊ฒฝ ์‹œ ์—๋Ÿฌ๊ฐ€ ๋œจ๊ณ  ์•ฑ์ด ๊บผ์ง€๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ
  • ๊ฐค๋Ÿฌ๋ฆฌ์—์„œ ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์™€์•ผ ํ•˜๋Š” ํŽ˜์ด์ง€์— ํŒŒ์ด์–ด์Šคํ† ์–ด ๋‹ค ์—ฐ๊ฒฐํ•ด์ฃผ๊ธฐ
  • ํŒ๋งคํ•˜๊ธฐ/์ˆ˜์ •ํ•˜๊ธฐ ๋ ˆ์ด์•„์›ƒ ๋””ํ…Œ์ผ ์ˆ˜์ •ํ•˜๊ธฐ
  • ๋ฐ”ํ…€ ๋„ค๋น„๊ฒŒ์ด์…˜ ๋””ํ…Œ์ผ
  • ๊ฒ€์ƒ‰ํŽ˜์ด์ง€์—์„œ ์•กํ‹ฐ๋น„ํ‹ฐ > ํ”„๋ž˜๊ทธ๋จผํŠธ๋กœ ๋ฒˆ๋“ค์„ ์‚ฌ์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”๋กœ ๋„˜๊ฒจ์ฃผ๊ณ  ์‹ถ์€๋ฐ ์ž๊พธ ViewPager2 does not support direct child views ์—๋Ÿฌ ๋ฐœ์ƒ
    • tablayout์„ ๋ทฐํŽ˜์ด์ง€ ์•ˆ์— ๋„ฃ์–ด์„œ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ & ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”๋กœ vp2์— ๋„ฃ์–ด์ค˜์„œ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ๋ผ๊ณ  ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ vp2๋ฅผ ํ”„๋ ˆ์ž„ ๋ ˆ์ด์•„์›ƒ์œผ๋กœ ๋ณ€๊ฒฝ //๊ฐ„๋‹จํ•œ ํ™”๋ฉด์ด ์•„๋‹ˆ๋ผ๋ฉด ๋ฐ์ดํ„ฐ ์ „๋‹ฌ๋„ ๊ณ ๋ ค ํ•ด์•ผ๋˜๋‹ˆ ํ”„๋ ˆ์ž„ ๋ ˆ์ด์•„์›ƒ์œผ๋กœ ๊ตฌ์„ฑํ•˜๋Š”๊ฒŒ ๋งž๋Š” ๊ฒƒ ๊ฐ™๋‹ค.
    • 4์ผ ๊ฑธ์ณ ๋“œ๋””์–ด ์„ฑ๊ณต!!!!!!!!!!!!!!!!!!!!!!!!!
    • ์ œํ’ˆ ๊ฒ€์ƒ‰๋„ ๋˜๊ณ  ์œ ์ € ๊ฒ€์ƒ‰๋„ ๋œ๋‹ค !
  • API ์—ฎ๊ธฐ ์™„์„ฑ๋„ ๋†’์ด๊ธฐ
  • ํŒ๋งค ๊ฒŒ์‹œ๊ธ€ ์ƒํƒœ ๋ณ€๊ฒฝ API ( 80% โœ”) >> ํฌ๊ธฐ ! ์‹œ๋„: adapter์— ์—ฐ๊ฒฐํ•ด๋ด„ >> productId๊ฐ€ ์•ˆ๋ฐ›์•„์ง
  • userIdx๋ž‘ ํ•ด์‹œํƒœ๊ทธ ๊ฐ’ ์—ฐ๊ฒฐํ•˜๊ธฐ
  • ๋™๋„ค์ƒํ™œ ๋ ˆ์ด์•„์›ƒ ๋งŒ๋“ค๊ธฐ
  • ๋™๋„ค์ƒํ™œ ์กฐํšŒํ•˜๊ธฐ API ( 100% โœ”)
    • ๋Œ“๊ธ€ ์žˆ์„ ๋•Œ๋ž‘ ์—†์„ ๋•Œ ๊ตฌ๋ถ„ํ•˜๊ธฐ
  • ํ•˜ํŠธ ๋ˆ„๋ฅด๋ฉด ์ปค์Šคํ…€ ํ† ์ŠคํŠธ
  • ์Šคํฌ๋กค ๋ ˆ์ด์•„์›ƒ ๊ธฐ๋Šฅ ๋œฏ์–ด๋ณธ๊ฑธ ๊ธฐ๋ฐ˜์œผ๋กœ ๋””ํ…Œ์ผ ํ™”๋ฉด ์ƒ๋‹จ๋ฐ” ์Šคํฌ๋กค ์‹œ ๋ฐฐ๊ฒฝ ๋ณ€๊ฒฝ ๋˜๋„๋ก ์ ์šฉ
  • ๋™๋„ค์ƒํ™œ ๊ธ€์“ฐ๊ธฐ ๋ ˆ์ด์•„์›ƒ
    • [๋ณ€๊ฒฝ ๊ตฌํ˜„] ์‹œ๊ฐ„ ๊ด€๊ณ„์ƒ ์นดํ…Œ๊ณ ๋ฆฌ ์„ ํƒ ๋ฐฉ์‹์„ dialog ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„
  • ๋™๋„ค์ƒํ™œ ๊ธ€์“ฐ๊ธฐ API ( 100% โœ”)
  • ์˜จ๋„์— ๋”ฐ๋ผ์„œ ์ œํ’ˆ ๋””ํ…Œ์ผ ํ™”๋ฉด์˜ ์˜จ๋„ ๋ฐ ๊ธฐํƒ€ ์ƒ‰์ƒ ๋ฐ”๊ฟ”์ฃผ๊ธฐ

2021๋…„ 08์›” 27์ผ (PM 12:00) ๐ŸŒž

๋งˆ์ง€๋ง‰ ๋‚ 

  • ๋กœ๊ทธ์ธ ๋ฐ ํšŒ์›๊ฐ€์ž… ํ†ตํ•ฉ API ( 100% โœ”)
    • 2์‹œ๊ฐ„์ „ ์„œ๋ฒ„์— ์—…๋ฐ์ดํŠธ๋œ ,, api,, ์—…๋ฐ์ดํŠธ ํ›„ ์ด api๋ฅผ ์—ฎ์ง€ ์•Š์œผ๋ฉด ๋‚˜๋จธ์ง€ ๊ธฐ๋Šฅ๋“ค์ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š”๊ฑธ 1์‹œ๊ฐ„ ์ „์— ๋ฐํ˜€๋ƒˆ๋‹ค,,,..
    • ๊ธฐ์กด ํšŒ์›๊ฐ€์ž… API๋ฅผ ์ด API๋กœ ๋ณ€๊ฒฝ ๊ตฌํ˜„ํ•จ..

๐Ÿ“Œ Issue

ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ๋ฐœ์ƒํ•œ ๋ฌธ์ œ์™€ ํ•ด๊ฒฐ ๋ฐฉ์•ˆ

1. ์•ˆ๋“œ๋กœ์ด๋“œ์™€ ์•„์ดํฐ์˜ ์ฐจ์ด

  • ๋ฌธ์ œ ๐Ÿคฆ๐Ÿปโ€โ™€ | ์•„์ดํฐ๊ณผ ์•ˆ๋“œ๋กœ์ด๋“œ์˜ ๋””์ž์ธ์ด ๋‹ฌ๋ผ ๋ ˆ์ด์•„์›ƒ ๊ตฌ์„ฑ์— ์–ด๋ ค์›€์„ ๊ฒช์Œ.
  • ํ•ด๊ฒฐ ๐Ÿ™†๐Ÿปโ€โ™€๏ธ | ์•ˆ๋“œ๋กœ์ด๋“œ ๊ณต๊ธฐ๊ณ„๋ฅผ ์ด์šฉํ•˜๊ธฐ๋กœ ํ•จ !

2. ํšŒ์›๊ฐ€์ž… ์‹œ ์‹ค์ œ ๋ฐ›์•„์˜ค๋Š” ๋ฐ์ดํ„ฐ์™€ ์„œ๋ฒ„ api์—์„œ ์ œ๊ณตํ•ด์ฃผ๋Š” ๋ฐ์ดํ„ฐ ์ฐจ์ด

  • ๋ฌธ์ œ ๐Ÿคฆ๐Ÿปโ€โ™€ | ์‹ค์ œ ๋‹น๊ทผ๋งˆ์ผ“ ํšŒ์›๊ฐ€์ž…์—์„œ๋Š” ๋ฒˆํ˜ธ๋งŒ ์ž…๋ ฅ๋ฐ›์•„ ํšŒ์›๊ฐ€์ž…/๋กœ๊ทธ์ธ์„ ์ง„ํ–‰ํ•˜์ง€๋งŒ, ํ˜‘์—…์„ ์ง„ํ–‰ํ•˜๋Š” ์„œ๋ฒ„ ์ธก์—์„œ ์ œ๊ณตํ•ด์ฃผ๋Š” api์—์„œ๋Š” ์•„์ด๋””/ํŒจ์Šค์›Œ๋“œ/ํ”„๋กœํ•„ ์‚ฌ์ง„์„ ์ œ๊ณตํ•ด์ค€๋‹ค. ๋ ˆ์ด์•„์›ƒ ๊ตฌ์„ฑ ์‹œ ๊ธฐ์กด ๋ฒˆํ˜ธ๋งŒ ๋ฐ›๋Š” ๋ ˆ์ด์•„์›ƒ์œผ๋กœ ๊ทธ๋Œ€๋กœ ์ง„ํ–‰ํ•ด์•ผ ํ• ์ง€ ์•„๋‹ˆ๋ฉด ์„œ๋ฒ„ api์—์„œ ์ฃผ๋Š” ์ •๋ณด๋Œ€๋กœ ๊ตฌ์„ฑํ•ด์•ผ ํ• ์ง€ ์–ด๋ ค์›€์„ ๊ฒช์Œ.
  • ์›์ธ ๐Ÿ’๐Ÿปโ€โ™€๏ธ | ์„œ๋ฒ„ ์ธก ๊ฐœ๋ฐœํŒ€์žฅ๋‹˜๊ป˜์„œ ๋ฒˆํ˜ธ ๋ฌธ์ž ์ธ์ฆ์ด ์–ด๋ ค์›Œ ์ผ๋‹จ ์•„์ด๋””/ํŒจ์Šค์›Œ๋“œ๋ฅผ ๋ฐ›์•„ jwt๋กœ ๋กœ๊ทธ์ธํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•˜๋ผ๊ณ  ๋ง์”€ํ•˜์…จ์Œ.
  • ํ•ด๊ฒฐ ๐Ÿ™†๐Ÿปโ€โ™€๏ธ | ์„œ๋ฒ„ ๊ฐœ๋ฐœ์ž + ์„œ๋ฒ„์ธก ๊ฐœ๋ฐœํŒ€์žฅ๋‹˜์˜ ์˜๊ฒฌ์— ๋”ฐ๋ผ ์•„์ด๋””/ํŒจ์Šค์›Œ๋“œ์„ ๋ฐ›์•„์˜ค๋Š” ๋ ˆ์ด์•„์›ƒ์œผ๋กœ ์žฌ๊ตฌ์„ฑ ํ•จ !
   ๐Ÿšจ ์›๋ž˜ ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ ํ•˜๊ธฐ๋กœ ๋‹ค์‹œ ๋ณ€๊ฒฝ๋จ ! (๊ฐœ๋ฐœ์ผ์ง€ 2021๋…„ 08์›” 17์ผ ์ฐธ๊ณ )

3. API ์—ฎ๋Š”๊ฑฐ์— ๋Œ€ํ•œ ์ดํ•ด๋„ ๋ถ€์กฑ

  • ๋ฌธ์ œ ๐Ÿคฆ๐Ÿปโ€โ™€ | ํšŒ์›๊ฐ€์ž… API์— ๋ฐ”๋”” ๊ฐ’์ด 4๊ฐœ (id/pw/profileImage/nickname)์ธ๋ฐ, A ์•กํ‹ฐ๋น„ํ‹ฐ์—์„œ id/pw ๊ฐ’์„ ๋ฐ›๊ณ  B ๋„˜์–ด๊ฐ„ ํ›„, B ์•กํ‹ฐ๋น„ํ‹ฐ์—์„œ profileImage/nickname์„ ์ž…๋ ฅ๋ฐ›๊ณ  ์‹ถ์€๋ฐ ๋ฐฉ๋ฒ•์„ ์ฐพ๋Š”๋ฐ ์–ด๋ ค์›€์„ ๊ฒช์Œ.
  • ๋ป˜์ง“ ๐Ÿ™…๐Ÿปโ€โ™€๏ธ | A ์•กํ‹ฐ๋น„ํ‹ฐ์—์„œ id/pw ๊ฐ’์„ ๋ฐ›๊ณ  profileImage/nickname ๊ฐ’์„ ์ž„์˜๋กœ ์ž…๋ ฅํ•˜์—ฌ ๋‹ค์Œ์œผ๋กœ ๋„˜์–ด๊ฐ€๋ฉด ์ €์žฅ๋œ id/pw ๊ฐ’์„ ๋ถˆ๋Ÿฌ์˜ค๊ณ  ๋‹ค์‹œ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค. >> ์š”์ฒญ์ด 2๋ฒˆ ๋ฐœ์ƒํ•จ (X)
  • ์›์ธ ๐Ÿ’๐Ÿปโ€โ™€๏ธ | ๋„ˆ๋ฌด ์–ด๋ ต๊ฒŒ ์ƒ๊ฐํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค !
  • ํ•ด๊ฒฐ ๐Ÿ™†๐Ÿปโ€โ™€๏ธ | A ์•กํ‹ฐ๋น„ํ‹ฐ์—์„œ intent๋กœ id/pw๊ฐ’์„ ๋„˜๊ฒจ์ฃผ๊ณ  B ์•กํ‹ฐ๋น„ํ‹ฐ์—์„œ ์ตœ์ข… ํšŒ์›๊ฐ€์ž…์„ ์„ฑ๊ณต์‹œํ‚จ๋‹ค. >> ์„œ๋ฒ„ ์ธก์—์„œ ์ ์–ด์ค€ vaildation ์ฒ˜๋ฆฌ๋Š” ์–ด๋–ป๊ฒŒ ๋˜๋Š”๊ฑด์ง€ ์‹ถ์—ˆ์ง€๋งŒ ํด๋ผ์—์„œ๋„ ํšŒ์›๊ฐ€์ž…์ด ์•ˆ๋˜๋Š” ๋กœ์ง์ด ๋งŒ๋“ค์–ด ์ ์šฉํ•ด์•ผ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๊ด€์—†์„ ๊ฒƒ ๊ฐ™๋‹ค.

4. Fragment์—์„œ RecyclerView ์‚ฌ์šฉํ•˜๊ธฐ

  • ๋ฌธ์ œ ๐Ÿคฆ๐Ÿปโ€โ™€ | Activity(RecyclerView)์™€ Adapter๋ฅผ ์—ฐ๊ฒฐํ•ด์ค„ ๋•Œ, LoginLocationActivity.kt์—์„œ ์ž‘์„ฑํ–ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ this๋ฅผ context์— ๋„˜๊ฒจ์ฃผ๋Š”๋ฐ, Fragment์—์„œ๋„ ๋™์ผํ•˜๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์—ˆ๋”๋‹ˆ thist์— ๋นจ๊ฐ„ ์ค„์ด ๋ฐœ์ƒํ•˜์˜€๋‹ค.
[Activity] LoginLocationActivity.kt

     loginLocationAdapter = LoginLocationAdapter(this, locationArrayList)
     binding.loginLocationRvAround.adapter = loginLocationAdapter
  • ๋ป˜์ง“ ๐Ÿ™…๐Ÿปโ€โ™€๏ธ | [1] this๋ฅผ ์–ด๋–ป๊ฒŒ๋“  ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด @๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์•˜๋‹ค. [2] ์ž๋ฐ”์—์„œ ์ฒ˜๋Ÿผ getActivity๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์•˜๋‹ค. [3] Activity()๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์•˜๋‹ค.
  • ์›์ธ ๐Ÿ’๐Ÿปโ€โ™€๏ธ | ์ด ๋ถ€๋ถ„์„ Activity์— ์ž‘์„ฑํ•  ๊ฒฝ์šฐ getActivity()๋ฅผ this๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด ํด๋ž˜์Šค๋Š” Fragment๋ฅผ ์ƒ์†๋ฐ›์œผ๋ฏ€๋กœ ํ•ด๋‹น Fragment๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” Activity๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜(getActivity())๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋„˜๊ฒจ์•ผ ํ•œ๋‹ค.
  • ํ•ด๊ฒฐ ๐Ÿ™†๐Ÿปโ€โ™€๏ธ | ์ฝ”ํ‹€๋ฆฐ์˜ ๊ฒฝ์šฐ Activity๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ถ€๋ชจ ์•กํ‹ฐ๋น„ํ‹ฐ์˜ context ๊ฐ’์„ ๊ฐ€์ ธ์™€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. null ๊ฐ’์˜ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ๋ณด์žฅํ•˜๋ ค๋ฉด requireActivity() ๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•˜๋ฏ€๋กœ, requireActivity() ์‚ฌ์šฉ์ด ๊ถŒ์žฅ๋œ๋‹ค๊ณ  ํ•œ๋‹ค. (requireContext()๋„ ํ•ด๋ดค๋Š”๋ฐ ๋๋‹ค!) //DividerItemDecoration์—์„œ this ๊ฐ’์—๋„ ์‚ฌ์šฉํ•˜์˜€๋‹ค.
[Fragment] HomeFragment.kt

     homeAdapter = HomeAdapter(requireActivity(), productArrayList)
     binding.homeRv.adapter = homeAdapter

5. Floating Action Button Icon Color

  • ๋ฌธ์ œ ๐Ÿคฆ๐Ÿปโ€โ™€ | Floating Action Button์˜ Icon Color๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๊ณ  ๊ฒ€์ •์ƒ‰์œผ๋กœ ์ ์šฉ๋˜์žˆ๋‹ค.
  • ์›์ธ ๐Ÿ’๐Ÿปโ€โ™€๏ธ | ์ž๋™์™„์„ฑ์—์„œ๋„ android๋กœ ํ•ด์ฃผ๋Š”๋ฐ ์™œ ์ด๋Ÿฌ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Œ //v23 ์ดํ›„ ์„ค๊ณ„ ์ง€์› ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๊ฒฝ์šฐ app ์ด๋ผ๊ณ  ํ•œ๋‹ค.
  • ๋ป˜์ง“ ๐Ÿ™…๐Ÿปโ€โ™€๏ธ | [1] android:Tint (x)
  • ํ•ด๊ฒฐ ๐Ÿ™†๐Ÿปโ€โ™€๏ธ | app:Tint="@color/white"๋กœ ํ•ด๊ฒฐ !

6. View ์œ„์น˜์™€ ์นด๋“œ๋ทฐ elevation์˜ ๊ด€๊ณ„ !

  • ๋ฌธ์ œ ๐Ÿคฆ๐Ÿปโ€โ™€ | Floating Action Button๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋ฐฐ๊ฒฝ์ด ํˆฌ๋ช…ํ•œ ๊ฒ€์ •์ƒ‰์ด ๋˜๋„๋ก ํ•˜๊ณ  ์‹ถ์–ด์„œ View๋ฅผ ๋„ฃ์–ด์คฌ๋Š”๋ฐ, ์ „์ฒด๋ฅผ ๋ฎ๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ์ด๋ฏธ์ง€๋‚˜ ํƒ‘๋ฐ”์˜ border ๊ฐ™์€ ๊ฑฐ๋ž‘ ํŠนํžˆ ์นด๋“œ๋ทฐ๊ฐ€ View๋ณด๋‹ค ์•ž์— ๋‚˜์™€์žˆ๋‹ค. bringToFront()์„ ํ•ด์ฃผ๋ฉด ๊ฐ€์žฅ ์•ž์œผ๋กœ ๋‚˜์˜จ๋‹ค๊ธธ๋ž˜ ํ•ด์ฃผ์—ˆ๋Š”๋ฐ, ์นด๋“œ๋ทฐ๋Š” ์•ˆ ๋ฎ์˜€๋‹ค.
  • ์›์ธ ๐Ÿ’๐Ÿปโ€โ™€๏ธ | Android์˜ ๋ทฐ์—๋Š” X ๋ฐ Y ์†์„ฑ ์™ธ์—๋„ Z ์†์„ฑ์ด ์žˆ๋‹ค. Z ๊ฐ’์ด ๋” ๋†’์€ ๋ทฐ๊ฐ€ ๋‹ค๋ฅธ ๋ทฐ ์œ„์— ํ‘œ์‹œ๋œ๋‹ค๊ณ  ํ•œ๋‹ค.
  • ํ•ด๊ฒฐ ๐Ÿ™†๐Ÿปโ€โ™€๏ธ | ๊ฒ€์ƒ‰ํ•ด๋„ ๋ชจ๋ฅด๊ฒ ์–ด์„œ ํ˜น์‹œ๋‚˜ํ•˜๊ณ  ์นด๋“œ๋ทฐ์˜ elevation ๊ฐ’์„ ์กฐ์ • ํ•ด๋ณด์•˜๋”๋‹ˆ..
   <androidx.cardview.widget.CardView
        ...
      app:cardElevation="0dp"
        ... />

7. ์„œ๋ฒ„ api URI ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ณ„ํ•˜๊ธฐ

  • ๋ฌธ์ œ ๐Ÿคฆ๐Ÿปโ€โ™€ | ๋กœ๊ทธ์ธ api๋ฅผ ์—ฎ๋Š” ์ค‘์— ํฌ์ŠคํŠธ๋งจ์—์„œ "error": "Not Found" ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.
  • ์›์ธ ๐Ÿ’๐Ÿปโ€โ™€๏ธ | uri๋ฅผ ํ™•์ธํ•ด๋ณด๋‹ˆ logIn(I ๋Œ€๋ฌธ์ž)๋กœ ์ ์œผ์…จ๋Š”๋ฐ, ์—ฌํƒœ login์œผ๋กœ post๋ฅผ ๋ณด๋‚ด๊ณ  ์žˆ์—ˆ๋‹ค.
  • ํ•ด๊ฒฐ ๐Ÿ™†๐Ÿปโ€โ™€๏ธ | ์™œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”์ง€ api ๋ฌธ์„œ๋ฅผ ๋˜์งš์–ด ๊ฐ€๋ฉฐ ํ•ด๊ฒฐ !

8. ScrollView can host only one direct child

  • ์›์ธ ๐Ÿ’๐Ÿปโ€โ™€๏ธ | ScrollView ์•ˆ์— ์ž์‹์€ ํ•˜๋‚˜๋งŒ ์กด์žฌํ•ด์•ผ ํ•˜๋Š”๋ฐ ์—ฌ๋Ÿฌ ๊ฐœ์˜ View๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ๋ฐœ์ƒ
  • ํ•ด๊ฒฐ ๐Ÿ™†๐Ÿปโ€โ™€๏ธ | Layout์œผ๋กœ ๊ฐ์‹ธ์ฃผ๊ธฐ

9. Switch ์ƒ‰์ƒ ๋ฐ”๊พธ๊ธฐ

  • ๋ฌธ์ œ ๐Ÿคฆ๐Ÿปโ€โ™€ | SwitchCompat์„ on/off ํ•ด์คฌ์„ ๋•Œ ๊ฐ„๋‹จํ•˜๊ฒŒ thumbTint์™€ trackTint๋งŒ ์ƒ‰์ƒ๋งŒ ๋ฐ”๋€Œ๋Š”๋ฐ ์ปค์Šคํ…€ ํ•˜๊ธฐ์œ„ํ•ด drawable์— ๋„ˆ๋ฌด๋งŽ์€ xml์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค.
  • ํ•ด๊ฒฐ ๐Ÿ™†๐Ÿปโ€โ™€๏ธ | ์• ๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ ์ง์ ‘ on/off๋ฅผ ํ•ด๋ณด๋‹ˆ on์ด ๋˜์—ˆ์„ ๋•Œ colorSecondary ์ƒ‰์ƒ์œผ๋กœ ๋ณ€ํ•˜๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ๋˜์–ด colorSecondary ์ƒ‰์ƒ์„ ๋ณ€๊ฒฝ ํ•ด์ฃผ์—ˆ๋‹ค.

10. floating action button ํ”„๋ž˜๊ทธ๋จผํŠธ๋งˆ๋‹ค ๋‹ค๋ฅด๊ฒŒ ์ ์šฉํ•ด์ฃผ๊ธฐ

  • ํ•ด๊ฒฐ ๐Ÿ™†๐Ÿปโ€โ™€๏ธ | int๋กœ ๋‚˜๋ˆ ์ค˜์„œ ๋™๋„ค์ƒํ™œ์ด๋ž‘ ๋‹ค๋ฅด๊ฒŒ ๋‚˜์˜ค๋„๋กํ•˜๊ณ  ํด๋ฆญ ์‹œ ์•กํ‹ฐ๋น„ํ‹ฐ ์ด๋™, ๋‚˜๋จธ์ง€ ํ”„๋ž˜๊ทธ๋จผํŠธ ๋ˆŒ๋ €์„ ๋•Œ๋Š” ์—†์• ์ฃผ๊ธฐ (๋Œ€๋žต์ ์ธ ์ฝ”๋“œ๊ณ  ์‹ค์ œ๋Š” ๋‹ค๋ฅด๊ฒŒ ์ž‘์„ฑํ•จ)
   [Activity] MainActivity.kt

                private var fabState: Int = 1   
                         
                when (fabState) {
                    1 -> { binding.fabMain.visibility = View.VISIBLE }
                    2 -> { binding.fabMain.setImageResource(R.drawable.pencil_icon)
                        binding.fabMain.visibility = View.VISIBLE }
                                  
                                  ...
                       
                    5 -> { binding.fabMain.visibility = View.GONE }
                }
                
                                  ...
            binding.mainBtmNav.setOnNavigationItemSelectedListener(
            BottomNavigationView.OnNavigationItemSelectedListener { item ->           
                when (item.itemId) {
                    R.id.menu_main_btm_nav_1_on -> {
                    fabState = 1
                                  ... 
                    }
                                  ... 
             }              
  • ๋ฌธ์ œ ๐Ÿคฆ๐Ÿปโ€โ™€ | fabState ๊ฐ’์€ ๋ฐ”ํ…€ ๋„ค๋น„๊ฒŒ์ด์…˜ ์•„์ด์ฝ˜์„ ํด๋ฆญ ํ•œ ํ›„ ๋ณ€๊ฒฝ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋‘ ๋ฒˆ ํด๋ฆญํ•ด์•ผ ์ ์šฉ๋๋‹ค. ๊ทธ๋ž˜์„œ ๊ทธ๋ƒฅ ๋ฐ”๋กœ ์ฝ”๋“œ๋ฅผ ๋„ฃ์–ด์ฃผ๋Š” ์‹์œผ๋กœ ์ˆ˜์ • ๊ตฌํ˜„ํ•˜์˜€๋‹ค.

11. Error inflating class com.google.android.material.floatingactionbutton.FloatingActionButton

  • ๋ฌธ์ œ ๐Ÿคฆ๐Ÿปโ€โ™€ | ํ”Œ๋กœํŒ… ์•ก์…˜ ๋ฒ„ํŠผ์ด ์ž๊พธ ๋„ค๋ชจ๋กœ ๋ณด์ด๊ณ , ์‹คํ–‰๋„ ์•ˆ๋˜๊ณ  ๋ฐ”ํ…€ ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฐ”๋Š” ์‚ฌ๋ผ์กŒ๋‹ค. view ๊ฐ์ฒด ์ƒ์„ฑ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด ๊ฒƒ.
  • ํ•ด๊ฒฐ ๐Ÿ™†๐Ÿปโ€โ™€๏ธ | ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ์ด์—ˆ๊ณ , themes์„ ์ˆ˜์ •ํ•ด์ฃผ๋‹ˆ ๊ดœ์ฐฎ์•„์กŒ๋‹ค.
 [res/themes.xml]
        <item name="colorPrimary">@null</item>
       <item name="colorPrimaryVariant">@null</item>
                          โฌ‡
        <item name="colorPrimary">@color/mainColor</item>
       <item name="colorPrimaryVariant">@color/mainColor</item>

12. ์นดํ…Œ๊ณ ๋ฆฌ ๋ฉ”๋‰ด

  • ๋ฌธ์ œ ๐Ÿคฆ๐Ÿปโ€โ™€ | ์ด๋Ÿฐ ๋ฉ”๋‰ด๋Š” ์–ด๋–ค ๊ฑธ ์‚ฌ์šฉํ•ด์„œ ๋งŒ๋“ค๊นŒ ํ•˜๋ฉด์„œ ๊ฒ€์ƒ‰ํ•ด๋ณด๋‹ค๊ฐ€ ์ด ์‚ฌ์ดํŠธ๋ฅผ ๋ณด์•˜๋Š”๋ฐ Context Menu๊ฐ€ ๋‚ด๊ฐ€ ์ฐพ๋˜ ๋ฉ”๋‰ด ์—ฌ์„œ ๋งŒ๋“ค์–ด ๋ณด์•˜๋‹ค. ๊ทผ๋ฐ Context Menu๋Š” ๋กฑํด๋ฆญ์„ ํ•ด์•ผ์ง€ ๋ฉ”๋‰ด๊ฐ€ ์ƒ๊ธฐ๊ณ  ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๋ชจ์Šต์ด ์•„๋‹ˆ์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ Popup Menu๋กœ ๋งŒ๋“ค์–ด ๋ณด์•˜๋‹ค. ํด๋ฆญํ•˜๋ฉด ๋‚˜์˜ค๊ธด ํ•˜๋Š”๋ฐ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์œ„์น˜์—๋Š” ์•ˆ ๋‚˜์˜จ๋‹ค. ๊ณต์‹๋ฌธ์„œ๋ฅผ ๋ณด๋‹ˆ gravity ๊ฐ’์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹คํ•˜๋Š”๋ฐ, ์ƒ๊ฐํ•œ ๋ชจ์Šต๊ณผ ์ „ํ˜€ ๋‹ค๋ฅธ ๋ชจ์Šต์ด์—ˆ๋‹ค.
  • ํ•ด๊ฒฐ ๐Ÿ™†๐Ÿปโ€โ™€๏ธ | ๋‹ค์ด์–ผ๋กœ๊ทธ๋ฅผ ๋ฆฌ์ŠคํŠธ๋กœ ๋ณด์—ฌ์ฃผ๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ๋๋‹ค ..
   [Activity] ProductWriteActivity.kt
   
       fun showDialog() {
        val write_cate = resources.getStringArray(R.array.write_cate)

        val builder = AlertDialog.Builder(this)
        builder.setItems(write_cate, DialogInterface.OnClickListener { dialog, which ->
            binding.productWriteTxtCate.text = write_cate[which].toString()
        }
        )
        var alertDialog: AlertDialog = builder.create()
        alertDialog.show()
    }

13. ํ—ค๋”์— ํ† ํฐ ๋„ฃ์–ด์ฃผ๊ธฐ

  • ๋ฌธ์ œ ๐Ÿคฆ๐Ÿปโ€โ™€ | ํ—ค๋”์— ํ† ํฐ ๋„ฃ์–ด์ฃผ๋Š”๊ฒŒ ๊ฐ„๋‹จํ•œ๊ฑฐ ๊ฐ™์€๋ฐ ์ž๊พธ jwt ๊ฐ’์ด ์—†๋‹คํ•ด์„œ ์ŠคํŠธ๋ ˆ์Šค ๋ฐ›์•˜๋‹ค.
  • ํ•ด๊ฒฐ ๐Ÿ™†๐Ÿปโ€โ™€๏ธ | ๋กœ๊ทธ๋ฅผ ์ฐ์–ด๋ณด๋ฉฐ ์›์ธ์„ ์ฐพ์•˜๋‹ค. ์ •๋ง ๊ฐ„๋‹จํ•˜๊ณ  ์‹œ๊ฐ„ ํˆฌ์žํ•  ์ผ์ด ์•„๋‹Œ๋ฐ ๋ฉ€๋ฆฌ ๋Œ์•„๊ฐ„ ๊ฒƒ ๊ฐ™๋‹ค. ๋‹ค์‹  ๊ฐ™์€ ์‚ฝ์งˆ์„ ํ•˜์ง€ ์•Š์•„์•ผ ๊ฒ ๋‹ค!
     [Interface] ProductsRetrofitInterface.kt

     //ํŒ๋งค๋‚ด์—ญ ์กฐํšŒ API
      @GET("/app/products/status")
      fun getIng(
        @Header("x-access-token") X_ACCESS_TOKEN:String,
        @Query("status") status:String,
        @Query("sellerId") sellerId: Int
      ):Call<IngResponse>
  
     [Service] MyPageService.kt
  
         fun tryGetMyPage(X_ACCESS_TOKEN:String ,userInfoIdx: Int){ //ํŒ๋งค๋‚ด์—ญ ์กฐํšŒ๋ผ๋ฉด status๋„ ๋„ฃ์–ด์ฃผ๋ฉด๋จ
         val myPageRetrofitInterface =
              ApplicationClass.sRetrofit.create(UsersRetrofitInterface::class.java)
         myPageRetrofitInterface.getMyPage(X_ACCESS_TOKEN,userInfoIdx).enqueue(object:
                        ...
          
     [Fragment] MyPageFragment.kt
         
         sSharedPreferences =
            requireActivity().getSharedPreferences(X_ACCESS_TOKEN, AppCompatActivity.MODE_PRIVATE)
         val jwt = sSharedPreferences.getString(X_ACCESS_TOKEN, null)!!
                 Log.e("jwt10", jwt.toString()) // ๊ฐ’์ด ์ž˜ ๋„˜์–ด์˜ค๋Š”์ง€ ๋กœ๊ทธ ์ฐ์–ด๋ณด๊ธฐ ๐Ÿ“Œ

        sSharedPreferences =
            requireActivity().getSharedPreferences("userIdx", AppCompatActivity.MODE_PRIVATE)

        val userIdx = sSharedPreferences.getInt("userIdx", 0)
        Log.e("userIdx2", userIdx.toString()) // ๊ฐ’์ด ์ž˜ ๋„˜์–ด์˜ค๋Š”์ง€ ๋กœ๊ทธ ์ฐ์–ด๋ณด๊ธฐ ๐Ÿ“Œ
        MyPageService(this).tryGetMyPage(jwt, userIdx)

14. 3๊ธ€์ž ๋งˆ๋‹ค ์‰ผํ‘œ์ฐ๊ธฐ

  • ํ•ด๊ฒฐ ๐Ÿ™†๐Ÿปโ€โ™€๏ธ | DecimalFormat ์‚ฌ์šฉํ•˜๊ธฐ >> ์ด๊ฑธ๋กœ ๋กœ๊ทธ์ธ ๋•Œ ์ „ํ™”๋ฒˆํ˜ธ ํฌ๋งท์„ ("### #### ####")์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ๋„์–ด์“ฐ๊ธฐ ๋˜๋‚˜?
 [adapter] HomeAdapter.kt
        val decimalFormat = DecimalFormat("###,###")
      val priceDecimalFormat =decimalFormat.format(productDataList[position].price)
      holder.binding.homeItemPrice.text = "$priceDecimalFormat ์›"

15. java.net.UnknownServiceException: CLEARTEXT communication to prod.carrotmarket2.shop not permitted by network security policy

  • ๋ฌธ์ œ ๐Ÿคฆ๐Ÿปโ€โ™€ | ์„œ๋ฒ„ url์ด https๊ฐ€ ์•„๋‹Œ http๋กœ ๋˜์–ด์žˆ์–ด์„œ ์ƒ๊ธด ๋ฌธ์ œ
  • ํ•ด๊ฒฐ ๐Ÿ™†๐Ÿปโ€โ™€๏ธ |
    [Manifest]
    android:usesCleartextTraffic="true"
    

16. ์นดํ…Œ๊ณ ๋ฆฌ ์„ ํƒ

  • ๋ฌธ์ œ ๐Ÿคฆ๐Ÿปโ€โ™€ | ์นดํ…Œ๊ณ ๋ฆฌ idx๋ฅผ adapter์— ํฌ์ง€์…˜ ๋ณ„๋กœ ์–ด๋–ป๊ฒŒ ๋งค์นญ ์‹œ์ผœ์ค˜์•ผํ•˜๋Š”์ง€
  • ํ•ด๊ฒฐ ๐Ÿ™†๐Ÿปโ€โ™€๏ธ | position๊ณผ categotyIdx๋ฅผ ๋งค์นญ์‹œ์ผœ์„œ ์ „๋‹ฌ์‹œํ‚จ๋‹ค.
    [Adapter] HomeCategoryAdapter.kt
    
         holder.binding.homeCategoryItemLl.setOnClickListener {
             var intent = Intent(context, CategorySelectActivity::class.java)
             intent.putExtra("categoryName", homeCategoryDataList[position].category_name)
             var category:Int = position+1
             Log.e("categoryAdapter", category.toString())
             intent.putExtra("category",category)
             context.startActivity(intent)
         }
    

17. Non-body HTTP method cannot contain @Body.

  • ์›์ธ ๐Ÿ’๐Ÿปโ€โ™€๏ธ | DELETE๋Š” BODY ๊ฐ’์„ ํฌํ•จ ํ•˜์ง€์•Š๋Š”๋‹ค๊ณ  ํ•œ๋‹ค.
  • ํ•ด๊ฒฐ ๐Ÿ™†๐Ÿปโ€โ™€๏ธ |
[Interface] ProductsRetrofitInterface

     @DELETE("/app/products/wish")
              โฌ‡
     @HTTP(method = "DELETE", path = "/app/products/wish", hasBody = true)

18. ์ข‹์•„์š” ๋ˆ„๋ฅด๊ธฐ

  • ํ•ด๊ฒฐ ๐Ÿ™†๐Ÿปโ€โ™€๏ธ | tag ์‚ฌ์šฉํ•˜๊ธฐ
 [Activity] ProductDetailActivity.kt
 
      binding.detailImgHeart.setOnClickListener {
          if (binding.detailImgHeart.tag.toString() == "true") {
              binding.detailImgHeart.setImageResource(R.drawable.heart_icon)
              ProductDetailService(this).tryDeleteWishProduct(requestWishDel)
              binding.detailImgHeart.tag="false"
          } else {
              binding.detailImgHeart.setImageResource(R.drawable.heart_on_icon)
              ProductDetailService(this).tryPostWishProduct(requestWish)
              binding.detailImgHeart.tag="true"
          }
      }

19 java.lang.SecurityException: com.example.carrotmarket has no access to content://media/external/images/media/12196

  • ๋ฌธ์ œ ๐Ÿคฆ๐Ÿปโ€โ™€ | ํผ๋ฏธ์…˜ ๋ฌธ์ œ์ธ๊ฑฐ ๊ฐ™์•„์„œ ํผ๋ฏธ์…˜ ์š”์ฒญ๊นŒ์ง€ ๋„ฃ์—ˆ๋Š”๋ฐ, ์ฝ”๋“œ๊ฐ€ ์ค‘๋ณต์œผ๋กœ ์ด์ƒํ•˜๊ฒŒ ์ž…๋ ฅ๋˜์„œ ๋‚˜ํƒ€๋‚œ ๋ฌธ์ œ์˜€๋‹ค. ์—†์• ์ฃผ๋‹ˆ ํ•ด๊ฒฐ ๋จ
  • ์ฆ์ƒ ๐Ÿคฆ๐Ÿปโ€โ™€ | ํ”„๋กœํ•„์€ ์ •์ƒ ๋ณ€๊ฒฝ๋˜๊ณ , ํŒŒ์ด์–ด์Šคํ† ์–ด์—๋„ ์ •์ƒ ์ €์žฅ๋˜์—ˆ์œผ๋‚˜ ์•ฑ์ด ํŒ…๊ฒผ๋‹ค.

๐Ÿ“Œ ์ฐธ๊ณ ์ž๋ฃŒ

About

๐Ÿ“Œ CarrotMarket Clone Project

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages