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

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|10|11|

2007-11-20

_ [SAD]Date extension module

SAD組み込みの Date関数ファミリーでの Local Timeは日本標準時固定かつ 閏秒が入っていないという実装なので、日本国外や閏秒対応のシステム上での 運用時に混乱のもとになっています。 (中国から、時間が1時間ずれているという苦情があったとか)

で、閏秒とUTC offsetをまともに扱える Date関数の置き換えモジュールを製作

製作と言っても、日付や閏秒の扱いは djbの書いた libtaiに任せて SADとのインターフェースだけの実装ですが...


2008-11-20

_ [SAD][Lisp]複数の引数を伴う再帰関数を定義するY-Combinator

Y = With[{core = #},
  With[{procedure = #},
    core[procedure[procedure][##]&]]&[
      With[{procedure = #},
        core[procedure[procedure][##]&]]&]]&;

生成した再帰関数を包むpure functionで、##を 受けとるようにしただけ

アキュムレータを使った再帰関数の例

リストの平均値を求める

avgY = Y[With[{action = #}, Which[
  Length[{##}] < 3, action[#1, 0, 0],
  Length[#1] > 0,   action[Rest[#1], #2 + 1, #3 + First[#1]],
  True,             #3 / #2]&]&];

リストの標準偏差を求める

sigmaY = Y[With[{action = #}, Which[
  Length[{##}] < 4, action[#1, 0, 0,
    Y[With[{action = #}, Which[
      Length[{##}] < 3, action[#1, 0, 0],
      Length[#1] > 0,   action[Rest[#1], #2 + 1, #3 + First[#1]],
      True,         #3 / #2]&]&][#1]],
  Length[#1] > 0,   action[Rest[#1], #2 + 1, #3 + (First[#1] - #4)^2, #4],
  True,                   Sqrt[#3 / (#2 - 1)]]&]&];

最初に平均値を求める部分に avgY相当の無名関数を使っている

_ [SAD][Lisp]factYの末尾再帰への変形

単純な再帰を Y-Combinatorで書いた基本形

factY = Y[With[{action = #}, Which[
  # < 1,  1,
  True,   # * action[# - 1]]&]&];

アキュムレータを導入して、末尾再帰化

factY = Y[With[{action = #}, Which[
  Length[{##}] < 2, action[#, 1],
  #1 < 1,           #2,
  True,             action[#1 - 1, #2 * #1]]&]&];

最初の呼び出し(アキュムレータの初期化)を再帰の外に出した移す

factY = Y[With[{action = #}, Which[
  #1 < 1,           #2,
  True,             action[#1 - 1, #2 * #1]]&]&][#, 1]&;

2017-11-20

_ [SAD]数学関数実装のクリーンアップ

三角関数・双曲線関数の複素数版実装を独自実装からISO Fortran2008標準の総称関数に入れ替え実施

バックエンドの実装に対する最適化を期待できる

例えば、BSD libmの場合 ccosccoshを用いて実装されているので、coshcosで実装するFortranコードは不要な変数変換により効率が劣化する

対応関係や枝選択に間違いがないかどうか、テストセットを作って検証する必要がある


2020-11-20

_ [Admin][Ryzen]Ryzen5950X運用投入

Core i7 6700K機に変えて、Ryzen5950Xをメイン鯖に投入

併せて、KVMをATEN CS1784AからCS1824に交換し、DVI-D dual link + USB2から HDMI 2.0 + USB 3.0環境へ更新実施

運用停止からCS1784A/DVI-Dケーブルの撤去、CS1824設営・新鯖への交換で3時間程度

ATEN CS1824レビュー

モニタ接続を4k DCI対応のHDMI 2.0にした4-port KVMで、VGA/DVI-D時代のビデオダイナシンク (技術的にはEDIDエミュレート) に対応しPC側からみて常時モニタが実在するように振る舞える。

今まで、DVI-Dで 4K 30Hz or WQHD 60Hz運用で我慢してきたのも、EDIDエミュレートできる4K 60Hz対応で手頃な DP/HDMI KVMが無かったからで…Orz (例えば、DP KVMに外付けEDIDエミュレータをPC側に挟むとかで実現するけど、Port数分のEDIDエミュレータが必要な罠)

で、使い心地ですが…

  • CS1784AではRealforce R2との組み合わせでは、マウスエミュレーションモードをonでマウスが動かない問題が解決している
  • HSM+VでAten default EDIDをon (デフォルト off) するとPort切り替えしてもきちんとした解像度で再接続出来る
    • ディスプレー側の問題のようだが、HDMIで異なるPort間で切り替える際のブラックアウト期間がDVI-D接続より長い模様
  • ケーブルが細くなってスッキリ (DVI-D比)
  • 付属するケーブル類は1本ずつバラなので、結束バンドとコイルチューブを用意しておくのがおすすめ
    • HDMIベースなので、まとめたケーブルをKVM裏側で動かすと簡単にUSB/HDMIコネクタが抜けるのに要注意 (操作出来ないとか映らないとか慌てるハメになる)
      • DPベースの機種では心配いらないけど、ATENのダイナシンク対応DP KVMは現時点ではトリプルディスプレイ仕様のCS1964しか無い罠、しかもコンソール側は HDMI 2.0という変態仕様 (しかも、高くてデカい/トリプルヘッドという意味では安いし高密度実装ですが…)
  • CS1784Aにあったアナログマイク系の切り替え機能が無くなっているが、使ってないので問題無し
  • アナログスピーカー出力を2port分混合して出力する機能があるようなので、運用環境によっては便利かも

な具合でなかなかいい感じ


2021-11-20

_ [SAD]SAD on WSLg

Windows11にアップグレードした環境で、WSLgを試してみた

WSL2 + WSLg + Ubuntu-20.04環境で、3rd partyのXserverなど無しにSADのGUIが普通に立ち上がるのを確認

WSLg用のDisplay Server Instanceを立ち上げる関係上、GUIアプリの初回起動時のみ起動ラグがある模様

WSLgのX実装の場合、X Server SideへのXLFDフォントの追加ってどうやって管理しているのだろうか?


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