염산하

@[email protected] · 23 following · 15 followers

A software engineer in Seoul, and a father of a kid.

복설 뉴스's avatar
복설 뉴스

@[email protected]

'SPC 끼임 사망' 노동자, 이전에도 부상..."산재 계속" (영상) www.ytn.co.kr/_ln/0103_202... "산업재해로 인정된 경우만 따지더라도 한 달에 12건에서 14건꼴로 사고가 난 겁니다. [A 씨 / SPC삼립 시화공장 전 직원 : 다리가 찢어지거나 다친 분들도 많고, 머리 깨지신 분들도 많고, 항상 사건·사고는 늘 많았죠.] [B 씨 / SPC삼립 시화공장 전 직원 : 손가락 절단 같은 건 자주 일어났어요. 적재하는 그런 데에 발이 끼는 사고도 일어나고….]"

[단독] 'SPC 끼임 사망' 노동자, 이전에도 부상....

한겨레's avatar
한겨레

@[email protected]

노벨 문학상 수상자인 한강의 소설 ‘채식주의자’ 등을 유해매체물로 지정하고 교육청과 학교에 폐기를 압박해온 단체들도 리박스쿨과 함께 활동해온 것으로 나타났습니다.

[단독] “채식주의자 폐기하라” 교육청 압박한 단체들도...

Jaeyeol Lee's avatar
Jaeyeol Lee

@[email protected]

"오늘의 해커뉴스 요약"이라고 한국어로 매일마다 해커뉴스를 한국어로 요약해서 보내주는 헤임달 프로젝트가 있었습니다. 언제부턴가 다시 다른 이름으로 부활했는데요...... 바로 요겁니다. https://every.news 좀 더 범용적인? 느낌으로 다시 부활한 것 같아요.

Thanks to @anaclumos

매일마다 해커뉴스를 요약해서 보내주는 뉴스레터는 요깄습니다 https://every.news/alerts/8XYPTZZVV7ZJ

염산하

@[email protected]

어떻게 하면 커서를 버리고 클로드 코드 200달러짜리로 갈아탈 수 있는지 아직 감이 안잡힌다. 너무 소심한건가

염산하

@[email protected] · Reply to 염산하's post

"함께 발화하는 신경세포는 하나로 연결된다. 더 정확히 말해보겠다. 이 사고방식에 따르면 우리 뇌가 학습하는 이유는 한 신경세포의 출력이 다른 신경세포의 발화와 일관되게 연관될 때는 신경세 포 사이의 연결이 강해지고 그렇지 않을 때는 약해지기 때문이다. 이 과정을 헤브 학습 Hebbian learning이라고 부른다.

염산하

@[email protected] · Reply to 염산하's post

"기계처럼 들리는 낱말을 쓴 것은 로젠블랫이 지독히 후회하는 일 중 하나"였다. 로젠블랫이 염두에 둔 '퍼셉트론'의 진짜 의미는 지각과 인지를 위한 신경계 모형의 한 부류였다.

염산하

@[email protected] · Reply to 염산하's post

로젠블랫의 퍼셉트론이 장안의 화제가 된 것은 놀랄 일이 아니다. 데이터에서 가중치를 학습할 수 있었으니 말이다. 어떤 면에서 가중치는 데이 터에 들어 있는 패턴에 대한 (아무리 사소할지언정) 지식을 부호화하여 기억

염산하

@[email protected]

매컬러-피츠McCulloch-Pitts, MCP 모형을 단순화한 이 형태에서 x1과 x2는 0이거나 1이다. 형식 표기법으로 나타내면 아래와 같다.

누가 MCP 를 선점했었네 ㅋㅋ 기계는 왜 학습하는가

洪 民憙 (Hong Minhee) :nonbinary:'s avatar
洪 民憙 (Hong Minhee) :nonbinary:

@[email protected]

As the maintainer of , I'd be grateful for your support to help keep the project sustainable! :fedify:

https://hollo.social/@fedify/0194b112-b604-7d03-84e0-4faaf4ab46cd

Fedify: ActivityPub server framework's avatar
Fedify: ActivityPub server framework

@[email protected]

🎉 Excited to announce that is now on Open Collective! Support the project's development starting at:

  • Backer (from $5/mo)
  • Supporter (from $25/mo)
  • Sponsor (from $100/mo)
  • Corporate Sponsor (from $500/mo)
  • Custom donations welcome

