글

웹엔진 코아 기술 해부_AMP(Accelerated Mobile Pages), HTTP/2 후기

이미지
웹엔진 코아 기술 해부_AMP(Accelerated Mobile Pages), HTTP/2 후기 ononffix에서 AMP와 HTTP/2에 대한 좋은 세미나가 있어서 6월 15일에 참여하게 되었습니다. 그 내용이 너무 좋아서 내용도 남길 겸 후기를 쓰게로 하였습니다. 해당 모임은 AMP와 HTTP2에 대한 내용이였습니다. 세션은 3개였고,  하나는 Building a new AMP Component 를 진행하고 다음엔 HTTP/2를 만난 HTML5  를 마지막에는  패널토의 세션을 통해서 사람들끼리 자유롭게 이야기를 할수있는 세션이였습니다. 세션당 1시간씩 진행 되었습니다. Building a new AMP component 세션에서는 AMP란 무엇이고 AMP를 어떻게 사용하는지, AMP에 필요한 component를 어떻게 만들고, 적용할수 있는지에 대한 이야기였습니다. AMP란? (Accelerated mobile pages)  모바일에서 페이지를 보는 사용자가 늘어나면서, 그것을 최적으로 보여주기 위해서 사용하는 기술.  새로운 기술이 아닌 기존에 나와있는 기술을 잘 정제하고 조합해서 보다 빠른 모바일 페이지를 제공하기 위한 기술이고 Google에서 진행중입니다. AMP의 장점은 두가지가 있는 것 같습니다. 첫번째는 사용자가 모바일 페이지를 최적의 환경에서 가장 빠르게 볼수 있다. 두번째는  AMP 페이지에 대해서 구글이 검색 상단에 노출 시켜줘서 페이지에 좀더 많이 접속할수 있도록 해준다. 인 것 같습니다. 역시 속도 적인 이슈를 해결 시켜주는 것이 가장큰 장점인것 같습니다. AMP의 단점은 사용자가 직접 사용한 자바스크립트를 사용할수 없다는 것입니다. 현대와 같은 시대에 직접 사용한 자바스크립트를 사용할수 없다는 것이 말도 안되지만, 모바일 속도에 최적화 된 환경에서 직접 사용한 자바스크립트의 속도를 가늠할수 없기 때문에 이런...

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 와 붙여서 어떻게 사용할수 있을지를 담부터 구성해보도록 하겠습니다. ​