javascript のスタックフレーム

とあるゲームのツールを弄ってて、関数呼び出しすると、変数内容が化けるという現象に遭遇した。

C言語だと、スタックに変数が積まれるから、関数コールしてしまったら呼び出し元は変数に何を代入しようがコール先関数の変数内容は保証されているのだが、どうやら、JavaScript は変数ポインタか何かで参照で呼び出しているようだ。

と大ループの数だけ、変数を呼び出し元で確保して関数呼び出しを行なうと変数内容が化けなくなった。

シーケンシャルな処理なら、前のコードで問題は無いが、最近は ajax で非同期通信するのが当たり前になっているので、関数呼び出し中に、更に関数呼び出しが起こるなんてザラ。今回の場合、3回関数がコールされ、変数が全て、一番最後にコールした値になってしまった。

C言語みたいにスタックフレーム確保してくれるなら問題起きなかったのに、JavaScriptは面倒くさいのう。

意味が分からない機能追加


客の要望があり、「普段はログインする人も少ないので、ログインの部分小さくしておいて欲しい」との事。

ログインフォームのページを別に作るのも面倒くさいので、次の様にボタンを押したらログインフォームが現れるようにした。

そして、後に「畳む」を付けてくれと要望があったのだが、問題はこの部分。

こんなの誰が使うんだ? と思った人も多いだろう。
まあ、このページに限定すれば、開いたり畳んだりして遊ぶというのもアリだが、2~3回で飽きるだろう。

実際問題として、ログインしたい人はログインする為にボタンを押す訳だが、その人が何らかの理由でログインする事をやめたとして「畳まないと死んでしまう!!」みたいな理由があるのだろうか?

別に畳まなかったからと言って、システム的に何かができなくなるとかそういう不利益は無い。

強いて存在理由を挙げるとすれば、会員で無い人が、好奇心からボタンを押し、「元に戻さないと大変な事になる」という脅迫観念に囚われた場合に「畳む」というのがあると、安心できるかもしれないという程度かな?

他の重要な機能追加の時間を犠牲にしてでも、これを追加するという価値観は、わしには到底理解できんなあ。

Linux初心者向けサイトにハメられる

携帯電話 を pppconfig で設定していて、ATコマンドがうまく通ってるのか不安になったので、serial で接続しようとしたが、/dev/ttyACM0 が root:daialout なのでデバイスファイルをオープンできない。

「グループへの追加はどうだったっけ…」と “linux グループ追加” で google検索

usermod -G testgrp guest7

なんて例を見つけたので、「あー、そんな感じだったな」と

usermod -G dialout noizumi

などとやってしまった訳でございますよ。

追加されたか確認すべく

grep “noizumi” /etc/group

とやると、

dialout :20: noizumi

の一行しか出て来ず、vboxusers とかにもグループ追加したはずなのに変だなと思っていたが、とりあえず、携帯電話のダイヤルアップができたのでそのままにしておいた。

そして、今日VPN設定をしようとしたが、root権限が必要な作業でパスワードが通らない。ちょっとパニックになりつつ検索したが、日本語検索は例によって役に立つ情報は出てこない。

http://maketecheasier.com/fixing-sudo-error-in-ubuntu/2012/01/03

このサイトにずばり原因と理由と解決法が書いてあった。

Ubuntu の場合は、リカバリーモードの root だと読み出しのみなので、

mount -o remount,rw /

ってのが必要なようだが、このコマンドが思い出せなかったので、USBメモリにブートディスクではなく、ちゃんとインストールをした Ubuntu で起動して、 /dev/sda5 をマウントして、/etc/group を書き換えて復帰した。

Ubuntu では最低限、adm と sudo のグループに属していれば後は何とかなる。

グループへのユーザー追加を行うのに usermod では、 -a オプションをつけないといけない。つけないと所属していたグループからは削除されてしまう。

という事で、最初に見つけた例にまんまとハメられてしまっていた訳だ。ちなみにハメられたのは、このサイト

Linux初心者の基礎知識
http://www.linux-beginner.com/linux_kihon23.html

この例だと、グループにユーザーが追加されるというより、所属していたグループ全てが削除され、指定したグループのみの所属になるので、グループが変更されるというのが正しいな。

教訓として、Webに書いてある事を検証もせずに使うのはやめましょうという事だな 🙂

 

計画停電

コンピュータを生業とする者にとって、電力は必須である。

なので、原発が多少危険を孕んでいようが、断固稼働しつづけるべしと思っているが、無能な政府により原発を停められてしまったので、いい迷惑だ。

で、自宅の暑い部屋には居たくないので、Wifiを開放している店へ放浪生活をしようかと考えた。

