日々精進

新しく学んだことを書き留めていきます

AESのECBモードは使ってはいけない

IT

使ってはいけない理由は以下参照。 note.com 日本政府が出している推奨暗号リストにECBは入っていない。 https://www.cryptrec.go.jp/list/cryptrec_ciphers_list_2013.pdf 以下文書でもECBは推奨しないと記載されている。 https://www.ipa.go.jp/files/0000…

pythonの__str__は人が読みやすい文字列にする

IT

pythonのclassのstrはどんな目的で使うべきかがよくわからなかったので調べた。 以下のサイトによると、strは人が読みやすい文字列を返す。reprはpythonがオブジェクトに変換できる文字列を返す。 gammasoft.jp

PyCharmでSSH Interpreterを使っている時に、リモートサーバにconda installなどでインストールしたパッケージをPyCharmに取り込む方法

AI

PyCharmのSSH Interpreterは大変便利だけど、サーバ側でconda installした後、PyCharmにそれが伝わらず IDE上でinstallしたpackageがそんなパッケージないとエラーになったり補完が効かなかったりする。 そういうときはInvalidate Cache / Restart...を実行…

Windows10のスタートメニューを素早く表示する方法

IT

なぜWindowns10のスタートメニューはあんなにも重いのか。あれは出荷してはいけないレベルだと思うが。。 できる対策は以下。 設定でアニメーションを切る。手順は以下。 121ware.com HDDをSSDに換装する スタートメニューに限らず全体的に動きがキビキビに…

.NETアプリで「Unable to cast object of type 'System.Security.Cryptography.RSACng' to type 'System.Security.Cryptography.RSACryptoServiceProvider' Google.Apis.Auth.PlatformServices」エラー

IT

原因は.NET Framework向けに書かれたコードを.NET Core環境で実行しているため。今回は結局他の理由もあり.NET Frameworkを使う方針にした。 参考: stackoverflow.com

.NETアプリをビルドすると「Your project does not reference ".NETFramework,Version=v4.7.2" framework. Add a reference to ".NETFramework,Version=v4.7.2" in the "TargetFrameworks" property of your project file and then re-run NuGet restore」エラー

IT

原因は、プロジェクト参照をしていたが参照されている方のFWが.NET Frameworkで、参照している方が.NET Coreだったため。 フレームワークの種類とバージョンは参照する方とされる方で一致させないといけないらしい。別で動かせないのか。。名前空間とか共有…

VisualStudioで外部ライブラリに黄色い△の注意マークが出て、実行時にエラーになる

IT

原因は不明だが、ライブラリをNugetでインストールし直したら直った。 なんだったんだ。。 以下のサイトでは.NET Frameworkのバージョンが揃ってないのが原因と書いてあるけどそこは問題無かった。 参考: stackoverflow.com

ASP.NETでカレントディレクトリのパスを取得する

IT

サーバのストレージに置いたファイルを読み込みたい場合など、サーバのカレントディレクトリのパスが知りたい場合がある。 そういう時は以下でOK。 HttpRuntime.AppDomainAppPath 参考: stackoverflow.com

IIS Expressのログの場所

IT

ログのパスはapplicationhost.configで設定されている。 自分の環境では以下のパスに出ていた。 C:\Users\user\AppData\Roaming\Microsoft\IISExpressLogs 参考: stackoverflow.com

HttpClientはUsingで囲ってはいけないらしい

IT

久々のC#。HttpClientはUsingで囲ってはいけないらしいという話。 各インスタンス毎にソケットを確保するので沢山インスタンスを作るとソケットが枯渇することがあるそうな。なるほど。。 参考: qiita.com

switch文のfall throughが許されるケース

IT

