[processing]新サイトを準備中です

Written by uechoco 3月 15
[processing]新サイトを準備中です はコメントを受け付けていません。
この記事を読む時間:17くらい

Processingだけを扱った新サイトを準備中です。私だけでなく、共同で立ち上げを予定しています。そのうちこのブログに投稿したProcessing関連の記事の多くを寄稿する予定です。近日中に開設する予定です。

っていう告知だけ。

[JavaScript]UnixTimeを取得する

Written by uechoco 3月 11
この記事を読む時間:58くらい

最近JavaScriptでUnixTimeを取得するプログラムを作る機会が増えてきた。ので、メモ代わりにここに1つ関数を書き残す。

  1. function getUnixTime()
  2.  {
  3.    return parseInt((new Date)/1000);
  4.  }

別の書き方では

  1. function getUnixTime()
  2.  {
  3.    return ~~(new Date/1000);
  4.  }

ようはnew Dateの中身がUNIXTIMEのミリ秒なので、切り捨ててやる。整数への変換はparseInt関数を使うとか、チルダx2でやるとか。チルダx2についてはMath.floor を使わずに小数を整数にする – IT戦記等を参考に。

[バージョン管理]分散型レポジトリの「分散」の意味を取り違えてた

Written by uechoco 3月 11
[バージョン管理]分散型レポジトリの「分散」の意味を取り違えてた はコメントを受け付けていません。
この記事を読む時間:126くらい

分散型レポジトリが最近話題だけれど、字面だけ見てたから意味を取り違えていたらしい。

  • × 中央サーバがバラバラなところにある。BitTorrent的なイメージ(ファイルの分散)
  • ○ 各個人のローカル環境にレポジトリがあり、マスターレポジトリもその1つ(レポジトリの分散)

前者だったらおかしいよね。ちなみにSubversionとかCVSのような集中型レポジトリはレポジトリが1か所にしかない奴。最近はHDDの値段が下がって容量が上がったから、ローカルにレポジトリがあるってのも確かに便利だな。特にノートPCで外出先でやってるときは便利かもしれない。だから分散型レポジトリのgitが人気なのか。今のノートPCは3年前の60GBしかない奴だから正直容量不足に悩んでるし今は無理だよね。ノートPC買い換えたときにgitを考えてみようかな。

ちなみに、subversionにはsvkっていう派生プロジェクトがあるらしく、subversionを分散レポジトリ的に使うことができるらしい。
Subversion+svkでらくらく分散リポジトリ:第3回 SVKとSubversion|gihyo.jp … 技術評論社

ってことで、字面だけで知った気にならないで、関連記事の1つや2つは読んで、しっかりとしたIT知識を持ちましょう。俺。

[Excel 2007]オブジェクトの選択コマンド

Written by uechoco 3月 08
[Excel 2007]オブジェクトの選択コマンド はコメントを受け付けていません。
この記事を読む時間:128くらい

 Excel 2007で表に出なくなった機能で[オブジェクトの選択]というコマンドがあります。Excel 2003などではオートシェイプのツールバーの中に矢印アイコンで表示されていた機能です。セルには干渉せずにシート状のオブジェクトだけを範囲選択できるこのコマンドは使いこなすと結構作業がはかどります。

 [オブジェクトの選択]は2007ではなくなってしまったわけではなく、カテゴリが変わってしまっただけのようです。[ホーム]タブの[編集]メニューの[検索と選択]というカテゴリにしっかりと入っていました。
excel_2007_object_selector_command
私はめんどくさがり屋なので、さらにクイックアクセスツールバーにも追加しています。個の方が[オブジェクトの選択]コマンドを解除するのが楽なんです。
excel_2007_object_selector_command_quick

 Excel 2007になってからインターフェースがガラリと変わって、未だに使いなれていない人や移行をためらってる人が結構いるのではないでしょうか。正直、私もOffice 2007はPowerPoint以外は操作性の面で否定的なのですが、とはいっても世の中は前向きに進んでいるので慣れようと心掛けています。おそらく昔あったコマンドは表に出なくなってしまったものもコマンドとしてはしっかり残っていると信じています。今回の[オブジェクトの選択]コマンドのように1つ1つサルベージしていくしかなさそうですね。

[OpenPNE3]管理画面付きプラグイン(opFreepagePlugin)#6 プラグインのパッケージング

Written by uechoco 3月 07
[OpenPNE3]管理画面付きプラグイン(opFreepagePlugin)#6 プラグインのパッケージング はコメントを受け付けていません。
この記事を読む時間:1219くらい

前回まででopFreepagePluginの開発部分は完了しました。今回はプラグインのバージョン情報を定義し、アーカイブ化することで、外部に公開できるファイルにしたいと思います。なお、このプラグインのパッケージング方法はOpenPNE 3.0.0で確認しているものです。近いうちにプラグインリリース用symfony拡張コマンドを充実させる予定もあるようですので、その点は加味してご覧ください。

プラグインのパッケージングは非常に簡単です。まずはプラグイン情報が書かれたpackage.xmlを作成します。これもコマンド1つで作成できます。今回はopFreepagePluginをバージョン0.9.0、ステータスをbeta、リリース文を”First release”とします。以下のようなコマンドになります。

  1. ./symfony opPlugin:define opFreepagePlugin 0.9.0 beta "First release"

