Profile img

bgl gwyng

@bgl@hackers.pub · 98 following · 123 followers

GitHub
@bglgwyng
0

리액트 작업하면 vs code 탭 두 개 한 화면에 브라우저 한 화면에 디자인 전달받아서 하면 figma나 시안 확인용 화면 하나에 모니터 세 개쯤은 있어야 하던데 노트북만 들고 카페에서 코딩하는 건 어떤 종류의 작업일까….

5

bgl gwyng shared the below article:

How to pass the invisible

洪 民憙 (Hong Minhee) @hongminhee@hackers.pub

This post explores the enduring challenge in software programming of how to pass invisible contextual information, such as loggers or request contexts, through applications without cumbersome explicit parameter passing. It examines various approaches throughout history, including dynamic scoping, aspect-oriented programming (AOP), context variables, monads, and effect systems. Each method offers a unique solution, from the simplicity of dynamic scoping in early Lisp to the modularity of AOP and the type-safe encoding of effects in modern functional programming. The post highlights the trade-offs of each approach, such as the unpredictability of dynamic scoping or the complexity of monad transformers. It also touches on how context variables are used in modern asynchronous and parallel programming, as well as in UI frameworks like React. The author concludes by noting that the art of passing the invisible is an eternal theme in software programming, and this post provides valuable insights into the evolution and future directions of this critical aspect of software architecture.

Read more →
11
1
0

해커스 펍은 아무래도 어텐션이 낮다 보니 채용 시장 이야기를 조금 해 보자면 (트위터는 왠지 채용 과정에서 아쉬운 경험을 하신 분들도 있을 것 같고, 해서) 새로운 프론트엔드 개발자분이 곧 합류하시는데 채용까지 이르는 데 까지 정말 많은 이력서 스크리닝을 해야 했다. 솔직히 말해 '옛날에 비하면' 뛰어난 개발자분들이 시장에 많은데 (공개적으로 이야기하기는 뭐한) 특정한 스타일의 비슷한 개발자분들이 아주 많다. 괜찮은 사람을 아무나 빨리 뽑는 채용 기조는 아니다 보니 정말 특출나게 뭔가 뛰어난 부분이 있는 분을 찾아야 한다는 압박감이 있었고, 이것때문에 좀 힘들었다.

5
3
9

안녕하세요 이번에 신입 개발자 취업에 성공하게 되었는데 두 회사중에서 고민중입니다.

두 곳 모두 프론트엔드 직무고, 최종 합격은 했는데 방향이 너무 달라서 글 올려봅니다!

1. 웹페이지 제작 전문 회사 (정규직)

  • 고용 형태: 정규직 (풀타임)
  • 기술 스택: PHP 기반의 오픈소스 콘텐츠 관리 시스템(CMS) + JS/TS
  • 업무 내용: 홈페이지 리뉴얼 및 내부 시스템 개발 등
  • 장점
    • 제가 기술 도입을 주도할 수 있는 환경인듯 합니다
    • 프론트엔드 개발의 모든 범위를 직접 경험 가능
  • 단점
    • 레거시 기반 스택 중심
    • 최신 기술 도입은 가능하나, 대부분 혼자 해결해야 할 수도 있음 (사수 없습니다!)

2. 어느 정도 규모 있는 보안쪽 IT 자회사 (인턴)

  • 고용 형태: 인턴 (하루 5시간, 약 4개월)
  • 기술 스택: React
  • 업무 내용: 보안 관련 웹 페이지 개발 일부 참여
  • 장점
    • React 기반의 실무 경험
    • 체계적이고 안정적인 조직 문화 기대
  • 단점
    • 실무 범위가 제한적일 수 있음
    • 인턴 기간 이후엔 다시 취업 준비를 해야 함 (정규직 전환 없습니다!)

많은 의견 주시면 감사드리겠습니다!

4

안녕하세요 이번에 신입 개발자 취업에 성공하게 되었는데 두 회사중에서 고민중입니다.

두 곳 모두 프론트엔드 직무고, 최종 합격은 했는데 방향이 너무 달라서 글 올려봅니다!

