*Encounter the Wider World*

๐Ÿ 
eatch.dev
๐Ÿฆ‹
@eatch.dev
๐Ÿ˜
@EatChangmyeong@planet.moe
๐Ÿ™
@EatChangmyeong
๐Ÿ“โ‚‚
blog.eatch.dev
๐Ÿ“โ‚
eatchangmyeong.github.io
2

Just had someone leave feedback on my F/OSS project saying โ€œmaybe that's fine if a product is focused on your Chinese community.โ€

I'm Korean. Every single piece of documentation is in English. There's nothing in Chinese anywhere in the project.

This kind of microaggression is exhausting. As a non-white maintainer, you deal with these assumptions constantlyโ€”people who feel entitled to your labor while casually othering you based on your name.

It chips away at your motivation. It makes you wonder why you bother.

https://github.com/dahlia/optique/issues/59#issuecomment-3678606022

0
14
1

์ œ ์ง€์ธ ๋ถ„์ด GitHub ์—์„œ ์ธ์ข…์ฐจ๋ณ„์  ์ฝ”๋ฉ˜ํŠธ๋ฅผ ๋ฐ›์œผ์…จ์Šต๋‹ˆ๋‹ค. GitHub ๊ณ„์ •์ด ์žˆ์œผ์‹œ๋ฉด ์‹ ๊ณ  ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์˜์–ด๊ฐ€ ์–ด๋ ค์šฐ์‹œ๋”๋ผ๋„ LLM์œผ๋กœ ์‹ ๊ณ ๊ธ€ ์จ๋‹ฌ๋ผ๊ณ  ํ•˜๋ฉด ์ž˜ ์จ์ค๋‹ˆ๋‹ค. ์‹ ๊ณ ๋Š” ๋‹จ ์‹œ๊ฐ„ ๋‚ด์— ๋งŽ์ด ์ฐํ˜€์•ผ ์‹ค์ œ ๋ณด๊ณ ๋กœ ์˜ฌ๋ผ๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋Šฅํ•˜์‹  ๋ถ„๋“ค์€ ๊ผญ ์‹ ๊ณ  ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

4
0
0

ํ…์ŠคํŠธ ์„ ํƒ ํ•ธ๋“ค Text Select Handle ์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๋ฆฌ์†Œ์Šค์— ๋“ค์–ด๊ฐ€์žˆ๋„ค์šฉ android.googlesource.com/platform/fra...

android.googlesource.com/platform/frame...

0
0
0
5
0
0
0

@eatch์ž‡์ฐฝ๋ช… EatChangmyeong๐Ÿ’•๐Ÿฑ ํ…์ŠคํŠธ ์ปค์„œ(text cursor) ๋‚ด์ง€๋Š” ์บ๋Ÿฟ(caret)์ด๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ฑธ๋กœ ์•„๋Š”๋ฐโ€ฆ ์ด๊ฑธ ๊ถ๊ธˆํ•ด ํ•˜์‹  ๊ฒŒ ์•„๋‹ˆ๋ ค๋‚˜์š”?

0
1
1

์™œ๋ƒ๋ฉด ์ด ๊ธ€์„ ์žฌ์ž‘์„ฑํ•˜๊ณ  ์žˆ๊ณ  ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ๋ถ€๋ถ„์ด ๋ณต์žกํ•ด์„œ ํƒ€์ž… ์•ˆ์ •์„ฑ์€ ์›ฌ๋งŒํ•˜๋ฉด ์ฑ™๊ธฐ๊ณ  ์‹ถ์€๋ฐ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋„ ์•ˆ๋˜๊ณ  ReScript๋„ ์•ˆ๋˜๊ณ  ๊ตณ์ด Idris๋ฅผ ๊ฐ€์ ธ๋‹ค ์“ฐ๋Š” ๊ฑด ์˜ค๋ฒ„ํ‚ฌ๊ฐ™๊ณ ...

1
2
0
0