Your support will help us maintain and improve Fedify. Check it out here:

https://opencollective.com/fedify

:fedify:

Fedify's Open Collective page showing the project logo, description as “A TypeScript library for building federated server apps powered by ActivityPub and other standards”, and five contribution tiers starting from $5/month Backer to $500/month Corporate Sponsor, with custom contribution options available.
ALT text detailsFedify's Open Collective page showing the project logo, description as “A TypeScript library for building federated server apps powered by ActivityPub and other standards”, and five contribution tiers starting from $5/month Backer to $500/month Corporate Sponsor, with custom contribution options available.
복설 뉴스's avatar
복설 뉴스

@[email protected]

"좌파는 사람까지 죽인다"던 역사기관 이사장, 尹 계엄 불법·위헌성 묻자 "답 않겠다" www.hankookilbo.com/News/Read/A2... "김 이사장은 리박스쿨 사태의 핵심 인물로 꼽힌다. 2020~2021년 리박스쿨 교육 프로그램의 강연자로 나섰고, 리박스쿨이 주도한 '청소년 근현대사 교과서 편찬추진위원회'에도 참여했다. 리박스쿨의 '정치학교장'을 맡았다는 의혹도 제기됐다."

[단독] "좌파는 사람까지 죽인다"던 역사기관 이사장,...

김성일 Sung-il Kim's avatar
김성일 Sung-il Kim

@[email protected]

중요한 얘기다. 19세기까지는 이슬람 세계조차 성소수자에게 유럽보다 훨씬 관대했다. "원래부터 항상" 그런 건 정말 드물다.

RE: https://bsky.app/profile/did:plc:hneloew3za25iqabarp6m2ay/post/3lssxlpxxis2a

복설 뉴스's avatar
복설 뉴스

@[email protected]

차별금지법은 ‘종교의 자유’ 침해하지 않습니다 www.ildaro.com/10215 "비엘펠트 교수는 “종교의 자유, 신념의 자유가 인권이라면서 특정 집단의 인권을 유린하기 위해 (그러한 개념을) 사용해선 안 된다”고 재차 강조했다. 그런 일이 생기면 “인권이 파편화될 수밖에 없고, 결국 이는 인권을 보호하는 일 자체에 크나큰 위협이 될 수밖에 없다”고 경고했다."

≪일다≫ 차별금지법은 ‘종교의 자유’ 침해하지 않습니다

Jaeyeol Lee's avatar
Jaeyeol Lee

@[email protected]

마틴파울러 블로그에서도 Agentic Coding에 대한 글이 꾸준히 연재되고 있는듯. 정제도 되어있고 한번에 모여있어서 좋다. https://martinfowler.com/articles/exploring-gen-ai.html

염산하

@[email protected] · Reply to Pavian's post

@always.lynnpapa_pavy 퍼플렉시티 정도는 포함시켜보면 더 좋을 것 같은데 말이에요. 저는 거의 퍼플렉시티만 쓴지 오래 되어서요.

Jaeyeol Lee's avatar
Jaeyeol Lee

@[email protected]

카네기멜런 조교수가 권장하는 "모든 개발자들이 해보면 좋은 프로젝트"

https://austinhenley.com/blog/challengingprojects.html?&aid=rec3mWbHrTxWMN36P&_bhlid=818f4f9928e77979b19e926866a9fe3e537f5ee2

텍스트 에디터

  • 구현에 사용되는 자료구조 (gap buffer, piece table 등)
  • undo, redo 를 사용하는 메멘토 패턴

2d game

  • 상태머신 관리
  • 컴퓨터 주변기기를 제어하는 방법

컴파일러

  • lexical parsing
  • syntatic parsing
  • code generation

작은 운영체제

  • 스케쥴링
  • 부트로딩
  • 메모리관리 및 페이징
  • 파일시스템

스프레드시트

  • directed graph (주로 topological sort)
  • reactive programming paradigm

비디오게임 콘솔 에뮬레이터

  • 컴파일러, 운영체제, 게임엔진 등등의 챌린지를 한번에 짬뽕

그 외에도 데이터베이스 직접 만들기, 그림판 직접 만들기, 터미널 유틸리티 직접 만들기

