목록개발이야기 (512)
준호씨의 블로그
n일 전 날짜 구하기 포스팅 (http://junho85.pe.kr/544) 을 했었는데 aero 님이 perl 5.8 부터 Time::Piece 가 core 모듈로 들어 갔다고 하여 Time::Piece 버전을 만들어 보기로 하였다. 사용하는 모듈이 좀 바꼈고 get_date_ago 함수 내용이 좀 바꼈다. 다른 부분은 동일하다. get_date_ago(ago) 함수는 ago 일 전의 날짜를 yyyy-mm-dd 포멧의 문자열로 반환하는 함수이다. #!/usr/bin/env perl use strict; use warnings; use Time::Piece; use Time::Seconds; sub get_date_ago { my $ago = shift; my $time = Time::Piece->new..
time() 함수를 이용하면 epoch time 을 얻을 수 있다. 초 단위 이기 때문에 하루치의 초 (24 * 60 * 60) 만큼을 빼면 어제의 시간을 구할 수 있다. 아래의 get_date_ago(ago) 함수는 ago 일 전의 날짜를 yyyy-mm-dd 포멧의 문자열로 반환하는 함수이다. #!/usr/bin/env perl use strict; use warnings; use POSIX qw/strftime/; sub get_date_ago { my $ago = shift; my $epoc = time(); $epoc = $epoc - (24 * 60 * 60) * $ago; my $datestring = strftime "%F", localtime($epoc); return $datestring..
클로저? (참고로 closures 이다. 프로그래밍 언어 중 하나인 clojure 가 아니다.) C, Objective-C 의 blocks 와 비슷하고 다른 언어의 람다와 비슷하다고 한다. 그런데 blocks? https://en.wikipedia.org/wiki/Blocks_(C_language_extension) Apple 이 추가한 비표준 확장이라고 함. 내용을 대충 봐서는 함수포인터를 응용해서 C 에서 클로저 같은걸 사용 할 수 있도록 해 주는 기능인 것으로 보인다. 그나저나 평소에 궁금 했던건 클로저와 람다의 차이점이었다. 비슷해 보이는데 뭐가 다른건지? stackoverflow 에 유명한 글이 있었다. What is the difference between a 'closure' and a 'l..
perl 로 cgi 나 스크립트를 작성할 때 문자열을 파싱해서 사용하는 경우가 많다. 그럴 때 정규표현식을 쓰게 되는데 간혹 특수 문자를 정규표현식에 넣다 보면 문제가 발생하곤 한다. 검색어를 정규표현식에 넣어서 검색을 할 때 검색어에 "+apple" 를 넣게 되면 + 가 특수 문자이기 때문에 오류가 발생하거나 오동작 하게 된다. 오류 발생 Quantifier follows nothing in regex; marked by
hbs 파일에 {{}} 이런거 써두면 서버에서 먼저 읽어서 변환 시켜 버리기 때문에 클라이언트에서 사용 할 수 없다. 이럴 때 어떻게 할지 해결 방법 escape 단순히 {{ 앞에 \ 를 넣어서 escape 시켜서 사용 한다. 단순한 방법으로 사용 할 수 있다. 다만 코드가 좀 지저분 해 지는 단점이 있다. 아래와 같은 handlebars 템플릿 코드가 있으면 {{body}} 아래와 같이 바꿔 주면 된다. \{{body}} precompile 코드는 깔끔해지긴 하지만 클라이언트 사이드 템플릿이 변경 되면 매번 컴파일 해 줘야 되는 불편함이 있다. 처음보는 사람인 경우 직관적으로 이해하기 어렵다. npm install handlebars -g handlebars client-template1.handleb..