WordBench鹿児島に参加してきた

先月から第二土曜日に毎月定例で行う予定でしたが,先月は台風で中止になっていました. そういえば明日だなWP でちょっとはまってネタも出来たしと思って参加申し込みをしたら補欠>< 数時間後に確認したら繰り上がっていました.盛況ですね.

ユニマルの永田さんによる「universions」のお話

universions というのは初めて知ったのですが,WordPressに特化した開発ツールになるのかな?独自のGUIのバージョン管理システムやchat/wiki/tasb管理,WordPress環境が1分で作れるなど. 逆にシェルから操作とかは出来無さそう?gitとかがわかる人向けではないとのこと. シェルの画面が苦手な人の取っ掛かりにいいのかもです.

質問&相談をみんなで解決しましょう

Doorkeeper での参加登録時に質問相談などを書くようになっていて,それを付箋に書いて貼ってアンカンファレンス形式でのディスカッションでした. 畑違いなので結構知らない言葉が飛び交っていて大変でしたが勉強になりました.

次回

次回はWB東京とかぶるので第2土曜から1週ずらして10/18(土)になるとのことでした. 興味のある方は以下の辺りをfollow しておくといいのかも.

WP で嵌ったネタは発表してないしまたここにでも書きます.

DP1M0442DP1M0443DP1M0444DP1M0445DP1M0446

mysqldump の警告を修正(Warning: Using unique option prefix event instead of events is deprecated and will be removed in a future release. Please use the full name instead.)

mysql のバックアップ時に警告が出ているのに気づきました.

Warning: Using unique option prefix event instead of events is deprecated and will be removed in a future release. Please use the full name instead.

メッセージで検索するとちょっと前のリリースノートにそれらしいものが.

