Pandora Pocket

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

プログラミング

DelegateでLINQのWhere条件を外から渡す

たまに使おうと思って度忘れしているのでメモ。 LINQを使ってデータを抽出する際にWHERE句を用いますが、同じデータソースに対してWHERE句の中身だけが異なるなんてことがあるかと思います。 それぞれメソッドを分けると冗長ですので、WHERE句だけ外部から渡…

NuGetパッケージの名前空間コンフリクト対策でextern aliasを利用する

業務アプリで利用しているSDKを更新していてはまったので覚書。 問題 今回 Microsoft.Azure.Cosmos と Microsoft.Azure.Cosmos.Table をそれぞれ用いる構成なのですが、単純にNuGetパッケージをインストールすると、名前空間が衝突する箇所があり、 エラー C…

Azure Functionsでサフィックスが「_EXTENSION_VERSION」のアプリケーション設定はスワップ対象外?

タイトルがすべて。 Azure Functions v2がEOLとなり、FUNCTIONS_EXTENSION_VERSION の値を ~2.0 としていたアプリがありました。 当然EOL状態を放置することはできないため、v3に対応する修正を実施し、開発環境では正常に動くことを確認。 本番に向けステー…

MQTTHomeClientをプラグインで機能拡張できるように改良した

この記事で作っていたMQTTHomeClient。 MQTT Brokerから受け取ったTopicから処理を分岐させるんですが、ここで呼び出すWakeOnLANの処理をプロジェクト内で実装しています。 どうせ私しか使わないんでべたべた書いてもいいんですが、勉強がてらMQTTのクライア…

「Ok Google,パソコンの電源を入れて」 を実現したい(IFTTT、MQTT、Raspberry Piを用いる方法)

家で仕事をしているのですが、普段寝る前にはパソコンの電源を落としています。 朝起きて身支度をして、仕事部屋に行ってからパソコンの電源を入れて・・・よりはデスクの前に来た段階で電源が入っていてほしい。 というわけで、朝起きたときに枕もとのGoogle…

MQTTのクライアント側処理サンプル(.NET Core 汎用ホスト版)

個人的に作ってるアプリで必要だったので調べた成果。 MQTT BrokerはBeebottleを想定しつつ、一応汎用的に動くはず。 Beebottleの場合、アカウントIDにトークンを指定してください。 内部的にはMQTTのライブラリとして MQTTnet を使用しています。

Visual StudioでのASP.NET Core開発時のスマホ検証用にlocalhost外のアクセスができるようにする

Visual StudioでASP.NET Coreの開発をする際、開発マシンでの検証だけでなく、iPhoneやAndroidでの表示を確認したい時があります。 標準だと localhost で指定されており、そのままでは外部からアクセスはできないため、設定する必要があるのでメモ。 前提 …

Azure Functions v3でCosmosDBの基本処理を実行するためのサンプルプロジェクト

せっかくAzureでCosmosDBの無料枠ができたので、使わない手はないなと思って基本的な挙動確認用のプロジェクトを作成してみました。 CosmosDBのデータベース、コンテナ作成から登録更新検索削除の一通りの基本処理をAzure Functionsのv3環境で実装しています…

ParcelでバンドルしたJavaScriptの関数を直接呼び出すときの方法

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

指定時間にディスプレイの電源をオンオフするだけのミニツールを作るなどした

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

Entity Framework 3.0 Coreだと LastOrDefaultが利用できない

よく考えればそりゃそうか感はあるんですが。 Entity Framework 3.0 Coreでは破壊的変更としてLINQ クエリがクライアントで評価されなくなった という修正があります。 .NETの関数を内部的に使っているなどして、SQLに変換できない系統のものが動かなくなっ…

ListからSQL検索条件を生成するLINQ

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

SQLのWHERE 1=1と WHERE 1=0について

たまに使うのにどう使うのかを度忘れすることがあるので備忘録。 前提 テーブルから値を取得する際の条件としてWHERE句を設定するが、検索対象によってWHERE句に指定する検索条件が増減しうる。 例えば生徒の情報(氏名、性別等)を保持するテーブル STUDENT …

Postmanを使い始めて躓いた点の備忘録

以前使っていたAPIをたたくツールが公開終了してしまい、最近はPowerShellで下記のように叩いていたんですが、 $body = @{hoge="fuga"; foo="bart"} | ConvertTo-Json -Compress Invoke-RestMethod -Uri "https://localhost:5001/api/RESTfulApi" -Method PO…

Raspberry Piで .NET Core 3.1環境を構築する覚書

以前GCE上で.NET Coreアプリを定期実行する記事を書いたのですが、 無料枠で動かしたはずなのに課金の通知が飛んできたので、いったん撤退して手持ちのRaspberryPi上で動かすことにしました。

