Mustache :{

use perl

Tekken Premier League 2017

철권은 조빱이지만 철권 방송은 재밌게 보고 있습니다.

오랜만에 철권대회 입니다.

1등 상금이 60만원? 입니다.

나중에 1,000만원으로 오른다고 하는데 비인기 종목은 e스포츠에서도 서러운 것 같습니다.

오랜만의 철권대회라서 반갑긴한데 해설이 hols(나겜사장) 입니다. 철권의 ㅊ도 모르는 사람이 해설해서 많이 별로 입니다.

무릎 출전 안했으니까 지난번 오락실 매치처럼 인드라+무릎 시키면 좋을 것 같은데 역시 게임방송도 돈이 문제인 것 같습니다.

수영 2km

간만에 블로그 쓴다고 늦게 자서 늦게 인나고 늦게 출근했습니다. 도착하니 점심시간이었습니다.

보통은 민들레에서 백반 먹는데, 어제 중길씨가 국밥 좋아한다고 해서 둘이 고흥순대국 다녀왔습니다.

민들레는 제가 가장 좋아하는 식당입니다.

밥먹고 일했습니다. 요새는 딴짓도 잘 안하고 일만하는 것 같습니다. 하루종일 컴피터 앞에 앉아 있는데 하루종일 바쁜 것 같습니다. 담배도 안피니까 화장실 가는거 말고는 계속 컴피터 합니다.

집중을 오래하다보면 무기력해지곤 합니다. 딴짓을 섞어줘야 하는데 얹혀지내기 시작한 이후로는 벽을 바라보고 앉기 때문에 남들이 제 모니터를 볼까봐 딴짓을 못합니다.

열린옷장의 대여비를 %로 할인해주는 쿠폰시스템을 만드는 중 입니다. 한벌대여쿠폰, 10,000원 쿠폰 이런게 있었는데 이번에 요구가 있어서 합니다. 점점 복잡해져서 걱정입니다. “%할인 못한다” 라고 하고 시스템을 되도록 단순하게 유지하고 싶은데 결정은 제가 하는게 아닙니다.

하다가 피곤해져서 농땡이 좀 부리다가 수영장 갔습니다. 화장실에 휴지가 없었는데 모르는 사람의 도움으로 위기를 벗어났습니다.

4월의 마지막주 목요일이라서 자유수영하는 날 입니다. 이런 날은 아름사마(에이스)가 프로그램을 계획해서 옵니다.

요새 몸이 안좋은지 탕에서 나오거나 체조할때 어질어질합니다. 쉬엄쉬엄 하고 싶은데 같이 수영하시는 분들이 그렇게 못하게 합니다.(앞에 서라고 부추김)

오늘은 2km 수영했습니다.

요즘 하는 일

요즘이랄까 제작년부터 거의 열린옷장의 서비스를 만들고 있습니다.

어떤거냐면,

등을 만들고 있습니다.

제가 하는 작업의 이력은 opencloset/opencloset assignee:aanoaa is:open 에서 볼 수 있습니다.

열린옷장 직원은 아닙니다. 열린옷장 옆사무실에 SILEX 라는 소프트웨어 회사 댕기고 있는데(이번에 건물에서 쫓겨나서 옆사무실 아님) 초창기에 열린옷장 재고관리 라는 작은 프로젝트를 계기로 일하게 되었는데 어쩌다보니 이것만 하고 있습니다.


SILEX 에는 yongbin, keedi, aanoaa(나) 세명인데, 얼마전 건물에서 쫓겨나서 망한느낌이 물씬 납니다. 한명은 집에서 애보고 한명은 알바하고 저는 그냥 하던거 계속 하고 있습니다. 저는 열린옷장에 책상 한자리 부탁해서 얹혀 살고 있습니다.

모두들 고생하고 있는데 잘되면 좋겠습니다.

인상적인 블로그

요즘 재미있게 보는 블로그가 있습니다.

조광사진관 일기장

별거 없는 얘기인데 좋습니다. 저도 비슷한 컨셉으로 적당적당 있었던 일들이나 생각을 올려볼까 합니다. 귀찮아져서 금방 안하게 되겠지만..

한글이 되는가

octopress 에서는 한글 tags 와 한글제목을 지원하는가 궁금했습니다.

1
2
3
$ bundle exec rake new_post['한글이 되는가']
mkdir -p source/_posts
Creating new post: source/_posts/2017-04-26-hangeuli-doeneunga.markdown

이렇게 됩니다.

Yongbin-mode

외래어의 한글표기

보통 외래서를 한글로 적을때, e 로, a 또는 ae 로 적습니다.

그런데 @yongbin님은 바꿔씁니다. helper 를 한글로 적으면 보통은 헬퍼이지만 @yongbin 님은 핼퍼 입니다. 오래된 이야기입니다.

디랙토리, 핼퍼, 렌덤 등등..

생일셍일로 적고, 요새요세 적는걸 보면, 외래어만 그런 것 같진 않습니다.

*-mode

제 작은소원은 조국의 통일도 편경장의 팔모가지도 아닙니다. 제가 필요한 emacs의 mode 를 만드는 것입니다. elisp 관련 책도 읽다가 포기한 적도 많습니다.

그런데 몇일 전 github-comment 에서

핼퍼에 구현된 코드중에

라는 코멘트가 결정적인 계기가 되어서 yongbin-mode 를 만들어보자 라고 결심하게 되었습니다.

yongbin-mode

아이디어는 이랬습니다.

emacs 내에서 를 누르면 가 입력되고 를 누르면 가 입력되도록 하자.

pre-command-hook 에서 스슥 하면 될 것 같았는데, multibyte 입력은 이벤트가 발생되지 않았습니다.

(아직도 왜 그런지 모르겠고, 어디서 무얼 찾아야 하는지도 모르겠습니다. elisp 도사님 찾아가서 제자 하고 싶음)

여튼 꼼수를 써서 익숙한 perl 로 프로그램을 만들고 emacs 에서는 호출만 하자 싶었습니다.

해서 yb 라는 perl 스크립트를 만들어서 를 바꾸도록 하였습니다.

$ echo "안녕하세요" | yb
안녕하새요

그리고 yongbin-mode 라는 minor mode 를 만들어서 채팅할때 알아서 변환되게 하고 싶었습니다.(저는 irc 채팅을 emacs 에서 합니다)

아무것도 몰라서(지금도 모름) 구글링하고 문서읽고 다른 코드들을 참고하면서

  • yongbin-mode : 마이너 모드(yongbin-mode)를 켜고끈다
  • yongbinize-buffer : 현재버퍼의 텍스트를 용빈화시킨다
  • yongbinize-region(start, end) : 영역의 텍스트를 용빈화시킨다
  • yongbinize-line : 현재 라인을 용빈화 시킨다
  • erc-yongbinize : irc 의 입력을 용빈화 시킨다

기능을 맨들었습니다.

그걸 여차저차 해서 irc 에서

<aanoaa> '-']/ 안녕하세요<RET>

