日々精進

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

IT

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

find実行時に「Permission denied」が沢山出て困る

IT

以下のようにすればPermission deniedを非表示にできる。 find / -name art 2>&1 | grep -v "Permission denied" 参考: unix.stackexchange.com

DockerfileのENVで定義した環境変数をsshでログインした時に引き継ぐ

IT

基本はdokcer-composeのcommandを以下のようにして/etc/environment に環境変数を吐いておけば良い。 command: > bash -c 'printenv | grep -v "HOME" >> /etc/environment && /bin/bash' ただし、これはPATHなどの元々ある環境変数には効かないので、PATHを…

Dockerfile内でずっとbashを使う

IT

SHELL ["/bin/bash", "-c"] を使えばshellをbashに変更出来る。 ubuntuの/bin/shはsourceコマンドが使えなかったりして勝手が違うので助かる。 参考: qiita.com

git cloneを実行すると「fatal: unable to access ~ Received HTTP code 503 from proxy after CONNECT」エラー

IT

原因は git clone http:s//https://github.com/tensorflow/tensorflow のようにwebページのURLを指定してしまっていたため。 git clone http:s//https://github.com/tensorflow/tensorflow.git のように.gitを付けると直った。git cloneコマンドでcloneする…

ubuntuでsshdを起動する

IT

sudo /etc/init.d/ssh start で起動出来る。最近centosから乗り換えてるけど違いが色々あるなぁ。。 参考: qiita.com

ubuntuでgcc-c++をインストールする

IT

gcc-c++はcentosでの名前で、ubuntuの場合はbuild-essentialに含まれるのでこれをインストールすればいいらしい。 参考: c.keicode.com

conda activateを実行すると「CommandNotFoundError 」エラー

IT

ubuntuの場合は以下のようにconda.shを読み込む行を.bashrcに追加すればいい。 . /etc/profile.d/conda.sh 参考: qiita.com

ubuntuで「/bin/sh: 1: source: not found」エラー

IT

ubuntuの/bin/shにはsourceコマンドがない。 . ~/.bashrc のように代わりにドットを使えばいい 参考: blog.aoshiman.org

docker runを実行したら「no basic auth credentials」エラー

IT

