日々精進

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

SecureRandomのSeedがLinux環境で固定できない

IT

以下の現象が起きた。 Windows環境ではSecureRandomのコンストラクタにSeed値を渡すとSeedを固定できる(=同じ文字列を何度も暗号化すると毎回同じ値が出力される) Linux環境では同じコードでもSeedを固定できない docs.oracle.com ↑のHPに以下の記載があ…

SSD MobileNetV3のpretrained modelはmodel zooにある

AI

SSD MobileNetV3のpretrained modelを探していたが、意外と見付からなくて困った。 最終的には以下にあったものを使った。 github.com MobileNetV3という名前のモデルにはImageNetで学習したもの(=物体検出モデルではなく、画像分類モデル)もあり、混乱し…

json.loadsで文字列をdictに変換しようとしたら「json.decoder.JSONDecodeError」エラー

IT

jsonのKeyはダブルクォートで囲まれてないとだめっぽい。 Valueはシングルクォートはだめで、文字列はダブルクォートで囲まないとだめっぽい。 参考: ja.stackoverflow.com

クライアント証明書でWebアプリの認証をする方法

IT

クライアント証明書での認証のやり方を調べてみたところ以下でできるっぽい。(未検証ですが・・) Global Signなどでクライアント証明書を取得する クライアント証明書をクライアント端末とサーバの両方のルート証明書としてインストールする https通信する…

Jacksonはgetterもjsonに出力する

IT

Jacksonを使ってオブジェクトをjson形式にシリアライズしていたんだけど、 getString のようなメソッドを定義したらjsonの項目に"string"が追加された。。 メソッド名がgetXxxx(booleanの場合はisXxxx)の場合、自動的に出力対象になるらしい。 この仕様罠だ…

windows環境でimport mxnetを実行すると「OSError: [WinError 126] 指定されたモジュールが見つかりません。」エラー

AI

原因はMXNETのバグ。mxnet-mklの1.4.0には以下で報告されているバグがあり、このエラーが出ていた。 github.com pip install mxnet-mkl==1.5.0 を実行し、1.5.0をインストールすると直った。

PyTorchを使ったアプリを実行すると「RuntimeError: cuda runtime error (38) : no CUDA-capable device is detected at /tmp/pip-req-build-ocx5vxk7/aten/src/THC/THCGeneral.cpp:50」エラー

IT IT

原因ははっきりしないが、EC2のDeep Learning用AMIを使ってEC2インスタンスを作り直したら直った。 CUDA周りのライブラリがインストールされてなかったのかな。。

ブラウザの実験的な機能を使う方法

IT

現時点でのWebNFCのように、chromeでexperimentalな機能として実装されている機能を使いたい場合、以下でできる。 chrome://flags/#enable-experimental-web-platform-features をEnabledにする Origin Trialsに申し込む Origin Trialsは特定のドメインにア…

iOS,Androidアプリ間連携について

IT

iOSはUniversal LinksまたはURL Schemeを使って別のアプリを呼び出し、データを渡すことが出来る。 8vivid.net Androidの場合はIntentを使って同様のことが出来る。 stackoverflow.com 上記はWebアプリからも可能。 ただし、呼び出した別アプリから処理結果…

docker containerを起動すると「stderr: nvidia-container-cli: initialization error: cuda error: no cuda-capable device is detected」エラー

IT

原因はGPUのないマシンでruntime: nvidiaが入っているdocker compose yamlを使ってコンテナを起動しようとしたため。 GPUありのマシンで実行すると直った。 参考: github.com

突然EC2インスタンスにsshでログインできなくなったら「ステータスチェック」を確認する

IT

EC2のトラブルで接続出来なくなっている可能性があるのでAWSコンソールで「ステータスチェック」を確認した方が良い。手順は以下参照。 docs.aws.amazon.com

Docker操作を楽にするエイリアス

IT

以下の設定を使わせて頂いております。これでdockerコマンドの実行がすごい楽になった。 qiita.com ↓もよく使うのでaliasに追加しようかな。 docker commit $(docker ps --latest --quiet) debug && docker run -it debug /bin/bash

AIモデルを作る時に精度目標を求められたら楽観 / 悲観 / 中間の場合の目標を決める

IT

モデルの精度改善は非常に見積が難しく、ビジネス側からいつまでに精度何%を達成出来るのかと聞かれると答えに困ってしまう。。 下記の記事を見て楽観 / 悲観 / 中間の場合の目標をエイヤで決めて出すのが良さそうだと思った。 参考: f-bun.hatenablog.com

CentOSでsshdを自動起動する

IT

以下でできる。 systemctl enable sshd.service 参考: www.server-memo.net

CloudWatchのログを一括ダウンロードする方法

IT

awslogsを使うとできる。というか、AWS console画面からポチポチすればできるようになっててほしいんだが。。 pip install awslogsでインストール。 ログ取得するコマンドの例は以下。ログの開始時刻を-sで指定しないとエラーになるので注意。 awslogs get <log_group_name> <log_stream_name></log_stream_name></log_group_name>…