I was wondering when browsers started calling the UI "chrome" (it's not a Google thing!)

Amazingly, the Firefox (then Mozilla) commit that introduced the "chrome" tree into the source code dates back to Sep 4, 1998... which is also the same day Google was founded!

github.com/mozilla-firefox/fir

Edit: Netscape used the term much earlier though! Not as much in filenames, but in the actual source code it's all over the place.

2
0
0

Calling all developers for help: I'm currently trying to implement a () feature for Hackers' Pub, an -enabled community for software engineers. Is there a formal specification for how cross-instance reporting should work in ActivityPub? Or, is there any well-documented material that explains how the major implementations handle it?

2
0
0
1
2
0
2
1

๋ฌธ๋งฅ์ ์œผ๋กœ ์•Œ์•„์„œ ์–ด๋–ค ํƒ€์ž…์ด์–ด์•ผ ํ•˜๋Š”์ง€ ์ถ”๋ก ํ•ด์ฃผ๋Š” ์ •์  ๋ถ„์„๊ธฐ๊ฐ€ ๋‹ฌ๋ฆฐ ์–ธ์–ด๋Š” ์—†๋‚˜

์–ธ์ œ๊นŒ์ง€ (a:number, b:number) => a + b, (a:string, b:string) => a + b, <T>(a: T, b: T) => a + b ๋ฅผ ํ•ด์ค˜์•ผ ํ•˜๋‚˜๊ณ 
๊ทธ๋ƒฅ ๋Œ€์ถฉ ๋ˆˆ์น˜๊ป (a, b) => a + b ํ•˜๋ฉด 'b ๋Š” a ์™€ ๋”ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋Š” ํƒ€์ž…์ด๊ณ  a ๋Š” ๋ฌด์–ธ๊ฐ€์™€ ๋”ํ•  ์ˆ˜ ์žˆ๋Š” ํƒ€์ž…์ด๊ตฌ๋‚˜' ํ•˜๊ณ  ์ถ”๋ก ํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ„์„๊ธฐ๊ฐ€ ๋‹ฌ๋ฆฐ ์–ธ์–ด๊ฐ€ ํ•„์š”ํ•จ

2

์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ–ˆ๊ธธ๋ž˜ ์ˆ˜์‹์„ ๋ชป ์ผ๋ƒ๊ณ ์š”??

  • (before) .mdx ํŒŒ์ผ์— ๋ณ„๋„ ์ต์ŠคํฌํŠธ๋กœ ๊ฐ์ฃผ ๋‚ด์šฉ์„ ์ผ์—ˆ๋Š”๋ฐ ์™ ์ง€๋ชจ๋ฅด๊ฒŒ JSX ๋ฌธ๋ฒ•์€ ๋˜์ง€๋งŒ ๋งˆํฌ๋‹ค์šด ๋ฌธ๋ฒ•์€ ์•ˆ ๋˜๋Š” ์ƒํ™ฉ์— ๋ด‰์ฐฉ... Astro๊ฐ€ ๋ณ„๋„ ์ต์ŠคํฌํŠธ๋ฅผ ๋ชป ๋ด์„œ import.global.meta๋กœ ๋ถˆ๋Ÿฌ์˜ค๊ณ  ์›๋ž˜๋Š” ๋ณผ ์ผ ์—†๋Š” AstroVNode ํƒ€์ž…์„ ์จ๊ฐ€๋ฉด์„œ ์˜จ๋ชธ๋น„ํ‹€๊ธฐ๋กœ ๊ตฌํ˜„
  • (after) ๋ชจ๋“  ๊ฐ์ฃผ๊ฐ€ ๋ณ„๋„ ํŒŒ์ผ(๐Ÿคฃ). import.global.meta๋Š” ์•„์ง ์žˆ์ง€๋งŒ ๊ณ ์น˜๊ธฐ ์ „๋ณด๋‹ค ํ›จ์”ฌ ๊น”๋”ํ•ด์ง„ ๋А๋‚Œ
3
2

JS ํ”„๋ ˆ์ž„์›Œํฌ ์„ฑ๊ฒฉํ…Œ์ŠคํŠธ๋„ ์žˆ๋„ค ๐Ÿ˜‚ I'm Solid! You're the performance-obsessed perfectionist! Take the quiz to find your JS framework match! js-framework-quiz.vercel.app/result/solid

I'm Solid!

0
1

์ž‡์ฐฝ๋ช… EatChangmyeong๐Ÿ’•๐Ÿฑ shared the below article:

Stop writing if statements for your CLI flags

ๆดช ๆฐ‘ๆ†™ (Hong Minhee) @hongminhee@hackers.pub

Traditional CLI development often involves writing repetitive runtime validation logic to manage complex dependencies between various flags and options. While modern TypeScript-first libraries have improved individual option parsing, they frequently fail to encode these inter-dependencies into the type system, resulting in loose types that necessitate manual checks. Optique solves this problem through its conditional combinator, which treats option relationships as a primary architectural concern. By utilizing a discriminator value to select specific branches of a parser, it enables the automatic inference of precise discriminated unions. This ensures that certain flags are strictly required or forbidden based on the values of other options, effectively shifting validation logic from runtime to the compiler. Whether modeling database connection strings or authentication protocols, the structure of the parser serves as the ultimate constraint. This methodology eliminates the need for manual validation code and ensures that the type system remains the single source of truth throughout the application's lifecycle. Embracing structural parsing over manual validation significantly enhances the reliability and maintainability of sophisticated command-line tools.

Read more โ†’
7
3
3
1

12ๆœˆ(์›”) 6ๆ—ฅ(์ผ) ์„œ์šธ์—์„œ ้–‹ๅ‚ฌ(๊ฐœ์ตœ)๋˜๋Š” liftIO 2025์—์„œ ใ€ˆOptique: TypeScript์—์„œ CLI ํŒŒ์„œ ์ปด๋น„๋„ค์ดํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด ๋ณด์•˜๋‹คใ€‰(ๅ‡้กŒ(๊ฐ€์ œ))๋ผ๋Š” ไธป้กŒ(์ฃผ์ œ)๋กœ ็™ผ่กจ(๋ฐœํ‘œ)๋ฅผ ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์•„์ง liftIO 2025 ํ‹ฐ์ผ“์€ ํŒ”๊ณ  ์žˆ์œผ๋‹ˆ, ๅ‡ฝๆ•ธๅž‹(ํ•จ์ˆ˜ํ˜•) ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ้—œๅฟƒ(๊ด€์‹ฌ) ์žˆ์œผ์‹  ๋ถ„๋“ค์˜ ๋งŽ์€ ๅƒ่ˆ‡(์ฐธ์—ฌ) ๋ฐ”๋ž๋‹ˆ๋‹ค!

์˜ค๋Š˜ liftIO 2025์—์„œ ็™ผ่กจ(๋ฐœํ‘œ)ํ•œ ใ€ˆOptique: TypeScript์˜ ํƒ€์ž… ๆŽจ่ซ–(์ถ”๋ก )์œผ๋กœ CLI ๆœ‰ๆ•ˆๆ€ง(์œ ํšจ์„ฑ) ๆชขๆŸป(๊ฒ€์‚ฌ)๋ฅผ ไปฃๆ›ฟ(๋Œ€์ฒด)ํ•˜๊ธฐใ€‰์˜ ็™ผ่กจ(๋ฐœํ‘œ) ่ณ‡ๆ–™(์ž๋ฃŒ)๋ฅผ ๅ…ฑๆœ‰(๊ณต์œ )ํ•ฉ๋‹ˆ๋‹ค! ๋“ค์–ด์ฃผ์‹  ๋ชจ๋“  ๋ถ„๋“ค๊ป˜ ๆ„Ÿ่ฌ(๊ฐ์‚ฌ) ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

9
0
0
1

์ง€๊ธˆ โ€˜React2Shell(๋ฆฌ์•กํŠธํˆฌ์‰˜)โ€™์ด๋ผ๋Š” ์ด๋ฆ„ ํ•˜๋‚˜๋กœ ์ˆ ๋ ์ด๊ณ  ์žˆ๋‹ค. CVSS 10.0 ๋“ฑ๊ธ‰์ด ๋ถ€์—ฌ๋œ ์‹ ๊ทœ ์ทจ์•ฝ์  CVE-2025-55182๊ฐ€ ๊ณต๊ฐœ๋˜๋ฉด์„œ ์ „ ์„ธ๊ณ„ ๊ฐœ๋ฐœ์ž์™€ ๋ณด์•ˆ์ „๋ฌธ๊ฐ€๋“ค์€ โ€œ2025๋…„ํŒ Log4Shellโ€์ด๋ผ๋Š” ํ‘œํ˜„๊นŒ์ง€ ์‚ฌ์šฉํ•˜๋ฉฐ ์‹ฌ๊ฐ์„ฑ์„ ๊ฒฝ๊ณ 

React/Next.js ์“ฐ์‹ ๋‹ค๋ฉด ์ง€๊ธˆ ๋‹น์žฅ ํŒจ์น˜ํ•˜์„ธ์š”. 19.0.1 / 19.1.2 / 19.2.1

2025๋…„ํŒ Log4Shell ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค

https://www.dailysecu.com/news/articleView.html?idxno=203111

1

C++ rant๋งŒ์œผ๋กœ 2์‹œ๊ฐ„ ๋ถ„๋Ÿ‰์„ ์ฑ„์šธ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒŒ ๋†€๋ž๋‹ค (CW: AI ์‚ฝํ™”) https://youtu.be/7fGB-hjc2Gc

1

ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ pd6156.tistory.com/63

haesa_s์˜ ํ‹ฐ์Šคํ† ๋ฆฌ ๊ฒŒ์‹œ๋ฌผ '[XSS] ๊ธฐ์ดˆ ์ •๋ฆฌ' ๋ฐœ์ทŒ:

-์Šคํฌ๋ฆฝํŠธ ๋‚œ๋…ํ™”

์˜ˆ์ œ

๏พŸฯ‰๏พŸ๏พ‰= /๏ฝ€๏ฝยด๏ผ‰๏พ‰ ~โ”ปโ”โ”ป //*ยดโˆ‡๏ฝ€*/ ['_']; o=(๏พŸ๏ฝฐ๏พŸ) =_=3; c=(๏พŸฮ˜๏พŸ) =(๏พŸ๏ฝฐ๏พŸ)-(๏พŸ๏ฝฐ๏พŸ); (๏พŸะ”๏พŸ) =(๏พŸฮ˜๏พŸ)= (o^_^o)/ 
(o^_^o);(๏พŸะ”๏พŸ)={๏พŸฮ˜๏พŸ: '_' ,๏พŸฯ‰๏พŸ๏พ‰ : ((๏พŸฯ‰๏พŸ๏พ‰==3) +'_') [๏พŸฮ˜๏พŸ] ,๏พŸ๏ฝฐ๏พŸ๏พ‰ :(๏พŸฯ‰๏พŸ๏พ‰+ '_')[o^_^o -(๏พŸฮ˜๏พŸ)] ,๏พŸะ”๏พŸ๏พ‰:((๏พŸ
๏ฝฐ๏พŸ==3) +'_')[๏พŸ๏ฝฐ๏พŸ] }; (๏พŸะ”๏พŸ) [๏พŸฮ˜๏พŸ] =((๏พŸฯ‰๏พŸ๏พ‰==3) +'_') [c^_^o];(๏พŸะ”๏พŸ) ['c'] = ((๏พŸะ”๏พŸ)+'_') [ (๏พŸ๏ฝฐ๏พŸ)+(๏พŸ๏ฝฐ๏พŸ)-
(๏พŸฮ˜๏พŸ) ];(๏พŸะ”๏พŸ) ['o'] = ((๏พŸะ”๏พŸ)+'_') [๏พŸฮ˜๏พŸ];(๏พŸo๏พŸ)=(๏พŸะ”๏พŸ) ['c']+(๏พŸะ”๏พŸ) ['o']+(๏พŸฯ‰๏พŸ๏พ‰ +'_')[๏พŸฮ˜๏พŸ]+ ((๏พŸฯ‰๏พŸ๏พ‰==3) 
+'_') [๏พŸ๏ฝฐ๏พŸ] + ((๏พŸะ”๏พŸ) +'_') [(๏พŸ๏ฝฐ๏พŸ)+(๏พŸ๏ฝฐ๏พŸ)]+ ((๏พŸ๏ฝฐ๏พŸ==3) +'_') [๏พŸฮ˜๏พŸ]+((๏พŸ๏ฝฐ๏พŸ==3) +'_') [(๏พŸ๏ฝฐ๏พŸ) - (๏พŸฮ˜๏พŸ)]+(๏พŸะ”๏พŸ) 
['c']+((๏พŸะ”๏พŸ)+'_') [(๏พŸ๏ฝฐ๏พŸ)+(๏พŸ๏ฝฐ๏พŸ)]+ (๏พŸะ”๏พŸ) ['o']+((๏พŸ๏ฝฐ๏พŸ==3) +'_') [๏พŸฮ˜๏พŸ];(๏พŸะ”๏พŸ) ['_'] =(o^_^o) [๏พŸo๏พŸ] [๏พŸo๏พŸ];(๏พŸ
ฮต๏พŸ)=((๏พŸ๏ฝฐ๏พŸ==3) +'_') [๏พŸฮ˜๏พŸ]+ (๏พŸะ”๏พŸ) .๏พŸะ”๏พŸ๏พ‰+((๏พŸะ”๏พŸ)+'_') [(๏พŸ๏ฝฐ๏พŸ) + (๏พŸ๏ฝฐ๏พŸ)]+((๏พŸ๏ฝฐ๏พŸ==3) +'_') [o^_^o -๏พŸฮ˜๏พŸ]+((๏พŸ๏ฝฐ๏พŸ=
=3) +'_') [๏พŸฮ˜๏พŸ]+ (๏พŸฯ‰๏พŸ๏พ‰ +'_') [๏พŸฮ˜๏พŸ]; (๏พŸ๏ฝฐ๏พŸ)+=(๏พŸฮ˜๏พŸ); (๏พŸะ”๏พŸ)[๏พŸฮต๏พŸ]='\'; (๏พŸะ”๏พŸ).๏พŸฮ˜๏พŸ๏พ‰=(๏พŸะ”๏พŸ+ ๏พŸ๏ฝฐ๏พŸ)[o^_^o -(๏พŸฮ˜๏พŸ)];
(o๏พŸ๏ฝฐ๏พŸo)=(๏พŸฯ‰๏พŸ๏พ‰ +'_')[c^_^o];(๏พŸะ”๏พŸ) [๏พŸo๏พŸ]='"';(๏พŸะ”๏พŸ) ['_'] ( (๏พŸะ”๏พŸ) ['_'] (๏พŸฮต๏พŸ+(๏พŸะ”๏พŸ)[๏พŸo๏พŸ]+ (๏พŸะ”๏พŸ)[๏พŸฮต๏พŸ]+(๏พŸฮ˜๏พŸ)+ 
(๏พŸ๏ฝฐ๏พŸ)+ (๏พŸฮ˜๏พŸ)+ (๏พŸะ”๏พŸ)[๏พŸฮต๏พŸ]+(๏พŸฮ˜๏พŸ)+ ((๏พŸ๏ฝฐ๏พŸ) + (๏พŸฮ˜๏พŸ))+ (๏พŸ๏ฝฐ๏พŸ)+ (๏พŸะ”๏พŸ)[๏พŸฮต๏พŸ]+(๏พŸฮ˜๏พŸ)+ (๏พŸ๏ฝฐ๏พŸ)+ ((๏พŸ๏ฝฐ๏พŸ) + (๏พŸฮ˜๏พŸ))+ (๏พŸะ”๏พŸ)[๏พŸฮต๏พŸ]+(๏พŸ
ฮ˜๏พŸ)+ ((o^_^o) +(o^_^o))+ ((o^_^o) - (๏พŸฮ˜๏พŸ))+ (๏พŸะ”๏พŸ)[๏พŸฮต๏พŸ]+(๏พŸฮ˜๏พŸ)+ ((o^_^o) +(o^_^o))+ (๏พŸ๏ฝฐ๏พŸ)+ (๏พŸะ”๏พŸ)[๏พŸฮต๏พŸ]
+((๏พŸ๏ฝฐ๏พŸ) + (๏พŸฮ˜๏พŸ))+ (c^_^o)+ (๏พŸะ”๏พŸ)[๏พŸฮต๏พŸ]+(๏พŸ๏ฝฐ๏พŸ)+ ((๏พŸ๏ฝฐ๏พŸ) + (o^_^o))+ (๏พŸะ”๏พŸ)[๏พŸฮต๏พŸ]+(๏พŸฮ˜๏พŸ)+ (o^_^o)+ (c^_^o)+ (๏พŸ
ะ”๏พŸ)[๏พŸฮต๏พŸ]+(๏พŸฮ˜๏พŸ)+ ((o^_^o) - (๏พŸฮ˜๏พŸ))+ (o^_^o)+ (๏พŸะ”๏พŸ)[๏พŸฮต๏พŸ]+(๏พŸฮ˜๏พŸ)+ ((o^_^o) - (๏พŸฮ˜๏พŸ))+ (o^_^o)+ (๏พŸะ”๏พŸ)[๏พŸฮต๏พŸ]+
(๏พŸ๏ฝฐ๏พŸ)+ ((๏พŸ๏ฝฐ๏พŸ) + (o^_^o))+ (๏พŸะ”๏พŸ)[๏พŸฮต๏พŸ]+((๏พŸ๏ฝฐ๏พŸ) + (๏พŸฮ˜๏พŸ))+ (๏พŸฮ˜๏พŸ)+ (๏พŸะ”๏พŸ)[๏พŸo๏พŸ]) (๏พŸฮ˜๏พŸ)) ('_');

์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ผ๋ณธ์–ด๋ฅผ ์‚ฌ์šฉํ•œ ์ด๋ชจํ‹ฐ์ฝ˜๋“ค๋กœ ๋‚œ๋…ํ™”ํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค. ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰์€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, document.cookie์™€ ๊ฐ™์€ ๋‹จ์–ด๋ฅผ ๋ง‰์„ ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•œ๋‹ค.
1

https://eatchangmyeong.github.io/2022/04/22/interest-driven-mu-recursive-functions.html ์ด ๊ธ€์„ ์žฌ์ž‘์„ฑํ•˜๊ณ  ์‹ถ์€๋ฐ ์˜ˆ์‹œ๋กœ ๋ญ˜ ๋“ค์–ด์•ผ ๋ ์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค..... ฮผ๋ฅผ ๋ฐ˜๋“œ์‹œ ์จ์•ผ ๋˜๊ณ  ๊ตฌํ˜„ ๋‚œ์ด๋„๊ฐ€ ์ ๋‹นํ•œ ๊ฑฐ์˜€์œผ๋ฉด ์ข‹๊ฒ ๋Š”๋ฐ ์ƒ๊ฐ๋‚˜๋Š” ๊ฒŒ ๋„ˆ๋ฌด ์–ด๋ ค์šด ๊ฒƒ๋ฐ–์— ์—†๋‹ค

2

๊ตฌ๊ธ€์—์„œ ์ด๋ถ„ ๋งค์นญ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ฒ€์ƒ‰ํ•˜๋ฉด ์˜ˆ๋ฅผ ๋“ค์–ด์„œ https://blog.naver.com/ndb796/221240613074 ์ด๋Ÿฐ ๊ฒŒ ๊ฒ€์ƒ‰๋˜๊ณ  ์ฝ”๋“œ๋„ ๋‚˜์™€์„œ ์ฐธ๊ณ ํ•  ์ˆ˜๋Š” ์žˆ๋Š”๋ฐ... ์•„๋ฌด๋ฆฌ ์ฐพ์•„๋ด๋„ ์ •ํ™•์„ฑ ์ฆ๋ช…๋„ ์—†๊ณ  ์ด๊ฒŒ ์™œ O(VE)O(VE)์ธ์ง€ ์ฆ๋ช…๋„ ์—†์–ด์„œ ์ฐœ์ฐœํ•˜๊ณ  ๋‹ต๋‹ตํ•˜๋‹ค

0
3
2

ํ•˜์Šค์ผˆ์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ๋ฅผ ๋งŒ๋‚  ๊ฒฝ์šฐ์—

withFile: resource busy (file is locked)

readFile ๋Œ€์‹  readFile'์„ ์จ๋ณด์…”์š”!

  • readFile์€ lazy ๋ฒ„์ „์ด๊ณ 
  • readFile'์€ strict ๋ฒ„์ „์ž…๋‹ˆ๋‹ค!

System.IO ๋ชจ๋“ˆ ๋ฌธ์„œ์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„ค๋ช…์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฝ๊ณ : readFile ์—ฐ์‚ฐ์€ ํŒŒ์ผ์˜ ์ „์ฒด ๋‚ด์šฉ์„ ๋ชจ๋‘ ์†Œ๋น„ํ•  ๋•Œ๊นŒ์ง€ ๊ทธ ํŒŒ์ผ์— ๋Œ€ํ•ด ๋ถ€๋ถ„์ ์œผ๋กœ ๋‹ซํžŒ(semi-closed) ํ•ธ๋“ค์„ ์œ ์ง€ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ด์ „์— readFile๋กœ ์—ฐ ํŒŒ์ผ์— ๋Œ€ํ•ด(writeFile ๋“ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ) ์“ฐ๊ธฐ๋ฅผ ์‹œ๋„ํ•˜๋ฉด, ์ผ๋ฐ˜์ ์œผ๋กœ isAlreadyInUseError ์˜ค๋ฅ˜์™€ ํ•จ๊ป˜ ์‹คํŒจํ•˜๊ฒŒ ๋œ๋‹ค.

4
2

๋งˆํฌ๋‹ค์šด์€ ํ† ์”จ๋ž‘ ์ƒ์„ฑ์ด ์ง„์งœ ์•ˆ๋งž์•„์„œ ๋ถˆํŽธํ•˜๋‹ค... *์ด๊ฒƒ์„ ์ฐพ์œผ์…จ๋‚˜์š”?*์—๋ผ๊ณ  ์“ฐ๋ฉด "*์ด๊ฒƒ์„ ์ฐพ์œผ์…จ๋‚˜์š”?*์—"๊ฐ€ ๋˜๊ณ  <em> ํƒœ๊ทธ๋ฅผ ์จ์•ผ ์ œ๋Œ€๋กœ ์ ์šฉ์ด ๋œ๋‹ค

2
2
4
1

@eatch์ž‡์ฐฝ๋ช… EatChangmyeong๐Ÿ’•๐Ÿฑ ๋‹ค๋ฅธ ์„œ๋ฒ„์—์„œ ํ˜๋Ÿฌ ๋“ค์–ด์˜จ CW ๊ฑธ๋ฆฐ ๊ธ€์— ๋ธ”๋Ÿฌ ์ฒ˜๋ฆฌ๋Š” ํ•ด์ฃผ๋Š”๋ฐ, Hackers' Pub์—์„œ CW ๊ฑธ๋ฆฐ ๊ธ€์„ ์“ฐ์ง€๋Š” ๋ชปํ•ด์š”! (ํ•„์š” ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ด์„œ ์•ˆ ๋งŒ๋“ค์—ˆ๋Š”๋ฐโ€ฆ ํ•„์š”ํ• ๊นŒ์š”?)

@hongminheeๆดช ๆฐ‘ๆ†™ (Hong Minhee) ์‚ฌ์‹ค ๋ฌธ์ œ์˜ ๊ทธ ๊ธ€์„ ์—ฌ๊ธฐ ์“ฐ๊ณ  ๋ธ”์Šค๋กœ ์•Œํ”ผํ•˜๋ ค๋Š” ์ƒ๊ฐ์„ ํ–ˆ์—ˆ๋Š”๋ฐ CW ์„ค์ •์ด ์—†์–ด์„œ ๋ธ”์Šค์— ์“ฐ๊ณ  ์—ฌ๊ธฐ๋กœ ๊ณต์œ ํ–ˆ์–ด์š” ๐Ÿ˜… ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์š”

0
0
0
0