블로그 이미지
JEEN

서울에 사는 꽃청년의 IT찌질모험기

Rss feed Tistory
IT/Perl 2011.11.19 22:45

[ Perl ] 좋은 Perl 프로그래머를 가르는 27가지 질문

http://www.modernperlbooks.com/mt/2011/01/how-to-identify-a-good-perl-programmer.html

  올해 초에 나온 좋은 글이었는데, 연말에 와서야 이렇게 번역하게 되는군요;; 떡밥에 쉰냄새가 풀풀...

1. Perl5 에서 변수의 sigil 이 가리키는 것은 무엇인가?

2. 배열에 접근할 때 $items[$index] 와 @items[$index] 의 차이는 무엇인가?

3. == 와 eq 의 차이는 무엇인가?

4. 해쉬를 리스트 컨텍스트로 평가하면 얻을 수 있는 것은 무엇인가?

5. Perl 문서에서 키워드를 검색하려면 어떻게 하는가?

6. Perl5 에서 함수와 메소드의 차이는 무엇인가?

7. Perl5 가 메모리를 재이용하는 것은 언제인가?

8. 변수의 영역이 기본적으로 렉시컬하다는 것을 보증하기 위해서는 어떻게 해야 하는가?

9. 모듈에서 심볼을 import 하려면 어떻게 해야하는가?

10. perl 이 모듈을 불러들일 때 디렉토리를 어떻게 다루는가?

11. Perl5 의 에러메시지의 검색은 어떻게 하는가? (발생하는 에러 메시지에 설명을 추가하는 방법을 알고 있다면 보너스 포인트)

12. 배열을 함수로 건낼 때 어떤 일이 발생하는가?

13. 여러개의 배열을 각각 구별해서 함수에 건낼 때에는 어떻게 하는가?

14. 호출한 측에서 본 return; 과 return undef; 의 차이는 무엇인가?

15. 일반적으로 CPAN 배포판 에서는 테스트는 어디에 놓는가?

16. 일반적으로 CPAN 배포판에서 테스트를 돌려보기 위해 어떻게 하는가?

17. CPAN 에서 새로운 배포판을 설치할 때 사용하는 커맨드는 무엇인가?

18. 내장 함수 open 을 3인수 형식으로 사용하는 이유는 무엇인가?

19. open 같은 시스템 호출의 에러를 검출(과 보고)하기 위해 어떻게 해야하는 가(에러의 검출과 보고를 자동적으로 유효하게 하는 방법을 알고 있다면 보너스 포인트)

20. Perl5 에서 예외를 던지기 위해서는 어떻게 해야하는 가?

21. Perl5 에서 예외를 잡아내기 위해서는 어떻게 해야하는가?

22. 파일을 읽어들일 때 for 와 while 의 차이는 무엇인가?

23. 메소드와 함수에 있어서 파라메터를 다루려면 어떻게 하면 되는가?

24. my ($value) = @_; 의 변수를 감싼 괄호가 의미하는 것은 무엇인가? 또 이 괄호를 빼면 어떤 일이 발생하는 가?

25. new 는 내장 함수/키워드 인가?

26. 코어 라이브러리나 CPAN 모듈의 문서를 읽을 때에는 어떻게 해야 되는가?

27. 해쉬의 값만을 뽑아내려면 어떻게 해야 되는가?


너무 직역인지라 위의 링크를 참고하시면서 의미파악을 하셔야 될지도 모르겠지만..

각 질문에 대한 답에 대해서는 각자 한번 생각해보셨으면 합니다만.. 아마 조만간 따로 블로깅 하지 않을까 싶습니다... (!!!!아마!!!)
 
신고
IT/Perl 2011.11.19 22:09

[ Perl ] 일본의 `Perl` 상표등록에 대한 이야기


2010/06/22 - [IT/Perl] - [ Perl ] 일본에서의 「Perl」상표 등록문제


  작년 6월쯤에 블로그에서 소개한 적이 있는 일본에서의 `Perl` 상표 등록문제에 대해서 최근에 새로운 뉴스가 떴었습니다.

  자세한 이야기는 위의 링크를 참고하시면 되겠지만, 간략하게 줄이자면 한 개인이 The Perl Foundation 에 일정금액의 기부를 근거로 일본내에서 `Perl` 에 대해 상표등록을 했던 사실이 있었습니다. 그래서 Perl 을 사용한 것에 사용료를 내야되는 것이 아니냐는 등등의 많은 걱정이 있었지요.
  최근에 Japan Perl Association 에서 상표등록에 대한 이의신청을 내서 해당 상표등록이 말소되었다고 하네요.

  http://blog.perlassociation.org/2011/11/perl-trademark-fixed.html 
  http://blogs.perl.org/users/lestrrat/2011/09/perl-trademark-in-japan.html 
