github


f:id:tenman:20100219110403p:image
gitHubというサービスは、有料サービスですが、オープンソース向けに300MBの無料で利用できるリポジトリを提供しています。
リポジトリというのは、版を管理するサービスで、プログラムのように、長い期間改良を繰り返していく用途のものは、改良したつもりでいたのが、ほかのところの不具合を引き起こしていたりして、手戻りしなくてはいけなくなったり、派生物を作る必要が出たりします。そのようなモノの管理が出来るサービスです。

専用の、プログラムをPCにインストールして使います。


別にプログラム専用ということではないので、普通の文書の保存や更新にも使えます。

コードスニペットや、思いつきのちっちゃなクラスを置いておく場所があるといいと漠然と考えていた。
WEBで自前で、リビジョン管理を行うなどというのも、敷居高く....

最近、GitHubとかいうところにコードを置いている人を見かけるようになった。OOCSSもそこだった気がする。


探すと、ruby族の人たちがたくさん使って、流行らせているらしい。


私は、コマンドラインも、英語も苦手だし、気後れしていたが、うまく作ってあって、結局使ってみることにした。

gitHubには、プロジェクト管理用のリポジトリと、ファイルのリビジョン管理が出来るgistという二つのサービスがあります。

gitHubを使い始めて

選択範囲をGistに保存するBookmarklet(再掲) (Kanasansoft Web Lab.)というブックマークレットもあったりして、自分用のスニペット倉庫を作るのに使える。
それらを、編集すると、自動的にリビジョンが管理されていく。

ワードプレスに似ている。


また、gitには、Service Hooksという機能があり、これがいい。

ローカルからpushすると、同時に指定したURLにPOSTしてくれる連鎖的な機能で、例えば、push下と同時に、twitterで囁いたり、更新されたものを、WEBサイトに反映するといったことが出来る。


実際に送られる$_POST ["payload"]は以下の内容のようなものでした

array(1) {
  ["payload"]=>
  string(963) "{
"before":"******"

"commits":[{"removed":[]
"message":""
"modified":["README"]
"url":"*****"
"author":{"email":"メールアドレス"
"name":""}
"timestamp":""
"added":[]
"id":""}
{"removed":[]
"message":"3th"
"modified":["README"]
"url":"*****"
"author":{"email":"メールアドレス"
"name":""}
"timestamp":""
"added":[]
"id":"******"}]
"ref":"refs/heads/master"
"after":""
"repository":{"description":"my hello github"
"watchers":1
"forks":0
"fork":false
"open_issues":0
"private":false
"homepage":""
"url":""
"owner":{"email":"メールアドレス"
"name":""}
"name":"test"}}"
}

これもまたワードプレスに似ている。


ブログなどで、htmlソースの記述をしたりする人のなかには、データの移行のときに、ソースの記述がおかしくなって困っている人も少なくない。ソースコードをまとめて管理することも出来ないので、gitHubでコードを書いて、ブログに埋め込むというのも悪くない。

ワードプレスプラグイン検索でも、gitHub関連のプラグインが存在するようなので、ちょっとこの先、楽しみだと思う。

教訓

windowsユーザだと、コマンドラインツールは使い慣れていない。(GUIツールもあるようですが、)

sshでローカルから更新をpushする場合など、パスフレーズを入力しても受け入れなくなることがあり、いろいろやり直していて、結局、自分の現在いるパスがおかしいことに気づく。

自分がどこで、何の作業をしているかということは、コマンドラインツールを使う場合大事みたいです。

はてなの、リンク記法がgithub:titleという書き方ではうまく使えない。

公開してみたクラスの概要

どんなことが出来るの

出来上がったphpを表示させると、「あっ、ここのところのテキスト name じゃなくて、名前に変更してくんない。」とか、「読みズらいから変更」などということがあると思います。


そんな時に、配列の記述内容を変更すると、文字も元々指定してあるhtmlタグも変更できます。というクラスです。

コーディングがより自由になるんです。

テンプレート触るのだって、面倒です。どのテンプレート使ってんのか分からないということもありますよね。


いきなり、デザイナーの人に媚を売るようなクラスです。

国際化済みのプログラムはたくさんありpoEditがあればいいと思っていたのですが、自分で作る小さなプログラムに、getText使っても、大げさだし、htmlをちょっと変更ということも出来ないのが、作るきっかけです。


指定は、クラス(マルチクラス対応)id 文字列そのもので適用範囲が決められるので、気にいらないもじれつこぴぺして、配列を一個追加すればOK

その配列は、

$coding = array(
        "was entryed"   => array("<taggroup>value</tag>","さんはエントリーしました"),
        "default"       => array("<taggroup>value</tag>"),
        "someone used this mail" => array("<taggroup>value</tag>","メールアドレスは、登録済みです"),
        "we need name"  => array("<taggroup>value</tag>","名前は必ず入力してください"),
"変えたい文字列をここにこぴぺ" =>array("tag group valueがプログラムで指定したものに
置き換わるから、変更するなら直接tagしていする",
"この引数になんか書いてあったら、元の値は、この値に置き換えられる"),
"クラスやID" => array("このタグパターンが適用される","文字列の変更はここに書く"),

        );

な、感じです。

そのように変更が出来るような書き方は、以下のようにします。

smartyを使って、テンプレートを使っているような場合、最初は、テンプレートもプログラムを書く人が書いてしまうことがあると思います。

ある程度まとまったものだと、テンプレートでいいのですが、文字そのものやそれに近い、サイズのものは、プログラムの中で 

$smarty->assign("hoge","ahhhhhhha");という風に書きます。

この部分を

require_once("ht_coding.php");

$coding = array(
"default" => array("<taggroup>value</tag>"),
);
$ht = new ht_coding($coding);

$smarty->assign("hoge",$ht->tag("ahhhhhhha","p.paratypeB"));
や
$smarty->assign("hoge",$ht->tag("ahhhhhhha"));
や
$smarty->assign("hoge",$ht->tag("ahhhhhhha","h2#hoge"));

という風に書くことでできるようになります。

"ahhhhhhha"のところは、入れ子でも動作します。