以下のような出力がなされます。

  1. [uechooc@localhost pneroot]$ ./symfony opPlugin:define opFreepagePlugin 0.9.0 beta "First release"
  2. >> sfPearFrontendPlugin Attempting to discover channel "plugins.openpne.jp"...
  3. >> sfPearFrontendPlugin downloading channel.xml ...
  4. >> sfPearFrontendPlugin Starting to download channel.xml (598 bytes)
  5. >> sfPearFrontendPlugin .
  6. >> sfPearFrontendPlugin ...done: 598 bytes
  7. >> sfPearFrontendPlugin Auto-discovered channel "plugins.openpne.jp", alias
  8. >> sfPearFrontendPlugin "plugins.openpne.jp", adding to registry
  9. >> sfPearFrontendPlugin Attempting to discover channel "pear.symfony-project.com"...
  10. >> sfPearFrontendPlugin downloading channel.xml ...
  11. >> sfPearFrontendPlugin Starting to download channel.xml (663 bytes)
  12. >> sfPearFrontendPlugin ...done: 663 bytes
  13. >> sfPearFrontendPlugin Auto-discovered channel "pear.symfony-project.com", alias
  14. >> sfPearFrontendPlugin "symfony", adding to registry
  15. >> sfPearFrontendPlugin Attempting to discover channel
  16. >> sfPearFrontendPlugin "plugins.symfony-project.org"...
  17. >> sfPearFrontendPlugin downloading channel.xml ...
  18. >> sfPearFrontendPlugin Starting to download channel.xml (639 bytes)
  19. >> sfPearFrontendPlugin ...done: 639 bytes
  20. >> sfPearFrontendPlugin Auto-discovered channel "plugins.symfony-project.org", alias
  21. >> sfPearFrontendPlugin "symfony-plugins", adding to registry
  22. >> sfPearFrontendPlugin Analyzing
  23. >> sfPearFrontendPlugin apps/mobile_frontend/modules/freepage/actions/actions.class.php
  24. >> sfPearFrontendPlugin Analyzing
  25. >> sfPearFrontendPlugin apps/mobile_frontend/modules/freepage/templates/indexSuccess.php
  26. >> sfPearFrontendPlugin Analyzing
  27. >> sfPearFrontendPlugin apps/pc_backend/modules/opFreepagePlugin/actions/actions.class.php
  28. >> sfPearFrontendPlugin Analyzing
  29. >> sfPearFrontendPlugin apps/pc_backend/modules/opFreepagePlugin/templates/editSuccess.php
  30. >> sfPearFrontendPlugin Analyzing
  31. >> sfPearFrontendPlugin apps/pc_backend/modules/opFreepagePlugin/templates/indexSuccess.php
  32. >> sfPearFrontendPlugin Analyzing
  33. >> sfPearFrontendPlugin apps/pc_backend/modules/opFreepagePlugin/templates/listSuccess.php
  34. >> sfPearFrontendPlugin Analyzing
  35. >> sfPearFrontendPlugin apps/pc_backend/modules/opFreepagePlugin/templates/newSuccess.php
  36. >> sfPearFrontendPlugin Analyzing
  37. >> sfPearFrontendPlugin apps/pc_backend/modules/opFreepagePlugin/templates/_form.php
  38. >> sfPearFrontendPlugin Analyzing
  39. >> sfPearFrontendPlugin apps/pc_backend/modules/opFreepagePlugin/templates/_submenu.php
  40. >> sfPearFrontendPlugin Analyzing
  41. >> sfPearFrontendPlugin apps/pc_frontend/modules/freepage/actions/actions.class.php
  42. >> sfPearFrontendPlugin Analyzing
  43. >> sfPearFrontendPlugin apps/pc_frontend/modules/freepage/templates/indexSuccess.php
  44. >> sfPearFrontendPlugin Analyzing config/config.php
  45. >> sfPearFrontendPlugin Analyzing lib/opFreepagePluginRouting.class.php
  46. >> sfPearFrontendPlugin Analyzing lib/filter/FreepageFormFilter.class.php
  47. >> sfPearFrontendPlugin Analyzing lib/filter/base/BaseFreepageFormFilter.class.php
  48. >> sfPearFrontendPlugin Analyzing lib/form/FreepageForm.class.php
  49. >> sfPearFrontendPlugin Analyzing lib/form/base/BaseFreepageForm.class.php
  50. >> sfPearFrontendPlugin Analyzing lib/model/Freepage.php
  51. >> sfPearFrontendPlugin Analyzing lib/model/FreepagePeer.php
  52. >> sfPearFrontendPlugin Analyzing lib/model/map/FreepageMapBuilder.php
  53. >> sfPearFrontendPlugin Analyzing lib/model/om/BaseFreepage.php
  54. >> sfPearFrontendPlugin Analyzing lib/model/om/BaseFreepagePeer.php

いろいろなファイルを解析していますが、これらはパッケージ内に含まれるファイル一覧を作成し、それぞれのファイルのチェックサムを取得している処理です。package.xmlには様々な設定項目があるのですが、コマンドラインで指定できる項目以外は固定で挿入されてしまいます。例えば、ライセンスはApache Licenseで固定されています。

パッケージ情報が生成できたので、アーカイブを作成します。これもコマンド一発です。以下のコマンドはopFreepagePluginのアーカイブををカレントディレクトリに作成します。

  1. ./symfony opPlugin:archive opFreepagePlugin ./

このコマンドを実行後、カレントディレクトリにはopFreepagePlugin-0.9.0.tgzというファイルが作成されています。バージョン名が付加されたtgzファイルですね。あとはこのファイルを公開すれば完成です。PEARのチャンネルサーバがあればコマンドラインからのインストールにも対応できると思うのでいいですね。plugins.openpne.jpなんかが一般開放されるとうれしいのですが。

以上でこの連載シリーズは終了です。OpnePNE3のプラグインが増えるといいですね!技術的な知識がある運営者ならばプラグインで独自の機能を作って自分のSNSを盛り上げることも可能でしょう。OpenSocialとsymfonyプラグインの双方で拡張できるOpenPNE3の可能性は無限大です!