์ „์ฒด ๊ธ€ 67

[UnrealEngine5] F-18 ์ „ํˆฌ๊ธฐ ๋‚ ๋ฆฌ๊ธฐ(1)-์ „ํˆฌ๊ธฐ ์›€์ง์ž„ ๊ตฌํ˜„(Feat. TOPGUN:MAVERICK)

ํ”„๋กœ์ ํŠธ ๊ฒŒ์‹œ๊ธ€ [UnrealEngine5] F-18 ์ „ํˆฌ๊ธฐ ๋‚ ๋ฆฌ๊ธฐ(1)-์ „ํˆฌ๊ธฐ ์›€์ง์ž„ ๊ตฌํ˜„(Feat. TOPGUN:MAVERICK)๐Ÿšฉ [UnrealEngine5] F-18 ์ „ํˆฌ๊ธฐ ๋‚ ๋ฆฌ๊ธฐ(2)-์ „ํˆฌ๊ธฐ ๋ชจ๋ธ ์ ์šฉํ•˜๊ธฐ(Feat. TOPGUN:MAVERICK) [UnrealEngine5] F-18 ์ „ํˆฌ๊ธฐ ๋‚ ๋ฆฌ๊ธฐ(3)-์ „ํˆฌ๊ธฐ UI ๊ตฌ์„ฑํ•˜๊ธฐ(Feat. TOPGUN:MAVERICK) [UnrealEngine5] F-18 ์ „ํˆฌ๊ธฐ ๋‚ ๋ฆฌ๊ธฐ(4)(ๅฎŒ)-๋ฏธ์…˜ ์ƒ์„ฑํ•˜๊ธฐ(Feat. TOPGUN:MAVERICK) ์„œ๋ก  ํ‰์†Œ์ฒ˜๋Ÿผ ์—ฌ๊ธฐ์ €๊ธฐ ์น˜์—ฌ ์‚ด๋˜ ๋‚˜๋Š”, ์นœ๊ตฌ์˜ ๊ฐ•๋ ฅํ•œ ์ถ”์ฒœ์œผ๋กœ, ํƒ‘๊ฑด 1, ํƒ‘๊ฑด:๋งค๋ฒ„๋ฆญ(์ดํ•˜ ํƒ‘๊ฑด 2)์„ ํ•˜๋ฃจ๋งŒ์— ๋‹ค ๋ณด์•˜๋‹ค. ํฐ ๊ธฐ๋Œ€๋ฅผ ํ•˜์ง€ ์•Š์•˜๋Š”๋ฐ, ์ƒ๊ฐ๋ณด๋‹ค ๋‹ด๋ฐฑํ•˜๊ฒŒ ์žฌ๋ฐŒ๋Š” ํƒ‘๊ฑด 1๊ณผ, ScreenX์—์„œ ๊ด€๋žŒํ•œ ..

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ํƒ์ƒ‰(์ˆœ์ฐจ, ์ด์ง„, ์ด์ง„ ํŠธ๋ฆฌ, ํž™)

