nkf でbase64 エンコード,デコードしたら結果が違う?

小さなバイナリを受け渡ししたいけれどファイル共有サービスとか使うのも面倒だしbase64 にしてgist に貼ってしまおうと思ったのですが,nkf コマンドでbase64 にエンコードして,確認のためデコードしてみたら違う結果に.

% cat original | nkf -MB > hoge
% cat hoge | nkf -mB > fuga
% diff original fuga           
バイナリーファイル original とfuga は異なります
% ls -l
-rw-r--r--  1 mk   mk       4080  5月 29 20:38 original
-rw-r--r--  1 mk   mk       5422  5月 29 20:52 hoge
-rw-r--r--  1 mk   mk       3999  5月 29 20:52 fuga

Google+ にこのことを書いたら
https://plus.google.com/u/0/103792214056489833385/posts/bbVzNS7RNTR

Masakazu Takahashiさんにコメントをいただきました.

試したところ、デコードのときに入力文字コードを明示的に指定する必要があるようです。

% nkf -mBW hoge > fuga

そんなこんなで、base64のエンコード/デコードだけなら、base64コマンドのほうが確実かも。

ということで,base64 コマンドならGNU Coreutils に含まれているので大抵の環境で使えるしってことでbase64 コマンドで貼り付けました.

% cat jl-bct.bct | xz | base64 | gist-paste

ついでに復元はこんな感じで

% wget -O – https://gist.github.com/matoken/b2041569865a82895082/raw/53b85e9333e3b837d24714a8e529dde69ec788e9/jl-bct.bct.xz.base64 | base64 -d | xzcat > jl-bct.bct

Debian squeeze LTS リリース

Debian squeeze(old-stable) が今月末でサポートが切れます.しかし,i386とamd64 アーキテクチャについてはLong-Term-Support を実施して2016年02月06日までサポートを行うことになりました.このためのリポジトリがリリースされたようです.

backports もサポートされるようなので利用している人も助かりますね.
注意しないといけないのは,squeeze 全てのパッケージがサポートされるわけでは無い
LTS のリポジトリを登録しないといけないところです.
サポート状況のチェックツールもリリースされました.ツールのパッケージは debian-security-support で,コマンドは check-support-status です.

https://wiki.debian.org/LTS/Development#Add_squeeze-lts_to_your_sources.list
を参考にsource.list を書き換えて(mirrorにも対応しているので日本に向けるといいと思います)

/etc/apt/sources.list

# squeeze-lts
deb http://ftp.jp.debian.org/debian squeeze-lts main contrib non-free
deb-src http://ftp.jp.debian.org/debian squeeze-lts main contrib non-free

# backports(非利用時は以下は不要)
deb http://backports.debian.org/debian-backports squeeze-backports main
deb-src http://backports.debian.org/debian-backports squeeze-backports main

以下のような感じで行けました.

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install debian-security-support
$ check-support-status
Security support has ended for one or more packages

Unfortunately, security support for some packages needed to be stopped
before the end of the regular security maintenance life cycle.

The following packages found on your system are affected by this:

* Source:libplrpc-perl, ended on 2014-05-31 at version 0.2020-2
  Details: Not supported in squeeze LTS
  Affected binary package:
  - libplrpc-perl (installed version: 0.2020-2)

* Source:zabbix, ended on 2014-05-31 at version 1:1.8.2-1squeeze5
  Details: Not supported in squeeze LTS
  Affected binary packages:
  - zabbix-agent (installed version: 1:1.8.2-1squeeze2)
  - zabbix-frontend-php (installed version: 1:1.8.2-1squeeze2)
  - zabbix-server-mysql (installed version: 1:1.8.2-1squeeze2)

Security support is limited for one or more packages

Unfortunately, security support for some packages had to be limited.

The following packages found on your system are affected by this:

* Source:php5
  Details: See README.Debian.security for the PHP security policy
  Affected binary packages:
  - libapache2-mod-php5 (installed version: 5.3.3-7+squeeze19)
  - php-pear (installed version: 5.3.3-7+squeeze19)
  - php5 (installed version: 5.3.3-7+squeeze19)
  - php5-cli (installed version: 5.3.3-7+squeeze19)
  - php5-common (installed version: 5.3.3-7+squeeze19)
  - php5-curl (installed version: 5.3.3-7+squeeze19)
  - php5-gd (installed version: 5.3.3-7+squeeze19)
  - php5-gmp (installed version: 5.3.3-7+squeeze19)
  - php5-mcrypt (installed version: 5.3.3-7+squeeze19)
  - php5-mysql (installed version: 5.3.3-7+squeeze19)

実はWheezy への以降は済んでいたのですが,LTS を試したいのでsqueeze 環境を復活させました :p

Debian でパッケージ導入時のダイヤログを抑制する

Debian でmysql-server 等を導入するとパスワード設定ダイヤログが出てくる.
Screenshot from 2014-05-30 06:20:11
これを抑制できないか試してみた.

microHOWTO: Perform an unattended installation of a Debian package

export DEBIAN_FRONTEND=noninteractive
apt-get update -q
apt-get install -q -y -o Dpkg::Options::=”—force-confdef” -o Dpkg::Options::=”—force-confold” apache2 mysql-server

これを参考に

% sudo DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server

でダイヤログ出さずに導入できた.
でもmysql-server の場合パスワード設定しないと結構まずい.
即パスワード設定するとか

% mysqladmin -u root password ‘password’

daemon止めるとかしないとだと思う.

% sudo /etc/init.d/mysql stop

春の翻訳&ドキュメンテーション祭りに参加

