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

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

ํŒŒ์ด์ฌ RuntimeError: lost sys.stdin ์˜ค๋ฅ˜ ํ•ด๊ฒฐ ํŒŒ์ด์ฌ RuntimeError: lost sys.stdin ์˜ค๋ฅ˜ ํ•ด๊ฒฐTraceback (most recent call last): File "calculate_daily_tax.py", line 41, in File "calculate_daily_tax.py", line 27, in mainRuntimeError: lost sys.stdin์•„๋ž˜ ์—๋Ÿฌ๋Š” ์ฃผ๋กœ PyInstaller๋กœ --noconsole (๋˜๋Š” --windowed) ์˜ต์…˜์„ ๊ฑธ์–ด์„œ ์ฝ˜์†” ์ž…์ถœ๋ ฅ์ด ๋ง‰ํ˜”๊ฑฐ๋‚˜, ํ˜น์€ IDE ๋‚ด์žฅ ํ„ฐ๋ฏธ๋„ ๋“ฑ์—์„œ sys.stdin์ด ๋‹ซํ˜€ ์žˆ์„ ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.RuntimeError: lost sys.stdin์ด๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.1. ์ฝ˜์†” ๋ชจ๋“œ๋ฅผ ํ™œ์„ฑํ™”ํ•˜์—ฌ exe ๋นŒ๋“œํ•˜๊ธฐ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ํ•ด๊ฒฐ์ฑ…์€ ์ฝ˜.. 2025. 4. 26.
์ผ์šฉ์ง ์†Œ๋“์„ธ ๊ณ„์‚ฐ๋ฐฉ๋ฒ•, ํŒŒ์ด์ฌ ์ž๋™ ๊ณ„์‚ฐ๊ธฐ ๋งŒ๋“ค๊ธฐ ์ผ์šฉ์ง ์†Œ๋“์„ธ ๊ณ„์‚ฐ๋ฐฉ๋ฒ•, ํŒŒ์ด์ฌ ์ผ์šฉ์ง ์†Œ๋“์„ธ ์ž๋™ ๊ณ„์‚ฐ๊ธฐ ๋งŒ๋“ค๊ธฐ์ผ์šฉ์ง ๊ทผ๋กœ์ž๋Š” ์›”๊ธ‰์ œ๊ฐ€ ์•„๋‹Œ ์ผ๊ธ‰์—ฌ × ๊ทผ๋ฌด์ผ์ˆ˜๋กœ ์†Œ๋“์ด ๊ฒฐ์ •๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๋งค๋ฒˆ ์ง€๊ธ‰ ์‹œ ์›์ฒœ์ง•์ˆ˜์„ธ์•ก์„ ์ •ํ™•ํžˆ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜์ž‘์—…์œผ๋กœ ๊ณ„์‚ฐํ•˜๋‹ค ๋ณด๋ฉด ์‹ค์ˆ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๊ฐ„๋‹จํ•œ ํŒŒ์ด์ฌ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ†ตํ•ด ์ž๋™์œผ๋กœ ์„ธ์•ก์„ ์‚ฐ์ถœํ•˜๋ฉด ์—…๋ฌด ํšจ์œจ์„ฑ๊ณผ ์ •ํ™•์„ฑ์„ ๋™์‹œ์— ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ์šฉ์ง ์†Œ๋“์„ธ ๊ณ„์‚ฐ๋ฐฉ๋ฒ•์œผ๋กœ ๋ณธ ํฌ์ŠคํŒ…์—์„œ๋Š” ์ผ์šฉ์ง ์†Œ๋“์„ธ ๊ณ„์‚ฐ๊ธฐ๋ฅผ ํŒŒ์ด์ฌ์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ณ , PyInstaller๋ฅผ ์ด์šฉํ•ด exe ํŒŒ์ผ๋กœ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•๊นŒ์ง€ ๋‹จ๊ณ„๋ณ„๋กœ ์•ˆ๋‚ด๋“œ๋ฆฝ๋‹ˆ๋‹ค.์ผ์šฉ์ง ์†Œ๋“์„ธ ๊ณ„์‚ฐ๋ฐฉ๋ฒ• ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๋ฐ ์ค€๋น„์‚ฌํ•ญPython ์„ค์น˜๊ณต์‹ ํ™ˆํŽ˜์ด์ง€(python.org)์—์„œ Python 3.8 ์ด์ƒ ๋ฒ„์ „์„ ์„ค์น˜ํ•ด ์ฃผ์„ธ์š”.์„ค์น˜ ์‹œ “Add Python .. 2025. 4. 25.
ํŒŒ์ด์ฌ ์ธ์Šคํƒ€๊ทธ๋žจ ์‚ฌ์ง„ ๋‹ค์šด๋กœ๋“œ ์Šคํฌ๋ฆฝํŠธ ๋งŒ๋“ค๊ธฐ ํŒŒ์ด์ฌ ์ธ์Šคํƒ€๊ทธ๋žจ ์‚ฌ์ง„ ๋‹ค์šด๋กœ๋“œ ์Šคํฌ๋ฆฝํŠธ ๋งŒ๋“ค๊ธฐ์ธ์Šคํƒ€๊ทธ๋žจ์˜ ๊ตฌ์กฐ๊ฐ€ ์ž์ฃผ ๋ฐ”๋€Œ๊ณ  ๊ณต์‹ API๋ฅผ ์“ฐ๋ ค๋ฉด ์•ฑ ๋“ฑ๋ก ๋ฐ ํ† ํฐ ๋ฐœ๊ธ‰ ์ ˆ์ฐจ๊ฐ€ ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐ€์žฅ ์•ˆ์ •์ ์œผ๋กœ ์‚ฌ์ง„์„ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ Instaloader ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์Šคํฌ๋ฆฝํŠธ๋Š” ๊ณต๊ฐœ ๊ณ„์ •์€ ๋กœ๊ทธ์ธ ์—†์ด, ๋น„๊ณต๊ฐœ ๊ณ„์ •์€ ๋กœ๊ทธ์ธ ํ›„์— ์‚ฌ์ง„์„ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.์•„๋ž˜ ์˜ˆ์ œ๋ฅผ ์ฐธ๊ณ ํ•˜์‹œ๊ณ , ํ•„์š”์— ๋”ฐ๋ผ ์˜ต์…˜์„ ์กฐ์ •ํ•˜์—ฌ ์‚ฌ์šฉํ•˜์„ธ์š”.# ๋จผ์ € Instaloader ์„ค์น˜pip install instaloaderํŒŒ์ด์ฌ ์ธ์Šคํƒ€๊ทธ๋žจ ์‚ฌ์ง„ ๋‹ค์šด๋กœ๋“œ ์Šคํฌ๋ฆฝํŠธ ์†Œ์Šค์ฝ”๋“œ#!/usr/bin/env python3# -*- coding: utf-8 -*-"""instagram_downloader.pyInstaloader๋ฅผ ์ด์šฉํ•ด .. 2025. 4. 24.
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ map()ํ•จ์ˆ˜, Object json key ๊ฐ’ ๊ฐ€์ ธ์˜ค๊ธฐ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ map()ํ•จ์ˆ˜, Object json key ๊ฐ’ ๊ฐ€์ ธ์˜ค๊ธฐ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์›น ๊ฐœ๋ฐœ์—์„œ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ์ค‘ ํ•˜๋‚˜๋กœ, ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์กฐ์ž‘ ๋ฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๋‚ด์žฅ ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ค‘์—์„œ๋„ ๋ฐฐ์—ด์„ ํšจ์œจ์ ์œผ๋กœ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•œ map() ํ•จ์ˆ˜์™€ JSON ๊ฐ์ฒด์—์„œ ํ‚ค(key) ๊ฐ’์„ ์ถ”์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๊ฐœ๋ฐœ์ž๋“ค์ด ์ž์ฃผ ํ™œ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ map() ํ•จ์ˆ˜์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ์‚ฌ์šฉ๋ฒ•, ๊ทธ๋ฆฌ๊ณ  JSON ๊ฐ์ฒด์˜ ํ‚ค ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์‹ฌ๋„ ์žˆ๊ฒŒ ์•Œ์•„๋ณด๊ณ , ์ด๋ฅผ HTML ์บ”๋ฒ„์Šค๋ฅผ ํ™œ์šฉํ•œ ์‹ค์ „ ์˜ˆ์ œ์™€ ํ•จ๊ป˜ ์†Œ๊ฐœํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜๊ณผ ์กฐ์ž‘์€ ๋งค์šฐ ์ค‘์š”ํ•œ ์ž‘์—…์ž…๋‹ˆ๋‹ค. ๋ฐฐ์—ด์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๊ณตํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•˜๊ฑฐ๋‚˜.. 2025. 3. 20.
๊ตฌ๊ธ€ ์• ๋“œ์„ผ์Šค Offerwall ์˜คํผ์›” ๊ด‘๊ณ  ์„ค์ •๋ฐฉ๋ฒ• - ๊ด‘๊ณ ๋ฅผ ๋ด์•ผ๋งŒ ์ปจํ…์ธ ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ชจ๋‹ฌ ์ฐฝ ๊ตฌ๊ธ€ ์• ๋“œ์„ผ์Šค Offerwall ์˜คํผ์›” ๊ด‘๊ณ  ์„ค์ •๋ฐฉ๋ฒ• - ๊ด‘๊ณ ๋ฅผ ๋ด์•ผ๋งŒ ์ปจํ…์ธ ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ชจ๋‹ฌ ์ฐฝ๊ตฌ๊ธ€ ์• ๋“œ์„ผ์Šค๋Š” ์ˆ˜๋…„๊ฐ„ ์˜จ๋ผ์ธ ๊ด‘๊ณ  ์‹œ์žฅ์—์„œ ์•ˆ์ •์ ์ธ ์ˆ˜์ต ์ฐฝ์ถœ ๋„๊ตฌ๋กœ ์ž๋ฆฌ ์žก์•„์™”์Šต๋‹ˆ๋‹ค. ๊ทธ ์ค‘์—์„œ๋„ ์˜คํผ์›”(Offerwall) ๊ด‘๊ณ ๋Š” ์ผ๋ฐ˜์ ์ธ ๋ฐฐ๋„ˆ ๊ด‘๊ณ ๋‚˜ ๋™์˜์ƒ ๊ด‘๊ณ ์™€๋Š” ์ฐจ๋ณ„ํ™”๋œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์˜คํผ์›” ๊ด‘๊ณ ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๊ด‘๊ณ ๋ฅผ ๋‹จ์ˆœํžˆ ๋…ธ์ถœํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์‹ค์ œ๋กœ ๊ด‘๊ณ ์— ์ฐธ์—ฌํ•˜์—ฌ ๋ณด์ƒ์„ ๋ฐ›๋Š” ํ˜•ํƒœ์˜ ๊ด‘๊ณ ์ž…๋‹ˆ๋‹ค. ์ตœ๊ทผ ๋ธ”๋กœ๊ทธ๋ฅผ ์šด์˜ํ•˜๋Š” ๋งŽ์€ ์‚ฌ์šฉ์ž๋“ค์ด “๊ด‘๊ณ ๋ฅผ ๋ด์•ผ๋งŒ ์ปจํ…์ธ ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค”๋Š” ๋ชจ๋‹ฌ ์ฐฝ์— ๋Œ€ํ•ด ๋ถˆ๋งŒ์„ ํ† ๋กœํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋Š” ๊ด‘๊ณ  ์ˆ˜์ต ๊ทน๋Œ€ํ™”๋ฅผ ์œ„ํ•œ ๊ตฌ๊ธ€ ์• ๋“œ์„ผ์Šค์˜ ์ „๋žต ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.์ด ๊ธ€์—์„œ๋Š” ๊ตฌ๊ธ€ ์• ๋“œ์„ผ์Šค์˜ ์˜คํผ์›” ๊ด‘๊ณ ๊ฐ€ ๋ฌด์—‡์ธ์ง€, ์–ด๋–ป๊ฒŒ ์„ค์ •ํ•˜๋Š”์ง€ ๊ทธ๋ฆฌ๊ณ  ์ด๋ฅผ .. 2025. 3. 14.
์• ์ž์ผ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ์˜ UI ํ”„๋กœํ† ํƒ€์ดํ•‘๊ณผ ์ปดํฌ๋„ŒํŠธ ๋””์ž์ธ ์• ์ž์ผ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ์˜ UI ํ”„๋กœํ† ํƒ€์ดํ•‘๊ณผ ์ปดํฌ๋„ŒํŠธ ๋””์ž์ธ์• ์ž์ผ(Agile) ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ๋Š” ๋น ๋ฅธ ํ”ผ๋“œ๋ฐฑ๊ณผ ๋ฐ˜๋ณต์ ์ธ ๊ฐœ์„ ์ด ํ•ต์‹ฌ ๊ฐ€์น˜์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ™˜๊ฒฝ์—์„œ UI ํ”„๋กœํ† ํƒ€์ดํ•‘๊ณผ ์ปดํฌ๋„ŒํŠธ ๋””์ž์ธ์€ ๊ฐœ๋ฐœ ์ดˆ๊ธฐ ๋‹จ๊ณ„๋ถ€ํ„ฐ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๊ฒ€์ฆํ•˜๊ณ , ๊ฐœ๋ฐœ์ž์™€ ๋””์ž์ด๋„ˆ ๊ฐ„์˜ ์›ํ™œํ•œ ํ˜‘์—…์„ ์ง€์›ํ•˜๋Š” ์ค‘์š”ํ•œ ์š”์†Œ๋กœ ์ž๋ฆฌ ์žก๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ํ”„๋กœํ† ํƒ€์ดํ•‘ ๋„๊ตฌ์™€ ๋ฆฌ์•กํŠธ ์Šคํ† ๋ฆฌ๋ถ(Storybook) ๋“ฑ์„ ํ™œ์šฉํ•˜์—ฌ UI ๋””์ž์ธ์„ ์‹ ์†ํ•˜๊ฒŒ ์‹œ๊ฐํ™”ํ•˜๊ณ  ๊ฒ€์ฆํ•˜๋Š” ๋ฐฉ๋ฒ•, ๊ทธ๋ฆฌ๊ณ  ์ด๋ฅผ ํ†ตํ•œ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค์™€ ํ˜‘์—… ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋Œ€ํ•ด ๊ตฌ์ฒด์ ์œผ๋กœ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.์• ์ž์ผ ๊ฐœ๋ฐœ๊ณผ UI ํ”„๋กœํ† ํƒ€์ดํ•‘์˜ ์ค‘์š”์„ฑ์• ์ž์ผ ๊ฐœ๋ฐœ์€ ์งง์€ ๊ฐœ๋ฐœ ์ฃผ๊ธฐ์™€ ์ง€์†์ ์ธ ํ”ผ๋“œ๋ฐฑ์„ ํ†ตํ•ด ์ œํ’ˆ์„ ์ ์ง„์ ์œผ๋กœ ๊ฐœ์„ ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. UI ํ”„๋กœํ† ํƒ€์ดํ•‘์€ ์ด๋Ÿฌํ•œ ์• ์ž์ผ ๊ฐœ๋ฐœ.. 2025. 2. 26.