SPA에서 안전하게 쿠키(Cookie) 사용하기 들어가며 쿠키(Cookie)는 웹에서 빼놓을 수 없는 존재입니다. 가장 기본적인 인증에서부터 장바구니, 홍보, 유저 추적(Tracking) 등 여러가지 목적으로 광범위하게 사용되고 있습니다. 하지만 막상 사용하려고 하면 복잡한 설정 덕분에 쿠키가 제대로 저장/삭제되지 않거나 안전하지 않은 방식으로 사용하게 되기 일쑤입니다...
[번역] 소프트웨어 테스트 안티 패턴 - 2 이 글은 소프트웨어 테스트 안티 패턴의 두 번째 파트입니다. 첫 번째 파트를 읽지 않으셨다면 먼저 첫 번째 파트를 읽어주세요. 여섯 번째 안티 패턴 - 코드 커버리지에 대한 과도한 집착 코드 커버리지는 비즈니스 관리자가 선호하는 지표 중 하나입니다. 그리고 바람직한 코드 커버리지는 개발자와 관리자 사이의 주요 논쟁 거리입...
[번역] 소프트웨어 테스트 안티 패턴 - 1 이 글은 Kostis Kapelonis의 글 Software Testing Anti-patterns을 번역한 글입니다. 이 글은 메일을 통해 저자에게 허락을 구한 뒤 번역되었으며, 원문은 링크에서 찾아보실 수 있습니다. 들어가며 그동안 소프트웨어 개발 중 발생하는 테스트 안티 패턴에 대한 글을 여럿 보았습니다. 그리고 많...
[번역] MySQL의 ENUM 타입을 사용하지 말아야할 8가지 이유 이 글은 Chris Komlenic의 글 8 Reasons Why MySQL's ENUM Data Type Is Evil을 번역한 글입니다. 원문은 링크에서 찾아보실 수 있습니다. 얼핏 보면 MySQL의 ENUM 데이터 타입은 여러 값 중 허용된 값만 저장되게끔 제약한다는 목적에 가장 부합하는 효과적인 방법처럼 보입니다....
[번역] 서버 I/O 성능 비교: Node vs PHP vs Java vs Go 이 글은 BRAD PEABODY의 글 Server-side I/O Performance: Node vs. PHP vs. Java vs. Go를 번역한 글입니다. 원문은 링크에서 찾아보실 수 있습니다. 애플리케이션의 I/O 모델은 애플리케이션 부하(load)를 처리하는 방식의 차이로 이해할 수 있습니다. I/O 모델을 잘못...
프로그래밍 [번역] 디버깅의 핵심 원칙 Fundamental Philosophy of Debugging 이 글은 Max Kanat-Alexander의 Fundamental Philosophy of Debugging을 번역한 글입니다. 종종 사람들은 디버깅에 큰 어려움을 겪는다. 그리고 이런 사람들은 시스템을 디버깅을 하려면 시스템을 관찰하기보다 문제의 원인에 대해 생각해봐야 된다고 믿는다. 이게 무슨 뜻인지 예를 들어 보자...
Css [번역] 확장성 있는 CSS Css and flexibility 원문: http://mrmrs.cc/writing/scalable-css/ 수 년전부터 나는 확장성 있는 CSS에 대해 고민하게 됐다. 그 때는 친구들이 빌려준 책 몇 권이나 괜찮은 블로그 글 몇 개를 제외하면 지금처럼 참고할 수 있는 자료가 많지 않았다. 당시엔 CSS가 꽤 새로운 존재였고, 대부분의 사람들은 거대한 애...
Node.js Puppeteer를 활용한 에어비앤비 메시지 자동화 안녕하세요? 곰프로입니다. 오늘은 Node.js를 활용해서 웹 브라우저를 제어하고 자동화할 수 있는 라이브러리인 Puppeteer를 소개하고 어떻게 제가 에어비앤비 메시지를 자동화했는지 알아보겠습니다. Why? 에어비앤비는 호스트(임대인)가 게스트(임차인)에게 숙박을 제공하고 돈을 받는 숙박 공유 플랫폼입니다. 그렇기 때...
[번역] 쉬운 도구는 디버깅하기 쉬운 도구다. 이 글은 Martin Tournoij의 글 Easy means easy to debug를 번역한 글입니다. 다수의 의역이 포함되어 있으며, 원문을 읽고 싶으신 분들은 Easy means easy to debug을 참조하시기 바랍니다. 또한 이 문서는 cc-by 4.0 라이센스를 준수합니다. 어떤 프레임워크나 라이브러리, ...
Node.js [Typescript] async array methods async forEach, filter 구현 Node.js의 forEach 혹은 filter는 동기적으로 동작합니다. 그렇기 때문에 async function과 함께 동작하게 만들려면 약간의 트릭이 필요한데요. 아래와 같은 식으로 할 수 있습니다. 1. 먼저 Array.prototype에 새로운 두 메쏘드, asyncFilter와 asyncForEach를 추가해줍니...
iOS [iOS] TabBar shadow 커스터마이징 iOS TabBar의 기본 Shadow를 커스터마이징하려면 먼저 기본 shadow 스타일을 빈 이미지로 초기화한 다음 커스텀 스타일을 적용해야 한다. 그러므로 UITabBarController를 상속하는 CustomTabBarController를 만들고 viewDidLoad에서 스타일을 설정하게 해줬다. 다음으로 기본 그...
Javascript 삽질 기록#1 euc-kr 문자 인코딩, nuxt 앱에서 hash link 사용하기 + 본 게시물은 velog에서도 보실 수 있습니다. 일을 하다보면 금방 해결책이 생각나지 않는 경우가 있다. 그리고 경험상 이런 케이스들은 제대로 정리해놓지 않고 지나가면 까먹을 확률이 높다. 1. EUC-KR 문자 인코딩 웬만한 경우에는 문자 인코딩을 건들 필요가 없다. Third Party api도 대부분 REST a...