์ˆœ์ฐจ ํƒ์ƒ‰ ํƒ์ƒ‰ ๊ณผ์ • 1. ์›ํ•˜๋Š” ๊ฐ’์ด ๋‚˜์˜ฌ ๋•Œ ๊นŒ์ง€ index๋ฅผ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค. 2. ์›ํ•˜๋Š” ๊ฐ’์„ ์ฐพ์œผ๋ฉด ํƒ์ƒ‰์„ ์ค‘๋‹จํ•œ๋‹ค. ์‹œ๊ฐ„ ๋ณต์žก๋„ ํ‰๊ท  ๋น„๊ต ํšŸ์ˆ˜: (n+1)/2 ์ตœ์•… ๋น„๊ต ํšŸ์ˆ˜: n ์‹œ๊ฐ„ ๋ณต์žก๋„: O(n) ํŠน์ง• 1. ๋‹จ์ˆœํ•˜๋‹ค. (์žฅ์ ) 2. ๋น„ํšจ์œจ์ ์ด๋‹ค. (๋‹จ์ ) ์ด์ง„ ํƒ์ƒ‰ ํƒ์ƒ‰ ๊ณผ์ • 0. ํƒ์ƒ‰ํ•  ๋ฐฐ์—ด์ด ์˜ค๋ฆ„์ฐจ์ˆœ(๋‚ด๋ฆผ์ฐจ์ˆœ) ์ •๋ ฌ์ด ๋˜์–ด์žˆ์–ด์•ผ ํ•œ๋‹ค. 1. ๋ฐฐ์—ด์˜ ๊ธธ์ด์˜ ์ค‘๊ฐ„์— ์žˆ๋Š” ๊ฐ’์„ ์„ ํƒํ•˜์—ฌ ํƒ์ƒ‰ ํ•˜๊ณ ์žํ•˜๋Š” ๊ฐ’๊ณผ ๋น„๊ตํ•œ๋‹ค. 2. ํ•ด๋‹น ๊ฐ’์ด ํƒ์ƒ‰ ํ•˜๊ณ ์žํ•˜๋Š” ๊ฐ’๋ณด๋‹ค ํฌ๋‹ค๋ฉด ์šฐ์ธก์œผ๋กœ, ์ž‘๋‹ค๋ฉด ์ขŒ์ธก์œผ๋กœ ์ด๋™ํ•˜๊ณ  ์›ํ•˜๋Š” ๊ฐ’์„ ํƒ์ƒ‰ ํ•  ๋•Œ ๊นŒ์ง€ 1-2๋ฒˆ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค. ๋” ์ด์ƒ ์ด๋™ํ•  ์ˆ˜ ์—†์–ด๋„(ํƒ์ƒ‰ํ•  ํ›„๋ณด๊ตฐ์ด ์—†์–ด๋„) ํƒ์ƒ‰์„ ์ข…๋ฃŒํ•œ๋‹ค. ์‹œ๊ฐ„ ๋ณต์žก๋„ ๋น„๊ต๋ฅผ ์ง„ํ–‰ํ•  ๋•Œ๋งˆ๋‹ค ํƒ์ƒ‰ ํ›„๋ณด๊ตฐ์ด ์ ˆ๋ฐ˜์œผ๋กœ ์ค„์–ด๋“ ๋‹ค. ..

Programming 2022.05.17

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์ •๋ ฌ(์„ ํƒ, ์‚ฝ์ž…, ํ€ต, ๊ณ„์ˆ˜)

์„ ํƒ ์ •๋ ฌ (ํ•„์ž๋Š” '์ตœ์†Œ๊ฐ’ ์ •๋ ฌ'์ด๋ž€ ์ด๋ฆ„๋„ ์ง๊ด€์ ์ด๋ผ ์ƒ๊ฐํ•œ๋‹ค.) ์ •๋ ฌ ๊ณผ์ • 1. ์ฃผ์–ด์ง„ ๋ฆฌ์ŠคํŠธ ์ค‘ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ํƒ์ƒ‰ํ•œ๋‹ค. 2. ์ฒซ ๋ฒˆ์งธ ์›์†Œ์™€ ํ•ด๋‹น ๊ฐ’์„ ๊ต์ฒดํ•œ๋‹ค(exchange) 3. ์ฒซ ๋ฒˆ์งธ ์›์†Œ๋ฅผ ์ œ์™ธํ•˜๊ณ  1~2๋ฅผ ๋ฐ˜๋ณตํ•œ๋‹ค. ํ•˜๋‚˜์˜ ์›์†Œ๊ฐ€ ๋‚จ์œผ๋ฉด ์ข…๋ฃŒํ•œ๋‹ค. ์‹œ๊ฐ„ ๋ณต์žก๋„ n๊ฐœ์˜ ๋ฆฌ์ŠคํŠธ ์ค‘ ์ตœ์†Œ๊ฐ’์„ ์ฐพ๋Š” ์—ฐ์‚ฐ์€ n-1๋ฒˆ์˜ ๋น„๊ต ์—ฐ์‚ฐ์ด ํ•„์š”. ์„ ํƒ ์ •๋ ฌ์„ ์ง„ํ–‰ํ•˜๋ฉด์„œ ๋น„๊ตํ•ด์•ผํ•  ์›์†Œ๊ฐ€ 1๊ฐœ์”ฉ ์ค„์–ด๋“ค๊ธฐ ๋•Œ๋ฌธ์— ์—ฐ์‚ฐ ํšŸ์ˆ˜๋Š” (n-1) + (n-2) + ... + 2 + 1= ((n-1)*n/2) = O(n^2) ํŠน์ง• 1. ์ž๋ฃŒ ์ด๋™ ํšŸ์ˆ˜๊ฐ€ ๋ฏธ๋ฆฌ ๊ฒฐ์ •๋œ๋‹ค. 2. ์•ˆ์ •์„ฑ์„ ๋งŒ์กฑํ•˜์ง€ ์•Š๋Š”๋‹ค. (๊ฐ™์€ ๊ฐ’์— ๋Œ€ํ•ด ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€” ์ˆ˜ ์žˆ์Œ.) ์‚ฝ์ž… ์ •๋ ฌ (ํ•„์ž๋Š” '์นด๋“œ ์ •๋ ฌ'์ด๋ž€ ์ด๋ฆ„๋„ ์ง๊ด€์ ์ด๋ผ ์ƒ๊ฐํ•œ๋‹ค.) ์ •๋ ฌ..

