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

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|

2009-06-14

_ [KEKB]20 1/nb/sec越え

今までの苦労が嘘のように20の壁を越えて21へ接近中...

と言う訳で、明日は宴会だ〜〜


2010-06-14

_ [SAD]Slot演算子に対する構文解析時評価はやはり邪悪だ

SADでは、構文解析時に引数が確定している関数言語的な意味で 純粋な組み込み関数に関しては、構文解析時に評価してしまうという という仕様である。たとえば、

In[1]:= Hold[Plus[1, 1]]
Out[1]:= Hold[2]

のように評価される。

このルールの元では、Slot演算子に対しても中身は確定していないが 1個の Atomであることは確定しているものとして扱うので、 組み込み関数Lengthの引数となるリストの要素として現れたときに 実引数と結合可能かどうかを問わずに評価されてしまう。

しかし、Slot演算子では、 純粋な関数を字句的に展開した式と展開前の式の評価値が異なる

 f = {#1, #2, #3, #4}&;
 g = Length[#]&;

 fg0 = g[f[##]]&;
 fg1 = Length[{#1, #2, #3, #4}]&;

 Print["fg0 -> ", fg0[1,2]];
???General::slot:  Undefined Slot #3 in ({#,#2,#3,#4}&)[1,2]
???General::abort:  Aborted:
Print["fg0 -> ", fg0[1,2]]
                         ^
 ???-FFS-Error-?Undefined command or element: PRINT["fg0
 Print["fg1 -> ", fg1[1,2]];
fg1 -> 4

のような例題が存在できる。 この例では、実行時に純関数(Function)を実引数と結合する際に 仮引数と数が釣り合わない例外が発生しなくなっている。

上記の例題では、例外が発生しているので、評価結果の唯一性が保証 されなくともよいという考え方があるが、次のUnevaluatedを用いた例題では Nullを頭部とする未評価のS式を送り込むという正常系の動作である。

 f = {#1}&;
 g = Length[#]&;

 fg0 = g[f[##]]&;
 fg1 = Length[{#1}]&;

 Print["fg0 -> ", fg0[Unevaluated$[Unevaluated$[Null[a, b, c]]]]];
fg0 -> 3
 Print["fg1 -> ", fg1[Unevaluated$[Unevaluated$[Null[a, b, c]]]]];
fg1 -> 1

以上の考察から、Slot演算子が1個の確定したAtomであるとして評価を最適化 するのは結構邪悪な実装だと思われる。


2024-06-14

_ [FreeBSD]libreoffice + glib-2.80.3,2

数日前にglib-2.80.3へのアップデートでlibreoffice起動問題が修正されたが、終了時にトラブル件だが、 libreoffice側の起動不良が繰り替えされた環境で生じる問題かも知れない…

_ [FreeBSD]FreeBSD on Let'snote FV5

FV5セットアップの過程で判明した、現時点のOut of BoxなFreeBSD 14.1-STABLEでサポート不足なもの纏め

  • 無線LAN - firmware kernel moduleのみ不足・追加すれば11a/b/gで動作する
  • Bluetooth - iwmbtfw(8)・ubt driverへパッチ必要、ubt0認識後は普通に動いた(Bluetooth Mouseは使えた)
  • X.org - フルサポートはgraphics/drm-kmodの対応待ち、scfbドライバで最低限の動作はする
  • TouchPad - ig4iccドライバにパッチ(PCI Device ID追加)必要、ig4icc0認識後はHID Touch Padとして動く、X.orgでの使い心地はlibinput/synapticsドライバの設定次第
  • 内蔵マイク - Intel Smart Sound TechnologyによるArrayマイクなので、DSP側にFirmwareをダウンロードしないと使えない
  • ACPIスリープしない - ACPI S3ステートに代わりS0ixステートが実装されているため、S0ix(suspend-to-idle)もしくはS4(ハイバネーション)の実装が必要
  • acpi_video(4)が内蔵液晶を認識しない - 液晶輝度制御が出来ない(バッテリ駆動時の電力制御にマイナス)
  • Intel Thread Director - サポートが未実装、運用的にはcpuset(1)を駆使して使い分け?
  • Thunderbolt - NHI driver未実装、USB側はxhciドライバで動くはず(未テスト)

各種パッチを当てた状態での実用上の問題は、以下の通り

  • 内蔵マイク使えない - オンライン会議に別途USBマイク等が必要(小型のマイク内蔵USBカメラの方が入手性・携帯性に優れる)
  • スリープ出来ない - NVMe SSD構成なのでshutdownしての運搬でも実用には耐える
  • バッテリ稼働時間が短い - カタログスペックは、液晶輝度制御・コネクティングスタンバイ(S0ixステート)・CPU電力制御を駆使しての値なので、FreeBSDでの実稼働時間はカタログ稼働時間で劣るCF-LV8Wよりも短い
    • FreeBSD on Let'snoteとしては、致命的に短い(アイドルで5時間が実用限界なので、外部電源無しでは夕方まで持たない)
    • Type-C端子が2系統あるので、Anker等の67W給電可能なモバイルバッテリを外槽として運用するのが当面の現実解か?
      • 20Ah級モバイルバッテリで、バッテリ(L)パック1個分相当ぐらい?

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