たんでー のすべての投稿

sheevaplug のカーネルアップグレード

そろそろカーネル2.6.32.8から1年近くたったこともあるし、stableになってからそろそろ1ヶ月くらい立ってる2.6.37にあげた。ext4関連でアップデートが結構あったはず。とりあえず動いたから問題ないんだろう。多分。

アップデートはいつもの通りhttp://sheeva.with-linux.com/sheeva/(リンク切れ) http://www.xilka.com/sheeva/ここから
README-なんとかいうのをダウンロードして実行するだけ。

ちなみに今回はcp932のカーネルモジュールを構築しなかった。一度も使わなかったからね〜。

 

ところで、国内でpogoplugが出るらしい。
http://pc.nikkeibp.co.jp/article/news/20110202/1029973/
http://internet.watch.impress.co.jp/docs/news/20110202_424424.html
これ、たしかsheevaplugと同時期にアメリカあたりでは出ていたはずだから、1年半のおくれか?
しかし、これのソフトがsheevaplugでも使えるようにならんかなぁ,,,,。

タクティクスオウガ 運命の輪

なんか、Nルートって共通分以外の追加要素なし?

クリア後に攻略wikiなどなどを見たらギルダスいないとクリア後の追加シナリオ進まなかったりするようだし、、、。Nルート不遇だ、、、。

やっぱり今回もLルートびいきな作りになってるんだろうなぁ、、、。

 

とりあえずクリアはしたが、まぁこんなもんかなぁ。SFC版の方が好みだ。とりあえず、移動、行動した後に待機を選ぼうとするときにボタン入力がもうちょっと最適化してくれればよかったんだが、、、。この一点が、操作性の点でゲームを通して気になった。上なり下なりを押す回数はもっと減らせるだろう。移動後に移動アイコンは表示/選択できないようにするとか、やりようはあったはず。

クリア後は、単純な2周目、というわけではないのはおもしろい試み。

とりあえず死者Qいってきます。

関数を引数にとって関数を返す関数

関数を引数にとって関数を返す関数って、rubyでかけない、というか少なくとも書き方を知らない。

最近ocamlを試してみて、再起関数の良さに目覚めてきた。
仕事でも使いてぇ~。

あと、タイトルのようなことをしなければ、なんかrubyよりpythonの方が書きやすいような気もしてきた。
rubyの方が短く書けるといえば確かにその通りなんだけれども、、、。

やる気がしない

なんかやる気をなくしたので応用情報技術者試験の参考書なぞ読み始めた。
まぁまぁ読める感じ。春に申し込もうかな。

 

UPSを買うよりは、サーバを適当なネットブックに変える方が安上がりだし電気代もかからないしよさげなような気がしてきたよ、、、。

UPSでも入れるか?

最近うちのブレーカが落ちる機会が増えてきた。電源タップな感じのUPSが4000円弱で売ってたので買ってみようかと思案しているが、、、、。どうだろう。3.7kgの重さと、どうも評判をみると、バッテリを2年くらいで定期交換しないといけないあたりが気になる。バッテリじゃなくてエネループかなんかで動くUPSもどきはないものか、、、、。

サーバをノートPCにすればだいぶましになるとは思うんだけど、、、。今出ている2コアのATOMなネットブックとかがいいのかなぁ。ちょっとオーバースペックな気もするし、確実にsheevaより電気食いそうなもんだが、はてさて、、、。
ちょっとググってみると定格30Wなネットブックもあるが、2コアだと45Wとか。sheevaplugの3倍となると、気がひけるなぁあ、、、。大体、ほとんどの時はハードディスクの玉は止めているから、まぁほっといてもいいのかなぁ、と思い始めてはいる。

どうしましょ。

調子がわるい

風邪から気管支炎と診断された、最近せきがやたらと出て調子が悪い。

で、今日は休んでsheevaのsyslogなんか見てたら、sheevaplugのNICがギガビットになっていることに気付いた。今まで100Mだと思って、ギガハブにつないでなかったが、これを機にsheevaとPCはギガハブにつないでみた。早くなってるかな??

外付けハードディスクの回転を止める

sheevaplugに付けた外付けHDDを勝手に止めるようにする。
http://www.nslu2-linux.org/wiki/FAQ/SpinDownUSBHarddisks#method3
ほとんどここにあったスクリプトのパクリ
ポイントはいくつかあるが、、、

まずはsdparmを使う点。
syncだったところをsdparm –command=sync
scsi-idleをsdparm –command=stop にする。
(–command=syncしたあとじゃないと、stopしても止まらないので注意。)

