sshしか使えないマシンで.xxrcのせいでログインできなくなったときの対処法

よくありそうなのに意外に見つからなかったのでエントリー。
調子にのって.xxrcをカスタマイズしてたらログインできなくなっちゃった\(^o^)/
なーんてこと一回はありますよね?
そんなときは停止したい.xxrcを

ssh server mv /path/to/.xxxrc /path/to/.xxrc.bak

で名称変更して回避できます。scpで上書くとかでも可。
コマンド指定したときはデフォルトシェル起動しないで動作するようなのでそれを利用。

他のアカウント知ってたらsuを使うとか、自分のマシンなら再起動してシングルユーザモードとか色々回避策はあるんですが、最近sshのみで入ってるマシンでやっちゃって上記しか使えませんでした。
最初にありそうだと思った、sshで入るんだけどrcを実行しないとか、シェルを変更するとかは見つからなかったのであまりスマートでは無いですが、まあ実用的には十分だと。

こんな状況にならないのが一番ですけど、やっちゃったときのために。

Fedora14でPT2対応ハマったことまとめ

PT2を買って設定して順調にハマった。
PT2関連の記事は腐るほどあるので、ハマったとこのみ、紹介。
環境はFedora14。

CentOS5.4サーバ機にPT2を入れて地デジ録画サーバにする: tadachi-net 出張所
を基本見ながらやってたんだけど…自宅サーバFedora14なのにCentOSの記事見てたからかハマるハマる。
…会社とか個人で狩りてるVPSとか全部CentOSなんだもん…

以下失敗集
Kouji's Blog

カーネルソースが入ってないため失敗

yum install kernel-dev
で解決

fedora14では主流で参考記事で使ってるchardev版じゃなくて、DBV版が入ってるため、インストールされないようにする。

ここが一番ハマった…
現象としてはインストールまでは普通にできるんだけど、/dev/pt1video* が表示されない。



ドライバは「chardev版」と「DVB版」の2種類存在します。Fedora14以降の最近のカーネルは「DVB版」のPT1(PT2)ドライバを標準実装しているため、主流となっている「chardev版」のインストール時にドライバーが重複し、インストールできません。 下記のコマンドにて、「chardev版」のPT2ドライバーをインストールすることが可能です。

「DVB版」の方をロードしないようにblacklistの一行を追加します。
vi /etc/modprobe.d/blacklist.conf
blacklist earth-pt1

/etc/modprobe.d/blacklist.conf
ここはKouji's Blogさんを参考にした。

fedora14だとカードリーダが読めないため、関連ダウングレード

FedoraCore14でPT2 » もにっき
こちらで紹介されていた、pcsc関係のダウングレードをやった。
yum erase pcsc-lite pcsc-lite-libs pcsc-lite-devel ccid
で、ff14用を一旦消して(入っていたら)
wget http://ftp.riken.jp/Linux/fedora/releases/13/Fedora/x86_64/os/Packages/pcsc-lite-1.5.5-4.fc13.x86_64.rpm
wget http://ftp.riken.jp/Linux/fedora/releases/13/Fedora/x86_64/os/Packages/pcsc-lite-libs-1.5.5-4.fc13.x86_64.rpm
wget http://ftp.riken.jp/Linux/fedora/releases/13/Fedora/x86_64/os/Packages/pcsc-lite-devel-1.5.5-4.fc13.x86_64.rpm
wget http://ftp.riken.jp/Linux/fedora/releases/13/Fedora/x86_64/os/Packages/ccid-1.3.11-1.fc13.x86_64.rpm
(参考にしたページで、rpmへのリンクが404だったので、URLは微修正)
rpm –import https://fedoraproject.org/static/E8E40FDE.txt
sudo rpm -ivh pcsc-lite-1.5.5-4.fc13.x86_64.rpm pcsc-lite-libs-1.5.5-4.fc13.x86_64.rpm pcsc-lite-devel-1.5.5-4.fc13.x86_64.rpm ccid-1.3.11-1.fc13.x86_64.rpm
(依存関係の問題で、同時にやらないとダメ)

B-CASカードの認識確認

pcscdを再起動しないと認識しない
/etc/rc.d/init.d/pcscd restart

epgrecのinstall画面のstep3が真っ白

