Python3 convert

Python3 に移行して随分たったが今頃気がつく。
コレ (cp932 to utf-8) ができない!
g_convert | PaePoi

GLib.convert() 関数の第一引数は gchar* なので cp932 の文字列を渡す必要がある。
Python3 では当然 bytes(b’…’) である。
そのまま指定するとバイト配列なくて文字列にしなさいというエラーになる。

#!/usr/bin/env python3

"""
    ConvertError: Must be string, not bytes
"""

import sys
from gi.repository import GLib

try:
    result, contents = GLib.file_get_contents(sys.argv[1])
    if result:
        try:
            text, bytes_read, bytes_written = GLib.convert(contents, len(contents), "UTF-8", "CP932")
            print(text)
        except Exception as e:
            print("ConvertError: {0}".format(e))
except Exception as e:
    print("FileError: {0}".format(e))

python3_g_convert

Python2 だと bytes と str って実は同じものだから問題ないのだけど。
Python3 では文字列に変換っっって何だそれ、cp932 だぞおい。

Python3 の文字列が UCS-4 になった弊害がこんなところに…
いや pygobject が今後対応してくれるかもしれないけど。

あれこれ試してみたけど現状 GLib や Gio では対処できないようだ。
しかたがないので Python 組み込みの decode() を使ってみる。

#!/usr/bin/env python3

import sys
from gi.repository import GLib

"""
    f = open(sys.argv[1], encoding="cp932")
    print(f.read())
    f.close()
"""

try:
    result, contents = GLib.file_get_contents(sys.argv[1])
    if result:
        try:
            str932 = contents.decode("cp932")
            print(str932)
        except Exception as e:
            print("ConvertError: {0}".format(e))
except Exception as e:
    print("FileError: {0}".format(e))

g_convert を使うより圧倒的に簡単なコードになってしまった。
というか組み込みの open() なら更に簡単だったり。

Vala からも参考にできるよう今までやってきたつもりだけど、もう無理。
しかし Vala の string が gchar* のままなのは本当に正解だよね。

GtkCellRendererAccel

GtkCellRendererAccel がいったい何なのか解らなかった。
海外をいくら検索してもサンプルコードが無いどころか devhelp 丸写しのみ。
そんなこんなで詰まって覚書ページ作成が止まっていたり…

ココにすらないし、避けている?
12. CellRenderers ? Python GTK+ 3 Tutorial 3.4 documentation

ウイジェット名からコラムにフォーカスを当てるキーボードアクセラレータかなと。
コラムは列なので行を選択する GtkTreeView ではまったくの無意味だし。
いったいこのレンダラの正体は何かと考えてはや半年。

何故か今日テキトーに試していたらやっと理解。
覚書ページのほうに書いたのでサンプルコードはソチラで。
レンダラ – L’Isola di Niente

つまり

gtkcellrendereraccel

この部分ってソレ専用のレンダラだった。
キーボードアクセラレータの設定及び確認以外の使い道が何もないwww

とはいえコモンダイアログなんかも皆同じものを使っているわけで。
操作性に統一感を出そうとする GNOME なら当然の選択だったのかも。
と思ったけどよく見ると GTK+ 2.1 の頃にはすでにあったのか。
何故サンプルコードがどこにも無いのだ?

やっとココを突破できたので少しは追記が進みそうです。
バイク乗りにしかわかんないネタになってきたけど、まどかネタ飽きた。

bash custom prompt $PS1

今頃知ったけど、bash のプロンプト文字列は変更できるようだ。
Fedora と Ubuntu で表示が違うのは単に変数の内容が違うだけだった。

How to: Change / Setup bash custom prompt (PS1)

早速 $PS1 の値を確認してみよう。

ubuntu_bash

$ echo $PS1

# Fedora Output
"[\u@\h \W]\$ "
# Ubuntu Output
"\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ "

Ubuntu はナンジャコリャだけど、\[\] で囲んだ内容は非表示属性のようだが。
echo $debian_chroot
は何も定義されていないみたいだし、Ubuntu では su は使えないし。
\u@\h:\w\$ だけでいいような?

