본문 바로가기

전체 글235

[SQL] SQL join 정리 이전 직장에 있을 때, 플랫폼 업그레이드 프로젝트를 진행하면서 데이터배이스를 옮기는 작업을 도운적이 있었다. 그때는 개발이고 뭐고 아무것도 모르는 상태였지만 어찌저찌 하다보니 SQL을 배워 작업을 한 기억이 난다. NoSQL로 구축된 레거시 플랫폼을 관계형 데이터베이스로 교체해야하는 작업이라 CTO가 진땀을 빼던 기억이 아직 생생하다. 그때의 기억에 따르면 사실... 수 많은 JOIN들 중에 세 가지 이외에는 사용해 본적이 없는것 같다. 우선을 join SQL에 대해 잘 정리가 되어 있는 그림이 있어 포스팅을 해본다. 자유자재로 모든 join을 다룰 수 있으면 좋겠지만, LEFT JOIN INNER JOIN RIGHT JOIN 이 세가지 이외에는 현업에서 사용해 보지 않았던 것 같다. 2021. 12. 20.
[Django] 애플리케이션 생성하기 이전 포스팅에서 장고의 설치 및 환경 세팅을 마치고 프로젝트 파일 생성까지 완료했다. 이번에는 애플리케이션 파일을 생성해보도록 하자. 아직은 프로젝트 파일과 애플리케이션 파일을 왜 따로따로 생성해야 하는지 이해가 잘 되지 않지만, 일단은 한번 해보고 이해를 해보는 시간을 가지려고 한다. 일단은 터미널에 아래와 같이 입력한다. python manage.py startapp 'app name' 그러면 아래와 같이 앱 폴더가 생성된 것을 확인 할 수 있다. 여기서 끝이 아니다. 프로젝트 파일에서 settings.py에 들어가서 INSTALLED_APPS에 생성한 앱을 추가를 해주면 그것으로 모든 준비는 끝난다. INSTALLED_APPS = [ 'django.contrib.admin', 'django.cont.. 2021. 12. 18.
Django 설치 및 실행 준비 Node.js Express 공부와 실습 때문에 잠시 미뤄뒀던 Django 학습을 시작하려 한다. Django 설치 장고 설치를 위해서는 아래와 같이 프로젝트 파일 위치에서 터미널에 입력하면 된다. pipenv install django 여기서 pip이 아닌 pipenv를 사용하는 이유는 가상 환경을 만들어 다른 코드에 간섭이 없도록 하기 위함이다. 라고 구글에는 나와있는데, 한번 왜 그런지 실험을 해보았다. 우선 다른 파이썬 프로젝트에 pip install django로 장고를 설치하고 진행하는 프로젝트 파일에 pip install django를 터미널에 입력했더니 Requirement already satisfied: django in ~ 위와 같은 에러가 나오면서 설치가 진행되지 않았다. 반면 가상.. 2021. 12. 18.
[Algorithm] Powerset 알고리즘 뽀개기 어제 Powerset 알고리즘 공부를 하다 결국 침대에 누워 서럽게 울다 지쳐 잠이 들었다... 나만 이해가 안되는 건가..? 하지만 정신을 차렸으니 다시 한 번 꼼꼼이 파헤처 보도록 하자. 일단은 Poserset에 대한 기본적인 이해부터 해보도록 해보겠다. Powerset = 멱집합 The power set is a set which includes all the subsets including the empty set and the original set itself. 멱집합이란 빈집합부터 원래 요소를 모두 포함한 집합까지의 모든 하위 집합을 말한다. 즉 {1, 2, 3}의 멱집합은 다음과 같다: {}, {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3} Power.. 2021. 12. 14.
[Git] .env 파일을 gitignore 해야하는 이유! Linux 환경변수에 대해 학습을 하다, .env 파일은 절대 git push 하시면 안 돼요!라는 설명을 들었다. 왜 그럴까? 아, 여기서 .env 파일이란 환경변수들이 저장된 파일을 뜻한다. 이 질문에 대한 답변은 stackOverflow의 형님들께서 친절하게 답변을 해 놓으셨다. 출처: https://stackoverflow.com/questions/43664565/why-do-people-put-the-env-into-gitignore/43664611 Why do people put the .env into gitignore? Laravel's official site recommends that we put the .env into gitignore and so to others. Why? I .. 2021. 12. 13.
[Algorithm] D.P Top-Down vs Bottom-up Dynamic Programming에서 최적의 값을 찾기 위해 두 가지의 방법을 사용한다. 바로 Top-Down 방식과 Bottom-Up 방식! 오늘은 이 둘의 차이점에 대해 Deep 하게 파헤쳐 보자. 레츠 기릿! Difference Between Top-Down and Bottom-up Approach 알고리즘은 탑다운과 바텀업 접근법으로 나뉘어 디자인된다. Top-down 접근법에서는 복잡한 모듈이 작은 모듈로 나누어진다. 반면에 Bottom-up 접근법에서는 기초적인 모듈을 점점 합쳐나가는 방식을 이용한다. 알고리즘의 최우선 목표는 데이터 구조 속 데이터를 작동시키는 것이다. 다른 말로 설명하자면, 알고리즘은 데이터 구조속의 데이터 연산을 실행하기 위해 사용된다. 복잡한 알고리즘은 모듈이라고 부르.. 2021. 12. 13.
[Algorithm] Greedy Algorithm 오늘부터 본격적으로 알고리즘 공부를 시작하려 한다. 쫄지마 나 자신...! 우선 그 첫 번째 시작을 Greedy Algorithm에 관한 포스팅으로 시작하려 한다. Greedy Algorithm 이란 무엇인가? 탐욕적 알고리즘(Greedy Algorithm)은 각각의 작은 단계에서 최선의 선택을 내림으로서 전체적으로 최적의 솔루션을 찾아내는 알고리즘 전략을 말한다. 즉 탐욕적 알고리즘은 순간순간마다 결과는 신경 쓰지 않고 최선의 솔루션을 선택하게 된다는 뜻이다. 최선의 아웃풋을 즉각적으로 골라내지만, 전체적인 그림은 고려하지 않기 때문에 '탐욕적'이라고 부른다. 탐욕적 알고리즘은 각가의 단계에서 최적의 해답을 선택하고 끝이 나타날 때까지 다음 단계로 넘어가는 방식으로 동작한다. 각각의 단계에서 선택하는 .. 2021. 12. 13.
[React] Presentational vs Container Component React를 조금 더 심도 있게 들어가거나, 조금 큰 규모의 component를 작성하다 보면 Presentational Component와 Container Componenet에 대해 접하게 된다. 막상 들으면 "뭐지?" 하고 와닿지는 않는데, 알고 보면 아주 쉬운 개념이다. 아래 블로그에 자세히 설명이 되어 있어 번역해 옮겨본다. 출처: https://flaviocopes.com/react-presentational-vs-container-components/ React: Presentational vs Container Components The difference between Presentational and Container Components in React flaviocopes.com Th.. 2021. 12. 10.
[React] State값을 직접변경하면 안되는 이유 React에서 state값을 변경할 때 항상 강조하는 부분은 State를 직접 변경하면 안 된다는 점이다. React를 처음 배울 때는 시간이 없어서 '그냥 그런갑다~'하고 넘겼지만, 오늘은 조금 깊게 왜 그런지 원리를 알아보고자 한다. 위의 이유를 알기 위해서 우선은 'Shallow Equality Check'에 대한 개념부터 이해해야 한다. Shallow Equality Check Shallow Equality Check 개념은 이전 포스팅에서 다루었던, Shallow copy vs Deep copy와 비슷하다. Shallow compare works by checking if two values are equal in case of primitive types like string, numbers .. 2021. 12. 10.
Pure Function React를 학습하다 보면 pure function이라는 개념을 자주 접하게 된다. 오늘은 pure function이 어떤 것을 의미하는지 깊게 파보도록 하겠다. 아래 블로그에 상세히 설명이 되어 있어 번역하여 옮겨본다. 출처: https://medium.com/javascript-scene/master-the-javascript-interview-what-is-a-pure-function-d1c076bec976 Master the JavaScript Interview: What is a Pure Function? Pure functions are essential for a variety of purposes, including functional programming, reliable concurre.. 2021. 12. 7.
[JS] 화살표 함수에서의 "this" 자동 바인딩 React 관련 포스팅에서 화살표 함수에서 this는 자동으로 바인딩된다고 설명을 했었는데, 이것이 의미하는 것은 무엇인지 그리고 관련해서 좀 더 Deep 하게 들어가 보자. 이것과 관련해서 아래 블로그를 번역하여 옮겼으니 참조하시길 바란다. 출처: https://javascript.plainenglish.io/this-binding-in-es6-arrow-function-70d80e216238 How “this” binds in regular functions and arrow functions in JavaScript Arrow syntax automatically binds this to the surrounding code’s context…but what does this mean? javasc.. 2021. 12. 6.
[Redux] Redux의 세 가지 원칙 상태 관리 라이브러리 Redux는 세 가지 원칙이 있다. 이는 리덕스 공식 페이지에서도 한 섹션을 차지할 정도로 근본적인 리덕스의 작동 원칙을 설명하는 것들인데, 오늘은 공식문서에 설명하고 있는 Redux의 세 가지 원칙에 대해 알아보자. Single source of truth '어플리케이션의 글로벌 state는 하나의 store 안 객체 트리에 저장된다.' 이 원칙은 서버의 state를 별다른 코딩 작업 없이 serialize 하고 데이터를 공급하는 전체적인 애플리케이션 제작이 쉽도록 해준다. 또한 하나의 state 트리는 디버깅에 유리하고 빠른 개발 사이클 속에서 애플리케이션의 state 유지에 도움을 준다. 예를 들어, 이전에는 구현하기 어려웠던 undo/redo와 같은 기능들이 하나의 트리에 s.. 2021. 12. 6.