「ひとかじりのりんご」

へっぽこエンジニアの備忘録。こちらは旧ブログ。新しい方はこちら→「http://sbkro.github.io」

Nginx + PassengerでRedmineを動かしてみた。

Macで動かしているRedmineのWebサーバを「Apache + Passenger」から「Nginx + Passenger」へ変更したので、作業内容をメモ書き。Unicornは分からなくて挫折した...orz

環境

  • OSX 10.9.4
  • homebrew 0.9.5

Redmineのインストール・セットアップ

詳細は下記を参照。

Nginx・Passengerのインストール

インストールはhomebrewから行います。Passengerインストール時に、各種設定が標準出力されるので、忘れずにメモしてください。

$ brew install passenger
...
🍺  /usr/local/Cellar/passenger/4.0.45: 2547 files, 132M 

$ brew install nginx --with-passenger
...
# 公開ディレクトリパスが標準出力されるので、メモしておくこと。
Docroot is: /usr/local/var/www
...
# Nginxの設定ファイルパスが標準出力されるので、メモしておくこと。
The default port has been set in /usr/local/etc/nginx/nginx.conf to 8080 so that
nginx can run without sudo.
...
# passengerを有効にするための設定が標準出力されるので、メモしておくこと。
To activate Phusion Passenger, add this to /usr/local/etc/nginx/nginx.conf, inside the 'http' context:
  passenger_root /usr/local/opt/passenger/libexec/lib/phusion_passenger/locations.ini
  passenger_ruby /usr/bin/ruby
...
🍺  /usr/local/Cellar/nginx/1.6.0_1: 7 files, 3.1M, built in 22 seconds

Nginxの設定

Nginxの設定ファイルを編集し、Passengerを有効にします。Nginxの初期ポート「8080」は、Apache Tomcatなど、様々なアプリケーションで使われているので変更することをおすすめします。なお、「80」にすることも可能ですが、Nginxの起動・停止に、root権限が必要になります。

$ vi /usr/local/etc/nginx/nginx.conf

http {
        # passengerインストール時に標準出力された内容をペーストする。
        passenger_root /usr/local/opt/passenger/libexec/lib/phusion_passenger/locations.ini;
        passenger_ruby /usr/bin/ruby;
	...

	server {
                # defaultは8080
		listen  9090; 
		server_name localhost;

		location / {
		...
                # 下記二行を追加。
		passenger_enabled on;
		passenger_base_uri /redmine;
		}
	}
}

公開ディレクトリへのシンボリックリンク作成

NginxがRedmineを参照できるように、公開ディレクトリにシンボリックリンクを作成します。

$ ln -s [Redmineのインストールパス]/public /usr/local/var/www/redmine

起動

サーバを起動して、Redmineが起動されることを確認します。メモリ使用量を見ていましたが、httpdとくらべて少ないですね。これはいい。

$ nginx
$ open http://localhost:9090/redmine

Mac起動時に、Nginxを起動させる。

Nginxインストール時に、plistファイルが生成されるので、これをlaunchdへ登録させます。リブート後、上記URLへアクセスすると、Redmineが表示されるはずです。

$ sudo cp /usr/local/opt/nginx/homebrew.mxcl.nginx.plist /System/Library/LaunchDaemons/
$ sudo launchctl load -w /System/Library/LaunchDaemons/homebrew.mxcl.nginx.plist
$ sudo launchctl start homebrew.mxcl.nginx

まとめ

  • Nginx・Passengerは、homebrewから簡単にインストール・設定ができます。
  • Apache・Passengerより設定の敷居が低い印象を持ちました。また、メモリ使用量も少ないので、ローカル環境で、Railsアプリを動かすのに適しているのではと思いました。

OSX Mavericks(10.9)にJDK7をインストールしてみた。

Java7を使って開発しようとしたんだけど、JDKが入っていなくてハマったのでメモ書き。

インストール

Java7からJVMの提供先がAppleからOracleに変わり、MacにはJava6しかインストールされていません。なので、自分でインストールする必要があります。

  • 'Accept License Agreement'にチェックを入れます。
  • Downloadより、'jdk-7u55-macosx-x64.dmg'をクリックします。(7u55はJDKのバージョン。)
  • ダウンロード完了後、dmgファイルの内のpkgファイルを実行します。詳細のインストール手順は、下記サイトを参考にしてください。
  • システム環境設定に'Java'が追加されていることを確認して、インストール完了となります。


JAVA_HOMEの設定

コマンドラインから、java/javacコマンドを使えるようにするために、.bash_profileを編集します。

export JAVA_HOME=`/usr/libexec/java_home`
export PATH=$PATH:$JAVA_HOME/bin

java_homeコマンドとは、JVMをインストールしているパスを返却するためのコマンドで、複数バージョンのJVMを入れている場合、以下のように切り替えることができます。Apple的にもフルパスではなく、こちらのコマンドを利用することを推奨しているみたいです。

