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

๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ

(78)
[ Flutter ] ๊ธธ์ด์— ๋”ฐ๋ผ Text ์ž๋™ ์ค„๋ฐ”๊ฟˆ / Flexible Text Flutter์—์„œ ์ž‘์—…์ค‘ Text๋ฅผ ๋‚ด๊ฐ€ ์ •ํ•œ Width ๊ธธ์ด ๋ฐ ์ค„์„ ์„ค์ •ํ•˜์—ฌ ๊ทธ ์ดํ›„์˜ ํ…์ŠคํŠธ๋“ค์€ ๋ณด์ด์ง€ ์•Š๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ•.๐Ÿฅณ ๋‚˜๋Š” ์ƒ์„ธ ํŽ˜์ด์ง€ ์ด์ „์— ๋ฏธ๋ฆฌ๋ณด๊ธฐ ํŽ˜์ด์ง€์—์„œ ํ…์ŠคํŠธ๊ฐ€ ๋„ˆ๋ฌด ๊ธธ์–ด์งˆ ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•˜์—ฌ ์‚ฌ์šฉํ–ˆ๋‹ค๐Ÿ˜„ !! ์œ„์™€๊ฐ™์ด Container์— width๋ฅผ ์ •ํ•ด์ฃผ๊ณ , maxLines๋ฅผ ์ •ํ•˜๋ฉด, ๋‚ด๊ฐ€ ์ •ํ•ด๋†“์€ ๊ฐ’์„ ๋„˜๊ธฐ์ง€ ์•Š๋Š”๋‹ค. ์•„์ฃผ ๊ต‰์žฅํžˆ ์œ ์šฉ์“ฐ ํ•˜๋‹ค.๐Ÿ‘ * 10000 Container( width: 150, child: Row( mainAxisAlignment: MainAxisAlignment.start, children: [ Flexible( child: RichText( overflow: TextOverflow.ellipsis, maxLines: 5, strutStyle: StrutSt..
[ ์‚ฌ์šฉ์ž ์ธ์ฆ / ์ธ๊ฐ€ ] Session & Cookie VS Token Session๊ณผ Token์€ ๋ฌด์—‡์ผ๊นŒ? ๐Ÿ‘‰ ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธ๋˜์–ด์žˆ๋Š” ์ƒํƒœ๋ฅผ ์„œ๋ฒ„๊ฐ€ ์ธ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•๋“ค ์ค‘ ํ•˜๋‚˜. ์ธํ„ฐ๋„ท์„ ์ด์šฉํ•  ๋•Œ ์“ฐ๋Š” HTTP๋Š” Stateless(์ƒํƒœ๊ฐ€ ์—†๋Š”, ๋ฌด์ƒํƒœ์˜) ํ”„๋กœํ† ์ฝœ์ด๋ผ, ๋ชจ๋“  ์š”์ฒญ์ด ์ด์ „ ์š”์ฒญ๊ณผ ๋…๋ฆฝ์ ์œผ๋กœ ๋‹ค๋ค„์ง€๊ธฐ ๋•Œ๋ฌธ์— ์š”์ฒญ๋ผ๋ฆฌ ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์ง€ ์•Š๋Š”๋‹ค. ์ด ๋ง์€ ํ•˜๋‚˜์˜ ์š”์ฒญ์ด ๋๋‚˜๋ฉด ์„œ๋ฒ„๋Š” ์ด์ „ ์š”์ฒญ์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€ ์žŠ์–ด๋ฒ„๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฏธ ๋กœ๊ทธ์ธ๋œ ์ƒํƒœ์—ฌ๋„ ๋กœ๊ทธ์ธ์ด ํ•„์š”ํ•œ ์„œ๋น„์Šค or ํ™”๋ฉด์— ์ ‘๊ทผํ•˜๋ ค๋ฉด ์ƒˆ๋กœ์šด ์š”์ฒญ์„ ํ•  ๋•Œ๋งˆ๋‹ค ์‚ฌ์šฉ์ž๋Š” ๊ณ„์† ๋กœ๊ทธ์ธ์„ ๋ฐ˜๋ณตํ•˜๋ฉฐ ์„œ๋ฒ„์—๊ฒŒ ์ž์‹ ์ด ๋ˆ„๊ตฌ์ธ์ง€ ์•Œ๋ ค์ฃผ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ์•ˆ๋“ค ์ค‘์— ํ•˜๋‚˜์ธ session(์„ธ์…˜)๊ณผ token(ํ† ํฐ)์„ ์ด์šฉํ•œ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด..
[ Flutter / ํŠธ์œ„ํ„ฐ ๋กœ๊ทธ์ธ ] Firebase๋ฅผ ์ด์šฉํ•œ Twitter ๋กœ๊ทธ์ธ ๊ตฌํ˜„ ํšŒ์‚ฌ์—์„œ ํ”Œ๋Ÿฌํ„ฐ ์•ฑ์„ ๋งŒ๋“ค๋ฉด์„œ ์ง€๊ธˆ์€ ์†Œ์…œ ๋กœ๊ทธ์ธ์„ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ๋Š” ์ค‘ ๐Ÿ”ฅ ๊ตฌ๊ธ€, ์นด์นด์˜คํ†ก, ์• ํ”Œ๊นŒ์ง€ ๊ตฌํ˜„ํ•ด๋†จ๊ณ  ๋งˆ์ง€๋ง‰ ๋‚จ์€ ํŠธ์œ„ํ„ฐ! (์šฐ๋ฆฌ ์•ฑ์˜ ํŠน์„ฑ์ƒ ํŠธ์œ„ํ„ฐ ์‚ฌ์šฉ์ž๋“ค์ด ์ฃผ ํƒ€๊ฒŸ์ธต์ด๋ผ๊ณ  ์˜ˆ์ƒ์ค‘) ํŠธ์œ„ํ„ฐ๋Š” ๋‹คํ–‰ํžˆ๋„ firebase ์—์„œ ๋กœ๊ทธ์ธ์„ ์ œ๊ณตํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ๊ต‰์žฅํžˆ ์‰ฝ๊ฒŒ ๋กœ๊ทธ์ธ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•  ๊ฒƒ ๊ฐ™๋‹ค๊ณ  ์˜ˆ์ƒํ–ˆ์ง€๋งŒ( ์‘~์•„๋‹ˆ์•ผ๐Ÿ˜Š), ์–ด์ œ ์•„๋ž˜์™€ ๊ฐ™์€ ์˜ค๋ฅ˜ ๋ฉ”์„ธ์ง€์™€ ํ•จ๊ป˜ ํŠธ์œ„ํ„ฐ ๋กœ๊ทธ์ธ ๊ตฌํ˜„์— ์‹คํŒจํ–ˆ๋‹ค.ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ ์ด์œ ๊ฐ€ ๋ญ˜๊นŒ.. ๊ตฌ๊ธ€๋ง์„ ํ•ด๋ด๋„ ๋น„์Šทํ•œ ๋ฌธ์ œ๋ฅผ ๊ฒช๋Š” ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๋“ค์˜ ์งˆ๋ฌธ๋“ค ๋ฟ.. ์ด ๋ฌธ์ œ์˜ ํ•ด๊ฒฐ์ฑ…์„ ์ œ์‹œํ•ด์ฃผ๋Š” ๊ธ€์„ ์ฐพ์„ ์ˆ˜ ์—†์—ˆ๋‹ค ....!!! ๐Ÿฅณํ•˜์ง€๋งŒ ์ง€๊ธˆ์€ ๋ฌธ์ œ ํ•ด๊ฒฐ.๐Ÿ˜™ FlutterFire์˜ Authentication - Twitter ์˜ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ผ ์ฐจ๊ทผ ์ฐจ๊ทผ ๊ตฌ..
[ React Native ] Xcode "domain=com.apple.CoreSimulator.SimError, code=405" ์˜ค๋ฅ˜ React Native๋ฅผ ์ด์šฉํ•˜์—ฌ ์•ฑ๊ฐœ๋ฐœ ์Šคํ„ฐ๋””๋ฅผ ํ•˜๊ณ  ์žˆ๋˜ ์ค‘์— ์ง‘์—์„œ ๋‚ด ์•„์ด๋งฅ์œผ๋กœ ๋นŒ๋“œํ–ˆ์„ ๋•Œ๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜๋Š”๋ฐ, ์ ์‹ฌ์‹œ๊ฐ„์— ํšŒ์‚ฌ์—์„œ ์•„์ด๋งฅ์œผ๋กœ ๋นŒ๋“œํ•˜๋‹ˆ ์•„๋ž˜์™€ ๊ฐ™์€ ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๋‹ค. Failed to launch the app on simulator, An error was encountered processing the command (domain=com.apple.CoreSimulator.SimError, code=405): Unable to lookup in current state: Shutdown ๋ฐ”๋กœ ๊ตฌ๊ธ€๋ง์„ ํ•ด๋ณด๋‹ˆ ๋‹ค๋“ค ๋น„์Šทํ•œ ์˜ค๋ฅ˜ ๋ฐœ์ƒ ๊ธ€์€ ๋งŽ์€๋ฐ, ํ•ด๊ฒฐ์— ๋Œ€ํ•œ ๊ธ€์ด ๋ช‡๊ฐœ ์—†์—ˆ๋‹ค....๐Ÿ˜ฅ ๊ทธ์ค‘์— ๋‚ด๊ฐ€ ํ•ด๊ฒฐํ•œ ๋ฐฉ๋ฒ•์€ ๋ฐ”๋กœ ์ด ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ•œ xcode ์บ์‹œ ์‚ญ์ œ. 1. ๋งฅ์˜ ์™ผ์ชฝ ..
[ Flutter / ์• ํ”Œ ๋กœ๊ทธ์ธ ] Firebase๋ฅผ ์ด์šฉํ•œ SignIn With Apple ๊ตฌํ˜„ Flutter ์†Œ์…œ ๋กœ๊ทธ์ธ์„ ๊ฐœ๋ฐœ์ค‘์ธ๋ฐ, ๋“ฃ๊ธฐ๋ก  ( WEB / Android / ios 13๋ฒ„์ „ ์ดํ•˜ ์ง€์›์˜ ๊ฒฝ์šฐ )Apple ๋กœ๊ทธ์ธ์ด ๋‚œ์ด๋„ ํ—ฌ์ด๋ผ๋Š” ์ด์•ผ๊ธฐ๋ฅผ ๋“ค์—ˆ๋‹ค..๐Ÿ˜ฑ ํ•˜์ง€๋งŒ ๋‚˜๋Š” ios 13 ์ด์ƒ ์ง€์›์— ios Apple ๋กœ๊ทธ์ธ๋งŒ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ต‰์žฅํžˆ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค!๐Ÿ˜ ์ด์ œ ์ฐจ๊ทผ ์ฐจ๊ทผ ์• ํ”Œ ๋กœ๊ทธ์ธ์— ๋Œ€ํ•ด ๋ฟŒ์…”๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค..! ๐Ÿ”ฅ ์ค€๋น„ํ•˜๊ธฐ ๐Ÿ˜™ ios 13.0 ์ด์ƒ์˜ ์• ํ”Œ ๋กœ๊ทธ์ธ๋งŒ ์ง€์›ํ•  ๊ฒฝ์šฐ - Firebase์— ios ํ”„๋กœ์ ํŠธ๊ฐ€ ์ƒ์„ฑ๋ผ ์žˆ์–ด์•ผ ํ•œ๋‹ค. - ์• ํ”Œ ๊ฐœ๋ฐœ์ž ํ”„๋กœ๊ทธ๋žจ์— ์œ ๋ฃŒ ํšŒ์›์œผ๋กœ ๊ฐ€์ž…๋ผ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๐Ÿ˜จ ios 13.0 ์ดํ•˜ ๋ฒ„์ „ ๋ฐ web, Android ์• ํ”Œ ๋กœ๊ทธ์ธ์„ ์ง€์› ํ•  ๊ฒฝ์šฐ - Firebase์— ios ํ”„๋กœ์ ํŠธ๊ฐ€ ์ƒ์„ฑ๋ผ ์žˆ์–ด์•ผ ํ•œ๋‹ค. - ์• ํ”Œ ๊ฐœ๋ฐœ์ž ํ”„๋กœ๊ทธ๋žจ์—..
[ Flutter ]flutter์—์„œ setTimeout๊ณผ ๊ฐ™์€ ํƒ€์ด๋จธ ์„ค์ •ํ•˜๊ธฐ. web API ์ค‘ ํ•˜๋‚˜์ธ setTimeout() method ์™€ ๊ฐ™์€ ์—ญํ• ์„ ํ•˜๋Š” dart์˜ method๋Š” ๋ฌด์—‡์ผ๊นŒ? ๐Ÿค” ๋‚˜๋Š” Flutter ๊ณต์‹ ํŽ˜์ด์ง€์— ๋‚˜์™€์žˆ๋Š” dart:async > Timer class ๋ฅผ ์ด์šฉํ–ˆ๋‹ค. Timer Class๋Š” Null safety๊ฐ€ ์ง€์›๋˜๋Š” ์ถ”์ƒ ํด๋ž˜์Šค ์ด๋‹ค. ๊ณต์‹ํŽ˜์ด์ง€์— ์žˆ๋Š” ๊ธ€์„ ์ฐธ๊ณ ํ•˜์—ฌ ์ž‘์„ฑํ•œ ๋‚˜์˜ ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ. Timer(Duration(seconds: 3), () { Get.to(AddressListPage()); }); ์‹คํ–‰ ๊ฒฐ๊ณผ๋Š” 3์ดˆ ํ›„ GetX ์˜ Get.to()๋ฅผ ์ด์šฉํ•˜์—ฌ AddressListPage๋กœ ์ด๋™ํ•œ๋‹ค. ๐Ÿฅณ ๐Ÿ‘‰ ๋ฐ˜๋ณต ์•ก์…˜์„ ์ฃผ๋ ค๋ฉด Timer.periodic ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค๊ณ  ํ•œ๋‹ค. ์ฐธ๊ณ ๊ธ€: https://fluttermaster.com/t..