Retrospective 별로 유명하지 않은 템플릿 엔진을 써온 결과 예전에, PHP 에서 유명한 Template Engine 인 Smarty 를 사용하다가 Raintpl 로 변경 한 적이 있었다. 변경 한 이유는 성능 문제. 수십개에 달하는 html 페이지들을 모두 raintpl 으로 변경하는 작업을 한 뒤에, 실제로 성능 향상은 있었지만 작업량에 비하여 기대한 만큼의 성능 향상은 아니었다. 그래도
Dev AWS EC2, EBS / DigitalOcean Droplet / Samsung SSD / PCI-E 8ea raid SSD dd if=/dev/zero of=ddfile bs=8k count=100000 hdparm -tT /dev/md_d0 Samsung 840 SSD Timing cached reads: 17108 MB in 2.00 seconds = 8561.21 MB/sec Timing buffered disk reads: 1480 MB in 3.00 seconds = 493.27 MB/
Dev TokuDB에서의 테이블 압축 TokuDB는 여러 다른 레벨의 압축을 지원합니다. 이 압축 레벨들은 CPU 사용률과 실제 데이터의 압축률에 관계 있습니다. 성능에도 관계가 있죠. 표준 압축은 CPU를 적게 쓰는 대신 낮은 압축률을, 높은 압축률은 CPU를 더 많이 씁니다. TokuDB는 25배 이상 압축이 된 고객사까지 경험했다고 합니다. (공식 문서) 압축은
HTTP Firefox 에서 bat 파일을 다운로드 가능하게 하는 방법 아래와 같은 헤더를 보내면 다운이 가능. Content-Type: doesn/matter Content-Disposition: attachment; filename="filename.bat"
Linux 1Gbps 회선임에도 불구하고 rsync 가 매우 느릴 때. rsync -arPW --delete --rsh='ssh -p22' source name@host:target 위와 같은 형식으로 하면 된다. -z 옵션이 압축이므로 뺐고, -W 옵션을 추가했다. 이 옵션은 비교과정을 절약한다고 한다. 14MB/s 가 뜨던게 60MB/s 까지 뜬다. TODO 어떻게 절약하는건지 적을 것
PHP Migration Smarty to Raintpl3 달라진 점. (difference) {if condition} {if="condition"} {elseif condition} {elseif="condition"} {include "filename.tpl"} {include="filename"} {Func()} {function="Func()"} {Func($param,3)} {function="Func($param,3)"} {$param|Func:3} (Similar as smarty)
Browser Characters are gone away when it loaded 문제 Android 4.0.3과 Android 4.0.4의 웹브라우저에서 웹사이트 로딩 완료 후 텍스트나 내용물이 모두 없어져 보이지 않게 되는 현상. (Disappeared some specific dom objects at loaded finish) 원인 해당 버전의 안드로이드 브라우저에서 CSS Animation 을 정상적으로 지원하지 않아서 생기는 문제. 해당
Dev Normalize.css 와 reset.css 의 차이점 Normalize 모든 스타일을 해제하기보다는 기본 스타일을 유지하는데 촛점 reset 무조건 어떤 스타일이든 모든 스타일을 해제하는데 목적 예를 들어 H1, H2, ul, li 등의 엘리먼트의 경우 고유로 가진 특징들을 유지하는 쪽은 노멀라이즈, 모두 해제하는건 리셋으로 보면 된다.
PHP PHP의 foreach 버그 코드1 $array = array('a','b','c','d','e','f'); foreach($array as &$v) { echo $v; } echo PHP_EOL; foreach($array as $v) { echo $v; } foreach 로 배열을 두번 돌렸다. 한번은 By Reference, 한번은 By Value 로 돌렸다. 그랬더니 결과는 기대와 다르게 아래와 같이
PHP igbinary igbinary 는 PHP의 serialize 함수에 대응해서 쓸 수 있는 대안이다. 훨씬 더 빠른 속도를 자랑하며 심지어 용량이 훨씬 적다. 특징 igbinary 로 serialize 된 데이터는 바이너리로 생성 Memcached, APC, Redis 등의 캐시저장에 사용하기 적절 복잡한 데이터 구조일수록 serialize 와 json_encode 에 비해 용량이
Dev Cassandra CQL3 에서 대/소문자 구별하여 테이블과 필드를 생성하기 Cassandra 의 CQL3 에서는 기본적으로 대소문자 구별을 하지 않고 무조건 소문자를 쓰도록 하고 있다. 대문자를 쓰더라도 자동으로 소문자로 컨버팅된다. 대소문자를 구분하여 쓰려면 아래와 같이 " 를 덮으면 된다. 다른 언어에서는 ` (악센트)를 이용하는데, 여기서는 쌍따옴표를 이용한다. DROP TABLE "Users"; CREATE TABLE "
Linux OpenJDK 대신 Orable JDK를 설치하기 우분투에서 기본적으로 apt-get 으로 바로 쉽게 설치가 가능한 OpenJDK 보다는 Oracle 에서 제공하는 JDK가 성능이 좀 더 우위에 있다. 공식 홈페이지에서 시스템에 맞는 JDK를 다운로드하여 서버에 업로드한다. 아래 명령어에 버전명은 알아서 채워 넣으면 된다. 설치하기 $ tar zxvf jdk-7u7-linux-*.gz $ mkdir -p /usr/lib/jvm/
PHP RabbitMQ 서비스를 만들다보면 점점 Batch 작업을 해야할 경우가 증가하고, 때로는 큐 시스템을 통해 작업을 처리해야 하는 상황이 올 수 있다. 이럴 때 RabbitMQ 와 같은 Message Queue 솔루션을 사용할 수 있다. 많은 MQ 솔루션들이 있는데 ActiveMQ와 RabbitMQ를 고민하다가 증가하는 Google Trends 수치와 간단한 설명을 해둔