今の環境だと、フリーなアクセス環境では、VPNなどの暗号化通信を使用しない事には使えたものではない。

なので、自宅外のWifiを使用する事を想定して、自宅にはVPN環境が構築してあって、一旦、家まで暗号化通信回線で接続し、家を経由してインターネットアクセスできるようにしてある。

しかし、これでは自宅の電気が停められたらどうしようもない。
うーむ、7月2日までにどこかVPN接続可能な場所を確保する必要があるな。

ファーストサーバで大規模なデータ障害 顧客データが消失 – ITmedia ニュース

引用元: ファーストサーバで大規模なデータ障害 顧客データが消失 – ITmedia ニュース.

ソフトバンク系ならさもありなん。

なにせ、自分で基地局を地道に整備して顧客サービスを充実させる事を怠り、NTT docomoがせっせと構築した基地局を「独占するな! 使わせろ」と、とんでも無い事を抜かすドあつかましい会社だしな。

ソフトバンクにはわしも顧客情報漏らされたし、守銭奴がやってる会社って、Fail safe とかには絶対金かけてないよな。

メールのフッタ

メールのフッタに関しては、RFCに規程があり、実は次の様にする事が望ましい。

問題は、"-- "の部分。

‘-‘×2と、行末に空白がつくのだが、来るメールを見ると、この区切り部分は模様としか認識していないメールが多く、当然ながら末尾に空白は入ってない。

時折、"-- "としっかり空白を入れているメールを発見し、「おお、わかってるな」と感心したりするのだが、Thunderbird は署名の設定をすると、自動的にこの区切りを入れるようだ。

まあ、分かってる人が作ってるから、ちゃんと正しい区切りを入れてくれるのであって、こういう実装にするのは中々素晴らしいと思う。

【Ubuntu 12.04 LTS 64bit】LibreOffice のメニュー豆腐文字化け

LibreOffice 3.5.2.2、気づいたら、こんなんになってたよ。

まあ、家では余り使わないからいいけど、会社の Ubuntu 11.10 は大丈夫かな? 迂闊にアップデートできんな。

検索したけど、最近にそういう事例は無い。

ほとんど使ってる人が居ないのか、それともわしの環境固有の問題なのか…。

Dell STUDIO 1558 突然電源OFF再び

VirtualBoxで仮想マシン起動したら、電源切れた。
最近、日中温度が高くなってるから、多分部屋の温度は30℃近くまでいってたかもしれないけど、リモート操作だから部屋の温度は分からない 🙂

その時のCPU温度は86℃くらい。
ハードディスクがSAMSUNG HM641JIと、朝鮮製であやしいので、とりあえずWD1TB 9.5mmのハードディスクを注文。

これで直らなかったら新マシンだな。
Ivy bridgeが潤沢に出回って安くなるまでダマシダマシ使うか。

MythTV 0.25-fixes 不具合

このあたりの話を見てみると、0.24まで使えてたコンポジット入力、S-Video入力について一切考慮されてない模様。

データベースに”Please add” ってチャンネルが登録されてて、これはMythTV backend の input connect でチャンネルスキャンするか、チャンネルデータ一覧から選択するとかで、いわゆる「チューナー」が作動しないと登録できない仕組みで、どう逆立ちしても composite を登録する手段が無いようだ。

で、以下、試行錯誤中に発見した事のメモ

radio にしちゃってたWinTV-PVR USB2をコンポジット入力に戻す方法。
v4l2-ctl -d /dev/radio0 –set-input=1
v4l2-ctl -d /dev/video1 –set-input=1

前まで、映像がコンポジットに戻っても音声が戻らない事があったが、radio デバイスと video デバイス双方にコマンドを送ってやると完全に戻る事が分かった。

Dell Studio 1558 の突然電源OFF

ハードディスクアクセスや、ビデオ再生していると、Dell Studio 1558 の電源が突然落ちるという不具合が時折出ていた。

熱暴走なら、/var/log/syslog あたりに CPU 誤動作の痕跡が見られたりする事もあるが、それもなく、conky の CPU 温度や負荷状況で、大して負荷もかかってなく、温度もそんなに高くないのにいきなり電源が落ちる。

大抵、ビデオ再生やバックアップでハードディスクをゴリゴリやってる時に起こるのと、筐体の左上がやたらと温度が上がってる時に突然電源がOFFになる。

dell studio 1558 突然電源OFF」なんかで検索しても、いつものごとく、意味のある情報は得られないが、「dell studio 1558 sudden power off」と検索すると、dell の英語サイトで、BIOS アップデートしろと書いてある。

アップデート後、また、バックアップをとってるが、筐体左上がかなり熱くなっている。しかし、今のところ電源断していない。直ってればいいなあ。