この自宅鯖はあんま環境構築してなかったので最低限php入れた結果いろいろ足りず…
php-mysql入れ忘れたのが原因です。
しかしだ

// データベース接続チェック                                                                                                                  
$dbh = @mysql_connect( $settings->db_host, $settings->db_user, $settings->db_pass );
if( $dbh == false ) { 
    jdialog( "MySQLに接続できません。ホスト名/ユーザー名/パスワードを再チェックしてください". "step2.php" );
    exit();
}

そりゃ真っ白になるよ…@使ってんだもん。
せっかくエラーチェックしっかり書いてんだから@も消しといてくれればすぐ原因分かったのにな…

getepg.php実行しても番組表更新されないよ…

LD_LIBRARY_PATHが通ってなくて、libalib.so.0が読めなかったのが原因。
全部の呼び出し部分のコマンド前に「LD_LIBRARY_PATH=/usr/local/lib」を追加するという汚ない解決を…atで動作するスクリプトとかどこで環境変数設定するか分からなかったのでとりあえず…
もっとスマートに出来るんだとは思うのでアドバイスあったらお願いします!

録画予約しても録画されない

上と一緒。php-mbstring
も入れとかないとダメ。タイトル利用するとこで落ちてるので、「予約しても録画されない」っつーうざい状況になるのでご注意を。

生tsだとワンセグが再生されたりといろいろ大変

epgrec の do-record.sh をすこしいじってみた - がべこれログ - Garbage Collection Log
こちら参考…という名の丸パクりした。ワンセグとか余計なデータ入ってる、生tsからメインのストリームだけ分離。
同じ関東なので、programid(ffmpeg -iしたら表示される)も同じでほとんど流用できました!素晴らしい!
ただ、後述するtssplitter_liteが動かないせいで、その部分のみ改変しました。

tssplitter_liteが動かない。
原因不明だけど、動かなかった。
エラーは吐かないけど、作るサイズが数100kbぐらいであからさまにダメ。

SPLITTER=/usr/local/bin/tssplitter_lite
...

$SPLITTER $input_tsfile $output_tsfile $progid

↓に改変

SPLITTER=/usr/bin/ffmpeg
...

$SPLITTER -programid $progid -vcodec copy -acodec copy -i $input_tsfile $output_tsfile

まとめ

実際問題結構苦労した…まだ微妙に回避可能なハマってることあるけど、とりあえずこれだけ。
でも、epgrec使った録画はすっっっっごく便利。
ちょっと前までPT2が品薄だったので、やってなかったけど、もっと早くやれば良かった。
オススメです。

通貨変換APIまとめ

ちょっくら各国の価格を日本円で約何円です!って出す必要があって調べたのでまとめてみた。
最初はgoogleあたりが出してんだろ、検索結果で変換できるしさー
と思って軽く考えてたら意外と見あたらず…

外国為替レート変換タグ

とても手軽で、スクリプトとタグを埋め込むだけだったのでこれで決まり…かと思ったら、ヨーロッパ中央銀行発表の日次外国為替レートデータを使用していて、基軸通貨がユーロだからユーロだけちゃんと変換できない…
script内見てどうにかしようかと思ったけど、中でphp呼んでてその中で変換してるみたいで手が出なかったので諦め。

Xurrency

データ網羅していて当然ユーロも変換できる…が、変換フォームや変換表をサイトに設置できるスクリプトは提供してるもののそのまま計算する機能が見つからず。
ハックすりゃできそうだったけど、ライセンス的に微妙かなーと。

Currency converter | Xurrency
JSON APIも提供してるし、便利。
http://xurrency.com/api/usd/jpy/100
にアクセスすると


{"result":{"updated_at":"2011-02-22T02:10:00Z","value":8309.5,"target":"jpy","base":"usd"},"code":0,"status":"ok"}
みたいな結果が帰ってくるのでJavaScriptで表示すればよろし。
普通はこれで十分なんだけど、下の「くじらはんど」さんのAPIだと、変換マップ取得できるのでそっちを使うことに。
あと、個人は自由だけど、商用だと有料でライセンスキー発行の必要があります。

クジラ 外国為替 確認 API (為替 RSS)

