Ruby の Gold 試験を受けてきた
Ruby が好きです。
いつかは Ruby で仕事したいなーって思ってます。
まぁでも、いざ Ruby で仕事するってなったときに、
特にコミュニティーとかで活動してるわけではない凡人が、「Ruby が好きです」なんて言ってもちょっと弱いなーと思い、
もう 2 年ほど前ですが、Ruby の Silver 資格を取得しました。
で、昨年 Ruby の Gold 試験が新設されたということで、遅ればせながらステップアップとして受験してきました。
結果は 80/100。なんとか合格できてホッとしてます・・・。
試験について
発表されてる出題範囲の通りといった感じでした。
中でも変数・定数のスコープ、オブジェクト指向に関する問題が多かったです。
あとはそれぞれの小項目ごとに 1 〜 3 問ほど出題されてるっていう感じでしょうか。
上記ページでは対象バージョンが 1.8.7 となってますが、試験開始前の説明では 1.8.x となってました。
確証はありませんが、1.8.x 内での変更は出題範囲外なのかもしれません。(1.9 からの backport とか)
勉強するとき参考にしたもの
ITトレメ Ruby技術者認定【Gold】試験 過去問題一覧 − @IT自分戦略研究所
Ruby Gold 試験の過去問題(予想問題?)が 1 日 1 問出題されてます。
システムの制約なのか、複数選択の問題は出題されてない(多分)ですが、試験では複数選択の問題が結構出題されました。
Amazon.co.jp: プログラミングRuby 第2版 言語編: Dave Thomas, Chad Fowler, Andy Hunt, 田和 勝, まつもと ゆきひろ: 本
Amazon.co.jp: プログラミングRuby 第2版 ライブラリ編: Dave Thomas, Chad Fowler, Andy Hunt, 田和 勝, まつもと ゆきひろ: 本
ピッケル本ですね。
1.9 に対応した新しいのが出てますが、持ってません。出題範囲は 1.8 なので問題ないんじゃないでしょうか。
ライブラリ編の Object, Module, Class あたりを斜め読みした程度です。
Amazon.co.jp: Ruby技術者認定試験 公式ガイド (ITpro BOOKs): 伊藤忠テクノソリューションズ, Rubyアソシエーション, ITpro: 本
Ruby Silver 試験の対策本です。
問題の内容については Silver のものなので、あまり参考になりませんでしたが、問題の形式は実際の試験に近かったです。
RubyGems.org | your community gem host
試験対策って訳ではないんですが、使ってる gem でわかんないことがあったらソースを読むようにしてます。
その中で得た「こうするのが Ruby 流」「多分こう動く」みたいなものが今回の試験で生きてたように思います。
Google Apps Script で UI が更新されないときに確認すること
最近、なんやかんやあって Google Apps Script やってます。
UI Services っていう、ちょっとしたフォームみたいなのを作る API があって、それを使ってスクリプトを書いてたんですよ。
2つリストボックスがあって、リストボックス1の何かが選択されたら、リストボックス2の項目を置き換えるっていう、
割とありがちな処理だと思うんですが・・・
function onOpen() { SpreadsheetApp.getActiveSpreadsheet().addMenu('Test', [ { name: 'Foo', functionName: 'onClickFoo' } ]); } function onClickFoo() { var app = UiApp.createApplication().setTitle('Foo'); var panel = app.createVerticalPanel(); app.add(panel); var listBox1 = app.createListBox().setId('listBox1'); listBox1.addChangeHandler(app.createServerChangeHandler('onSelectListBox1')); listBox1.addItem('1-1'); listBox1.addItem('1-2'); listBox1.addItem('1-3'); panel.add(listBox1); var listBox2 = app.createListBox().setId('listBox2'); listBox2.addItem('2-1'); listBox2.addItem('2-2'); listBox2.addItem('2-3'); panel.add(listBox2); SpreadsheetApp.getActiveSpreadsheet().show(app); } function onSelectListBox1() { var app = UiApp.getActiveApplication(); var listBox2 = app.getElementById('listBox2'); listBox2.clear(); listBox2.addItem('2-4'); listBox2.addItem('2-5'); listBox2.addItem('2-6'); }
どうも期待通りに動いてくれません。
英語わからないながら以下のページをぼーっと眺めてたら、
Ui Service - Google Apps Script — Google Developers
イベントハンドラの最後に必ず、
return app;
って書いてあったんで、おもむろに追加してみると、
// 省略... function onSelectListBox1() { var app = UiApp.getActiveApplication(); var listBox2 = app.getElementById('listBox2'); listBox2.clear(); listBox2.addItem('2-4'); listBox2.addItem('2-5'); listBox2.addItem('2-6'); return app; // ← 追加 }
いやー、動きました。
イベントハンドラは、必ず (かどうかはわかんないけど、少なくとも UI の更新が発生する時は) アプリケーション (UiInstance) を返すようにしないとダメみたいですね。
Apache + Subversion で Active Directory 認証
会社で Subversion のサーバを立てることになって、
「せっかくだから AD 連携したい」と色々試してたところ、えらくハマったのでメモ。
環境
OS は Debian Squeeze。
Samba で AD ドメインに参加したりとかは、特にしてません。
Apache モジュールの設定
関連する Apache モジュールを有効にする。
# a2enmod alias auth_basic authnz_ldap authz_default authz_user dav dav_svn ldap
/etc/apache2/mods-enabled/dav_svn.conf を編集。
<Location /svn> DAV svn SVNPath /path/to/repos AuthType Basic AuthName "Subversion Repository" AuthBasicProvider ldap AuthzLDAPAuthoritative Off AuthLDAPUrl "ldap://dc.example.com:389/DC=example,DC=com?sAMAccountName?sub?(objectClass=*)" NONE AuthLDAPBindDN hoge@example.com AuthLDAPBindPassword hogehoge AuthzSVNAccessFile /path/to/repos/conf/authz Require valid-user </Location>
OpenLDAP の設定?
/etc/ldap/ldap.conf に以下の行を追加。ハマったとこ。
REFERRALS off
正直、何なのかよくわかってない。
OpenLDAP 2.1 ´ÉÍý¼Ô¥¬¥¤¥É: ʬ»¶¥Ç¥£¥ì¥¯¥È¥ê¥µ¡¼¥Ó¥¹¤Î¹½ÃÛ
この辺の話だと思うんだけども・・・
とりあえずこれらの設定で、Active Directory 認証ができるようになった。よかった。