日々精進

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

IT

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

IT

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

Jacksonはgetterもjsonに出力する

IT

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

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…

YAMLの値はダブルクォートで囲むべきか?

IT

yamlの値が文字列の場合、以下のようにダブルクォートで囲っても囲まなくても両方文字列と見なされる。 item_a: item_b: test item_c: "test" 以下によると基本ダブルクォートで囲まない方が良いけど、"10"のように囲むことで結果が変わる場合は必要に応じて…

JUnitを実行したら「Command line is too long」エラー

IT

想像だけど、IntelliJがテスト対象のクラスをすべてコマンドラインで指定しようとしてるんじゃないだろうか。。 .idea/workspace.xmlのPropertiesComponent要素の中に以下を書けば直る。 <property name="dynamic.classpath" value="true" /> なんでこれデフォルトじゃないんだろ。 参考: qiita.com</property>

Spring BootでInjectionしているコードをJUnitでテストする時もInjectionさせる

IT

@SpringBootTestアノテーションを付けるとInjectionしてくれる。 SpringBootを起動するからテストは遅くなるけど。。 なるべくPureJavaでテストを書いた方が良いですね。 参考: stackoverflow.com

IntelliJを 2020.1にUpdateするとLocal Changtesのところでダブルクリックすると差分表示されてしまう

IT

今までは当該ファイルを開く挙動だったのに。。 不便なので戻す方法を調べたところ、この挙動はnon-modal commit interfaceの仕様だということなので、 Settings | Version Control | Commit | Use non-modal commit interfaceのチェックを外したところ元の…