1. 웹페이지 제작 전문 회사 (정규직)

  • 고용 형태: 정규직 (풀타임)
  • 기술 스택: PHP 기반의 오픈소스 콘텐츠 관리 시스템(CMS) + JS/TS
  • 업무 내용: 홈페이지 리뉴얼 및 내부 시스템 개발 등
  • 장점
    • 제가 기술 도입을 주도할 수 있는 환경인듯 합니다
    • 프론트엔드 개발의 모든 범위를 직접 경험 가능
  • 단점
    • 레거시 기반 스택 중심
    • 최신 기술 도입은 가능하나, 대부분 혼자 해결해야 할 수도 있음 (사수 없습니다!)

2. 어느 정도 규모 있는 보안쪽 IT 자회사 (인턴)

  • 고용 형태: 인턴 (하루 5시간, 약 4개월)
  • 기술 스택: React
  • 업무 내용: 보안 관련 웹 페이지 개발 일부 참여
  • 장점
    • React 기반의 실무 경험
    • 체계적이고 안정적인 조직 문화 기대
  • 단점
    • 실무 범위가 제한적일 수 있음
    • 인턴 기간 이후엔 다시 취업 준비를 해야 함 (정규직 전환 없습니다!)

많은 의견 주시면 감사드리겠습니다!

1

Arstechnica 에서 이런 글을 보았습니다.

A history of the Internet, part 2: The high-tech gold rush begins

제가 이것저것의 역사에 대하여 흥미가 많다는 말을 여기에 쓴 적이 있던가요? 게임이라거나 컴퓨팅이라거나 ...

사실 대강의 사연을 알고있던 저 2편보다는, 제가 모르던 사연이 더 많은 1편 An Ars Technica history of the Internet, part 1이 더욱 흥미로웠습니다.

그 와중에 글을 쓰는 방식과 디테일들이 마음에 들어서 글쓴사람을 클릭해보니 와우' -' 보물창고가 쨘 하고 나타나는 것이었습니다.

일단 처음에 눈에 띄여서 이 시리즈를 읽었습니다. 재미있었어요.

그래서 ARM의 원래 이름은 Acorn RISC Machine. 도토리 RISC 머신이었던 것입니다 ' -' ...

다음에는 Amiga 의 역사를 읽어볼 생각이에요. 두근두근.

3
0

It's pretty unfortunate that NodeJS still doesn't have Fetch API based servers included while still being the most used JS runtime. This justifies server side libraries keep promoting Express usage by default on docs, which is not good considering that it's a NodeJS specific one.

3

Windows NT라는 이름은 David Cutler의 말장난에서 비롯되었다고 한다. 그가 DEC에서 일할 적에 만든 운영체제가 VMS인데, Microsoft로 옮긴 뒤에 VMS를 계승한다는 의미에서 VMS의 각 알파벳을 한 글자씩 뒤로 미룬[1] WNT를 코드네임으로 썼던 것.


  1. V → W, M → N, S → T. ↩︎

6

bgl gwyng shared the below article:

If you're building a JavaScript library and need logging, you'll probably love LogTape

洪 民憙 (Hong Minhee) @hongminhee@hackers.pub

LogTape offers a novel approach to logging in JavaScript libraries, designed to provide diagnostic capabilities without imposing choices on users. Unlike traditional methods such as using debug packages or custom logging systems, LogTape operates on a "library-first design" where logging is transparent and only activated when configured. This eliminates the fragmentation problem of managing multiple logging systems across different libraries. With zero dependencies and support for both ESM and CommonJS, LogTape ensures minimal impact on users' projects, avoiding dependency conflicts and enabling tree shaking. Its universal runtime support and efficient performance make it suitable for various environments. By using a hierarchical category system, LogTape prevents namespace collisions, offering a seamless developer experience with TypeScript support and structured logging patterns. LogTape provides adapters for popular logging libraries like Winston and Pino, bridging the transition for users invested in other systems. Ultimately, LogTape offers a way to enhance library capabilities while respecting users' preferences and existing choices, making it a valuable consideration for library authors.