Programming 2022.05.10

[WEB] Virtual DOM์ด๋ž€?

ํ˜„์žฌ ํ”„๋ก ํŠธ ์—”๋“œ ์‹œ์žฅ์˜ ๋ฆฌ๋”๋Š”? ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋ ˆ์ž„์›Œํฌ(๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ) ์‹œ์žฅ์€ react.js์™€ vue.js๊ฐ€ ์–‘๋ถ„ํ•˜๋Š” ํ˜•ํƒœ๋กœ ๋ณ€ํ™”ํ•˜๊ณ  ์žˆ๋‹ค. ์‚ฌ์žฅ๋˜๊ณ ์žˆ๋Š” angular๋Š” ์ •๋ง๋กœ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋ชจ์Šต์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. npm์—์„œ ์‚ดํŽด๋ณธ ์ฃผ๊ฐ„ ๋‹ค์šด๋กœ๋“œ์ˆ˜. react๊ฐ€ ์••๋„์ ์œผ๋กœ ๋†’๊ณ , ๊ทธ ๋‹ค์Œ vue๊ฐ€ ๋”ฐ๋ฅธ๋‹ค. angular์™€ svelte๋Š” ์ƒ๊ฐ๋ณด๋‹ค ๋” ๋‹ค์šด๋กœ๋“œ ์ˆ˜๊ฐ€ ์ ๋‹ค. ํ™•์‹คํžˆ react์˜ ์ ์œ ์œจ์ด ์••๋„์ ์ธ ๋ชจ์Šต์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์š”์ฆ˜ ๋– ์˜ค๋ฅด๋Š” svelte๋„ ์•„์ง์€ ์ ์œ ์œจ์ด ๋งค์šฐ ๋‚ฎ๋‹ค. vue์™€ react๋Š” ๋ถ„๋ช…ํžˆ ๋‹ค๋ฅด์ง€๋งŒ, vue๊ฐ€ react์˜ ๊ฐœ๋…์„ ๋งŽ์ด ์ฐจ์šฉํ•œ ๊ฒƒ์ด ์‚ฌ์‹ค์ด๊ณ , ์ด๋Š” vue3์˜ composition api์˜ ๋„์ž…์œผ๋กœ react์—๊ฒŒ ํ•œ ๋ฐœ์ง ๋” ๊ฐ€๊นŒ์›Œ์กŒ๋‹ค. ์ด๋Ÿฐ vue์™€ react๊ฐ€ ..

Programming/Web 2022.03.27

[Flutter] ConstrainedBox๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ SingleChildScrollView full Height ์ฑ„์šฐ๊ธฐ

SingleChildScrollView( child: ConstrainedBox( constraints: BoxConstraints(maxHeight: MediaQuery.of(context).size.height), child: Column( children: [ Expanded( child: GridView.count( crossAxisCount: 2, children: List.generate(some.length, (index) { return Container( child: some(index), ); }), ), ), ], ), ), ); 1. SingleChildScrollView๋ฅผ ์ง€์ •ํ•˜๊ณ  ๋ฐ”๋กœ GridView๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด height๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š์•„์„œ ํ™”๋ฉด์ด ๊ทธ๋ ค์ง€์ง€ ์•Š๋Š”๋‹ค. 2. ์—๋Ÿฌ ๋ฌธ..

