본문 바로가기

전체 글

늦봄, 해와 함께하는 시간이 길어질때 즈음 꽃구경을 가면 아이와 함께 나온 부모들을 볼 수 있다 부모들은 아이가 꽃을 집어들면 이쁘다지만 꽃이 자리잡은 흙은 지지라고 하더라 왜일까 아, 하나쯤은 알겠다 사람도 그렇더라 모두가 꽃만 보기에 그 밑의 흙은 보이지 않았겠지 꽃이 꽃이 되기 위해선 더 많은 꽃잎을 피워내기 위해선 더 많은 흙에 깊게 뿌리내려야 했는데 말야 흙이 있었기에 꽃이 피었다 그 사실 하나만은 알겠다 더보기
객체 지향 설계 원칙 SOLID는 뭘까? 객체지향적으로 설계를 할때, 지켜주면 유지보수하기에 좋은 원칙이다. 즉 생산성을 유지, 향상시키는데 도움을 줄 수 있다.왜 유지보수를 할까? ⇒ ‘소프트’웨어다. 하드웨어와 달리 처음 그 설계를 유지하지 않고 변경될 가능성이 있다.객체에게 데이터를 요구(ask)하지 말고 직접 하게 만들어라.데이터는 가급적 캡슐화하는 것이 좋다. 즉 정보를 제한시켜 결합도를 낮추는 것이 유지보수에 도움이 된다. 단일 책임의 원칙 (Single Responsiblity Principle)하나의 클래스는 하나의 책임을 가지는 것이 좋다.there should never be more than one reason for a class to change again.또는 A class should have one, and only.. 더보기
Growth Developer를 읽고 요근래 커뮤니티나 아티클을 읽어보면 성장에 관한 글이 많습니다.때문에 많은 분들이 성장에 대한 고민이 많은데요.저 역시도 방향을 어떻게 수립해야 하는지, 어떻게 접근하면 좋을지 많은 고민을 했던 때에 접하고 도움받았던 책입니다. 책은 크게 다섯 가지로 나누어 꾸준히 성장하는 개발자가 되는 방법을 넌지시 알려줍니다.마음가짐, 문제해결, 개발, 협업, 차별화가 그 다섯인데요.하나씩 차례대로 살펴보겠습니다. 마음가짐첫 번째로 가져야할 마음가짐은 `문제의 원인은 바로 나에게 있다`입니다.문제의 원인을 외부에서 찾으려하는 마음가짐 대신, 내부에서 출발하면 빠르게 문제의 본질에 도달할 수 있다고 일러줍니다.이 책을 접하기 전, 도널드 고즈와 제랄드 와인버그의 `대체 뭐가 문제야`를 읽었던 터라 더 다가왔던 구절입니.. 더보기
일기예보 구현에 기상청 API를 사용해봤던 건에 대하여 (1) 목차서론본론요구사항 분석구현 방법 결정구현결론서론저는 현재 10월부터 간단한 서비스에 대한 외주 프로젝트를 시작하여 슬슬 마무리 지어가고 있습니다.농부 분들이 서로 정보를 공유하거나 작물 생육에 도움이 되는 정보를 제공하는 서비스인데요.이번 글은 서비스를 만들어 나가며 가장 빈번하게 변경이 발생했던 일기예보 기능과 관련해 서비스를 개선시켰던 과정입니다.이번 글에서는 초기 기능 구현 과정을 다루고자 합니다. 간단한 서비스라 백엔드 개발자가 저뿐이어서 문제해결 과정이나 결과가 미숙할 수 있습니다.관련한 부분 피드백을 댓글로 남겨주시면 감사하겠습니다. 본론요구사항 분석 및 명세 도출기능 개발에 앞서 가장 중요한 절차로 먼저 클라이언트 측의 요청은 다음과 같았습니다.기상청 API를 이용한 오늘의 날씨 및 2일간.. 더보기
대체 뭐가 문제야?를 읽고 서론개발자가 되기 위해서 공부를 하다보면 알고리즘, 컴퓨터과학 등 다양한 분야를 학습하게 됩니다.그 중에서도 귀에 못이 박히도록 듣는 얘기가, 문제해결력이 정말 중요하다는 점인데요.저는 그 추상적인 개념 때문에 문제해결의 가장 쉬운 구체인 알고리즘에 집중하는 잘못된 선택을 하곤 했습니다.때문에 기술을 도입하거나 이슈가 생겼을 때, 검색을 통해 사례를 찾아 해결하였고 이는 종종 오버 엔지니어링이 되는 등 적절치 못한 선택이 되는 경우가 있었습니다.이런 문제를 나름 분석하고 해결방법을 도모한 결과, 문제해결력을 기르기로 했고, 그렇게 선택하게 된 책입니다. 본론책은 구체적인 사례를 예시로 들며 추상적인 개념에 천천히 접근합니다. 그리고 이 과정에서 독자를 문제해결사로 정의하고 이 사례들을 어떻게 해결해나갈 .. 더보기
V8은 메모리 영역을 어떻게 관리할까? 들어가기에 앞서이 글은 Node.js 런타임 환경 기반에서 프로젝트를 진행하던 때, V8 엔진의 메모리 관리 방식에 궁금증이 생겨 찾아본 글을 번역하며 정리한 내용입니다.목차V8의 메모리 구조Heap MemoryStack Memory실제 코드에서 메모리는 어떻게 사용될까?V8 메모리 관리마이너 GC메이저 GCV8의 메모리 구조 JavaScript는 단일 스레드로 동작하며 V8 하나의 JavaScript 실행 컨텍스트를 위해 싱글 프로세스를 사용한다.V8 프로세스에서 실행중인 프로그램은 위 그림에서 보듯 Resident set라고 부르는 할당된 메모리 형태로 표현된다.크게 Heap과 Stack으로 구분할 수 있으며 차례대로 각 영역에 대해서 살펴보자.Heap Memory객체나 동적 데이터를 저장하는 곳으로.. 더보기
2024년 회고와 2025년 신년 목표 2024년엔 무슨 일이 있었을까학습에 힘쓰려 했다2월에 산업기능요원이 종료되기 때문에 본격적으로 이직을 위해 기술 계발에 힘쓰고자 했다.가급적 노션에 먼저 정리를 해놓고, 시간이 될때마다 Github 레포지터리에 따로 옮기는 식으로 책을 읽고 정리해 가져가고자 했다.  올해 읽은 책 중에서 가장 기억에 남는 책은 단위 테스트였는데, 그 이유는 내 예상과 가장 많이 달라서다.앞선 문장을 읽고 다음 문장을 예상했을 때, 항상 뻔하지 않은 답변을 준 책이었다. 그래서 정말 좋았다.그래서 내 기준 꼭 읽어봐야하는 책에 해당하는 분류인 혁신 서적을 줬다. 외에도 코드 컴플리트라는 책을 접하게 되어 읽었는데, 많은 스킬을 익힐 수 있어서 꽤나 두꺼웠음에도 좋은 시간이었다. 그리고 개발 책 외에도 습관의 힘, 데일 .. 더보기
Real MySQL 8.0 1권을 읽고 (3) 목차08. 인덱스디스크 읽기 방식인덱스란?B-Tree 인덱스R-Tree 인덱스전문 검색 인덱스함수 기반 인덱스멀티 밸류 인덱스클러스터링 인덱스유니크 인덱스외래키09. 옵티마이저와 힌트 & 10. 실행 계획개요08. 인덱스데이터베이스 쿼리의 성능을 언급하면서 빼놓을 수 없는 부분이다.디스크 읽기 방식순차, 랜덤 I/O 방식이 존재하며 데이터베이스에서는 보통 랜덤 I/O의 비중이 더 크다.인덱스란?색인, 지표 등으로 번역되는 인덱스는 조회 성능을 향상시키는데 주요한 역할을 하는 기능이다.다만 이때, 조회 성능을 위한 데이터 정렬, 유지 비용 등이 발생하기 때문에 저장 성능에는 악영향을 끼친다. 따라서 너무 많아도 좋지 않다.인덱스의 종류는 역할(프라이머리/보조), 저장 방식(자료구조), 데이터 중복 허용(유.. 더보기