.NET CoreでLinux環境を用いる場合、ファイルパス生成はPath.Combineを使うべき

タイトルが結論。 Linux環境で動く.NET Coreアプリを書いていた時、ファイル出力処理でファイルパスを指定する際、下記のようにとりあえず記載してました。 var fileName = AppDomain.CurrentDomain.BaseDirectory + @"\FolderName\fileName"; 想定としては…

クエリ文字列を生成するときのメモ(C#)

クエリ文字列(クエリストリング、URLパラメータとも)は http://www.〇〇〇.com/search.php?△△=〇× の?以降のこと。サーバーに情報を送るための文字列になります。 StringBuilderで strBuilder.Append("△△=〇×"); とか、Dictionary使ってよく生成してたんです…

タニタHealthPlanetのAPIのOAuth再認証について

デブな現状を改善するべく、毎日体重を測っています。 以前作った、タニタの体重計のデータを取得してDiscordに投稿するAzure Functionsについて、私の実装が悪かったのか単に設定がおかしかったのかわかりませんが、Azureの課金額が結構な額になってしまい…

Gitでうっかり必要なコミットまでresetしてしまったときの対応

前職ではSVNばかり戯れていたので(もとはVSSだったのでこれでも進歩したほうだった)Git初心者なひつじです。 絶対まとめておかないとまた後で調べなおすことになるのでメモメモ。 Gitだと以前コミットした場所まで git reset を使えば戻すことができます。 …

Azure Functionsでは階層のある設定ファイルを使えない

AzureFunctionsのlocal.settings.jsonファイルといえば { "IsEncrypted": false, "Values": { "FUNCTIONS_WORKER_RUNTIME": "", "AzureWebJobsStorage": "<connection-string>", "AzureWebJobsDashboard": "<connection-string>", "MyBindingConnection": "<binding-connection-string>" }, "Host": { "LocalHttpPort": 7071, "</binding-connection-string></connection-string></connection-string>…

Calibreでカスタム列に値を突っ込むプログラム

最近Calibreという電子書籍の管理ソフトを使ってます。 このソフトでKindleの電子書籍を管理してるんですが、私はタイトル欄には書籍名と巻数のみだけ、それ以外の情報は消しておきたいというポリシーがありまして、元のタイトルはカスタム列を作成してそち…

Markdownファイルを一括PDF変換するソフトを作った

MarkdownファイルをPDFにするとき、普段はVSCodeのMarkdown-PDFプラグインを使ってるんですが、大量のMarkdownファイルがあるときに一個一個PDFにするのが面倒。 このあたりを使えばいいんでしょうけども、せっかくなので作ってみようと思いまして。

Linuxで動かす.NET CoreアプリではTimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time")が使えない

もともとAzure Functionsで動かしていたアプリをLinux上に持って行った際、下記のようなエラーが発生しました。

Google Compute Engine(無料枠)のLinux上で.NET Coreアプリを定期実行させる

Azure Functionsで動かしていたプログラムがあるんですが、(たぶん実装が悪いのだけど)課金が結構な額となってしまい、またDBを使うとなるとそれはそれでよい金額となってしまいます。 というわけでAzure Functions用に作っていたプログラムを.NET Coreのコ…

.NET CoreでShift-JISを取り扱う方法

.NET CoreではShift-JISがそのままでは利用できない。 .NET Frameworkで作成していた時は問題なく動いていたプログラムをそのまま移植すると、 ArgumentException: 'shift_jis' is not a supported encoding name. For information on defining a custom enc…

MusicBrainzからCD情報を取得する簡易プログラム

前の記事でまとめたMusicBrainzを用いて、CDドライブに挿入されているCDの情報を取得するプログラムを書いてみました。 TrackIDなどを計算する部分は面倒なのでライブラリを利用しています。 簡易プログラムなので例外処理は特に入れてません。 CDが入ってい…

音楽情報データベース「MusicBrainz」のAPI備忘録

音楽データベースのMusicBrainzからデータを引っ張ってくるときの備忘録。

要求された操作はユーザー マップ セクションで開いたファイルでは実行できません。

クリーンインストールしたWindowsに、必要なソフトをインストールしたうえで既存のプログラムをビルドした際、 要求された操作はユーザー マップ セクションで開いたファイルでは実行できません。 なんてエラーが出てビルドに失敗したことがありました。 正…

ファイルがあります

とある案件でMicrosoft Reportを利用した印刷を行っていたんですが、お客様から突然印刷ができなくなったと連絡を受けまして。 調査のためにスタックトレースを出力したところ、エラーメッセージとして IOException ファイルがあります と出力されていました…

TANITAのHealthPlanetからデータを取得してDiscordに投稿するAzure Functionsを作った

ダイエット仲間と進捗状況をDiscordで共有すべく、HealthPlanetからデータを取得してDiscordに投稿するプログラムを書いてみました。