メジャーどころの Web サーバ。
一昨日、橋本大也氏の情報考学の記事「10月1日開催 Evernoteデベロッパーズミーティング@デジタルハリウッド大学大学院 秋葉原メインキャンパス」で、Evernoteの日本初のデベロッパーズミーティングが開催されることを知った。 会場が秋葉原で会社帰りに寄れるし、Evernote を利用している中で API についてもちょっと興味を持ち始めていたので、いい機会だと参加申し込み。 Evernote 遍歴を整理してみたり。
で、本日退勤後参加してきた。まだ若い企業であること・日本法人「エバーノート株式会社」も今年設立されたばかりであることなどもあってか、即席的だけれどフレンドリーな雰囲気のある、皆でこれから盛り上げていきましょう的な良い雰囲気の会であった。 Evernote 好き度ちょっとアップ。
以下ノート。
開会のメッセージ。
「Integrating with Evernote」
英語による発表。中島健氏が適宜通訳。
Evernoteサイトメモリー自体は思うところがあってまだ導入してみていなかったんだけれど、話を聞くことでサイトオーナーにもメリットがあることは感じられた。
OAuth も対応しているんだ。 また API を使えば Linux 版クライアントを作れる人は作れるんだな。
途中で Twitter ハッシュタグ指定が。 この時点で #EvernoteJP よりも多く Tweet れている #Evernote を推奨とのこと。
ENML については以前ドキュメントを読んだことがあるので流して聞く。
Android はやはり intent が強力だね。 今後新しい intent 対応があるとのこと。楽しみ。 個人的にははやくオフライン閲覧ができるようになってくれると嬉しい(すこし前のアップデートで準備段階としてキャッシュ機能が入ったのでもうすぐらしいんだけれど)。
デベロッパーズミーティングということで、ぜひ開発者の声をということで今朝プレゼンテーションを頼まれたとのこと。
初代 MacBook Air 用ディプレイ接続のアダプタを忘れたが、会場参加者にもっている人が貸してくれて無事プレゼンテーション。やはり Mac 率高い。
開発している iPhone RSS リーダに求められた「ニュース保存」に対応するために
と対応していった。Evernote の API 対応は1〜2日程度+テスト。工数少なく機能実装できたとのこと。メール送信によるノート新規追加を連携としているものが多いが、API 利用することでノート表示などもサポートできるという利点があるなど。
「Evernoteなう」
新しい開発プロジェクトでは Git + Redmine を使おうと思う。 で例により使えるのが Red Hat Linux 8.0 サーバなので対応する Ruby やライブラリを含めてソースコードからビルドしてインストールしたのだが、ちょっとハマったのでメモ。
システムにインストールされている OpenSSL を(パッケージがなくアップデートできないので)残したまま、新しい OpenSSL をいれて使うのだが Ruby でこれを使えるようにする方法に辿りつくまで8割の時間を費した。
OpenSSL のデフォルトである /usr/local/ssl へビルドしてインストールする。
tar zxvf openssl-1.0.0b.tar.gz cd openssl-1.0.0b ./config shared make make test make intall
何も指定しないと共有ライブラリ(so)がビルド・インストールされないのが落とし穴。
後は /usr/local/redmine 以下に Redmine に必要なものを入れる。
tar jxvf ruby-1.8.7-p302.tar.bz2 cd ruby-1.8.7-p302 CFLAGS='-I /usr/local/ssl/include' \ LDFLAGS='-L /usr/local/ssl/lib -Wl,-rpath=/usr/local/ssl/lib' \ ./configure --prefix=/usr/local/redmine --enable-rpath make make install
大きな落とし穴は Ruby に含まれている ext/openssl。 OpenSSL 用の共有ライブラリが作られるのだが、いくらやってもこいつが /lib に入っている古い OpenSSL 共有ライブラリの方をリンクしてしまい /usr/local/ssl/lib の方をリンクしてくれない。
configure や make 時に LD_RUN_PATH やら -rpath を指定しても効かないし、ext/Setup で openssl を静的に指定しても駄目だし。
結局 configure.in を眺めて AC_ARG_ENABLE(rpath, ...) があるのを発見して --enable-rpath したところようやく -rpath が共有ライブラリのビルドに反映されるようになった。
30m ぐらいの深さの大きい落とし穴。
/usr/local/redmine に Ruby が入ったので必要なものを入れていく。 確実にそこの Ruby を使うようにしばらくは /usr/local/redmine/bin 以下を絶対パス指定で作業。
tar zxvf rubygems-1.3.7.tgz cd rubygems-1.3.7/ /usr/local/redmine/bin/ruby setup.rb
Redmine のデータベースは一番お手軽な SQLite を使う。これもインストール。
tar zxvf sqlite-amalgamation-3.7.3.tar.gz cd sqlite-3.7.3 ./configure --prefix=/usr/local/redmine make make install
Ruby から SQLite を使うためのライブラリをインストール。
/usr/local/redmine/bin/gem install sqlite3-ruby -- --with-sqlite3-dir=/usr/local/redmine
SQLite のありかを示す --with-sqlite3-dir を -- の次に指定するというところに気がつくのに浅い落とし穴。
Redmine のインストールの説明では Passenger を推奨しているようなので入れてみる。
/usr/local/redmine/bin/gem install passenger
OK。しかし Apache モジュールを
/usr/local/redmine/bin/passenger-install-apache2-module
でインストールしようとすると失敗。Apache の dev 系のファイルがシステムに入っていないので、それはそうだな。しかし Passenger のコマンドは寡黙ではなく何が駄目で何をすべきかきちんと表示してくれるのでわかりやすい。
この落とし穴は、横を通って回避。
Passenger のインストールで最新の Rack が一緒にインストールされるのだが、Redmine には新しすぎて後の手順でエラーで止まる。 ので、ここで 1.0.1 にダウングレードしておく。
/usr/local/redmine/bin/gem install rack -v 1.0.1
これは皆が知っている落とし穴。
ようやく Redmine のインストール。 展開するだけ。
tar zxvf redmine-1.0.3.tar.gz mkdir -p /usr/local/redmine/var/lib mv redmine-1.0.3 /usr/local/redmin/var/lib/redmine
以下 /usr/local/redmine/var/lib/redmine で作業。
cd /usr/local/redmine/var/lib/redmine
config/database.yml を作成する。SQLite を使うように設定。
production: adapter: sqlite3 database: /home/naney/var/redmine/redmine.db
データベースは定期バックアップのある自分の home 以下に。
makdir -p ~/var/redmine
config/email.yml を作成する。今回は専用の redmine@example.com を作成して、その SMTP サーバ/アカウント経由で送信するようにする。
production: delivery_method: :smtp smtp_settings: address: smtpserver.example.com port: 25 domain: redmine.example.com user_name: "redmine@example.com" password: "mypassword"
必要なファイルやらデータベースの初期化やらを行う。
/usr/local/redmine/bin/rake config/initializers/session_store.rb /usr/local/redmine/bin/rake db:migrate RAILS_ENV=production /usr/local/redmine/bin/rake redmine:load_default_data RAILS_ENV=production
最後のコマンドでは言語を選ぶプロンプトが出るので ja を指定。
Apache 経由ではなく Passenger スタンドアローンで Redmine を使ってみる。
/usr/local/redmine/bin/passenger start
失敗。途中の処理で rake が見つからないという。
PATH=/usr/local/redmine/bin:$PATH passenger start
やっぱり失敗。自動的にダウンロードした ngix のビルドに失敗しているっぽい。 落とし穴。
/usr/local/redmine/bin/ruby script/server webrick -e production
Redmine 的には 本番向けではない WEBrick は無事起動。
http://インストールしたサーバ:3000/
にブラウザにアクセス。Redmine のページが見えたよオッカサン! admin:admin でログインしてあとは Web ブラウザから設定。 Git リポジトリの連携もすんなり。
やったね。
WEBrick で使い続けるなら script/server 起動時に -d オプションを指定する(記事)。
ちょっとした Web サーバが欲しくなったんだけれど Apache 面倒だなと思って、初めて nginx 触ってみた。
tarball ダウンロードして適当に configure、make install して conf で port 番号変えて起動。ドキュメントほとんど読む必要無くて10分かからなかった。
wget http://nginx.org/download/nginx-1.2.7.tar.gz tar zxvf nginx-1.2.7.tar.gz cd nginx-1.2.7 ./configure --prefix=$HOME/local/nginx-1.2.7 make make install emacs $HOME/local/nginx-1.2.7/conf/nginx.conf # http {} の中の server {} の中の listen を 80 から 8000 に変更。 ~/local/nginx-1.2.7/sbin/nginx
で Web ブラウザで 8000 にアクセス。「Welcome to nginx!」ページの表示を確認。
お手軽。
プログラミング言語の仕様・振る舞いを確認するために小さいプログラムを書く。 「この式を評価すると値は何になるの?」とか「この2つの書き方どっちが速いの?」とか「この正規表現にどうパターンマッチングするの?」とかを確認したい時。
当たり前の進め方だと思っていたんだけれど、そうすることを勧めたらスルー気味だったので。
特にスクリプト言語なら 「a.ほげほげ 」(Perl なら a.pl)なファイル作って実行してみればいいじゃんと思うのだけれど手間に感じるのかな。本丸のプログラムのソースコードを書き換えて試す(Apache 再起動して Web ブラウザでアクセスしてデバッグプリント読むとか)よりよっぽどはやいよ。あと、単体テストファイルでやっちゃうのもアリ。
それに適当に記事としてまとめておけば、今度は自分が他人に説明する時にそれを示せば済むようになるしね。
いい陽気。今日は体力的にがっつりにはしないことにしようということで、パンを買って公園で食べてくるぐらいをしてきた。ちょっとした事だけれど、天気は良いし緑も綺麗なので幸せである。
あとはようやくこの日記を MacBook Pro で更新できるようにした。記事データの転送自体はこの間 Unison でできるように設定してあるのであとは、事前にドラフトを確認環境を作るぐらい。
Perl の環境は perlbrew で。Web サーバは Homebrew で Apache HTTP Server Versoin 2.4 を入れた。最近は Debian 流の Apache 設定で馴染んでしまっているので、素に近いのは久しぶりでなんか新鮮。初めてさわる 2.4 系は設定ファイルの書き方が少し変更になっていて一発ではうまく動かなかったけれど最終的に動くようになったので良かった。
あとは写真管理方法を決めることができてデータの移動も住めば ThinkPad X200 (Debian GNU/Linux) と MacBook Pro (OS X) の併用もだんだんしなくて済むようになるかな。
昨日ラピッドSSLを申し込んで TLS 1.0 接続できるようになったので、ここからはコンテンツ側の対応です。
nDiki (DiKicker) はかなり昔に作ったので CGI.pm を使っています。CGI.pm の url メソッドで絶対 URL を取得して permalink の生成などをしています。ここでさくらのレンタルサーバでは HTTPS 用の Apache はプロキシとしてとして動いていることもあり https://www.naney.org/diki でアクセスすると CGI.pm の url メソッドが https://naney.org:80/diki を返してしまうようになってしまいました。
ここはいったん設定ファイルでスクリプトの URL を明示的に設定できるようにして対応しました。
http スキームで書かれた内部リンクは順次 https に修正します。結構な量があるのでおいおいという感じです。画像などのリソースを http で指定しているところは優先して対応した方が良いですね。
外部サイトのプロフィールなどで htts スキームで書いたリンクなども順次修正です。こちらもおいおいという感じで。
Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。
※本サイトの内容は個人的見解であり所属組織とは関係ありません。