염산하

@[email protected]

https://www.sisain.co.kr/news/articleView.html?idxno=55977

시사인 대선직후 설문 조사를 통한 분석. 이준석과 김문수 지지의 차이, 2030에 대한 분석.

김창환 미국 캔자스 대학 교수(사회학)는 이번 <시사IN>·한국리서치 설문문항으로 '극우'를 새로 정의했다. ①자유민주주의 위기 해결·상대 진영 법안 저지·페미니즘 저지·불평등 완화를 위해 폭력이나 무력을 사용할 수 있다는 데 하나라도 동의했거나, '강력한 정치 지도자는 업무를 완수하기 위해 때때로 규칙을 어겨야 할 때도 있다'는 데 동의하고, ②정부보다는 개인이 자신의 생계(복지)에 더 많은 책임을 져야 한다고 응답하며, ③ 이민자 유입이나 난민 수용 확대 중 하나라도 반대하고, ④ 대북 제재를 중심으로 한 압박 정책을 우선하며, ⑤중국의 보복으로 한국이 경제적 타격을 입더라도 한미 동맹을 강화해야 한다고 응답한 사람이다. 이 다섯 가지 항목에 모두 해당하면 '극우'라고 정의해 비율을 추출한 결과, 전체 평균으로 보면 6.3%가 극우인 데 비해, 20대 남성의 15.7%, 30대 남성의 16%가 극우로 추정되었다.

청년층 가운데 극우로 추정되는 집단의 월평균가구소득, 교육 수준, 주관적 계층 인식을 살펴보고 흥미로운 결과를 발견했다. '극우'청년층이 '비극우' 청년층에 비해 사회경제적 계층(인식)이 상대적으로 더 높게 나타난 것이다. 청년층에서 월평균 가구소득이 500만원 이상이면서 스스로를 중간층 이상으로 인식하는 비율이 비극우 추정 집단에서는 25.1%였으나 극우추정 집단 내에서는 57%였다. 이 같은 결과를 두고 김창환 교수는 "현재 한국의 청년층 극우화는 불평등이 심해져서 그에 대한 불만으로 하위 계층이 극우화된게 아니라, 청년층 내에서 상대적으로 기득권층에 해당하는 남성들이 자신의 기득권을 빼앗긴 것에 저항하는 극우화일 가능성이 있다"라고 주장했다(14~16쪽 인터뷰 기사 참조).

염산하

@[email protected]

엇 오늘부터 지하철 운임 올랐네. 1400원이었는데 갑자기 1550원 찍혀서 깜짝

Lee Dogeon's avatar
Lee Dogeon

@[email protected]

원글은 https://moreal.hashnode.dev/vitepress-localsearch-debugging 에 있습니다. 내용은 같지만 이미지 호스팅용으로 Hashnode를 사용한 꼴이 되었으므로 예의상(?) 남깁니다 🙏


어제는 Zenn이라는 일본 기술 블로그 서비스의 트렌드 글을 알려주는 봇을 계획하고 구현하려고 보고 있었습니다. ActivityPub 프로토콜을 대상으로 하는 봇이었기 때문에 BotKit을 살펴보았고 BotKit에서 제공하는 메소드가 무엇을 하는지 알기 위해 Fedify문서까지 찾아보게 되었습니다. 그러다 Fedify 문서에서 검색하는 데 검색 기능이 깨진 것이 보여서 이슈로 남겼고, VitePress에도 이슈로 남겨달라는 부탁(?)을 받아 이슈의 내용을 적기 위해 조사를 하다가 PR을 올리기 까지, 야크 쉐이빙을 했다는 것이 이 글의 내용입니다 🤣

버그 재현하기 (원인 변수 확인하기)

VitePress 저장소에 이슈를 적을 때 본문에 어떻게 재현하는지와 재현되는 상황 특정, 왜 발생하는지 적어야 하므로 여러가지 시도를 하면서 해당 문제가 발생하는 시도를 해봤습니다.

처음에는 Fedify 이슈에 올렸던 것처럼 코드 블록이 있는 지점부터 검색 결과에 나오지 않았으므로 코드 블록이 포함되어 있으면 검색 결과에 포함되지 않는 것 같다는 추정을 하였습니다.

