icon

もうこんな時間かぁ。何もしてない訳では決してないんだけど、もうかぁ

icon

記事読んでの違和感から、検証して自分の勘違いに気が付いたのは良い事だけど、割としょうもない事過ぎてあんまり達成感ない

icon

JavaScriptでも切り替える余地が無かったら同じやでって記事があった。記憶違いかぁ。
JavaScriptはシングルスレッドで実行される \#JavaScript \- Qiita

JavaScriptの非同期処理の歴史 \#JavaScript \- Qiita
あと、JavaScriptにasync/awaitが入る前の非同期処理が、どんなだったか順番に分かる記事もあったのでメモ。

Web site image
JavaScriptはシングルスレッドで実行される - Qiita
Web site image
JavaScriptの非同期処理の歴史 - Qiita
Attach image
icon

見直したらasyncメソッドの中でうっかりawait書いてて草。何の検証にもなってなかった。
改めてasyncメソッドでawait書かなかったら、同期メソッドの様に動いた。

[Warning] CS1998: この非同期メソッドには 'await' 演算子がないため、同期的に実行されます。'await' 演算子を使用して非ブロッキング API 呼び出しを待機するか、'await Task.Run(...)' を使用してバックグラウンドのスレッドに対して CPU 主体の処理を実行することを検討してください。
あとideoneじゃなくVisualStudioに書いたら、普通に警告も出てた。
中でawait書いてないのにasyncメソッドにする事、普通に実装してる時に確かにしないかもしれない。

ノンブロッキングなのを呼びもせず、メインスレッドでループ回ってたら切り替える余地もないって事か。
なるほどと思いつつ、昔のJavaScriptでは非同期のつもりでループ回して問題なかった様な気もしている。まぁもうよく覚えてないけど。
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/pWJCKO

icon

ご飯食べると暑さが限界突破する

icon

try 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)

以下、挙動確認用のコード。LoggingConfigの方は前回から変わらず。
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参照エラーを発生させる
    }
}

icon

寝る前は膨れてた水ぶくれが、起きたら萎んでた。穴が開いてる様子はない。中の液はどこに行ったんだろう?

icon

あーしまったこんな時間。今日もソシャゲの日課をやってなかった・・・
昨日は忙しかったからだけど、今日は休日だから勝手にやらなかっただけではあるが。30分でなんとかやらんと

icon

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)

未catchの例外のStacktrace見れないのはつらいから、
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参照エラーを発生させる
    }
}

Attach image
Attach image
icon

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も置いとこ

Web site image
Comparing 1.0.16...1.2.0 ?? needle-mirror/com.unity.logging
Attach image
Attach image
icon

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が提示されないんだろう?

Attach image
Attach image
icon

なんかもうこんな時間。何もしてない訳じゃないけど、休日って仕事みたく1つの事に取り組んでないから、待機状態だったりスイッチングだったりが挟まって、なんか何もして無い様な気分になるな

icon

Unityでの挙動を確認するコードだと、ideoneとかで動かせないから急に腰が重たくなるなぁ

icon

なんかすると10Pontaポイントが貰える的なメールが来てたけど、多分1ポイントって1円相当だよね?
流石に10円じゃ行動を促せないのでは・・・

icon

ただしメソッドにasyncをつけただけでは通常のメソッドと挙動は変わりません。実際に意味を持つのはawaitの方となります。
C#のasync/awaitの解説記事を読んでて、この1文が引っかかったけど、そんな事ないよなぁ?
asyncメソッドにしたら、呼び出し元はブロックされなくなるし通常のメソッドと挙動は変わってるはず。
C#の内部の事とか知らないから確認コード実行したけど、少なくとも表面的な挙動ではasyncメソッドは3秒待たせずに非同期処理になってる様に見えるなぁ。
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

icon

なんか海外だとこの指の形は侮辱だったり卑猥だったりするサインだ、みたいなのたまに聞くけど、逆に日本で海外の人が知らずにやってしまうかもしれない危ないサインって、なんか全然無い気がする。
有名すぎて多分輸入された中指くらい?

icon

夏の文字が若干ゲシュタルト崩壊を起こしてしまい、春夏秋冬の中で夏だけ、なんか文字から季節より中華的なイメージを感じるようになった。多分、夏侯惇とかのイメージが前に出てる

icon

SharpのVR HMDどうなったんだっけと思ったけど、2024年夏か。
夏、ちゃんと来るかな?
https://k-tai.sharp.co.jp/dash/lp/vr/

シャープ VR Glass 商品紹介サイト:シャープ
Attach image
icon

Gaussian splattingすごいなぁ。雑にちょっとスキャンしただけでも、スキャンした角度からは写真かもって位に見えるし、それが3Dなので回転してみれる。
まぁ雑スキャンだから回転すると粗が出るけど。
これが、iPhone13でScaniverse使うだけで出来ちゃうからなぁ