Read more →
10

기분 좋은 일. 작업실에 밥 주는 성격 좋고 조심성 있는 고양이가 있는데 이 친구가 동네 최약체라 다른 큰언니한테 맨날 맞고 밥도 뺏기며 마주치면 도망가고 숨어다녔단 말임. 사실 양쪽 다 밥 주고 싶은데 큰언니는 자기가 우리를 다 차지하고 싶어서인지 최약체를 쫓아내려고 해서 맘에 안들었음. 그래서 최약체 전용 밥을 실내에서 따로 주기 시작했는데 최약체도 좀 컸고 또 건강상태가 좋아져서인지는 몰라도 이제 이전처럼 큰언니와 대면할 때 그냥 도망치지 않고 거리를 둔 채 위협하며 대면하는 단계까지 갔다. 오늘은 그 위협에 무서운 큰언니가 아주 천천히 시야 밖으로 사라졌고 그걸 보는데 너무 대견하게 느껴짐. 잘했어 최약체야.

3

bgl gwyng shared the below article:

Announcing LogTape 1.0.0

洪 民憙 (Hong Minhee) @hongminhee@hackers.pub

LogTape 1.0.0 has been released, marking a significant milestone for this zero-dependency logging library designed for the modern JavaScript ecosystem. This release emphasizes API stability and introduces high-performance features such as non-blocking sinks for console, stream, and file logging, along with the `fromAsyncSink()` function for integrating asynchronous logging operations. New sink integrations include packages for AWS CloudWatch Logs and Windows Event Log, enhancing LogTape's versatility. The update also brings a visually appealing console logging experience with the `@logtape/pretty` package, and seamless integration with existing Winston or Pino setups through adapter packages. Key developer experience enhancements include programmatic access to log levels and improved browser compatibility. LogTape 1.0.0 streamlines logging infrastructure with a comprehensive package ecosystem, offering specialized packages for various logging needs. This release provides a stable and mature logging solution, making it easier to manage and optimize logging in JavaScript applications.

Read more →
11

번아웃으로 아직 고생하는 가운데, 갑자기 삘이 와서 지난 1주간 170쪽짜리 소설을 Gemini로 써 버렸다. 소재가 너무 잔혹해서 (R-18G 수준) 그대로 공개하기에는 꺼려진다는 문제가 있을 뿐; 줄거리 자체는 내가 예상한 것 이상으로 잘 나왔는데 퇴고를 열심히 해서 그런 것 같다. 구체적으로 어떻게 된 거냐 하면,

  1. Gemini 2.5 Flash로 짧은 초안 작성 (1판)
  2. 이 초안의 중간 즈음에서 두 개의 새 줄거리를 만들어서 전체 줄거리 수가 3개가 됨
  3. 이대로는 안되겠다 싶어서 Flash의 제안을 일부 받아 들여 줄거리를 하나로 재조정 (2판)
  4. 이 시점에서 Gemini 2.5 Pro한테 평가를 부탁하고, 평가 내용을 다시 Flash에게 되먹여서 액션 아이템을 만들어 퇴고를 반복 (3~7판)
  5. 이 참에 번역도 맡겨야지 싶어서 Flash한테 먼저 초벌 번역을 시킴 (번역 1판)
  6. 초벌 번역을 Pro한테 주고 고쳐야 하는 부분을 그 이유와 함께 나열하게 함
  7. Flash한테 수정된 번역과 수정한 이유들을 주고 판단하게 시킨 다음 최종 번역본을 완성 (번역 2판)
  8. 마지막으로 Pro한테 전체 번역문을 주고 전체 번역 안에서의 일관성이 깨진 게 있는지 확인

이랬는데, 가장 곤란했던 건 역시 4였다. 왜냐하면 내용이 너무 길어서 텍스트 창에는 한 번에 안 들어가고(...), 잘라서 넣으면 이제 뭔 짓을 해도 앞부분을 까먹어 버렸기 때문이다. 최종적으로 동작한 방법은 소설을 최대 32KB 크기가 되도록 쪼갠 뒤 파일로 나눠어 업로드하고, 업로드가 끝난 뒤에 몇장까지 있는지 확인하고 뒤가 잘린 문장이 있는지 확인해서 뭔가 문제가 있으면 평가를 하지 않고 멈추라고 지시한 것. 혹시 이런 일 해야 하는 분은 참고하시길.

