본문 바로가기

전체 글

(89)
Development/기타 Git Submodule을 활용한 공통모듈 관리 들어가며 커리어를 백엔드 개발자로 바꾼지 어느덧 1년이 훌쩍 지났다. 작은 스타트업에서 근무하는 동안 다양한 이슈들이 많았고, 개선하고 싶은 것들도 무수히 많이 쌓여간 반면, 바쁘다는 핑계로 블로그 글은 제대로 작성하지 못했다. 연속되는 신규 기능 업데이트, 전혀 반갑지 않은 버그 픽스, 개발 외 다른 업무 처리 등으로 정말 바쁘긴 빴다... 현재 내가 근무하는 곳은 명확한 업무 프로세스 또는 체계가 없고, 개발적으로만 보더라도 개선하고 싶은 점들이 정말 많다. 혹자는 이런점들이 스타트업의 단점이라고 하고 나 또한 그리 생각하나, 전화위복이라 하지 않았는가? 제대로 된 실적과 실력만 증명한다면 내가 그리던 시스템을 이곳에 적용시켜보고, 그 과정에서 스스로 성장하기 위한 매우 좋은 밑거름이 될 수 있다고 ..
기타 MacOS(맥북) M1, M2로 디아블로 실행하는 방법 들어가며 2023년 6월 6일, 블리자드는 디아블로 4를 공식 오픈했다. 디아블로 오픈 전, MacOS도 지원한다는 찌라시를 어디선가 듣고 설치하려 했으나, 역시나 MacOS를 지원하지 않았다. Macbook Pro 14 M2(RAM 16GB, SSD 1TB)를 구입한지 얼마 안 되어서 Windows PC를 구입하기에는 꽤나 부담스러운 취미가 될 것 같았다. 그러던 찰나에, 문득 "Macbook에서 Windows 프로그램을 실행시킬 수 있지 않나?"라는 물음표가 머릿속에 맴돌았다. 폭풍 구글링 후 약 12시간 정도 걸린 삽질 끝에 현재 맥북으로 디아블로 4를 실행할 수 있게 되었다. 오늘은 이 경험을 토대로 맥북에서 디아블로 4를 실행할 수 있는 방법에 대해서 기술하려고 한다. 설치 과정이 결코 간단하지..
Development/Web [AWS] NestJS & Elastic Beanstalk CI/CD 구축 들어가며 CI/CD 툴에는 Jenkins, Travis, Circle CI 등 다양하게 있지만, 나는 주로 Github Action을 이용하는데, 그 이유는 매우 간편하기 때문이다(위에서 언급한 다양한 CI/CD 툴은 나중에 직접 사용해보고 블로그에 정리하겠다). EB를 선택한 이유 AWS에서 배포 서버를 구축하는 방법으로는 EC2(+ CodeDeploy), Elastic Container Service(ECS), Elastic Beanstalk(EB) 등 다양하게 있다. AWS EB를 알기 전까지는 주로 EC2 인스턴스에서 CodeDeploy를 통해 배포하곤 했는데, Node.js, CodeDeployAgent를 설치하는데 소요되는 시간이 결코 적지 않았다. 따라서, 코드 작성에 조금 더 집중하기 위해..
Development/JavaScript Javascript의 병렬 처리에 관한 견해(동기, 비동기, blocking, non-blocking) 개념 정리 개요 Javascript를 공부해본 사람이라면 단일 쓰레드, 콜백, 비동기, 병렬처리에 대한 내용을 접해본 경험이 있을 것이다. 위의 용어 자체가 추상적이기도 하고, 쉽게 와닿지 않기 때문에 단번에 이해하기에는 꽤 어려운 개념일수도 있는데, 사실 위에서 언급 내용은 모두 연관성이 있기 때문에 Javascript의 동작 방식을 이해하고 나면 전체적인 그림이 그려질 것이라 생각한다. 이번 글은 100% 정확한 사실에 기반한 내용을 정리한 것이 아니라는 점을 참고하기 바란다. 병렬처리에 대한 주관적인 생각 구글링을 하다보면, 'Javascript는 병렬적으로 수행된다'라는 내용을 가끔 확인할 수 있다. 이 내용을 처음 보았을 때에는 '그런가보다'하며 넘어갔었는데, 단일 쓰레드, 콜..
Development/JavaScript JavaScript 위치 및 async/defer 속성에 따른 HTML 렌더링 효율성 위치에 따른 렌더링 시간 웹 브라우저의 역할은 서버로부터 웹 페이지를 이루고 있는 여러 파일을 전달(다운로드) 받은 후 HTML 문서를 위에서부터 한 줄씩 읽으며(parsing) 화면에 보여주는 것이라고 할 수 있다. HTML 파일에는 CSS, JavaScript와 같은 여러 파일이 링크된 상태로 포함되어 있는데, 이러한 파일들은 해당 파일을 링크하는 코드가 읽힌 후 다운로드 된다. 먼저, 웹 브라우저는 이 경우에는 웹 브라우저가 HTML 파싱을 모두 마친 후 JavaScript 파일을 다운로드하기 때문에 앞의 상황에 비해 훨씬 빠르게 웹 페이지를 화면에 나타낼 수 있다. 그러나, 해당 웹 사이트의 주된 컨텐츠가 JavaScript를 통해 생성되는 등 JavaScript에 의존적인 경우 정상적인 웹 페이..
Development/JavaScript JavaScript를 공부하기 전에 알고 있으면 좋은 내용 정리 '역사는 미래를 비추는 거울'이라는 말이 있지 않은가? 따라서, JavaScript를 제대로 공부하기 전에 JavaScript의 탄생 배경, 역사와 일화 등을 간략히 정리해보았다. 이를 통해 앞으로 어떠한 방향으로 웹 개발을 공부해야 하는지 파악하기 위한 정보가 되었으면 한다. 최초의 UI 기반 웹 브라우저 Mosaic의 등장 1993년, 최초로 UI요소가 더해진 Mosaic Web Browser가 등장하였다. Mosaic Web Browser의 개발팀을 이끌던 Marc Andreessen은 대학교 졸업과 동시에 Netscape를 설립하였고, Mosaic Web Browser 보다 다양한 UI 요소가 더해진 NetScape Navigator라는 웹 브라우저를 시장에 내놓았다. 이 당시 모든..
Algorithm/개념정리 탐색 알고리즘(Search Algorithm)의 이진 탐색(Binary Search) 개념 정리 이진 탐색 탐색 알고리즘에는 크게 순차(Linear) 탐색과 이진 탐색(Binary Search)으로 구분된다. 순차 탐색은 특정한 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 확인하는 방법이고, 이진 탐색은 정렬되어 있는 리스트에서 시작점, 끝점, 중간점으로 탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 방법이다. 예시 이미 정렬된 10개의 데이터 중에서 이진 탐색을 통해 값이 4인 원소를 찾는 과정을 살펴보자. [ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18 ]탐색 과정 Step 1 시작점: arr[0], 끝점: arr[9], 중간점: arr[4] (소수점 이하 제거) * * * [ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18 ]찾고자 하는 값(4)이 중간점의 값(8..
Algorithm/개념정리 정렬 알고리즘(Sort Algorithm)의 퀵 정렬(Quick Sort) 개념 정리 들어가며 파이썬을 사용하는 경우 정렬해야 하는 상황에서 sort()를 사용하여 내부적인 정렬을 해주거나, sorted()를 사용하여 정렬된 새로운 값을 받도록 하는 경우가 많다. def use_sort(arr: List) -> List: arr.sort() return arr def use_sorted(arr: List) -> List: return sorted(arr) 이러한 정렬 함수가 내부적으로 어떻게 동작하는지 알기 위해서는 적어도 퀵 정렬 또는 병합 정렬 정도는 알고 있어야 한다고 한다. 따라서, 이번에는 퀵 정렬에 대해서 공부한 내용을 정리해보겠다. 퀵 정렬 퀵 정렬(Quick Sort)에서는 중심점(pivot)과 파티션(partition)이라는 개념이 존재하며, 이는 퀵 정렬의 동작 원리이기..
Development/회고록 항해99 Chapter #2 - 3주차(자료구조 - 그래프, DFS, BFS 그래프 탐색) 정리 들어가며 벌써 알고리즘 2주차가 지났다. 그래프, 특히 DFS를 다루면서 러닝커브가 급격히 상승한 느낌 탓에 좌절을 맞보기도 했지만 LeetCode 기준 Easy ~ Medium 난이도의 문제는 풀 수 있는 수준으로 개념이 잡힌듯 하다. 이번 회고록에서는 그래프와 그래프 탐색 기법인 DFS, BFS에 대해서 간략하게 정리하고, 추후 더 보완해야 할 부분에 대해서 정리하도록 하겠다. 저번주까지만 하더라도 내가 푼 문제를 바로 정리해서 블로그에 업로드 하곤 했는데, 이번주는 문서화하는 과정이 정말 어렵게 느껴졌다. 그 이유 중 하나로는 재귀함수의 추상적인 특징 때문인 것 같다. 문제 하나를 설명하기 위해서는 여러 장의 그림이 필요한데, 짧은 시간에 여러 개념을 접한 탓에 쫒기듯이 문제를 풀다보니 스스로 정리..
Development/Web Nest JS #3 - PostgresSQL에서의 TypeORM(Entity, Repository) 생성 들어가며 이전까지는 Nest JS의 기능을 알아보는데 더 중점을 두기 위해 로컬 메모리 방식의 데이터베이스를 사용하였다. 지금부터는 애플리케이션에 실제 데이터베이스를 연결하고, TypeORM, Entity, Repository에 대해서 정리해보겠다. PostgresSQL 설치 PostgresSQL은 객체-관계형 데이터베이스 시스템으로 전 세계 사용자가 4번째(OracleDB, MySQL, MsSQL, PostgresSQL)로 많은 RDBMS이다. 이는 MySQL에 비해 SQL 표준을 더 많이 지워하며, 쿼리가 복잡할수록 성능면적으로 더 우수하다는 특징이 있다. 영상에서는 로컬에 PostgresSQL을 설치했지만, 나는 Docker Container 환경에서 PostgresSQL을 실행해주었고, DBeav..