Fedify 문서는 사용하는 플러그인이 많아 피드백을 얻는데 시간이 걸렸습니다. 임시 디렉터리(/tmp)에 프로젝트를 초기화 하고 Fedify에서 사용하는 [email protected] 패키지를 설치하였습니다. 그리고 yarn vitepress init 명령어를 실행하여 기본 템플릿으로 문서들을 생성하고 .vitepress/config.mts 에서 search.provider 값을 "local"로 설정하였습니다. 그리고 Fedify 문서에 있는 헤딩을 가져와 추가했지만 검색이 잘 되었습니다.

추가적으로 환경을 가져와 보기로 했습니다. 마크다운 관련 설정을 가져가면서 @shikijs/vitepress-twoslash 부터 적용해봤는데 버그가 발생하지 않았습니다. 이어 마크다운 문법 관련 플러그인들도 추가했습니다. 그랬더니 버그가 재현되었습니다. 그 다음에는 마크다운 플러그인을 하나하나 빼면서 어떤 플러그인이 영향을 주는지 확인했고 markdown-it-jsr-ref 플러그인을 사용할 때 버그가 재현됨을 확인했습니다.

markdown-it-jsr-ref 플러그인은 `Type` 같이 특정 타입이나 함수를 지칭하는 마크다운을 작성했을 때 JSR에 있는 문서로 연결해주는 플러그인 입니다. HTML 출력이 어떻게 변하는 지 생각해보면 <code> 태그로만 감싸져 있던 부분을 <a> 로 추가로 감싸게 되는 것인데 이에 맞춰 ## With <a>a tag</a> heading## With <code>code tag</code> heading 간단한 두 테스트 케이스를 만들었고 전자만 “With “ 까지만 검색 결과에 나오는 것을 확인했습니다.

버그가 재현되는 테스트 케이스를 정의하고 나니 VitePress의 버그임이 명확하다고 느껴졌습니다. CommonMark 스펙에 헤딩에 <a> 태그가 들어가면 안 된다 같은 부분은 찾지 못 했기 때문입니다.

버그 수정하기

VitePress의 코드 베이스를 이해하고 있는 상황이 아니므로 어떤 코드가 영향을 주는지부터 찾아야 했습니다. search.provider 설정의 값으로 ”local” 을 사용하고 있으므로 local이라는 키워드로 검색해봤습니다. 그랬을 때 localSearchPlugin.ts 이라는 파일이 눈에 들어왔습니다. 내용을 봤을 때 MiniSearch 라는 검색 라이브러리를 활용하고 있는 것을 보니 찾던 것이 맞아 보였습니다.

우선 clearHtmlTags 함수가 검색 결과로 보여줄 텍스트를 위해 HTML 태그들을 모두 지워주는 것 같아 여기에 breakpoint를 걸고 디버거를 타고 가면서 상위 splitPageIntoSections 함수를 이해했습니다.

headingContentRegex 라는 정규식을 활용하는 라인에서 두 테스트케이스의 처리 결과가 달랐습니다. headingContentRegex 정규식을 이해해보면 헤딩을 입력으로 받고 두 부분을 캡쳐하려고 하는데, 첫번째는 <a> 태그 앞의 내용이고 변수 명으로는 title, 검색 결과로 보이는 부분입니다. 두 번째는 <a> 태그의 속성 중 href 의 내용을 캡쳐하는데 그 값이 # 으로 시작해야 했습니다.

const headingContentRegex = /(.*?)<a.*? href="#(.*?)".*?>.*?<\/a>/i

# 으로 시작하는 것을 가져오는 것은 앵커를 추출하려는 것이고 VitePress는 헤딩의 끝에 임의로 앵커를 넣어주고 있었습니다. Fedify 문서 중 헤딩의 HTML 값을 인용하면 아래와 같습니다.

Implement the <a href="https://jsr.io/@fedify/[email protected]/doc/federation/~/KvStore"><code>KvStore</code></a> interface <a class="header-anchor" href="#implement-the-kvstore-interface" aria-label="Permalink to &quot;Implement the `KvStore` interface&quot;"></a>

위 정규식에 테스트 케이스를 대입하면 아래와 같이 결과를 반환합니다. 반환된 배열의 두 번째 값을 보면 With 까지만 반환 되었고 세 번째 값을 보면 앵커는 제대로 가져온 것을 확인할 수 있었습니다.