ということで参加してきました.WordPress はそんなに使ってないのですが(今はこのページともう一箇所だけ),普通にGettext での国際化のようなので最近翻訳してなくてコマンドとかも忘れてるし…てことで参加してきました.
会場は301コワーキングスペース.
IMGP9309
こちらのビルの
IMGP9311
その名の通り301号室です.

  • 鹿児島のコワーキングスペース 301 サンマルイチ | 鹿児島中央駅から徒歩3分
  • 2014-05-17 12.44.13
    #準備中の写真しかとってなかったですorz
    翻訳対象はドキュメント,プラグイン,テーマなど.鹿児島では Theme My Login Login LockDown をターゲットにすることに.

    Theme My Login は .pot があるのでお手軽だったのですが, Login LockDown は.pot の作成からでした.

    作業の前にdebian/ubuntu 環境だと,関連パッケージは以下のような感じで導入できます.

    % sudo apt-get install gettext-base gettext poedit

    .pot を作成します.初め以下のようにしていたのですが, _e の行が拾えません.

    % xgettext —keyword=’_’ —language php —from-code=UTF-8 -o ./loginlockdown.pot find $PWD -name *.php -type f

    試行錯誤して最終的に以下のように —keyword を複数指定することで恐らく全て抽出出来ました.

    % xgettext —keyword=’__’ —keyword=’_e’ —language php —from-code=UTF-8 -o ./loginlockdown.pot find $PWD -name *.php -type f

    .pot から ja.po の作成は以下のようにして行いました.

    % msginit —locale ja_JP.UTF-8 —input=loginlockdown.pot

    初め —locale ja としていたのですが,これだと charset=CHARSET となって先ずそうだったので ja_JP.UTF-8 を指定するようにしました.これで, charset=UTF-8 になりました.

    後はPoedit で翻訳して保存すると自動的に ja.mo も作成されます.
    手動で mo を作る場合は, % msgfmt ja.po -o ja.mo で行けます.
    #ちなみに今回 Poedit に有料版があるのを知りました! http://poedit.net/pro/

    ここでまた問題.
    ja.mo の結果が反映されない><

    source を見るとそもそも load_plugin_textdomain() が呼ばれていなそう.試しに書き換えてみると .mo が反映されました!
    #.pot が作れるのになぜ!?

    Screenshot from 2014-05-23 13:06:11

    という辺りで今回は時間切れとなりました.
    別の方々が ja.po の翻訳をされていたのでそっちとマージするといい感じになりそうです.

    鹿児島会場の参加者は最終的に7人でした.
    そうそう!定期的にやりたいねって話になりました.次回は恐らく6/14(土)となりそうです.
    興味のある方は以下のFacebook Group をcheck!

    関連URL

    今回のハッシュタグ

    OSunC2014川越に遠隔参加

    2014-05-10 13.28.32
    5/10 の OpenSourceUN-Conference2014川越 がUstreamで中継されるということでUstream 経由で参加しました. 当日は家だと回線が細い&不安定なので(光回線はよ><)ネットカフェで視聴しました.
    「今日の #osunc 行けないんで誰か #Kagolug の宣伝してくれないでしょうか(ぉ http://kagolug.org/ 」
    とか前日に投げたところ「東海道らぐってな〜に?」の中と「鹿児島Linux勉強会ってなーに」として発表してもらえました.はしもとさん,koedoyoshidaさんに感謝!

    発表内容はこんなかんじでした.
    Twitter 等で発表資料を見かけた人はURL をつけてます.

    #発表したい人は当日以下のページを編集してねって感じになってました.
    ##今は編集不可になってるよう.

    当日のTwitter つぶやきのまとめです.

    自宅でUst視聴すると色々割り込みが入るのでネットカフェで視聴したのは当たりでした. 問題はネットカフェが自動車で30分位のところに1件.後はフェリーを使って鹿児島市内へという感じで選択肢が数無いところですね.運転をするのでお酒も飲めないし><
    でも久々に小江戸らぐの空気に触れられて楽かったです.

    「赤城さんのお風呂タイマー @艦これ」をDebian jessie で試す

    赤城さんのお風呂タイマー @艦これ というソフトを見つけて,Linux でも動作するよと書かれていたので気になっていました.
    これをDebian jessie 環境でビルドしてみました.(が,動作していませんorz)

    ソースコードからビルドすれば、Linux や Mac でも動作することを確認しています。
    

    クリーンな環境でビルドしてないので足りないものもあるかもしれませんが,こんな感じで必要なパッケージを導入します.

    % sudo apt-get install liblua5.1-0-dev libyaml-cpp-dev libboost1.53-dev libopencv-highgui-dev libluabind-dev doxygen xdot libcsnd-dev lua5.2 mercurial build-essential
    

    bitbucket からsource を貰ってきます.

    % hg clone https://bitbucket.org/satofumi/bath_timer
    

    make します.

    % cd bath_timer
    % make
    

    実行ファイルを叩いてみます.

    % bath_timer/bath_timer
    zsh: segmentation fault  bath_timer/bath_timer
    

    orz
    カレントディレクトリで実行したりテーマファイルをコピーしたりしてみましたがうまく行きませんでした><
    テーマはディレクトリ構成とかがよくわからなかったのでWindows のものをCP したりしてみました.

    ということで,とりあえずいつものkoedoyoshidaさんの艦これタイマーに戻ります….

    ちなみに,どうやってブラウザと通信しているんだろうと疑問だったのですが,こちらに解説が.通信しているわけではなくOCR で読み取っているんですね.眼から鱗.

    Linux でバッテリー状況確認方法幾つか

    以前は /proc/acpi/battery/BAT0 以下のあたりを見てバッテリ状況を確認できていました.

    最近は /proc 以下は非推奨になっていてそこでは情報が見られません. /sys/class/power_supply/BAT0 あたりで見られるようになっています.

    でも値が生データのようです.

    % cat /sys/class/power_supply/BAT0/uevent
    POWER_SUPPLY_NAME=BAT0
    POWER_SUPPLY_STATUS=Unknown
    POWER_SUPPLY_PRESENT=1
    POWER_SUPPLY_TECHNOLOGY=Li-ion
    POWER_SUPPLY_CYCLE_COUNT=0
    POWER_SUPPLY_VOLTAGE_MIN_DESIGN=11100000
    POWER_SUPPLY_VOLTAGE_NOW=12816000
    POWER_SUPPLY_POWER_NOW=0
    POWER_SUPPLY_ENERGY_FULL_DESIGN=93240000
    POWER_SUPPLY_ENERGY_FULL=78080000
    POWER_SUPPLY_ENERGY_NOW=78010000
    POWER_SUPPLY_CAPACITY=99
    POWER_SUPPLY_MODEL_NAME=42T4940
    POWER_SUPPLY_MANUFACTURER=SANYO
    POWER_SUPPLY_SERIAL_NUMBER= 4572
    

    acpi コマンドでも少し情報は見られますが少ないです.

    % acpi -bi
    Battery 0: Unknown, 99%
    Battery 0: design capacity 7275 mAh, last full capacity 6092 mAh = 83%
    

    acpitool だと詳細な情報が見られます.

    % acpitool -B
      Battery #1     : present
        Remaining capacity : 78010 mWh, 99.91%
        Design capacity    : 93240 mWh
        Last full capacity : 78080 mWh, 83.74% of design capacity
        Capacity loss      : 16.26%
        Present rate       : 0 mW
        Charging state     : Unknown
        Battery type       : Li-ion 
        Model number       : 42T4940
        Serial number      : 4572
    

    今回 * Lenovo のバッテリー自主回収 | matoken’s meme

    の時知ったのですが,upower というコマンドもありました.多分HAL 依存です.

    % upower -d|grep -i device
    Device: /org/freedesktop/UPower/devices/line_power_AC
    Device: /org/freedesktop/UPower/devices/battery_BAT0
    
    % upower -i /org/freedesktop/UPower/devices/battery_BAT0
      native-path:          BAT0
      vendor:               SANYO
      model:                42T4940
      serial:               4572
      power supply:         yes
      updated:              2014年04月02日 05時54分34秒 (6 seconds ago)
      has history:          yes
      has statistics:       yes
      battery
        present:             yes
        rechargeable:        yes
        state:               fully-charged
        energy:              78.01 Wh
        energy-empty:        0 Wh
        energy-full:         78.08 Wh
        energy-full-design:  93.24 Wh
        energy-rate:         7.137 W
        voltage:             12.816 V
        percentage:          99%
        capacity:            83.7409%
        technology:          lithium-ion
    

    proc や sys で覚えるよりコマンドの方で覚えといたほうがまた変わったときも吸収されて長く使えるかも?
    それともコマンドが対応できなかったり無くなっちゃうか….

    追記)
    Gnome のGUI だと「電源使用率の統計(gnome-power-statistics)」で見られます.多分upower を利用してるような気がします.
    Screenshot from 2014-04-02 20:17:14

    Lenovo のバッテリー自主回収

    2014-03-30 20.45.18

    Lenovo のNotePC に使われているバッテリーの一部で問題が起こる可能性があるということで自主回収を行っているようです.
    アメリカで2件の発熱事故があったそうです.

    対象機種を調べてみると,私の持っているX201s も対象だということで確認してみました.
    #現在USBx2が死んでたりマザーボードが死にかけてよく落ちたりするようになっているorz

    Windows で動作するチェッカープログラムが提供されていますが,OS はWindows ではないので次のフォームを利用しました.

    バッテリー裏のバッテリーコードを入力するのが面倒(22桁!)ですが,バッテリーさえ手元にあればチェックできます. 端末はLinux なのでバッテリのステータスを表示してコピペすればと思ったのですが,型番やシリアルなどは出てきますが,バッテリーコードらしきものは見当たりませんでした.チェックプログラムは提供されているので求め方はあるんでしょうけどね><

    手元に2本あるのでバッテリーコード入力すると,買い増しした方のバッテリーが交換対象でした. そのまま住所などを入力するととりあえず手続き完了. ちなみに1本ずつしかチェックできなので,恐らく複数の対象バッテリがある場合は住所等の入力はその都度必要そうです.

    しばらく待つと新しいバッテリーが発送されてくるはずなので,代わりに対象のバッテリーを返送する形になるようです.

    ちなみに,交換対象のバッテリセルはSANYO で,対象外のはPanasonic でした.

    バッテリーのヘタリ具合もみてみると,未だ80%程のようでまだまだ使えますね.2本を交互に使ってたのがよかったのかな?ちょっと勿体無い.

    $ upower -d|grep -i device
    Device: /org/freedesktop/UPower/devices/line_power_AC
      native-path:          /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:09/PNP0C09:00/ACPI0003:00/power_supply/AC
    Device: /org/freedesktop/UPower/devices/battery_BAT0
      native-path:          /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:09/PNP0C09:00/PNP0C0A:00/power_supply/BAT0
    $ upower -i /org/freedesktop/UPower/devices/battery_BAT0
      native-path:          /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:09/PNP0C09:00/PNP0C0A:00/power_supply/BAT0
      vendor:               SANYO
      model:                42T4694
      serial:               xxxx
      power supply:         yes
      updated:              Sun Mar 30 20:36:32 2014 (15 seconds ago)
      has history:          yes
      has statistics:       yes
      battery
        present:             yes
        rechargeable:        yes
        state:               charging
        energy:              56.1993 Wh
        energy-empty:        0 Wh
        energy-full:         75.3912 Wh
        energy-full-design:  93.24 Wh
        energy-rate:         17.3715 W
        voltage:             12.746 V
        time to full:        1.1 hours
        percentage:          74.5436%
        capacity:            80.8571%
        technology:          lithium-ion
      History (charge):
        1396179392      74.544  charging
        1396179363      74.337  charging
        1396179333      74.131  charging
        1396179303      73.910  charging
      History (rate):
        1396179363      17.371  charging
        1396179333      17.349  charging
        1396179303      17.072  charging
    

    ちなみにこの買い増ししたバッテリーは2011年3月19日に秋葉原のニッシンパルで購入しました.計画停電時にバッテリ容量が心もとなかったので購入したのでした.

    sl改なえるたそ〜

    てことで手元の端末に入れてみました.
    Debian jessie で動かしましたが,Debian/Ubuntu系だと同じ手順で行けると思います.

    先ずは開発環境の導入.

    $ sudo apt-get install build-essential git
    

    続いて,erutaso の元になっているsl のbuild に必要なパッケージ導入.

    $ sudo apt-get build-dep sl
    

    source を貰ってきて,build

    $ git clone https://github.com/sgymtic/sl.git
    $ cd sl
    $ make
    $ ./erutaso
    

    手元の環境では ~/bin にパスを通してあるのでそこにコピーしておきました :)

    昔Solaris 環境でいっぱいパッチの当てたsl 入れてたの思い出しました.遮断機とかすごい長い編成とか往復とかでなかなか邪魔でしたw

    追記)
    手元の環境で KININARIMASU と言わないのでsource 見たらoption ありました.

    • -a KININARIMASU というようになる
    • -F 斜めに移動

    ※米澤 穂信の最近の本読んでないなぁ…

    GdNewHat 20 を導入して日本語環境を設定

    GdNewHat 20 を導入して日本語環境に

    gdnewhat

    インストールの準備

    公式ページのダウンロードサイトからiso イメージを入手します.

    今回はx86_64 のiso ファイルを BitTorrent で入手しました.
    これをUNetbootin でUSBメモリに導入してGdNewHat のUSBインストールメディアを作成しました.

    GdNewHat20 の導入

    作成したUSBメモリから起動してGdNewHat のインストーラを起動します.
    日本語を選択してインストール.

    インストーラのディスク設定時にインストーラごと落ちてしまって困ったのですが,インストーラではなくfdisk で手動設定した後インストーラで設定したら通りました.

    Update

    起動できたらネットワークに接続し,最新の状態にします.

    $ sudo yum update -y

    日本語入力の設定

    日本語入力のためにibus-moac を導入して設定します.

    ibus-mozc の導入

    $ sudo yum install mozc ibus-mozc

    ibus の設定

    インプットメソッドの切り替えのショートカットが Super+space なので,Ctrl+spoace に変更します.

    $ ibus-setup

    で設定画面が起動します.

    ibus 自動起動設定

    ibus-daemon を起動すると日本語入力が出来ます.
    これを自動的に起動するようにします.

    「システム」->「Preferences」->「ユーザ向け」->「自動起動するアプリ」で「自動起動するアプリの設定」画面を起動します.
    「追加」ボタンで以下のように登録します.
    * 名前 : ibus-daemon
    * コマンド: /usr/bin/ibus-daemon -d
    * 説明 :

    これで再起動して Ctrl+space で日本語入力ができるか確認します.