[SSH] Putty用の秘密鍵をPoderosa用に作成する方法

Windows用 SSH クライアントをPuttyからPoderosaへ乗り換えました。

そのときに秘密鍵もPutty用のものからPoderosa用に作成し直す必要があったので、手順をメモ。
 

■ 秘密鍵のファイル名

  • Putty: id_rsa_putty.ppk
  • Poderosa: id_rsa_poderosa.sshcom

■ 手順

1. 公開鍵/秘密鍵作成ツール PuTTYgen にて「File」→「Load private key」で Putty用 秘密鍵 id_rsa_putty.ppk を読み込む

2.「Conversions」→「Export ssh.com key」で Poderosa用 秘密鍵を作成する(ここではファイル名を id_rsa_poderosa.sshcom としました)

以上です。

【参考】

Puttyで使ってた秘密鍵をPoderosaに移行する方法 – ABラボラトリ はてなブックマーク - Puttyで使ってた秘密鍵をPoderosaに移行する方法 - ABラボラトリ

OpnSSHの鍵をPoderosa用に変換する: 端っこなひとの備忘録 はてなブックマーク - OpnSSHの鍵をPoderosa用に変換する: 端っこなひとの備忘録

[Security]「SQLインジェクション対策」を理解するときに読むべきサイト

『よくわかるPHPの教科書』の著者 徳丸浩氏のブログを参考にして、「SQLインジェクション対策」を理解するときに読むべき記事を自分用にまとめました。

・参考:「SQLインジェクション対策」でGoogle検索して上位15記事を検証した – ockeghem(徳丸浩)の日記 はてなブックマーク - 「SQLインジェクション対策」でGoogle検索して上位15記事を検証した - ockeghem(徳丸浩)の日記

まず、上記記事のまとめ部分から抜粋。

  • SQLを動的に組み立てない
  • SQLのパラメータ指定には静的プレースホルダを用いる

この2つを守っている限り、アプリケーションやSQL呼び出しライブラリなどにバグがあっても、原理的にSQLインジェクション脆弱性は発生しません。

SQLインジェクションについて書くときに以下のメッセージを必ず含めて欲しいです。

  • 単にプリペアドステートメントを使え
  • 絶対に文字列結合でSQLを構築しようとしてはいけない
  • IPAの「安全なSQLの呼び出し方」を読むこと

引用元:[SQLインジェクション対策]Webアプリケーションとかの入門本みたいのを書く人への心からのお願い。 – *「ふっかつのじゅもんがちがいます。」withぬこ

プリペアドステートメントって何?って方はココら辺に分かりやすく書いてあるのでおすすめ。

プリペアドステートメント – データベース接続(PEAR::DB) – PEAR入門 はてなブックマーク - プリペアドステートメント - データベース接続(PEAR::DB) - PEAR入門

PHP: プリペアドステートメントおよびストアドプロシージャ – Manual はてなブックマーク - PHP: プリペアドステートメントおよびストアドプロシージャ - Manual
 

以下、「SQLインジェクション対策」を理解するときに読みたい記事たち。

・初心者向け:[SQLインジェクション対策]Webアプリケーションとかの入門本みたいのを書く人への心からのお願い。 – *「ふっかつのじゅもんがちがいます。」withぬこ はてなブックマーク - [SQLインジェクション対策]Webアプリケーションとかの入門本みたいのを書く人への心からのお願い。 - *「ふっかつのじゅもんがちがいます。」withぬこ

・中級者向け:PHPでのSQLインジェクション対策 – エスケープ・クォート編 — Let’s Postgres はてなブックマーク - PHPでのSQLインジェクション対策 - エスケープ・クォート編 — Let's Postgres

基本を抑えたら、IPAの「安全なSQLの呼び出し方」を読む。

情報処理推進機構:情報セキュリティ:脆弱性対策:安全なウェブサイトの作り方 はてなブックマーク - 情報処理推進機構:情報セキュリティ:脆弱性対策:安全なウェブサイトの作り方