>>> /(.*?)<a.*? href="#(.*?)".*?>.*?<\/a>/i.exec('With <a href="https://example.com">a tag</a> heading <a href="#anchor"></a>')
Array(3) [ 'With <a href="https://example.com/">a tag</a> heading <a href="#anchor"></a>', "With ", "anchor" ]

상황을 정리하면 헤딩의 끝에 붙는 <a> 태그의 href 값과 그 <a> 태그의 앞부분을 가져오는 것이 본래 의도이나 제대로 동작하지 않는 것으로 이해할 수 있었습니다.

문제는 첫 번째 캡쳐 그룹인 (.*?)? 기호가 문제였습니다. MDN의 정규표현식 문서에 따르면 ? 기호는 *, +, ? 와 같은 기호 뒤에 사용되었을 때 해당 기호를 non-greedy 하게 만든다고 합니다.

If used immediately after any of the quantifiers *, +, ?, or {}, makes the quantifier non-greedy (matching the minimum number of times), as opposed to the default, which is greedy (matching the maximum number of times).

정규 표현식을 완전히 이해하고 있지 않았던지라 확실한 판단은 아니지만, 위 인용문과 함께 이해했을 때 non-greedy 하기 때문에 첫 번째 캡쳐 그룹이 가져갈 수 있는 최대치인 ”With <a href=”https://example.com”>a tag</a> heading “ 을 가져가지 않고 최소치인 ”With “ 만을 가져가서 이 문제가 발생했다고 이해했습니다. 나머지 부분은 뒷부분은 <a.*? 부분이 가져가게 됩니다. 소괄호로 감싸 캡쳐 그룹으로 만들어주어 테스트 해보면 아래처럼 나오니 맞는 것 같습니다.

>>> /(.*?)<a(.*?) href="#(.*?)".*?>.*?<\/a>/i.exec('With <a href="https://example.com">a tag</a> heading <a href="#anchor"></a>')
Array(4) [ 'With <a href="https://example.com">a tag</a> heading <a href="#anchor"></a>', "With ", ' href="https://example.com">a tag</a> heading <a', "anchor" ]

그래서 첫번째 캡쳐 그룹을 다시 greedy하게 만들어 줄 필요가 있었고 단순히 ? 기호를 하나를 지웠고 테스트 해보니 잘 동작하는 것으로 보였습니다. 와, 버그 수정 완료!

>>> /(.*)<a.*? href="#(.*?)".*?>.*?<\/a>/i.exec('With <a href="https://example.com">a tag</a> heading <a href="#anchor"></a>')
Array(3) [ 'With <a href="https://example.com">a tag</a> heading <a href="#anchor"></a>', 'With <a href="https://example.com">a tag</a> heading ', "anchor" ]

PR 만들기

PR을 올릴 시간입니다. PR을 열 때 메인테이너에게 무슨 버그인지 충분히 설명할 필요가 있습니다. 이를 위해 별도의 두 저장소를 만들어 GitHub Pages에 배포하는 방식으로 문서를 두 개 만들었습니다. 하나는 기존 1.6.3 버전에서 버그를 확인할 수 있도록 하였고, 나머지 하나는 ? 기호를 없애는 변경을 더해 이 PR의 변경사항으로 버그를 고칠 수 있음을 확인할 수 있도록 하였습니다.

스크린샷을 첨부하였으나 전체를 찍기 애매해서 전문은 이슈에서 확인 부탁드립니다 🙏

한 1시간 정도 준비해서 올렸는데 머지는 순식간에 되어서 빠른 확인에 감사하면서도 그냥 뭔가 머쓱했습니다 😅

회고

잘 된 점

  • 야크 쉐이빙이긴 하지만 즐거웠습니다.
  • 근래에 나온 Zed Debugger를 사용하여 디버깅 했는데 좋은 경험이었습니다.

잘 안 된 점 (아쉬운 점)

  • 이와 관련된 버그를 해결 중인 이슈나 PR이 이미 존재하는 지 알기 어려웠습니다.
  • PR 설명을 준비하는데 꽤나 많은 시간을 소모했습니다.
    • 재현 환경을 구성하는데 꽤나 많은 시간을 소모했습니다.
  • 이 회고글을 작성하는데도 2시간 정도가 걸렸습니다.
  • 정규표현식을 온전히 이해하지 못 하여 <a> 태그에서 정확히 파악하지 정확한 판단하지 못 했습니다.