ということで。
PS1 変数に指定子や記号を代入すればその値で表示されるようだ。
あの長ったらしくて困る Ubuntu のプロンプトを変更したかったので嬉しい。

\w を \W に変更するだけでいいようだが私的理由で Fedora と同じにする。
端末内で行ってもそのプロセス以外では反映されないので ~/.bashrc に指定。

bashrc

これで深い階層で端末を利用してもイラッとしなくなる。
現在位置の確認は pwd コマンドで充分、Fedora でそうしている。
もっと短くしたいなら \h のホスト名を消すという技もあるね。

本当は Windows の cmd.exe でこうしたいんだけど…

A better PROMPT for CMD.EXE or Cool Prompt Environment Variables and a nice transparent multi-prompt – Scott Hanselman

ロクなことできないなぁやっぱり。
そもそもホームをチルダ表示にできないから無意味だが。
PowerShell はチルダで cd 異動が可能なのに何故チルダにしなかったのか?

コマンドラインを強化せよ! – Windows 7のコマンドプロンプトをカスタマイズする (5) エイリアス機能でコマンドプロンプトを使いやすくする | マイナビニュース

コマンドはコレで似せることができるけど面倒臭いにもほどがある。
やっぱり Windows は糞だよ、Linux 慣れしすぎともいうが。

izumo

三泊四日山陰ツーリング最終日。
米子から R9 をひたすら走り兵庫の山道と京都市街を太陽が出ている間に抜ける。
そのまま R1 に繋るので滋賀に入る、後は岐阜まわりで愛知の自宅へ帰宅。

という予定だったけど、それでは角島以外はどこにも寄ることもなく終わり。
豪雨と土砂崩れのせいとはいえこれでは何をしに来たのかワカンネェよ。

せめて出雲大社にだけでも、昨日ほど雨は降らないようだし。
ということで、時間的に無謀かもしれないけど一旦出雲まで戻ることに。

AM7:00 小雨がまだ降る中を出発。
米子から R431 に入り境水道大橋に向う。

sakaisuidouoohasi

途中に水木しげるロードなんて看板がいっぱいあった、どうでもよすぎ。
どう考えても橋をアピールしたほうがいいと思うんだけど。

松江あたりから晴れ間が覗くようになる。
道端にバイクを止め合羽を脱ぎメッシュジャケットと夏用グローブへチェンジ。
スクーターのくせにと言わない、バイク用はやっぱり快適なんだよ。
ムレムレだった体が癒されていく、やっとツーリングらしくなってきた。

R431 は街中だったりテクニカルだったりハイスピードだったりで楽しい。
そして信号も少ない、気持ち良く出雲大社へと向う。
しかし地元民はブッ飛ばすな、名古屋走りというネタがあるがどこも変わらんわい。

距離が 60km 以上もあったのは想定外だった、何故か 20km 程度と思いこんでいた。
島根県は思ったよりデカい、追いたら九時になってしまったよ。

大社前で駐車場の渋滞にしばし並んでいた。
よく見ると臨時駐車場の看板が、何故誰もコッチに止めないの?
ということでソチラに移動、小回りのきく二輪はこういう時にマジ便利。

気がつくと青空が広がっていた、あぁ出雲の神様が私を迎えてくれたようだ。

izumotaisya

でも平成の大遷宮が行われていて御本殿は見ることはできなかった。
ちゃんと調べてから来いよ俺、本当にどこまでもついていない。
何年後になるか解らないけど絶対にリベンジすると心に誓う。

とにかく本日中には帰宅せねば、既に明い間に京都すら厳しい時間だが。
おいしくないと噂の出雲ソバを食いたかったな。

9 号に入り山陰道無料区間をフル活用しながら再び鳥取へ向う。
一般道でもほとんど信号がなく鳥取に入っても平均 80km/h くらいで流れている。
高速道路が走れる 150cc だからこんな流れに乗って走るのは当然余裕。
0→100km/h は 14 秒台のマシンだが全開にすることはほとんど無い。