Programming/Flutter 2022.03.17

[Flutter] image full width ์ฑ„์šฐ๊ธฐ

ClipRRect( borderRadius: BorderRadius.circular(8), child: Image( width: 1000, image: AssetImage('assets/image/announcement-test.png'), fit: BoxFit.fitWidth, ), ), 1. ClipRRect: BoderRadius๋ฅผ ์ฃผ๋ ค๋ฉด ClipRect๊ฐ€ ์•„๋‹ˆ๋ผ ClipRRect๋ฅผ ์จ์•ผํ•œ๋‹ค(...) 2. Image์—๋Š” fit ์ด ์กด์žฌํ•œ๋‹ค. 3. Image width๋ฅผ ๋งค์šฐ ํฐ๊ฐ’์„ ์ฃผ๊ณ , BoxFit์œผ๋กœ ์ œํ•œ์„ ๊ฑธ์–ด์ฃผ๋ฉด, container(๋ฐ”๊นฅ ์œ„์ ฏ)์— ๋งž์ถฐ์„œ ์˜์—ญ์„ ์žก๊ฒŒ๋œ๋‹ค.

Programming/Flutter 2022.03.17

[Python] ์‹ค์ˆ˜ํ•˜๊ธฐ ์ข‹์€ ํŒŒ์ด์ฌ ๋ฌธ๋ฒ•๋“ค

์ฝ”๋”ฉํ…Œ์ŠคํŠธ๋ฅผ ์ค€๋น„ํ•˜๋‹ค, ํŒŒ์ด์ฌ์˜ ๊นŒ๋‹ค๋กœ์šด ๋ฌธ๋ฒ•๋“ค์„ ๋งŒ๋‚˜์„œ ์ •๋ฆฌํ•œ๋‹ค. 1. False == 0 ์€ True์ด๋‹ค. (True, False๋Š” 1, 0๊ณผ ๊ฑฐ์˜ ๋น„์Šทํ•˜๊ฒŒ ๊ฐ„์ฃผ๋œ๋‹ค.) True * 3 > 3 False * 3 > 0 ์œ„์˜ ๋‚ด์šฉ๋ณด๋‹ค ์ค‘์š”ํ•œ ๊ฒƒ์€ if 0: print('hi') > if 1: print('hi') > hi 0๊ณผ 1์ด ์กฐ๊ฑด์‹์•ˆ์— ๋“ค์–ด๊ฐ”์„ ๋•Œ, False, True์ฒ˜๋Ÿผ ํ–‰๋™ํ•œ๋‹ค๋Š” ๊ฒƒ. ๊ทธ๋ฆฌ๊ณ  ๊ฐ€์žฅ ํ—ท๊ฐˆ๋ฆฌ๋Š” ๊ฒƒ์€ if 0 == False: print('hi') > hi if 0 is False: print('hi') > 0 == False๋„ True์ด๋‹ค. ์ด๋ฅผ ๋น„๊ตํ•˜๋ ค๋ฉด is๋ฅผ ์จ์•ผํ•œ๋‹ค. 2. python์€ ์ž‘์€ ์ˆซ์ž๋“ค์— ๋Œ€ํ•ด์„œ ์–ด๋Š์ •๋„ ์บ์‹ฑ์„ ํ•œ๋‹ค. https://stackoverflow...

Programming 2022.03.05

[React] styled-component(css-in-js)์—์„œ transition ํšจ๊ณผ

styled-component์— state๋ฅผ ๋„ฃ์–ด์„œ ์ž‘์„ฑํ•˜๋ฉด ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ๊ฐ€ re-render๋˜๋ฒ„๋ ค์„œ transition์„ ํ™•์ธํ•  ์ˆ˜ ์—†๋‹ค. ํ•˜์ง€๋งŒ style ๊ฐ์ฒด๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด์„œ inline style๋กœ ๋„ฃ์œผ๋ฉด ์ž‘๋™ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ํ•ด๋„ styledComponent ๋‚ด๋ถ€์— ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๋˜ re-render๊ฐ€ ์ผ์–ด๋‚œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์€ warning์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ function(component) ๋‚ด๋ถ€์—์„œ ์„ ์–ธ๋œ styledComponent๋ฅผ ๋ชจ๋‘ ๋ฐ–์œผ๋กœ ๊บผ๋‚ด๊ณ  ๋ณ€์ˆ˜๋ฅผ props๋กœ ๋ฐ›์œผ๋‹ˆ ๋”์ด์ƒ re-render๊ฐ€ ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค. ์ฃผ์˜ํ•  ์ ์€, transition์„ ์ ์šฉํ•  ๋ถ€๋ชจ ๊ฐ์ฒด์ค‘ ํ•˜๋‚˜๋ผ๋„ function(component) ๋‚ด๋ถ€์—์„œ ์„ ์–ธ๋œ๋‹ค๋ฉด re-render๊ฐ€ ์ผ์–ด๋‚˜๋‹ˆ, ๋ชจ..

