日々精進

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

2017-10-01から1ヶ月間の記事一覧

S3にはバージョニング機能がある

IT

知らなかった。。S3にはバージョニング機能があるのでoldフォルダにファイルを取っておいたりしないで良かったのか。 バケット単位でのON/OFFしかできないのでその点はちょっと使いづらいが、便利そう。 qiita.com

pandasの永続化フォーマットはpickleがいい

AI

永続化フォーマットとして今までparquetを使っていたが、float16に対応していなかったりして困ったのでフォーマットを変えることにした。 github.com 以下によるとpickleが良さそう。こういう検証は有り難い。。 blog.amedama.jp

pandasで移動平均を計算すると「ValueError: cannot convert to 'float64'-dtype NumPy array with missing values. Specify an appropriate 'na_value' for this dtype.」エラー

AI

以下のようなコードで移動平均を出そうとしたところ、「ValueError: cannot convert to 'float64'-dtype NumPy array with missing values. Specify an appropriate 'na_value' for this dtype.」エラーが発生した。 return sales.groupby([STORE_ID, ITEM_I…

PythonでバイナリデータをAES256/CBC/PKCS5Paddingで暗号化・復号するサンプルコード

IT

PyCryptodomeがインストールされている前提。 from Crypto import Random from Crypto.Cipher import AES from test.util.test_util import AES_KEY block_size: int = 32 def test_encrypt_image(): with open("sample.jpg", "rb") as f: plain_image: byte…

PyCryptodomeでAES256/CBCで暗号化する時にIVの長さを32bytesにすると「ValueError: Incorrect IV length (it must be 16 bytes long)」エラー

IT

PyCryptodomeのドキュメントを見ると、CBCモードの場合IVは16bytes固定と書いてある。IVはブロック長と同じ長さでないとだめなはずだけど。。 pycryptodome.readthedocs.io IVを16bytesにすると直った。鍵長は32bytesのものを渡しているのでAES256で暗号化は…

JupyterLab2.1を入れてdebuggerを使おうと思ったが、色々制約があるのでやめた話

AI

www.publickey1.jp この記事をみてワクワクしながらJupyterLab2.1とdebuggerを入れてみたが・・以下の理由で使うのを断念した。 debuggerを使うにはxeus-python kernelを使わないといけないが、これはmagic commandに対応していない。 使っているextensionが…

conda createを実行すると「CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://repo.anaconda.com/pkgs/pro/linux-64/repodata.json.bz2>」エラー

IT

原因はcondaのproxy設定が出来ていなかったため。 condaはhttp_proxyなどの環境変数を見てくれず、.condarcで設定しないといけない。 以下のようにproxyの設定をすると直った。 proxy_servers: http: http://localhost:60088 https: http://localhost:60088 …

apt-getを実行すると「[archive.ubuntu.com (91.189.88.152) へ接続しています]」でエラー

IT

原因はproxy環境なのにproxyを経由していないことだった。 環境変数のhttp_proxyとhttps_proxyにproxyサーバを設定すると直った。

JupyterLab ExtensionをDockerfileでinstallする

AI

JupyterLab Extensionはpythonパッケージのようにenvironment.yamlからinstallできない。 extensionの実体はnpmパッケージなのでpackage.jsonからinstallできたらいいのだが、 そのような方法は見付からなかった。 今のところ以下のように一つずつextension…

Dockerfile内でnvmをinstallする場合先にNVM_DIR環境変数を設定しておく

IT

RUN curl https://raw.githubusercontent.com/creationix/nvm/v0.20.0/install.sh | bash を普通に実行すると/root/.nvmにinstallしにいって困った。 先に ENV NVM_DIR /usr/local/nvm と書いてNVM_DIR環境変数を設定しておくと指定の場所にinstallできた。 …

JupyterLabのExtensionManagerタブに「Error communicating with server extension.」と表示される

AI

原因はnodejsが正しくインストールできていないことだった。 Dockerfile内でnvmをinstallし、さらにnodejsをinstallしていたが、 root userに対してインストールしていたので通常使うuserからはnodejsが実行出来ない状態だった。 通常使うuserにsuしてからno…

コマンドライン引数と環境変数の使い分け基準

IT

pythonのプログラムを起動するときに引数を渡す方法としては主に python main.py --start 1 --end 2 のように起動引数として渡す場合 環境変数経由で渡す場合 設定ファイルで渡す場合 変更頻度が低い、かつ環境毎に変わらない場合は設定ファイルを使う 変更…

コンテナにsshでログインできない

IT

現象は以下 buildに失敗したコンテナを docker commit <ID> debug && docker run -it debug /bin/bash コマンドで起動 そこにsshでログインしようとするとConnection refusedエラー docker psを打つとPORTSの項目にdocker-compose.yamlで定義しているポートマッ</id>…

pythonで単体テスト時に現在時刻を設定する

IT

datetime.now()を呼んでいるコードがあると単体テストが書きにくいので現在時刻をテストデータに置き換えたいと思ったが 以下によると結構めんどそう。。 stackoverflow.com freezegunを使うと楽に出来た。これはいい。詳細は以下。 blog.amedama.jp

マイクラのforge serverを起動すると「java.lang.NoClassDefFoundError: net/minecraft/client/renderer/entity/Render」エラー

IT

Super-TNT-Mod-1.12.2.jarをserverに導入すると「java.lang.NoClassDefFoundError: net/minecraft/client/renderer/entity/Render」エラーが発生した。 原因はModがマルチプレイ対応してないこと。serverでは使えないクラスのオブジェクトを生成しようとして…

GCLogFileSizeを設定してもjavaのGCログがローテーションされない

IT

テスト用にGCLogFileSizeを1kに設定してテストを行ったがローテーションしない現象が発生した。 原因はGCLogFileSizeの最小値が8kだから。そんな制約あったのか。。 参考: stackoverflow.com

Pythonでstr⇒boolに変換

AI

以下のようにbool()とstrtobool()を組み合わせるとbool型に変換できる。 bool(strtobool("true")) bool()も使わないといけないのは紛らわしいことにstrtoboolはboolでなくintを返すから。なんだこの仕様。。 参考: qiita.com

matplotlibの単体テスト

AI

pytest-mpl を使うとmatplotlibで生成した画像と期待結果画像を比較して違っていたらエラーにできる。 matplotlibを便利に使うためのクラスを作っているので助かる。 参考: github.com

Dockerを削除してもDockerが追加した仮想NICが消えない

IT

一度Dockerを入れて削除したんだけど、仮想NICが消えない。。 以下を参考にして手動で消した。 レジストリをいじるのはいつもドキドキする。。 参考: viewse.blogspot.com

nuro光環境でRTX1210を使っている場合のポート開放

IT

うちのネットワークは終端装置⇒RTX1210⇒PCという構成になっている。 マイクラのサーバを公開しようとRTX1210のポートマッピング設定をしたが、公開できなかった。。 意識してなかったが、終端装置もルータになっていて二重ルータ状態だったっぽい。 終端装置…

remoteサーバからローカルPCを経由して別のremoteサーバにscpする

IT

以下のように-3オプションをつければいい。 scp -3 remotehost1:text.txt remotehost2:text.txt 参考: qiita.com

Dockerfile内でインストールしたパッケージがdocker imageに入っていない

IT

現象は以下。 Dockerfile内でapt-getでlibopencv-devをインストールした imageからコンテナを作ってログインするとlibopencv-devが無い 原因はdokcerのmulti stage buildを利用していて、Dockerfileは以下のような感じだったんだけど、 これだと/opt/の下し…

Dockerのmulti stage buildは便利

IT

今更ですが。。multi stage build便利ですね。ちまちまcacheをcleanする必要なかった。。 詳細は以下の記事を読めばよく分かると思います。 qiita.com

PyTorchを実行すると「ctdet/coco_res18THCudaCheck FAIL file=/opt/conda/conda-bld/pytorch_1535491974311/work/aten/src/THC/THCGeneral.cpp line=663 error=11 : invalid argument」エラー

AI

PyTorchのバージョンが古いと発生するらしい。使っていたバージョンは0.4.0。 以下サイトでinstallコマンドがわかるので、これを実行して最新版をインストールしたら直った。 pytorch.org 参考: discuss.pytorch.org discuss.pytorch.org

PyTorchで学習を回すと「ctdet/coco_res18ERROR: Unexpected bus error encountered in worker. This might be caused by insufficient shared memory (shm).」エラー

IT

shared memoryが足りないのが原因らしい。 dockerコンテナはデフォルトだとshared memoryが64MBになっている。 以下のようにshm_sizeを指定するとshared memory sizeを変更出来る。 services: servicename: shm_size: '7gb' 参考: qiita.com

pycocotoolsをyamlファイル経由でインストールすると「ImportError: No module named Cython」エラー

AI

pycocotoolsがCythonへの依存関係を正しく設定出来てなくてCythonをインストールする前にpycocotoolsをインストールしようとしてエラーになっているように見える。 以下のIssueで報告されているがずっと放置されてる。。 github.com しょうが無いのでyamlか…

Dockerfile内でbashを使う

IT

デフォルトだと/bin/shになっていていつもと勝手が違うのでbashを使いたい。 以下を実行するとそこからbashになる。 SHELL ["/bin/bash", "-c"] 参考: qiita.com

docker buildに失敗した場合のデバッグ方法

IT

以下手順でビルド失敗時点のコンテナに入れるのでそこで手動でコマンドを実行して調査する。 以下を実行して一番上のコンテナのIDをコピーする。 docker ps -a コピーしたIDを以下のコマンドに入れて実行する docker commit <ID> debug && docker run -it debug </id>…

@dataclassでクラス変数を定義する

IT

以下のようにtyping.ClassVarでラップすればいい。 @dataclass class TestClass: var1: ClassVar[str] = "class" 参考: qiita.com

CenterNetをインストールしようとすると「nvcc: command not found」エラー

AI

CenterNetのインストール手順にmake.shを実行する手順があるが、これを実行すると「nvcc: command not found」エラーが発生した。 https://github.com/xingyizhou/CenterNet/blob/master/readme/INSTALL.md nvccはcudaのコンパイラで、cuda toolkitに含まれ…