Author Archives: admin

Linuxでdotnetをやってみる

インストール

いろいろなインストール方法があるようだが最も原始的なshファイルをダウンロードして実行する方法で行う。

これで~/.dotnet/にインストールされる。しかしパスが張られないので自分でやる必要がある。

これで使えるようになった。使えるようになったかテスト。

sdk,runtimeともに6.0.1がインストールされた。sdkは開発ツール、runtimeは実行環境。

コンソールアプリをつくる

つれくた。Program.csはC#のソースファイル、dntest.csprojはプロジェクトファイル。

実行してみる

できた

GUIアプリをつくってみる

WindowsではWinFormを使ったGUIアプリをつくれるが、Linuxではつくれない。そこでavaloniaというライブラリを利用してGUIアプリをつくってみる。まずはavaloniaテンプレートをインストールする必要がある。このテンプレートがあると新規アプリがつくれる。

つくれた。axamlファイルはウインドウの定義ファイル。

実行してみる

ランタイムの5.0がないため実行できないようだ。先程確認したように、今は6.0しかインストールされていない。

5.0をインストール

SDK、ランタイムとも5.0がインストールできた。

再び実行してみる

エラーが出てしまった。ここでは以下のようにして実行できた。

どうやら日本語環境だとエラーがでてしまうようだ。

RESTとは何か

RESTがいつもわからなくなるので覚書

一行回答

HTTPプロトコルで単純なデータのやりとりのこと

目的

ステートレス

ステートレスとはURIのレスポンスがいつも一意で他の情報によってレスポンスが変わったりしないこと。よってクッキーが関わるとステートレスではない。

キャッシュできるように

クライアントからは見えないところで最適化できるようにするためにキャッシュできるようになってること。URIにセッション情報を含めるとできなくなるのでだめ。セッション情報とは個別のクライアントに設定される値のこと

それ以外

RESTSOAPなどとは違ってプロトコルではなくざっくりとしたスタイルのこと

何が嬉しいか

クライアントは難しいことを考える必要なく簡単にアクセスできる。

/usr/bin/env python3って何?

前提知識

スクリプトの最初の行の#!で始まるものはshebangと呼ばれる。

スクリプトを書いて、実行するときにシステムによってこの行が読まれ、この実行ファイルで当該スクリプトを実行する機能がLinux系のOSにはある。

pythonで実験

以下のファイルを作成 hello.py

実行してみる

python3を明示式に指定して実行すればちゃんと実行できるが、そうでない場合はbashとして実行されている事がわかる。

ここでshebangを加えてみる。

実行

ちゃんと実行できる。

pythonの特殊解釈

しかしpythonのスクリプトではshebangが/usr/bin/python3ではなく、/usr/bin/env python3と記述されている。

/usr/bin/envは引数を起動するだけのプログラムでオプションで環境変数を変更する機能がある。Linuxがこのshebangを読むと/usr/bin/env python3が起動してenvはをPATHなどから探してpython3を実行するものと思われる。

python3ではWindowsとの互換性のために/usr/bin/envがvirtual commandと解され、PATHからpython.exeを見つけるようになるのだと思う。

Windowsの場合は、python.exeの他にpy.exeがシステムディレクトリにインストールされているので、まずpy.exeがスクリプトのshebangを見て適切なpython実行ファイルを探して実行するものと思われる。

githubでソースコードの一部をハイライトするリンクを作成する

ソースを表示する

例:https://github.com/ambiesoft/SceneExplorer/blob/master/src/docinfodialog.cpp

行の左側の・・・をクリックして[Copy permalink]を選択してコピーする

例:https://github.com/ambiesoft/SceneExplorer/blob/dd0d9a261226a23a0d35e9839009e61609216e92/src/docinfodialog.cpp#L36

URLの最後のフラグメントで範囲を指定する

例えば10行目から15行目なら#L10-L15になる。

例:https://github.com/ambiesoft/SceneExplorer/blob/dd0d9a261226a23a0d35e9839009e61609216e92/src/docinfodialog.cpp#L10-L15

Visual Studio Codeで拡張機能がインストールできない

症状

Live Serverをインストールしようとする

しばらくたって失敗する

直し方

設定フォルダC:\User\<ユーザ名>\.vscodeを削除すると直った。
Win+Rでファイル実行ダイアログを表示し%USERPROFILE%\.vscodeと入力するとエクスプローラで開くことができる。

原因考察

原因は不明だがインストーラーから実行した場合にパーミッションがおかしくなっていることが考えられる。

Visual Studio 2022で子プロセスのデバッグ

VS2022になってIDEが64bit化され、大きなプロジェクトでも不正終了しなくなった。そこで子プロセスのデバッグもやりやすくなったと思うのでその紹介。

拡張をインストール

Microsoft Child Process Debugging Powertoolをインストール

有効にする

プロジェクトを開いて子プロセスのデバッグを有効にする。

ブレークポイント設定

プログラムの最初の方にブレークポイントをセットすれば、デバッグ対象プロセスから新規生成されたプロセスでブレークポイントがヒットする。もちろん同じ実行ファイルの場合。

プロジェクトが違う場合

違うプロジェクトの実行ファイルを起動する場合は、起動元のプロジェクトが.NETならまず初めにプロジェクトの設定のデバッグ欄でで、「ネイティブコードデバッグを有効にする」をチェックする。

次に拡張機能の設定で2番目のプロジェクトタイプを設定する。

Visual StudioでThe ‘Global Hub Client Package’ package did not load correctly.

ソリューションを開くと以下のようなメッセージボックスでエラーが出て、ビルドができない。

原因と対策

おかしな環境変数が設定されているとこうなる。msys2などから起動した場合や、msys2経由のファイルマネージャから起動した場合は環境変数を引き継ぐと思うので、引き継がないようにする。

simple menu

簡単なWin32メニューのポップアップ

オーナードローを有効にしてメッセージを処理する

ソースコード