오르막길 잊기전에 기록하기

[매일 아티클] 9월 2주차

섹스, 맥주, 그리고 코딩: 페이스북의 광기어린 그 시절 (번역)

페이스북의 초기 멤버들의 인터뷰를 한데 모아 회고하는 담화 형식으로 다시 엮어낸 글이다. 영화 “소셜 네트워크” 에서는 다뤄지지 않은 페이스북이 겪은 몇번의 전환점과 당시의 문화, 분위기를 느껴볼 수 있는 글이다.

뉴스피드를 처음 사용자들에게 선보이고 이를 반대하는 그룹에 이틀 새 백만명이 가입하는등 거센 반대를 겪었다는 사실이 흥미롭다.

유용한 테스트 케이스를 위한 개발자의 자세

개인적으로 지니고 있는 테스트에 대한 생각과 비슷한 글이다. ‘구현을 테스트 하지 말고, 설계를 테스트해라.’ 라는 말이 떠오르는 글.

글의 말미에 글쓴이도 언급하지만, 프론트엔드 개발자로 전향한 후에 가장 어려웠던것들 중 하나가 테스트 코드를 작성하는 일인데. (지금도 여전히 어렵지만)

UI를 개발한다는게 입/출력에 대한 검증이 아닌 ‘사이드 이펙트로 만들어지는 결과물’ 이나 ‘어떻게 보여지느냐’ 에 대한 영역이기 때문에 무엇을, 얼마나 검증해야 하는지 늘 고민하게 되는것 가다.

그래서 ‘그냥 전체를 스냅샷을 떠서 비교하자’ 로..

TypeScript is weakening the JavaScript ecosystem

제목부터 자극적인, javascript weekly에 픽되어 커뮤니티를 뜨겁게 달구고 있는 글.

요약하면, npm에 올라오는 타입스크립트로 작성된 패키지들에 대한 의존성이 타입스크립트를 모르는 자바스크립트 사용자들로 하여금 트러블슈팅에 어려움을 겪게 하고, 이는 자바스크립트 생태계를 약화시킨다는 결이다.

과거 coffe script의 사례를 들며 npm 은 초기 컨센서스인 순수한 자바스크립트 패키지만을 다루어야 한다고 주장하고 있다. TS는 별도의 네임스페이스를 사용하거나 npm이 아닌 패키지 관리자를 사용해야 함을 이야기한다.

coffe script 시절의 옛날 얘기 잘 모르지만, 개인적으로는 반대이다.

사용하는 작은 타입 스크립트 패키지들 (자바스크립트로 트랜스파일된) 을 사용하는 이유는 상세하고 복잡한 구현은 프로젝트가 커뮤니티의 집단지성으로 탄탄함을 갖췄을 거라 신뢰하며 신경쓰지 않고 비즈니스 로직에만 신경쓰고 싶은 바램에 있다고 생각해 “내가 타입스크립트를 사용할 줄 몰라 의존하는 패키지의 구현을 트러블슈팅할수 없다.” 가 생태계를 약화시키는건지는 공감할 수 없다.

패키지의 구현에 대한 트러블 슈팅은 버그를 리포팅을 하고, 해당 모듈을 다른 모듈로 쉽게 변경할 수 있게 의존성을 관리하는 설계를 하는게 이러한 라이브러리를 사용하는 개발자의 책임이라 생각된다.

물론 버그를 찾고 트러블슈팅해 기여할 수 있는 선순환이 된다면 더할나위 없이 좋겠지만..

프론트엔드 개발자로 여러 생각을 하게 만드는 글. 타입스크립트는 더 이상 선택이 아닌 FE 생태계의 큰 흐름으로 생각된다.

ts-migrate: A Tool for Migrating to TypeScript at Scale

프론트엔드 맛집 에어비엔비가 자신들의 코드베이스를 JS에서 TS로 마이그레이션하기 위해 개발한 도구 ts-migrate 를 소개하는 글.

JS에서 TS를 마이그레이션하기 위해 사용할 수 있는 전략과 장단점, 그리고 어떻게 실행했는지 이를 위해 어떤 도구를 어떻게 만들었는지 설명ㅎㅏㄴ다.

JS 프로젝트를 TS로 마이그레이션 할 계획이 있다면 한번 읽어보고, 사용해봐도 좋을것 같다.

await.ops proposal

tc39의 지난 미팅에서 await.ops가 stage1로 승격하였다.

평소 Promise 의 팩토리 메소드들도 불만없이 잘 쓰고 있긴 했지만, 가독성이 더 나아진것으로 느껴진다.

// before
await Promise.all(users.map(async x => fetchProfile(x.id)))

// after
await.all users.map(async x => fetchProfile(x.id))

--------------------

// syntax
await.all expr
// eq: await Promise.all(expr)

await.race expr
// eq: await Promise.race(expr)

await.allSettled expr
// eq: await Promise.allSettled(expr)

await.any expr
// eq: await Promise.any(expr)

언제나 그렇듯 논의 과정을 살펴보는일은 재밌고,유익하다. 제안의 논의 내용은 다음 링크 를 참고

[번역] 모든 길은 Rome으로 통할까?

프론트엔드 통합 툴 체인인 Rome 에 관한 글.

Rome란 무엇이고 어떠한 가치를 제공하며, 기존에 파편화된 프론트엔드 개발도구를 대체할 수 있을지 서술한 가벼운 글이라 심심하실때 한번 읽어보시면 좋다.

과연 모든길을 로마로 통하듯 모든 프론트엔드 개발 도구는 Rome으로 향하게 될까?

comments powered by Disqus