Sinner The Sinner

Tech

FreeBSDのSSH接続でパスワード認証を出来ないようにする

by sinner on 5月.01, 2010, under Tech このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加

/etc/ssh/sshd_config を編集する。

PasswordAuthentication no
ChallengeResponseAuthentication no

のように修正。
PasswordAuthenticationをnoにするだけではなぜかパスワード認証が出来てしまっていてなんでだろーと調べまくったことがあって、分からなかったから放置していたんだが、どうやらChallengeResponseAuthenticationを明示的にnoにしなくてはいけないみたいだ。
(当方の環境はFreeBSD 7.2)

via 【FreeBSD】SSHでリモートログインを許可する (sshd)

Leave a Comment :, more...

PHPでmb_convert_encoding()でSJISから変換するときは”sjis-win”を使え

by sinner on 4月.28, 2010, under Tech このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加

Twitterでパ・リーグ予告先発BOT「@npb_yokoku」を運営しているというと大げさだが、まあ地道にFollowersを増やしていてパ・リーグファンの皆さんのお役にたっていると自負している今日この頃だが、最近見てみると、福岡ソフトバンクホークスの髙橋秀選手の「髙」が「?」に文字化けしている問題が起こっているのが分かった。Webだと見にくいけど、「髙」は俗に言う「はしごたか」の「髙」だ。

2010-04-28_220719

なんでだろー?と小一時間調べて、原因が分かった。

パ・リーグ公式の予告先発発表ページはShift_JISで書かれているので、取得したHTMLをPHPのmb_convert_encoding()でUTF-8に変換していた。コードは以下。

// HTTPによりHTMLを取得し、文字コード変換とクリーニング
// cleanString()とgetHTTPResponseBody()はオリジナルの関数
$body = cleanString(mb_convert_encoding(getHTTPResponseBody(), "UTF-8", "SJIS"));

デバッグしてみると、$bodyにはすでに文字化けた状態で文字列が入っていた。更に調べると、mb_convert_encoding()のとこですでに化けていた。php.iniの設定は、

mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = UTF-8
mbstring.encoding_translation = Off
mbstring.detect_order = auto
mbstring.substitute_character = none;

で特に問題はない。

ググってみると、どうやらShift_JISの旧字体や特殊文字を扱う場合はmb_convert_encoding()の第三引数には”SJIS”ではなく、”sjis-win”を指定するとよいらしい。

$body = cleanString(mb_convert_encoding(getHTTPResponseBody(), "UTF-8", "sjis-win"));

これで文字化けしなくなった。
つか、PHPのサポートしている文字コードには確かに”SJIS-win”というものがあったが、正直知らなんだ。SJISを指定する場合でWindows拡張文字を扱う際に使うものらしい。

via [php] mb_convert_encoding と UTF-8 の誤変換問題
via PHP: サポートされる文字エンコーディング – Manual
via -OASIS- – 今日のメモ「mb_convert_encodingの文字化け(PHP)」

高橋投手は今日も好投したようで来週また先発の機会があると思うんで、その時ははしごたかでちゃんと表記されると思います。

2 Comments :, more...

コマンド実行結果のdiffをとる方法(bash, zsh)

by sinner on 4月.07, 2010, under Tech このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加

ファイルの差分をとるdiffコマンドはおなじみだけど、コマンドの実行結果の差分をとる場合は以下のようにする。

diff <(command1) <(command2)

なんでこれが必要になったかと言うと、SSL認証鍵の整合性を確認するのに、

diff <(openssl x509 -in <crt> -noout -modulus) <(openssl rsa -in <key-file> -noout -modulus)

とかやりたかったから。シェルスクリプトとかのデバッグにも使えそうですね。

1 Comment :, , , more...

RedmineとGitの連携で「リポジトリに、エントリ/リビジョンが存在しません」と出た時の対処法

by sinner on 4月.01, 2010, under Tech このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加

Apacheのエラーログを見ると、

git: not found

とかあったので実行ユーザにおいてGitへのパスが通っていない模様。
/path/to/redmine/lib/redmine/scm/adapters/git_adapter.rb
を以下のように編集する。(24行目から)

# Git executable name
# GIT_BIN = "git"
GIT_BIN = "/usr/local/git/bin/git"

編集後、Apache再起動でうまくいった。

Leave a Comment :, more...

PHPのGDライブラリが警告を出していたので鎮めた

by sinner on 4月.01, 2010, under Tech このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加

パ・リーグ予告先発BOTはPHPで実装しているんだけど、実行時に必ず以下のエラーを吐いていた。(OSはFreeBSD 7.2 Release)

PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/local/lib/php/20060613/gd.so’ – Shared object “libjpeg.so.10″ not found, required by “gd.so” in Unknown on line 0

GDのライブラリがlibjpeg.so.10が無いぞと怒っていらっしゃった。
/usr/local/libを見てみると
確かにlibjpeg.so.11とかlibjpeg.soはあるが、libjpeg.so.10がない。
libjpeg.so.11へのシンボリックリンクを貼ろうかと思ったが、なんか邪道な気がしたので、以下の手順で関連モジュールを再インストールした。

  1. /usr/local/graphics/jpeg
  2. /usr/local/graphics/png
  3. /usr/local/graphics/gd
  4. /usr/local/graphics/php5-gd

すると警告が消えた。
順番って大事だー。

1 Comment :, , more...