글

Start Nodejs product

Start Nodejs Product 아시는 분과 함께 노드를 이용한 프로젝트를 한번 해보기로 했습니다. 노드에 대한 경험이 없는 터라 열심히 검색을 해서 express가 괜찮다는 이야기를 듣고, 프로젝트 구성부터 개발 하는 과정을 공유 하면 좋을 것 같습니다. 글 재주가 별로 없으니 양해 부탁드립니다. Why Node 프로젝트의 특성상 CPU를 많이 쓰지 않고,  I/O 처리가 주로 된 프로젝트라 Node로 해도 무방하다고 생각해서 구성하였습니다. 저희가 사용할 Appium 이란 테스트 툴이 Node로 만들어져 있는 면도 있고, Appium도 결국 API를 통해서 결과 값을 요청하기 때문에, I/O 처리가 많을 것으로 판단하였습니다. 그리고 개인적으로 Node를 해보고 싶었던 부분도 있습니다. Front-End도 개발이 필요하기 때문에 2가지의 언어를 사용하고 싶지 않았습니다. 프로젝트 목표 coverage 100%를 만들자. 모든 코드에 대해 test 코드를 진행하자. 코드 리뷰를 적용해서, 잘못된 코드가 올라가는 것을 방지하자. 글로벌한 오픈소스가 되어보자. 프로젝트 구성 Tools Slack Travis Github Language Node HTML CSS Sass Database ??? Use framework Express Bootstrap - Front-end Sass - CSS Mocha - Test supertest - Test jshint - Lint jscs - Lint Tools 에 대한 회고 Slack pros 통합이 제일 잘 되어 있습니다. 웬만한건 다 연동 가능합니다. 개발자들 사이에서 많이 사용하고 있습니다.  API도 많이 지원을 해서 모니터링으로도 사용가능 할 것 같습니다. cons 무료일 경우 저장되는 메세지 히스토리가 제한...

Algorithm 시작하기

Algorithm 연습하기 더 나은 개발자로 도약 하기 위해서 무엇을 준비해야 할까? 나는 무엇이 부족할까 생각하던 중 알고리즘 이 부족하다 생각해서, 오늘부터 되든 안되든 하루에 1~3개 정도의 알고리즘 문제를 풀도록 노력해 보는 것을 목표로 정했습니다. 만약 못 풀 경우에는 어떤 식으로 접근 했는지에 대해 블로그를 하도록 하겠습니다. 문제는 이전에 알고리즘 스터리를 통해 알게 된 acmicpc 사이트에서 단계별로 풀 생각입니다.

[Python] Django에서 update 명령어 사용시 유의사항

========= Django 에서 `update` 문 사용 시 `auto_now` cloumn이 적용이 update가 안되는 문제가 있습니다. 이유는  auto_now의 경우 save 메소드가 호출 될 때 Datetimefield의 pre_save 메소드를 통해서 날짜 업데이트가 진행 되는데, update의 경우는 save 메소드가 호출 되지 않고, 바로 SQL 레벨로 실행 된다고 하네요.  update 사용하시는 분들은 auto_now의 업데이트가 필요할 경우 명시적으로 날짜를 넣어줘야 반영이 됩니다. =========

MYSQL Json type column

MYSQL Json type column Mysql 5.7.8 에서 부터는 JSON 타입이라는 column이 생겨서 (Javascript object Notation) 을 저장해서 사용할 수 있다. 장점 자동 valdiation 체크 저장 포맷의 최적화 JSON object를 다 읽을 필요 없이 key, value를 찾을수 있습니다. 제한 JSON type의 길이 제한 : 환경변수: max_allowed_packet 을 찾아봅니다. JSON type의 정렬 제한 : max_sort_length 설정 값을 따릅니다. 정보 JSON context의 string format은 utf8mb4 메소드 JSON_ARRAY: JSON Array를 만드는 함수 eg) JSON_ARRAY(‘list1’, ‘list2’, ‘list3’) = [list1,list2,list3] JSON_OBJECT: JSON Object를 만드는 함수     eg) JSON_OBJECT(‘key1’, value, ‘key2’, value) = {key1: value, key2: value} JSON_MERGE: 두개의 JSON Object를 머지하는 함수 eg) JSON_MERGE({x1: v1}, {x2: v2}) = {x1: v1, x2: v2} JSON_EXTRACT: JSON Object에서 key에 해당하는 value의 검색하는 메소드 입니다. $ 를 통해 검색 함, $.{{KEY_NAME}}, $[{{INDEX_NUM}}] 로도 접근 가능 $[] 를 통해 모든 값도 가져올수 있음 ) 파이썬의 values 와 같은 느낌 $*.b를 통해 sub object도 검색 가능 JSON_EXTRACT(‘{“name”: ‘daniel’, “id”: 1}’, $.name) = daniel —검색시 대소문자 구분 : null, true,false 도 예외는 아닙니다. ...