日本海沿いの景色もよく流れも速いので乗りっぱなしでも全然飽きない。
腰も尻も全然痛くならない、ちなみに CBR の時は腕が痛くなっていた。
メッシュジャケットからの潮風が気持ちいい、二輪で来てよかった。

コナンも白兎も砂丘も時間がないのでスルー、兵庫へ。
兵庫の前後あたりでガソリンを入れておこう、以後スタンドてか町が当分ない。

ここから当然昇りの山道だが下道なら当然 150cc でも問題ない。
三桁でブッ飛ばしたくてしかたがない気持ちだけは若いオッサンでなければ充分だ。

登坂車線で軽トラックに先を譲るくらいの余裕をもって安全運転でいく。
てかまだ半分すら到達できていないのに無駄にガンバって疲れたくないんだよと。

大型バイクならまったくガンバらずに抜けるから楽なんだろうなと妄想してみる。
でもそのパワーゆえに前が詰まって抜けないとストレスが凄そう、結果危険運転に。
大型バイクにムカつく運転をする奴が多すぎなのはそういうことか、変に納得。
私はやはり今くらいのパワーが丁度イイわ。

八月なのに山の中ってメッシュジャケットでは寒過ぎワロタ。
晴ているけど合羽を羽織る、結局は合羽のまんまか。

福知山でガソリンを、もう何回目の給油だか忘れたわ。
マジでガソリンタンクを大きくするアフターパーツみたいなのが欲しい。

京都に入ってもモチロン下道、って信号だらけで驚いた。
それが普通なんだがココまでの道程で完全に洗脳されている。
信号があるというか車が多いだけでどれほど平均速度が落るか思い知る。
国道一号線に辿り着くまで三時間も掛かった、もう夜八時だよ。

道をよく知っている岐阜周りルートの予定を近道の三重周りに変更。
R1, R8, R421, R1, R155 というルートが最短のようだ、コレにする。

失敗した、R421 って街灯のほとんど無い峠道ジャン!
素直に名神高速に乗ればよかったと後悔するももう遅い。
最後の最後までついていなかった。

夜中に見知らぬ上に暗く道幅の細い峠を一人バイクで走るあの心細さはなんだろう。
対向車が見えると亡霊が運転していてコチラに突っ込んでくるかもと身構える。
途中の 4km 以上あるトンネルなんて異次元に吸い込まれてしまうのを覚悟する。

当然そんなわけもなく、無事に R1 に再合流。
R155 からは何度も通っている庭みたいなもの、PM11:30 無事に帰宅。
四日間で合計約 1500km 走破。

こんな小さなスクーターで強行したわりに体が思っていたより疲れていない。
と思ったけどその後一週間仕事をした後の日曜日は死んだように寝ていた。
歳をとると疲れまで遅れてやってくるのさ。

ついでに、以降何故か燃費がリッター 36 程度に延びた。
当たりがついたのか軽く感じる、アクセルのコツを知らぬ間に掴んだのかもだが。

150cc スクーターで高速道路や長距離ツーリングはどうか。
を実際にやってみた、おしまい。

流行で 250cc のチビ忍や CBR を買ってみたけどなんかコレジャナイと感じてしかたがない人は台湾スクーターを探してみると気に入るものが見付かるかも。
マスツーに参加もしてみたけどソロのほうが楽しいと感じた人なら特に。
私がそうだっただけです。

150cc on a rainy day

愛知から下関(旧豊浦郡)の実家にはいつも新幹線なのに今回はバイクな理由。
そう角島大橋、地元すぎて一度もいったことがないので用事のついででツーリング。

IMG_0016

したら土砂降りだwww
実はこのレポ 2013.08.24 です、つまり島根県今年二度目の集中豪雨の日。
雨の角島大橋(と私の Fighter)画像も粋なもんさ。

あー晴れていたらスッゲェ気持ちイイんだろうなヽ(;▽;)ノ
とか叫びながら橋を往復したのは言うまでもない。

