ujimushiの日記: JuliaCon 2023スタート 2
最近推しのプログラミング言語Juliaのイベント「JuliaCon 2023」がマサチューセッツ工科大学で現地の7月25日~29日に開催されるらしい。
ライブストリーミング配信があるかと期待していたけれど,よく調べてみると今日(7/25)実施の分は日本時間の7/27 0:15からの公開。
少し肩透かしという感じだが,今日はのんびりとスケジュール見ながらどれを見るかを迷うのを楽しんで,明日の夜から夜更かしという感じ。
ujimushiさんのトモダチの日記、みんなの日記も見てね。 アナウンス:スラドとOSDNは受け入れ先を募集中です。
最近推しのプログラミング言語Juliaのイベント「JuliaCon 2023」がマサチューセッツ工科大学で現地の7月25日~29日に開催されるらしい。
ライブストリーミング配信があるかと期待していたけれど,よく調べてみると今日(7/25)実施の分は日本時間の7/27 0:15からの公開。
少し肩透かしという感じだが,今日はのんびりとスケジュール見ながらどれを見るかを迷うのを楽しんで,明日の夜から夜更かしという感じ。
仕事関係で数学的な理論式とそのパラメータの関係の可視化を素早く行える方法を探していて,Julia言語のBlink.jl+Interact.jlが良さそうと感じていた。
お手軽にインタラクティブなグラフを表示するデモができて,パラメータを指定する部品が一番揃っている感じだった。
ただ,最初の起動時間が長く,その点をどうするかが課題だった。
最近Juliaのバージョン1.9が出て,その特徴を説明したblogの内容からPrecompileTools.jlモジュールでその対策ができそうだった。
詳細はujimushiのgistに書いたが,モジュール内にPrecompileToolsを取り込んで,速くしたい処理を「@compile_workload」で囲むとprecompile時に囲んだところの処理のネイティブキャッシュを作成してくれる。
...
using PrecompileTools
@compile_workload begin
処理を速くしたい関数の使用例
...
end
gistで紹介した例だと約12秒→1秒なので,かなり改善した。
ただしこの例でprecompile時に画面が表示されてしまうのは変なのだが…
また,既存のプロジェクトの起動用ラッパーで高速化も可能。
次のような感じのモジュールを作って StartModule.start()とかすればよい。
module StartModule
using MyModule
using PrecompileTools
@compile_workload begin
MyModule.速くしたい関数(パラメータ)
...
end
function start()
MyModule.main()
end
end # StartModule
20年もの間使い続けてきたKinesis classic Contoured Keyboardのキー入力がおかしくなってきたので,Kinesis Advantage 2 を購入することにしました。
Emacsを使わずキー入力だけならまだまだ使えると思うのですが,PrintScreenキーが化けるとかCtrl+何かを入力した直後数字を入力すると音量変更になるとか,コントロールキー周りでかなりノイジーで不可解な動きとなっていて,かなりストレスが溜まってきていました。
会社で使っている(2でない)Advantageとどちらをどちらにするかはまだ決めていませんが,いずれにせよclassicは引退にする予定です。
何はともあれ20年,妻よりも長い付き合いなので,しばらく部屋のどこかに飾っておくかもしれません。
ただ,購入するキーボードも後20年使うのかと考えるとぞっとする気がしないでもありません。70歳オーバー…
Julia言語のバージョンは1.6.4がLTSとなり,その後修正があって1.6.5が現状LTS版になった。
1.7系では,3次元以上の行列を簡単に記述するために記述仕様が変更(追加?)になっていて,この文法を使うとかなり簡単に記述できる代わりに1.6系とは互換性の問題が出てきそう。
最近UIで使おうと思っていたQMLが1.7にはすぐには対応しなさそうなので,メインでは1.6.5を引き続き使っていく方向。最新バージョンは現時点では1.7.1
手持ちのスマートフォン・FireタブレットにインストールしたAndroidアプリのUserLAnd上のubuntuで,Julia言語をまともに動かせることを知った。Emacsも簡単にインストールできるのでほぼPCと同等の環境が構築できそう。
Emacs上のJulia言語編集支援モジュールeglot-jlの最新版がJulia言語のSymbolServer,LanguageServer,Emacsのeglot等各モジュールのバージョンアップもあり,ここ1ヵ月まともに動かない状態となる。どのモジュールもかなり大きな変更があった模様だが,何がおかしくてこうなったかも不明だし,何故再び動くようになったかもよく分からない。
仕事ではJuliaを触る暇がなかったため大きな影響はないが,本来の自分の仕事であるデータ分析まで手が回っていないということでもあるのであまり喜ばしいことではない。
sdicが実はEmacs 27.1ではうまく動いていなかったことに気付く。会社の26.3では動いていたということは,家ではsdicをまともに使っていなかったことが判明。
状況としてはマクロ(関数?)のbackquoteの扱いがobsoleteでまだ動いていたのが廃止になったらしい。
5chとかのスレとかで見ると,対策は「sdic-decide-query-type」のマクロ定義の中を「(`」→「(\`」,「(,」→「(\,」で置換すればとりあえずはOKらしい。
MSYS2用HEAD版EmacsビルドスクリプトからWindowsのHEAD版Emacsのバイナリがダウンロードできる。
ネイティブコンパイルができるので会社支給のWindowsノートPCで試してみると,stable版Emacsではもたもたして使いものにならなかったtc-ac-completeも,faceのレベルを落とせば何とか耐えられるスピードで動いていて(個人の感想です),次のstable版のEmacsリリースが楽しみな今日この頃。
Emacsの漢直入力モジュールtc.elのプルリク処理,プルリクなど。バージョン19以下のサポート落としと28以上でエラーが出ないようにするプルリクの承認で,手持ちの環境(Windowsとubuntuの複数バージョン)で動作確認して問題なさそうなのでさっさとマージしてしまう。こちらからプルリクした内容は,元々動いていたCIが動かなくなっていたので,ネット情報の見よう見まねでgithub-actionで動くようにしてみたもの。バッジも更新してプロジェクトの見晴えが戻った。
Julia言語の簡単なスクリプトを使って大阪の状況を少し説明してみます。
大阪府のサイトによると1月25日現在,大阪府の直近1週間の10万人あたりの新規陽性者数は513.84人です。
ここで感染者の割合kを全体との比で示すと,
julia> k = 513.84 / 100000
0.0051384
julia> k * 100
0.5138400000000001
となり,この1週間の新型コロナウイルス感染者数は全体のおよそ0.5%にもなっていることが分かります。
ここで,N人いた時に「全員が新型コロナウイルスに感染していない割合」は(1-k)のN乗で表されます。
そこで,次のような人数に対して一人も新型コロナウイルス感染していない確率を計算してみます。
julia> n = [3, 10, 50, 100, 150, 300, 600]
7-element Vector{Int64}:
3
10
50
100
150
300
600
Julia言語は漢字も変数にできるのでループ変数を「人数」としてみました。
○人のグループがいた時に,「全員が新型コロナウイルスに感染していない」確率を求めたのが次の結果です。
julia> for 人数 in n
println("$(人数)人 : $(100*(1-k)^人数) [%]")
end
3人 : 98.46638737937107 [%]
10人 : 94.9788007056614 [%]
50人 : 77.29179748402757 [%]
100人 : 59.740219583119305 [%]
150人 : 46.17428953669795 [%]
300人 : 21.320650142188136 [%]
600人 : 4.545701224855869 [%]
上の結果を見ると,大阪の学校でこの1週間臨時休校がどの程度発生しているかが想像できるかと思います。
全校生徒・社員が150人で全員が感染していない確率が50%を切っています。
1学年100人の中学校 or 1学年50人の小学校で全員感染していないのは全体の1/5程度しかないことが推測でき,1学年100人の小学校は5%を切ります。
今の大阪の現状だと学校で1人ぐらいは感染者がいても不思議ではない,むしろ当然の状況だということがよく分かる数字です。
昨年の半ば頃に,ITエンジニア向けQ&Aサイト「teratail」を見つけ,
他の人に説明する練習として,また少しばかりのマウンティング気分を味わいつつ,
答えられる質問があれば空いた時間に答えていた。
で,2022/1/12の朝にかなり長めのシステムメンテナンスがあり,昼過ぎからアクセスできるようになったのだが…
「なんじゃこりゃ」
ぱっと見ただけでも
等々色々な不具合・未実装があった。
詳しくは質問「teratail 不具合報告」にだいたいまとまっている。
なお,質問に答えて欲しい人は質問さえしてしまえば後は回答だけしか気にしないので,
再開後質問がどんどん追加されているようだ。
一番影響を受けたユーザーは,回答可能な質問をタグや未回答フィルタなどでしぼって質問に答えていた人で,
フィルタがほとんど役に立たずかなり回答しづらい状況にある。
メンテナンス後,運用状態のまま改修を行っているようだが,「注目」フィルタのトップにきていた
質問「teratail 不具合報告」を見られなくした上で「未解決」フィルタを改修し,
「未回答」フィルタは先頭数ページのみ改修とか,個人的にはかなり姑息な手段を使っているように感じられる。
おそらくWebサービスのシステム更新失敗例として伝説になるのではないか?と個人的に思っていて,
生温かく経緯を見守りたいと思う。
コレクターが独断で選ぶ! 偏愛キーボード図鑑と違って,
キーボード以外の話題もする「きりのない話」。今回はタッチパッド(トラックパッドともいいますね)です。
KINESISの真ん中の空間に何かカーソルを動かせる機器を置こうと思って最初に選択したのがこの機器。
まぁ平たく言うと「USB接続のタッチパッド」という代物です。
KINESISはキーボードの真ん中がシフトやキーパッドのインジケータの他は空間になっていて,
ここに何かマウス代わりのものを置きたいというのが事の始まりです。
左利きなので,たまに左手で操作できるといいかな?という考えから,
この部分にタッチパッドがあればいいという方向性となりました。
また,トラックボールは右手の親指側の手首を痛めていたので,最初から選択肢には入れていませんでした。
左手親指は絶えずコントロールキーの上でしたし。
なお,この考えはなるべく右手親指で入力するスペースキーを使わない日本語入力方式ということで
漢直を使い始めた経緯と思考回路的には同じです。
特徴としては次の通りです。
難点として
まぁずれるのは仕方がないとして,個人的にはエリアが小さいのがネックでした。
この頃のOSはマウスとタッチパッドの移動速度の設定が別々ではなかったので,
タッチパッドだとかなりマウスカーソル移動が遅かった印象でした。
使ってしばらく後に「iGesturePad」に取って代わられ,その後スタックされていましたが,
部屋の整理の時に廃棄しました。
しばらく続くKINESISとセットで使うマウスっぽい何かを探して迷い続ける,迷走のきっかけとなった機器でした。
ここで始めて,キーボードでもマウスでもない機器が登場です。何でもありですね。
でも個人的にはすごく思い入れのあった機器でもあります。
二十年近く前の当時,KINESISのネットショップでPS/2接続しかなかった「KINESIS Contoured Keyboard」をUSB接続でも
使えるアダプタとして紹介されていて,ノートPCなどでも使いたいと思って購入したものです。
購入したのはこれも「ぷらっとホーム」だったかと。
今でも次のリンクに製品情報があるようです。
Y-mouse USB変換アダプタ製品情報へのリンク
(注: なお,リンク先の製品が今でも購入可能かどうか確認できていません)
特徴はPS/2のマウスも同時に接続できるところでしょうか?
ただ,KINESISのキーボードの動作電流が大きいこともあり,「ROM挿しEssential」のキーマップを破壊することが多々ありました。
これはUSB1.0の規格上,最大許容電流が小さかったり,この頃のノートPCの電源が脆弱だった等のせいもあるかもしれません。
最初は機嫌よく使えたものの経年とともに「ROM挿しEssential」のキーマップ破壊やキーが効かない頻度も増え,
使い勝手はすごぶる悪くなるとともに,いつしか使わなくなりました。
これはKINESISキーボード側の劣化の影響もひょっとしたらあったかもしれません。
それでもしばらくの間,ノートPC等でKINESISを使いたいという私のワガママをかなえてくれたことで印象に残っている製品です。
もう廃棄済みですが,今となっては現在使用している「別電源をとっているUSBハブ」に接続する等の対策をすれば
晩年も機嫌よく使えたのではないかと,今のKINESISを別のPS/2 USB変換器を利用して入力しながら思っています。
いつ買ったかも分からず,しばらくどこにいったかも分からず,色々整理していたらでてきて,
PS/2端子があるPCに接続していたら,いつの間にか現在も息子用に使われているキーボードです。
仕様的にHappy Hacking Keyboardと基本的にキーの配置は同じで,メンブレンと本当に特徴のない
キーボードで比較的コンパクト,独立したカーソルキーがない,ということ以外は普通のキーボードです。
おそらくきっかけは第1回のHHKのサブとして購入したと思うのですが,
会社でしばらく色々なPCで一時的に使う用途として便利に使っていたかと思います。(うろ覚え)
一時期会社の袖机の中で忘れ去られていましたが,社内の席替え中に再発見し家に持って帰って
再度使い始めました。
ヘタをすると,「KINESIS Classic」よりも長いのかもしれませんが本当にいつ買ったか覚えていないキーボードです。
一つ我が家に大きな影響があるとすれば,息子はAの横にコントロールキーがあるのが
普通だと思ってしまっているフシがありました。(マイクラのダッシュに便利らしい)
今は学校で貸与されているPCにも触れているので,キーボードの種類によって違う認識はあると思います。
ひょっとすると我が家で一番長く使っているかもしれないキーボードなのに,
一番印象が薄く存在感がないけどいつもそこにあるキーボード,
それがうちのHappy Hacking Keyboard Liteなのです。
この「Classic」キーボード前回にも述べたように,「Essential」との違いはリマップできるかどうだけです。しかしその違いはかなり大きいものでした。
購入したのは2002年頃。前回で説明した通りリマップ欲に勝てずに購入したキーボードで,
使い勝手はリマップができる他はほとんど「Classic」と変わりがありません。特徴は前回述べた通りです。
「リマップしたい!」と思ったのは,KINESISの標準のキー配置で「Esc」が左上の消しゴムキーボードな点で,
Emacs派ではあるものの,必要な時のvi操作やちょっと気取った時(?)の「Alt」の代わりなど,「Esc」キーも親指なら便利だろうと考えたからです。
実際「Esc」キーが親指にあるのは非常に便利です。私は「Home」キーと入れ替えて使っています。
購入へのハードルは「Essential」ほど高くありませんでした。
一度3万円も払っていたら,4万円もあまり変わらないからでしょうか?
それよりも「Essential」で使い勝手が分かっていたのが大きいと思います。
また,購入元は「ぷらっとホーム」で国内店舗だったこともハードルが低い理由でもあります。
(その後エジクン技研が国内の代理店となるが,購入当時はまだそうではなかった)
US配列の「おもて」のキーマップは現在最新機種の「Advantage 2」でもほとんど変わりません。
おそらく「Insert」が左薬指最下段からキーパッドON時のマップに移動になっただけかと思います。
あと右Altの位置が現在はWindowsキーに変更になっていますが,これは表裏共通のキーですね。
なお,使い始めた頃は会社の先輩にもキーボードと入力方法に凝っていた方がいて,親指シフトキーボード+親指シフトを使っていました。
いまだにそのキーボード(約20年!)を使っていたような気がしますが,最近直接会っていないのでそうでないかもしれません。
今ではその先輩も立場だけはすっかりお偉いさんです。(人柄もあってまったくそんな感じには見えませんが)
そしてこの頃私も漢字直接入力方法の一種「T-code」を使い始めて現在も使い続けています。
Google日本語入力で使えるようにするまでのあれやこれやは,過去の日記に書いたこともあります。
さて,ここで少しKINESIS特有の入力のコツなどを少し。
他のキーボードのように全部下に押すように入力する感じではかなり不自然な感じになります。
KINESISの場合は特に上段は「伸ばす,突く」ように入力するのがコツです。
実際キーの沈む方向を見ると上段のキーは少し上側方向になっています。
それから「1」とか「0」とか端の方は薬指を伸ばして入力する方が楽な感じもあります。
シフトキーを押しながらだと自然にそうなる時がありますね。
最下段の入力は手を軽く握るように押すのがコツです。
特に右側最下段の「[」とか「]」はそんな感じです。
誰にも役に立たない,KINESISキー入力のコツでした。
このキーボードは2019年頃に会社で使っているPCがPS/2端子がないものになったタイミングで家用のキーボードなりました。
今でも家で利用しており,来年で20年にもなる相棒です。
「Essential」よりも手を入れていない分,まだまだ使えそうとこのキーボードで入力しながら感じています。
いつまで利用できるでしょうか?
日々是ハック也 -- あるハードコアバイナリアン