Previously, program options could be specified in full or as any unambiguous prefix. For example, the –compress option could be given to mysqldump as –compr, but not as –comp because the latter is ambiguous. Option prefixes now are deprecated. They can cause problems when new options are implemented for programs. A prefix that is currently unambiguous might become ambiguous in the future. If an unambiguous prefix is given, a warning now occurs to provide feedback. For example: Warning: Using unique option prefix compr instead of compress is deprecated and will be removed in a future release. Please use the full name instead. Option prefixes are no longer supported in MySQL 5.7; only full options are accepted. (Bug #16996656) MySQL :: MySQL 5.6 Release Notes :: Changes in MySQL 5.6.13 (2013-07-31)

オプションを省略したりすると警告を出すようになったよ.5.7から使えなくなるよ.ということのようです.

バックアップはssh 経由のリモートで取得していて, ~/.ssh/authorized_keys に以下のような感じで書いていました.

command="/usr/bin/mysqldump --defaults-file=/home/user/.my.cnf --opt --all-databases --event | /usr/bin/xz -9",from="nnn.nnn.nnn.nnn",no-pty,no-port-forwarding,no-X11-forwarding,no-agent-forwarding ecdsa-sha2-nistp521 AAAA...

–event 部分は本来は –events の様なので以下のように修正して解決しました.

command="/usr/bin/mysqldump --defaults-file=/home/user/.my.cnf --opt --all-databases --events | /usr/bin/xz -9",from="nnn.nnn.nnn.nnn",no-pty,no-port-forwarding,no-X11-forwarding,no-agent-forwarding ecdsa-sha2-nistp521 AAAA...

#ちなみに受け側はこんな感じ 2 13 * * * /usr/bin/ssh -q -p nnnnn -i /home/user/.ssh/id_ecdsa-mysql-backup user@server > /backup/server/db/&#96;/bin/date +\%Y\%M\%d_\%H:\%m:\%S_\%s_$$&#96;.sql.xz`

Kobo で mikutter が起動しなくて困る

IMG_20140902_071214
1月ほど前のオープンソースカンファレンス関西1日目にchroot で debian を起動した Kobo やAndroid を入れた Kobo を展示したりしていたのですが,mikutter を起動しておこうと思ったらエラーを吐いて起動しませんでした.
この時久々に起動したので大量のアップデートを行ったので環境が変わったのでした.デモの前に前もって確認しないとダメですよね….
エラーはKobo のコンソールを流れてしまい,スクロールバックの方法もよくわからない.ssh 経由で確認したいけれど会場のWi-Fi 経由では無理そうだったのでその時は諦めました.(開発者も居たのに!)

てことでさっき確認したのでメモ.

ssh 経由で起動してみるとこんな感じでした.

$ mikutter --confroot=/tmp/mikutter
/usr/share/mikutter/core/mui/cairo_cell_renderer_message.rb: line 10
GLib-GObject-WARNING **:Attempt to add property GtkCellRendererMessage::message-id after class was initialised
/usr/lib/ruby/vendor_ruby/gettext/text_domain.rb:100:in `=~': incompatible encoding regexp match (UTF-8 regexp with ASCII-8BIT string) (Encoding::CompatibilityError)
from /usr/lib/ruby/vendor_ruby/gettext/text_domain.rb:100:in `block in translate_singular_message'
from /usr/lib/ruby/vendor_ruby/gettext/text_domain.rb:99:in `each'
from /usr/lib/ruby/vendor_ruby/gettext/text_domain.rb:99:in `translate_singular_message'
from /usr/lib/ruby/vendor_ruby/gettext/text_domain_manager.rb:104:in `block in translate_singular_message'
from /usr/lib/ruby/vendor_ruby/gettext/text_domain_manager.rb:84:in `block (2 levels) in each_text_domains'
from /usr/lib/ruby/vendor_ruby/gettext/text_domain_manager.rb:83:in `each'
from /usr/lib/ruby/vendor_ruby/gettext/text_domain_manager.rb:83:in `block in each_text_domains'
from /usr/lib/ruby/vendor_ruby/gettext/text_domain_manager.rb:81:in `each'
from /usr/lib/ruby/vendor_ruby/gettext/text_domain_manager.rb:81:in `each_text_domains'
from /usr/lib/ruby/vendor_ruby/gettext/text_domain_manager.rb:103:in `translate_singular_message'
from /usr/lib/ruby/vendor_ruby/gettext.rb:118:in `gettext'
from /usr/share/mikutter/core/plugin/settings/basic_settings.rb:4:in `block in <top (required)>'
from /usr/share/mikutter/core/plugin.rb:21:in `instance_eval'
from /usr/share/mikutter/core/plugin.rb:21:in `create'
from /usr/share/mikutter/core/plugin/settings/basic_settings.rb:3:in `<top (required)>'
from /usr/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/share/mikutter/core/plugin/settings/settings.rb:4:in `<top (required)>'
from /usr/share/mikutter/core/miquire_plugin.rb:138:in `load'
from /usr/share/mikutter/core/miquire_plugin.rb:138:in `load'
from /usr/share/mikutter/core/miquire_plugin.rb:130:in `block in load'
from /usr/share/mikutter/core/miquire_plugin.rb:127:in `each'
from /usr/share/mikutter/core/miquire_plugin.rb:127:in `load'
from /usr/share/mikutter/core/miquire_plugin.rb:130:in `block in load'
from /usr/share/mikutter/core/miquire_plugin.rb:127:in `each'
from /usr/share/mikutter/core/miquire_plugin.rb:127:in `load'
from /usr/share/mikutter/core/miquire_plugin.rb:97:in `block in load_all'
from /usr/share/mikutter/core/miquire_plugin.rb:37:in `block in each_spec'
from /usr/share/mikutter/core/miquire_plugin.rb:32:in `each'
from /usr/share/mikutter/core/miquire_plugin.rb:32:in `each'
from /usr/share/mikutter/core/miquire_plugin.rb:35:in `each_spec'
from /usr/share/mikutter/core/miquire_plugin.rb:95:in `load_all'
from /usr/share/mikutter/core/boot/load_plugin.rb:7:in `<top (required)>'
from /usr/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/share/mikutter/core/miquire.rb:98:in `miquire_original_require'
from /usr/share/mikutter/core/miquire.rb:95:in `file_or_directory_require'
from /usr/share/mikutter/core/miquire.rb:76:in `block in miquire'
from /usr/share/mikutter/core/miquire.rb:75:in `each'
from /usr/share/mikutter/core/miquire.rb:75:in `miquire'
from /usr/share/mikutter/core/miquire.rb:18:in `miquire'
from /usr/share/mikutter/mikutter.rb:38:in `<main>'

言語環境周りぽいなてことで LANG を確認してみると空

$ echo $LANG

LANGja_JP.UTF-8 を設定してあげると動きました.

$ LANG=ja_JP.UTF-8 mikutter
/usr/lib/ruby/vendor_ruby/gtk2.rb: line 13
Gtk-WARNING **:Locale not supported by C library.
Using the fallback 'C' locale.
/usr/share/mikutter/core/mui/cairo_cell_renderer_message.rb: line 10
GLib-GObject-WARNING **:Attempt to add property GtkCellRendererMessage::message-id after class was initialised
/usr/share/mikutter/core/plugin/display_requirements/display_requirements.rb:5: warning: already initialized constant CACHE_DIR
/usr/share/mikutter/core/plugin/aspectframe/aspectframe.rb:12: warning: previous definition of CACHE_DIR was here
/usr/share/mikutter/core/plugin/notify/notify.rb:6: warning: already initialized constant DEFINED_TIME
/usr/share/mikutter/core/plugin/extract/extract.rb:8: warning: previous definition of DEFINED_TIME was here

とりあえずは起動メニューにこれを設定してあげると良さそうです.

追記)
最近は $ LC_ALL=ja_JP.UTF-8 mikutter なのかな?

chroot 環境で `/dev/null’ が使えなくて困る

Kobo の chroot 環境で debian を動かしたりしているのでたまにアップデートを行うのですが,実機だと遅いのでPC のchroot 環境で実行したりします
#アーキテクチャの違いはqemu で吸収. > ユーザーモードエミュレーションqemu を使って Kono on Debian のイメージを Host PC で apt-get とかする | matoken’s meme

そこで今回 apt-get update 中に以下のようなエラーが発生.

/bin/sh: 1: cannot create /dev/null: Permission denied

/dev/null を確認するとぱっと見デバイスは問題なさそうだけど使えない.

# ls -la /dev/null
crw-rw-rw- 1 root root 1, 3 Sep 2 02:57 /dev/null
# echo hoge > /dev/null
bash: /dev/null: Permission denied

エラーメッセージで検索するとkinnekoさんのページがヒット.

あーなるほど!

chroot 元で確認してみると確かに nodev が.

% mount |grep rootfs
/dev/sdc1 on /media/mk/rootfs type ext4 (rw,nosuid,nodev,relatime,data=ordered,uhelper=udisks2)

dev を付けて remount してみると

% sudo mount -o remount,dev /dev/sdc1
% mount |grep rootfs
/dev/sdc1 on /media/mk/rootfs type ext4 (rw,nosuid,relatime,data=ordered,uhelper=udisks2)

chroot しなおさなくても使えるようになった.毎回チェックしてるんですかね.

# echo hoge > /dev/null

てことで update 出来た :)