개선할 점

  • 글로 적어보니 꽤나 절차적인데 Agent로 이 과정을 자동화 할 수 있을까?
  • 재현 환경의 구성과 배포, 수정된 환경의 배포를 쉽게 할 수 있을까?
  • 이미 누가 작업하고 있는 작업인지 여부를 쉽게 확인할 수 있을까?
  • 정규표현식을 온전히 이해하면 좋을 것 같습니다.
한겨레's avatar
한겨레

@[email protected]

윤석열 전 대통령 대선 출마 당시부터 3년 넘게 이어진 김건희 여사의 석·박사 학위 논란이 일단락됐습니다. 문제 제기에 나섰던 학교 구성원들은 ‘뒤늦은 결정’에 대한 사과가 필요하다는 입장을 전했습니다.

김건희 석사 논문 취소-박사 입학 취소…3년여 만에 학...

염산하

@[email protected]

천개의 파랑. 너무 오랜만에 소설을 읽은 느낌이다. 너무 좋았다.

염산하

@[email protected] · Reply to 염산하's post

@ysh 아주 예전 글이라 “컴퓨터의 등장으로 앞으로는 사람이...” 라는 이야기가 종종 나온다. 근데 그게 의외로 요즘의 AI와 묘하게 연결되어서 요즘은 맥락으로 생각하게 되는 측면이 재미있게 느껴졌다.

염산하

@[email protected]

생각의 도약 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=356276093

염산하

@[email protected]

생각의 도약 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=356276093

Jaeyeol Lee's avatar
Jaeyeol Lee

@[email protected] · Reply to Jaeyeol Lee's post

그리고, 얘가 일처리하는거보면 내가 일 잘하는 사람으로서 인식되려면 일은 하고 있다라는걸 어떻게 전시할지 많이 배우게 됨....

Jaeyeol Lee's avatar
Jaeyeol Lee

@[email protected]

내가 그닥 좋아하는 사람은 아니지만 Ruby On Rails의 메인테이너이자 37signal의 대표는 DHH는 이런 얘기 를 했었다.

요약하자면,

  1. LLM한테 일을 지시하는 방식으로는 배워갈 수 있는게 없다
  2. 다만, LLM이 문서를 요약해서 알려주거나 자료를 찾아보는 식으로 역할을 위임하고, 내가 직접 프로그래밍 하는 방법이라면 배워갈 수 있는 여지가 있다.

인용한 글에서도 비슷한 내용이 언급이 되어 있는데, 결국에는 사람이 수제로 작업하는것이 개인의 성장에 도움이 되고 대 LLM의 시대에 리터러시를 키울 수 있게 된다는 것

LLM의 편의성은 자명하지만, 적당히 비용효율적으로 트레이드오프 맞춰서 업무를 하더라도 내가 키우고 싶은 코어스킬을 키우는데 있어서는 정신을 곤두세울 필요가 있지 않나 싶은 생각이 들었다.

Jaeyeol Lee's avatar
Jaeyeol Lee

@[email protected] · Reply to Jaeyeol Lee's post

tmux와는 다르다! tmux와는...!!

염산하

@[email protected] · Reply to Hollo :hollo:'s post

@hollo 아 로그인만 다시 하면 되는 정도라면야 ^^ 시크릿이라서 뭔가 데이터를 못쓰게 되는게 있을까봐 걱정했어요

염산하

@[email protected]

elevenlabs reader 앱에서 기본 남자 목소리 쓰고 있는데 요즘 쇼츠 영상에서도 같은 목소리가 자주 들리네

염산하

@[email protected]

@hollo railway 에서 redeploy 했다가 안떠서 0.5.6 으로 이미지 태그 고정해서 살렸어요 ㅠㅠ 시크릿키가 너무 짧다는 오류가 나서인것 같기도 한데 어쩌죠?

염산하

@[email protected] · Reply to 염산하's post

이 회사는 뭐하나 똑바로 하는게 없다는 느낌을 주는데 어떻게 이렇게 커졌지

← Newer
Older →