原因はAWS ECRからイメージを取得しようとしてたけど、ECRにログインしてなかったこと。 以下でECRにログインしたら直った。 aws configure (アクセスキーなどを入力) aws ecr get-login --no-include-email --region ap-northeast-1 (上記コマンドで出力…

shell scriptファイルを実行すると「: No such file or directory」エラー

IT

実行するshell scriptのパスを間違えたのかと思ったけど、それは確実に存在する。。 原因は改行コードがCRLFになっていることだった。 WindowsPCからSCPでファイルをLinuxサーバにアップロードして、それを実行するとこの現象起きやすいので気をつけないと。…

Linuxで容量が大きいフォルダ一覧を出す

IT

以下のコマンドで容量が大きい順に40フォルダを出せる。便利でした。 sudo du -x -h / | sort -r -h | head -40 参考: tackeyy.com

resize2fsを実行すると「Couldn't find valid filesystem superblock.」エラー

IT

XFSではresize2fsは利用できないのが原因。 以下のようにxfs_growfs を使えばいい。 sudo xfs_growfs /dev/nvme0n1p1 参考: qiita.com

tty:trueにしてもDockerコンテナが起動しっぱなしにならない

IT

原因はcommandが定義されていないことだった。 以下のようにdocker-composeファイルにcommandが定義されてないと起動後すぐに停止してしまう。 services: service: command: /bin/bash tty: true 参考: qiita.com

psコマンドの実行結果が見きれる

IT

javaアプリなんかは起動引数がめっちゃ長くなることが多い。 そういう場合、psを普通に実行すると起動引数が見切れる。ps wwのようにwwオプションを使うと見切れず折り返してくれる。 参考: www.itmedia.co.jp

Javaアプリのメモリリーク調査方法

IT

以下の二つのやり方がある。 メモリダンプを取る 以下のコマンドでダンプを取る。 jmap -dump:format=b,file=heap.bin <PID> Eclipse Memory Analyzerでダンプを見る。 参考: hkawabata.github.io Java Flight Recorderでログを取る こっちの方がより詳細な情報</pid>…

メモリのDocker Cache領域はメモリが足りなくなったらすぐ解放されるので増えても問題無い

IT

本番環境のメトリクスを見ていたら、メモリのDocker Cache領域がどんどん増えているので焦ったがこの領域はIOのキャッシュのための領域でほかのプロセスがメモリを確保しようとしたらすぐに解放してくれるので増えても問題無いっぽい。 Docker Cacheが増えて…

github上で二つのブランチ・タグ・コミットなどの間の差分を見る

IT

やり方は以下参照。チームメンバーにリリースされた差分を示すときに便利でした。 kanonji.hatenadiary.com

Javaアプリの起動引数-Xmsで指定したメモリ量とJavaアプリが使用しているメモリ量が異なる。

IT

よくあるプラクティスとして-Xmsと-Xmxの値を同じにしてJavaアプリ起動時に一括でメモリを確保させるというのがある。 それをやると、Javaアプリ起動時から常に一定量のメモリが使用中になると思っていたがそういう挙動にならなかったのでその原因を調査した…

エクセルで、フィルタで非表示になった行を除いて平均を取る

IT

AGGREGATE関数を使えばできる。 以下のように非表示行を無視するオプションをつければいい。 AGGREGATE(1, 5, A:A) オプションの数値の意味は以下参照。この関数便利だなぁ。。 dekiru.net

xargsで処理する対象のファイル名に半角スペースが入っていて正しく処理できない

IT

xargsはデフォルトで半角スペースを区切り文字としてinputを分割してしまうので、 分割させないよう例えば以下のようにdelimiterを改行にしてやればいい | xargs -d '\n' 参考: stackoverflow.com

boto3でS3にファイルがあるかをチェックする

IT

なぜかexistsメソッドは存在せず、以下のように例外が発生するかどうかで判別する。これはやりたくないが。。 class S3Repository: def __init__(self, bucket_name: str): s3: ServiceResource = boto3.resource('s3') self.bucket_name = bucket_name self…

pylsプロセスのCPU使用率が100%に張り付く

IT

原因は不明だし解決策もわかってないけど。。多分jupyterにjupyterlab-lsp拡張を入れた時からpylsプロセスが起動するようになったが、それのCPU使用率がずっと100%になる。 以下でも解決してないみたいなので一旦pylsプロセスをkillした。 github.com

Java8⇒Java11移行時にやること

IT

以下が参考になりました。 OracleのJava11移行ガイド https://docs.oracle.com/javase/jp/11/migrate/index.html#JSMIG-GUID-D7936F0D-08A9-411E-AD2F-E14A38DA56A7 ヌーラボのJava8⇒Java9移行ブログ https://nulab.com/ja/blog/nulab/java9-migration/ Java…

Windows Search IndexerがCPU負荷を上げている問題

IT

PCが重いのでタスクマネージャを見てみると「Windows Search Indexer」が結構CPUを使っていたので以下対応をしたところCPU負荷が減り快適になりました。 mushikabu.net

ブラウザでカメラを間違って拒否した場合に、端末設定から許可に変更してもやっぱりカメラが使えない

IT

(iPhoneでしか調査してません)原因はブラウザが起動時にしかiPhoneの設定カメラ設定を読み込んでないっぽいこと。ブラウザを一度終了させて再起動しないといけない。 ただし、以下で紹介されているようにブラウザ上でカメラの許可設定を変更することもでき…

ブラウザの仕様の調べ方

IT

MDNは日本語だし読みやすいしでよく使う。 developer.mozilla.org もっと正式な情報源がいい場合はW3Cの仕様書を見る。でもまだworking draftだったり、Issueに「Safariはこの仕様に従ってないよ!」と書かれていたりして困ることがある。。 www.w3.org W3C…

matplotlibのタイトルなどで日本語が文字化けする

IT

日本語フォントがLinux環境に無いのが原因なので、まずは日本語フォントをインストールする必要がある。手順は以下参照。 qiita.com しかしこれだけだと直らなかった。 ~/.cache/matplotlib/fontlist-v310.json を削除し、JupyterLabのsessionをshutdownし、…

IntelliJで「cannot resolve symbol」エラー

IT

原因ははっきりわからないが、.ideaフォルダを消してプロジェクトを開き直したら直った。 Invalidate Cache/Restartは効かなかった。 参考: cozylifeblog.tokyo