はじめに
練習がてら,以前作った オレオレプレゼンツール で書かれているJavaScriptをCofeeScript で書いてみようかな,とか思い立ち,ただ,毎回コンパイするのもメンドイので,継続コンパイルとかその結果をGrowlに出したりとかできるような何かを,Perlスクリプトとシェルスクリプトで書きなぐってみました.
まぁどちらかと言えば,ただ組み合わせた感が強いですが!
なお,coffeeコマンドのみでも,-w オプションで継続コンパイルができることは,一応存じております.まぁ結局は,App::watcher 使ってみたかっただけです.
レシピ
このへんの準備が要ります:
使い方
% ./script/watch-coffee start % ./script/watch-coffee stop % ./script/watch-coffee restart
とりあえずは,特定のプロジェクト下にて,script ディレクトリを作って,そこにスクリプトを置いて使うことを想定しています.
あと,pidファイルを tmp ディレクトリ下に作るので,これも必要です.
こんな感じ
コンパイル成功:
コンパイル失敗:
ソースコード
はじめに
開催まで2週間を切ってしまって恐縮ですが,Nagoya.pm 第1回目の募集を開始しました.
参加登録
PARTAKE にて参加登録を受け付けています.
なお,Twitterアカウントでのログインが必要になります.
開催の概要
とりあえず次のことだけ決まっています.
日時
2011年 9月17日(土) 13:00 〜 17:00
会場
株式会社ニューキャストさんのセミナールームをお借りしています.最近の名古屋での情報技術系勉強会会場の定番の1つですね!
スピーカさんも募集してます
スピーカさんも募集しています! 発表時間は特に定めていないので,20分でも5分でも3分でもかまわない感じですw
前エントリも参考になるかならないかわかりませんが,とりあえず:
おわりに
ということで,Nagoya.pm #1 の募集開始していますので,興味のある方はぜひ!
はじめに
Redmine をゆるく使い始めて何ヶ月か経過した今日この頃ですが,Redmine側に,関連付けているリポジトリの情報を反映させる手間が,けっこうストレスでした.
先日,Nagoya.pm #1 やります のためのミーティングにて clairvy さんとお話ししていた中でアドバイスをいただけたので,それを基に手を動かしてみました.
なお,使っているRedmineのバージョンは 1.2.0 です.
参考
- 小技(0.9): コミットと同時にリポジトリの情報を取得する | Redmine.JP Blog
- 「リポジトリ」を開くまでSubversion等のリポジトリへのコミットが「活動」に表示されません | Redmine.JP
Redmine側を設定する
「管理 >設定」にある「リポジトリ」タブにて,次の操作を行います:
- 「リポジトリ管理用のWebサービスを有効にする」をONにする
- 「APIキー」ラベル右にある「キーの生成」をクリックする
これで「APIキー」が生成されます.
これを基に,次のようなURLにリクエストを送る(GETでOKみたい)ことで,Redmineが,それに関連付けられているリポジトリから情報を引っ張ってくれます:
{Redmineサーバ}/sys/fetch_changesets?key=${生成されたAPIキー}&id=${プロジェクトの識別子}試しに curl とか wget とかで試してみるとよさげです.なお,「プロジェクトの識別子」とは,最初にプロジェクトを作成する際に指定したアレです.
Gitベアリポジトリ側のフックスクリプトを書く
目的のベアリポジトリの .git/hooks/post-receive を,次のように書いてみました.
#!/bin/sh CURL="/usr/bin/curl -s" REDMINE_URL_BASE="https://redmine.your.server/" REDMINE_REPOS_API_KEY=your_api_key REDMINE_PROJECT_ID=your_project_id echo "updating redmine..." RESPONSE=$($CURL "${REDMINE_URL_BASE}sys/fetch_changesets?key=${REDMINE_REPOS_API_KEY}&id=${REDMINE_PROJECT_ID}") echo $RESPONSE exit 0
ローカルからpushしてみる
実際に,ローカルから git push してみます.
% git push origin master Counting objects: 19, done. Delta compression using up to 4 threads. Compressing objects: 100% (8/8), done. Writing objects: 100% (10/10), 791 bytes, done. Total 10 (delta 7), reused 0 (delta 0) remote: updating redmine... remote: To git@git.your.server:path/to/repos.git 3d502c9..4a79baa master -> master
コミットに関連するチケットのページでも,「関連するリビジョン」にちゃんと反映されていました!
おわりに
以上,git push した際に,自動的にRedmine側の関連情報も更新するためのしくみを準備してみたので,一サンプルとして紹介しました.
今さらですが,フックスクリプトが書ければ,ツールの連携がいろいろできてオモシロソウですね!
最後に,アドバイスいただいた clairvyさんに,感謝ぁ☆
Amazonさん
-
入門Redmine 第2版 Linux/Windows対応posted with amazlet at 11.08.30前田 剛
秀和システム
売り上げランキング: 116052 -
濱野 純(Junio C Hamano)
秀和システム
売り上げランキング: 52115 -
はじめに
先日開催された OSC 2011 Nagoya の熱気に触発されたこともあり,Nagoya.pm としての勉強会の第1回目を,9月に行う運びとなりました.
登録申請してから,もう1年近く経ってしまったんですね><
開催概要
...といっても,現段階で決まっているのは 9月17日(土) に3,4時間ほど,ということくらいです.
とりあえず第1回目はこじんまりと,20名ほどの会場で開催する流れで考えています.
参加方法
参加受付用ページが,近日中に PARTAKE あたりに立ち上がる予定です.
スピーカ募集してます
とりあえず clairvyさんと私 issm が何かしゃべる,くらいしか今のところ決まっていないので,何かPerlネタでお話ししていただける方を募集しています! まぁそんなにPerl色が濃くなくても(ry
「カジュアル」な内容でたくさん構成できればいいな,と思ってます.私自身,小規模な案件を少ししか扱っていないので,まぁネタもレベルもそれなりに限られてきますし.
あと,個人的に興味があるのは,この地域ではどんな感じでPerlが使われているかな,です.(本来ならば,昨年の「地域PMグループディスカッション」@YAPC::Asia 2010 で把握すべきだったのでしょうけれども><)
ので,「自分が書いたこのひと仕事をするだけのPerlスクリプト」とかこそ,そのお話を聴いてみたいな,と思ってます...個人的に.
おわりに
きっと大事なことなのでもう一度.Nagoya.pm としての勉強会の第1回目を,9月17日(土)に行う運びとなりました.
告知から1か月もなくて恐縮ですが,興味のある方は頭の片隅にでも留めておいていただければ幸いです.あわよくば,何かお話しいただければw
詳細が決まり次第,続きのエントリを行いたいと思います.
いくらかの情報については,こちらから:
...さて,お尻に火がついたぞ!どうしましょ.
はじめに
お仕事場やカフェ(特にスタバ)に出先など,キーボートを叩く環境がコロコロ変わったりする私ですが,そのたびにネットワーク設定が切り替わります.
開発機1台でごにょごにょするだけであればまぁ問題はないのですが,開発途中で iPhone や iPad とかから確認したい場合,前エントリ のような設定を,ネットワーク環境が変わるたびにしなおすなんてことはやってられません.
そのあたりを少し幸せにするために,ちょっとした2つのPerlスクリプトを書いてみたので,以下に紹介しておきます.
まずまとめから
(あらかじめ定義しておいた)各ネットワーク環境における名前解決設定のためのファイルをまとめて更新するためのスクリプトを書いてみました:
% update-unbound-hosts.pl
もうひとつ,指定したネットワーク環境に対応する設定でUnboundを再起動する,といったことを,1コマンドで実行するためのスクリプトを書いてみました:
% switch-unbound.pl local % switch-unbound.pl emobile
とりあえずこんな前提として
Unbound設定なディレクトリ
/usr/local/etc/unbound とします.
また,ここで紹介するPerlスクリプトは,/usr/local/etc/unbound/scripts に入っているものとします.
ネットワーク環境
開発機を,次の3パタンのネットワーク環境で利用しているとします.
- 普段のローカル環境(
local) - IPアドレス:
192.168.1.152 - emobile下(
emobile) - IPアドレス:
192.168.144.152 - 実家(
home) - IPアドレス:
192.168.0.152
そして,それぞれ向けのUnbound設定ファイルが,次のようにあるとします.(まぁデフォルトのファイルをコピーするだけでですが><)
/usr/local/etc/unbound/local.conf/usr/local/etc/unbound/emobile.conf/usr/local/etc/unbound/home.conf
名前解決
次のホスト名で開発機にアクセスできるようにしたいものとします.
www.momoco.localdev.momoco.localfoo.momoco.localdev.proj1.localwww.proj2.local
また,次のホスト名については,必ず特定のIPドレスに解決されるものとします.
hoge.example.com=>aaa.bbb.ccc.ddd
Unboundの再起動
% sudo kill -HUP $(cat /usr/local/etc/unbound/unbound.pid)
これでいけますよね?
その1: 名前解決を定義したファイルを書き出すPerlスクリプト update-unbound-hosts.pl
config.pl を,こんな感じで準備します:
+{ network_type => +{qw/ local 192.168.1.152 emobile 192.168.144.152 home 192.168.0.152 /}, rules => [qw/ www.momoco.local % dev.momoco.local % foo.momoco.local % dev.proj1.local % www.proj2.local % hoge.example.com aaa.bbb.ccc.ddd /], };
% update-unbound-hosts.pl /usr/local/etc/unbound/include/emobile.hosts /usr/local/etc/unbound/include/home.hosts /usr/local/etc/unbound/include/local.hosts
/usr/local/etc/unbound/include というディレクトリを作り,その下に,各ネットワーク環境向けの名前解決ファイルができます.
ネットワーク環境「local」向けのファイルはこんな感じ:
% cat /usr/local/etc/unbound/include/local.hosts local-zone: "local." static local-data: "www.momoco.local. A 192.168.1.152" local-data: "dev.momoco.local. A 192.168.1.152" local-data: "foo.momoco.local. A 192.168.1.152" local-data: "dev.proj1.local. A 192.168.1.152" local-data: "www.proj2.local. A 192.168.1.152" local-data: "hoge.example.com. A aaa.bbb.ccc.ddd"
「emobile」向けはこんな感じ:
% cat /usr/local/etc/unbound/include/emobile.hosts local-zone: "local." static local-data: "www.momoco.local. A 192.168.144.152" local-data: "dev.momoco.local. A 192.168.144.152" local-data: "foo.momoco.local. A 192.168.144.152" local-data: "dev.proj1.local. A 192.168.144.152" local-data: "www.proj2.local. A 192.168.144.152" local-data: "hoge.example.com. A aaa.bbb.ccc.ddd"
あとは,Unbound設定ファイル内でこれを include する感じです:
server:
...
include: "/usr/local/etc/unbound/include/local.hosts"
...