icon

自分の中でのEdgeは、ちょっと読むのに元気がいるwebの記事を読み上げるアプリという位置づけになった

icon

今年もこれから、世界のどこかで旱魃し、別のどこかで洪水が同時に発生するんだろうか

icon

カカオ豆も不作、オリーブも不作、オレンジも不作

icon

松屋のポーランド風ミエロニィハンバーグ、うまい。食べた事のない味感はそこまででは無いけど、それでも普通の良くあるハンバーグソースではない味。
バターライスって話だったけど、テイクアウトの場合バター乗っかってないかも?溶けちゃったって感じでも無かったのが気になる。
胡椒もうちょっとかけて欲しいな

icon

なお、Unity Editor上であれば、Windowメニューから起動できる UniTask Tracker で Enable StackTrace をONにして実行することで、今実行中のUniTaskについて、呼び出し関係のスタックトレースを表示できるようです。
UniTask 2\.x を使った堅牢な非同期処理への移行ガイド \#C\# \- Qiita
UniTask TrackerでStacktrace見てみたけど、結局UniTask内部のstackが省かれるだけで、エラーの発生行が分からないのは変わらんかった・・・

それはそれとして、この記事はUniTask分からんけどたまに使われてるプロジェクトを触る自分としては、まとまってて助かる。

Web site image
UniTask 2.x を使った堅牢な非同期処理への移行ガイド - Qiita
icon

DMMブックスのセール、なんか買う気しないなぁ。
日替わりで当日セール対象が分かるのって、毎日チェックするの面倒だし、チェックするの忘れてガッカリするし、1作品だけだから大抵は興味のないやつでガッカリするし、良い施策じゃないと思う。
今のところ毎日DMMブックスにがっかりする施策になってるし、潜在的に印象悪くしてそう。

icon

クレジットカードの支払い、5月に引き落とされる分は割と低く抑えられたと思ったけど、4月引き落とし分の方がもちっと低かったか。
けど、結構消費が多かったのが続いてたけど、この2ヶ月は低めに出来てるのでよかった。

icon

【SE06】機能・観点マトリクス \- OPEN TONE Labs

以前、そこそこ網羅的なテストケースを書き出す必要があった時、ここのテスト観点表を参考にして、また見たくなったから探し出した。
んだけど、今見るとあんまり参考になる感じがしないな。
多分、今のシステムがwebじゃないからだろうなぁ。

icon

UniTask使ってるからなのか、async/awaitだからなのか分からんけど、Object reference not set to an instance of an objectで単純なNullReferenceExceptionだと思うのに、Stack trace見ても発生行が書いてなくて、困ってる

icon

Windows Terminalで日本語入力するとフリーズする場合がある問題、まだ直って無いのか・・・
確かissueも作成されてたと思うんだけど、見当たらないな

icon

お腹減ってきた

icon

もっと分かりやすい記事もあるにはあるけど、分からなくなった時にどこだったっけってなっちゃうので・・・

icon

C#のdelegate, Action, Func, eventが、毎回よく分からなくなっちゃうので、改めて調べてまとめた。

---