$ /usr/libexec/java_home
/Library/Java/JavaVirtualMachines/jdk1.7.0_55.jdk/Contents/Home
$ /usr/libexec/java_home -v 1.6
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

.bash_profileを再読み込みして、JDK7が呼び出されていることを確認して作業終了です。

$ cd
$ . .bash_profile
$ java -version
java version "1.7.0_55"
Java(TM) SE Runtime Environment (build 1.7.0_55-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.55-b03, mixed mode)

iOSフラットデザインの作法

iOSフラットデザインの作法

iOSフラットデザインの作法

最初は違和感のあったiOS7もそろそろ慣れてきたので読んでみた。

iOS7からデザインコンセプトが「スキューモーフィズム」から「フラットデザイン」へ変わり、どのような観点でUI設計をすべきかがまとめられている本。

フラットデザインの起源である「スイスデザイン」の説明から始まり、他のプラットフォーム(以下、PF)での設計思想、iOS7での実装で気をつけるべきこと(タイポグラフィ、色彩、インフォメーションアーキテクチャ)、そして、実際の実装方法(UIデザインの設計フロー、Xcodeのプログラミング)と様々な角度で、これからのiOSアプリのデザイン手法について記載されています。

特に良かった点

  • Android, WindowsといったフラットUIを採用したPFとiOSを比較しながら、iOSではどのようなことを期待しているかが書かれている点。他のPFとの共通点と異なる点が書かれている点が参考になった。
    • 単純にシンプルにすれば良いというわけではない。
  • シンプルでいながら手抜きと思われないようにするためには、どのような観点を考えるべきかが書かれている点。
  • UIデザインの設計フローについて説明されている点。ITの専門書で、これについて書かれている本は珍しい。

この本がオススメな人

  • iOSプログラマ(特にiOS6で止まっている人)
  • UI設計のフローについて勉強したい人

1年ぐらいXcode触っていないけど、久しぶりにObjective-C書いてみようかな...

「Pythonチュートリアル」&「初めてのPyhotn」

Pythonチュートリアル 第2版

Pythonチュートリアル 第2版

初めてのPython 第3版

初めてのPython 第3版

仕事でPythonが必要になったので、とりあえずオライリーを読んでみた。2冊読むのに2ヶ月もかかったよ...orz

Pythonチュートリアル」は、Python公式のオンラインドキュメントを書籍化したもの、「初めてのPython」は著者Mark Lutz氏が行っているPythonのトレーニング講座の教材をベースにしたものとなっています。

Pythonチュートリアル」がオススメな人

  • 既にオブジェクト指向プログラミング言語Java, C++, Ruby等)を習得している人
    • 頑張れば2日ぐらいで読み終わるので、さっと構文を確認して、実践で覚えた方いいです。
  • 言語仕様のリファレンスを手元に置いておきたい人。
  • 700ページもの量を読む気がない人

「初めてのPython」がオススメな人

  • プログラミング言語未習得、もしくは、手続き型言語しか知らない人
    • 環境構築・起動方法からクラス・例外設計まで丁寧にかかれています。
    • 演習問題も用意されているので、内容を理解したかを確認しながら読み進めることができます。
  • Python独自の仕組みについて、詳しく知りたい人。他の言語と比べて、下記は特殊なので目は通した方がいいかも。
    • 変数のスコープ(16章)
    • クラスの仕組み(22章から26章)

Pythonを勉強してみた感想

  • インデントが言語仕様に組み込まれているのが新鮮。たしかに「{}」いらないですよね。
  • 標準でコーディング規約が定義されているのが良い。pep8やpyflakesと言った構文チェッカを通せばすれば、一定の質のコードが出来るのが良い。
  • 全ての要素(リテラル、関数..etc)をオブジェクトとして扱うというのが新鮮。
  • 変数のスコープ(LEGBルール)やクラス周りは、他の言語と違いが有り注意が必要。
  • スーパクラスのコンストラクタの実装方法がまだ覚えられない。
  • 3.0系の移行が順調に進むのか心配。

定期的に新しい言語を習得することはいいことだと改めて実感しました。

1Password 3のSafari拡張で「Extension database not available.」と言われた場合の対処方法

MavericksのSafariで1Password拡張が起動しなくなったので調べてみた。
とりあえず「Cmd + \」で拡張が起動するところまで確認できました。

対処方法

1. 一旦、Safariを終了する。
2. 以下のファイル一式を削除する。

~/Library/Safari/Databases/safari-extension_com.agilebits.onepassword-safari-xxxxxxxxxxx

3. Safariを再起動

環境

  • OSX Mavericks 10.9.1
  • Safari 7.0.1
  • 1Password 3.8.21