TIL: <form>์ .submit()์ ํ๋ฉด ์ด๋ฒคํธ๋ฅผ ๊ฑฐ์น์ง ์๊ณ ๊ฒ์ฆ๋ ์ํ๊ณ ๋
๋ค ์ ์ถ์ด ๋๋ค. ์ด๋ฒคํธ๋ฅผ ๊ฑฐ์น๊ฒ ๋ง๋ค๋ ค๋ฉด .requestSubmit()์ ํด์ผ ๋๋ค
์์ฐฝ๋ช EatChangmyeong๐๐ฑ
@eatch@hackers.pub ยท 22 following ยท 29 followers
*Encounter the Wider World*
๐
- eatch.dev
๐ฆ
- @eatch.dev
๐
- @EatChangmyeong@planet.moe
๐
- @EatChangmyeong
๐โ
- blog.eatch.dev
๐โ
- eatchangmyeong.github.io
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
์ ์ง์ธ ๋ถ์ด GitHub ์์ ์ธ์ข ์ฐจ๋ณ์ ์ฝ๋ฉํธ๋ฅผ ๋ฐ์ผ์ จ์ต๋๋ค. GitHub ๊ณ์ ์ด ์์ผ์๋ฉด ์ ๊ณ ๋ถํ๋๋ฆฝ๋๋ค. ์์ด๊ฐ ์ด๋ ค์ฐ์๋๋ผ๋ LLM์ผ๋ก ์ ๊ณ ๊ธ ์จ๋ฌ๋ผ๊ณ ํ๋ฉด ์ ์จ์ค๋๋ค. ์ ๊ณ ๋ ๋จ ์๊ฐ ๋ด์ ๋ง์ด ์ฐํ์ผ ์ค์ ๋ณด๊ณ ๋ก ์ฌ๋ผ๊ฐ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฅํ์ ๋ถ๋ค์ ๊ผญ ์ ๊ณ ๋ถํ๋๋ฆฝ๋๋ค.
์ฌ๋ฌ๋ถ!!! ๋ชจ๋ฐ์ผ์์ ํ ์คํธ ํธ์ง์ ํ ๋ ๋์ค๋ ์ 'ํ๋์ ๊ทธ๊ฑฐ'๋ฅผ ๋ญ๋ผ๊ณ ํ๋์???
ํ
์คํธ ์ ํ ํธ๋ค Text Select Handle ์ด๋ผ๋ ์ด๋ฆ์ผ๋ก ๋ฆฌ์์ค์ ๋ค์ด๊ฐ์๋ค์ฉ
android.googlesource.com/platform/fra...
android.googlesource.com/platform/frame...
์ฌ๋ฌ๋ถ!!! ๋ชจ๋ฐ์ผ์์ ํ ์คํธ ํธ์ง์ ํ ๋ ๋์ค๋ ์ 'ํ๋์ ๊ทธ๊ฑฐ'๋ฅผ ๋ญ๋ผ๊ณ ํ๋์???
ํด๊ฒฐํ์ด์!
ใText Selection Handleใ
๋ฃจ๋น(Ruby)์ ํํ์ด์ง๊ฐ ์ ๋จ์ฅํ๋ค๊ณ ํด์ ๋ค์ด๊ฐ๋ดค๋๋ฐ ๊ฝค ์์๋ฐ? https://www.ruby-lang.org/ko/
@gaeulbyul๊ฐ์๋ณ ์ค ์ฐ์ฐ์ฐฎ๊ฒ ์ค๋ ๋ค์ด๊ฐ ์ผ์ด ์์๋๋ฐ ์ผ์ฃผ์ผ๋ ์๋ ๋ฐ๋ํ ๋ฆฌ๋ด์ผ์ด์๊ตฐ์...
๋ฃจ๋น(Ruby)์ ํํ์ด์ง๊ฐ ์ ๋จ์ฅํ๋ค๊ณ ํด์ ๋ค์ด๊ฐ๋ดค๋๋ฐ ๊ฝค ์์๋ฐ? https://www.ruby-lang.org/ko/
ใ ใ ใ ใ ใ ใ ใ ใ
@eatch์์ฐฝ๋ช
EatChangmyeong๐๐ฑ ํ
์คํธ ์ปค์(text cursor) ๋ด์ง๋ ์บ๋ฟ(caret)์ด๋ผ๊ณ ๋ถ๋ฅด๋ ๊ฑธ๋ก ์๋๋ฐโฆ ์ด๊ฑธ ๊ถ๊ธํด ํ์ ๊ฒ ์๋๋ ค๋์?
@hongminheeๆดช ๆฐๆ (Hong Minhee) ์ ์ ๋ ๊น๋ฐ์ด๋ | ๋ง๊ณ ๊ทธ ๋ฐ์ ๋์ค๋ ๐ง ์ด๊ฒ ๊ถ๊ธํ๋ ๊ฑฐ๋ผ์์.......๐ฅบ
์ฌ๋ฌ๋ถ!!! ๋ชจ๋ฐ์ผ์์ ํ ์คํธ ํธ์ง์ ํ ๋ ๋์ค๋ ์ 'ํ๋์ ๊ทธ๊ฑฐ'๋ฅผ ๋ญ๋ผ๊ณ ํ๋์???
ํ์ด์ดํญ์ค ๋ฒ๊ทธ์ธ์ง๋ ๋ชจ๋ฅด๊ฒ ๋๋ฐ <noscript> ์์ ๊น์์ด ๋ค์ด๊ฐ์๋ <span>์ด ๋ฐ์ผ๋ก ๋น ์ ธ๋์จ๋ค
์๋๋ฉด ์ด ๊ธ์ ์ฌ์์ฑํ๊ณ ์๊ณ ์ธํฐ๋ํฐ๋ธ ๋ถ๋ถ์ด ๋ณต์กํด์ ํ์ ์์ ์ฑ์ ์ฌ๋งํ๋ฉด ์ฑ๊ธฐ๊ณ ์ถ์๋ฐ ํ์ ์คํฌ๋ฆฝํธ๋ ์๋๊ณ ReScript๋ ์๋๊ณ ๊ตณ์ด Idris๋ฅผ ๊ฐ์ ธ๋ค ์ฐ๋ ๊ฑด ์ค๋ฒํฌ๊ฐ๊ณ ...
๋ง์ ์ฐ์ฌ๊ณก์ ์ด ์์์ง๋ง ์ด์จ๋ ํด๋์ต๋๋ค. ๋ด์ผ ๋ฐฐํฌํด์ผ์ง
When code is more complex than it needs to be, its under-engineered, not over
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!
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.
Calling all #fediverse developers for help: I'm currently trying to implement a #reporting (#flag) feature for Hackers' Pub, an #ActivityPub-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?
๋ฆฌ๋์์ ๋งํฌ๋ค์ด ์ด๋ฒคํธ๋ฅผ ํ ๋๋ง๋ค **์ด markdown**์ธ ์ค ์๊ณ ๋นํฉํ๋ ์ฌ๋
์์??????
์ DM์ผ๋ก ๋ณด๋์ด์ผ ๋๋๋ฐ ๊ณต๊ฐ์ค์ ์๋ชปํ๋ค
๐โโก๏ธ
ํน์ ํด์ปค์คํ์๋ ์ ๊ณ ๊ธฐ๋ฅ์ด ์๋์....?? ํ๋๊ฐ๋ น์์๋ ๋ถ๋ช ์๋ค๊ณ ํ๋๋ฐ
๋ฌธ๋งฅ์ ์ผ๋ก ์์์ ์ด๋ค ํ์ ์ด์ด์ผ ํ๋์ง ์ถ๋ก ํด์ฃผ๋ ์ ์ ๋ถ์๊ธฐ๊ฐ ๋ฌ๋ฆฐ ์ธ์ด๋ ์๋
์ธ์ ๊น์ง (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 ๋ ๋ฌด์ธ๊ฐ์ ๋ํ ์ ์๋ ํ์
์ด๊ตฌ๋' ํ๊ณ ์ถ๋ก ํ ์ ์๋ ๋ถ์๊ธฐ๊ฐ ๋ฌ๋ฆฐ ์ธ์ด๊ฐ ํ์ํจ
๊ฐ์๊ธฐ ์์ด ์์ ๋ธ๋ก๊ทธ ๋ฆฌํฉํ ๋ง์ ํ์ฐธ ํ๊ณ ์ด์ ๊ฐ์ฃผ์๋ ์์์ ์ธ ์ ์๋ค!!
์ด๋ป๊ฒ ๊ตฌํํ๊ธธ๋ ์์์ ๋ชป ์ผ๋๊ณ ์??
- (before)
.mdxํ์ผ์ ๋ณ๋ ์ต์คํฌํธ๋ก ๊ฐ์ฃผ ๋ด์ฉ์ ์ผ์๋๋ฐ ์ ์ง๋ชจ๋ฅด๊ฒ JSX ๋ฌธ๋ฒ์ ๋์ง๋ง ๋งํฌ๋ค์ด ๋ฌธ๋ฒ์ ์ ๋๋ ์ํฉ์ ๋ด์ฐฉ... Astro๊ฐ ๋ณ๋ ์ต์คํฌํธ๋ฅผ ๋ชป ๋ด์import.global.meta๋ก ๋ถ๋ฌ์ค๊ณ ์๋๋ ๋ณผ ์ผ ์๋AstroVNodeํ์ ์ ์จ๊ฐ๋ฉด์ ์จ๋ชธ๋นํ๊ธฐ๋ก ๊ตฌํ - (after) ๋ชจ๋ ๊ฐ์ฃผ๊ฐ ๋ณ๋ ํ์ผ(๐คฃ).
import.global.meta๋ ์์ง ์์ง๋ง ๊ณ ์น๊ธฐ ์ ๋ณด๋ค ํจ์ฌ ๊น๋ํด์ง ๋๋
๊ฐ์๊ธฐ ์์ด ์์ ๋ธ๋ก๊ทธ ๋ฆฌํฉํ ๋ง์ ํ์ฐธ ํ๊ณ ์ด์ ๊ฐ์ฃผ์๋ ์์์ ์ธ ์ ์๋ค!!
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!
๊ฒ์ฐํ๋๊ฐ ์์ง๋ ์๋น์ค ์ค์ด๋ผ๊ณ ํด์ ์น์ฌ์ดํธ๋ฅผ ๋ค์ด๊ฐ๋ดค๋๋ฐ ํ๋น์ฝ์ ๋ณด๊ณ ๊น์ง๋๋๋ค
์์ฐฝ๋ช
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 โ๐โโก๏ธ
software gore
12ๆ 6ๆฅ ์์ธ์์ ้ๅฌ๋๋ liftIO 2025์์ ใOptique: TypeScript์์ CLI ํ์ ์ปด๋น๋ค์ดํฐ๋ฅผ ๋ง๋ค์ด ๋ณด์๋คใ(ๅ้ก)๋ผ๋ ไธป้ก๋ก ็ผ่กจ๋ฅผ ํ๊ฒ ๋์์ต๋๋ค. ์์ง liftIO 2025 ํฐ์ผ์ ํ๊ณ ์์ผ๋, ๅฝๆธๅ ํ๋ก๊ทธ๋๋ฐ์ ้ๅฟ ์์ผ์ ๋ถ๋ค์ ๋ง์ ๅ่ ๋ฐ๋๋๋ค!
์ค๋ liftIO 2025์์ ็ผ่กจํ ใOptique: TypeScript์ ํ์ ๆจ่ซ์ผ๋ก CLI ๆๆๆง ๆชขๆป๋ฅผ ไปฃๆฟํ๊ธฐใ์ ็ผ่กจ ่ณๆ๋ฅผ ๅ ฑๆํฉ๋๋ค! ๋ค์ด์ฃผ์ ๋ชจ๋ ๋ถ๋ค๊ป ๆ่ฌ ๋๋ฆฝ๋๋ค.
์ฌ์ค์ eatch.dev๋ next.js์ธ๋ฐ SSG๋ก ์ฌ๋ ค์ ๊ทธ๋ฐ์ง React2Shell ๋ซ๋ฆฌ๋์ง ๋ณด๋๊น ์๋๋๋ผ (๊ทธ๋๋ ์ ๋ฐ์ดํธ๋ ํ์ต๋๋ค.)
์ง๊ธ โ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
C++ rant๋ง์ผ๋ก 2์๊ฐ ๋ถ๋์ ์ฑ์ธ ์ ์๋ค๋ ๊ฒ ๋๋๋ค (CW: AI ์ฝํ) https://youtu.be/7fGB-hjc2Gc
ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ pd6156.tistory.com/63
https://eatchangmyeong.github.io/2022/04/22/interest-driven-mu-recursive-functions.html ์ด ๊ธ์ ์ฌ์์ฑํ๊ณ ์ถ์๋ฐ ์์๋ก ๋ญ ๋ค์ด์ผ ๋ ์ง ๋ชจ๋ฅด๊ฒ ๋ค..... ฮผ๋ฅผ ๋ฐ๋์ ์จ์ผ ๋๊ณ ๊ตฌํ ๋์ด๋๊ฐ ์ ๋นํ ๊ฑฐ์์ผ๋ฉด ์ข๊ฒ ๋๋ฐ ์๊ฐ๋๋ ๊ฒ ๋๋ฌด ์ด๋ ค์ด ๊ฒ๋ฐ์ ์๋ค
๊ตฌ๊ธ์์ ์ด๋ถ ๋งค์นญ ์๊ณ ๋ฆฌ์ฆ์ ๊ฒ์ํ๋ฉด ์๋ฅผ ๋ค์ด์ https://blog.naver.com/ndb796/221240613074 ์ด๋ฐ ๊ฒ ๊ฒ์๋๊ณ ์ฝ๋๋ ๋์์ ์ฐธ๊ณ ํ ์๋ ์๋๋ฐ... ์๋ฌด๋ฆฌ ์ฐพ์๋ด๋ ์ ํ์ฑ ์ฆ๋ช
๋ ์๊ณ ์ด๊ฒ ์
LaTeX์ ๋ผํ ์ผ๋ก ์ฐ๋ ์ฌ๋
out of context svelte
out of context svelte
ํ์ค์ผ์์ ๋ค์๊ณผ ๊ฐ์ ์๋ฌ๋ฅผ ๋ง๋ ๊ฒฝ์ฐ์
withFile: resource busy (file is locked)
readFile ๋์ readFile'์ ์จ๋ณด์
์!
readFile์ lazy ๋ฒ์ ์ด๊ณreadFile'์ strict ๋ฒ์ ์ ๋๋ค!
System.IO ๋ชจ๋ ๋ฌธ์์ ๋ค์๊ณผ ๊ฐ์ ์ค๋ช
์ด ์์ต๋๋ค.
๊ฒฝ๊ณ :
readFile์ฐ์ฐ์ ํ์ผ์ ์ ์ฒด ๋ด์ฉ์ ๋ชจ๋ ์๋นํ ๋๊น์ง ๊ทธ ํ์ผ์ ๋ํด ๋ถ๋ถ์ ์ผ๋ก ๋ซํ(semi-closed) ํธ๋ค์ ์ ์งํ๋ค. ๋ฐ๋ผ์ ์ด์ ์readFile๋ก ์ฐ ํ์ผ์ ๋ํด(writeFile๋ฑ์ ์ฌ์ฉํ์ฌ) ์ฐ๊ธฐ๋ฅผ ์๋ํ๋ฉด, ์ผ๋ฐ์ ์ผ๋กisAlreadyInUseError์ค๋ฅ์ ํจ๊ป ์คํจํ๊ฒ ๋๋ค.
๐โโก๏ธ
๋งํฌ๋ค์ด์ ํ ์จ๋ ์์ฑ์ด ์ง์ง ์๋ง์์ ๋ถํธํ๋ค... *์ด๊ฒ์ ์ฐพ์ผ์
จ๋์?*์๋ผ๊ณ ์ฐ๋ฉด "*์ด๊ฒ์ ์ฐพ์ผ์
จ๋์?*์"๊ฐ ๋๊ณ <em> ํ๊ทธ๋ฅผ ์จ์ผ ์ ๋๋ก ์ ์ฉ์ด ๋๋ค
๋ฌ์คํธ ๋ฌธ์๊ฐ ์์ ํ๋ ์ด๊ฒ์ ์ฐพ์ผ์ จ๋์?์ ํฐ ํธ๊ฐ์ ๋๋ผ๊ณ ์๋ค
์ค๋ ๋ฐฑ์ค์์ 2๋ฌธ์ ๋ฅผ ํ์๋๋ฐ ๋๋ค ๋กฑ๋กฑ์ฃฝ๊ฒ ์ง๋ฅผ ๋นํ๋ค (long long์ ์จ์ผ ๋๋๋ฐ int๋ฅผ ์ผ๋ค๋ ๋ป)
๊ธ๊ฐ์์์๋ ํ ์ค ์ต์ ๊ฑด์ ๋ํด ๊ฒฝ๊ณ ๋ฅผ ํจ
@eatch์์ฐฝ๋ช
EatChangmyeong๐๐ฑ ๋ค๋ฅธ ์๋ฒ์์ ํ๋ฌ ๋ค์ด์จ CW ๊ฑธ๋ฆฐ ๊ธ์ ๋ธ๋ฌ ์ฒ๋ฆฌ๋ ํด์ฃผ๋๋ฐ, Hackers' Pub์์ CW ๊ฑธ๋ฆฐ ๊ธ์ ์ฐ์ง๋ ๋ชปํด์! (ํ์ ์๋ค๊ณ ์๊ฐํด์ ์ ๋ง๋ค์๋๋ฐโฆ ํ์ํ ๊น์?)
@hongminheeๆดช ๆฐๆ (Hong Minhee) ์ฌ์ค ๋ฌธ์ ์ ๊ทธ ๊ธ์ ์ฌ๊ธฐ ์ฐ๊ณ ๋ธ์ค๋ก ์ํผํ๋ ค๋ ์๊ฐ์ ํ์๋๋ฐ CW ์ค์ ์ด ์์ด์ ๋ธ์ค์ ์ฐ๊ณ ์ฌ๊ธฐ๋ก ๊ณต์ ํ์ด์ ๐
์์ผ๋ฉด ์ข์ ๊ฒ ๊ฐ์์
RP) ์ค ์ฌ๊ธฐ๋ ๋ธ๋ผ์ธ๋ ๊ตฌํ์ด ์๋๋ณด๋ค ์ฌ๊ธฐ์ ์จ์ ์ฌ๋ฆด ๋๋ ๋ธ๋ผ์ธ๋ ์ค์ ์ด ๊ฐ๋ฅํ๊ฐ์?
์ค ์์๋ณด๋ค ๋นจ๋ฆฌ ๋์๋ค
๊ทธ์์ค์ 99_999_999๋ฒ๋ถํฐ 100_000_002๋ฒ๊น์ง 1์ต๋ฒ์ ๋ ธ๋ฆฐ ๋ฏํ ์๋ฅ์ ์ถ์ด๋ผ๋ ๊ฒ ์๊ธฐ๋ค
























