WMIでファイルやフォルダの作成・改名イベントを検出して、対象アイテムの名前に応じて処理を切り替えるサンプルを作成しました。
2021年6月28日月曜日
2021年6月27日日曜日
denoをどうにかしてデスクトップアプリとして使いたい
この投稿は雑談的な内容です。
最後まで読んでも、特に役に立つ内容は(多分)ありません。
タイトルの通り考えて試行錯誤した経緯を書いておけば、後々何かの役に立つ機会もありそうな気がしたという感じです。
最後まで読んでも、特に役に立つ内容は(多分)ありません。
タイトルの通り考えて試行錯誤した経緯を書いておけば、後々何かの役に立つ機会もありそうな気がしたという感じです。
2021年6月26日土曜日
2021年6月25日金曜日
deno infoを使用して依存ファイルをダウンロード
deno infoサブコマンドを使うと依存ファイルのURLが取得できます。
そのURLに対応するファイルをまとめてローカルフォルダに保存するサンプルを作成しました。
そのURLに対応するファイルをまとめてローカルフォルダに保存するサンプルを作成しました。
2021年6月24日木曜日
denoから全角文字を含むps1ファイルを作成して実行する
WindowsPowerShellがサポートする文字コードは限られています。
denoから出力できるファイル形式も、現状あまり選択肢はありません。
全角文字を含むps1を出力してPowerShellで実行するためのサンプルを作成しました。
denoから出力できるファイル形式も、現状あまり選択肢はありません。
全角文字を含むps1を出力してPowerShellで実行するためのサンプルを作成しました。
2021年6月23日水曜日
2021年6月22日火曜日
denoからPowerShellを使ってファイルの更新日時を揃える
TypeScriptからJavaScriptファイルに変換するプログラムを昨日投稿しましたが、変換前後のファイルの更新日が揃っている方が好ましいので、更新日時を揃えるだけのサンプルを作成しました。
2021年6月21日月曜日
denoが作成するcacheファイルを使ってTypeScriptをJavaScriptに変換する
denoはTypeScriptをJavaScriptに変換してから実行します。
その変換後のキャッシュファイルが必要になったので、抽出するプログラムを作成しました。
その変換後のキャッシュファイルが必要になったので、抽出するプログラムを作成しました。
2021年6月20日日曜日
deno compileで作成したバイナリファイルの終端側から切り出したファイルは同じバージョンのdenoに結合しないと動作しない
先日作成したサンプルでcompile後のバイナリファイルを、サイズを小さくした状態で保管できるようになりました。
しかし実行する際はcompileした時と同じバージョンのdeno.exeに結合しなければいけないようです。
しかし実行する際はcompileした時と同じバージョンのdeno.exeに結合しなければいけないようです。
2021年6月19日土曜日
deno infoをconsole.logで表示した場合とテキストファイルに出力した場合の違い
出力内容に対してRegExpを使用したら謎の結果になって、タイトルの件について確認したら違いがあることが分かりました。
2021年6月18日金曜日
TypeScriptでRegExpを使う方法
JavaScriptと同様に「'abc'.match(/b/)[0]」みたいな書き方をするとTypeScriptではコンパイルエラーになってしまいます。
回避する方法が以下。
回避する方法が以下。
2021年6月17日木曜日
(new Date)['get' + 'Month']()みたいな方法はTypeScriptではできないっぽい
JavaScriptではできましたが、TypeScriptでは駄目なようです。
ブラウザによって違うのかもしれませんが、少なくともDenoは受け入れてくれませんでした。
ブラウザによって違うのかもしれませんが、少なくともDenoは受け入れてくれませんでした。
2021年6月16日水曜日
webSocket通信が必要になる度に接続するサンプル
webSocketの同時接続数には制限があるらしいです。
1つの接続を各機能で共有してやりくりする方法を昨日投稿しましたが、各機能が必要としたタイミングで接続して用が済み次第 切断する、というバージョンも作成してみました。
1つの接続を各機能で共有してやりくりする方法を昨日投稿しましたが、各機能が必要としたタイミングで接続して用が済み次第 切断する、というバージョンも作成してみました。
2021年6月15日火曜日
ブラウザからwebSocket経由でdeno.readTextFileを実行
先日作成したものと見かけは同じですが、中身が少し違います。
sendで渡したオブジェクトが持つプロパティによって異なる機能を呼び出せる仕組み(ただし今回はreadTextFileのみ)になっています。
sendで渡したオブジェクトが持つプロパティによって異なる機能を呼び出せる仕組み(ただし今回はreadTextFileのみ)になっています。
2021年6月14日月曜日
2021年6月13日日曜日
webアプリを(若干)デスクトップアプリっぽく表示する
作成したプログラムがブラウザ上で動作する、またはインターフェースとしてブラウザを使用する場合、プログラムを起動すると基本的にはブラウザ内のタブの一つになる感じになりますが、それだと他のタブを閉じる時などに誤って一緒に閉じてしまう場合があります。
そういう問題の解決策の一つとして、chromeの機能が良さげでした。
そういう問題の解決策の一つとして、chromeの機能が良さげでした。
2021年6月12日土曜日
実行したコマンドを中断したい場合は「Ctrl + C」
今はdenoでプログラムを作成・実行しているので中断したくなった瞬間にブラインドタッチでキー入力できますが、コマンドラインの操作をしばらく止めると また忘れてしまいそうです。
忘れっぽい自分の未来のためにメモ。
忘れっぽい自分の未来のためにメモ。
2021年6月11日金曜日
2021年6月10日木曜日
denoでwebSocketが自動切断されるまでの時間を調べる
webSocket接続は自動的に切れてしまう場合があるらしいです。
通信していない状況が一定時間継続すると切れてしまう場合は、その時間に達する前に通信するように仕組めば良いと思います。
まずは手元の環境で、どのぐらいの時間で切れるのかを確認するためのサンプルを作成しました。
通信していない状況が一定時間継続すると切れてしまう場合は、その時間に達する前に通信するように仕組めば良いと思います。
まずは手元の環境で、どのぐらいの時間で切れるのかを確認するためのサンプルを作成しました。
2021年6月9日水曜日
denoで一時的なテキストファイルを作成する
テキストファイルを経由して何らかのデータの受け渡しをしたりする時に使用する。
path文字列は渡せるけどJSONみたいな各種記号なども含む長い文字列は無理な場合など。
path文字列は渡せるけどJSONみたいな各種記号なども含む長い文字列は無理な場合など。
2021年6月8日火曜日
denoでアクセス元に応じて処理を切り替える
deno上で動作するデスクトップアプリを作成してブラウザからファイルの読み書きや各種プログラムの起動などを行えるようにする一方で、ネットワーク接続された他の機器から「http://IPアドレス:ポート番号」で起動中のアプリの画面を開いて操作されるのは防がないと色々危険なので、アクセス元に応じて処理を切り替えるサンプルが以下。
2021年6月7日月曜日
2021年6月6日日曜日
Deno.runはダブルクォーテーションを渡す際に¥マークが入ってしまう
例えば「dir "C:¥ab c"」のようなコマンドを実行したい場合、「Deno.run({cmd:['cmd', '/C dir "C:¥ab c"']})」とすれば良い…かと思いきや、それを実行するとコマンドラインに渡る文字列は「cmd /C dir ¥"C:¥ab c¥"」となってしまいます。
これがどうにか回避できないと非常に困るので色々試した結果が以下。
これがどうにか回避できないと非常に困るので色々試した結果が以下。
2021年6月5日土曜日
denoでhttp接続用portを自動選択する(修正版)
deno上で動作するデスクトップアプリを数種類作成して、必要に応じて起動させたり終了させたりしたい関係で、TCP接続に使えるポート番号を探すサンプルを先日作成しましたが、意図した通りの動作になっていませんでした。
具体的には、使用中のポート番号でのサーバ起動をトライしたタイミングでエラーが発生してしまうという状態でした。
上記の問題を解消したバージョンのサンプルが以下。
具体的には、使用中のポート番号でのサーバ起動をトライしたタイミングでエラーが発生してしまうという状態でした。
上記の問題を解消したバージョンのサンプルが以下。
2021年6月4日金曜日
denoでローカルエリアにあるテキストファイルのPathをブラウザから指定して中身を読み込むサンプル
ブラウザに表示されたinputボックスにテキストファイルのPathを入力してボタンを押すと、内容がテキストエリアエレメントに表示される、というサンプルが以下。
2021年6月3日木曜日
denoで自作モジュールを使用する
モジュールのimport/exportについてはdenoはECMA Script6に倣っているようなのでdenoに限らないのかもしれませんが。
一つのファイルに色々詰め込むと見通しが悪くなるので、分割できるようにするサンプルが以下。
一つのファイルに色々詰め込むと見通しが悪くなるので、分割できるようにするサンプルが以下。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { test1 } from "./sub.ts"; | |
console.log(test1('hoge')) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
export function test1(msg:string): string{ | |
return '['+private1(msg)+']' | |
} | |
export function test2(msg:string): string{ | |
return '<'+msg+'>' | |
} | |
function private1(msg:string): string{ | |
return msg + '---' | |
} |
2021年6月2日水曜日
JSON.parse(), stringify()
モダンなJavaScriptとかいう物に慣れてる人には常識かもしれませんが、私は長らくHTAとWSHで戦ってきたのでJSONの入出力もテストしないと不安だったのでテストしました。
2021年6月1日火曜日
カレントディレクトリを指定した状態でcmdを起動する方法
最終的にユーザがアプリを日常的に利用する状況ではバッチファイルから起動できるようにしておくのが良いと思いますが、プログラムの開発中は、バッチファイルではなくコマンドラインから起動する方が手軽だったので、やり方をメモしておきます。
登録:
投稿 (Atom)