漁師な実父の情報によると中央のボッコリ部以外を船で抜けようとすると座礁するらしい。
漁船の事情でこんな型になっただけなのに超有名観光地化って世の中は本当に解らない。

で、最大の目的を果たしたところで。

多分なんとかなるさ、ということで以後の山陰ツーリングを決行。
ズブ濡れツーリングのレビューができて得したんだ、と自己催眠を掛ける。

R191 をガンガン進むが萩手前から通行止めで R262 へ迂回。
いきなり観光予定が狂う、あぁ怪しくなってきた。

津和野付近の川が凄い水嵩に、鯉は大丈夫?
でココもスルーすることに、雨は当然小降りになる気配すらない。

なんかもう、観光どころか本日ゴールの米子まで辿り着くことが目的になりそう。
せめて出雲大社だけにはどうしても寄りたいのだが。

道の駅シルクウェイにちはらで飯と島根災害情報の確認。
R9 も通行止めオンパレード臭い、これはマジで不安。
ビショビショのままな合羽と手袋を再び装着し東へ急ぐ。

江津市(ごうつし)でとうとう完全に止められる。
150cc の機動力で脇道を進むもその細い道すらも通行止めロープが。

完全に東へ進む手段を失った。
雨が一時的とはいえ止んだのはせめてもの救い。

土砂崩れ部手前の大渋滞でヘルメットを脱いでしばし途方に暮れていた。
後ろの車の人が降りて話しかけてくれしばし雑談、そのとき神の一言。

「歩道は通れるみたいだからソイツなら押してイケるんじゃない?」

細かいことは忘れたけどそんな感じで。
エンジン切って押せば歩行者だ、その手があったか、押したよ、上り坂だったけど。

ユンボで崩れた木と土砂をトラックに積んでいる現場もしっかり見えたよ。
抜けれたよ、ありがとうバイクはスカブ乗りだという人。

抜けた後の道もあちこちで土砂崩れしていた。
けど軽量で低重心の 150cc スクーターであるおかげでコケずに脱出できた。
一部区間は押して抜けたので足元が泥だらけになったけどさ。
CBR だったら絶対にコケていた、あの手は寝かせやすいように重心が高いもん。

まさかの 150cc スクーターで来たからなんとかなったという現実。
はたして私は運がいいのか悪いのか。

ところで山陰の道は自動車専用道路だらけ、道の駅すら自動車専用道路上に。
150cc が最適とは言わないけどピンクナンバー車だと泣くはめになるよと。

その後も通行止めの遠回りを何度も強要されるがなんとか前に進めた。
でももはや出雲大社に寄る時間なんてまったくない。

マジで今日は角島にしか行っていないまま終わるのか、何しに来たやら。

小降りの中、予定の一時間遅れでなんとか予約していたホテルに到着。
備え付けのドライヤーで靴等を乾かす間の情無さといったらもう…
明日は愛知の自宅まで、天気予報は明日も雨。

なんとかなるよ、絶対大丈夫だよ。

********************

さて、土砂降りで一番困ったのはお金。
札が湿気でフニャフニャに、合羽の中でもシート下でも無意味だった。

札はジップロックに入れて五百円硬貨を大量に手持ちするのが吉かと。
旅先のレシートを取っておきたい場合も、私は途中で全部捨てるはめに。
問題は高速道路の通行券とかだな、こんなマシンで ETC な人は少ないだろうし。

あとバックに手持ちだったコレを無理矢理利用している。
ベルトをシートにユルく這わせシートを閉めた後ピンと張れば固定できる。
ピンと張らないとブレーキ毎にケツに激突します。

レインカバーは同梱物にあるけど下から水が結構染み込んできます。
コイツで長時間雨中を走るならビニール袋で中身はガードしておこう。

肝心の人間は十時間以上雨の中をムレムレ合羽で走ったのに平気なものです。
ホテルでシャワーを浴びた後はアラいつもどおり。
ただ明日も合羽を着て走るのかと考えると滅入ります。

結論、ズブ濡れツーリングは余程の理由が無いかぎりヤメておきましょう。
コレはコレで楽しかったけどね。