Programming/React 2022.02.10

[Web, Nginx] "data url(base64 encoded) image" vs "image file" ๊ทธ๋ฆฌ๊ณ  nginx gzip

ํ˜„ ์ƒํ™ฉ ์ง‘์— ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋งŒ๋“ค์–ด ๋‘” ๋ธ”๋กœ๊ทธ๋ฅผ ์„œ๋ฒ„์— ์˜ฌ๋ฆฌ๊ณ  ๊ณ„์†ํ•ด์„œ ๋‹ค๋“ฌ๊ณ  ์žˆ๋‹ค. ์„œ๋ฒ„๋Š” ์ž˜ ์˜ฌ๋ผ๊ฐ”๋Š”๋ฐ ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์†๋„๊ฐ€ ๋„ˆ๋ฌด ๋Š๋ ค์„œ ๋ฌด์Šจ ์ผ์ธ๊ฐ€ ๋ณด๋‹ˆ.. ๐ŸŒ ์ธํ„ฐ๋„ท ์†๋„๊ฐ€ ๋„ˆ๋ฌด ๋Š๋ฆฌ๋‹ค... ๋Œ€์ถฉ ์ดˆ๋‹น 1MB ๋ฐ–์— ์•ˆ๋œ๋‹ค. ๊ทธ๋ž˜์„œ ๊ณต์œ ๊ธฐ๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ์ธํ„ฐ๋„ท์„ ์—ฐ๊ฒฐํ•˜๋‹ˆ ์ดˆ๋‹น 10MB๋Š” ๋‚˜์˜ค๋”๋ผ(๋‹คํ–‰). ์–ด์จŒ๋“  ์ด ๋ฌธ์ œ๋Š” ๊ณต์œ ๊ธฐ๋ฅผ ๊ต์ฒดํ•˜๊ธฐ๋กœ ํ–ˆ๊ณ , ๊ณต์œ ๊ธฐ๊ฐ€ ๋„์ฐฉํ•˜๊ธฐ ์ „๊นŒ์ง€ ์‚ฌ์ดํŠธ ์„ฑ๋Šฅ์ด๋‚˜ ํŠœ๋‹ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค. ์ดˆ๋‹น 1MB๋ผ๋‹ˆ, ์ด๋ ‡๊ฒŒ ์ข‹์€ ์‹คํ—˜ ํ™˜๊ฒฝ์ด ์–ด๋”” ์žˆ๋Š”๊ฐ€! ๊ทธ๋ž˜์„œ ํŠœ๋‹ํ•  ๋ถ€๋ถ„์€? ๋ธ”๋กœ๊ทธ๋ฅผ ๋งŒ๋“ค ๋•Œ ๊ณ„์†ํ•ด์„œ ๊ฑฑ์ •ํ•˜๋˜ ๋ถ€๋ถ„์ด ์žˆ๋Š”๋ฐ, ๋ฐ”๋กœ ํฌ์ŠคํŠธ์— ๋“ค์–ด๊ฐˆ ์ด๋ฏธ์ง€์˜€๋‹ค. ์ด๋ฏธ์ง€๋ฅผ ํŒŒ์ผ๋กœ ์ €์žฅํ•ด์„œ url๋กœ serving ํ•˜๊ณ  ์‹ถ์—ˆ์ง€๋งŒ, ํ˜„์žฌ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” quill-editor๋กœ๋Š” ์ด๋ฅผ ํŽธํ•˜๊ฒŒ..

Programming/Web 2022.02.03