Seleniumで自己署名のSSL証明書を使う
Selenium Serverを使ってWebアプリのテストをするとき、サーバのSSLがテスト用の自己署名のものだとSeleniumのテストが途中で止まってしまうので、以下のように-trustAllSSLCertificates
オプションをつけて起動してやるとよいです。
起動コマンド
$ java -jar /path/to/selenium-server-standalone.jar -port 4444 -trustAllSSLCertificates
参考にした情報
http://blog.mogotest.com/2010/04/13/how-to-accept-self-signed-ssl-certificates-in-selenium/
Github Pagesでプロジェクトページを作ってみた
3ヶ月ほど前になるのですけど、PHPでマイグレーションツールを作ったのです。
PHPMigrate - PHPでマイグレーションツールを作った
これはPHPファイル一つで動作する簡易マイグレーションツールで、実際にしばらく使っていたのですが、運用しているシステムが複数のDBスキーマ管理したり、同じスキーマだけど自動テスト用と開発用、本番用で接続先が違ったりと複雑化してきて、どうにも使いにくくなってきました。
とういうわけでファイル一つで動作するという手軽さは捨てて、もっと構成管理しやすくしたバージョンに新しく書き直しました。テストコードもつけてpackagistに登録してComposerでのインストールに対応させたりもしました。
で、ドキュメント書くついでにGithub Pagesもいじってみようと思って、ちょっと調べながらプロジェクトページを作ってみました。わりと簡単にそれっぽいページができましたよ。
リポジトリ自体は自分でつけたスターいっこしかないけど、ちょっと気分がいいのでブログ書きます。
Github Pages
一応Github Pagesについて、ざっくり説明しておきます。これはGithubのリポジトリやユーザアカウントに関連付けたWebサイトが作れて、ホスティングしてくれるGithubのサービスです。
最初の登録方法は以下などを参考にすればいいと思います。
https://gist.github.com/weed/3608503
GithubらしいのがページのソースはGitリポジトリにコミットして管理するという点。今回私が作ったリポジトリに関連づけるページではgh-pagesというブランチが作られるので、そこにサイトのソース一式をコミット、pushする。そうして決められたURLにアクセスするとWebページを表示してくれる仕組みになっています。
また、デザインテーマに最初からかっこいいやつがいろいろ用意されています。
Jekyll
さて、このGithub Pagesですがページを編集するためのCMSみたいなものはなく、基本的には自分で生のHTMLをいじくることになります。ただGithub Pagesはサイトを表示する時JekyllというRuby製のHTMLジェネレータを通してリポジトリの内容をWebページにレンダリングしています。
Jekyllは普通のHTMLはそのままHTMLとして出力して、markdownで書いたページがあれば、HTMLにしてくれるます。またlayout機能をもっているので、デザインテンプレート部分だけHTMLで書いてコンテンツ部分をmarkdownで書くようなことができます。
プログラムのように動的にコンテンツを変えることはできませんが、共通部分を抜き出して部品化できるので、効率的にサイトを編集できます。
ページ作成を始める - ローカル仮想環境にJekyllをインストールする
さて、markdownで書いたコンテンツを確認するのにいちいちGithubにpushするのは面倒なので、 ローカルにあるCentOS仮想環境にRubyとJekyllを入れて、 手元でも確認できる環境をつくります。RubyはRVMでインストールしました。以下の記事などを参考にどうぞ
http://kohkimakimoto.hatenablog.com/entry/2013/04/09/185204
Jekyllはgemでインストールするだけ。以下のコマンドを実行します。
$ gem install jekyll
ページのブランチをcloneする
ページのソースを管理しているブランチをローカルにcloneします。
$ git clone git@github.com:kohkimakimoto/lib-migration.git
$ cd lib-migration/
$ git checkout gh-pages
Jekyllの確認用のサーバを立ち上げる
Jekyllには組み込みサーバがバンドルされています。ページ編集中にこれを立ち上げておき、ファイルを更新すると随時自動でHTMLを再生成してくれてブラウザで確認できるようになります。
$ jekyll serve --watch
デフォルトでport4000でサーバが起動するので
http://192.168.56.1:4000/
とかブラウザでアクセスすればサイト表示が確認できます。
レイアウトファイルを作って、デザインとコンテンツを分離する
_layouts
ディレクトリを作ってその配下にdefault.html
というファイルを作ります。以下の様な構成でHTMLを書きます。{{ content }}となっているところが、後で別途作るコンテンツ用のページに置き換わることになります。
<html>
<head><title>{{ page.title }}</title><head>
<body>
{{ content }}
</body>
</html>
コンテンツをmarkdownで書く
index.md
を作成して以下のような感じにコンテンツをmarkdownで書きます。上部にあるlayout,titleの指定で、layoutを選択し、タイトルを差し込んでいます。
---
layout: default
title: LibMigration
---
## A minimum database migration library and framework for MySQL.
LibMigration is a minimum database migration library and framework for MySQL.
...
さらにdocumentation.md
とかcommands.md
とかページごとにmarkdownファイルを作ってコンテンツ増やしていきます。
コミットしてpush
ひと通り、ページを作成したら、コミットしてpushします。
$ git add .
$ git commit -a
$ git push origin gh-pages
キャッシュされているのかジェネレートにタイムラグがあるのか、Github Pages上ではすぐに更新内容が反映されないことがあるので、その場合はしばらく待ちます。
あとソースコードの記述をハイライトさせたかったので、jQueryとjQuery Syntax Highlighterを使いました。javascriptやcssもそのままコミットすればいいです。コードのハイライトは以下の様な表示に。
というわけで、ひと通りの作業はこんな感じです。完成したページは以下からどうぞ。
VirtualBoxでvmをクローンした後ネットワークが繋がらなくなったときの対処
Device eth0 does not seem to be present, delaying initialization
のメッセージがでて接続不可になったときのこと。Macアドレスが変更されているのが原因。
/etc/sysconfig/network-scripts/ifcfg-eth**
のMACアドレスを修正して、
/etc/udev/rules.d/70-persistent-net.rules
の内容を全部消す。
最後にVMをリブートして反映。
RVMをインストールするとchefが"Could not find chef"となってしまう場合の対処方法
chefがOmnibus Installationで/opt/chef/配下に組み込みRubyと一緒にインストールされている環境にて、別途RVMのRubyを入れると、以下のようなエラーが表示されて動作しなくなりました。
# chef-solo -c /var/chef/config/solo.rb -j /var/chef/nodes/devel.localdomain.json
/opt/chef/embedded/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find chef (>= 0) amongst [bundler-1.3.5, bundler-unload-1.0.1, rake-10.1.0, rubygems-bundler-1.2.0, rvm-1.11.3.8] (Gem::LoadError)
from /opt/chef/embedded/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:256:in `to_spec'
from /opt/chef/embedded/lib/ruby/site_ruby/1.9.1/rubygems.rb:1231:in `gem'
from /opt/chef/bin/chef-solo:22:in `<main>'
そんでちょっと調べてみたら、公式サイトにもこの現象について書かれています。
http://wiki.opscode.com/display/chef/Installing+Omnibus+Chef+Client+on+Linux+and+Mac
OmnibusのGemよりRVMのGemを先に探しに行くらしいのでエラーになるらしい。
対処法ですが、sudo
かsudo -s
を使って実行すれば、/etc/profile.d/rvm.sh
をロードしなくなるのでRVMの影響をさけることができ、Omunibusの閉じた環境で実行してくれます。
# sudo chef-solo -c /var/chef/config/solo.rb -j /var/chef/nodes/devel.localdomain.json
現在のログインユーザがrootでもsudoするのがミソです。
デプロイツールAltaxをPackagistに登録したよ。
以前作ったPHP製デプロイツール。
これをPackagistに登録しましたよ。
というわけで、composerを使っているユーザはcomposer.json
に以下のように記述してinstallコマンドを実行すれば、プロジェクトのvendorディレクトリのbin配下にaltax
コマンドがインストールされます~。
{
"require": {
"kohkimakimoto/altax": "dev-master"
}
}
求人募集をHTTPレスポンスヘッダに埋め込む
のHTMLソースに求人が書いてあって、ちょっとニヤリとしたのです。 ...あ。いいこと思いついたよ! それなら、HTTPレスポンスヘッダに求人情報を埋め込むってのはどうかな?
エンジニアなら新しいサービスやサイトを見つけると、HTTPのヘッダを確認したくなっちゃうよね!
というわけで、PHPで書くとこんなんです。
<?php
header("Recruit-Message: Are you a programmer? Why don't you work with us. Please visit our recruit page -> http://ourcompany/recruit.html");
企業のよりよい求人活動の一つとしてご利用いただければ幸いです。
CentOSにslコマンドをインストールする
ジョークコマンドのsl
がgithubで公開されているので、早速インストールしてました。
makeでcurses.hがなくてエラーになるときは
$ sudo yum install ncurses-devel
としてください。あとはmakeするだけです。
$ make
$ ./sl