...뭐 이렇게 말하긴 했는데 사실 Flash한테 글 쓰기는 다 맡겼지만 세부적으로는 상당히 손을 많이 거쳤다. 한국어나 영어 번역이나 둘 다 그랬음. 나름 노력한 것도 있고 이 전체 내용을 다시 Flash한테 되먹였더니 찬사 일색(!!!!!)이라 진짠가 싶어서 어디 올려야 할 것 같긴 한데 소재가 소재다 보니 공개도 간단하지 않다는 게 곤란하다. 호옥시 관심 있으신 분께서는 메일로 pdf 파일을 보내 드리겠습니다.

소설 "싱크로니시티"의 한국어판 목차. 이하 다음과 같은 내용임:

싱크로니시티 Synchronicity
2025-06-22T00Z (7.4판), Gemini 2.5 Flash를 이용해 작성됨

프롤로그 - 2
1: 마리오네트 Marionette - 3
2: 태동 Genesis - 7
3: 틀 Frame - 13
4: 수치 Shame - 23
5: 목격 Witness - 37
6: 고난 Ordeal - 50
7: 울림 Resound - 65
8: 결점 Flaw - 73
9: 촉매 Catalyst - 82
10: 개조 Augment - 90
11: 의식 Ritual - 102
12: 쇼 Show - 108
13: 갈채 Acclaim - 117
14: 욕구 Desire - 130
15: 목도 Encounter - 141
16: 이미지 Image - 147
17: 진화 Evolution - 158
에필로그 - 163
'작가'의 변 - 164
작가의 변 - 166
'서평' - 170
4
13
0
0

오늘 발견한 흥미로운 링크들: Matt 타입스크립트 선생님은 종종 Effect 에 대해 트윗하는데 주로 이펙트를 찍먹해보시고 이걸 강의로 만들까말까 만들까말까 하신다. Michael EffectTS 의 BDFL 은 종종 맷 선생의 트윗에 답글을 달아 이펙트 얘기를 풍부하게 가꿔주신다.

오늘은 이펙트의 굿파츠에 대한 얘기로 스레드가 열렸다. https://x.com/mattpocockuk/status/1936083553483157714

나도 EffectTS 도입을 하고 싶지만 여러모로 기존 바닐라JS 스펙과 다른 모양의 코드가 나와서 여러모로 망설이고 있다. (내 기준 이펙트는 실행 코드를 작성하기 보다 실행 계획을 작성하는 개념으로 접근하고 있다) 프로덕션 코드를 새로 만든다면 EffectTS 도입을 고려하고 있지만 학습 난의도가 있어 이를 위해 함께 스터디하고 코드 마이그레이션 계획도 세워야하는데, 그럴 여유는 보통 없는게 현실.

아직은 neverthrow 부터 사용해보는 정도가 지금의 최선이라고 생각한다. 나는 throw 기반의 조건 제어 코드가 불편하다. try catch 안에서 if 절로 throw 하는 코드를 볼 때마다 불만이다. 복구할 수 있는 에러는 throw 하지 않는게 옳다고 생각한다. 물론 언어의 문제도 있지만... 그렇게 스레드를 읽던 중 effectively 라는 애매한 이름의 Alegbraic effects 를 구현한 라이브러리가 공개되어 있다는 것을 발견했다. 작성자 본인도 뻔뻔하게 홍보한다고 어필하고 있다. ;) effectively

EffectTS 라는 이름도 애매하지만 Effectively 는 더 애매하다. 인기가 많아지기 전에 그럴듯 한 이름으로 브랜딩되면 좋겠다. 아, 그렇게 생각하는 이유는 TS 씬에 이런 라이브러리/프레임워크가 자주 거론되면 좋겠다는 생각 때문이다.

