ラベル プログラミング の投稿を表示しています。 すべての投稿を表示
ラベル プログラミング の投稿を表示しています。 すべての投稿を表示

2022年1月27日木曜日

azarakとzomelak

 現在のWindows 10/11の標準コンソール(conhost.exe)やWindows Terminal、その他の端末エミュレーターソフトやコンソールアプリケーションの大半がANSIエスケープシーケンスにより画面制御が行える。

 ANSIエスケープシーケンスは、Escコードを先頭にASCII文字からなる簡単なものなので、これを文字列に含ませることで、カーソル制御や表示属性の変更が可能だ。

 WSLのLinux(bash)やPowerShell(Windows PowerShellもPowerShell Coreのどちらも)も文字列にEscコードを埋め込むことができる。しかし、残念なことにcmd.exeの内部コマンド(cmd.exeが処理するコマンド)のechoやWindows付属のコマンドには、エスケープシーケンスを表示できるものがない。

 というわけで、エスケープシーケンスを表示できるコマンドを作って見た。cmd.exeとbashに組み込みコマンドでechoがあるので、さすがに同じ名前じゃまずい。「エコ(ー)」が2つなので、アザラク(azarak)とザメラク(zomelak)にした。

2021年11月1日月曜日

PowerShellで「文字」と「文字コード」を扱う

 エンコードされた文字のコードを調べたい、あるいは文字コードから文字を調べたいということはよくある。そういう場合、専用ツールを使う手もあるが、Windows PowerShellでも文字と文字コードの変換は可能だ。

 ただ、PowerShellは文字の扱いについて微妙なのと、ファイルのエンコード、デコードは可能だが、文字列や文字を対象にしたエンコード、デコードのコマンドを持っていないため、ちょっと分かりづらい。

 インターネット検索で「PowerShell 文字コード」や「PowerShell 文字コード変換」を調べても、ファイルの文字コード変換の方法や文字化け解消の方法しか引っかからない。

 そこで、PowerShellでの文字と文字コードの扱いについて解説ページを作ることにした。

2021年10月6日水曜日

「JavaScriptで全角数字を半角数字に変換する」正しい方法

 「JavaScriptで全角数字を半角数字に変換する」でGoogle検索するとヒットするほとんどの方法が全角文字の文字コードから65248(0xFEE0)を引くというものだ。こういうコードを平気で書いているところを見ると、あまりプログラミングに詳しくない人が書いたものだと思われる。ここまで来ると「ノイズ」でしかない。あまりにハラがたったので、ちゃんとした方法を書くことにした。

2021年3月8日月曜日

githubにVisual Studioのプロジェクト(ソリューション)を置くときに最低限必要なファイル

VS2019のソリューション再現に必要なファイルの図

 先日、作成したBluetooth Beacon受信プログラムをgithubにアップロードしてみた。たいしたプログラムでもないし、アルゴリズムの話しかしてないので、C#のソースコードのままでもいいかと思ったが、利用者の利便性を考えるなら、こちらで開発したのと同じようにVisual Sutdioのソリューションとしてそのまま読み込めるものがいいだろうと、必要なファイルを探ることにした。

2021年3月6日土曜日

2021年3月1日月曜日

micro:bitで玄関チャイムをWindowsのトースト通知に変換

 micro:bitでBeacon通知をするプログラムを作ったのは、実は、玄関のチャイムの音を「視覚化」するためだった。仕事部屋で音楽などを少し大きな音量で聞いていたり、ヘッドホンを使っていると玄関チャイムの音が聞こえないことがある。なので、micro:bitで音を検出して、これをBluetooth Beaconで通知、受信したWindows側のプログラムでトースト通知を行えば、視覚化が可能だろうと考えた。

2020年12月22日火曜日

C#でコードを書く前にPowerShellで試行錯誤する

 どんなプラットフォームでもAPIの数は膨大で、全部を知っているという人はあまり多くはないと思う。となると、開発時には、APIを動かして挙動を確認すると必要がある。こういうときにはテスト用のコードを作るが、開発中のアプリケーションがある程度の大きさになってくると、テストコードを組み込んで動かすのも大変なので、独立したテストプログラムを作らねばならない。しかし、これは意外に面倒だ。というのも、世の中には込み入ったパラメーターを要求するAPIがある。また、どのAPIを使えばいいかははっきりしているが、与えるパラメーターが膨大で、正しい組合せがなかなかわからないといったこともある。サンプルコードがあれば、このあたりもかなり解決するのだが、世の中そうそう、うまくはいかない。また、APIの返すデータやオブジェクトが大量で、そのうちどれを選べば良いのか、そもそも、正しいものを選ぶための条件は何かというのがまったく分からないことがある。