전체 글
프로그래밍/Node.js
2020. 4. 5.
[Node.js] Node.js로 SMS 인증번호 시스템 구현하기
최근 대부분의 서비스에서 회원가입 또는 로그인을 할 때, SMS 인증번호를 통한 Auth Check를 하는 경우가 많다. (물론 최근에는 카카오톡 메시지로 인증번호를 전달하는 경우도 많아졌지만) 대부분의 회사에서는 SMS 인증과 관련된 API가 구성되어 있다. 만약, 개별 프로젝트를 진행 중인 상황에서 SMS 인증번호를 통한 Auth 로직을 구성해야 한다면 어떻게 해야할까? SMS 전송 API의 선택 SMS 인증번호 로직을 구현하기 위한 1단계는 문자 전송 API를 선택하는 것이다. 적당한 구글링을 통해 각자의 필요나 상황에 따라 가장 적합한 SMS 전송 API를 찾을 수 있을 것이다. (만약, E-Mail 인증을 택한다면, E-Mail 인증 서비스를 제공해주는 API도 충분히 찾을 수 있다.) SMS ..
프로그래밍/Programming
2020. 4. 4.
[OS] Semaphore(세마포어)와 Mutex(뮤텍스)
기존에 구축해놓았던 프로젝트의 구조 변경이 필요한 순간이 찾아왔었다. 몇 가지 이슈로 인해 Singleton Pattern에 기반한 구조 변경이 필요하였고, 관련 디자인 패턴을 검색하는 과정에서 'Semaphore'라는 공통의 키워드를 발견하게 되었다. 세마포어(Semaphore) 공유된 자원의 데이터를 여러 프로세스가 접근하는 것을 막는 것. Wikipedia의 정의에 따르면 세마포어는 "두 개의 원자적 함수로 조작되는 정적 변수로서, 멀티프로그래밍 환경에서 공유 자원에 대한 접근을 제한하는 방법"으로 사용된다. 세마포어는 일반적으로 비교적 긴 시간을 확보하는 리소스에 대하여 이용하게 된다. Unix 시스템의 프로그래밍에서 OS의 리소스를 경쟁적으로 사용하는 Multi Process 환경에서 액션을 제..
프로그래밍/Database
2020. 3. 29.
[DB] 트랜잭션(Transaction)이란?
Transaction이란? 데이터베이스의 상태를 변화시키기 위해서 수행해야 할 연산들의 집합으로 하나의 작업 처리를 위한 논리적 단위를 뜻한다. 데이터베이스의 상태를 변화시킨다는 것을 간단하게 표현하면, SELECT, INSERT, DELETE, UPDATE의 쿼리를 사용하여 DB에 접근하는 것을 의미한다. 일반적인 경우, 작업 처리의 단위는 한 건의 쿼리(즉 연산)가 아닌 여러 개의 연산이 복합적으로 구성되는 것이 일반적이다. 현재 작성하고 있는 글을 등록하는 작업을 생각해보자. 글의 내용을 작성한 뒤, 등록 버튼을 눌렀을 때 새로운 글이 등록된 최신 글 목록이 보여지는 작업 처리의 단위는 등록할 때의 INSERT와 최신 리스트를 보여주는 SELECT가 하나의 단위에서 구성되는 것으로 이러한 작업의 단..
프로그래밍/Database
2020. 3. 25.
[MySQL] Inner Join과 Left Join의 차이
신입 개발자 면접에서 단골 질문이었다. " Inner Join과 Outer Join의 차이점을 아시나요? " 아마 join과 관련된 차이점을 검색할 때 가장 많이 나오는 이미지가 아래의 이미지일 것이다. 가장 간단하게 표현하면 Inner Join : Table A와 Table B의 교집합을 조회 Outer Join : Table A와 Table B의 합집합을 조회 사물의 이름을 저장하고 있는 table_A와 무게를 저장하고 있는 table_B, 그리고 해당 사물과 무게의 관계를 표현하는 rel_table_a_b 3개가 있는 상황이라고 해보자. Left Join 즉, Left Outer Join을 한 결과는 아래와 같다. select * from table_a as a left join rel_table_..
프로그래밍/Git
2020. 3. 24.
[Git] 효율적이고 효과적인 개발 Process 만들기
Git이란? software 버전 관리 시스템으로 변경사항을 추적하고, 여러 개발자들 간의 작업 사항을 반영 및 공유하는 것을 말한다. 개발자들의 Open Source Platform의 산물인 Github은 분산 버전 관리 시스템(Distributed Version Control Systems)인 Git을 사용하는 Software Project를 지원하는 대표적인 서비스이다. 어떻게 Git을 사용해야할까? Git을 사용하는 방법은 무궁무진하다. googling 또는 youtube 검색을 해보면 git 활용법에 대한 Bast Practice들이 다양하게(생각보다 비슷하다) 나올 것이다. 아래와 같은 의문점이 생길 수 있다. remote repository를 fork해서 사용하는 것이 언제나 좋은 것인지? ..