以上です。

[Symfony] Apache標準の404 Not Found が表示されるので mod_rewrite を有効にする

Symfony 1.4 にて、prod環境にするとApache標準の404 Not Found が表示されるという症状に陥りました。

Apache の mod_rewrite を有効にすることで解決したので、その手順をメモ。

他にもdev環境からprod環境へ切り替えると動作しない時の対処方法があるみたいなので、困ったら下記の記事を読みましょう。

dev環境からprod環境に変えると動かなくなる時の対処方法 « symfonyで開発日記 はてなブックマーク - dev環境からprod環境に変えると動かなくなる時の対処方法 « symfonyで開発日記

今回の症状は、

http://example.com/index.php/login
http://example.com/frontend_dev.php/login

とかだとアクセスできるけど、

http://example.com/login

だとアクセスできない状態でした。
 

Apache の mod_rewrite が有効か確認する

まず、mod_rewrite が有効になっているか確認するには、apachectl に -l オプションを付けて、コンパイル済みのモジュールリストを確認します。

# /usr/local/apache2/bin/apachectl -l
Compiled in modules:
 
  mod_rewrite.c

mod_rewrite.c があればOK.

なければ、config.nice に –enable-rewrite オプションを付けて再コンパイルして、インストールし直します。
 

mod_rewrite を有効にして再インストールする

# /usr/local/src/httpd-2.2.21/config.nice --enable-rewrite
# make
# make install

ちなみに、make install を実行しても今あるドキュメント、 ログファイル、設定ファイルは上書きされないみたいです。

・参考:コンパイルとインストール – Apache HTTP サーバ はてなブックマーク - コンパイルとインストール - Apache HTTP サーバ

インストール後に、もう一度 apachectl -l で mod_rewrite.c があるか確認します。

以上です。

[Apache] ベーシック(Basic)認証の設定方法

Apacheで ベーシック(Basic)認証を設定するときは下記のサイトを読む。

@IT:Apacheでユーザー認証を行うには(Basic認証編) はてなブックマーク - @IT:Apacheでユーザー認証を行うには(Basic認証編)

ベーシック認証を設定する(AuthType) – アクセス制限 – Apache入門 はてなブックマーク - ベーシック認証を設定する(AuthType) - アクセス制限 - Apache入門

ユーザー認証によるアクセス制限(ベーシック認証編)(2/2) はてなブックマーク - ユーザー認証によるアクセス制限(ベーシック認証編)(2/2)
 

[Apache] VirtualHost(バーチャルホスト)を設定するときに読む記事

Apache の VirtualHost(バーチャルホスト)を設定するときに読む記事をまとめました。

名前ベースの仮想ホスト – 仮想ホストの設定 – Apache入門 はてなブックマーク - 名前ベースの仮想ホスト - 仮想ホストの設定 - Apache入門

apache2.2 バーチャルホストの設定 前編 はてなブックマーク - apache2.2 バーチャルホストの設定 前編

apache2.2 バーチャルホストの設定 後編 はてなブックマーク - apache2.2 バーチャルホストの設定 後編

バーチャルホストの例 – Apache HTTP サーバ はてなブックマーク - バーチャルホストの例 - Apache HTTP サーバ
 

[Ruby on Rails] コントローラの作成と命名規則

Ruby on Railsにて、rails generate コマンドでコントローラを作成するときの命名規則を調べたのでメモ。

コントローラの名前は「CamelCased(キャメルケース)」か「under_scored(アンダースコアード)」のどちらかの方式で指定できます。

■ CamelCased(キャメルケース) の例

$ rails generate controller FacebookUsers

■ under_scored(アンダースコアード) の例

$ rails generate controller facebook_users

結論としては、いずれの方式も作成されるファイル名は「under_scored」の形式となり、作成されるクラス名は「CamelCased」の形式となるみたいです。

【参考】

