전체 글

안녕하세요. 사진과 철학에 관심이 많은 웹 프론트엔드 개발자 오원종입니다. 시간이 지나도 꾸준히 읽힐 수 있는 글을 쓰고 싶습니다. 재미있는 일만 하면서 살고 있는 사람입니다.
오랜만에 백준 문제를 풀었다. Brute Force 부터 유형별로 차근차근 풀어보려 한다. 이 문제는 찐 Brute Force 문제이다. Brute Force는 하나하나 직접 다 해보는 방법을 말한다. 일반적으로 이 방법은 시간과 공간을 초과하기 때문에 만능은 아니지만.. 구현 방법이 떠오르지 않을 때는 가장 먼저 시도해 보면 좋은 방법이기도 하다. 이 문제는 5개의 테트로미노를 뒤집고 돌려서 종이에 놓았을 때 차지하는 4칸의 합을 가능한 경우 모두 구해준 뒤 가장 큰 값을 출력하면 된다. 테트로미노는 5개이지만 실제로 우리가 고려해야 하는 테트로미노는 다음과 같이 총 19개가 된다. 그리고 이 19개 각각에 대해 해당 종이(M*N)를 전부 돌면서 발생할 수 있는 모든 경우를 다 탐색해 주어야 한다. 이..
· Dev. Life
화 : [Javascript] 비동기, Promise, async, await 확실하게 이해하기 [Javascript] 비동기, Promise, async, await 확실하게 이해하기 – Under The Pencil 개요 본 글은 자바스크립트에서 Promise 에 대한 개념을 잡기 위해 작성한 글입니다. 자바스크립트의 기본 문법을 먼저 알아야 이 글을 조금 더 수월하게 보실 수 있습니다. 필자는 Node.js 기반에서 elvanov.com 수 : Apollo Client는 Redux와 무엇이 다른가 목 : 리액트의 Hooks 완벽 정복하기 리액트의 Hooks 완벽 정복하기 React Hooks 는 v16.8 에 도입된 개념으로서, 함수형 컴포넌트에서도 상태 관리를 할 수 있는 useState, 그리고..
· Dev. Life
회사에서 업무를 하면서 공부해야 하는 것들이 계속해서 생겨난다. 그러한 주제들을 중심으로 글을 읽었다. 월 : 변경에 유연한 컴포넌트 변경에 유연한 컴포넌트 이번 포스트에서는 변경에 유연하게 대응할 수 있는 컴포넌트에 대해 이야기해보려고 한다 TL;DR 컴포넌트는 데이터를 중심으로 추상화한다. 일반적인 인터페이스로 컴포넌트를 디자인한다. 변 jbee.io 화 : node_modules로부터 우리를 구원해 줄 Yarn Berry node_modules로부터 우리를 구원해 줄 Yarn Berry 토스 프론트엔드 레포지토리 대부분에서 사용하고 있는 패키지 매니저 Yarn Berry. 채택하게 된 배경과 사용하면서 좋았던 점을 공유합니다. toss.tech 수 : MVVM 패턴 MVVM 패턴 나의 첫 디자인 패..
브라우저가 어떻게 웹 페이지를 사용자에게 보여주는 지 그 과정을 자세하게 아는 것은 프론트엔드 개발자에게 꼭 필요한 지식이라고 생각한다. 따라서 면접 때 충분히 물어볼 수 있고, 면접 때 설사 물어보지 않더라도, 실무에서 트러블 슈팅을 할 때 알고 있어야 하는 내용이라고 생각을 해서 나름대로 정리를 해 보려고 한다. 먼저 아래의 그림을 보자. W3에서 말하는 사용자 액션이 발생하고(ex. https://www.google.com 을 브라우저 url에 입력한다) 브라우저가 이를 감지해서 웹 페이지를 아래의 그림 순서대로 로드한다. 여기에서 노란색 부분은 웹 페이지에서 벗어난 후 문서를 읽어들이기 전을 의미하고, 파란색 부분은 자바스크립트 이벤트는 없고 전부 네트워크 레벨에서 일어나는 일이다. 첫 번째 일어..
· Dev. Life
이 기간에는 백신 휴가도 있고, 추석 연휴도 있었어서 2주치를 몰아서 적어 보았다. 월(9/13) : 마이리얼트립 웹사이트 성능 측정 및 최적화 Part 1. 리소스 로딩 마이리얼트립 웹사이트 성능 측정 및 최적화 Part 1. 리소스 로딩 여행 경험을 돕는 웹사이트 가꾸기 medium.com 목(9/16) : 네이티브 앱 → 리액트 네이티브 앱 전환 그리고 1년 후 리액트 네이티브 앱 전환 그리고 1년 후 - 리디주식회사 RIDI Corporation 2020년 2월, 애니메이션 스트리밍 서비스 라프텔에서는 기존에 Android 와 iOS 각각 따로 구현되어 있던 애플리케이션을 리액트 네이티브 를 통해 개발을 통합하여 할 수 있도록 리빌드를 했습니다. ridicorp.com 금(9/17) : Monol..
· Dev. Life
W37 내가 매일 읽었던 글들을 정리한다. 월 : 프론트엔드 테스트의 모든 것 프론트엔드 테스트의 모든 것 저와 같은 사람이라면 개발 워크플로우에서 테스트를 자동화하여 원치 않는 사이드 이펙트를 줄이고 애플리케이션의 품질을 향상하는 것이 중요하다고 생각하겠죠 medium.com 화 : 엔터프라이즈 프론트엔드 애플리케이션 아키텍쳐 엔터프라이즈 프론트엔드 애플리케이션 아키텍쳐 소프트웨어의 수명과 복잡도는 대개 비례 관계입니다. 아무리 정교하고 아름답게 코드를 작성해도, 시간이 지날수록 코드베이스는 복잡해지기 마련입니다. 그래서 우리는 이런 문제들을 마법 medium.com 수 : LINE에서 하루 만에 정적 웹 페이지 개발해서 배포하는 방법 LINE에서 하루 만에 정적 웹 페이지 개발해서 배포하는 방법 - ..
· Dev. Life
매일(월~금) 하루 하나씩 기술 관련 글 읽기 챌린지를 시작했다. 월 : 웹 퍼포먼스 개선을 위한 Lighthouse CI 도입기 웹 퍼포먼스 개선을 위한 Lighthouse CI 도입기 | DRAMA&COMPANY 안녕하세요. 리멤버의 웹 프론트엔드 개발을 하고 있는 한지섭입니다. 최근에는 직장인들의 고민해결을 위한 서비스인 ‘리멤버 커뮤니티’를 개발하고 있는데요, 이번 글에서는 사용자들이 blog.dramancompany.com 화 : What to look for in a code review (Google's Engineering Practices documentation) What to look for in a code review Google’s Engineering Practices docu..
1. 실용주의 철학 1. 고양이가 내 소스코드를 삼켰어요 가장 큰 약점은 약점을 보일 것에 대한 두려움이다. - 보쉬에 1709 실용주의 철학의 초석 중 하나는 경력 향상, 프로젝트, 일상 업무의 면에서 자신과 자신의 행동에 책임을 지는 것이다. 실용주의 프로그래머는 경력에 대해 책임을 지고, 자신의 무지나 실수를 인정하기를 두려워 하지 않는다. 만약 벤더가 끝까지 잘 해내지 못할 위험요소가 있다면 여러분이 그에 대한 대책(contingency plan)을 세워야 한다. 소스코드와 디스크가 다 망가져 버렸는데 백업이 없다면, 그것은 여러분의 잘못이다. 라고 상관에게 말하는 것은 별 도움이 안 될 것이다. Tip 어설픈 변명을 만들지 말고 대안을 제시하라 p32 나쁜 소식을 전하러 가기 전에 뭔가 시도해 ..
DevOwen
오웬의 개발 이야기