얘기하고 싶은 것은, 아이러니하게 이 effectively 의 readme 가 매우 간결하고 읽기 쉽게 EffectTS 에 대해 소개하고 있기 때문이다. effect.website 의 문서는 뭔가 개선이 필요하다. 없는게 없이 다 있지만 실제 읽다보면 어려운 부분이 많고 더 많은 설명이나 예제가 필요한 경우가 생긴다. 미카엘 본인도 문서 개선 필요는 공감하는 것 같다. (해당 스레드 발언 추정) 그리고 또 다른 유저가 포스트를 안내해주셨는데, Effect-like code without Effect 짧게 읽기 좋다. 게다가 이 포스트가 담긴 사이트의 프로덕트도 유용해 보인다.

시작부터 Result 나 Optional 을 제공하는 언어가 많은 소프트웨어 엔지니어들에게 높은 선호도를 가지는 이유가 있다고 본다.

5

Nginx의 njs에 QuickJS 엔진 추가되니 기능이나 문법 제약도 거의 없어서 출근해서 해볼 성능 테스트만 제대로 되면 좀 복잡한 로직 필요한 리버스 프록시는 이걸로만 짤거같음. JS모듈들 대충 번들로 만들고 import해서 다 쓸수 있어서...

6
4
1

오늘은 projects.org 파일에서 내 노트 중 프로젝트를 찾아 리스트로 띄워주도록 스크립트를 짰다. org agenda도 좋던데 기능이 풍부해서 익히기 어려워서, 내가 신경쓰고 싶은 기능만 작게 만들었다.

org는 주피터 노트북이나 엘릭서 라이브북처럼 실행 스크립트를 파일 내에 넣어버릴 수 있고, 접어서 깔끔하게 결과만 볼 수 있어서 좋다.

projects.org 파일의 모습. SRC 블록은 접혀있고, 진행중, 완료, 폐기된 프로젝트들이 리스트업되어있다.SRC BLOCK을 펼친 모습. 프로젝트 목록을 뽑아내기 위한 Elisp 스크립트가 담겨있다.
3
1
0
0

두달내내 발표자료를 깎지 않을까.. 싶네요.. 파이콘(세션 발표, 커뮤니티 소개 발표) / 우부콘(세션 2개) / 모각작모임 라이트닝 토크. 요렇게 5개를 준비하게 생겼습니다.

전반적으로 내용은 얼추 완성이 되긴 했는데, 피그마로 만들었던 자료를 구글 슬라이드 기반의 템플릿으로 하나하나 다 옮겨야 함...

그리고 Claude Code로 실험을 좀 많이 하게 될 것 같아요

6

4년만에 하는 웹개발... 난 그저 간단한 퀴즈 푸는 사이트를 만들려고 했던것 뿐인데... 살면서 boilerplate만 한 10번쯤 만드는것 같음. 만들어두면 또 한동안 웹개발 할 일 없어서 방치되고, 그 사이에 온갖 라이브러리가 사라지면서 못쓰는 코드가 되어버림. 프레임워크들도 엄청나게 많이 바뀌어있고.

이번에 작업한거: 4년전에 만들어둔 boilerplate인데 좀 최신화를 했습니다. Django + Vue 조합. 기능이라고는 겨우 로그인해서 'Home' 문구 하나 볼 수 있는 웹페이지인데 어쩌다가 이렇게까지 복잡해졌을까요...

https://github.com/theeluwin/pocket-galaxy

7
16
4
11

제텔카스텐이니 세컨드브레인이니 하지만, 정작 우리나라에서 만든 창의적 방법론에는 무관심한 듯.

우리나라에서 제텔카스텐 기법을 극대화하신 분은 다산 정약용 선생 아닐까? 여유당 전서, 흠흠신서, 목민심서, 경세유표 등등 엄청난 저술 활동을 해낸 분. 여유당 전서는 500권이 넘는다. 제텔카스텐을 창안(?)한 루만도 고작(?!!!) 300편의 논문만 썼다.

예전 다산 선생을 다룬 책에서 제텔카스텐 기법을 본 적이 있는데...