次に、ディスクのデバイスファイルは、さしなおしたりしたときに毎回同じにふられるとは限らないので、とりあえずマウントポイントから、起動時にmountコマンドをつかってデバイスファイルに関連付け。(/dev/disk/by-uuidからls -lでリンク先を見ればデバイスファイル名を取れるが、ディスク入れ替え時にいちいち対応しないといけないので、、、ちょっと迷ったがこっちの方式で利用。)

最後に、一つのスクリプトで複数のディスクを(何個でも)扱えるようにした点。
ま、見ての通り。

スクリプトはこんな感じ

#!/bin/sh
mount=(/mnt/disk /mnt/backup)
num=${#mount[@]}
interval=4000
for ((i=0; i < num;i++)); do
  tmp=(`mount |grep ${mount[i]}`)
  [ x"$tmp" = x ] && continue
  tmp1=${tmp[0]#/dev/}
  disk[i]=${tmp1%[0-9]}
  state[i]=`grep " ${disk[i]} " /proc/diskstats`
  up[i]=1
  count[i]=$interval
done
while [ true ]; do
  sleep 600
  for ((i=0;i < num;i++)); do
    count[i]=$((${count[i]}-600))
    newstate[i]=`grep " ${disk[i]} " /proc/diskstats`
    [ `echo ${newstate[i]} | wc -l` -eq 1 ] || continue
    if [ "${state[i]}" = "${newstate[i]}" ]; then
      if [ ${count[i]} -lt 0 ]; then
        count[i]=$interval
        if [ ${up[i]} -eq 1 ]; then
          echo -e "spin-down: /dev/${disk[i]}"
          sdparm --command=sync /dev/${disk[i]}
          state[i]=`grep " ${disk[i]} " /proc/diskstats`
          sdparm --command=stop /dev/${disk[i]}
          up[i]=0
        fi
      fi
    else
      echo -e "drive is up: /dev/${disk[i]}"
      count[i]=$interval
      state[i]="${newstate[i]}"
      up[i]=1
    fi
  done # for i
done # for while loop

で、このスクリプトを適当に保存して、rc.localからバックグラウンドで起動する。
(最初は多重起動対策とか考えないといけないのかな?とか思っていたが、rc.localは、起動時に/var/lock以下にロックファイルを作成するため、ランレベル変更時など、さらに起動されることはないようだ(/etc/rc参照)
起動時にはK*を殺してからS*を起動するというのは知っていたが、この仕組みは知らなかったので、ちょっと迷った。2重起動対策はしなくてOK)

その後、sdparmにsda1など、パーティション番号の数字?を入れると/var/log/messagesに sending ioctl 2285 to a partition! というのがたくさん出てくるので、最後の数字をとるように変えました。

sheevaplugに外付けHDDでファイルサーバいろいろ

ファイルサーバの整理をした。

構成は、sambaで、
sheevaplugにusb外付けHDDが2台(160GB,500GBのヘテロ構成)ついている。
RAIDは当然使えないが(まぁ、HDDの玉が壊れたときに再構築するのも面倒っぽい。)
rsyncで適当に大事なファイルだけコピーする感じ。

この辺の処理はanacronにやらせるのがちょうどいいので、/etc/cron.weeklyにスクリプトを入れる。

ファイル置き場の構成は、基本的には
週一回バックアップを取るDaijiフォルダ、適当に置くだけのOkibaフォルダ、
atimeが2週間くらいより古くなったら消すkariokiフォルダの3本立て構成
(消す方のスクリプトは、find $DIR -type f -atime +14 |xargs rm とかなんとか
 ディレクトリはrmdirするのがよさげ)
(ほかにも設定ファイルのバックアップとか、いろいろバックアップ取っているのがある)

HDDの回転が割とうるさい時があるので、正直止めたいが、
一日に何度も回り始めると困るので、どういうスクリプトを組んだものか正直迷っている。

止めるだけなら
sdparm –command=stop /dev/sda
みたいな感じでできるが、ちょっとどうしようか思案中。

ホスティングサーバ借りようかな

coreserver miniというのが手ごろでよさそうだが、
cronジョブが使えるとか何とか言っているが、すぐkillされるとかいろいろ
悪い噂が聞こえてくるので、まだ迷っている。

ってか、phpだのperlだのrubyだのpythonが使えるとは書いてあるが、
正直gccが使えるかどうかとか、シェルで使えるコマンドはどんなもんなのか、
とか、教えてほしいわ〜。

自前コンパイルできれば、別に大概のコマンドがなくても何とかできるが、
実際のところどうなんだろう、、、?コンパイル中に殺される気もするし、、、。
気にはなる。

etckeeperを使え!

softwaredesignかなんかに書いてあったetckeeperが超便利。
/etc以下の変更をgitなどなどで管理してくれるという便利もの。
sheevaplugのfedora12にはパッケージがなさそうなのが珠に疵。
そのうちいれよう。

ただ、/etc/shadowとかももれなく管理されるので危険だよ〜、と、
READMEには書いてあったのでそこのところがちゃんとできる
(or無視できる)環境でしか使わないとだめってことですな。

だいぶ設定を作りこんだsheevaplugとかには、もっと前から入れておけばよかった、、、、、。

gitweb.cgiのeuc-jp、shiftjis対応

注意!(2015-07-22) このやりかただと、変換に失敗したときに、エラーログが大量に吐かれてしまいますので、注意してください。
たとえば、http://mikan.azulite.net/wiki.cgi?page=Git&action=SOURCEのやり方の方がスマートです。

==============================
ちょっと必要に迫られて対応した。

関数to_utf8あたりをいじって、Encode::from_toとか使ってなんとかするのかなぁ、と思っていたが、
結局は、ファイル読み書きするときに文字コードを変換する方針。

参考はこのへん
http://www.rwds.net/kuroita/program/Perl_unicode.html

diff -u gitweb.cgi new_gitweb.cgi

— gitweb.cgi 2010-11-24 01:03:30.697219844 +0900
+++ new_gitweb.cgi 2010-12-28 22:34:51.702462351 +0900
@@ -16,7 +16,10 @@
use Fcntl ‘:mode’;
use File::Find qw();
use File::Basename qw(basename);
binmode STDOUT, ‘:utf8’;
+use open IN => ‘:encoding(euc-jp)’;
+use open OUT => ‘:utf8’;
+use open ‘:std’;

BEGIN {
CGI->compile() if $ENV{‘MOD_PERL’};

—–追記
その後、shiftjis対応を迫られたので、上の通りで、euc-jpをshiftjisに変えたらうまくいった。
(binmode STDOUTは最初コメントしてたけど、その必要はなかったので、上の記事をちょっと修正しました。)

sheevaplugでレグザリンク@42Z1

sheevaplugなサーバに突っ込んでいる500GBハードディスクでsamba経由でレグザとつないでみた。
いろいろ試してうまくいかなかったが、原因はnmbを立ち上げていないからだった。
あとは、domain master=yesをちゃんと書いておきましょう。
(今までIP直打ちでつないでました。。。netbiosとかうざいんだもん、、、、)
(tpdumpした感じでちょっとわかりました。)

今動作テストを走らせているところですが、、、、?
テスト失敗??

また原因を調べるか、、、。

==
とりあえずtcpの445番ポートを空けないとダメっぽい。(udpしかあけてなかった。)

http://tt.atnifty.com/solaris/regza-samba.html(リンク切れ。web.archive.orgへリンク)
このあたりのサイトでは、Samba3.4 3.5はダメだったが、3.0にしたらうまくいったと書いてあった。
ということは設定ファイルか、configureするときのオプションのどっちかで何とかなるはず、ということで、
まずはsmb.confをいじることにする。

とりあえず man smb.conf
で大量に出てくるオプション項目をそれぞれアタリをつけて試してみる。

/var/log/messagesには、

Dec 29 02:34:01 sheeva smbd[2431]: [2010/12/29 02:34:01, 0] lib/util_sock.c:1491(get_peer_addr_internal)
Dec 29 02:34:01 sheeva smbd[2431]: getpeername failed. Error was 通信端点が接続されていません
Dec 29 02:34:01 sheeva smbd[2431]: write_data: write failure in writing to client 0.0.0.0. Error 通信端点が接続されていません
Dec 29 02:34:01 sheeva smbd[2431]: [2010/12/29 02:34:01, 0] smbd/process.c:62(srv_send_smb)
Dec 29 02:34:01 sheeva smbd[2431]: Error writing 64603 bytes to client. -1. (通信端点が接続されていません)

みたいなことが書いてあったので、
64KBもいっぺんにかけないよ、と文句をいっているらしい。
smb.confに large readwrite = no と書く。
(read raw =noも設定した方がいいのかな?とりあえずテストには関係ないので今回は設定しない)

これでとりあえずは録画可能にはなったが、同時録再はダメらしい、、

こんな感じのエラーが出ていたが、
Dec 29 02:39:53 sheeva smbd[2475]: [2010/12/29 02:39:53, 0] smbd/server.c:457(smbd_open_one_socket)
Dec 29 02:39:53 sheeva smbd[2475]: smbd_open_once_socket: open_socket_in: アドレスは既に使用中です
これはどうも関係ないようで、socket address = ‘サーバのIPアドレス’を入れたら収まった。

==
同時録再も可能にするには
large readwrite = no はかかずに
unix extentions = no と書けばよかった。
ってか、いまどきCIFS対応じゃないのかよ〜っとか言っても始まらないか。
manを読むとsymboliclinkがなんとか書いてあって、正直あまりはずしたくないが、、、。
ここに負けた!http://hibari.2ch.net/test/read.cgi/avi/1291235784/119

結局設定がよくわからんかんじ。socket adressを書いたかないとipv6でテレビ側からつながってあまり安定しなかった。windows7なクライアントがちょっと悪さしてるような気もしたがよくわからん。

結局、録画番組の早見早聞とか、二番組同時録画はUSB外付けでハードディスクを直接つながないと使えないので、時間的な制約もあり2TB玉は直接つけた。

あとは、カタログでは二番組で音をテレビスピーカーとヘッドホンに分けられるようなことを書いてあったが、実際には機能がない?ような感じになってるのは、そのうちアップデートかなんかで対応してくれるんだろうかねぇ。

タクティクスオウガ運命の輪

なんかカルネージハートはもう飛行型じゃない機動力あるOKEを組まないとバトルモードの方は金でかてなくなったので、そろそろタクティクスオウガを始める。

なんか、簡単になった?
とりあえず戦闘不能になっても3カウントまでに復活させればスキルも入るし問題ないってことでいいのかな。
二バスはほとんど戦闘不能になりながらかのぷーの必殺技でなんとかできて、あとはサクサク進んでいる。運命の輪でだいぶ前まで戻ってやり直せるようだし。(ウォーレンレポートにのる以外にペナルティないのかな??)
大体ほとんどのキャラがアイテム使えるのかな?だとしたらすでにクレリックはいらない子のような気がしつつ、、、。

属人的なスキルポイントで能力をつけるのはあまり好きじゃないなぁ。結局戦闘に出すメンバーは育てたキャラだけになる。そのあたりFFTっぽくて、ちょっと気に食わない。

アイテムも、ちまちま店で買い変えていかないといけない感じ。装備でWT変ってない??
まだ弱い武具しか出てないからなのだろか。まぁ、この辺はいまどきっぽいというか、GBA版もそうだったような、、、。
っつうか、クラスによって装備できるアイテムが違うのは正直どうなのかな?まぁ今回は転職でステータス変わるからええのか。

キャラごとの属性も、チートくさいデフ系魔法もなくなり、転職の自由もなくなり、ゲームとしての感じはだいぶ変わった。
とりあえず、サクッとNルートで終わらせようかなあ。と思いつつ、でもNルートだと死者の宮殿までいかないとっていう気がしてしまうけれども、、、。


さて、2章に入った。
とりあえずNルート目指して選択肢はCルート。
なんか、以前ほどアロセールが極悪じゃないな。
ただ、アロセール救出はきつくてなんどかやり直したが、結局天候操作アイテムで、
はじめ晴れにして、アロセールが敵から離れたら大雨にする、といった感じでなんとかした。
やっぱりアイテムはケチっちゃダメってことね。

カルネージハートエクサ

とりあえずシナリオモードはすべてクリアしてシナリオの方のバトルアリーナも終わらせてショップを店じまいにした(ここまでで大体10時間くらい)。
途中からいちいち組直すのが面倒になって、前進しないバッドドリームに遠くからレールガン、敵が近付いてきたら大型ロケットな感じで組んでさっくりラストまでクリア。最後のニーズヘッグはさすがに1対1持ち込まれると勝てないので、3回に1回くらいしか勝てない。苦手な相手はプリーストを混ぜてなんとか。

今はバトルモードでロータスを調教してます。
やっぱりショットガンの方がいいのかねぇ、、、。
あんまり広いスペースは必要ないんだが、サブルーチンを立ち上げたい、、、。
GOTO文的なものが書ければいいのになぁ、、、、。
って、それだと矢印の意味がなくなるか。

同時に買ったタクティクスオウガはまだあんまりやってない。
こっちの熱が下がってから、、w

PSPgo届いた

とりあえず翌日に届けてくれたAmazonは偉いが、さて、、、、

PSPgoの無線通信はb規格の11Mbpsしか出ないという噂なので、ここはやはりとばかりに
パソコンにmediagoを入れてみる。って、これ、、、
quicktimeいれないといけないのか、、、まぁ、しょうがないから入れる。
きょう日の人々は、iなんとかのためにitunesとか入れてるから、quicktime入れるのに
抵抗ないのかもしれん。さて。

まぁ、入れてみたはいいものの、なぜかクレジットカードを受け付けてくれない。
ファイアウォールのせいかな〜なんていろいろ試していたら、
アカウントにクレジット変更の制限がかけられたらしい。

しかたないのでコンビニにPSNのプリペイドを買いに走って、なんとかタクティクスオウガと
カルネージハートを購入。
GBくらいだとさすがにダウンロードに時間がかかるねぇ、、、。
さすがに調子が良くて100MBに7分かかるらしい無線でやるよりは早いが、、、ふぬぬ。

まぁ、なんだかんだでかなり時間がかかったが、とりあえずはじまりました。