Category: Works

07
4월
2020

UA가 가고 Client Hints가 온다

navigator.userAgent는 브라우저 환경 별로 다른 화면과 기능을 제공하려고 할 때 유용한 웹브라우저 내장 객체입니다. navigator라는 이름에서 보이듯 1990년대 넷스케이프 웹브라우저 시절부터 2020년 현재에 이르기까지 클라이언트 환경을 분석하기 위해 많이 사용되고 있지만, 이 객체는 곧 사용하지 못하게 될 예정입니다. https://www.zdnet.com/article/google-to-phase-out-user-agent-strings-in-chrome/ 구글이 자사의 Chrome 브라우저에서 User Agent 문자열을 단계적으로 사용 중단할 계획을 발표하고 대안으로 Client hints 를 제안했습니다. 이는 사용자 개인정보를 보호하기 위해 추진하고 있는 프라이버시 샌드박스 정책 중 하나입니다. Client hints는 W3C 표준은 아니며, W3C 표준 트랙에도 없는 내용입니다. Web platform Incubator Community Group(WICG)에서 발표한 제안일 뿐, 앞으로 변경될 가능성도 있습니다. 현재 Accept-CH 헤더로 크롬과 파이어폭스에서...

19
2월
2020

모바일 Dark mode 대응

Dark mode는 UI 트렌드 중의 하나이며 UI 전체를 어두운 톤으로 설정하는 기능을 말합니다. 이전에도 앱 자체의 설정을 통해 “밝은 테마, 어두운 테마”를 지원하는 경우는 있었지만, 당연히 해당 앱에서만 적용될 뿐 다른 앱에 이 설정이 공유되지 않습니다. 하지만, Dark mode는 OS의 자체 설정이며 OS, 모든 앱과 서비스가 이 설정을 공유하여 UI 색상을 변경시킴으로 디바이스의 사용자 경험 자체를 어두운 색상 위주로 일관되게 전환시키는 것을 말합니다. 현재 가장 많이 쓰이는 OS인 Windows 10, macOS 10.14 mojave, 그리고 모바일에서는 iOS 13 (2019.09 발표), Android 10 (2019.09.03 발표) 에서 Dark mode를 지원하고 있습니다. 모바일의 경우 마치 약속한 듯 비슷한 시기에...

31
12월
2019

내맘대로 돌아보는 2019 Frontend 트렌드

오랫동안 프론트엔드 쪽의 일을 해왔지만, 이 분야는 새로운 것들이 등장하는 속도가 정말 빠름을 느끼고 있습니다. 어느덧 한해를 정리하고 다음 해를 준비하는 연말이 왔는데요, 나름대로 2019년에 프론트엔드 분야에서 화제가 되었던 것들을 돌아보고, 관심있는 분야와 공부해야 할 것들을 개인적으로 정리해봤습니다. 자세한 설명은 구글링으로 훨씬 좋은 자료를 찾을 수 있기 때문에 이론 설명보다는 개인적인 의견을 좀 더 담아봤습니다. 함수형 프로그래밍 현재의 프로그래밍 패러다임은 절차형에서 객체지향형, 객체지향형에서 함수형으로 이동하고 있는데요, 올해엔 유난히 함수형 프로그래밍 (Functional Programming, FP) 도입에 대한 논의가 많았던 것 같습니다. 함수형 프로그래밍은 기존의 절차형 / 객체지향형 프로그래밍과 다른 사고방식으로 문제를 해결합니다. 간단하게 정리하자면 어떤 문제를 해결할...

24
9월
2019

JSCONF KOREA 2019 돌아보기