# apt-get install -f

eol な Ubuntu をアップグレードする

以前こんなメールを書いたことがあったのですが実際試してみたことはありませんでした.

やったことはありませんが,同様の手順でUbuntu でも11.04/11.10/12.04(lts)
の順にアップグレードして,来月リリースされるであろう14.04(lts) にアップグレードとするといけるかもしれません.
アップグレードは都度source list をold-releases に向けてdist-update することで行けそうな感じがします.
http://old-releases.ubuntu.com/ubuntu/

Disk を整理していてUbuntu 13.04 の入ったDisk が出てきたので実際に試してみました.

を見ると13.04,13.10 はeol なので, 13.04 -> 13.10 -> 14.04 と上げていく必要があるようです.

source.list を書き換えるためにコードネームを確認します.

を見るとこんな感じみたいです.

  • 13.04 -> raring
  • 13.10 -> saucy
  • 14.04 -> trusty

てことで,13.04 の source.list はこんな感じ.

/etc/apt/sources.list

deb http://jp.archive.ubuntu.com/ubuntu/ raring main restricted

先ずは13.04 の最新にするために source.list を先ず http://old-releases.ubuntu.com/ubuntu/ に書き換えます.

deb http://old-releases.ubuntu.com/ubuntu/ raring main restricted

#実際は複数行あると思うので全ての有効な行を書き換えます.以降も同様.