簡単に変換マップが取得できる。前述したxurrencyのデータを使用してるらしい。
http://api.aoikujira.com/kawase/json/usd
でUSD(アメリカドル)をベースにした変換マップのJSONが取得できる感じ。
Web API 利用上の注意
ここの記述からするとライセンスも自由。
ローカルにキャッシュしといて日次ぐらいで繋がるときだけ更新させてもらえれば負荷もかけないし、マップごとキャッシュして使えば速度も有利だしと思って採用。
代表のクジラ飛行机 (kujirahand) on Twitterさん++

もっと手軽なのあるよーとか、googleでできんじゃねーか、この調査能力無しのクズ野郎が!とか突っ込みあればお願いします!

WordPressのTweetableプラグインで記事更新Twitter連動時タイトルが出力されない件への対処

tweetableプラグインはすごく便利で、色々機能があるんですが、その中で、記事更新時にtwitterに自動投稿してくれる機能があります。
prefixとURL短縮機能もついててprefixを「ブログ更新しました」にしとくと
「ブログ更新しました。ブログタイトル http://bit.ly/xxxxx」みたいな感じにしてくれます。
ただ、たまに「ブログ更新しました。http://bit.ly/xxxxx」と、タイトルが出力されないことがあり、タイトルが長いときにダメっぽかったので140文字越えたかなーと思って、チェックしてみると越えていない…

で、よくあるマルチバイト系のバグかと思って調べたところ、当たってました。
海外プラグインによくある。mb_***を使ってないだけのことでした。

wp-content/plugins/tweetable/mh_twitter_class.php
function fit_tweet,fit_tweet_auto内の

  • substr→mb_substr
  • strlen→mb_strlen

こんだけです。

tweetable使っている方はご注意を。

Mac App Store で激安Keynoteを買おう!

もうさんざんレビューされてるけどまあ、まとめたので。

インストール

Software UpdateからMacOSX 10.6.6にアップグレード

DockにAppStoreが!なんとなくiTunesに入るのかと思ってたけど、そんなわけねーか…

起動


iTunesのアカウントで認証。
支払い情報の修正画面。iTunesに登録済みなので確認するだけ。(セキュリティコードは入力しなおした)

購入


前からiWorkKeynoteだけが欲しかったんだけど、iWorkまるごとのセット販売しかしてなかくて、ファミリーパックの10,800円出すのはキツかったのでこれを機にKeynoteのみ購入。2300円なり。

購入はワンクリック!起動後一回パスワード聞かれるみたいだけど、それ以外はダイアログも出ずにいきなりインストール始まった!
軽快そのものだけども、ダイアログで確認ぐらいはあっても…びびったわw
確認する設定あるのかすぐにキャンセルできるのか…設定は見当らないけど…これはちょい不安。

最大のポイント!

一人五台までのMacにインストールできる!iWorkで言えばファミリーパック相当のライセンスです。
ってことはKeynoteを複数台のPCで使用するための最低コストが10,800円→2,300円とほぼ1/5に!
もちろんiWorkには3つソフトが入ってますけど、Pages,Numbersは不要って人も多いんじゃないかと。
更にはiWorkのようなメジャーソフト以外も自動的に5台分のライセンスがつくってことです!
マイナーソフトだとファミリーパックなんて無いし、複数台インストールしていいんだかよくわからないこともあるのでこれで安心。
支払いに迷わず、ライセンスも心配せずとも良い。これはかなり大きいと思います!

まとめ

利便性は上がって、価格は下がるとホントに画期的です。
iPhone,iPadみたいにこれ以外のマーケットが作れないというわけでも無く、従来のパッケージ販売もされてるし、消費者には不利益は見当たりません。
去年まで20年以上Dos/Windows使ってきた身として、なぜMSはこれができなかったのかと…
ただ、AngryBirdはiPhone版115円、MacAppStoreは600円と、ちょっとキレイかもしれんがどこでも遊べるわけじゃない不便なゲームが約6倍と、中身tてより、PC版だから高価ってソフトも多そうで、数百円で気軽に購入というiPhone/iPadに親しんでるとちょっと違和感ありますね。
気軽に買えることでマーケットが広がってもっと安くなるともっと楽しくなるかと思います。今後更に期待!

※追記

  • 買ったアプリを他のPCでインストールするには購入済みリストからインストールします。最初はこれがわからなかった…

  • 5台にインストール可能の根拠は以下リンク等。公式は見つからないです…

http://plusd.itmedia.co.jp/pcuser/articles/1101/07/news046_2.html