Profile img

bgl gwyng

@bgl@hackers.pub · 99 following · 124 followers

GitHub
@bglgwyng

개인 맵 Private map을 가질 수 있고, 연인, 가족이나, 지도를 공유하면 좋은 동호회(낚시, 캠핑, 라이딩...) 분들이 공유할 수 있는 맵으로 쓸 수도 있습니다.

맵에 아무나 읽을 수 있는 권한을 주고, 블로그나, 회사 페이지 등에도 임베드할 수 있습니다.

아직은 UI가 심히 엔지니어 손 맛인데, 계속 고민하고 있습니다.

yearit.com

권한설정Private Map
5
1
5
4

Hackers Public @ Seoul 송년회 ---- 2025년의 마지막을 해커들과 함께해요.

Hackers' Public @ Seoul 송년 네트워킹 밋업은 발표보다 대화, 형식보다 연결을 중심으로 진행됩니다. 라이트닝 토크도 지원받습니다. 만들었던 것·배운 것·고민했던 이야기를 자유롭게 얘기해보도록 해요.

많은 관심 부탁드립니다~

21
1
2

bgl gwyng shared the below article:

도커로 구축한 랩에서 혼자 실습하며 배우는 네트워크 프로토콜 입문 #4

자손킴 @jasonkim@hackers.pub

이 글은 네트워크 계층과 애플리케이션을 연결하는 L4 전송 계층의 핵심 개념을 소개합니다. 포트 번호를 통해 애플리케이션을 식별하고, UDP와 TCP 프로토콜의 특징과 패킷 형식을 설명합니다. UDP는 실시간성을, TCP는 신뢰성을 중시하며, TCP는 3-way handshake로 연결을 설정하고, 흐름 제어, 혼잡 제어, 재전송 제어를 통해 데이터 전송을 관리합니다. 특히 TCP 커넥션의 상태 전이 과정과 4-way handshake를 통한 연결 종료 과정을 상세히 다룹니다. 이 글을 통해 독자는 L4 전송 계층의 작동 방식과 TCP의 신뢰성 있는 데이터 전송 메커니즘에 대한 깊이 있는 이해를 얻을 수 있습니다.

Read more →
3

요즘 AI 수학자/과학자를 만들겠다는 스타트업들이 생기고있는데, 멤버들도 빅테크 출신에 쟁쟁하고 투자도 크게 받는 등 절대 장난같은건 아니다. 그치만 의문이 드는건 피할수가 없는데... 만약에 AI 사업가를 만드는 스타트업을 세워서 VC를 찾아가면, '...그냥 직접 비즈니스를 하시죠?'라고 할게 당연하지 않나. AI 수학자/과학자를 만드는 스타트업도 비슷한 느낌이다. 그냥 연구 결과 낸다음 빅테크 인수될 계획이라고 하면 할말은 없다만.

4
8