アップデートしてアップグレードします.

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade

次に 13.04 -> 13.10 に上げる為に source.list のコードネームを saucy に書き換えます.

deb http://old-releases.ubuntu.com/ubuntu/ saucy main restricted

アップデートしてアップグレードします……アップデートできません.

http://old-releases.ubuntu.com/ubuntu/dists
の下を見ると saucy がありません.
http://jp.archive.ubuntu.com/ubuntu/dists/ の下を見るとあります.未だ old-re;eases に移動していないようです.eol になってもすぐに移動するとみんな困るから暫くは移動しないんでしょうね.

てことでこんな感じに書き換えて

deb http://jp.archive.ubuntu.com/ubuntu/ saucy main restricted

アップデートしてアップグレードします.

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade

これで 13.10 に上がりました.
14.04 へも同様に上げられるはずですが,せっかくなので do-release-upgrade で上げました.

$ sudo do-release-upgrade

そんなこんなで 14.04 になりました.

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.1 LTS
Release:        14.04
Codename:       trusty

ちなみにどうでもいい環境だからポンポンアップグレードしていますが,本来ならリリースノートなど読んでバックアップ取ってテスト環境で検証してとかしてから行ったほうがいいですね.

uMap で LUG/BUG Map を作ってみる

以前東海道らぐの定例IRCで日本のLUGは今どれだけあるんだろうというような話が出ました.
その時出てきたものを榎さんが以下にまとめてくれていました.
https://enoki.titanpad.com/lug-list

これをuMap で地図に並べてみました.

フルスクリーン表示

ついでに?
http://www.bug.gr.jp/organizantion.html
に書かれていたBUG も一緒に並べてみました.(実際活動してるかは未確認です><)
レイヤーをLUG/BUG に分けているので左上のレイヤー切り替えでどちらか片方のみを表示することも出来ます.

今回はTuxとデーモンくんの画像を使ってみました.デーモンくんは透過画像と差し替えたいところです><

ここ間違ってるよとか,ここにもあるよと行った情報お待ちしていますo




祝OpenStreetMap10周年

8/9はOpenStreetMap 10周年ということで世界各地でパーティが開かれました.

OpenStreetMap 10th Anniversary Birthday party – OpenStreetMap Wiki

このページを見て,地図上にピンを立ててみると楽しいかもしれないと思い日本のパーティ会場をプロットしてみました.

今度の土曜のOSM 10周年パーティ会場をプロット http://t.co/NYCqi01S5R #osmjp

— (「ΦωΦ)「 (@matoken) August 7, 2014


フルスクリーン表示

これを見た @ikiyaさんが世界版やりませんか?ってことで全世界分もプロットしてみることに.

@matoken ありがとうございます! 相談ですがせっかくなのでドンとこのumapで全世界やりませんか? http://t.co/lOh0iuvX7F 

— ikiya (@ikiya) August 7, 2014

@ikiya 浜松反映しましたー.そんなに数多くないので全世界も行けそうですね.今出先なので帰ってから試してみますー

— (「ΦωΦ)「 (@matoken) August 7, 2014





フルスクリーン表示

WikiPage に載せてもらったり,
OpenStreetMap 10th Anniversary Birthday party – OpenStreetMap Wiki

本家ML に投稿してもらったりしました.
[OSM-talk] OSM 10th Anniversary Birthday party World Map

初め世界中合わせてもそんなに数ないからすぐだなーとか思っていたのですが,よく見るとアメリカは別ページにまとめられていたり,座標がないところは地名から探したりと結構時間かかっちゃいました.
#実はOSM 使わずにGoogleMap 使っているところも多かった…
uMap はgeojson の読み込みとかもできるのでもし座標データがあれば機械的にマッピングも出来るんですけど今回は手作業でした><



