본문 바로가기
반응형

분류 전체보기116

Shell script로 Backup 기능 작성 어떠한 웹 서비스를 운영하다보면 자동화 하고 싶은 정~~~말 단순한 업무가 생긴다.리눅스에 익숙치 않지만 간단한 쉘 스크립트를 만들어서 자동화 해보고 싶은 생각이 들었다. 아래는 단순한 작업의 예이다.운영중인 소스 백업새로운 소스 배포 재시작위의 작업 목록 중 첫번째와 두번째를 쉘 스크립트 대체 하기 위해 리눅스 쉘 프로그래밍을 대학졸업 이후 처음 작성해 보았다... 01. vim 편집기 사용굳이 vim편집기로 프로그래밍을 할 필요는 없지만, 손에 익힐 겸 vim 편집기로 스크립트를 작성한다. 아래는 많이 쓰는 기능이다.line number 표시 : ESC -> SHIFT + ; -> set number 입력찾기 : ESC -> / -> 찾을 단어 입력끝에서 찾기 : ESC -> ? -> 찾을 단어 입력.. 2019. 3. 15.
NodeJS 콜백을 사용한 비동기 제어 흐름 패턴 참고문헌 : NodeJS Design Pattern Second Edition 동기식 프로그래밍 스타일을 사용하다가 Node.js와 같은 비동기 api일반적으로 사용되는 플랫폼에 적응하는 것은 쉽지 않다.일반적인 실수 하나가 call back hell이다. 간단한 동작도 가독성이 떨어지게 하고, 관리하기 힘들게 한다. 아래와 같은 방법을 통해 비동기 코드를 얼마나 쉽고 간단하게 만드는지 알아본다. - 규칙과 패턴을 적용- Async같은 제어흐름라이브러리를 활용 01. 비동기 프로그래밍의 어려움불행히도 모듈화, 재사용성, 유지보수성과 같은 특성을 희생시키면 금방 콜백이 중첩되고 코드가 엉망이된다. 01-1. 간단한 웹 스파이더./index.js12345678910111213141516171819202122.. 2019. 3. 9.
OAuth2.0에 대해서 이것만은 알고 가자 OAuth2.0 이란 Open Authentication, Authorization의 약자로 인증/인가에 대한 표준프로토콜이다.흔히 웹브라우저를 통해서 쇼핑몰 사이트, 이벤트 사이트 등을 접속하여 어떤 작업을 하려고 하면 인증에 대한 요구에 직면하게 되고요즘 sns를 통해서 인증을 대체하기도 한다. 이미 기기에서 로그인을 한 상태라면 위의 그림에서 보이는 "xx로 로그인" 버튼 클릭만으로 인증을 받을 수 있다.저런걸 OAuth2.0라고 말하는건 아니다. 저건 단순히 특정 사이트에서 네이버, 페이스북, 구글 등의 Open API를 사용 한 것이고대부분의 Open API 제공 서비스는 OAuth2.0 형태로 인증서버와 리소스 서버를 따로 구성해서 제공할 것이다. 만약 네이버, 페이스북 등과 같이 api를 제.. 2019. 3. 4.
NodeJS 동작 방식과 개념 정리 01. NodeJS 란?NodeJS란 싱글 스레드 기반으로 동작하는 고성능 비동기 네트워크 서버이다.기반언어는 자바스크립트이다. NodeJS가 자바스크립트로 만들어졌다는게 아니라, 자바스크립트로 프로그램을 작성한다는 의미이다. NodeJS는 C++로 만들어졌으며, 비교하자면 JVM과 같은 런타임이다.(JVM의 특징과는 많은 차이가 있다.) 02. 웹브라우저 엔진(V8)과 NodeJS자바스크립트는 웹브라우저에서 동작하는 언어이다. NodeJS는 웹브라우저에서 사용하는 자바스크립트 엔진을 따로 구성시켜 자바스크립트로 프로그램을 돌린다는 것이다.NodeJS의 엔진구조를 검색해보면 다양한 이미지들이 나온다. 03. 싱글스레드와 비동기JVM에서 구동하는 애플리케이션은 스레드나 프로세스를 만들어 동작하는 방식이다... 2019. 3. 2.
Elastic{ON} 서울 투어 2/22 Elasticon{ON} 서울투어(2/22) 행사에 참여했다.참여하게 된 계기는 회사 상사의 지목(?)이었고, 연구원 2명이서 그렇게 첫 IT컨퍼런스에 참석하게 되었다. 나는 이런 컨퍼런스 성격의 행사나 기술 세미나에 참가하는 것을 매 순간 학수고대 해왔을지도 모른다.이제 4년차 웹개발자로 어느정도 내가 가진 기술에 대한 자부심도 가진듯..는 아직 멀었지.저러한 신기술 관련 발표회나 다른 동료들이 공유하는 대세의 기술들은 접할 때 마다 부족함을 느낀다. 그러기에 다른 사람들이 경험해보고 실무에 적용해보는 것들은 수박 겉핡기식이라 할지라도 배우거나 학습하고 넘어가고 싶었다. 그리고 우연히 Elastic{ON} 행사를 참가 하게 되었다. Elastic{ON} 서울투어는 작년에도 진행 되었었으며, 무료로 참석.. 2019. 2. 22.
NodeJS 인기있는 Logging 모듈 Winston Nodejs로 Express 서버를 만드는데 Debugging 용도로 console.log를 사용했었다. 그냥 이게 편하고 익숙해서...ㅎ 하지만 Project를 실제 수행하다보면 서버의 동작을 파악하거나 오류를 찾아야 할때 로그파일을 뒤져보는 것이 가장 1순위일 것이다. Nodejs로 Log를 남기고 관리하는 모듈은 많이 있다. morgan, winston 등등... 두가지를 함께 사용하는 것도 가능하다. 하지만 여기서는 가장 인기 있는 winston 라이브러리를 사용하는 방법을 간단하게 소개한다. 01. npm으로 설치하기아래 명령어로 설치 가능하다. 1npm install --save winstoncs 02. winston.js 작성로그를 관리하는 모듈을 따로 패키지 형태로 작성하려한다.우선 아래와.. 2019. 2. 20.
Python_bson을 json으로 바꾸는 방법 bson이란 Binary JSON의 약어로 Binary로 인코딩 된 JSON을 뜻한다. MongoDB에서 document가 BSON 형태로 저장되고 (마찬가지로 pymongo 같은 라이브러리로 document를 조회해보면 BSON으로 반환 된다.) json으로 바꾸려면 bson.json_util을 사용하면 된다. 1234567891011121314151617181920212223242526272829303132333435from pymongo import MongoClientimport tracebackfrom bson.json_util import dumps host = 'localhost'port = 27017 def main(): try: client = MongoClient( host=host, .. 2019. 2. 14.
Python_pymongo 간단 사용법 Python으로 Mongodb를 커넥션하여 사용할 때 가장 많이 사용하는 라이브러리가 바로 pymongo이다.mongodb 기능을 많이 사용 할 수 있고(Index, Aggregate, ClientSession과 Transaction 등등)문서도 잘 정리되어 있는 편이다. https://api.mongodb.com/python/current/ 01. pip 명령어로 pymongo 설치아래 명령어로 설치 할 수 있다.1python -m pip install pymongocs * 공식문서에 보면 bson 패키지 설치하지 말라고 한다. pymongo가 기본적으로 bson 패키지를 내포하고 있고, 만약 설치하게 되면 서드파티 모듈 의존성 문제가 생길수 있다고 한다. 02. 코드 작성간단하게 아래와 같은 코드를 .. 2019. 2. 12.
NodeJS validate로 요청 데이터 검사 웹서버를 만드는데 요청 데이터 검사를 간편히 해주는 모듈이 있다. 바로 validate다. https://www.npmjs.com/package/validate validate 이외에도 validator, express-validator 등 요청 스키마 검증 모듈을 많이 있는듯 하다.(validator는 가장 많은 다운로드수를 기록하고 있었지만, 단순히 json형태의 data만 다룬다고 생각하고, json 스키마를 간단히 검사할 수 있는 걸 찾다보니 validate를 택하게 됬다... 과연 베스트 일지는 잘..) (아래 방법은 node 프로젝트가 이미 존재 한다.) 01. vaildate 모듈 설치아래 명령어로 설치 가능하다.1npm install validate --savecs 02. 코드 작성예를 들.. 2019. 2. 11.
NodeJS Express 간단한 서버 만들기 이전 포스트에서도 Express를 사용해본적이 있지만... 정리 할겸 다시 한번 01. Express란?Node로 http 서버를 개발 할려고 하면 Express 모듈을 사용하면 간편히 할 수 있다.완전 생짜에서 시작할려면 뭐 이것저것, url path mapping, 세션관리 등 할꺼 많고 복잡하게 구현해야할 것을 Express는 간편히 구축 할수 있도록 도와준다. 특징은 아래와 같다.견고한 라우터고성능높은 테스트 커버리지redirect, caching 다수의 템플릿 엔진 지원컨텐츠 네고시에이션(?)신속한 앱 개발 간단하게 npm으로 설치 후, nba 선수 프로필을 제공 하는 기능을 만들어 보자.(nba라는 npm 패키지 사용) 02. express 설치아래 명령어로 express 설치 가능하다. (제.. 2019. 2. 11.
Docker compose로 Nginx + Web앱 띄워보기 Step1. Docker로 Nginx 서비스 띄우기먼저 아래 명령어로 nginx이미지를 다운로드한다. 1docker pull nginxcs 그리고 run으로 실행시켜보면 1docker run --name nginx-server -d -p 80:80 nginxcs 127.0.0.1로 접속해보면 위 사진과 같이 잘 뜨는걸 확인 할 수 있다. 하지만 docker container로 nginx만 따로 띄우게 되면 다른 어플리케이션과 연동 시킬 때 container 간 연결을 맺어줘야(?)하는 번거로움이 있다. 또한 여러 어플리케이션이 상호작용하는 상황이라면 관리가 더욱 어려울 것이다. Docker compose는 docker container 여럿을 띄워 관리하는 도구로서 하나의 파일 docker-compose.. 2019. 1. 6.
2018 Log 2018년 회고록 마지막 주말.2018년 마지막 주말을 보내고 있다.여러 개발자들이 회고록 쓰는것처럼 나도 처음 써볼려고한다.(글을 논리적으로 못써서 자주 써야할듯..ㅜ) 올해로 웹개발 경력 만 3년을 채우게 되었다. 2018년은 나름 뜻깊은 한해였다.나이 앞자리가 2에서 3으로 바뀌고...처음으로 블로그를 써보고...그 무엇보다.내가 하는 일에 대해서 '관심'을 가지게된 한해였다. 2018 목표.2018년에 일로만 봤을 때 3가지 목표를 잡았었다.이직을 위한 나의 가치 높이기토이프로젝트(웹페이지 제작)일주일 5시간 이상 학습 사실 위의 목표를 한마디로하면, "개인 시간을 개발 및 학습에 투자하자"였다. 결과적으로 위의 목표 3가지는 전부 이루지는 못했다. 여름즈음에 계획이 조금 바뀌었기 때문이다. 경력.. 2018. 12. 30.
반응형