하면,

<aanoaa> '-']/ 안녕하새요

로 됩니다.

https://github.com/aanoaa/yongbin-mode

느낀점

개발환경이 넘 구립니다. 코드 변경하고 M-x eval-buffer 해서 다시 컴파일 하고 어디어디 찾아가서 C-x C-e 해서 한줄만 실행하고 등등..

뭘 모르는데 뭘 어떻게 해야할지가 젤 어렵고, 또 어떻게 디버깅 해야 할지가 어렵습니다. 괄호가 넘 많고 if else 문에 대한 문서를 봐도 어케 쓰는지 모르겠능;; 한글처리에 관한 문서는??

등등 어려움이 넘 많습니다.

하지만 context 가 오묘하달까?

(with-current-buffer yongbinize-buffer-name
  (goto-char (point-min))
  (setq yongbinized-text (...)))

이런거?

point-min 이라는걸 buffer 마다 가지고 있는 모양인데, 그게 context 에 따라 선택된다는게 참 신통방통

perl 뉴비 시절에 perl-kr 커뮤니티에서 도움을 많이 받았던게 넘 좋았는데, elisp 는 한국사용자 커뮤니티가 없는 것 같습니다(?) 한글문서도 오래되었거나 거의 없는 것 같고.. closure 는 있는데 이건 elisp 가 아니고..

elisp 에 관심있는 emacs 사용자들에게서 뭔가 도움을 구해보고 싶습니다. 관련된 커뮤니티를 알고 계시면 알려주세요.

