ググったらマジで IPv6 経由で死んでる説が濃厚になってきたんだけど、嘘だろ、インターネットを使うゲームとしてそれは大丈夫なのか??
ググったらマジで IPv6 経由で死んでる説が濃厚になってきたんだけど、嘘だろ、インターネットを使うゲームとしてそれは大丈夫なのか??
あー .NET Standard 2.0 アセンブリの参照すると NETStandard.Library 相当の不足分が bin 下にコピーされてくるのか
System.Net.Http は、中身の実装自体が新しくなっているのか、実装入りの dll がコピーされ、その他は、 .NET Standard ではアセンブリ名が違うから TypeForwarededToAttribute が入ったアセンブリになってるな
これを危惧して俺は NETStandard.Library 使うの嫌だったんや。使っていようがいまいが互換層突っ込まれるんだもん
netstandard1.x のころはそれで押し通してたんだけど、 2.0 では nuspec に書く必要すらないってお前、お前よお
.NET Core が Core を目指していた 1.0 あたりが一番良かった(それより前は ASP.NET Core がゴタりすぎたのでアレだったが)。今は完全に .NET Framework の高速リリースサイクル版として置き換えを狙う戦略だもんなぁ。
ASP.NET Core のゴタゴタ、最強のメタプログラミングツールが存在していた時期でもあるけれど https://azyobuzin.hatenablog.com/entry/2016/01/07/154346
ライフラインであるところの NuGet Package Explorer が起動しなくて死にかけてる
FuGet も不甲斐ないし、 https://github.com/azyobuzin/NuGetCalcWeb を復活させたいが、厳しさがものすごい
これ作るために OWIN に Razor を強引に乗せるライブラリ作ってたのか……よくそんな体力あったな……
EF Core 使おうと思ってたけど、薄い SQLite ラッパーの方があってる気がしてきたので、 SQLite-net にするかなぁ
MagicOnion に FilterAttribute で Microsoft.Extensions.DependencyInjection を突っ込むやつしてる
自由に使える 50000 番台を使ってたんだけど、 Windows だと逆にダメっぽいな。 outgoing 専用ってことなのかな
SQLite が BUSY 吐きまくるんだけど、ロック掴みっぱなし案件なくない?????になってる
BEGIN IMMEDIATE しないとそりゃあ共有ロックで開始したトランザクション死にますよねって感じでした。終わり
Web UI ができてないので、進捗状況を見るには DB 除き見るしかないけれど、たぶんこれで一通りルート探索自体は完成したはず
bzr を使ってた頃は、ファイルを移動してから「しまった!」と思って元に戻して bzr mv したものだけど、その点 git はファイル移動の概念がなく、 diff ツール任せなので、ある意味クソどうでもいいのは強い
SQLite ってテーブル単位ロックだと思いこんでいたけれど、 DB 全体ということに気づき、それは流石に厳しいなという思いになったのと、 CodiMD がたまに謎のフリーズを起こす原因がわかった
init しかプロセスが走ってない状況で、 init がリソース食いまくったら OOM Killer はどう動くんだろう
fork、あんまり納得行かない存在だけど、たしかにプロセス同士はメモリ共有しないからクローンを作ろうが何しようが割と問題ないってところが憎い
コピーからの変形ではなく、無から生まれてきたほうが、隔離された別のもの感があるよな、という点で、あんまり fork が「そうなるのが自然」というふうには思えない
で、なまじ fork でそういう並列処理とか便利にできちゃうのが憎いな〜(つまり自分の感覚に合わないけれど実用的なんだよな)と思うところ
コピー or 新規作成ならわかるけれど、 fork or fork-exec だと thinking-face み
Office のデザイン変更、あー変わったな程度にしか思ってなかったけど、レポート書き始めたらめっちゃ混乱する。配置とかほとんど変わってないはずなのに、めっちゃ初見感に陥る
GitHub にご用がなかったのでどういう死にかたしてるのか把握していなかったが、これ本体データは大丈夫だから安心して宣言出てるけど、安心できるレスポンスじゃないw
https://twitter.com/yasuhito/status/1054591052345012224 #tw
RMS も人の気持ちを理解できない勢だったのかwwww
ゲッ Instagram が突然メール送ってきたと思ったら、「この人フォローしてみたら?」ってリストで、明らかに Facebook から持ってきたデータだ
隠すのではなく除外する #ミッキマウスミッキマウスミッキミッキマウス ってディズニー動画でもニコニコに上げたのか?
LINQPad も RoslynPad も NuGet に対する気合が足りてないよなぁ。そういえば 2 年前に手を付けて中途半端に放置された Web 版 LINQPad 計画あったな……
https://mizchi.hatenablog.com/entry/2018/10/23/221446 大量のテキストを食っても速い Markdown Editor 作った - mizchi's blog
Markdown レンダリングを WebWorker にぶん投げて CodiMD 高速化したいな〜と思ってた最中だし、知見いただきたいな
SSD の種類によってのトレードオフ、知らんかった: 【福田昭のセミコン業界最前線】QLC SSDがコスト低減を武器にニアライン/クライアントHDDを侵食 - PC Watch https://pc.watch.impress.co.jp/docs/column/semicon/1149330.html
net.ipv4.ip_forward=1 にしたときの挙動って、 neighbor 宛てのパケットが来たときに、そいつに向けてぶん投げるってこと?
昨日の寒さを考慮して厚着したらクソ暑い。気温的にはほとんど同じなのに地面が濡れてるかでこんなに違うのか
僕の個人的プライオリティは高いけれど、 .NET チーム内では低い案件 https://github.com/dotnet/roslyn/issues/30096
Microsoft が semver する気ないってことだし、 NuGet パッケージはどんどん破壊的変更していっていいぞ!
sqlite-net、 <T> 以外の選択肢がないんだけど、 select * 以外どうしろと……
SQLiteCommand クラスとかあるし ADO.NET 的にも使えるんでしょwって思ってまったく調査せずに使い始めたツケが回ってきましたね
エラー出まくってるときにどこで息絶えたのかわからないし、やっぱりスクリーンショットもブラウザから見たいよな……
この SQL が一発で動いたの奇跡でしょ https://github.com/azyobuzin/whc/commit/777b7b7616238d938b2d72e8af584b3dc0b620e5#diff-a0e5df1512ebcbfb3d3b513395f16d4eR46
楽天銀行の広告クリックで1円くれるやつ、ポップアップブロックに吸い込まれていくので高速に現金が手に入っていくんだけど、ユーザー環境でテストしてなさすぎでしょ
技術書、まず序盤から名言載せて教養で殴ってくるから本当につらい。古典に精通して技術に精通して、隙きがなさすぎる
ツイから通知が飛んでくると、Twitter、そんなのもあったなぁって気持ちになるくらいにはツイ離れできているっぽい
USB が Universal でも Serial でも Bus でもないじゃんと言われてきたが、アナログ信号通せるという点は U で S で B だな(?
pcie - PCI Express data transfer method? Serial VS Parallel - Electrical Engineering Stack Exchange
https://electronics.stackexchange.com/questions/193189/pci-express-data-transfer-method-serial-vs-parallel
Not quite: the lanes aren't synchronized with each other! That is the key difference between multiple serial lanes and a parallel interface. Each lane has its own clock. Even if multiple lanes transmit in a synchronous fashion, because the lanes aren't required to be exactly the same length they may recieve asynchronously.
複数の信号線があって、それをどう使うかは定めてなく、並列にデータを送ろうがそうでなかろうが勝手にしろって規格だからシリアルってこと?
受信側でデータを再構成する方法が規格で定まってるとしたらシリアルとは呼ばせねえよ新しい名前つけろと思いますが
それは違いますね(複数の信号線がある必要はないですし、それぞれをどう使うかは大抵定められています)。複数の信号線が同期して制御されるか否か
複数の信号線と同期信号を流すケーブルを合わせて「パラレル通信の物理層」になるから、そうでない構成はシリアル、そういう主張か
挙動で考えるなら、8ビットを1単位として送る8本(差動信号回路なら16本)一組のケーブルがあったときに、同期信号やヘッダではない最初の有効な信号として最初の8ビットが送られてくるならパラレル通信ですし、8つの1単位(8つの別の発信源から来たものでも、1つの発信源から来た連続する8単位でも良い)の1ビット目が送られてくるならシリアル通信の束です
ケーブルの利用者がそれを最終的に 8 ビットまとめて処理しようが何しようが知らんけれど、 1 ビット単位で処理することを考えてもいいよと言った時点でシリアル?
さっきの8ビットバスの話でいうと、それでASCIIなテキストを(8ビット目を埋めて)送ったときに1本だけ見てても(7文字飛ばしで)送りたかったデータが見えるのがシリアル通信の束です
並列に送信するときの切り方が、必ず通信線の数のビット数になるか、そうではない切り方も使えるか……?
というかネットワークの授業騙されたということがわかった。イーサネットフレームのプリアンブルはデータリンク層で挿入されるデータじゃなくて物理層で挿入されるデータじゃん
伝送上取っ散らかってようが知らんが、上の層は困るので、取っ散らからないように上の層が頑張るという認識になってきました https://mstdn.maud.io/@omasanori/100956185438949637
This account is not set to public on notestock.
This account is not set to public on notestock.
ギガビットの世界は単純なLOW,HIGHでやっていける世界じゃないという前提を考えれば、データを送る層以外にそういうのをカバーする層があって、それが物理層って呼ばれてるんだよねってことをすっかり忘れていた
LINQPad から RoslynPad へ移行しようとしてるんだけど、やっぱり LINQPad 便利だよね……
gRPC の C# バインディング、でかいデータ送ると GC やべーじゃんって Issue 投げた件、ついに新 API が作られたっぽいぞ! https://github.com/grpc/grpc/pull/16367
3ワーカー走らせたら Xvfb が Resource temporarily unavailable で死んだので、 2.3GB のメモリ割り当てでは 2 ワーカーが限界っぽい
さっき LOCKED に対してリトライすればいいかとは言ったものの、やっぱりよくわからんな。エラーの解説を見るとロックの「コンフリクト」とあるんだけども、書き込みを行うトランザクションはすべて BEGIN IMMEDIATE しているから、共有ロックから排他ロックへのアップグレードは発生しないはずなんだよな。それとも 1 クエリだけで、整合性も雑でいいからオートコミットでええやろと投げてるところが逆に悪さしたりするのかな?
C# の変数名シャドウイングをエラーにする挙動のせいで
var (foo, bar) = F(() => {
var foo = G();
var bar = H();
return (foo, bar);
});
ができないの地味につらいなぁ
Roslyn 2.0.0, 2.6.0, 2.9.0 すべてでエラーになるのでエラーになるのが正しい気がするなこれ
一応検証の検証ができるようにコード上げておきます https://gist.github.com/azyobuzin/00d4d710138e7b7cb290166d4458c25c
Microsoft.CodeAnalysis.CSharp.Scripting、 LangVersion 指定ができなくて泣いてる
というわけで、謎の半分が溶けて、 Microsoft.CodeAnalysis.CSharp.Scripting.CSharpScript 経由で例のコードをコンパイルすると、 CS0136 が出ないというところまで特定しました
検証の検証をした結果、最後のループが見てる Compilation が違うじゃねーかボケになりました。おわり
スクリプトモードでコンパイルしたとしても
T F<T>(Func<T> x) => x();
void G()
{
var (foo, bar) = F(() =>
{
return F(() => {
var foo = 0;
var bar = 1;
return (foo, bar);
});
});
}
だとエラーになる。通常のメソッドボディ扱いになるので
スクリプトモードにおける最上位での変数定義は、 async 対応、次のスクリプトへの受け渡しを含むから、ローカルではなくフィールド扱いになり、重複チェックを回避するっぽい
SQLITE_LOCKED したらリトライ作戦を決行した結果、なんと SQLiteConnection のコンストラクタですら SQLITE_LOCKED の可能性を持っていることが判明して相手したくない
あ〜 Docker for Windows はポートエクスポートしても localhost からしか受け付けないんだっけ……
apt install で cc が走ることがあるんか(Debian に Docker 入れてる)
メモリ使わんやろっていって 300MB しか割り当ててないから cc 走ると明らかにスラッシングするし、 VHD が乗ってるの USB 2.0 接続の HDD だから明らかにやばいんだけども
max-concurrent-uploads を 1 にしたので安心して push できるようになった(?)
スクリーンショット保存機能を無効化して SQLite の負荷を減らした結果、サーバー側の負荷は問題なくなり、 Docker for Windows 上からの 2 ワーカーと、クソマシン上からの 3 ワーカーが安定して稼働している
GPU 使ってないので、メモリと CPU、あと通常のロード時間よりも極端にならない程度にはストレージの強さが必要
メモリが足りているように見えてもフリーズすることがあることを確認しているので、それなりに余裕がないとダメっぽい
実際にやるなら t3.large を 10 個並べたいですね。その前にバックエンドの DB を変えないとログ書き込みで死ぬだろうけど
jitaku .azyobuzi .net の 30416 ポートで進捗状況が見られます(リンクにするとクロールされそうで怖いので)
こんなにワーカーが長生きすることがなかったからログがクソ長くなってきたときにどうするか考えてなかった
理論上 3072 ジョブ存在するけれど、僕が把握していない挙動があるんだとしたら検出したいという思いで、きっちり全部確かめに行く
1ジョブが完了したときに、把握していなかった枝がキューに追加されるので、あのプログレスバーは実は意味がありません
cshtml 以外に変更を加えるにはビルドし直しが必要なので、快調に動いている今コードを書き換えられない
自動リカバリもそれなりにちゃんと動いてそうだし、30分くらい目を離しても大丈夫と信じてアニメ見るか
https://mstdn.maud.io/@azyobuzin/100889138880280017 の画面は、この探索機能を作るために、各選択肢画面のスクリーンショットを撮影したり、カーソルの座標を調べたりするツールだった
1年半前は、 Windows 上でカーソルを自動操作してやったけれど、並列に実行できないこと、途中から再開できないことという問題があって、ならば Linux で動くようにしてしまえば Docker 使ってコンテナ化して、どこでもワーカー走らせられるじゃん!っていう計画のもと、 X11 を C# から触るコードを書いたのが去年。そして今年突然やる気が復活して、その続きを書き始めて今に至る
そもそも全探索をしようと思ったきっかけは、適当に選択肢を選ぶと大体未尋ルートに至って、未尋ちょろすぎでは?と思ったことなんですけど、現在 550/821 が未尋
クソマシン(僕の Linux 機の愛称)で 3 ワーカー動かしてるわけだけど、数時間ファンが回りっぱなしで、さすがに想定されてない使い方っぽい気がしてきた
もっと並列実行できるようにバックエンドを整えて、サーバー借りて設定してる間に家の中のマシンだけで探索終わりそうというのはある
あと今回は存在する選択肢はすべて事前にスクリーンショットを撮ってあって、そのすでにわかっている選択肢の上で動作しているけれど、それを把握するのが困難な場合はもっと技術的にチャレンジングになってしまう
選択肢情報はハッシュで持っていて、確認している選択肢画面が全部で 12 個
https://github.com/azyobuzin/whc/blob/master/src/Ashe.Contract/SelectionInfo.cs
うち、最初の選択肢で上を選んだときだけしか到達しない選択肢があるので、僕の把握している限りだと、選び方は 2^11 + 2^10 ということです
ついでに、 RouteSpecificSelectionInfo とあるところにあるハッシュは、中出し外出し選択画面のスクリーンショットのハッシュで、この画面に到達した時点で探索ジョブ終了です
ワーカーのプロジェクト名が Ashe なので、実質 5 人の桜木アーシェを産んだと言っても過言ではない
進捗管理サーバーの名前が Kaoruko なので、おるこさんを見つめていたと言っても過言ではないですね
X をしゃべるライブラリのプロジェクト名が Toa で、 Ashe の中で使われています。兎亜はアーシェの下僕
だんだんワーカーが殉職していき世代交代(Docker で --restart=on-failure)が起こってる
探索のバグではなく、ゲーム本体のバグだったりメモリリークだったりで積もり積もってフリーズすることを想定して、フリーズしていそうだったら自殺させてる