さて,自分はというと台風で外に出られないこともあってサーベイは諦めて桜島の東側から基板地図情報2500をトレースして黒神の辺りまで入力してました.(埋没鳥居で有名かも).早いとこ桜島トレース終わらせたいです.

RaspberryPi B+ でUSB で1.2A を利用できるようにする(失敗)

“Raspberry Pi Model B+のUSBポートに1.2Aの電力を供給する – あっきぃ日誌” http://akkiesoft.hatenablog.jp/entry/20140727/1406443999

を見て /boot/config.txt 編集しないとB+ でUSB に1.2A の電力を供給できないことを知りました.
で,/boot/config.txt 規定値のまま,safe_mode_gpio=4 登録,max_usb_current=1登録.両方登録のパターンで試したんですがいずれもHDD スピンアップしませんでしたorz

電源はGPIO から河野総統謹製のラズベリーポット(ラズベリーハブの電源部分のみ+αのもの),microUSB からAnker の40W USB 電源の2パターンを試しました.
HDD はSeagate Momentus XT 500GB/4GB SSD付きハイブリッド7200rpm を500円位で秋葉原で売っていた適当なケースに入れたものです.5400rpmとかなら行けるのかなとか?

Y型のUSB cable を使って片方から給電したら動くのでHDD は問題なくRaspberryPi B+ からの電気が足りないせいなはず.ちなみにPC(Lenovo X220)だとUSB x1で動作します.

OS 色々いじってるので一旦初期状態にしてからまた試してみようかと思います.

IMG_20140730_080938

鹿児島Linux勉強会-第03回-に参加

7/25(金)に鹿児島らぐの鹿児島Linux勉強会に行ってきました.

今回は鹿児島中央駅前のよかプラザでの開催でした.
IMG_20140725_173144
#カタカナでリナックスというのを見るとこないだのLinuxConのスタッフTシャツを思い出します :)

今回はATND での集まりが悪くもしかしたら2人での開催になりそうと思っていたのですが,始まってみると6人でした.
今回は前半はLinux読書会でLinux標準教科書の輪読,後半は発表で私は以下のよな発表を行いました.

その他Vimネタ,Seti@homeネタが披露されました.

自分の発表は最後にしてもらって(スライド完成してなかったorz)
終了時間見ながら発表したのですが,共同購入をしていたRaspberryPi B+ の受渡し時間を考慮してなくて終了後適当なベンチで受け渡しとなってしまいましたorz

IMG_20140723_233409

終了後は有志(4人)で魚とか食べて

IMG_20140725_211837IMG_20140725_213943IMG_20140725_215719IMG_20140725_215823IMG_20140726_002543

その後漫画喫茶に泊まりました.公共交通機関欲しいです
#この日は公共交通機関があっても乗れなかった気はしますが><

IMG_20140726_0314405vD2ZXwC---1

2007年と現在のOSMの比較が出来るSITE

Twitter の #osmjp ハッシュタグで以下の書き込みを見かけました.

2007年のOSMデータといまのデータ。ヨコに並べるとまさに隔世の感、あります。 http://t.co/7OWoJSh1eI #osmjp

— nyampire (@nyampire)

July 26, 2014

九州の辺りをみると真っ白><
Screenshot from 2014-07-30 06:49:31
“OSM Then And Now” http://mvexel.github.io/thenandnow/#8/32.697/130.897

OSM を知ったのは2006年頃だったのですが,当時はこんな感じでデータのインポートもトレースも出来ず基本GPSロガーを使ってマッピングするしか無い頃でした.
これは無理だ><って感じでなかなか手を出してなかったんですが数年でかなり埋まってすごいなと思ったもんでした.もちろん今の時点でもまだまだ建物の情報やPOIも少ないのですが建物は衛星写真や基板地図情報のトレースも出来ますし,スマホが普及してPOIの入力もお手軽に出来るようになって編集方法もすごくお手軽になってます.

そのうち自分のやっている入力方法もまとめてみたいところです.