4
3
1
0
0
3
3
6

이뿐만이 아니다. 예스24는 낙후된 시스템을 운용하는 것으로 전해진다. 단적인 예로 사이트 개발에 '닷넷 프레임워크'를 사용하고 있다. 닷넷 프레임워크는 현재는 잘 사용하지 않는 개발 언어로 윈도 서버에서만 운영 가능하기 때문에 개발자의 외면을 받고 있다.

닷넷 프레임워크는

  • 현재는 잘 사용하지 않는 -> 아님¹
  • 개발 언어로 -> 아님²
  • 윈도 서버에서만 운영 가능하기 때문에 -> 아님³
  • 개발자의 외면을 받고 있다 -> 일단 점유율은 아님¹

예를 확인 없이 내세운 기사네요 🙃

@nyeongAn Nyeong (安寧) .NET이랑 .NET Framework가 서로 다른 물건이예요. .NET은 .NET Core가 리브랜딩된 거고, 10년 전에 .NET Framework를 대체했습니다. .NET Framework는 Windows에서만 돌아가는 것도 사실이고요. .NET Core, 즉 현재의 .NET은 .NET Framework와 브랜드 측면에서는 연속성이 있지만, 기술적으로는 아예 새로 만들어진 구현입니다. 오픈 소스라는 점도 다르고요. 전반적으로 .NET Framework는 레거시 기술이 맞아요.

4

Biome v2—codename: Biotype is here! The first type-aware linter that doesn't require tsc

🔐 Type-aware lint rules
🧑‍🚒 Plugins
📚 Monorepo support
📝 Revamped, configurable import sorting
🧐 Linter domains
🙅‍♀️ Bulk suppressions
👩‍✈️ Analyzer assist

1

그리고 하스켈 클라이언트 예제 코드에 해커즈 퍼브 주소를 은근히 적어 넣었다!(깨알 광고)

{-# LANGUAGE OverloadedStrings #-}

module Main where

import Data.Default
import Web.Finger.Client

query :: Query
query = def { qryTarget = resource }
  where
    resource = ResAccount (Account "curry" "hackers.pub")

main :: IO ()
main = do
  manager <- newManager
  result <- webfinger manager query
  print result
10
5

어제부터 Jujutsu라는 버전 관리 시스템을 써보고 있습니다. git의 branch는 연속적인 단일 작업을 표현하는 느낌이 강하게 드는데 사실 그저 어느 commit을 가리키는 포인터일 뿐이라는 걸 느끼게 해주네요. Jujutsu에서는 같은 커밋에서 다음 커밋을 여러 개 만들면 그게 브랜치이고, 여러 커밋을 parent로 하는 커밋을 하나 만들면 그게 머지이고, 수정이 다 끝나면 그냥 원하는 브랜치 이름의 포인터를 적절히 옮기면 됩니다. 부분 변경을 커밋 간에 자유롭게 옮길 수 있는 것까지 합치면 재미있는 사용 방법이 많이 있을 것 같습니다. 특히 megamerge workflow를 쓰면 git 쓰다가 생겼던 "지금 하는 작업을 끝내야 다음 변경사항을 작업"하는 강박이 해소될 것 같아 기대가 많이 됩니다.

12

bgl gwyng shared the below article:

LogTape 0.12.0 Release Notes

洪 民憙 (Hong Minhee) @hongminhee@hackers.pub

LogTape, a zero-dependency logging library for JavaScript and TypeScript, has released version 0.12.0 with several enhancements. The update introduces a new `trace` log level for more granular debugging and improves file sink performance through configurable buffering. A significant addition is the `@logtape/syslog` package, enabling log message transmission to syslog servers using RFC 5424. The update also includes `Logger.warning()` as an alias for `Logger.warn()` for consistency. Furthermore, all LogTape packages now share unified versioning for better compatibility. The build infrastructure has been migrated from `dnt` to `tsdown`, enhancing compatibility with modern JavaScript toolchains and improving build times. This release optimizes logging capabilities and ensures smoother integration with various JavaScript runtimes.

Read more →
9
1