アジョブジ星通信

進捗が出た頃に更新されるブログ。

NuGetにおける「dotnet」とか「.NETPlatform」とかいうやつ

CoreTweet からフォークして、通信部分の疎結合化をした LibAzyotter を DNX でビルドできるようにするなどしていました。

その中で出会った新たな NuGet のフレームワーク設定「dotnet」についてまとめておきます。

dotnet, .NETPlatform とは

dotnet は CoreCLR 向けアセンブリのターゲットです。詳しい経緯はよくわかりませんでしたが、 NuGet のコミットログを見る限り、もともと「core」だったものが、現在の「dotnet」になり、多くのフレームワークに対応する包括的な存在になりました。

「netcore」というのもありますが、たぶん WinRT とか UWP 用です。でもやってることは同じなのかな?

互換性のあるプラットフォーム

9/16 現在、以下のプラットフォームで「dotnet」のライブラリをインストールできます。たぶん。また、現在のところ「dotnet」は「dotnet50」を指します。
ソース: https://github.com/NuGet/NuGet3/blob/dee69ffe7153c5230d6d9ddb936d6ec55ec4f00a/src/NuGet.Frameworks/DefaultFrameworkMappings.cs

  • netcore50
  • net46
  • net45
  • dnx451
  • sl5
  • wp8
  • dnxcore
  • netcore
  • uap
  • win
  • wpa
  • Xamarin 系

このようにほとんどのプラットフォームをカバーできる PCL のような存在ですが、基本的に dotnet をターゲットとするライブラリをつくろうとすると、 System.Runtime に依存することになります。このパッケージは dnxcore50, net46, netcore50 と Xamarin 系にしか対応していないため、ターゲットにできるのは DNX, UWP, .NET 4.6 ということになります。

まとめ

これから登場するプラットフォームには dotnet ですべてまかなえる時代になると思いますが、 .NET 4.5 以下, Windows8 などへの対応は今まで通り続けなければいけなさそうです。

文化祭のためにつくったタイピングゲーム

文化祭お疲れ様でした。3年生なのでクラスの出し物もないので、初めて高校の文化祭をちゃんと回ってみました。今年は去年よりどこもクオリティが高かった印象です。我がコンピュータ部を除いて。

今年はタイピングゲームを作りました。本当はタイピングしながら陣取り合戦でもしようと思ってたのですが、夏休みを棒に振った挙句 AO 入試の準備をしたりしていたので、結局「相手が入力中の文字が見える」というハンデ付きネットワーク対戦タイピングゲームになりました。

ソースコードGitHub に置いておきました。バイナリは SignalR 系ライブラリのライセンスをどう扱ったらいいのかわからない(調べるのがだるかった)ので配布していません。 VS2015 があればビルドできますので。

ローマ字自動生成がとても大変でした。小並感。

ついでに去年のもよろしくお願いします。

一昨年のは git で管理していなかったので zip で置いておきます。
http://junk.azyobuzi.net/ShinkeiYatsu.zip

最新のMonoを使いたい人ための mono-snapshot

f:id:azyobuzin:20150827030127p:plain

こんばんは。課題やってない、文化祭のゲームもつくってない azyobuzin です。やはりブログは結論を先に書いておくほうが良いと学んだので無駄な経緯的前説はおいておいて本題をばばっと書いておきます。

ググればわかる基本的な使い方

http://www.mono-project.com/docs/getting-started/install/linux/ci-packages/ に各ディストリビューションでの mono-snapshot パッケージのインストール方法が書いてあります。 Debian リポジトリを試した結果、 2015/6 からの成功したビルドと昔のがぽつぽつ入っている感じです。

どれかひとつでもインストールすると

$ mono-snapshot
This script will help you to set up your environment to use a
snapshot package of Mono. To use it, run:

	. mono-snapshot APP/VER

You have the following possible combinations of APP/VER:

	mono/2015.08.22+02.26.20
	mono/20150501052837

Calling APP without specifying VER will load the latest version

といった具合にバージョンが選択できるようになります。表示にしたがって . mono-snapshot mono/VER を実行すると

$ . mono-snapshot mono/2015.08.22+02.26.20
[mono-2015.08.22+02.26.20]$ mono --version
Mono JIT compiler version 4.3.0 (tarball Sat Aug 22 02:46:14 UTC 2015)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
	TLS:           __thread
	SIGSEGV:       altstack
	Notifications: epoll
	Architecture:  amd64
	Disabled:      none
	Misc:          softdebug 
	LLVM:          supported, not enabled.
	GC:            sgen

このように指定したバージョンの mono が実行できるよう Path が設定されます。. をつけなければいけないのはこの先で説明するように、実行中のシェルの環境変数をいじりたいからです。

以下細かい話。 Debian 版でしか試していません。

続きを読む

気持ちを言葉にする練習

昨日「勉強するぞと意気込んで始まった高校最後の夏休みも残り半分を切ったにもかかわらず、総勉強時間がいまだ 1 時間いってるのかどうか疑問な今日このごろ」なんて書きましたが、そもそもなんで勉強する気が起きないんだという話。頭で考えて書いているかもしれないので本心が自分でもわからないですが、書いてみる練習。練習。

続きを読む

Windows プリインストールマシンの Windows を何とか元に戻した話

うまいタイトルが思いつかなかった許してほしい。

勉強するぞと意気込んで始まった高校最後の夏休みも残り半分を切ったにもかかわらず、総勉強時間がいまだ 1 時間いってるのかどうか疑問な今日このごろ、 VivoBook S300CA 通称「クソマシン」に Windows10 を入れようとしてごにょごにょした話をします。

ライセンス死亡事故

Ubuntuデュアルブートにしたまでは良かったのですが、何を思ったのか元から入っていた Windows8.1 を消し去り DreamSpark の "Windows Embedded 8.1 Industry Pro" を入れました。この時点で新規インストールをかけてしまって死亡してしまったわけですが、甘く見ていた僕はその後 Windows10 をその上に新規インストールしました。アップグレードインストールしないとライセンス認証通らないのを完全に忘れていました。てへっ

続きを読む

cargo package で .gitignore 対象のファイルを含める方法

A. 不可能

理由

cargo package の動作は、 Cargo.toml のあるディレクトリが git リポジトリ内なら、そのリポジトリでインデックスされているファイル、および untracked(git add も ignore もされていない)なファイルの中から必要なファイルを検索します。これは include や exclude が指定してある場合も同じで、 git から見えているファイルの中から include するため .gitignore に指定してあるファイルを入れることができません。泣ける。

参考
https://github.com/rust-lang/cargo/blob/b6ad6fb47deb49b82b82e65c73590c6713a3d789/src/cargo/sources/path.rs#L125