저는 이전에 Deview(https://deview.kr/) 등을 참여한 경험은 있지만, 국내 IT기업 위주로 진행되는 대형 컨퍼런스들은 사실 프론트엔드 개발자에게 큰 도움이 안된다는 생각을 하고 있습니다.게다가, 여느 개발자가 거의다 그렇듯 샤이한 성격의 본인이 컨퍼런스에서 기대했던 것은 “순수한 기술 습득 및 공유“였지만, 최근엔 해외 컨퍼런스처럼 개발자간의 네트워킹을 유도하거나, 또는 자사/조직의 PR 등이 더 많은 것 같아서 컨퍼런스는 언젠가부터 잘 안가게 된 것 같습니다. 그러나 Jsconf(https://2019.jsconfkorea.com/)는 자바스크립트 개발자만을 위한 컨퍼런스이고 세계적으로 많은 도시를 순회하면서 개최하고 있기 때문에 꽤 기대를 했습니다.모든 세션이 자바스크립트 및 프론트엔드 개발을 위한 대규모 컨퍼런스는 처음이었고, 티켓 가격도 가격인지라 앞으로도 갈 수 있는 기회가 얼마나 있을지 알 수...

20
5월
2019

{ passive:true } 의 진정한 의미

addEventListener는 대상에 지정한 이벤트가 들어올 경우 호출할 함수를 등록하는 method입니다. 자바스크립트를 하는 사람이라면 누구나 아는 기초적인 method이죠. 하지만, 과거에는 addEventListener가 웹브라우저 별로 동작이 달랐고 버그도 많아서 jQuery 같은 라이브러리의 on(), off() method로 간단히 처리하는 경우가 많았습니다. 지금 많이 사용되는 react, vue.js 도 addEventListener를 직접 사용할 일은 많지 않습니다. 자바스크립트의 대표적인 method이지만 의외로 addEventListener를 직접 사용할 일은 점점 줄어들고 있는 것 같습니다. AddEventListener addEventListener는 세개의 인자를 받을 수 있습니다. 첫번째 인자는 type으로 target에 반응할 이벤트 유형 (예. click, focus, scroll, …)입니다. 두번째 인자는 listener 함수이며 지정한 이벤트가 발생할 경우 실행할 함수 (=지정한 이벤트를 전달받을 함수) 입니다....

25
4월
2019

VS CODE extension for FE

전통적으로 Javascript 개발 환경은 java처럼 복잡한 IDE 대신에 매우 가벼운 에디터로도 충분했습니다. 하지만 현대에는 frontend 개발의 주축이 되면서 매우 복잡해졌기 때문인지 Webstorm과 같은 강력한 IDE로 개발하는 경우도 많아졌습니다. 개발자에 따라 자바스크립트의 개발환경은 새롭고 강력한 IDE를 사용하는 환경, 전통적인 간단한 에디터를 그대로 사용하는 환경… 이렇게 두 분류로 나눠져 있다고 생각하는데요, 물론 이것은 개발 상황, 조직의 상황, 그리고 개인의 취향으로 어떤 것이든 선택할 수 있죠. Webstorm이 IDE계의 왕좌에 있다고 한다면, Visual Studio Code(줄여서 vscode)는 가벼운 에디터를 선호하는 개발자에게 있어 끝판왕이라고 해도 과언이 아니라고 생각합니다. microsoft에서 개발하고 있으며, Update log에 소개되는 추가 기능을 따라가기 힘들 정도로 업데이트가 활발한...

18
4월
2019

코드리뷰를 위한 좋은 코딩 – Javascript 편

코드리뷰(Code review)는 개발자가 작성한 코드를 다른 개발자가 리뷰어가 되어 코드를 검토하는 프로세스를 말합니다. 장점이 많아서 회사 개발 팀 등의 조직에서는 대부분 도입하고 있죠. 사실 혼자서 프로그래밍하고 유지보수를 하고 있다면 개발자 자신이 알아볼 수만 있다면 되는데요. 차후에 이 코드를 알아볼 수 있는지에 대해서는 별개 문제이지만, 어쨌든 다른 사람을 신경 쓸 필요 없이 자신이 편한대로 작업하면 될 일이죠. 하지만 회사에서 여려명이 협업을 하는 경우엔 다릅니다. 자신이 만들었던 코드는 다른 관계자도 모두 알아야 하고, 차후의 인수인계 등 얼마든지 그 코드는 자신을 떠날 수 있기 때문에 깨끗하고 읽기 쉬운 코드를 생산해야 합니다. 하지만 개발자 스스로 코드를 검토하는 것은 한계가...

11
4월
2019

React component updates in 2019.04

React와 함께 주로 사용되는 컴포넌트의 메이저 버전업이 2건 있었습니다. 상태관리를 위한 Redux를 React와 연결해주는 react-redux, 그리고 여러 화면으로 구성되어있는 single-page application 을 만들 경우 필수적으로 사용하게 되는 react-router 입니다. 두 컴포넌트 모두 react 프로그래밍에 있어 필수적으로 사용되는데, 다행히도 둘 다 이전의 메이저 버전과 호환됩니다. 주로 퍼포먼스 개선과 일부 편의성이 개선되었기 때문에, 주의사항만 참고한다면 별다른 migration 없이 package.json 에서 version-up 하면 됩니다. react-redux v7.0.1 버전 6에서 리포트되었던 속도 이슈를 개선하였습니다. 내부적으로는 connect() 함수에서 react 16.8에 추가되었던 Hooks를 사용합니다. 대부분 내부적 개선이 이루어졌고 기존 version 6의 public API와 호환되기 때문에 코드의 변경은 없습니다. 다만 다음과 같은 내용은...

04
4월
2019

HTTP/3 (HTTP-over-QUIC)

QUIC은 Quick UDP Internet Connections 의 약자이며, 전송계층 프로토콜인 UDP 를 기반으로 TCP + TLS + HTTP 의 기능을 모두 구현하는 프로토콜입니다. QUIC 은 “quick”과 동일하게 “퀵”으로 발음합니다. Google에서 2012년에 최초로 개발했는데, 여담이지만 구글에서 개발했던 SPDY 기술이 HTTP/2의 기반 기술이었는데 역시 구글에서 개발한 QUIC이 HTTP/3의 기반 기술이 되었습니다. gQUIC vs QUIC-over-HTTP 현재는 IETF의 quicwg에서 관리하는 QUIC-over-HTTP 와 구글에서 자체 개발한 gQUIC이 분리되어 있습니다. 구글의 gQUIC에서 사용하는 암호화 기술은 TLS 1.3이 아닌 자체 암호화 기술이라는 점이 다른데요, IETF에서 표준화 작업이 진행되는 동안 구글에서도 IETF의 세부 명세를 받아들여 gQUIC을 발전시키고 있습니다. QUIC-over-HTTP to HTTP/3 HTTP/1.1은 1999년에 발표되고,...

26
2월
2009

모바일을 위한 DTD의 종류와 특징

모바일 기기는 다음과 같은 특성을 가집니다. 적은 메모리 용량, 적은 저장 공간, 작은 스크린 사이즈, 느린 CPU, 입력방법의 제한, 전원(밧데리)의 시간 제한 초기의 모바일 기기들은 웹을 사용하기에는 성능이나 메모리, 스크린사이즈가 매우 조악하였기 때문에 모바일 기기에 특화된 언어로 WML(wireless Markup Language)를 사용했습니다. 현재 쓰이는 HTML 과는 차이가 있으며, XML기반으로 만들어졌기 때문에 문법 검사에 매우 엄격합니다. Deck, Card 라는 특이한 개념(페이지와 유사하여, 하나의 WML문서에 여러개의 card를 만들어 여러페이지의 문서를 만들 수 있음)을 제외하면 사용되는 태그는 HTML 과 유사한 면이 있지만, 문법검사가 XHTML과 비슷하여 xml 문법을 따르기 때문에 문법 오류가 자동 수정되지 않습니다. 더 정확하게 하자면 WML 은...