Objectsが使えるようになるライブラリlinq.tjsを公開しました。ObjectsはC#の強力なコレクション操作ライブラリです。foreachすらないtjsではfor文を回すしかありませんでしたが、linq.tjsではより簡潔に複雑な処理を記述出来ます。吉里吉里2/Zどちらでも使えます。codeをダウンロードします。linq_generate.tjsを自分のプロジェクトフォルダに入れます。最新のScriptsEx.dllをダウンロードして吉里吉里と同じフォルダに入れます。以下のコードのようにlinq.tjsを読み込みます。以下のように使えます。表示される[/tjs]使い方はC#のLINQと全く同じです。簡単に説明すると次のように動作します。}が鬱陶しいのでlinq.jsを見習って文字列で指定できるようにしています。}”に変換するだけですが結構便利です。先の例は以下のようになります。=>,4,8,12,16,20[/tjs]さらに省略してYYY部分のみでも使えます。この場合は第1引数が_、第2引数が_2、第3引数が_3、...のようになります。=>,4,8,12,16,20[/tjs]引数の受け渡しtjsにはjavascriptと異なりレキシカルスコープがありません。functionの中で外にある変数が参照できずLINQを使う上で非常に不便です。selectやwhereなどコールバックを引数にとる関数では、通常の引数の後ろに渡された引数をそのままコールバックに渡すようにしています。以下の例ではargやcaptionとして引数を受け取っています。indexはここでは使っていませんが現在のインデックス番号です。渡すとLINQが使えるようになります。配列の場合はそれぞれの要素が順番に列挙されるだけです。toArray()を使うと列挙中のシーケンスを配列に変換できます。900]になる[/tjs]辞書の場合はkeyにキー、valueにその値が入った辞書配列として列挙されます。[/tjs]文字列の場合は先頭から1文字ずつ列挙されます。toString()でシーケンスを文字列に変換できます。strはSRGになる。[/tjs]Enumerable.extendToLINQを頻繁に使う場合、Enumerable.fromを毎回呼び出すのは面倒です。今のところ配列限定ですが、一度Enumerable.extendTo(Array);を呼び出せば配列からselectなどの関数を直接呼び出せるようになります。Objectsにある関数は全て移植済みです。Extensionsやlinq.jsなどから必要そうな関数を追加しています。Enumerable.generateEnumerable.matcheslinq.tjs独自の関数としてEnumerable.matchesを追加しています。TJSではRegExpクラスで正規表現を使えますが癖があっていまいち使いづらいです。Enumerable.matchesでは正規表現のマッチ結果を扱えます。表示される[/tjs]第1引数は使用する正規表現です。第2引数は正規表現の対象となる文字列です。このようにするとRegExp.matchesの結果が列挙されます。正規表現を使うのにfor文は必要ありません。吉里吉里ZではLanczos2,Lanczos3による画像の拡大縮小ができるのですが枚数が多いと非常に時間がかかります。GPU上で動作するように書き換えて高速化しました。ソースコード(github)現在の最新バージョンの吉里吉里Z本体にはLanczos拡縮の機能が含まれていません。(コードはdev_lanczosブランチにありますがマージされていません)このdllにはCPU版も同梱されているので単純にLanczosを使いたいだけの場合にも便利だと思います。何も考えずにPhotoShop等でリサイズするよりかなり画質よくなるので出来るなら使った方がいいです。速度的にはGTX770上でCPU版に比べて3~8倍速まで確認しています。画像サイズが大きくなるほど差が広がっていくと思われます。頑張ればもっと速くなりそうですが動作したので一区切り。それよりpng保存で時間かかるのが何とかならんものか・・・・・・。直矢C++/CLIのdllを作ってそこからC#を呼ぶ。ncbindも問題なく動作します。サンプルコード吉里吉里のウィンドウ(左上)とC#のウィンドウ(右下)の間でメッセージのやりとりができます。吉里吉里でもkwidgetsを利用するとUI含めて結構作れますが、本格的な物ならC#と.NETが使えると便利です。IronPythonなども同じく使えると思います。吉里吉里とC#のアプリを別々にするとプロセスが分かれて面倒くさかったのが色々解消される・・・・・・といいなあ。2015ではAnalyzeなるものを自作して独自のエラーや警告を出せます。#1でそんな話をしていたので試してみた。Analyzer必要な情報探すのにかなり時間かかった。検索するとほとんど英語で出てきて大変。上4つは貴重な日本語情報でまとまっているので読むべき。2015をインストールする。Studio拡張性ツールもインストール。SDKもインストールする。CodeFixProvicer.cs)が入ったプロジェクトが自動作成される。コードを書くDiagnositcAnalyzer.csで問題箇所を見つけてエラーや警告を出す。CodeFixProvider.csではその修正案を作る。詳しくは参考資料を参照。Visualizerとデバッグ実行のウォッチ式などを見ながら気合いで何とかするのがデフォっぽい。今日は調べるだけで力尽きたので、とりあえず非ジェネリックのIEnumearbleを見つけたら警告を出すAnalyzerを書いた。}}実行してみるデバッグ実行するとアナライザを読み込んだVisualStudioが起動されるのでそれでテストできる。完成したものを実際に使うには組み込むプロジェクトの「参照」を右クリックして「アナライザーの追加」からビルドされたdllを読み込む。警告が出て何か変なことを教えてくれる。警告メッセージが二重で出ているが原因は不明。WordPress.com.。