신고
IT/Perl 2011.11.15 00:52

[ Perl ] new "dot" feature // -> => . && . => ~


  좀 된 뉴스입니다만, 이번 11월 초에 Léon Brocard 씨의 재미난 패치가 올라왔습니다.

  라고 사용하던 일반적인 Perl 의 ->(화살표 연산자) 를 . 으로 바꾸도록 하고..

  기존의 문자열 연결자 . 을 ~ 으로 바꾼 것이죠.

    $obj->method;


  를

    $obj.method;


  로 사용할 수 있구요.

  문자열의 경우는

  say "Hello " . "Silex";


  를

  say "Hello" ~ "Silex";


  로 쓸 수 있습니다.

  http://blogs.perl.org/users/acme/2011/11/new-dot-feature.html  
 뭐 하지만 Perl 의 생명과도 같은 하위호환성 문제도 있고 어디까지나 개인 취향의 문제(?)일 뿐...
 이게 실제로 당장 Perl5 에 적용될 가능성은 없어보입니다.  :-)
 

신고
IT/Perl 2011.09.01 01:09

ISUCON 관련 소감문...

  [ 이 기사는 #perl-kr 에서 ISUCON 을 소개해줬을 때, @aer0 님을 비롯한 여타 세력의 압박으로 인해 자의반 타의반으로 작성하게 되었으며, 퀄리티는 보증할 수 없습니다(언제는 했다고...) ]

 
  언젠가 Bookmark 해둔 Livedoor Techblog 를 보면서 ISUCON 이라고 Iikanji Speed Up Contest(좋은 느낌으로 SPEED UP) 를 개최한다는 뉴스를 들었습니다. 재미있겠다! 한국에서도 이런 거 했으면 좋겠다!(나는 안나가겠지만...) 이라는 생각을 하면서 있었는데...

  이게 8/29일에 있었습니다. 일본에서요... 전 그냥 블로그 글만 보고 대충 상황을 알게 되었습니다.

  우선 주최측인 Livedoor 의 엔지니어가 제공해준 기본 어플의 소스가 Perl, Ruby, Node 세가지 언어로 제공되고 이 중 하나를 골라서 최고의 퍼포먼스를 끌어내도록 하는 게 이 대회의 목적입니다. 대회는 7시간에 걸쳐서 진행되구요. 7시간동안 작업한 것을 서로 벤치마크해서 최고점이 나오는 팀이 이기는 것입니다.

  * http://blog.livedoor.jp/techblog/archives/66784747.html
  * 기본 어플 : https://github.com/tagomoris/isucon

   21 개 팀이 참가를 했고, 1위를 한 팀이 27만req/3min 으로 우승했습니다.
   여기서는 1위팀이 어떤 생각과 시행착오와 작업을 통해서 개선해나갔는 지를 소개해볼까 합니다.
   기본적으로는 아래의 블로그의 번역 요약입니다.

   * http://d.hatena.ne.jp/sfujiwara/20110827/1314460582
   * http://d.hatena.ne.jp/sfujiwara/20110829/1314597283

  • 맨처음은 환경설정
    •  IP 로 접근은 귀찮으니 hosts 에 각 서버들(db, app, frontend...)을 추가
    • 서버간 ssh key 인증 설정
    • 모든 서버에 epel
    • /etc/sysconfig/network 에 HOSTNAME 설정
    •  SELinux off
    •  iptables off
  • 초기 스코어는 800req/min
  • 몇 번의 벤치마크를 통해서 초기상태의 보틀넥은 MySQL
    • Query Cache 설정으로 일단 1200req/min
    • DB 컬럼을 추가해서 쿼리를 가볍게 만드는 작업
      • 이걸로 20,000req/min
  • Front-end 서버를 Apache 에서 Nginx 로 전환
    •  Nginx 에서 keepalive off
    • Nginx -> memcached 의 로컬포트 고갈문제
      • net.ipv4.ip_local_port_range 범위를 늘려줌
      • net.ipv4.tcp_fin_timeout 의 값을 줄여줌
      • 혹은 memcached 접속을 영속화하는 옵션이 있을지도?
  • ip_conntrack off
  • 이후의 보틀넥은 DB 서버에서 App 서버의 CPU
    • nginx memcached plugin 을 사용해서 memcached 에 존재하는 컨텐츠는 App 서버를 통해서가 아니라 nginx 에서 직접 뽑아내도록
    •  특정 처리에 있어서의 memcached 의 저장 시점을 조정
    • 이렇게 해서 30,000req/min 까지 
  • 좀 더 cache 타이밍을 조정했지만 cache hit 가 감소하기에 cache 수명을 5초로 조정 / 10초 정도에서는 hit 율이 낮아져서 뭔가 fail 이 발생했다는 군요.
  • 결과 90,000req/min -> 1,500req/sec
  그 이외에 nginx 에서 SSI 를 사용하면 어땠을까 하는 생각도 해봤다는 군요.

  ISUCON 의 기본 앱의 소스(Perl)를 살펴본 결과, ORM 은 당연히 없고 DBI 로 그대로 Query 를 뽑아쓰고 있습니다. 또한 템플릿 엔진도 Template Toolkit 이 아니라 처음부터 Text::Xslate 로 정해져 있으며 Route Dispatch ing 역시 경량모듈로 사용하고 있어서 어플 소스단에서 쉽게 개선할 방법은 찾기 어려웠다는군요.  (그래서 어떤 팀은 템플릿엔진 사용자체를 배제시켜버리고 html 을 직접 써놓도록 했지만 결국 기대했던 퍼포먼스는 나오지 않았다고 합니다)

 아무튼 우승팀은 27만req/3min, 준우승 팀은 8만req/3min 정도로 ... 뭔가 압도적인 차이입니다.
 우승팀 하나, 준우승팀 둘인데... 재미난 건 수상권은 전부 Perl 을 골라서 썼다고 하네요 :-)

  아무튼 실 서비스를 올리는 데 있어서 많은 참고가 될지도 모르겠지요. 
