Seoul Perl Mongers Perl Advent Calendar
HTML CSS Perl JavaScript Makefile
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
2010
2011
2012
2013
2014
2015
patch/lib/WWW
.gitignore
.perl-version
Makefile
Makefile.common
README.mkd
cpanfile

README.mkd

Seoul Perl Mongers Advent Calendar 2015년

기사 형식은 어떻게 하나요?

'자기소개-서론-본론-마무리' 형식을 지키면 됩니다. 파일 포맷은 마크다운 형식을 권장하지만 이메일로 전달할 수만 있다면 어떠한 것으로도 괜찮습니다. 기사 내에 HTML 링크 방식으로 이미지를 포함할 수 있습니다. 이전의 기사를 참고하세요.

어떻게 전달하나요?

기사 게재를 원하는 날짜보다 최소 3일 전까지 keedi.k@gmail.com 으로 보내주세요. 또는 GitHub의 pull-request 기능을 이용해 2015/drafts/ 하부로 기사를 보내도 됩니다. 2015/drafts/2013-12-07 디렉터리를 참고해서 동일한 형식으로 기사를 작성해주세요.

라이센스

Seoul.pm 성탄절 달력에 기고하는 기사의 권리는 모두 Seoul.pm에 위임하고 권리를 주장하지 않습니다. Seoul.pm 성탄절 달력의 모든 기사의 권리는 Seoul.pm이 가지며 모든 기사는 GNU Free Document License를 따릅니다. 기사의 재배포 및 상업/비상업적 이용등 모든 부분에서 해당 라이센스의 허용 또는 강제 내용을 따릅니다. 따라서 문서의 권리 포기와 라이센스 부분을 숙지 부탁드립니다. :)

더 많은 열린 지식의 공유와 재생산, 행여나 발생할 수 있는 불미스러운 일을 방지하기 위한 부분으로 기사 게재를 원하시는 몽거스 분들의 양해 부탁드립니다.

원고를 직접 등록하려고 합니다

모든 작업은 develop 가지를 기반으로 합니다. 앞으로의 작업은 git flow를 사용하는 것을 권고합니다.

$ git flow init
$ git checkout develop

각 날짜에 배정된 원고는 feature/editor-2015-12-xx 가지에서 별도로 관리합니다. 이미 해당 날짜의 가지가 생성되어 있지는 않은지 아래와 같이 확인하세요. 한편, 파일명과 가지명에 포함된 2015-12-xx 포맷은 꼭 지켜야 합니다.

$ git flow feature list

이미 누군가가 해당 날짜에 배정하여 가지를 만들었다면. 동일한 날짜의 가지를 중복하여 생성해서는 안됩니다. 날짜가 겹치거나 충돌하는 문제는 커뮤니티에 문의해 주세요.

$ git flow feature start editor-2015-12-xx develop
$ ...
$ git add 2015/drafts/2015-12-xx/draft1.pdf
$ git add 2015/drafts/2015-12-xx/draft2.png
$ git add 2015/drafts/2015-12-xx/draft3.html

가지가 없으면 위와 같이 생성한 후, 2015/drafts/2015-12-xx에 등록합니다. 원고 파일의 포맷과 개수는 다양하기 때문에 이를 보존하기 위해 drafts의 하위 디렉터리에 보관합니다.

$ git flow feature publish editor-2015-12-xx

마지막으로 이 가지를 외부로 배포하여 편집자가 해당 가지에서 작업할 수 있도록 합니다.

기사를 편집하려고 합니다

먼저 이전 섹션에서 서술한 바와 같이 누군가가 editor-2015-12-xx 가지에 원고를 등록하여 배포해야 합니다. 현재 저장소를 로컬에 갱신하고 해당 날짜의 기사 원고가 등록되어 있는지 확인합니다.

$ git fetch origin
$ git flow feature list

가지가 존재하면 아래와 같이 체크아웃합니다.

$ git flow feature checkout editor-2015-12-xx