stack overflowで、以下のようにコードを含まないcaseについてはfall throughを許すと言っている人がいた。 switch (value) { case 0: result = ZERO_DIGIT; break; case 1: case 3: case 5: case 7: case 9: result = ODD_DIGIT; break; case 2: case 4: ca…

AirPods Proの背面ボタンを長押ししてもAndroidの「使用可能なデバイス」にAirPods Proが出てこない

IT

iPhoneをAndroidの両方を持っていて、ペアリング済のiPhoneが近くにあるとこの現象が起きるっぽい。 iPhoneのBlurtoothをOffにしてから背面ボタンを長押しすると認識してくれた。 注文から一ヶ月待ってようやくAirPods Proを手に入れましたが、最高です。

vee-validateのvalidation-providerに複数のv-modelを渡すとブラウザが固まる

IT

以下のように書くと、ブラウザが固まる現象が起きた。 ※pugで記述している validation-provider(v-if="!hasPreviousOrder" rules="required" v-slot="{ errors }") input.form-control.mt-2(v-if="!isPasswordVisible", type='password', v-model="order.lev…

テーブルデータの各カラムの欠損率を表示する

AI

EDAやってて欠損率の高いカラムを除去したい場合などに便利。 null_count = dataset.isnull().sum() null_rate = null_count / len(dataset) null_table = pandas.DataFrame({ 'null_couunt': null_count, 'null_rate': null_rate }) null_table.sort_values…

LightGBMで「ValueError: y contains previously unseen labels」エラー

AI

原因はValidation setの中に、正解ラベルの一部が含まれてなかったため。 通常は十分なデータ量があるのでそんなことないと思うが、動作確認のためデータの一部を使って学習している場合に発生しそう。

PyCharmのSSH InterpreterのFile Transfer機能が正しく動かない問題

AI

PyCharmのSSH Interpreterは手元のPCでコードを書いて、実行はリモートのEC2インスタンスなどで実行できる、しかも実行前に自動的にコードをアップロードしてくれる という大変便利な機能だけど、その実行前にコードをアップロードする機能が頻繁に動かなく…

@dataclassはPython3.6でも使える

IT

Python3.7の新機能として@dataclassが紹介されているので、3.6だと使えないと思っていた。 qiita.com けど、以下のライブラリをインストールすればPython3.6でも同様の機能が使える。 github.com

Git for Windowsを更新する時はautocrlfの設定を変更してしまわないよう注意

IT

Git for Windowsを更新する時のダイアログで次へをポチポチ押していくと、 意図せずautocrlfが変わってしまうことがあるので注意。 ちゃんと文章を読んで設定をする必要がある。 更新の時はautocrlfの設定をするステップいらないと思うんだけど。。 参考: q…

Pythonのモジュールを動的に読み込む

IT

あるフォルダにあるpythonスクリプトを一括でimportする方法。 以下のようにimport_module関数を使うとできる。 for filename in os.listdir(dir_path): module_name: str = filename.replace(".py", "") importlib.import_module(f"module_path.{module_nam…

PyCharmで定義しているはずのファイルがunresolved referrenceになる

IT

スクリプトは実行できるけど、PyCharm上で赤いニョロニョロが出るし、補完も効かないという状態。 以下のサイトを参考にsource rootを設定すると直った。 virgo.hatenadiary.jp

PyCharmでcamelCase・snake_case・PascalCaseを切り替えられるプラグインが便利

IT

これ便利だった。Pythonはクラス名はPascalCase、変数名はsnake_caseにするのでそれぞれ変換したいことがちょくちょくある。 参考: plugins.jetbrains.com

PythonのMockはMagicMockが良さそう

IT

定義してないメソッドを呼んでもエラーにならない MockもSpyもできる など、Mockでやりたいことは概ね出来そうな感じ。これは便利。 参考: note.crohaco.net

Pythonでファイルを読み込むと文字列の中に\ufeffが入る

IT

\ufeffはBOMで、BOM付きのファイルをBOM無しの前提で読み込んでいるのが原因。 encodingを以下のように指定すると直った。 open('file', mode='r', encoding='utf-8-sig') 参考: stackoverflow.com

SlackのIncoming Webhookでチャネルで無く個人宛にDMを送る方法

IT

Incoming Webhookの設定をするときに、投稿先のチャネルを選ぶ必要があったので、 チャネル固定で個人宛にDMはおくれないのか。。と悩んだが、これはデフォルトの投稿先を設定するだけで "channel": "@user_id" のように投稿先を上書き出来るし個人を指定す…

gradlew.bat buildを実行すると「Caused by: java.io.IOException: CreateProcess error=206, ファイル名または拡張子が長すぎます。」エラー

IT

原因は、javaアプリ実行時のコマンドが長すぎてwindowsの制限(約3万文字)を越えているため。 そんなに長くなる理由はclasspathを依存するjarファイル毎に指定しているため。c:/A.jar;c:/B.jar・・・みたいなのが延々と続く。 これを解決するには、以下を行…

npm installは新しいパッケージをインストールする時以外は使わない方が良い

IT

npm installを実行すると、package-locl.jsonが更新されることがある。 そのため、パッケージのバージョンが知らない間に変わっていて画面が崩れるという不具合が起きてしまった。 普段はnpm ciでパッケージをインストールし、パッケージのバージョンアップ…

機械学習モデルの予測結果を説明する方法

AI

最近、機械学習モデルの予測結果を説明する手法が話題になっているので いくつか調べてみた。 Azureには予測結果を説明する機能がある。テーブルデータを説明する場合はSHAPを使うのが一般的っぽい。 SHAPの実行結果をどうグラフに表示するかは参考になりそ…

hackingでpythonのLintをすると誤ってwarningになる箇所がある

AI

2つのエラーが誤って検出された。 E701 multiple statements on one line (colon) は古いバージョンのpycodestyleに不具合があり、誤って検出されるっぽい。flake8/hackingは内部的にpycodestyleを使っている。 stackoverflow.com 以下を見ると既に修正版が…

apache http clientには3つのタイムアウト時間を設定出来る。

IT

3つのタイムアウトは以下。 connectionRequestTimeout コネクションプールからコネクションを取得するまでのTimeout時間 connectTimeout TCPコネクションがestablishedになるまでのTimeout秒数 socketTimeout データを相手に送信してからレスポンスが返って…

サーバからHTTPSリクエストを送ったら15分後にタイムアウトする

IT

15分という数字を設定した覚えがなかったので謎だったけど、Linuxのデフォルト設定だと15分ぐらいでTimeoutになるっぽい。 詳細は以下を見て欲しいが、Exponential Backoffを15回繰り返すと合計926秒になる。Linuxのデフォルト設定では15回リトライするので9…