신고
IT/Perl 2011.08.31 23:37

[ Perl ] 최신 Perl 관련 정보는 어디에서 긁어모을까요?

  사실 Perl 관련 정보는 ... 네, 한글은 죄송하지만 그렇게 많이 없죠.
  하지만 영어 쪽 사이트를 보면 전혀 다릅니다.

  매주 그때 그때의 Perl 관련 이슈를 모은 Perlbuzz 가 대표적이겠구요.

* http://www.perlbuzz.com/

 
  세계의 활동적인 Perl Hacker 들의 블로그등을 모아놓은 PLANET 사이트인 Perl Iron Man 도 있습니다.
 
 * http://ironman.enlightenedperl.org/


 
  최근에는 Perl IDE 인 Padre 의 메인개발자인 Gabor Szabo(@szabgab) 씨가 매주 Perl Weekly 를 발행하고 있습니다.

http://perlweekly.com/


  최신 Perl 관련 여러 이슈는 위의 세군데만이라면 아마 쉽게 얻을 수 있으시겠구요.
  한국의 Perl 관련 뉴스나 이슈에 대해서는...

  * http://webchat.freenode.net/ 의 IRC #perl-kr 채널에서 확인하실 수 있습니다. 
신고
IT/Perl 2011.08.31 21:50

[ Silex/Perl ] 8월 31일 Silex 사내세미나

2011/08/25 - [IT/Perl] - [ Silex/Perl ] 8월 24일 Silex 사내세미나

  이번주도 어김없이 수요일에 Silex 사내세미나가 진행되었습니다.
  발표내용은

   * Getting Started with Mojomojo by @keedi
   * Making non-blocking WebServices by @JEEN_LEE

  입니다.

  Storify 사용에 좀 더 익숙해진 느낌이라 정리중에서 나온 여러 참조내용 부분을 깔끔하게 넣을 수 있군요!

 
신고
IT/Perl 2011.08.25 14:11

[ Silex/Perl ] 8월 24일 Silex 사내세미나

  Silex 에서는 매주 수요일 2시간 정도의 시간을 들여서 사내 세미나를 개최합니다.
  여태껏 많은 좋은 내용들이 그냥 지나가는 것 같기도 해서, 적당하게 사내 업무와는 크게 관련없는 내용이라면 한번쯤 외부에 소개해도 좋지 않을까 하는 생각에서...
  어제 있었던 사내세미나를 정리해봤습니다. 
 


  혹시나 관심이 있어서 들어보시겠다거나, 혹은 발표를 해주신다거나 하실 분이 있으면 저에게 컨택해주세요.
  회사간 기술교류회 같은 이벤트를 해보는 것도 어떨까 생각해보기도 합니다. 
신고
IT/Perl 2011.08.02 13:31

[ Perl / Seoul.pm ] Tatsuhiko Miyagawa 씨와의 미팅




  @miyagawa 상이 OSCON 2011 참가후에 일본으로 오는 도중에 한국을 경유해서 간다고 하기에 시간을 내줄 수 있느냐 라고 컨택을 한 결과 어제 한자리에 앉아서 얘기할 기회를 갖게 되었습니다.
  @miyagawa 상의 새로운 회사 DotCloud 나 여러가지 컨퍼런스 관련 조언 얘기, 그리고 미국비자얘기;;;, 근데 펄관련 얘기는 별로 안한 거 같네요;;

  아무튼 매우 즐거운 시간이었습니다.
 
