もうこんな時間かぁ。何もしてない訳では決してないんだけど、もうかぁ
JavaScriptでも切り替える余地が無かったら同じやでって記事があった。記憶違いかぁ。
JavaScriptはシングルスレッドで実行される \#JavaScript \- Qiita
JavaScriptの非同期処理の歴史 \#JavaScript \- Qiita
あと、JavaScriptにasync/awaitが入る前の非同期処理が、どんなだったか順番に分かる記事もあったのでメモ。
見直したらasyncメソッドの中でうっかりawait書いてて草。何の検証にもなってなかった。
改めてasyncメソッドでawait書かなかったら、同期メソッドの様に動いた。
[Warning] CS1998: この非同期メソッドには 'await' 演算子がないため、同期的に実行されます。'await' 演算子を使用して非ブロッキング API 呼び出しを待機するか、'await Task.Run(...)' を使用してバックグラウンドのスレッドに対して CPU 主体の処理を実行することを検討してください。あとideoneじゃなくVisualStudioに書いたら、普通に警告も出てた。
using System;
using System.Diagnostics;
using System.Threading.Tasks;
public class AsyncMethods {
public async Task FirstMethodAsync() {
Console.WriteLine("First async method started.");
Stopwatch stopwatch = Stopwatch.StartNew();
while (stopwatch.ElapsedMilliseconds < 1000) {}
stopwatch.Stop();
Console.WriteLine("First async method completed.");
}
public async Task SecondMethodAsync() {
Console.WriteLine("Second async method started.");
Stopwatch stopwatch = Stopwatch.StartNew();
while (stopwatch.ElapsedMilliseconds < 500) {}
stopwatch.Stop();
Console.WriteLine("Second async method completed.");
}
}
public class SyncMethods {
public void FirstMethod() {
Console.WriteLine("First sync method started.");
Stopwatch stopwatch = Stopwatch.StartNew();
while (stopwatch.ElapsedMilliseconds < 1000) {}
stopwatch.Stop();
Console.WriteLine("First sync method completed.");
}
public void SecondMethod() {
Console.WriteLine("Second sync method started.");
Stopwatch stopwatch = Stopwatch.StartNew();
while (stopwatch.ElapsedMilliseconds < 500) {}
stopwatch.Stop();
Console.WriteLine("Second sync method completed.");
}
}
public class Program {
public static async Task Main() {
AsyncMethods asyncMethods = new AsyncMethods();
SyncMethods syncMethods = new SyncMethods();
syncMethods.FirstMethod();
syncMethods.SecondMethod();
Task firstAsyncTask = asyncMethods.FirstMethodAsync();
Task secondAsyncTask = asyncMethods.SecondMethodAsync();
await Task.WhenAll(firstAsyncTask, secondAsyncTask);
Console.WriteLine("All methods have completed.");
}
}
https://ideone.com/pWJCKOtry catchしてどうなるかを確認してみた。
Unity loggingのLog.Error()
だとちゃんとStacktraceが出て、例外の発生行が分かった。
とはいえハンドリングの不要な例外を全部catchするのはmain()関数もないUnityでは無理だし、Stacktraceが失われてる訳じゃないなら、未catchのもうまい事やって欲しい所。Debug.LogException(e)
の場合、10行目はDebug.LogException(e)
なので発生行分からず
Object reference not set to an instance of an object
UnityEngine.Debug:LogException(Exception)
TryException:Start() (at Assets/TryException.cs:10)
Unity.Logging.Log.Error(e)
の場合、発生行が分かる。正確には17じゃなくて18行目だと思うが
"System.NullReferenceException: Object reference not set to an instance of an object
at TryException.ThrowException () [0x00000] in E:\dev\unity\try-unity-logging\Assets\TryException.cs:17
at TryException.Start () [0x00000] in E:\dev\unity\try-unity-logging\Assets\TryException.cs:8 "
TryException:Start() (at Assets/TryException.cs:11)
throw e
の場合、未catchと当然同じく発生行分からず
Object reference not set to an instance of an object
UnityEngine.Debug:CallOverridenDebugHandler(Exception, Object)
using System;
using UnityEngine;
public class TryException : MonoBehaviour {
private void Start() {
try {
this.ThrowException();
} catch (Exception e) {
Debug.LogException(e);
Unity.Logging.Log.Error(e);
throw e;
}
}
private void ThrowException() {
string[] array = null;
Debug.Log(array.Length); // 故意にnull参照エラーを発生させる
}
}
あーしまったこんな時間。今日もソシャゲの日課をやってなかった・・・
昨日は忙しかったからだけど、今日は休日だから勝手にやらなかっただけではあるが。30分でなんとかやらんと
Unity loggingでRedirectUnityLogs(log: true)
だと、未catchの例外のStacktraceが消滅してしまう問題を追いかけている。とりあえず1.0.16でも1.2.0でも残念ながら変化は無かった。
Unity logging未使用 or RedirectUnityLogs(log: false)
の場合...
NullReferenceException: Object reference not set to an instance of an object
TryException.ThrowException () (at Assets/TryException.cs:10)
TryException.Start () (at Assets/TryException.cs:6)
RedirectUnityLogs(log: true)
の場合...
Object reference not set to an instance of an object
UnityEngine.Debug:CallOverridenDebugHandler(Exception, Object)
RedirectUnityLogs(log: true)
は諦めるしかないだろうか・・・using Unity.Logging;
using Unity.Logging.Sinks;
using UnityEngine;
using Logger = Unity.Logging.Logger;
public static class LoggerConfigure {
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
public static void Initialize() {
Log.Logger = new Logger(
#if UNITY_EDITOR
EditorConfiguration()
#endif
);
}
private static LoggerConfig EditorConfiguration()
=> new LoggerConfig()
.SyncMode.FatalIsSync()
.RedirectUnityLogs(log: false)
.WriteTo.UnityEditorConsole();
}
using UnityEngine;
public class TryException : MonoBehaviour {
private void Start() {
this.ThrowException();
}
private void ThrowException() {
string[] array = null;
Debug.Log(array.Length); // 故意にnull参照エラーを発生させる
}
}
Packages/manifest.json書き換えてUnity logging 1.2.0にする分には普通に入る。依存解決でburst, collectionsのバージョンも上がって、test-frameworkとかも入るみたいだけど、別に問題は無さそう。
少なくとも、Unity logging 1.2.0が入った状態で即Consoleにエラーが出るとかは無い。
https://docs.unity3d.com/Packages/com.unity.logging@1.2/changelog/CHANGELOG.html
一方で、Changelog見ると1.2.0は"*Release Preparation"とだけ書いててなんか変。1.2.0はなんかの間違いだったりするんかな?
1.1.0はリリースされなかったみたいなので、実は1.0.16が正式なリリースでは最新とかか?よく分からん。
https://github.com/needle-mirror/com.unity.logging/compare/1.0.16...1.2.0
Misskeyは長文行けるからついでに1.0.16...1.2.0の差分URLも置いとこ
UnityプロジェクトにインストールされてるUnity Loggingと、ドキュメントで見れる最新バージョンが違う・・・
https://docs.unity3d.com/Packages/com.unity.logging@1.2/manual/index.html
ドキュメントではUnity Logging@1.2がUnity 2022.3.11f1以上で使える風に書いてある。
けど、Unity 2022.3.12f1にインストール出来るのは1.0.16。
なんで1.2が提示されないんだろう?
なんかもうこんな時間。何もしてない訳じゃないけど、休日って仕事みたく1つの事に取り組んでないから、待機状態だったりスイッチングだったりが挟まって、なんか何もして無い様な気分になるな
なんかすると10Pontaポイントが貰える的なメールが来てたけど、多分1ポイントって1円相当だよね?
流石に10円じゃ行動を促せないのでは・・・
ただしメソッドにasyncをつけただけでは通常のメソッドと挙動は変わりません。実際に意味を持つのはawaitの方となります。C#のasync/awaitの解説記事を読んでて、この1文が引っかかったけど、そんな事ないよなぁ?
using System;
using System.Threading.Tasks;
public class AsyncMethods {
public async Task FirstMethodAsync() {
Console.WriteLine("First async method started.");
await Task.Delay(3000);
Console.WriteLine("First async method completed.");
}
public async Task SecondMethodAsync() {
Console.WriteLine("Second async method started.");
await Task.Delay(2000);
Console.WriteLine("Second async method completed.");
}
}
public class SyncMethods {
public void FirstMethod() {
Console.WriteLine("First sync method started.");
Task.Delay(3000).Wait();
Console.WriteLine("First sync method completed.");
}
public void SecondMethod() {
Console.WriteLine("Second sync method started.");
Task.Delay(2000).Wait();
Console.WriteLine("Second sync method completed.");
}
}
public class Program {
public static async Task Main() {
AsyncMethods asyncMethods = new AsyncMethods();
SyncMethods syncMethods = new SyncMethods();
syncMethods.FirstMethod();
syncMethods.SecondMethod();
Task firstAsyncTask = asyncMethods.FirstMethodAsync();
Task secondAsyncTask = asyncMethods.SecondMethodAsync();
await Task.WhenAll(firstAsyncTask, secondAsyncTask);
Console.WriteLine("All methods have completed.");
}
}
https://ideone.com/5tU1muなんか海外だとこの指の形は侮辱だったり卑猥だったりするサインだ、みたいなのたまに聞くけど、逆に日本で海外の人が知らずにやってしまうかもしれない危ないサインって、なんか全然無い気がする。
有名すぎて多分輸入された中指くらい?
夏の文字が若干ゲシュタルト崩壊を起こしてしまい、春夏秋冬の中で夏だけ、なんか文字から季節より中華的なイメージを感じるようになった。多分、夏侯惇とかのイメージが前に出てる
SharpのVR HMDどうなったんだっけと思ったけど、2024年夏か。
夏、ちゃんと来るかな?
https://k-tai.sharp.co.jp/dash/lp/vr/
Gaussian splattingすごいなぁ。雑にちょっとスキャンしただけでも、スキャンした角度からは写真かもって位に見えるし、それが3Dなので回転してみれる。
まぁ雑スキャンだから回転すると粗が出るけど。
これが、iPhone13でScaniverse使うだけで出来ちゃうからなぁ
松屋のポーランド風ミエロニィハンバーグ、うまい。食べた事のない味感はそこまででは無いけど、それでも普通の良くあるハンバーグソースではない味。
バターライスって話だったけど、テイクアウトの場合バター乗っかってないかも?溶けちゃったって感じでも無かったのが気になる。
胡椒もうちょっとかけて欲しいな
なお、Unity Editor上であれば、Windowメニューから起動できる UniTask Tracker で Enable StackTrace をONにして実行することで、今実行中のUniTaskについて、呼び出し関係のスタックトレースを表示できるようです。UniTask 2\.x を使った堅牢な非同期処理への移行ガイド \#C\# \- Qiita
DMMブックスのセール、なんか買う気しないなぁ。
日替わりで当日セール対象が分かるのって、毎日チェックするの面倒だし、チェックするの忘れてガッカリするし、1作品だけだから大抵は興味のないやつでガッカリするし、良い施策じゃないと思う。
今のところ毎日DMMブックスにがっかりする施策になってるし、潜在的に印象悪くしてそう。
クレジットカードの支払い、5月に引き落とされる分は割と低く抑えられたと思ったけど、4月引き落とし分の方がもちっと低かったか。
けど、結構消費が多かったのが続いてたけど、この2ヶ月は低めに出来てるのでよかった。
【SE06】機能・観点マトリクス \- OPEN TONE Labs
以前、そこそこ網羅的なテストケースを書き出す必要があった時、ここのテスト観点表を参考にして、また見たくなったから探し出した。
んだけど、今見るとあんまり参考になる感じがしないな。
多分、今のシステムがwebじゃないからだろうなぁ。
UniTask使ってるからなのか、async/awaitだからなのか分からんけど、Object reference not set to an instance of an object
で単純なNullReferenceExceptionだと思うのに、Stack trace見ても発生行が書いてなくて、困ってる
Windows Terminalで日本語入力するとフリーズする場合がある問題、まだ直って無いのか・・・
確かissueも作成されてたと思うんだけど、見当たらないな
C#のdelegate, Action, Func, eventが、毎回よく分からなくなっちゃうので、改めて調べてまとめた。
---
public delegate int MyDelegate(int x, int y);
delegateは関数・メソッドのシグネチャをDelegate型として定義する。Action printSum = (a, b) => Console.WriteLine(a + b);
Func sum = (x, y) => x + y;
Action, Funcはあらかじめ定義されたDelegate型で、delegateのテンプレートの様なもの。public delegate void MyEventHandler(string message);
public class MyEventClass {
public event MyEventHandler OnEvent;
eventは、delegate, Action, Funcのどれかを問わずDelegate型を使ってイベントハンドラーを作る物。
NetlifyとかCloudflare PagesとかJamstack用の環境として紹介されるけど、別に静的ファイル生成してなくても、CSRなNuxtをデプロイしてもいいよね?
うまい事SSG出来る様に考えるの、慣れてないから大変なので・・・
まだ4月だけどもうエアコン、冷房入れよう。
これが免罪符だ 【すごい】姫路市役所が冷房を25℃にした結果、残業時間が人件費換算で4000万円減→「やっぱり快適だと仕事捗る」 \- Togetter
startpage.com、いくつかの点で不便だったので残念ながらやめる事にした。ちょっと選択肢が無いというか、今探す気分じゃないので仕方なくGoogleに戻すか。
* startpage.comの検索結果を開いたままのタブが、時間経過でエラーとなり検索ワードが失われる
* 検索結果のリスティング広告が画面ロード後に二次読込されて、クリックしようとしてたコンテンツ領域が不意に下にずれてイラっとする
結構開きっぱなしのタブの検索ワードみて、当時何調べてたか思い出したりするから、困るんだよね・・
外歩いたのが良かったのか、松屋の豚汁で温まったのが良かったのか、ようやくマッサージの効果が出たのか分からんけど、やっと頭痛が治まってきた
側頭筋なんでこんな凝ってしまうんだろうなぁ。指で触りながら目を動かしたり細めたりしても、側頭筋を使ってる感じもしないんだけど。
https://vket.com/cloudstore/asset/718
Vket Booth Marcheの商品登録、もっとちゃんとやるつもりだったけどなんだかんだでギリギリに
まぁ一応登録したから
痛みは無いまま、水ぶくれが大きくはなっている。
ダメになったであろう一番外側の皮を使って、恐らくは修復に必要な液で満たし集中的に修復するの、人体の再生能力もなかなかだなと思うなど。
まぁ面積にして1㎝ x 4mm程度の小さい火傷ではあるけど。
何かしら画面を表示するのにデータを取得するならShow、それが一覧ならList、ファイルダウンロードするならDownload、検索して結果を得るならSearch位はあるけど、これ以外がGetになってしまう。
web系のシステム、基本的にCRUDなのもあって、Read系のユースケースの命名にいつも悩む。
Getにしてしまいそうだけど、Getだと全然説明になって無い感じがする・・・
Create系は、そのままCreateだったりSubmitだったりUploadだったりConvertだったりと、ユースケースによってユースケースを表す単語が割とあるんだけど。
火傷したの、右手の親指の、爪を見てるポジションで左側面なので、マウスもキーボードもスマートフォンの操作も支障がなくて良かった。
キーボードは、スペースキーだけ左側面だけど、自分は左手の親指派なので大丈夫だった。
スマートフォンは親指の腹か右側面なので何も問題が無い。
スマートフォンくらいは控えた方が良いかもだけど、マウスとキーボードは使わんと仕事にならないからな
冷やし続けるのを推奨してる記事もあるな・・・2時間とか半日とか。凍傷には気を付けろともあるけど。
0℃以下である保冷材や氷にずっと当ててると良くないのは分かるけど、ある程度は冷やした方がいいのか?
単に冷やすと痛みが和らぐから楽だよけど治癒に繋がるわけじゃないよってだけかもだけど。
まぁ、じっとしてる分には少し痛い程度になってきたし、どちらにせよ冷やすのはもういいか。
なんか買った時についてきた保冷剤たち、とりあえず冷凍庫に放り込んでおいて良かった。
応急で15~30分ほど冷やして、その後は医療機関としてるwebサイトが多い。とはいえこの時間に医療機関は無理だけど。
冷やした後はガーゼやタオルで覆うとしてる記事もあるし、やっぱ冷やし続ける感じでは無さそうか。
保冷剤あったから冷やしてみると、痛みが増してしまった。最初とは違って保冷剤離してから10秒位で痛くなってくる。
保冷材に当てたら即痛くなくなる。
1秒だけ当てて離しても、やっぱり10秒位で痛くなってくる。
めちゃくちゃ痛いを耐えて1分くらいしたら落ち着いてきた。
これは多分もう冷やさない方が良さそうか?
保冷剤3個で冷やしてようやく、めちゃくちゃ痛いから痛いになってきた。ずっとあの調子で痛かったらどうしようかと。
けど、3個目の保冷剤が温くなっても、保冷剤で指包んでると多少は和らぐから、しばらく温いままだったんだけど、冷やしすぎても痛いとかあるんかな?
もう1個保冷剤あればもう1回冷やしてみたいけど、あるだろうか
鉄板に触れてしまい火傷・・・めちゃくちゃ痛い
冷凍庫にあった保冷剤で冷やしてるけど、冷やすのやめたら2、3秒で痛みが急上昇してくる