Home About
C# .NET で Task を使って非同期に処理を実行(その2)

なんとなく Task の使い方がわかったので、 今回は Javaの newSingleThreadScheduledExecotor() の ExectorService と似た作動をするコードを C# で実装してみます。 実行するタスク(アクション)は Fire-and-forget 形式。

» Read More
C# .NET で Task を使って非同期に処理を実行(その1)

最終的には Javaの SingleThread の ExectorService を C# で実現したい。 今回はとりあえず Task を使った非同期の記述方法を軽く調べてみる。

» Read More
C# .NET で ndjson をパース System.Text.Json 編

前回のエントリーで Newtonsoft.Jsonを使って json のデシリアライズ処理をしたのだが、標準の System.Text.Json で普通にできたのでその方法を記録しておく。

» Read More
C# .NET で ndjson をパース Newtonsoft.Json 編

Newtonsoft.Json を使って ndjson をパースします。

System.Text.Json を使って ndjson をパースはこちら

» Read More
Surface GO Type Cover の導入

Android 向けに開発している手書きアプリを Surface GO/Pro に移植しようと思いたち購入した Surface GO 3。 当初は Windowsタブレットとしてキーボードなしに使えるアプリにするつもりだった。 だから、Type Cover は購入しないで、既存の Bluetooth キーボードで間に合わせてきた。

Surface GO Type Cover

» Read More
Vivaldiにより ブラウザのテキストエリアで Emacs キーバインド を使いたい問題が解決した

以前のエントリー ブラウザのテキストエリアで Emacs キーバインド を使いたいで、Ctrl + N がブラウザで新規ウインドウを開くに固定されていて困る、という話を書いたのだが、Vivaldi ブラウザを使えば問題がないことが判明。

Vivaldi は設定で、Ctrl + N を無効にすることもできるし、 そもそもそのショートカット無効設定をしなくても、Ace をテキストエリアに使用すれば、 Ctrl + N正しく カーソルを次の行に移動してくれる。

ありがとう Vivaldi! このブラウザのおかげで、ついに Ctrl + N の苦しみから解放された。

» Read More
dotnet コマンドでつくる WPF Application HelloWorld! その3 別プロジェクトの参照

WPFアプリケーションを Visual Studio を使わないで、dotnet コマンドとエディタだけでつくる覚え書き。

前回は、ユーザーコントロールを同じプロジェクト内で作成した。 これを今回は、別プロジェクトとして作成し、それをメインのプロジェクトから参照する形にした。

WPF-1

» Read More
dotnet コマンドでつくる WPF Application HelloWorld! その2

WPFアプリケーションを Visual Studio を使わないで、dotnet コマンドとエディタだけでつくる覚え書き。

前回は、MainWindow に直接 TextBlock を配置して Hello World! していたが、 今回は、ユーザーコントロールを経由して Hello World! する。

WPF-1

» Read More
dotnet コマンドでつくる WPF Application HelloWorld! その1

WPFアプリケーションを Visual Studio を使わないで、dotnet コマンドとエディタだけでつくる覚え書き。

WPF-1

» Read More
dotnet コマンドでつくる コンソールアプリケーション, JSON Reader

コンソールアプリケーションを Visual Studio を使わないで、dotnet コマンドとエディタだけでつくる覚え書き。

» Read More
Windows11 + WSL で AsciiDoc をビルドする環境をつくる

Windows11 の WSL (Ubuntu) で asciidoc コンテンツを HTML, PDF に変換する環境をつくる備忘録。

» Read More
FreeWnn + tamago-tsunagi で Chromebook の Linux 環境で日本語入力する

