トップ «前の日(06-09) 最新 次の日(06-11)» 追記

Orz日記 by Akio Morita

ToDo:

  • 15 SAD Fit[]回りの障害事例の解析
  • 10 smart pointer版PEGクラスの再実装(Left Recursionまわり)
2006|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|06|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|07|08|09|10|11|12|
2013|01|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|06|07|08|10|12|
2016|01|02|03|05|06|08|10|11|
2017|01|02|03|04|05|06|07|09|10|11|12|
2018|01|02|03|04|06|07|08|09|10|11|12|
2019|01|03|04|05|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|

2024-06-09

_ [FreeBSD]ee(1) on ja_JP.UTF-8

日本語(おそらくマルチバイト文字)を含む行末へCtrl-Eでカーソルを飛ばすと、 実際の行末より後ろにカーソルが飛んでいく

カーソルの位置計算がおかしい?

多分、eucJPだとワイド文字~2byte符号だったのが、utf-8だと典型的には3byte符号化している為では…

試しに、utf-8で一文字毎に送っていくと、ワイド文字で2回足踏みする

まあ、元々マルチバイト文字にきちんと対応していない訳なのだが、 eucJPだとそこそこ実用になったので重宝していた(軽いし)

_ [FreeBSD]kterm on ja_JP.UTF-8

LANG=ja_JP.UTF-8なKanjiMode utf8運用時、表示やコピーペーストは問題ないが、XIM入力が文字化けする

X Resource Databaseの状態が錯綜していたので、整理してみた...

  • 標準状態でInput() @ input.cは、XIMのエンコードをja_JP.eucJPで初期化し、入力列にEUC-JPを期待しているが、convEUCtoUTF8によるEUC-JP→UTF-8で化ける (convUTF8へ渡ってくるUCS-4 BMPのコードポイントが既にあってない)
  • eucJPLocaleリソースでXIMのエンコードをja_JP.UTF-8へ変更しても、input.c側はXIMからの入力をEUCとして処理するので、化ける

解決方法に関して、

  1. convEUCtoUTF8をまともに修正する
  2. eucJPLocaleja_JP.UTF-8に設定し、Input() @ input.cでの変換を停止する
  • (1)が使う変換テーブルは、convCStoUTF8で使うものと共通の模様 (convCStoEUCと読み比べればなにか分かるはず)
    • ucode_kanji1の参照位置が、convCStoUTF8の(c1-33)*94+(c2-33)に対し、convEUCtoUTF8は(c1-33)*94+(e2-33)で、e2=c2+0x80だから128-offsetして参照してる Orz
    • 治した
--- convert.c.orig      2016-11-05 06:41:21.000000000 +0900
+++ convert.c   2024-06-13 12:50:40.353827000 +0900
@@ -1106,7 +1106,7 @@
                        if (e2 = *es++) {
                                int c1 = e1 & ~0x80;
                                int c2 = e2 & ~0x80;
-                               int ucode = ucode_kanji1[(c1-33)*94 + (e2-33)];
+                               int ucode = ucode_kanji1[(c1-33)*94 + (c2-33)];
                                int len = utf8_len(ucode);

                                if (ucode == U_error) {
  • (2)で、UTF-8モードが動くことは確認したが、EUC/SJIS/JIS Modeが使えなくなる(正確にはXIM経由が文字化けする)

素直にutf-8モードのxtermに移れ説はあるのだが、仕様しているフォントのグリフセットの都合で一部不具合が出るのでもうしばらくktermで頑張りたい (local filesystem上で、xterm向けのiso10646 fontにグリフが未実装な文字が使われてる)

_ [雑記]Let'snote FV5の意外な弱点

実は、LV8より単純にバッテリー容量が小さい

出っ張りの無いフラットデザインなため、単純に体積が減っているためと思われる (光学ドライブを下ろして空いたスペースにバッテリを配置し、キーボード下に配したメインボードを後方排気クーラーと直結するレイアウトなので、他に合理的な配置が無い&前方配置なのでバッテリー部を厚くする余地が無い)

バッテリーパック(L)の仕様は以下の通り

バッテリ定格電圧定格容量重量
LV8用(L)10.80V6300mAh(68.0Ah)355g
FV5用(L)11.55V4786mAh(55.3Wh)300g

バッテリ重量からみるとかなり健闘しているし、フットプリントが小さいSR/QR系よりマシなのだが…

バッテリパック(L)装着時のカタログ上の駆動時間は以下の通り

モデルJEITA2.0JEITA3.0(動画)JEITA3.0(アイドル)
LV818.5h n/a n/a
FV520.0h 9.0h18.1h

で、FreeBSD等で稼働状態でacpiconf -i0の推定稼働時間を測定してみると、LV8 5~6時間に対してFV5 4~5時間になる

acpiconfが報告するアイドリング時の消費電力は、LV8 8~9Wに対してFV5 9~14Wなので、 バッテリ容量の減少も相まって実稼働時間はかなり不利な模様

もちろん、稼働コア数(4C/8T vs 6P+8E+2LE/22T)を考慮すれば、大変効率的になっているのだが…

カタログ稼働時間は、電力消費をギリギリまで絞り込んだ値なんだけど、JEITA3.0もかなり現実から遠い気がする

現状、acpi_videoでバックライト制御が出来てない分は分かるが、CPUパワーとかどうやってそこまで絞ってるんだか Orz


カテゴリー: Admin | Emacs | EPICS | Fortran | FreeBSD | GCC | hgsubversion | IPv6 | KEKB | LHC | Lisp | LLVM | MADX | Ryzen | SAD | samba | tDiary | unix | WWW | YaSAI | お仕事 | イベント | 出張 | 宴会 | 数学 | 艦これ | 買いもの | 追記 | 雑記