スタッフブログ
WEBをお仕事にされている、したいと思っている方のためのSNSを検索していて
andromeda
http://www.andromeda8.com/
というSNSを見つけました。てっきり招待制だと思い、誰か知ってる人いないかなーと制作会社を見てみたらなんと昨年春に名刺交換をした 株式会社カメレオン さんでした。
とはいえ一度お会いしただけだったのでいきなり招待してくださいとも言いにくいなぁと思いつつサイトをいろいろ拝見していたら当時は別のところだったのですが現在の事務所はなんと弊社から徒歩10分以内ぐらいのところに。会社規模も当社と同じぐらい、社内blogを見ているとだんだん興味が湧いてきてついにメールをしてみました。
早速お返事をいただき、実は招待制でなく新規登録がサイトからできることがわかったのですが、これも何かの縁と本日カメレオンの福留さんが弊社を訪ねてきてくださいました。
これもまた偶然なのですが、弊社のビル2Fにある貸し会議室で行われている朝食会に参加されているとのこと。こういうところもご縁だなぁと思いつつ。
カメレオンの福留さん、弊社社長と私とでIT業界のあれこれや今後の方向性など意義のあるお話をさせていただきました。
株式会社カメレオン
http://www.kameleon.jp/
また本日社長ブログに弊社訪問の際のことを書いていただきました。
http://ameblo.jp/kameleon/entry-10140323009.html
エールの交換ではないですが私も同じように大変興味深いできごとでしたのでblog記事にさせていただきました。
カメレオンさんはandromedaのようにOpenPNEを導入したり、EC-CUBEを利用したショッピングサイト、WEBデザイン、MovableTypeを利用したサイトなど幅広い業務をされています。
弊社では毎週金曜日に何か発表とかがあるのですが、今回はOpenIDのRPの実装方法について話しました。
プレゼン資料を置いておきますので、参考になれば幸いです。(カーソルキーで操作します)
OpenID RPの作り方
isEnabled()
canGet()
hasCanged()
contains()
containsKey()
こんにちわ。なおとです。
今日はいつもよりも開発よりの話題をしたいと思います。 それは、Subversionからチェックアウトしたディレクトリ以下から、.svnディレクトリを削除する方法です。
.svnディレクトリには、バージョン管理のためのメタデータが格納されていて、プログラムそのものの動作には影響しないものです。 これを綺麗に消してしまう方法を検索してみると、LinuxなどのUNIX系の環境では、シェルからワンライナー1発で解決する方法が見つかります。
それでまたくOKなのですが、Windowsユーザーでも使えるようなPerlスクリプトを書いてみました。 きっと誰が書いても同じようなことになると思います。
こういった短いスクリプトを「書き捨て」にできるのが、できるエンジニアと言われる条件のひとつのようです。 しかし私は書き捨てにせず、こうしてブログのネタに再利用しています^^;;。
#!/usr/bin/perl
use strict;
use warnings;
use File::Find;
use File::Path;
# rmtree .svn dirs
# 検査したいディレクトリの親のpath
use constant BASE_DIR => '/var/www/';
# 検査したいディレクトリ名のリスト
use constant TARGET_DIRS => ('html', 'xoops_trust_path');
for my $dir (TARGET_DIRS) {
find(\&del_svn, BASE_DIR . $dir);
}
sub del_svn {
rmtree($_, 1, 1) if (-d $_ and $_ eq '.svn');
}
OpenIDまわりの用語は結構多いのですが、どれもわかりづらいものが多いのでここでまとめてみます。
・OP
認証を行うサーバ。OpenID Provider。IdPとも。
・RP
OPを使って認証をするサービス。Relying Party。Consumerとも。「Relaying」ではないので注意。
・Claimed Identifier
ユーザが自分のものだと主張するID。いわゆる「あなたのID」。
・SREG
OpenIDに付随するユーザの情報を取得するためのプロトコル。OpenID Simple Registration Extension。
・Yadis
URIからその対応するプロトコルを取得するためのプロトコル。OpenIDに限ったものではない。
・nonce
なりすまし防止のための文字列。
・Diffie-Hellman鍵共有
一般経路で暗号鍵の安全な共有を行うアルゴリズム。PGP等でも使用されている。
・XRDS
Yadisで使われるXML文書の形式。
その他に関しては、OpenIDドキュメントの和訳(他にもあります)などを見るとわかると思います。
このあたりの用語と、セキュリティ問題とかを覚えておくと、実装の話以外では大体理解できると思います。
これは、毎週金曜は、通常の受託案件の開発をとめて、各スタッフさんに自分の作ってみたいプログラムの開発や、技術書を読むなど、普段は業務を優先するとつい後回しになってしまうことをやってもらうようにしています。
有名なGoogleの20%ルールと同じです(^^;
# 週休二日なんで、週に1日だとちょうど20%
ちなみに、名前はmixiの1デーフリーからいただきました(^^;
■フライデーフリー制度のメリットとは
◆メリット1.月曜から木曜の仕事がだれません。
週5日勤務だと、水曜の朝の段階では、まだ今週十分な時間があるように思えますよね。
でも、業務を行う日が、週4日しかないと、水曜の朝で今週業務に使えるのはもう残り半分だけってことになります。
おかげで、平日だれることがありません。
◆メリット2.スタッフの能力UPになります。
「7つの習慣」に「刃を研ぐ」というのがあります。
古びた刃を研いでないノコギリで必死になって木を切ろうとしても、大変なわりにいつまでも切れません。先に刃を研いだ方が木を切るのは断然楽になります。
「刃を研ぐ」とは、仕事をこなす能力をあげるために時間を投資することです。
勉強熱心な開発者がその能力を磨くには、そのための時間を確保するだけでも、かなり効果があると思っています。
その結果、通常の業務を更に効率的にこなせるようになると思ってます。
◆メリット3.人材確保にも効果あるかも
今、実力のある開発者を確保するのはかなり難しくなってきています。
こういう制度があることで、RYUSで働いてくれる方が増えたり、今働いてくれてるスタッフの皆さんがこの先もRYUSで働いてくれたらなぁと思います。
■大変な面もありますよ。。。
フライデーフリー制度の導入により、通常業務をこなす日数は週に4日となりました。
でも、アウトプットが4日分になるのを認めてるわけではありません。4日で、これまでの5日分のアウトプットを求めてますので、スタッフはけっこう大変かもしれません。
そろそろRYUSもプライバシーマークを導入しないといけないのでは、ということを感じてきました。
お客様のニーズもありますが、社内での運用も必要だと思われます。
本を購入して研究したり、ホームページをいろいろ見て調べてみましたが
どうやら自力だけで導入するのは難しそう!
と、結論しました。
幸い、知り合いにJ-SOX法に詳しい方がいらしたのでお話を聞き、ますます導入の必要性やコンサルタントの必要性を感じています。
1年かかると言われている取得期間ですがなんとかがんばって可能な限り早期取得を目指します。
今回検討して思ったのは やっぱり餅は餅屋! ってことで、必要なことは専門家に協力していただくのが一番だなぁ、と。
ということでソフトウェアのことでお困りでしたらまずは専門家=RYUSにご相談ください
#とちょっと宣伝モードでした
<?php
$a = array('a', 'b', 'c');
$b = $a;
$b[0] = 'x';
var_dump($a);
var a = ['a', 'b', 'c'];
var b = a;
b[0] = 'x';
alert(a);
RYUSのなおとです。先週末はLL Futureに第35回PHP勉強会と、盛りだくさんでした。でも両方とも遅刻してしまいました・・・。
さて今回話題にするのは、NONEモジュールです。これはほぼなにもしない、いわば骨組みだけのモジュールです。2003年頃にXOOPS2向けに公開されたようです。
モジュールについて勉強する過程で、これを知りました。しかし残念なことにEUC-JP固定で作られているようでした。
私は普段、最新のXOOPS Cube Legacy、例えばホダ塾ディストリのバージョン1.0.2を使うことが多く、サイトをUTF-8で構成したりします。そこで今回、NONEに言語ファイル対応部分だけ付け加え、japanese, english, ja_utf8の言語ファイルを用意しました。
D3対応のnone
実は後で気付いたのですが、d3noneというモジュールが既に存在するようです。もちろん言語ファイル対応で、モジュールを簡単に複製可能な仕様の、いわゆるD3対応です。これをみると、自作モジュールをどうしたらD3対応にできるかの、理解の参考になります。
d3noneをみて悔しかったので、ちょっと違う方向性でまとめてみました。
もともとのNONEは、モジュールの作り方を知るための教育的な位置づけも意図されていたと思います。原点に回帰して、xoops_trust_pathやaltsysなどのD3対応をしない、言語ファイル対応だけに集中してみました。
しかしこの半端さ、これにどういった意味があるのか分かりませんが、こっそり公開してみます。
satoです。
今回はPHP5.2のreadline拡張をビルドしたときにハマったことを書いておきます。
PHPの拡張はPHPのビルド時に指定することが多いと思いますが、sharedでビルドしてextension=〜.soで適用することもできます。こちらのほうが後から取り外しもできるので便利です。
しかし今回はそもそもPHPのビルド時の指定を忘れていたので、直接単体でビルドを試してみます。
拡張はPHPのソースのext以下に入っています。今回はreadlineなので、ext/readlineに移動してphpizeしてconfigureします。
checking for readline in -ledit... no
configure: error: edit library required by readline not found
とか言われてしまいます。
libeditは、readlineのBSDライセンス版的なものなのですが、私の環境ではreadlineしか入っていなかったのでreadlineを使いたいところです。
configureを見ると
# Check whether --with-libedit or --without-libedit was given.
とか書いてある行があります。
--without-libeditとか書けば大丈夫なのでしょうか。
./configure --with-php-config=/opt/php5.2/bin/php-config --without-libedit --with-readline=/usr/lib
checking for readline in -ledit... no
configure: error: edit library required by readline not found
変化がありません。--with-libedit=noでも変わらないようです。
configureを追うと、
echo "$as_me:$LINENO: checking for libedit readline replacement" >&5
echo $ECHO_N "checking for libedit readline replacement... $ECHO_C" >&6
# Check whether --with-libedit or --without-libedit was given.
if test "${with_libedit+set}" = set; then
withval="$with_libedit"
PHP_LIBEDIT=$withval
else
PHP_LIBEDIT=no
if test "$PHP_ENABLE_ALL" && test "yes" = "yes"; then
PHP_LIBEDIT=$PHP_ENABLE_ALL
fi
fi;
このあたりでlibeditのチェックをしていることがわかります。
echoでデバッグすると、どうやらPHP_ENABLE_ALL="yes, shared"になっているため、常に通ってしまうようです。
しかしconfigureを読むのに慣れていないので、この変数がどこで設定されているのかはわかりませんでした。
よくわからないので、
if test "$PHP_ENABLE_ALL" && test "yes" = "yes"; then
PHP_LIBEDIT=$PHP_ENABLE_ALL
fi
を削除してしまします。が、変化がありません。
PHP_LIBEDIT=no
の次の行で、echo $PHP_LIBEDITとしても"yes, shared"と出力されています。
よくわからないので、その後のチェック終了後だと思われる(3242行目あたり)
ext_output="yes, shared"
ext_shared=yes
test "$PHP_LIBEDIT" = "no" && PHP_LIBEDIT=yes
の後に
PHP_LIBEDIT=no
と追加してしまいます。これでconfigureが通り、無事ビルドできました。
もしかすると何か設定があるのかもしれませんが、とりあえず今回はこれで正常に利用できているのでこれでよしとします。
正しい方法をご存じの方がいらっしゃいましたら是非ご教授お願いします。