목록개발 (99)
semtax의 개발 일지
개요 파이썬으로 함수형 프로그래밍을 하다보니, 두 dict 자료형을 합쳐서 합쳐진 결과를 반환하는 함수가 없나 찾아보았다. 다행히도 파이썬 3.5 이상부터 이러한 연산을 지원해주는 내장 연산자가 있어서 소개를 해보려고 한다. 사용법 해당 연산자의 사용법은 아래 코드 와 같다. d1 = {'a' : 1, 'b' : 2} d2 = {'c' : 3, 'd' : 4} result = {**d1, **d2} print(result) # {'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4} 활용 파이썬으로 함수형 프로그래밍 수행시에, dictionary의 리스트를 인자로 받아서 해당 리스트..
개요 예전에 작업하는 도중에, 솔루션 인프라 구성을 하기 위해 SQL파일을 실행해야 하는 일이 생겼다. 이때, MySQL에서 SQL을 실행하는법을 찾는데 시간이 좀 걸렸었는데, 까먹을 수도 있어서 블로그에 정리를 하려 한다. 실행하는 법 방법 1 mysql 에 로그인을 한 뒤 "source " 를 쳐주면 된다. ex) mysql> source \home\user\Desktop\test.sql; 방법 2 mysql 로그인시 아래 명령어를 이용해서 SQL 파일에 있는 SQL들을 바로 실행 할 수 있다. ex) mysql -h hostname -u user database < path/to/test.sql
개요 평소에, rabbitMQ에서 계정을 생성하거나 패스워드를 변경하고 나서, 제대로 생성되었는지 확인하는법을 몰라서 rabbitMQ 라이브러리를 이용해서 일일히 프로그래밍을 해서 확인해야 하는 불편한 점이 있었다. 그러던 중, rabbitMQ에서 제공하는 REST API로 바로 확인하는 법이 있어서 공유를 하려고 한다. 확인방법 아래와 같은 명령어를 이용해서 확인하면 된다. curl -i-u : http://localhost:15672/api/whoami 기타 그 외에도 rabbitMQ 에서는 다양한 REST API를 제공한다. 더 자세한 내용은 https://pulse.mozilla.org/api/를 보면 된다. 출처 https://pulse.mozilla.org/api/ https://stackov..
개요 이번 포스팅에서는 온라인 알고리즘을 이용해서 평균값을 구하는 법에 대해서 다루어 보도록 하겠다. 온라인 알고리즘 보통 알고리즘을 이용해서 어떠한 문제를 풀때에는, 보통 문제를 풀때 필요한 데이터를 전부 들고 있어야 한다. 예를 들어서, 100만 개의 데이터를 퀵소트를 이용해서 정렬한다고 가정하면, 메모리에 100만개의 데이터를 미리 가지고 있어야 정렬이 가능하다. 위에서 언급한 이러한 알고리즘을 보통 오프라인 알고리즘(off-line algorithm) 이라고 한다. 하지만, 실제 서비스를 만드는 경우 데이터가 언제/얼마나 들어올지도 모르는 데다가 설사 예측을 한다고 하더라도 데이터의 크기가 너무 커서 메모리에 한번에 다 못올리는 경우가 생긴다. 이러한 경우, 모든 데이터를 들고 있지 않아도 알고리..
개요 이번 포스팅에서는 RDB에 트리구조를 저장하는 법에 대해서 포스팅을 진행하도록 하겠다. 프로젝트를 진행하거나, 소프트웨어 개발을 하다보면 계층형 데이터를 저장 해야되는 경우를 많이 볼 수 있다. 하지만, RDB에서는 기본적으로 트리 구조에 대한 저장 기능을 따로 지원해주지 않는다. (물론 최근 버전에서는 Recursive with 이나, connect by 같은 쿼리문을 이용해서 계층형 쿼리를 작성이 가능하긴 하다. 해당 기능은 추후 포스팅에서 다루도록 하겠다.) 따라서, 트리 구조를 저장할 방식을 고민을 해야한다. 이러한 고민을 하다 나온 아이디어 중 하나가, 바로 Closure Table이다. Tree In RDB : Closure Table Closure Table의 기본 아이디어는 다음과 같..
개요 이번 포스팅에서는 로드밸런싱을 해주는 haproxy에 대해서 알아 보고, 설치를 해보도록 하겠다. haproxy는 오픈소스로 풀려있는 로드밸런서이다. 사실 로드밸런서들은 다른 대체품들도 많기는 하지만, 오픈소스이고 국내에는 잘 안알려진거 같아서 이번기회에 포스팅을 하고자 한다. 컴파일 및 빌드 방법 1. 컴파일 및 빌드 의존성 환경 구축 먼저 컴파일 및 빌드에 필요한 패키지 들을 아래와 같은 명령어를 이용해 다운 받는다. sudo yum install gcc sudo yum install openssl-devel sudo yum install readline-devel 그런 뒤 빌드를 수행할 작업 폴더를 아래와 같이 생성해주고 해당 폴더로 이동한다. mkdir haproxy_work cd hapro..
개요 nginx는 수많은 옵션들을 지원한다, 그리고 많은 사람들이 모듈들을 만들어서 배포하고 있으므로 해당 모듈들을 가져다 써도 된다. 하지만 이러한 모듈들을 사용하려면 사용자가 직접 nginx를 컴파일 해주어야 한다. 따라서, 이번 포스팅에서는 리눅스 환경(CentOS 7)에서 nginx를 직접 컴파일해서 설치하는 법에 대해서 알아보도록 하겠다. 컴파일 및 빌드 방법 1. 컴파일 및 빌드 의존성 환경 구축 먼저 컴파일 및 빌드에 필요한 패키지 들을 아래와 같은 명령어를 이용해 다운 받는다. sudo yum install gcc sudo yum install openssl-devel sudo yum install mercurial 그런 뒤 빌드를 수행할 작업 폴더를 아래와 같이 생성해주고 해당 폴더로 이..
개요 이번 시간에는, 메가박스 알리미 서비스 제작을 위한, django 설치 및 기본 설정을 다루려고 합니다. 설치 python pip 를 이용해서 아래와 같이 설치를 해줍니다. $ pip3 install django 아래와 같이 명령어를 실행했을시, 버전이 출력되면 정상적으로 설치된 것입니다. $ python -m django --version 프로젝트 생성 아래 명령어를 이용해서 django 프로젝트를 생성 해줍니다. $ django-admin startproject megabox_alarm 위 명령어를 실행하면 megabox_alarm 이라는 폴더가 생성되고, 해당 폴더에 들어가면 아래와 같은 파일과 폴더가 생성되어있습니다. manage.py megabox_alarm 각 파일 및 폴더 설명은 아래와..