sakadon のすべての投稿

Move on MySQL now! from HDD failed system… (mysqldumpがerrorcode 30で死ぬ件について)

自宅サーバ、そろそろ自宅やめてさくらVPSにしようと思い立ってさくらのVPSを契約し1年経った。使ってないのに1年経った、アホい。アホイ道選手権大会なので、最近出た東京リージョンのSSDプランへ変更(というか契約しなおし)構築を開始した。

  • いままで: samidare.kerox.info
  • これから: yukizuki.kerox.info

ちなみに、自宅サーバのHDDはこわれそうらしくって、1年ぐらい read only化されている。つまり、読み取り専用で1年も稼働していたのだ。がんばるナァ!関心!

面倒くさいので、su して全部rootで実行;
(伝統的に -pのあとのパスフレーズにスペース入れない)

# mysqldump -u root -x --all-databases -punkounko | gzip | ssh sakadon@yukizuki.kerox.info 'cat > ~/dump.sql.gz'

local には書き込めないので、すべての標準出力をsshで引越し先にぶち込んでいる。mysqldumpしてデータベースを引っ越す。CentOS7ではmariadbに変更となったが直接打ち込む分には問題無さそう?(まだ問題が表面化してないだけかもしれない)

ちなみに、readonly化されているので、mysqldumpがtmpファイルを作成できずに;

mysqldump: Couldn't execute 'show fields from `cdef`': Can't create/write to file '/tmp/#sql_c89_0.MYI' (Errcode: 30) (1)

などと宣う。ちょっとこれは回避方法がない。USBフラッシュメモリなどを指してmntし、そちらに回すなどするしかない様子。しかし調べてみたら、昔の自分が違うHDDを本体にぶっさしていたようで、そっちは書き込める。

[root@samidare backup]# fdisk -l

Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot Start End Blocks Id System
/dev/sda1 * 1 19457 156288321 8e Linux LVM

Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot Start End Blocks Id System
/dev/sdb1 * 1 13 104391 83 Linux
/dev/sdb2 14 121601 976655610 8e Linux LVM

sdbが多分それ。助かったね!!!serverfaultを参考に以下のように回避

# export TMPDIR=/backup/rescuetmp ; mysqldump -u root -x --all-databases -punkounko > /backup/rescuetmp/backup.sql

だめだ、うまくいかない。dump途中でerrcode 30で止まる。仕方ないので、remountでrw復旧出来ないか試す。

[root@samidare backup]# mount -o remount,rw /dev/mapper/VGmain-mainSlash 
mount: ブロックデバイス /dev/mapper/VGmain-mainSlash は書き込み禁止です、読込み専用でマウントします

fmfm、知ってるわボケ!!!!こちらを参考にfsckでぐるぐるする。

[root@samidare backup]# umount /dev/mapper/VGmain-mainSlash 
[root@samidare backup]# fsck -t ext3 /dev/mapper/VGmain-mainSlash
...

なんか/dev/mapper/を含むのか含まないのかわからないが、どっちも試したがどうもうまくいかない。堂々巡り感が強くなってきており、打開策が見当たらない。うんこ

ここで再起動させる。一か八か、な感じで。

…とおもい、復活してきたので、mysqldumpしたらdump出来た!!やったーーーーー!!よくわからんけど今のうちだ!

# mysqldump -u root -x --all-databases -punkounko > /backup/rescuetmp/backup.sql

とりあえず、問題ない領域へ出して対処する。(そのあと、↑にだしていたsshでdumpも実行しといた。何事も一歩ヅツ…)

というとで、こんなことに成る前にbackupを定期的に取るか、もしくはロードアヴェレージがすばらしい器機で構築するか、黙ってAWS RDS使ってろってこったな。まあ、さくらのVPSもハードウェア自体はかなりお金掛けてるんでしょうし、論理構成されてるだろうから、不安はグッと下がりますね。

新環境yukizuki.kerox.infoでは以下のようにしてぶっこみ。

# gzip -d backup.sql.gz
# mysql -u root -p < backup.sql

よかったね

(30分後追記)やはりfsck効いたようで、/dev/mapper/VGmain-mainSlash/がrwマウントされている。fsck -t 馬鹿にせず撃ちまくり、再起動をする度胸を試したことにより、成功を手にしたのだ。終わり

FirefoxOS用のIRCクライアントとして Foxkeh Chat というのをリリースした

のでみんな使ってね!

まあまだ色々まだまだなので、なんかフィードバック下さい。一応公式ページっぽいのも用意しといたけど、changes logだけになりそう。

すごく悩んだ問題で、URLが来たら勝手にアンカーつけてリンク飛ばせるようにしたんだけど、標準的に<a href=”url”>でやるとインナー展開しちゃってブラウザに飛ばしてくれない。

すわMozActivityか、みたいな感じで調べていたんだけどどれも面倒くさそうで、そんな簡単なことが整備されてないのかと思ったんですけど。

なんてことはない、target属性_blank値を付与するだけで望みが叶って終わった…

FirefoxOS on jQuery で .keypress() とか onKyedown属性によるイベントハンドルが何故か利かない件について

題名がやたら長くなるほどクソみたいな問題だ。割と由々しき問題で、結論から言うと window.onkeypress を使うことになった。

※オレだけかもしれん。Firefox OS 1.3 シミュレータ上での話です。

問題としては jQuery セレクタによる指定が class あるいは抽象的な指定の場合、即ちNOT id属性値の場合に再現する(みたい)。例えば以下のコード;

<p class="unko"><input onkeydown="_sayKeydown(e)"></p>
$(".unko input").keypress( function(e){
    console.log("fuck");
});

この場合、unko class属性値が付与された要素内inputそれぞれの中でkeypressしても無反応であった。ちなみに.keypress()じゃなくて.keydown()にしても同じく無反応ね。

じゃあjQueryがいけんのではということで、input要素へonKeydown属性値で_sayKeydown()を起動してみよう;

function _sayKeydown( e ){
    console.log(e);
}

まあ出てこないです。

もしかして、keyイベント系って自明なthisじゃないとダメなん?うーんjsの基礎が成ってないのが露呈してしまったか???しかし基礎なんてドウでもよくて、結局以下で解決した。

window.onkeypress = keypress;
function keypress(e){
    var say_id = e.target.id; // そいつのid属性値
    var say_val = e.target.value; // そいつのvalue属性値
    if( e.which === 13 ){
        // enter押された時の動作
    }
}

Stock overflowを参考にした。

もっとスマートな方法はあるんだべか。おら馬鹿だからよくわからん。

ドコモ、au、ソフトバンク(em/willcom)各社の電波利用状況

ドコモ、au、ソフトバンク(とイーモバイル・ウィルコム・ワイヤレスシティプランニング)が、どういう状況か色々と難しいからまとめ表作った。間違い指摘歓迎。

なお表の電波帯数値はバンド基準表記。1800はバンド3、1700はバンド9。

こう見るとソフトバンクやはりこの分断化はヤバい、何がヤバいというと周波数帯ありすぎて、全部掴める端末を開発するコストや、維持管理コストが大変だろう。

LTE規格が3つ(AXGP(TD-LTE)&FD-LTE)というのもすごい、さらにWCDMA、PHSが入るのか。

auはWiMAX省いてしまったけど、もういいよね。