Month: 9月 2014

ibus-mozc から fcitx-mozc に変更したら JOSM で日本語入力できなくなって困る

JOSM はマルチプラットホームでLinux/Windows/Mac で動作しますが,以下の話はLinux固有の問題です.

日本語入力のためのインプットメソッドフレームワークを iBus から fcitx に切り替えたのですが,JOSM で日本語入力ができなくなってしまっていました.Ctrl+Space でトルグするようにしているのですが,他のアプリケーションでは問題ないのにJOSM の場合は無反応で日本語入力ができなくなってしまいました,
そこで一時的にiBus/fcitx の両方が動作するようにしてJOSM 利用時だけiBus を使うようにしていました.

この話を #osckansai で(確か)武山さんに話したところ環境変数か何かが足りないのでは?と教えてもらいました.

少し試したところ XMODIFIERS=”@im=fcitx” を設定するとfcitx でJOSM に日本語入力が出来るようになりました.

% XMODIFIERS=”@im=fcitx” java -jar ~/bin/josm-tested.jar

変換候補がウィンドウの下に表示されちゃいますがまあ許容範囲かなと.

Screenshot from 2014-09-21 13:08:09

毎回コマンドを打つのもあれなのでこんな感じでショートカットを作成しておきました.
#何気にこっちのほうが時間掛かったorz
##環境変数を指定するには env を付ける.~/, $HOME は使えなかったのでフルパス.

JOSM で複数のオブジェクトの結合や引き離し

鹿児島の天文館のアーケードがroof として描かれているのですが,複数のオブジェクトが重なってしまっていました.

Screenshot from 2014-09-21 07:32:28

これは一旦消して書きなおしかなと思っていたのですが,JOSM のメニューを眺めていると「ツール」->「重複するエリアを結合 Shift+J」というものが使えそう.ということで試してみました.

先ずは,結合したい該当のオブジェクトを全て選択します.「ツール」->「重複するエリアを結合 Shift+J」で結合.

Screenshot from 2014-09-21 07:32:51

するとくっつきました.

Screenshot from 2014-09-21 07:33:01

便利ですね.

逆にくっついてしまっているオブジェクトを引き剥がすことも出来ます.
建物が隣の建物にくっついてしまったという時など,

Screenshot from 2014-09-21 10:39:04

くっついているノードを選択して,「ツール」->「ウェイを引き離す G」で

Screenshot from 2014-09-21 10:39:54

切り離せました.相手側のオブジェクトにもウェイが残ってしまうので消すなりしたほうがいいですね.

Screenshot from 2014-09-21 10:40:21


大きな地図を表示

JOSM で中抜きの建物を書く

OSM で入力するときに中抜きのものがたまにあります.これはマルチポリゴンを利用して表現が可能です.

まずは外枠を書きます.

Screenshot from 2014-09-21 06:57:11

その後,内枠を書いて

Screenshot from 2014-09-21 06:59:13

外枠と内枠の両方を選択した状態で,「ツール」->「マルチポリゴンの作成 Ctrl-B」で,

Screenshot from 2014-09-21 07:02:02

このような中抜きの建物に.

Screenshot from 2014-09-21 07:00:20

以下は実際の地図です.


大きな地図を表示

マルチポリゴンを書いたのはまだ3つ目ですが建物だけでなく駐車場の中に建物がある場合にも使いました.


大きな地図を表示
Ja:Relation:multipolygon – OpenStreetMap Wiki

#冬コミに向けてOSMの薄い本出したいなと思ってます.そこでtipsとか書き出してみようかなってエントリです.

JOSM で POI の情報を建物などにコピーして反映する

JOSMでのOpenStreetMapの編集中に既にPOIはあるけど建物が書かれていないので建物を書いて,POIの情報を建物に反映したいなという時タグを一個一個コピペしてたんですが楽な方法がありそうってことで #osmjp を付けて聞いてみたところ以下のような回答が!

 

 

なるほど!
ということでこのPOIの

Screenshot from 2014-09-19 10:05:31

建物を書いて,

Screenshot from 2014-09-19 10:17:58

POI を選択した状態で `Ctrl + c’
建物を選択した状態で `Ctrl + Shift + v’ で行けました!

Screenshot from 2014-09-19 10:18:28

POI は削除して完了.

Screenshot from 2014-09-19 10:18:50

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