Pandora Pocket

IT系と日常系の備忘録。三日坊主。

HTMLのフォームにonSubmitでJavaScriptを呼ぶように実装してたんですが、HTMLファイルに直接JavaScriptを記載していたり、生のJavaScriptファイルを読ませていた時はうまく動くのに、Parcelを通したJavaScriptファイルだと Uncaught ReferenceError となってしまい、実行されない問題が発生。

ググったところそれっぽい情報を発見。

続きを読む

普段テーブルの端にSurface Proを置き、Twitterクライアントを常時起動させつつ、音楽を再生したりしています。
朝起きた時に夜中のツイートもささっと流し読みしたいので24時間電源を入れっぱなしなのですが、使っていない時間ずっとディスプレイがつきっぱなしなのは電気代がもったいない。かといって電源設定でディスプレイの電源を切る時間を設定すると、普段見たいときにいちいち画面タップするなりしないといけないので面倒。

というわけで、指定した時間にディスプレイの電源をオンオフするだけの機能を持ったタスクトレイ常駐アプリを作りました。

続きを読む

.NET Core 3.1対応をしているのですが、それに伴ってEntity Framework Coreもv3にあげたところ、LINQのクライアントサイド評価が行われなくなったことでいくつかのクエリが使えなくなったため、いろいろ調べながら対応しています。

続きを読む

以前GCE上で.NET Coreアプリを定期実行する記事を書いたのですが、

Azure Functionsで動かしていたプログラムがあるんですが、(たぶん実装が悪いのだけど)課...
[はてなブックマークで表示]

無料枠で動かしたはずなのに課金の通知が飛んできたので、いったん撤退して手持ちのRaspberryPi上で動かすことにしました。

続きを読む

普段からKindleで電子書籍を購入してるのですが、Amazonって検索結果が妙に使い勝手が悪く、新刊を見落としてたこともしばしば。

きんどうなどの専門サイトで情報を仕入れてたんですが、当然全部が全部載るわけでもなく。
で、自分で検索用のアプリを作ろうと思ってちまちま書いてたもののUI作るのが面倒で放置しているうちに、しんじさん(id:Shinji_Japan)がAmazonのKindle検索用Chrome拡張を公開されました。

Add new features to your browser and personalize your browsing experience.
[はてなブックマークで表示]

要望を複数対応していただいて必要十分なものになったため、アプリを作る必要がなくなったので、アプリを作るために調べていた情報だけ備忘録がてら纏めます。

続きを読む

タイトルが結論。

Linux環境で動く.NET Coreアプリを書いていた時、ファイル出力処理でファイルパスを指定する際、下記のようにとりあえず記載してました。

var fileName = AppDomain.CurrentDomain.BaseDirectory + @"\FolderName\fileName";

想定としてはプログラムがあるフォルダにFolderNameというフォルダがあり、その中にfileNameというファイルが生成されるというもの。
Windows環境ではこれで問題なく動くものの、Linux環境に持っていくとファイルが出力されていなかったので確認してみると、プログラムがあるフォルダに FolderName\fileName という名前のファイルが。

Windows環境ではパスにバックスラッシュを使うのに対し、Linux環境ではスラッシュを使うため、上記の指定だとうまくいかないと。なるほど。

というわけで、Linux環境で動かす場合はスラッシュに置き換えればいいんですが、Windows環境でも動かすことを想定すると、Path.Combineを利用してやるのが最適解のようです。

こんな感じ。

var fileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "FolderName", "fileName");

そもそもパスの指定方法が適当ってのは気にしないで・・・。

参考

How to handle file name in System.IO classes in a cross-platform manner to make it work on Windows and Linux? For example, I write this code that works perfectly on Windows, however it doesn't cre...
[はてなブックマークで表示]

クエリ文字列(クエリストリング、URLパラメータとも)は

http://www.〇〇〇.com/search.php?△△=〇×

の?以降のこと。サーバーに情報を送るための文字列になります。

StringBuilderで strBuilder.Append("△△=〇×"); とか、Dictionary使ってよく生成してたんですが、特殊記号や全角文字列のエスケープ処理を別途行う必要があるので面倒くさい。

System.Web.HttpUtility.ParseQueryString

を使えばエスケープ処理を自動的にやってくれる。

using System.Web;  
中略  
var queryString = HttpUtility.ParseQueryString("");  
queryString.Add("△△", "〇×");  

としてやれば、

queryString.ToString();  

でクエリ文字列が生成される。

下記のようにUriBuilderに渡してやれば、スマートにURLが生成可能。

var uriBuilder = new System.UriBuilder("www.〇〇〇.com") {Query = queryString.ToString() };  

ちょくちょく忘れるのでメモメモ。

デブな現状を改善するべく、毎日体重を測っています。

以前作った、タニタの体重計のデータを取得してDiscordに投稿するAzure Functionsについて、私の実装が悪かったのか単に設定がおかしかったのかわかりませんが、Azureの課金額が結構な額になってしまい、現在GCEに.NET Coreなコンソールアプリを配置して、定期実行させるようにしています。

ダイエット仲間と進捗状況をDiscordで共有すべく、HealthPlanetからデータを取得してD...
[はてなブックマークで表示]

現時点でのソースはこちら。

TANITA HealthPlanetのデータをDiscordに投稿するコンソールプログラム. Contribute to Ovis/PostDietProgress_Console development by creating an account on GitHub.
[はてなブックマークで表示]

続きを読む