신고
IT/Perl 2011.07.25 22:02

[ Perl/TRunner ] Selenium Core + Plack -> Smolder

TRunner
View more presentations from Jeen Lee

2011/07/15 - [IT/Perl] - [ Perl/Smolder ] Web-based Continuous Integration Smoke Server

 지난번 Smolder 에 이어서 회사 사내 세미나에서 발표했던 TRunner 입니다.
 TRunner 는 뭐 특별한 게 아니라 이미 기존에 있던 모든 것들을 뭉뚱그려놓은 것입니다.

 기본적으로 Dancer 상에서 Selenium Core 에서 사용하는 기본적인 js 스태틱 파일들을 올려놓은 상태에서, Selenium Core 의 테스트 결과를 Smolder 로 날릴 수 있게끔 하는 것입니다.

  이때 Smolder 는 TAP 형식만을 받으니, Selenium Core 의 테스트 결과를 이래저래 슥샥슥샥 만지작거릴 필요도 있기도 하죠. :-)

  Selenium Core 의 정적인 기능을 동적인 페이지 위에 올리고, 필요한 부분에는 selenium-core.js 를 직접 만지며 수정도 하구요.

  Selenium IDE 에서 뽑아내는 Test Suite/Case 세트를 TRunner 용으로 YAML 로 바꿔서 읽어들이게끔 하구요.

  기본적인 아이디어는 용사장(a.k.a @y0ngbin) 으로부터 얻어서 구현하고... 기본기능 구현 뒤 미비한 점은 @aanoaa , @y0ngbin  두 분이 추가로 조정해주셨습니다.

  하고자 하는 것은 간단하게 Plack::Builder 를 통해서 어떤 Plack 기반의 웹어플이면 쉽게 Selenium Core 와 이 결과를 전송해서 Smolder 로 꾸준히 관리할 수 있게끔하는 그런 것이죠.

 
  보통 서버 프로그램들의 지속적인 유닛테스트처럼 브라우저단의 UI 나 기타 js 움직임등에 대해서도 지속적으로 체크해서 관리하자라는 게 모토입니다.

  각 브라우저/ OS 는 Selenium Core 의 결과 전송시의 Request Header 의 UserAgent 를 통해서 확인할 수 있으니, 이걸 Smolder 의 Platform / Architecture 로 대입시켜보는 것입니다.

  순수한 Silex Product 라서 다른 곳에서 쉽게 사용했으면 좋겠는데(Perl 쓰는...)... 
신고
IT/Perl 2011.07.25 21:29

[ Mac/Perl ] Mac의 한글파일이 윈도우 등에서 자모 분리되는 현상에 대해서...

  개인적으로 Windows 는 별로 좋아하지 않습니다.

  Windows 에서 맥으로 완전 전향한지 4년이 다되어 가는 군요. 명함을 내밀만큼 그렇게 오래도록 맥을 써오지는 않았지만, 그래도 다시 돌아가라고 하면 못 갈 정도로 이미 몸에 맞춰졌으니...

  아무튼 최근에 제가 압축한 파일들을 공유하려고 URL 을 찍어봤는데, 타 Windows, Ubuntu 유저에게서 한글이 자음모음이 분리된다라는 말을 들었습니다. 

  그외

  $ PERL


  이라고 터미널에 입력해도 그게 실행된다거나... 
  하는 여러가지 까임항목들이 나열되기 시작하고...

  급기야는...

  - https://github.com/aanoaa/Template-Plugin-Macboogi
  - https://github.com/aanoaa/Horris/blob/develop/lib/Horris/Connection/Plugin/Macboogi.pm

  이런 Mac 의 특성을 디스하는 모듈들이 등장하기에 이르죠.. :-)

  아무튼 네. 사실 저도 이런 건 맘에 안듭니다.  하지만 이건 제쳐두고...
  예 아무튼 파일공유시에 파일이름에 한글이 들어갔을 때 자모음이 분리된 파일이름이 된다라는 얘기를 듣고 어떻게 할까 알아보다가 결국은 @aer0 님이 먼저 선수를 치셨습니다.

  - http://aero2blog.blogspot.com/2011/07/macos-x.html
    
  해결책은 Unicode::Normalize 의 compose 함수를 통해서 NFD 형식의 문자열을 NFC 로 바꾸는 것인데요.
  역시 @aer0++ 입니다.
신고
TOTAL 470,023 TODAY 6

티스토리 툴바