PyCharmのProfilerで時間を計測すると「<method 'acquire' of '_thread.lock' objects>」がほとんどのCPU timeを使っている

IT

原因は別スレッドでの処理はすべて「」と表示されるため。 なのでパフォーマンス計測をする場合はシングルスレッドで動かさないといけない。 参考: stackoverflow.com

pillowでresizeすると「SystemError: tile cannot extend outside image」エラー

IT

原因はresize後の画像サイズのwidthが0になっていたため。 参考: docs.aws.amazon.com

ALB経由で時間のかかるリクエストを送ると502 GATEWAY TIMEOUTが発生する

IT

EC2上にデプロイしているアプリのタイムアウト値は200秒などかなり長い時間になっているのに、それよりも短い70秒ぐらいのリクエストがタイムアウトになっていた。 原因はALBのアイドルタイムアウト値。アプリサーバがリクエストを受けてからレスポンスを返…

windowsで特定のポートをlistenしているプロセスを調べる

IT

サーバを起動したらポートがすでに使われててサーバが起動しない・・という場合によく使う。 例えば以下を実行すると80番ポートをlistenしているプロセスのpidがわかる。 netstat -oan | findstr 80 参考: www.atmarkit.co.jp

jarファイルの書き換え方

IT

jarの拡張子をzipにしてすべて解凍してファイルを修正して再度zipで固めて拡張子をjarに戻したらjava -jar temp.jarを実行したらエラーになってしまった。 対象のファイルだけを修正して差し替えないとだめっぽい。 やり方は以下参照。

iOS端末のcrash reportを取得する

IT

MobileSafariがクラッシュした場合などにクラッシュログを見たいという場合は以下の方法で見られる。 設定>プライバシー>解析および改善>解析データ Macに取り込む方法は以下。 iOS端末をMacに繋げて同期する ~/Library/Logs/CrashReporter/MobileDevice…

Vue.jsでv-forなしで:key属性のみ付けた場合の挙動

IT

その場合、:keyの値が変わった時にコンポーネントが新しく作り直されるらしい。 これは値が変わった時に毎回transitionを実行したい場合等に使えるっぽい。 参考: stackoverflow.com

AndroidをMacに繋いでchromeで開いたサイトのdev toolをMacで見る

IT

スマホWebアプリのJSのデバッグ実行をしたい・・という場合。基本は以下の通りにやればできる。 developers.google.com が、「Inspect」ボタンをクリックした時に「HTTP/1.1 404 Not Found.」と表示された。 これは端末のchromeのバージョンとMacのchromeの…

springアプリでbootRunを実行すると「generating equals/hashcode implementation but without a call to superclass」警告

IT

原因は以下。 ある実装クラスAを継承している実装クラスBに@Dataがついている その場合、Bのequals/hashCodeではAのフィールドは使われない。なのでAで定義されているフィールドの値が違っていてもa.equals(b)がtrueになってしまう @EqualsAndHashCode(callS…

growpart /dev/xvda 1を実行すると「mkdir: cannot create directory ‘/tmp/growpart.28317’: No space left on device」エラー

IT

原因はディスク領域が空いてなさ過ぎてフォルダも作れないこと。 不要なファイルを消して空き領域を増やすと直った。 参考: qiita.com

lombokのAccessorsアノテーションはexperimentalなので本番で動くコードには使わない方が良いかも

IT

@Accessors(fluent=true)が使いたくて@Accessorsを使っていたが よく見たらexperimentalパッケージの下にある。 以下によるとexperimentalの機能はあまりテストされてなかったり、不具合修正が遅かったり消えることがあったりするらしい。 projectlombok.org…

JUnitで例外がthrowされることをテストする

IT

調べた範囲だと、JUnit5だと以下のように書くのが一番良さそうだった。 Exception exception = assertThrows(NumberFormatException.class, () -> { Integer.parseInt("1a"); }); throwされた例外の中もassertできるし、try catchを書かなくて良いし、これい…

Javaで型引数の境界型を複数指定する

IT

複数のInterfaceを実装しているクラスを型引数として使いたい場合は以下のように型を&でつなげる。 <T extends ClassA & InterfaceB> クラス定義の時はカンマ区切りなのにここでは&なのか。。 参考: stackoverflow.com</t>

Javaプログラムを実行すると「java.lang.NoClassDefFoundError: Could not initialize class」エラー

IT

メッセージからはクラス定義が無いことが原因のように見えるが、クラスを定義するコードはある。。 原因はstaticフィールドの初期化コードの中で例外をthrowしていることだった。 以下のようなコードでMyClassのコンストラクタで例外をthrowしているとNoClas…

AWSマネジメントコンソールでスイッチロールをちょっと楽にする

IT

以下のようにスイッチロールしたアカウント・ロール名・表示名を含むURLを作ってそこにアクセスするとスイッチロールの画面がそれらを入力した状態で表示される。 https://signin.aws.amazon.com/switchrole?account=account_id_number&roleName=role_name&d…