편집 과정을 거쳐 만들어지는 최종 기사는 마크다운 포맷입니다. 아래와 같이 articles 디렉터리에 마크다운 뼈대를 작성하고 등록합니다. drafts 디렉터리에 등록된 원고를 참고하여 마크다운 포맷에 맞게 옮겨 적습니다. 기사의 상단에는 저자의 프로필이 있어야 합니다. 오탈자나 이해하기 힘든 문맥을 바로잡습니다. 예제 코드는 직접 실행해보고 실행이 되지 않는다면 알맞게 고쳐야 합니다.

$ vim 2015/articles/2015-12-xx.mkd
$ ..
$ git add 2015/articles/2015-12-xx.mkd
$ git commit 2015/articles/2015-12-xx.mkd
$ git push
$ ..
$ git add 2015/articles/2015-12-xx.mkd
$ git commit 2015/articles/2015-12-xx.mkd
$ git push
$ ..

이미지는 share/static에 넣습니다. 이미지는 2015-12-nn-ab.png와 같은 포맷을 따라야 합니다. 작게 축소된 이미지는 2015-12-nn-ab_r.png과 같이 뒤에 _r을 붙입니다. 2015년 웹사이트 레이아웃에서는 기사에 포함되는 축소된 이미지의 최대 너비와 높이를 각각 500px과 380px으로 제한합니다. bash 환경에서 아래 명령을 통해 축소된 이미지를 생성할 수 있습니다. 이미지는 원본 이미지와 축소된 이미지 두 가지 모두 제공해야 합니다.

for f in 2015-12-*
  do convert $f -resize 500x380\> ${f%.*}_r.${f#*.}
done

기사를 웹사이트에 배포하려 합니다

기사 가지의 편집이 완료되면 아래와 같이 웹사이트에 갱신합니다.

$ git feature finish editor-2015-12-xx

그런 다음 서버가 갱신된 기사를 동기화하도록 합니다.

웹사이트를 직접 구축하려 합니다

이 웹사이트를 개발하거나 테스트하기 위해 로컬에 직접 웹페이지를 생성할 수 있습니다.

아래 두가지 모듈에 특히 의존하고 있습니다. cpanm을 통해 설치합니다.

  • WWW::AdventCalendar
  • Text::MultiMarkdown

advent.ini 파일에 아래와 같이 today 값을 등록하여 오늘의 날짜를 강제로 지정할 수 있습니다.

today = 2015-12-12

또는 환경 변수를 이용해서 파일 수정 없이 바로 오늘의 날짜를 강제로 지정할 수 있습니다.

ADVCAL_FLAGS='--today 2015-12-03' make

기사를 만들고, 웹서버를 실행하기 위해 필요한 모듈을 설치합니다.

$ cpanm --installdeps .

기사는 today 이후의 날짜에 대해서는 생성되지 않습니다. 이렇게 임의로 지정한 설정 파일을 저장소에 갱신해서는 안됩니다.

$ make
$ firefox output-2015/index.html

그런다음, make를 통해 웹페이지를 생성하면 정적 파일로만 이루어진 output-2015 디렉터리가 생성됩니다.

자신의 장비에서 웹서버를 띄워 브라우저로 접속해서 확인하려면 다음 명령을 실행합니다.

$ make run
perl -E 'symlink "2015/advent.ini", "advent.ini" unless -e "advent.ini"'
PERL5LIB=./patch/lib/:/home/askdna/.perlbrew/libs/perl-5.18.1@advent/lib/perl5:lib:extlib/lib/perl5 advcal --config advent.ini --output-dir output-2015 --article-dir 2015/articles --share-dir 2015/share
/sbin/ifconfig | perl -nlE 'do { say $1 } if /inet addr:(\d{1,3}(?:\.\d{1,3}){3})/'
127.0.0.1
192.168.25.60
http_this output-2015
Exporting 'output-2015', available at:
   http://127.0.0.1:7007/

정상적으로 로컬 웹서버가 실행되면 http://127.0.0.1:7007/index.html로 접속해서 기사를 확인합니다.