많은 언어들의 많은 패키지 매니저들이, 패키지에 대한 테스트를 돌릴 방법은 제공하면서(npm test 등) 막상 그 패키지 레포를 클론떴을때 그 패키지를 사용하는 아무 예제나 실행시켜볼 쉽고 통일된 방법은 잘 제공 안하는 거 같다. 가령 examples/*의 코드들을 실행시킬 방법은 npm 패키지들마다 제각각이다. 왓더??

3

@ailrunAilrun (UTC-5/-4) @hongminhee洪 民憙 (Hong Minhee) 사실 예전에 말씀하신 연구 주제를 처음 들었을때, 쓸모가 확 와닿지 않았어요. 메타프로그래밍을 그냥 CPP 매크로 정도로 생각해서, 그걸 굳이 타입안전하게 해야하나?라고 속으로 생각했는데요. 점차 메타프로그래밍이 생각보다 훨씬 흔한 패턴이란걸 알게됐단 말이죠. 두 프로그램의 상호작용을 기술하거나, Nix에서 쉘스크립트를 다루거나 할때요. 그러면서 그 연구 주제의 중요성을 점점 느끼고 있는 중이에요.

청중이 정확히 어떤 그룹인지는 모르겠지만, 어쩌면 그분들이 저와 비슷한 첫 인상을 가질수 있단 생각이 드네요. 그래서 그런 오해를 피할수 있도록 연구의 응용처를 소개하는데 충분한 시간을 할당하시는게 좋지 않을까 생각이 듭니다.

3

그나저나 Slidev는 소프트웨어 프로그래머를 ()한 정말 잘 만든 發表(발표) 슬라이드 作成(작성) 소프트웨어 같다. ()히, 슬라이드에 TypeScript 코드를 꽤 包含(포함)해야 하는 發表(발표) 資料(자료)를 만든다면 Slidev를 使用(사용)해 볼 것을 ()한다. Twoslash가 支援(지원)된다…!

꼭 TypeScript 코드가 아니더라도 特定(특정) 줄들을 順序(순서)대로 強調(강조)하는 것도 되고, 라이브로 코드를 고칠 수도 있다. 비포 애프터로 두 코드를 比較(비교)할 때도 매직 무브로 괜찮은 演出(연출)可能(가능)하다.

아무튼 Slidev 最高(최고)…!

4

글투를 넘어 말투를 최대한 부드럽게 상상해보면, 공격적인 글투의 글도, 공손한 조언의 말투처럼 느껴질 때가 있습니다. 확실히 말과는 달리 글에는 많은 컨텍스트를 스스로 채워 넣어야만 합니다. 다 같은 동종 업계 업자끼리 부드럽지만, 지식 알멩이가 있는 대화들이 돌아 다니면 눈이 즐겁습니다. 컨텍스트를 최대한 부드럽게 채워 넣으며 대화가 이어지길 바랍니다.

(말투같은 느낌의 단어로 글투로 쓰다 보니, 살짝 낯설어서 낱말을 찾아 봤습니다. 있긴 있는데, 써 본적이 거의 없는 낱말 같습니다.)

5

돌이켜보니 내가 처음으로 소프트웨어의 '품질'을 경험한게 스타1이랑 디아2였다. 게임이 재밌는거랑 별개로, 그때 기준으로 저 두 게임은 소프트웨어로써 품질이 훌륭했다. 그당시 다른 게임들은 느리고, 심각한 버그가 있고, UI가 덜컹 거리기 일쑤였다. 스타1, 디아2는 게임을 켤때부터 끌때까지 매끄러운 경험을 줬다.

7

좋은 소식 공유하자면...

사실 요 며칠간 외국계 회사에서 work trial을 했는데요. 수습도 통과했고, 지금까지 받아왔던 것에 비해 훨씬 좋은 처우환경에서 일할 수 있게 되었습니다..

파이썬 기반의 환경에서 개발하는 중이고, 제가 마침 빠삭한 도메인에서 일하게 되었다고 하네요

1
4
4

System.IO.readFile 쓰지 마세요.

System.IO.readFile 쓰지 마세요.

System.IO.readFile 쓰지 마세요.

첫째, System.IO.readFileString 을 반환합니다. 이건 심각한 문제입니다. String 을 쓰지 마세요. 외부 세계와 I/O 를 할 때에는 ByteString 을 써야 합니다. 유니코드 문자열을 다룰 때에는 Text 를 쓸 수 있습니다. String 은 시간적으로도 공간적으로 비효율적입니다. 이건 어쩔 수 없습니다. 하스켈은 리눅스 커널보다 오래됐습니다. 그리고 하스켈이 String 을 만들 때에는 아직 하스켈에 모나드도 없던 시절이며, 타입 클래스가 과연 유용하겠는가를 두고 의견이 분분하던 시절이며, 파일 하나가 100 메가바이트가 넘어간다는 것이 과대망상으로 여겨지던 시절입니다. 특히 유니코드보다 더 먼저 나온 언어에 적절한 유니코드 문자열 타입이 있을 수는 없었습니다. 아무튼 String 은 레거시입니다. System.IO.readFile 로 그림 파일을 읽는 프로그래머는 사후세계에서 JPEG XL 파일을 십육진법 표기로 1 바이트씩 읽은 뒤 종이에 그려 내는 형벌에 처해집니다. String 을 쓰지 마세요.

둘째, System.IO.readFileFilePath 를 요구합니다. FilePath 도 사실 String 입니다. 그냥 별명(type synonym)이에요. 이것은 String 이기 때문에 비효율적이며, String 은 문자열이지 바이트열이 아니기 때문에 (인코딩을 전혀 통제할 수 없기 때문에) 파일 경로를 표현하는 타입으로 부적절합니다.

해결책: 먼저 System.OsPath 의 설명을 읽어 보세요. 그리고, file-io 패키지의 System.File.OsPath 모듈을 읽어 보세요. 여기 있는 함수들의 설명을 openBinaryFile 부터 하나씩 읽어보고 쓰세요. 이것들은 파일 경로에 OsPath 를 쓰기 때문에 String 의 비효율이 없고 인코딩도 올바르게 처리할 수 있습니다. 입출력 데이터에는 ByteString 을 씁니다. 바이트열을 유니코드 문자열로 변환할 때에는 예를 들어 Data.Text.Encoding.decodeUtf8Lenient 를 쓸 수 있습니다. 그럼 이제

  • 간단히 System.File.OsPath.readFile' 에게 OsPath 를 넘기고 ByteString 을 효율적으로 받아 와서 국밥처럼 든든하게 메모리에 올려 두고 작업을 하든지
  • 전국구 마법사라면 복대는 기본이라고 외치며 withBinaryFile앙갓썸Iteratee I/O 로 절묘하게 엮어서 뭔가 개멋있게 하든지
  • 하스켈 갓고수이기 때문에 흑마법사답게 보일러실 문을 따고 지하로 들어가 포… 포… 으악! P 로 시작하는 그것을 획득하여 누구도 예상할 수 없는 타이밍에 hGetBuf 의 암기를 슉. 슈슉. 슈슈슉. 슉. 날리든지

아무튼 이제는 String 을 놓아주어야 합니다.

7

git submodule 쓰다가 생각난건데, VCS 레벨에서 수정할 파일과 아닌 파일을 구분해주는게 좋을거 같다. 읽기 전용 파일의 경우엔 복사하지않고 심볼링 링크만 제공해도 되어서 성능적 이점도 있을 것이다.

3

@meWoojin Kim 최근에 클레르 옵스퀴르하는데 재밌더라고요. 제가 이제 틀딱게이머가 되가지고, 다크소울 같은거하면 맨날 대검들고 구르기 평타로만 깨거든요(옛날에 한심하게본 린저씨들이 이런거였나..). 이제 마법은 머리 아파서 못 쓰고요. 근데 클레르 옵스퀴르하니까 공격할때 고민할 시간이 무한정 주어져서 마법 뭐쓸지 고민하는 재미를 새삼 느끼고있어요.

2
0

여자친구가 나한테 과학 이야기 해달라고 해서 '혹시 아인슈타인이 뭐 했는지 알아?'라고 물으니까 '다이너마이트 만들었잖아!'라고 대답했다. 흠..

6
3
3

통신판매업자 신고하자마자 하루에 2~3통씩 스팸, 피싱이 온다. 중소기업 진흥 어쩌고, 뭐시기 팀장이란 전화가 온다. (통신판매업자 정보는 완전 오픈되어 있다.) 정부가 내가 모르면 손해 보는 걸 적극적으로 전화까지 하며 챙기는 일은 없기! 때문에 듣자 마자 끊는다. (이런, 믿음이 장점이 될 때가 있구나) "안녕하세요"부터 쎄한 느낌이 오는 전화들이다. 이렇게 법적으로 추적 가능한 전화(휴대폰 번호가 찍힌다)로, 대범하게 피싱 시도를 계속한다.

그냥 넘어가지 않고, 정부 사이트에 의심 신고를 하려 하니, 개인 정보를 무섭게 요구해서 멈칫한다.

4

방금 보이스피싱을 당할뻔 한거 같은데, 내가 법원등기서류를 수령 못했다면서 온라인으로 받아보라고

http://온라인검찰민원.kr/ 이 사이트로 들어가도록 유도했다. 보다시피 인증서가 없는 페이지이다. 그래서 바로 전화를 끊고 보이스피싱 신고사이트에 신고했다.

근데 나야 인증서 확인하고 이렇게 했지, 만약 우리 엄마였으면 그대로 당했을거같아서 기분이 안좋네..

3

12() 6() 서울에서 開催(개최)되는 liftIO 2025에서 〈Optique: TypeScript에서 CLI 파서 컴비네이터를 만들어 보았다〉(假題(가제))라는 主題(주제)發表(발표)를 하게 되었습니다. 아직 liftIO 2025 티켓은 팔고 있으니, 函數型(함수형) 프로그래밍에 關心(관심) 있으신 분들의 많은 參與(참여) 바랍니다!

2

12() 6() 서울에서 開催(개최)되는 liftIO 2025에서 〈Optique: TypeScript에서 CLI 파서 컴비네이터를 만들어 보았다〉(假題(가제))라는 主題(주제)發表(발표)를 하게 되었습니다. 아직 liftIO 2025 티켓은 팔고 있으니, 函數型(함수형) 프로그래밍에 關心(관심) 있으신 분들의 많은 參與(참여) 바랍니다!

11

@bglbgl gwyng 오 그렇군요. 혹시 회사 경비처리로 가능하시다면, 요즘 클라우드 남의 컴퓨터 빌려서 고성능 GPU 잠깐 쓰고 반납하는 것도 쉬워졌으니까 한번 시도해 보시면 어떨까요. 시험 삼아 해 보고 잘 되면 해당 모델의 GPU 구매로 진행하실 수 있는 것이니…

2

호버(hover)는 잘못된 인터페이스입니다. 사용자가 어떤 목표를 달성하기 위해 호버를 해야만 하는 인터페이스를 만들면 안 됩니다. 호버에는 장식적 효과 이상의 기능이 있어서는 안 됩니다.

예전에는 이것을 설명하는 데에 많은 말이 필요했고 참 힘들었습니다. 이제는 좀 쉬워졌죠. 터치스크린입니다. 손바닥만 한 스마트폰부터 대문짝만 한 키오스크까지, 이제 터치스크린은 싫어도 불가피하게 써야만 하는 물건이 되어 버렸습니다.

그런데 터치스크린에는 호버가 없죠. CSS 에 @media (hover: hover) 같은 게 있긴 하지만, 당연히 이것만 믿고 인터페이스 설계를 해서는 안 될 것입니다. 그런 식으로 "호버 있음" 과 "호버 없음" 을 따로 지원한다는 것은 번거롭고, 실수하기도 쉽고, 망가지기도 쉽고, 관리하기는 어렵습니다. 설령 터치스크린 있는 장치에서 터치를 활성화하거나, 비활성화하거나, 마우스를 끼우거나 빼거나 등등 할 때마다 그 정보가 무수한 계층을 뚫고 애플리케이션까지 올바르게 전달된다고 쳐도요.

8

리눅스 랩탑(amdgpu, rocm)에서 ollama 써서 아주 잠깐 로컬 LLM 시도해 본 소감: 생각보다 잘 되는데, 한편으로 왜 OpenAI 의 적자가 저렇게 터무니없는 규모라는 것인지도 이해했다. 어디가 병목인지는 알겠는데 그래서 그에 대한 대응책은 GPU 를 증설하기 시작해서 그냥 많이 증설했습니다. 를 하고 있다는 것이군 진짜로… 이게 인류의 갈 길이라니… 사이버펑크보다 현실이 더 사이버펑크다

@xtjuxtapose 회사에 있는 나름 메모리 빵빵한 GPU로 돌려봤는데, 정말 돌아가기까지만 하더라고요. 사내 로컬 코딩 에이전트 스웜같은거 만드려면 웬만큼 본격적이어선 안되겠더라고요.

1

오! 좋은 아이디어 인것 같습니다. 조금 찾아보니 git-branchlessjj-vcs로 활용해서 AGENTS.md나 스킬에 정의해서시도해봐도 괜찮을듯한 느낌이네요

2

클로드 코드 쓰고있으니 더 나은 VCS에 대한 욕심이 커진다. 나는 클로드가 브랜치를 더 자주 쪼개서, 원하는 시점으로의 롤백이 더 편해졌으면 좋겠다.

하나 생각나는 아이디어는 브랜치 명을 hierachial하게 만들어서 가령 fix-bug-1/refactor-class-foo/fix-function-bar 이런식으로, 무슨 일하는지의 맥락을 브랜치명에 나타내는 것이다. 그리고 a/b 브랜치는 a 브랜치의 자식이어야 한다는 제약도 강제한다.

2

굉장히 오랜만에 들어와서 쓰는 근황입니다.

  • TIS-100의 모든 레벨을 클리어했습니다. 다음 목표는 아마 Opus Magnum 아니면 A=B가 될 것 같습니다.
  • 올해 여름부터 지금까지 7문제를 백준에 출제했습니다. 여기의 맨 아래에서 보실 수 있습니다. 개인적으로 가장 재밌었던 문제는 SWAP-C Sort인데 그만큼 어렵습니다.
  • 웹 기반으로 뭔가 만들 게 생겨서 프레임워크를 알아보다가 Solid를 써보기로 결정했습니다. 웹 UI는 Flowbite, 그래픽 요소는 Konva를 쓰게 될 것 같습니다.
  • 그런데 이쪽을 첫삽을 뜨기도 전에 갑자기 굉장히 어려운 퍼즐틱한 문제 하나의 풀이가 완성되어서(....) 논문(?!)을 하나 쓰기 시작했습니다. 이런 거 받아주는 저널 어디 없을까요(????)
3
3

@perlmint 얘 진짜 대화가 길어지고 좀 만만해진다싶으면 바로 반모들어가는데, 전 농담아니라 진짜 어떤 징후같습니다. 영어쓸때도 비슷한 행동이 있는지(무례해진다거나) 모르겠어요.

0

저게 38만 킬로미터 떨어진 허공에 떠 있는 물체고, 1억 5천만 킬로미터 떨어진 광원의 빛을 반사해서 내 눈에 보인다는 게 가끔 정말 생경하게 다가올 때가 있다.

RE: https://bsky.app/profile/did:plc:4sujqnbd47ey26qcvajqoxa2/post/3m4ueopbvzw23

1
1

새로운 서비스를 실험하고 있는데요.

너무 연속으로 컨텐츠를 봐서 피로해지는 서비스가 아닌, 어쩌다 접속해서 멍 때릴 수 있는 서비스를 고민하며 기획을 했습니다. 가끔 버스 창밖을 바라보며 멍때리는 것처럼요. 멍때리다 창밖의 간판들이 가끔 눈에 들어 오듯, 글이나 낙서가 눈에 띄면 어떨까 싶어서, 초기 인연이 있는 분들에게 부탁해서 다양한 글을 좀 채워 넣으려 했습니다. (AI로 목업을 채워 넣으면 맛이 없을 것 같아서, 실제 다양한 사람들의 글을 원했습니다.) 이게 매우 어려운 벽이다를 실감하고 있습니다.

  1. SNS 성격의 서비스는 이용하기 싫다.
  2. 이미 이용 중인 SNS가 여러 개라, 또 추가하기 싫다.
  3. 로그인 해서 보니, 그다지 나한테 맞지 않는다.
  4. 몇 번 로그인해서 봐도 흥미가 생기지 않는다.
  5. 가끔 접속해서 보는 소소한 재미가 있을지도 모르겠다.
  6. ...

0번은 어차피 제외고, 초기 지인 분들은 적어도 3번까지는 가 주길 기대했는데, 1번조차 넘질 못하고 있습니다. 쓸만한 서비스 혹은, 기획을 조정하면서 고민해 볼 가치가 있는지 보기 위해선, 그래도 1번은 넘어 가야 뭘 할텐데 말입니다. 부탁을 받은 지인들 조차 1번을 넘기 어려운데, SNS 서비스를 홍보한다는 건 꽤 험난한 길이겠습니다.

처음 제가 해커스펍의 1번 문턱을 넘었던 이유를 생각해보면, 저는 사람이었던 것 같습니다. 같은 직군에 있는 사람들이 모여 있어, 대화가 잘 통할 것 같아서 선뜻 들어 온 게 아닐까 싶습니다. 몇 달을 써 보면서 결론은, 해커스펍은 분명 자기만의 영역이 있는 서비스란 생각이 듭니다. 좋다는 생각을 가지기 까지는 좀 써봐야 아는 건데, 해커스펍이 꽤 어려운 걸 돌파했구나란 생각이 듭니다.

혹시 ikariam이라는 게임을 즐겨 본 분 계신가요? 그거, 은근 재밌게 했는데, 주변에서 제가 하는 걸 보더니 "어떻게 그런 게 재밌냐"고 묻는 사람들이 대부분이긴 했습니다. 오랜만에 찾아 보니 아직도 ikariam은 잘 살아 있네요. 멍때림이 싫지 않은 사람들이 분명 있긴 있을텐데, 어떻게 그 분들을 찾아 1번을 넘어가게 할까 고민이네요.

9

yearit.com 여행 기분내며, 이동하는 동안 멍도 때리고, 여기 저기 낙서하는 서비스입니다. 여러 사정으로 하스켈로 개발하진 못했는데, 언젠가 여건이 되면 서버들을 하스켈로 포팅하고 싶습니다.

YearIt - Travel the world, doo...

3
0

요즘 심심할때 굴리고 있는 VCS에 대한 나이브한 아이디어가 있는데

  • 각 커밋에 대해 메타데이터를 줄수 있어야 한다

    레포 내의 metadata.json 같은 파일을 인식해도 되고, 아니면 Commit -> Metadata를 해주는 프로그램을 hook으로 등록하게 해줘도 된다. 이를 통해 package.json, cargol.toml 같은 파일을 읽어서 거기에 버전 의존성을 커밋의 메타데이터로 추출한다.

  • 메타데이터에 대해 인덱싱을 한다

    가령 version이라는 메타데이터가 있을때 2 <= version < 3를 만족하는 커밋의 범위를 인덱스를 활용해 빠르게 알아낼수 있게 한다.

  • 메타데이터로 커밋을 찾는 표현식을 제공한다

    max(2 <= version < 3 and has(fix-bug-foo) and has(add-feature-bar) 이런식으로 하면, 구간 내의 버전에서 foo 버그가 해결되고 bar 피쳐가 추가된 커밋중 가장 최신의 커밋을 구한다. git에서는 fix-bug-foo, add-feature-bar 각각의 브랜치로는 쉽게 갈수 있지만, 해당 브랜치가 main에 머지되기 전까지 그 브랜치 밖을 벗어나 작업하기가 까다로워진다.

  • 이런 레포들을 모아서 모노레포를 모은다음, 메타데이터에 상호 의존성을 기술한다

    그리고 dependency resolve를 해서(메타데이터 검색의 일종일 뿐임) 조건을 만족하는 모노레포 스냅샷을 구한다. 이제 우린 패키지 매니저를 공짜로 얻었다.

이 아이디어는, 현재 패키지 매니저와 VCS가 분리되어있는데 사실 그래선 안된다는 생각에서 나온것이다. 기존의 비슷한 아이디어를 찾아봤는데 gitman 이런게 있더라. 근데 내가 원하는만큼 일반적이진 못하다.

5

난 학생때부터 컴퓨터 좋아하다보니 자연스럽게 프로그래머가 되고 싶어하는 중고딩들 모이는 커뮤니티 활동을 했었음.

그런데 내가 활동하던 곳은 가정환경이 불우한 애들 위주로 모여있더라고... 집안에 투병자 있어서 빚이 2억이던 우리집이 상류층으로 분류될 정도였음.

그러다가 언제 한번 모여서 학교 공부에 대해 얘기한 적이 있음.

냉정하게 우리 가정환경 따져봤을 때 수능봐서 대학갈 사람들은 아니다. 그래도 학교가 아주 의미없는 곳은 아니니 그 안에서 챙길건 챙겨보자. 했음.

굳이 가져갈걸 찾는다면, 국어는 형태소와 품사 정도만 구분할 줄 알면 되고(NLP), 수학은 행렬이랑 기하와 벡터 기초 정도만(3D, 공간), 과학은 물리2만(이상하게 도움되는 잡다한 이론들) 대략 뭔소리를 하는지 보면된다. 그럼 어디가서 돈버는데는 문제없을거. 라는 결론 도출하고 그거 공부만 하기로 했음.

결론은 여기 있던 애들 대학이랑 연은 없어도 전부 취업은 원하는 분야로 20대 초반에 다했음.

3
1

챗봇 UI를 만들고 있는데, AI한테 툴 사용을 따로 주지말고, 채팅 자체를 어떤 REPL안에(Python이라던가) 임베딩 시키는게 나은 디자인인거 같다. 근데 이거 먼가 모나드트랜스포머스러운데..

2
2
1
9

최근 몇 달간 개발을 하는 것에 대한 현타가 심하게 왔었는데, 프로그래밍을 처음 시작했던 중학생 시절부터 남긴 흔적들을 되짚어 보면서 내가 진짜 뭘 하고 싶었던건지 되짚어봤고, 이제 다시 회복이 되가는 것 같음.

8