6~7月の近況

例によって生存報告がてら。

旧版Fireタブレットを入手した

だいぶ前の話になるが3月に(今となっては旧版となる)Fireタブレットを入手した。自分はあまりamazonを使っていないので、Androidタブレットとしては出来ることは限られている。端末エミュレータは問題無く動作。amazonサービスをよく使う人なら良いタブレットなんだろうね。

GNU nano v2.8.5がリリースされた

GNU nano 2.8.5がリリースされている。allow negative lineって何のことか一瞬分からなかったけど、要は最終行からの指定が出来る様になったということね。最終行からの検索が必要になったときに威力を発揮するかもしれない。

v2.8.5-36あたりからは遂に全角の折り返し対応がされたので、自分で書いていたパッチが要らなくなった。自分の感覚だと>と<の表現が逆が好みなので、そこのパッチは充てているが。

EveryPhone ACを購入した

6インチのスマホが欲しかったので、安かったこれを購入。普段はUQモバイルを使っているのだが。

実際に使ってみて思うのは画面が大きいのはやはり良いということだ。勿論、携帯性は犠牲になるけど、それ以上に視認性の向上は大きい。

自分はターミナルで作業することも多いので、ある程度の大きさが欲しいのだ。

少し困るのは通常の端末と、BackキーとRecentAppキーが逆なことだ。RecentAppキーにBackキーを割り当てて、それぞれのLongPressにRecentAppキーを改めて割り当てる。所詮アプリの切り替えはそこまで頻繁にやるものでもないし、慣れるまでの暫定ということで。

サイトをHTTPS対応にした

いい加減に対応させないとと思っていたので、意を決して実行。まだcronとかは設定していないので、自動化はこれからすることにする。

5月の近況

ちょくちょくとプログラムやパッチを書いている。公開出来るレベルにないけど。

私家版GNU nanoを2.8.4に対応&不具合修正

私家版ではESCキーの押下状態を左上にtitlebarで表示している。2.8.2のヘルプの改善でヘルプの表示時にESCの表示で落ちてしまうことが分かったので、修正をかけた。変数inhelpがヘルプ表示中を示しているので、ヘルプ中だけ別処理をかます。なんかスマートじゃないなぁ。

私家版Android SKKを改造

上フリック→下フリック、またはその逆でシフトキーを押したときのフリックと同じ動作をさせるようにした。ローマ字配列も多少弄る。もうちょっとマイナーな変換テーブルを増やしても良さそう。

全角折り返し対応版の処理を改良する

GNU nanoの全角折り返し対応処理はactual_xstrnlenptのセットで実装していたのだけど、actual_xの中でstrnlenptの返却値にほぼ相当する変数widthがあるので、それが使えれば良いことに気づく。

セットになっている部分を改良版に置き換えたところ、少しばかり速度が改善した。

Android タブレットのコンソールでGNU nanoを使っていて感じるのは、(当たり前なのだが)どうしてもPCに比べたら非力だということだ。非力なマシンでも快適に動くように出来る高速化はしておこう。

GNU nano 2.8.1をビルドした

GNU nano 2.8.1がリリースされているが2.8.0から目立った変更は無い。全角文字が行をまたぐ時の表示が改善されたぐらいか。なので変更点が大きかった2.7.5からの動きを簡単に。

GNU nanoが2.7.5-37以降Gnulibの各関数を使うようになっている。これによって、自分が独自にビルドしているAndroid版で上手く動かなくなったので色々と手を加えていく。

そもそもの問題はAndroid NDKがきちんとロケール回りを実装していないことだ。Android NDKではMB_CUR_MAXMB_LEN_MAXがそれぞれ1に定義されている。当然UTF-8では4以上となるべきものだ。最初、ビルドを通し実機で実行したらSegFaultが出て嵌って、gdbで確認してようやく原因判明。自前でビルドしたncursesにもこれらを再定義しているのだが、ncursesとnano、そしてGnulibまでパッチを充てることになるとは思ってもいなかった。

もう一つ解決出来ていない問題はGnulibのregcompがAndroid NDKでは[[:<:]][[:>:]]がクラス未定義になってしまっている。\<\>は認識をしてくれているので、utils.cのfixboundsを修正することで回避。
Gnulibになったことでの利点もある。それはglobがちゃんと実装されて出来ていることだ。Android NDKではglobが無かった(のとmuslからの抜き出しが面倒だった)ので2.2.6相当の読み込みにしていたが、ちゃんとワイルドカードを使ってファイルを読み込むことが出来るようになった。

ひとまず動くようにはなっているものの、muslの実装と被るところもあるのでmuslの実装を外す必要も出てきている。もうちょっと進めば落ち着くだろうから、その時に手を入れていくつもり。

そしてGNU nano 2.8.0では待望のsoftwrap時のカーソル移動処理の改善。vimでいうgj/gkが標準の動きになった。所謂メモ帳とかと同じになったので違和感が無くなったのは大きい。日本語の折り返し処理が例によってうまいこと働いてくれないので(実装されていないから当然ではある)、手を加えてそれっぽく動くようにする。

2017年になりました。

よろしくお願いします。生存報告がてら近況を。

GNU nano 2.7.4がリリースされたので、私家版にも反映

GNU nano 2.7.4がリリースされている。2.7.1では左側に行番号が(対応が不完全ながら)表示できるようになったので、私家版で行番号表示時でも日本語がちゃんと折り返されるように修正をかけていた。(なお、不完全な部分が解消されたのは2.7.2の中盤である)

2.7.2-21でdisplay_stringの挙動が変更になったので、私家版でちゃんと折り返しが出来なくなっていたのを修正。display_stringの挙動変更の意図をどう取るかで、修正をdisplay_string内でするのか、それとも呼び出し元でするのか悩ましいところだけど、ひとまず前者で対応することにする。影響を考えると後者の方が良いような気もしているが。

現在の2.7.4ではそこまで自分に影響のある状況ではなかったが、2.7.4-7あたりの変更が私家版のパッチと衝突を起こしたので、私家版のパッチを修正している。

なお、自分用のnanoにはタブサイズを2→4→8(→nanorcの値)→2に動的に変更できるように機能を追加している。自分はタブサイズを4にしているのだが、nanoの標準は8であり、ソースコードも8を前提に書かれている。よくオプションに-T 8を指定し忘れて開き直す、ということが多かった。多いと意外とストレスなものなのだけど、これで少しストレスが減った。

Aspire Switch 10eを回復メニューから初期化した。

意を決して回復メニューから初期化を実施。最初はかなり不安だったのだけど、思いの外すんなり行って拍子抜け。Acerのアプリとかが消えたけど、あまり影響はないと思える。

こいつのメリットはmicro USBで充電出来て、軽いノートPCとして使えることだ。キー配列も素直で困らない。尤も、こいつを所謂「Windowsタブレット」として使うことは殆ど無い。タブレットとしての需要は自分が使っているYOGA Tablet 3の8インチAndroid版でほぼ完全に満たせるからだ。

HTML Generating Time : 0.049 s