コントローラの作成と命名規則 – コントローラ – Ruby on Rails入門 はてなブックマーク - コントローラの作成と命名規則 - コントローラ - Ruby on Rails入門
 

[Mac] Node.js と npm をインストールする方法 [Homebrew]

Macに Node.js と npm をインストールする方法を調べたのでメモ。

node.js を homebrew でインストールする

$ brew install node

正常にインストールされたことを確認します。

$ node -v
v0.4.11

 

npm を homebrew でインストールできない…

Homebrew の npm formula は、収録のポリシーに沿わない( https://github.com/mxcl/homebrew/wiki/Acceptable-Formula )として最近、取り除かれたそうです。

メッセージにあるように curl http://npmjs.org/install.sh | sh でインストールすべきみたいです。

$ brew install npm
Error: No available formula for npm
npm can be installed thusly by following the instructions at
  http://npmjs.org/
 
To do it in one line, use this command:
  curl http://npmjs.org/install.sh | sh

 

npm を curl経由でインストールする

$ curl http://npmjs.org/install.sh | sh

正常にインストールされたことを確認します。

$ npm -v
1.0.103

以上です。


参考情報

node.jsとnpmのインストール – 自分の感受性くらい

MacOSXでnode.js/npm/nvmをインストール – tagomorisのメモ置き場

[Rails 3.1.0] ActionView::Template::Errror (application.css isn’t precompiled)

Ruby on Rails 3.1.0 にて、アプリケーションを作成してdevelop環境は作らずに、Heroku上のstaging環境でいきなり動かしたら以下のようなエラーが発生しました。

ActionView::Template::Errror (application.css isn't precompiled)

対応策としては、config.assets.compile を true にすればOKです。

■ config/environments/staging.rb

# Don't fallback to assets pipeline if a precompiled asset is missed
# config.assets.compile = false
config.assets.compile = true

以下、stackoverflowに書かれていた説明と自分で翻訳したもの。

By default Rails assumes that you have your files precompiled in the production environment, if you want use live compiling (compile your assets during runtime) in production you must set the config.assets.compile to true. You can use this option to fallback to Sprockets when you are using precompiled assets but there are any missing precompiled files. If config.assets.compile option is set to false and there are missing precompiled files you will get an “AssetNoPrecompiledError” indicating the name of the missing file.

デフォルトの設定によって、RailsはProduction環境でプリコンパイル済みのファイルがあることを想定しているので、もしProduction環境でライブコンパイル(runtime中にアセットをコンパイルすること)を使いたいなら、config.assets.compile を true にしなければならない。プリコンパイル済みファイルが全くないが、プリコンパイル済みのアセットを使おうとしているとき、Sprockets *1 の代替策としてこのオプションを使うことができる。config.assets.compile のオプションが false に設定されていて、プリコンパイル済みのファイルがない場合、存在しないファイル名を指して“AssetNoPrecompiledError”が発生するでしょう。

*1 Sprockets: Rubyで書かれたJavaScriptプリプロセッサで、複数のJavaScriptソースファイルを1つにまとめるのが主な機能

【参考】

rails 3.1.0 ActionView::Template::Errror (application.css isn’t precompiled) – Stack Overflow はてなブックマーク - rails 3.1.0 ActionView::Template::Errror (application.css isn't precompiled) - Stack Overflow

Asset Pipelineを備えたRails 3.1のリリースに向けて、その根幹を担うSprocketsをちょっと触っておくことにした。 – Sooey はてなブックマーク - Asset Pipelineを備えたRails 3.1のリリースに向けて、その根幹を担うSprocketsをちょっと触っておくことにした。 - Sooey

Ruby on Rails Guides: Asset Pipeline はてなブックマーク - Ruby on Rails Guides: Asset Pipeline

[Rails] 2系と3系のルーティング(Routing)の違い

Ruby on Railsの 2系と3系のRoutingの違いを調べたのでメモ。

Simple routes

# Rails 2:
map.connect 'hello_world', :controller => 'posts', :action => 'index'
 
# Rails 3:
match 'hello_world' => 'posts#index'

Resources

# Rails 2:
map.resources :users
 
# Rails 3:
resources :users
# Rails 2
map.resources :games, :member => { :download => :get }, :collection => { :favourites => :get }
 
# Rails 3
resources :games do
  get :download,   :on => :member
  get :favourites, :on => :collection
end
# Rails 3
resources :games do
  member do
    get :download
  end
 
  collection do
    get :favourites
  end
end

Root mappings

# Rails 2
map.root :controller => 'posts', :action => 'index'
 
# Rails 3
root :to => 'posts#index'
# Rails 2
map.namespace :admin do |admin|
  admin.root :controller => 'posts'
end
 
# Rails 3
namespace :admin do
  root :to => "admin/posts#index"
end

Optional params

# Rails 2
map.connect 'posts/:year/:month', :controller => 'posts',
            :month => nil, :requirements => { :year => /\d{4}/ }
 
# Rails 3
match 'posts/:year(/:month)' => 'posts#index', :constraints => { :year => /\d{4}/ }

【参考】

Rails 3: Routing Examples – Mark Connell はてなブックマーク - Rails 3: Routing Examples - Mark Connell

2.0のmap.resourcesのオプション設定いろいろ – ザリガニが見ていた…。 はてなブックマーク - 2.0のmap.resourcesのオプション設定いろいろ - ザリガニが見ていた...。

map.resourcesを試してみる はてなブックマーク - map.resourcesを試してみる

[MySQL] File ‘./mysql-bin.index’ not found (Errcode: 13)

MySQLをソースコードからインストールして、初期化をして、起動したらエラーが発生しました。

解決方法を調べたのでメモ。

ちなみに、MySQLをソースコードからインストールする手順はこちらから。

[DB] CentOS に MySQL をソースコードからインストール | CodeNote.net はてなブックマーク - [DB] CentOS に MySQL をソースコードからインストール | CodeNote.net
 

■ エラー内容

MySQLを起動するとエラーが発生しました。

# service mysql start
Starting MySQL.The server quit without updating PID file (/[失敗]cal/mysql/data/bms.pid).

詳しくエラー内容を見るために、直接Pathを指定して実行してみる。

# /usr/local/mysql/bin/mysqld --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
/usr/local/mysql/bin/mysqld: File './mysql-bin.index' not found (Errcode: 13)
111102 16:31:21 [ERROR] Aborting
 
111102 16:31:21 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete

mysql-bin.indexというファイルがないみたいで、実際に存在しませんでした。

原因は、/usr/local/mysql 以下の全てのディレクトリの権限が root になっていたせいでした。

mysql_install_db でMySQLの初期化を実行する前に、chown でディレクトリの権限を root から mysql に変更する必要があります。

ディレクトリの権限を mysql ユーザに変更して、

chown -R mysql:mysql /usr/local/mysql/

MySQLの初期化をすればOKです。

/usr/local/mysql/scripts/mysql_install_db \
		--user=mysql \
		--basedir=/usr/local/mysql \
		--datadir=/usr/local/mysql/data

以上です。

【参考】

【MySQL】エラー対処方法 – ぱそ子のめも はてなブックマーク - 【MySQL】エラー対処方法 - ぱそ子のめも

まったり東京+ mysqld: File ‘./mysql-bin.index’ not found (Errcode: 13) はてなブックマーク - まったり東京+ mysqld: File './mysql-bin.index' not found (Errcode: 13)

:: MySQL 5.018 インストール | サラリーマンブログ :: はてなブックマーク - :: MySQL 5.018 インストール | サラリーマンブログ ::

ubuntu9.04 で mysql 5.1.33 のインストール – kameidの備忘録 – Sharpen the Saw! はてなブックマーク - ubuntu9.04 で mysql 5.1.33 のインストール - kameidの備忘録 - Sharpen the Saw!