Python Package

이미지
Python Package Introduction package : directory containing python files aim packagers for every target system will be able to repackage your work, the dependencies you have will themselves be repackaged in every target system system dependencies will be clearly described. ` zc.buildout ` 이란 걸 이용하는 ` Plone ` 이란 프로젝트가 나왔으나, OS에 따라서 자동적으로 repackaging 해주지 못함. 그리고 ` MathUtils ` 라는 프로젝트는 version 이름이 ` FumanChu ` (자기가 키우던 2번째  개 이름)로 되어 있어서 알아보기 힘듬 최근 아키텍쳐 Distutils를 사용함 => 위에 문제들을 풀기 위해 나온 라이브러리 Distutils를 베이스로, setuptools, pip, distribute 등이 나옴 Distutils contains command, `setup` function을 사용하여 패키지 함 commands sdist: dist 폴더를 만들고, 그 안에 archive 파일을 넣음 install: package 를 실행할수 있게 third-part 로 설치함 upload: online repository 에 package를 올림 register: metadata 정보를 online repository에 올림 bdist: binary distribution 만듬 bdist_msi: msi 파일로 만듬 flaws 모든 `setup.py` 를 설치하는데에서만 사용할 것 이라는 가정 $ python  setup.py  --name Building lxm...

[ELK] ELK STACK 이란?

ELK STACK 이란 ? Elastic Search + Log stash + Kibana 를 합쳐놓은 것으로 로그 시스템을 구축하는데 필요한 기술들의 앞 글자를 따서 만든 약자이다. intro Log stash 로그 관련 정보를 쉽게 읽고 쓸수 있게 해주는 기술 설정을 통해서 변경 가능 Elastic Search 검색 엔진 web application 제공 해줌 parameter 를 통한 query 제공 여기서는 로그를 읽는데 사용합니다. Kibana 로그 관련된 내용을 visualization 할수 있게 해줌 생각보다 사용법이 어렵다고 함. 들어보기만함 log stash 의 사용법은 간단하기 때문에 http://logstash.net/docs/1.4.0/tutorials/getting-started-with-logstash 에서 간단하게 구성 및 테스트 해볼수 있을 것입니다. 지금까지 ELK Stack 이 무엇이다만 간단히 알았다면, 이것을 가지고 Django 와 붙여서 어떻게 사용할수 있을지를 담부터 구성해보도록 하겠습니다. ​

[Machine Learning] Large Scale Machine Learning

Large Scale Data Machine Learning 이 블로그 내용은 개인적으로 재가 이해한 대로 작성한 내용 입니다. 잘못된 부분이 있으시면 댓글이나 메일 달아주시면 감사하겠습니다. 부탁드립니다. Learning with Large DataSets Stochastic Gradient Descent m(모델의 값)이 많아 졌을 경우 사용하는 방식으로 기존의 Batch Gradient Descent가 m이 있을 경우 1~m까지 순차적으로 돌았다고 한다면 Stochastic Gradient Descent는 기존의 방식과는 동일하고 // b_cost : 기존 Batch Gradient Descent 의 cost Function // s_cost : Stochastic Gradient Descent 의 cost Function s_cost = b_cost / 2 Shuffle한 데이터를 돌면서 세타값을 찾고, 기존의 cost Funtion / 2 를 한 함수를 cost Function으로 사용합니다. 이를 통해 데이터의 평준화??가 좀 더 진행 되어 1~10배 정도의 빠름을 가진다고 합니다. Mini-Batch Gradient Descent Stochastic Gradient Descent 의 경우 m을 그대로 두고 데이터의 평준화를 통해 Large Scale Data의 기계학습을 해결했다면 Mini-Batch의 경우 b라는 batch 인자를 두어 m을 그룹화 하여 m을 줄여 기계학습을 좀 더 빠르게 해결할수 있는 방법입니다. 방법은 기존에 100개의 m이 존재하고 b가 10일 경우 m 은 100/10 개가 존재하게 됩니다. 그리고 cost Function 에서 더해지는 값은 1~10 , 11 ~ 20 , 21~ 30 이런 식의 b 단위로 그룹 지어진 m (i)에 대한 cost Function을 사용해서 계산합니다. b의 값은 2 ~ 100 사이가 적당하다고 합니다. Stochastic Gradient Descent ...