public delegate int MyDelegate(int x, int y);
delegateは関数・メソッドのシグネチャをDelegate型として定義する。
定義したDelegate型の変数には、シグネチャが合う関数・メソッドを代入出来るので、定義に合う関数・メソッドが交換可能になる。
Action printSum = (a, b) => Console.WriteLine(a + b);
Func sum = (x, y) => x + y;
Action, Funcはあらかじめ定義されたDelegate型で、delegateのテンプレートの様なもの。
自分でDelegate型を定義しなくても関数・メソッドを代入できる変数を宣言出来る。
Actionは戻り値が無く、Funcは戻り値があるもので、引数が0~16個までの分がoverloadで定義済み。(17+17で34個かな)
戻り値や引数の型は、ジェネリックの型パラメーターで変数宣言時に指定できる。
public delegate void MyEventHandler(string message);
public class MyEventClass {
    public event MyEventHandler OnEvent;

eventは、delegate, Action, Funcのどれかを問わずDelegate型を使ってイベントハンドラーを作る物。

icon

耐えかねてエアコンつけたけど、そういえばまだフィルターの掃除してなかった、後でしないと

icon

NetlifyとかCloudflare PagesとかJamstack用の環境として紹介されるけど、別に静的ファイル生成してなくても、CSRなNuxtをデプロイしてもいいよね?
うまい事SSG出来る様に考えるの、慣れてないから大変なので・・・

icon
Web site image
【すごい】姫路市役所が冷房を25℃にした結果、残業時間が人件費換算で4000万円減→「やっぱり快適だと仕事捗る」
icon

startpage.com、いくつかの点で不便だったので残念ながらやめる事にした。ちょっと選択肢が無いというか、今探す気分じゃないので仕方なくGoogleに戻すか。

* startpage.comの検索結果を開いたままのタブが、時間経過でエラーとなり検索ワードが失われる
* 検索結果のリスティング広告が画面ロード後に二次読込されて、クリックしようとしてたコンテンツ領域が不意に下にずれてイラっとする

結構開きっぱなしのタブの検索ワードみて、当時何調べてたか思い出したりするから、困るんだよね・・

Attach image
icon

外歩いたのが良かったのか、松屋の豚汁で温まったのが良かったのか、ようやくマッサージの効果が出たのか分からんけど、やっと頭痛が治まってきた

icon

側頭筋なんでこんな凝ってしまうんだろうなぁ。指で触りながら目を動かしたり細めたりしても、側頭筋を使ってる感じもしないんだけど。

icon

この頭痛、顔の筋肉とくに側頭筋の凝りのせいだと思うんだけど、今回はマッサージしても良くならんなぁ・・・

icon

ひにゃりした日も続いたけど、暑い日は暑い・・・

icon

微妙に頭が痛い

icon

あーあ水分とってしまった・・・

icon

https://vket.com/cloudstore/asset/718
Vket Booth Marcheの商品登録、もっとちゃんとやるつもりだったけどなんだかんだでギリギリに
まぁ一応登録したから
:genbaneko_yoshi:

icon

痛みは無いまま、水ぶくれが大きくはなっている。
ダメになったであろう一番外側の皮を使って、恐らくは修復に必要な液で満たし集中的に修復するの、人体の再生能力もなかなかだなと思うなど。
まぁ面積にして1㎝ x 4mm程度の小さい火傷ではあるけど。

icon

何かしら画面を表示するのにデータを取得するならShow、それが一覧ならList、ファイルダウンロードするならDownload、検索して結果を得るならSearch位はあるけど、これ以外がGetになってしまう。

icon

web系のシステム、基本的にCRUDなのもあって、Read系のユースケースの命名にいつも悩む。
Getにしてしまいそうだけど、Getだと全然説明になって無い感じがする・・・
Create系は、そのままCreateだったりSubmitだったりUploadだったりConvertだったりと、ユースケースによってユースケースを表す単語が割とあるんだけど。

icon

なんか今日はひんやり

icon

レトルトカレーもうまいけど、なんか満足度が低いんだよなぁ。やっぱ具が無いからだろうか?

icon

火傷、発生時はめちゃくちゃ痛かったから長引くかと思ったけど、なんかもう痛くないな。多少膨れてるけど、触っても痛くない

icon

火傷したの、右手の親指の、爪を見てるポジションで左側面なので、マウスもキーボードもスマートフォンの操作も支障がなくて良かった。
キーボードは、スペースキーだけ左側面だけど、自分は左手の親指派なので大丈夫だった。
スマートフォンは親指の腹か右側面なので何も問題が無い。

スマートフォンくらいは控えた方が良いかもだけど、マウスとキーボードは使わんと仕事にならないからな

icon

冷やし続けるのを推奨してる記事もあるな・・・2時間とか半日とか。凍傷には気を付けろともあるけど。
0℃以下である保冷材や氷にずっと当ててると良くないのは分かるけど、ある程度は冷やした方がいいのか?
単に冷やすと痛みが和らぐから楽だよけど治癒に繋がるわけじゃないよってだけかもだけど。

まぁ、じっとしてる分には少し痛い程度になってきたし、どちらにせよ冷やすのはもういいか。
なんか買った時についてきた保冷剤たち、とりあえず冷凍庫に放り込んでおいて良かった。

icon

応急で15~30分ほど冷やして、その後は医療機関としてるwebサイトが多い。とはいえこの時間に医療機関は無理だけど。
冷やした後はガーゼやタオルで覆うとしてる記事もあるし、やっぱ冷やし続ける感じでは無さそうか。

icon

保冷剤あったから冷やしてみると、痛みが増してしまった。最初とは違って保冷剤離してから10秒位で痛くなってくる。
保冷材に当てたら即痛くなくなる。
1秒だけ当てて離しても、やっぱり10秒位で痛くなってくる。
めちゃくちゃ痛いを耐えて1分くらいしたら落ち着いてきた。
これは多分もう冷やさない方が良さそうか?

icon

保冷剤3個で冷やしてようやく、めちゃくちゃ痛いから痛いになってきた。ずっとあの調子で痛かったらどうしようかと。
けど、3個目の保冷剤が温くなっても、保冷剤で指包んでると多少は和らぐから、しばらく温いままだったんだけど、冷やしすぎても痛いとかあるんかな?
もう1個保冷剤あればもう1回冷やしてみたいけど、あるだろうか

icon

鉄板に触れてしまい火傷・・・めちゃくちゃ痛い
冷凍庫にあった保冷剤で冷やしてるけど、冷やすのやめたら2、3秒で痛みが急上昇してくる