전체 글

    [Git] pull 대신 fetch 사용하기

    pull, fetch는 모두 원격 저장소의 커밋을 로컬 저장소로 가져오는 역할을 합니다. 다만 차이점은, pull은 fetch + merge 작업이 동시에 발생합니다. 아마 당연하게도 fetch를 습관화하는 분들이 있을 것 같습니다. 저 또한 조금은 불편하지만 안전성이 좋은 fetch를 추천하고 싶습니다. Pro Git에서 많은 인사이트를 받았습니다. fetch fetch는 원격 저장소의 커밋들을 로컬 저장소로 가져옵니다. 하지만 코드의 merge 과정은 발생하지 않아 로컬 저장소의 내용이 변경되지 않습니다. 그래서 fetch 이후의 행동이 자유롭다는 장점이 있습니다. 주로 merge 하기 전 신중함이 필요한 상황에서 fetch를 사용하면 좋습니다. pull pull은 원격 저장소의 커밋을 가져오는 동시..

    [독서] 개발자의 글쓰기

    블로그를 운영하면서 글 쓰는 것이 막연하다는 생각을 자주 했습니다. 그러나 이 책을 통해 개발자의 글쓰기는 기술적, 단계적으로 훈련이 가능하다는 것을 알았습니다. 유익한 내용이 굉장히 많았던 책이어서 대여해서 읽은 뒤 바로 구매했습니다. 👍 개발자의 글은 정확하고 간결하며 가독성이 높은 글로 정의할 수 있습니다. 그리고 이 책은 변수명부터 문서까지 전반적인 글쓰기 기술들을 소개하고 있습니다. 개인적으로 느낀 이 책의 핵심 포인트가 2가지 있습니다. 첫째, 개발자의 글쓰기는 일련의 추상화 과정과 닮았다는 것 둘째, 무엇보다 독자를 고려하면서 써야하는 것 이 2가지 본질을 항상 기억하면서 글을 쓰다보면 나만의 글쓰기 철학이 생길 것입니다. 두괄식 두괄식은 먼저 핵심과 결론을 주장하고, 뒤에 근거와 설명을 풀..

    [React] SOLID 원칙을 컴포넌트에 적용하기

    좋은 컴포넌트 설계는 정답이 없습니다. 그래서 어렵죠.저 또한 많은 시행착오를 겪으면서 여러 개념들을 찾아 공부하게 되었습니다.그러다 객체지향에서 좋은 해결책을 얻게 되어 이를 정리해보고자 합니다.가장 먼저 SOLID 원칙을 알아보며 이를 컴포넌트에 적용해보도록 하겠습니다.아래 자료들을 참고했습니다.Eduardo Moniz의 Applying SOLID To ReactJuly 2020 React Lunch & Learn: SOLID Principles in React로버트 C. 마틴의 Clean ArchitectureApplying SOLID principles in React 1️⃣ 단일 책임 원칙 (SRP, Single Responsibility Principle)개념하나의 모듈은 하나의 액터에 대해서..

    [독서] 공간의 미래

    이 책은 코로나로 인해 공간이 겪은 변화와 미래에 대해 설명합니다. 그래서 책의 내용들은 개인보다는 국가의 과제에 가깝습니다. 하지만 이 책이 던지는 본질에 대한 질문은 충분히 좋은 인사이트가 되었습니다. 본질은 변하지 않는다 확실히 코로나는 세상의 변화를 가속화시켰습니다. 하지만 코로나가 바꾼 것은 삶의 형태이지, 삶의 본질이 아니라 생각합니다. 오히려 코로나는 우리가 본질적인 것들에 대해 생각해볼 기회를 제공합니다. 집은, 학교는, 회사는 무엇인가? 그리고 이들은 무엇을 추구해야 하는가? 더 나아가 나는 어떤 사람인가? 나에게 중요한 가치는 무엇인가? 세상의 변화 속에서도 본질은 변하지 않습니다. 그래서 급변하는 세상 속에서 본질을 이해하는 것이 중요합니다. 본질을 알면 변화를 이해할 수 있고 변화에..

    [독서] 물고기는 존재하지 않는다

    책의 완성도, 책이 주는 메시지가 손에 꼽을 정도로 좋았던 책입니다. 그리고 제목부터 호기심을 유발하는 책이기도 합니다. 책은 조금 어렵지만, 삶의 의미에 대해 고민하는 분들은 한 번 읽어보기를 추천합니다. 자연은 무질서하다 자연의 뜻은 "스스로 그러하다" 입니다. 즉, 사람의 힘이 더해지지 않은 무질서한 상태가 곧 자연입니다. 열역학 제2법칙에서도 "무질서로 향하는 것"을 자연현상이라고 정의합니다. 종종 저는 이런 생각을 합니다. "인간이 과연 자연에 기준을 세우고 질서를 만들어낼 수 있는가?" 물론 이러한 시도 덕분에 과학 등 다양한 분야가 발전한 것도 사실입니다. 하지만 인간이 세운 기준들을 무조건 신뢰해야 할까요? 이 책에 의하면, 신뢰하지 않고 의심해야 합니다. 역사는 변증법을 통해 발전했고 앞..

    [독서] 함께 자라기 - 애자일로 가는 길

    '나는 애자일 하게 개발하고 있는가?' '더 나아가, 나는 애자일 하게 살아가고 있는가?' 이 책이 제게 던진 메시지였어요. 책의 제목이 말하듯, 애자일은 함께, 그리고 자라기를 강조해요. '정답이 없는' 개발이라는 업무 특성상 '애자일 철학'은 개발과 잘 어울려요. 애자일의 빠른 피드백을 통해 실수를 교정하고 성장할 수 있기 때문인데요! 책에서 제가 인사이트를 받은 내용은 정말 많았어요. 다만 이 글에선 책 내용을 전부 적지 않고 인상 깊은 내용을 몇 가지 정리해볼게요. 의도적 수련 '의도적 수련'은 기량을 향상시킬 목적으로 반복적으로 하는 수련을 의미해요. 흔히 알고 있는 '1만 시간의 법칙' 또한 단순한 경험이 아닌, 이 '의도적 수련'이 필요하다고 말하죠. 그리고 '의도적 수련'은 '애자일'과 함..

    [회고] 인프런 첫 번째 네트워킹 데이, 심야 FE 후기

    인프런 네트워킹 데이 행사인 심야 FE에 다녀왔습니다. 좋은 강연과 함께 좋은 사람들을 많이 알게 되어 너무 의미 있는 시간이었습니다. 이 글은 행사 자체보다는 제 생각을 정리하는 글이 될 것 같습니다. 😊 가자 인프랩으로! 인프런은 제가 좋아하는 서비스이고, 이동욱(향로)님이 CTO로 계신 곳이라 관심이 많았습니다. 게다가 높은 경쟁률에도 불구하고 친구와 함께 당첨이 되어서(!) 엄청 기분이 좋았습니다. 😆 평소 판교의 업무 분위기가 궁금했기 때문에 인프랩 오피스에 일찍 도착했습니다. 가장 먼저, 심야 FE 행사 장소였던 타운홀이 눈에 띄었습니다. 토론의 장을 펼치거나, 발표나 행사를 진행하는 등 다양한 공간으로 활용하기 좋았습니다. 업무 환경으로부터 더 좋은 성과가 나올 수도 있겠구나.. 라는 생각이..

    [TypeScript] 유틸리티 타입 구현하기 (Utility Types)

    TypeScript이 제공하는 다양한 유틸리티 타입에 대해 정리하고자 합니다. 내부 로직 크게 어렵지 않기 때문에 자주 쓰이는 유틸들은 직접 구현해보는 것을 추천합니다. (면접 때 물어봐서 당황했던 기억이 나네요 😅) 💡 용어 정리 T : 타입 U : 또 다른 타입 K : 속성(key) Partial T의 모든 프로퍼티를 선택적 프로퍼티로 변경한 새로운 타입을 반환합니다. 구현 type Partial = { [P in keyof T]?: T[P]; }; keyof T는 T의 모든 키 값을 가지는 유니온 타입을 의미합니다. 인덱스 시그니처 문법이 아직 익숙지 않으면 이 글을 참고하면 좋습니다. 예시 interface User { name: string; age: number; } interface Part..

    [TypeScript] 제네릭 (Generic)

    제네릭은 타입을 일반화하여 재사용성을 높이는 프로그래밍 기법입니다. 이를 통해 함수, 클래스 등을 다양한 타입에 대해 범용적으로 사용할 수 있게 됩니다. 제네릭 (Generics) 제네릭은 타입을 선언 시점이 아닌 생성 시점에 결정하는 프로그래밍 기법입니다. 이를 통해 함수, 클래스, 인터페이스 등을 다양한 타입에 대해 재사용할 수 있습니다. 제네릭의 기본 구조와 호출 방식은 다음과 같습니다. T는 Type의 약자로써 주로 관용적으로 사용하는 타입 변수입니다. function getValue(value: T): T { return value; } getValue('hello'); getValue(10); getValue(true); 둘 이상의 타입 변수는 주로 T 다음의 알파벳 순서대로 표현합니다. fu..