ARMのCPUのChromebook や M1 Macbook でも Wnn 使いたい。 wnn8 はうごきそうにないので、FreeWnnが使えるか試した。 ただし、今回テストしたのは Intel CPU の Chromebook なので、その点はあしからず。 ARM の Chromebook の Linux 環境でもこの方法が使えるかはわかりません。 (debian buster の freewnn-jserver https://packages.debian.org/ja/buster/freewnn-jserver のページに arm 用パッケージ存在しているからたぶん大丈夫とは思う。)

» Read More
画像分類 PyTorch + fastai 覚え書き

画像を分類が PyTorch + fastai で簡単にできることがわかったのでその覚え書きです。

PyTorch + fastai だけでなく、 Lobe( https://www.lobe.ai/ ) や Google Vision AI にしてもそうですが、 無料で画像分類を試すことができます。 もう、この程度のことでは、誰も驚かない時代になった。

» Read More
Ubuntu 20.04 server + GTX 1060 で PyTorch + fastai 用機械学習環境の構築覚え書き

Lobe( https://www.lobe.ai/ )の紹介記事を読んでいて、 ここまで画像分類が簡単になっているんだと驚く。 再び画像分類を自分でも試したくなり、取り急ぎ GPUで機械学習できる環境を構築した。 その備忘録です。

» Read More
実験用 Windows 11 環境のために BIOSTAR J4105NHU を導入

AMD A10 7800 CPU と GA-F2A88XN-WIFI マザーボードを実験用に使ってきたが、Windows 11 対象外になってしまった。 今手元にあるリソース(ケースとか電源とかメモリ)を活用しつつ、もっとも安直に Windows 11 をインストールして使えるものとして BIOSTARのオンボードで Intel J4105 が搭載されている マザーボード J4105NHU を導入しました。

» Read More
opencv4nodejs インストール備忘録 / Ubuntu で使用 OpenCV をソースからインストール

本当は macOS で opencv4nodejs を 使いたいのだが、うまくいかない。 そこで、 Ubuntu 20.04 上で OpenCV 4.5.3 をソースからインストールした状態から opencv4nodejs をインストールして使うことができたので、その作業記録です。

» Read More
Windows + WSL と Chromebook のターミナル日本語入力設定覚え書き

Windows + WSL とか Chromebook + Linux(crostini) での Linux 側において、 日本語入力の設定とか、切り替えキーのホストOSとのバッティング回避とかが面倒なので、 もうそっち、つまり OSにパラサイトしている Linux 側は基本英語のみで使い、 日本語が入力したいときは emacs + wnn を使うことで運用してきた。

しかし、ある程度の分量を、複数の日本語テキストファイルで扱う場合、これでは困ることが増えてきた。 やはり、ターミナルで普通に日本語が使いたい。 とりあえずは、その手の場合は mac を使うことで済ませてきたが、 そのためだけに mac を使うのも面倒。

それで調べてみると、案外簡単に日本語がターミナルで扱えることが判明。

» Read More
pandas, Excel + VBA からの脱出

pandas が Excel + VBA の代わりとして使える可能性があるらしい。 Jupyter Notebook と併用すれば、インタラクティブに処理結果を確認しつつデータ操作できるので、確かにこれは便利。

MacList

こんなエクセルデータがあったとして、これを pandas で操作していく覚え書き。

» Read More
macOS の open コマンド相当のコマンドを WSL でも使えるようにする

Windows 11 の WSL での話です。 macOS の open コマンド相当の機能が使いたいのであれこれ調べた結果を備忘録として書き残します。

» Read More
Surface GO 3 セットアップ顛末

まだ、S モードを解除して、更新プログラムをインストール、WSL をインストールしたところです。 Surface GO 3 の第一印象を書き留めておきます。

» Read More
Windows 11 WSLg キーボードレイアウトを US に設定する

Windows 11 の WSL では、Linux アプリも GUI に対応したので、さっそく Firefox を使ってみた。 sudo apt install firefox して firefox で起動。 普通に使えます。 ただ、このマシンは キーボードレイアウトが US なのに、日本語キーボードとして扱われる。 もちろん、Windows 11 上では普通に US レイアウトのキーボードとして設定されている。

» Read More
WSL2 で Wnn8 を使う

以前に NUC に FreeBSD 12.2 をインストールして それを Wnn8 サーバにした というエントリーを書いた。今回これを Windows 10 WSL2 に移行したので、その備忘録です。 Wnn8 は WSL2(Ubuntu 20.04 LTS) 上で動きます。 インストールしただけでは、jserver, dpkeyserv が自動起動しないので、そこを手当てする必要がありました。 クライアントは emacs で使う tamago-tsunagi です。 X11用のクライアントは使っていません。

» Read More
Alacritty を Windows 10 でも使用

Ubuntu で使っている Alacritty を Windows 10 でも使いたいと思い調べた。普通に対応していた。 WSLのシェルとして使うことも当然できる。

» Read More
GA-F2A88XN-WIFI に Windows 10 をインストール / お使いのPCに必要なメディアドライバーがありません

諸事情により 今度は Windows 10 を GA-F2A88XN-WIFI にインストールすることになった。 Ubuntu では、Bluetooth の作動が不安定 というエントリーを書いたが、 Windows 10 では、OSインストール直後は Bluetooth の認識すらされなかった。 ただし、Intelのサイトから Intel Dual Band Wireless-AC 7260 + Bluetooth 7260HMW のドライバをダウンロードしてインストールしたらすべて問題なく作動した。

それより、今回は「お使いのPCに必要なメディアドライバーがありません」問題で Windows 10 のインストールに半日以上費やすことになったので、その備忘録です。

» Read More
スターバックスコーヒーのコースターの正規品がほしい

starbucks-coffee-coasters

左が最近メルカリで購入したもの。 右が 20年ほど前に自分で購入した本物。 入手してから気づいたのだが、これはどうもレプリカ・・・というか偽物な気がします。 本物か偽物か確認しようがないのですが。

落札時には偽物の可能性を考えたことがなく安易に落札、ちょっと残念に思っています。 使い勝手は問題ないのですが。

» Read More
kotlin script が便利 Javaのライブラリも使える

kotlin が気軽に使える kotlin script 便利です。 インストール方法や使い方の詳細はこちら Kotlin Scripting Examples: kotlin-main-kts usages をご覧ください。

kotlin 関連のインストールがされている前提ですが、以下のように kotlin script を実行できます。

» Read More
Node.js + Underscore でcountif を使って2つのリストから重複した要素のみのリストを作り出す

二つのリストから countif をつかって 両方のリストに重複して含まれている要素のみを取り出したリストをつくる.

これを Node.js + Underscore で実装した。(覚え書き)

» Read More
Excel の countif 関数的なものをGolangで実装した

二つのリストがあり、 (1)両方のリストに含まれているもの、 (2)はじめのリストにだけ含まれているもの、 (3)あとのリストにだけ含まれているもの、それぞれを計算する必要が発生。 エクセルでそれを行うには countif を使う。

こんな風に:

Excel

これを Golang で実装した。(覚え書き)

» Read More
関数型オブジェクト指向プロラミングを Golang に翻訳する

関数型オブジェクト指向プロラミングを JavaScript に翻訳する というエントリーを2年前に書いた。 Haskell のオブジェクト指向的なコードを JavaScript に書き直したエントリーだが、今読み返してもいまいちピンとこない。 ならば Golang で書き直してみよう。 Golang であれば、JavaScript と違って型を明示的にコード中にかけるので、わかりやすくなるのではないか?

» Read More
Golang や Kotlin で関数の型を定義する

Go言語では first class functions とやらで、関数はファーストクラスオブジェクトであり値のように使うことができる。 そして、この関数の型(どんな型を引数にとってどんな型を返す、という情報)に名前をつけることができる。

» Read More
ラムダ(式)を javascript と kotlin script と golang で使う

パーサーコンビネータについて調べていて、 そもそもその元になる概念としてコンビネータがあることを知る(いまさら?!)。 つまり、パーサーコンビネータはいろいろあるコンビネータの中の一つ。 そして、いろいろあるコンビネータの中でもっとも有名なのが Y コンビネータとか Z コンビネータらしい。 そして、コンビネータを構成するパーツの一つがラムダ(式)とか無名関数であると。

名前付き関数はいつも使っていて、そして名前無し関数(無名関数)も結構使う。 では、ラムダ(式) と無名関数ってイコールじゃないの? と思って調べるもよくわからない。

Wikipedia によると: 「プログラミング言語における無名関数(英語: anonymous functionあるいはnameless function)とは,名前付けされずに定義された関数のことである.無名関数を表現するための方法には様々なものがあるが,近年主流となっているのはラムダ式による記法である.」 ということで、ラムダ式(という概念)をプログラム言語で表現するときに使うのが無名関数(または匿名関数)と考えて問題なさそう。

パーサーコンビネータや Yコンビネータを理解するための最初の一歩としてラムダ式を把握する。

» Read More
ExtendScript から https にアクセスする

ExtendScript には Socket があるので、http のように SSL でない ウェブリソースにアクセスすることができる。 しかし、SSL 化された https のウェブリソースにはアクセスする方法がない・・・と思っていたのだが、 なんと macOS では curl を経由すれば簡単にできることが判明した。

Windowsの場合も VBScript を経由することで実現できるようです。 詳しくは restix をご覧ください。

wttr.in with vscode

» Read More
ExtendScript で Underscore.js を使う(その2) webpack 編

ExtendScript で Underscore.js を使う(その1) rollup 編 で rollup + babel + Underscore.js を試したのだが、 rollup を webpack に差し替えての Underscore.js を試したのでその備忘録。

» Read More
ExtendScript で Underscore.js を使う(その1) rollup 編

Node.js で ExtendScript する話(パート3) ES6 Javascript 記述を使いたい で node.js を使ってモジュールを解決しつつ、アロー関数や const let などのES6 Javascript 記述を使って書けるようになった。 そこで、次に Underscore.js を利用した ExtendScript をコーディングすることを考えます。

実のところ単に Underscore.js を使うだけならば、ExtendScript 標準の @include ディレクティブを使うことで普通に利用できます。 しかしこの方法では、 (1)Underscore.js のファイルを常に本体のファイルとともに配布する必要があり面倒、 (2)Underscore.js を使う側のアプリケーションコードで、ES3レベルの Javascript しか記述できない、 という2つの問題があります。 Node.js + rollup + babel を使う方式でこの問題を解決しましょう。

» Read More
Node.js で ExtendScript する話(パート4) webpack アゲイン

Node.js で モジュールを使って ExtendScript するために

その後、さらに調べてみると、 パート1で不都合があった webpack で、オプションを適切に指定することで、 ExtendScript用のコードにバンドルできることがわかりました。

Node.js ではさまざまなツールの組み合わせが存在していて、自分の目的にあうツールがどれなのか・・・という。 アプリケーションコードを書く前段階での試行錯誤が半端ないですね。

» Read More
Node.js で ExtendScript する話(パート3) ES6 の Javascript 記述を使いたい

実のところ、 パート1パート2は、この ES6 の Javascript 記述で ExtendScript 用のコードを書くための前準備であった。

ここまでで、モジュールを使ってコードを書けるようになり、rollup により、それらのコードを一つのファイルにまとめるところまでできた。 あとは、このコードをいわゆるトランスパイラと呼ばれるコード変換ツールにより、ExtendScript として機能する Javascript に変換します。 このトランスパイラは定番の babel を使います。

» Read More
Node.js で ExtendScript する話(パート2)

パート1では、webpack を使って、モジュールを一つのファイルにまとめていました。 しかし、この方法では、webpack により、ExtendScript で実行できないjavascript記述が追加されてしまう不都合がありました。 そこで モジュールをひとつにまとめる機能を webpack の代わりに rollup を使って解決することにします。

» Read More
Node.js で ExtendScript する話(パート1)

Web関係のJavascript 開発では、Node.js を使って モジュールに分割して開発をしていく。 これを InDesign 用の ExtendScript でもできるようにしたい。 もちろん、ExtendScript にも @include 記述により、モジュールを使うことはできる。 しかし、その場合できあがったコードを配布するときに、依存しているモジュールファイルも一緒に渡す必要が生じる。 これを避けたい。配布時には単にひとつのファイルだけで完結したい。

» Read More
Golang, listFiles 指定のディレクトリ内のファイルまたはディレクトリを列挙する(改良版)

Golang で listFiles する方法 の改良版。

» Read More
Thinkpad X1 Nano 使用開始から 2ヶ月経過 / 今オーダーすると納期が来年?!

Thinkpad X1 nano

この夏、Lenovo で BTO のマシンをオーダーしたら納期が来年の予定になった、という記事がありました。 Reddit の r/thinkpad でも 納期が 2022年4月になっているという投稿があったので、半導体不足のせい? 自分の場合は、Thinkpad を 6月1日にオーダーして、当初は一ヶ月程度で納品という表示だったのですが、 途中で、納期が延びて 9月になっていた時期もありました。 しかし、その後また何度か納期表示変更があり、結局7月上旬に到着、 おおむね当初の納期見積りの通りでした。

» Read More
Golang, 名前付きタイプにメソッドを生やす

Golang では named type に対して method を生やすことができる。 これが Java などでクラスがあると便利だった機能の代替として使える。

» Read More
Golang, アイテムを日付でソートしたい

Golang でのソート処理をメモ。

» Read More
Groovy / Golang / Node.js, リストを n 個ごとに分割したリストのリスト(サブリスト)をつくりたい

このサイトのエントリーを全部取得してリストにして、それをたとえば10エントリーごとに分けてページネーションしたい、のような場合の話。 元のリストから n個ごとに分割したサブリストをつくりたい、というケースは結構ある。

» Read More
自宅回線を Rakuten UN-LIMIT から楽天光 に乗り換え

回線を ADSL から Rakuten UN-LIMIT に乗り換え からの楽天光への乗り換えです。 OCNモバイルONEを契約しているので、月額費用を比較すればOCN光を選択するところなのですが、 1年無料の3年縛りの楽天光キャンペーンに乗っかりました。 相手の策略に落ちた感がありいい気はしないのですが、光コラボレーションなので、時が来たらOCN光に切り替えるのもさほど苦労はなかろうと。

» Read More
InWin Chpoin Mini-ITX ケース レビュー

開発用メインマシンとしての Ubuntu サーバに Fractal Design の Define Nano S ケースを使っていたのですが、 集中できる環境づくりのための一環として机周りのものを減らすために、 もっと小さいケースに変更しよう!と思い立ち、InWin の Chopin にしました。

Chopin シリーズには Chopin と Chopin Pro があり Pro の方が付属電源の品質がよいので、そちらも 検討したのですが、日本では入手が難しいようです。 結局、入手が簡単な 普通の Chopin を購入しました。

InWin Chopin Case

Mini-ITX のマザーボード用で、この Chopin のように小さいサイズのケースはほぼこの製品一択のようです。 とても気に入ったので、後継機種が出るようにレビューを書きます。

» Read More
Golang, マップの使用例

ポケモンのタイプ別にポケモンリストを用意する例。 Golang の マップでそれを実装方法の備忘録。

» Read More
Alacritty と Solaraized Color と 行間調整

以前から使いたいと思っていた 高速なターミナル Alacritty を使いはじめました。 Ubuntu 標準のターミナルは、ウインドウのタイトルバーの高さが無駄に大きく気に入らない。 Alacritty はそこが適度に狭く、僅かな差ではありますが、標準のそれよりも作業用の領域を広く使うことができます。 タイトルバーに凹凸がなく単色になっているのも気に入っています。 タブ機能はないと思いますが、代わりに screen を使うので問題ありません。 導入設定を備忘用に記録しておきます。

alacritty-on-ubuntu-desktop

» Read More
Google Spreadsheet で 空の行を詰めて別の列に表示する方法

MS Excel で 空の行を詰めて別の列に表示する方法 で filter 関数が素敵というエントリーを書いたところですが、 Google Spreadsheet でも普通に filter 関数使えました。 filter 関数を使いたい、そして業務などで MS Excel 縛りがない場合は、 Google Spreadsheet を使いましょう。

filter-function

» Read More
MS Excel で 空の行を詰めて別の列に表示する方法

たとえばB列にポケモンの名前が入っているとする。 ただし、途中に空白行があるので、そこは詰めてD列に表示するにはどうしたらよいか?という問題。

ポケモン名リスト1

この問題の回答を検索してみるとこれらしい。

配列数式と index, small, row などの関数を組み合わせることで実現できるらしい。 なるほどわからん。

» Read More
Golang, listFiles 指定のディレクトリ内のファイルまたはディレクトリを列挙する

Golang でそれをする方法の備忘録。

改良版をこちらに書いた。

» Read More