레알 결론

가 바뀐게 보이면 너무 꼴보기 싫었습니다. 이제 몇주동안 저도 똑같이 바꿔쓰면서 고통을 주도록 하겠습니다.

Redis Path and Db Number

redis://localhost:6397/1 흔한 redis-url 입니다. /1 의 역할은 뭘까요? 뭐냐면 Database number 입니다.

$ redis-cli --help
redis-cli 3.0.2

Usage: redis-cli [OPTIONS] [cmd [arg [arg ...]]]
  ...
  -n <db>            Database number.
  ...

/1 없이 연결하면 기본으로 0 번 database 를 사용합니다.

디버그 하면서 값을 확인하려고 제아무리 keys * 을 찍어도 암것도 안나와서 넘 답답했는데..

127.0.0.1:6379> keys *
(empty list or set)

select 명령으로 선택해주거나,

127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> keys *
1) "user:aanoaa"
2) "users"

redis-cli 에서 -n 옵션을 사용하거나

$ redis-cli -n 1
127.0.0.1:6379[1]> 

redis-url path 로 졸 검색했는데 암것도 안나옴.

Perltidy Profile Option

$ perldoc perltidy

...
-pro=filename or --profile=filename
    To simplify testing and switching .perltidyrc files, this command
    may be used to specify a configuration file which will override the
    default name of .perltidyrc. There must not be a space on either
    side of the '=' sign. For example, the line

       perltidy -pro=testcfg

    would cause file testcfg to be used instead of the default
    .perltidyrc.

    A pathname begins with three dots, e.g. ".../.perltidyrc", indicates
    that the file should be searched for starting in the current
    directory and working upwards. This makes it easier to have multiple
    projects each with their own .perltidyrc in their root directories.
...

여기서 중요한것은 ... 으로 시작하면 현재 디렉토리에서부터 위로 올라가면서 이름으로 프로파일을 찾는다는 것

global 설정은 $HOME/.perltidyrc 로 두고 각 프로젝트 root 마다 .perltidyrc 파일을 두면 신경쓰지 않고 사용할 수 있다는 겁니다.

alias 걸어두고 사용하면 편리하겠습니다. emacs 를 사용하는 인간이라면 perltidy-modeperltidy-bin 을 수정해주면 되겠습니다.

선조들은 훌륭합니다.

Octopress 3.0

블로그에 글을 1년 넘게 안썻더니 어케 쓰는줄 모르겠음. 하는김에 octopress 도 업그레이드

이제 gh-pages 브랜치 아니어도 되는건가..

아 몰랑

Keep Simple dist.ini

Dist::Zilla 는 매우 편리한 배포도구 입니다.

기능이 넘 많아서 잘 모르고 써왔는데, 이게 뭔지도 모르는걸 쓰다보니 헛갈려서 요새는 레알 간단하게만 쓰고 있습니다.

갠적으로 딱 필요한 메타파일은 이거 3개 입니다.

  • dist.ini
  • MANIFEST.SKIP
  • cpanfile

cpanfile 이 없을적에는 Makefile.PL 로 부터 의존성문제를 해결했기 때문에 복잡했는데 이제는 cpanm --installdeps . 덕분에 몹.시.편.리.

배포할때 빼고 싶은 파일은 MANIFEST.SKIP 에 적어주고, dist.ini 로 build 하고 배포

좋은 플러그인이 많은데 나중되면 어케 쓰는지도 몰겟고 의존성문제로 인해 불편하기도 해서 그냥 자잘구레한 작업은 직접 손으로 하는걸로..

dist.ini

1
2
3
4
5
6
7
8
9
name = mymodule
abstract = wat
author = aanoaa <wat@wat.wat>
license = Perl_5
copyright_holder = aanoaa
copyright_year = 2014
version = v0.0.1
[@Basic]
[PkgVersion]

MANIFEST.SKIP

# Makemaker generated files and dirs.
^MANIFEST\.
^Makefile$
^blib/

# version-control
^.git/
^.gitignore

^dist.ini
^README.md

이렇게 쓰고 있습니다. 제일 간단한 설정이라고 생각합니다.

전에는 dzil profile 같은 것도 만들고 그랬는데 이제는 그냥 예전거 복사해다 쓰고 그럽니다.