物理のバス停 by salt22g

とある物理学見習いの備忘録。

Docker内でのopencv buildでerror…

とあるDocker imageをbuildしようとしていたところ…
opencvのbuild中にerrorが

Dockerfileはこんな感じ…

FROM ubuntu:18.04

--中略--

# install & build opencv
RUN git clone https://github.com/opencv/opencv.git ~/opencv
RUN git clone https://github.com/opencv/opencv_contrib.git ~/opencv_contrib
RUN cd ~/opencv && \
    mkdir build && \
    cd build && \
    cmake -D CMAKE_BUILD_TYPE=RELEASE \
        -D CMAKE_INSTALL_PREFIX=/usr/local \
        -D INSTALL_PYTHON_EXAMPLES=ON \
        -D INSTALL_C_EXAMPLES=OFF \
        -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules ~/opencv \
        -D BUILD_EXAMPLES=ON .. && \
    make -j4 && \
    make install && \
    /sbin/ldconfig

--以下略--

makeの部分でerrorが出た模様。

c++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-7/README.Bugs> for instructions.
make[2]: *** [modules/python2/CMakeFiles/opencv_python2.dir/__/src2/cv2.cpp.o] Error 4
make[1]: *** [modules/python2/CMakeFiles/opencv_python2.dir/all] Error 2
CMakeFiles/Makefile2:19251: recipe for target 'modules/python2/CMakeFiles/opencv_python2.dir/all' failed
make[1]: *** Waiting for unfinished jobs....

error文で検索すると。
github.com

ちゃんと読んでないけどRAMが何たらかんたらと書いてある。
Linuxのサーバ上では同じDockerfileでbuildできていたのでおそらくPCの性能的な問題。

Macのスペック
OS: macOS Catalina 10.15.4
機種名:     iMac(21.5-inch, 2019)
プロセッサ:    3.2 GHz 6Core Intel Core i7
メモリ:      16 GB 2667 MHz DDR4
グラフィックス:  Radeon Pro 555X 2 GB


コア数は足りているはずなのにうまく行ってない。

ということで

make -j4 → make -j2

ちゃんとmakeできました。
まだしっかり調べていないですが、docker内でのcpu使用に制限があるのか…
またわかったら記事にします。

Geant4 cmakeでerror…(macOS)

Geant4のフレームワークをcmakeしようとしたところここでエラーが…

Failed to find "gl.h" in

CMake Error at /usr/local/opt/qt/lib/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake:9 (message):
Failed to find "gl.h" in
"/System/Library/Frameworks/OpenGL.framework/Headers;/System/Library/Frameworks/AGL.framework/Headers".
Call Stack (most recent call first):
/usr/local/opt/qt/lib/cmake/Qt5Gui/Qt5GuiConfig.cmake:202 (include)
/usr/local/Cellar/geant4/10.5.1/lib/Geant4-10.5.1/Geant4Config.cmake:449 (find_package)
CMakeLists.txt:13 (find_package)

 

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenGL.framework/Headers
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AGL.framework/Headers

なんか場所が変わっていたらしい。

ちなみにGeant4はhomebrewを使ってインストールしたもの。

/usr/local/opt/qt/lib/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake

このファイルを見に行くと

set(_GL_INCDIRS "/System/Library/Frameworks/OpenGL.framework/Headers" "/System/\
Library/Frameworks/AGL.framework/Headers")

ということでここを編集してみる

一応元のファイルは残して…

set(_GL_INCDIRS "/System/Library/Frameworks/OpenGL.framework/Headers" "/System/Library/Frameworks/AGL.framework/Headers" "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AGL.framework/Headers" "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenGL.framework/Headers")

このように編集

再度

cmake ..

-- Configuring done
-- Generating done
-- Build files have been written to: /Users/hogehoge/

やったぜ。

Mac 理系大学生のための開発環境整備

Macの開発環境整備

「研究を始めたいけどどうやってツールを入れればいいかわからん!」
「ググっても専門用語と余計な知識が多すぎる!」
そんな初心者Macユーザーの皆さんにこの記事の使えるところを切り取って使っていただければ嬉しいです。

全体は長い記事ですが興味のないところは流し読み or Skipでお願いします。
(随時内容を追加・編集する予定)

はじめに

新型コロナウィルスが猛威をふるい、大学生や社会人の方は自宅待機が推奨されています。
そんな中、テレワーク、遠隔講義などで自前のPCを使うが増えています。
使い始めたばかりのPCでセットアップもままならないまま研究、会社での仕事が始まっている方もいるではないでしょうか。
特に、理系の学部4年や大学院1年の方の中には
「よし!!先生や先輩から技を盗んで研究を始めるぞー!」
と考えていた矢先、大学が閉鎖されてしまったという人もいるかもしれません。
論文の英訳なら一人でも始められますが、研究に関して必要なツールや開発環境を自分一人で揃えるのは難しい。
普通研究室の先輩の環境をコピーして徐々に理解し、自分のアレンジを加えていくと言うのが一般的です。(私もそうでした)

そこで「意味は全然わからないけど、とりあえず研究に必要そうな物を揃えたい!」
と言う人々を応援するために私のMac Catalinaでの開発環境整備をまとめて公開したいと思います。

筆者は何者?

物理学を研究している大学院生(博士課程)です。今はとある研究所にいます。
専門分野は原子核物理実験です。いろいろなことに興味があります。(知識は浅く広く)
研究のデータ解析のためにプログラミングを少々。主な使用言語はPython
 

筆者とMac

Mac遍歴

  • 親がMacユーザーだったこともあり大学入学時に買ってもらったラップトップがMacbook Air(2015)でした。
  • 学部3年までは特に使いこなしていたわけではなく、見た目がかっこいいので気に入って使っていました。
  • 研究室に所属し研究を始めるにあたり、博士課程に進学していた先輩がMacを使いこなして解析しているのに憧れ、見様見真似(設定のコピーアンドペースト)で解析ツールを使い始めます。
  • RAMメモリが4GBしかなかったAirの性能に限界を感じ、大学院1年の時にMacbook Pro(2017)を購入し現在もメインで使っています。
  • 研究費でiMac(2019)を購入してもらえたのでセットアップするついでに皆さんと情報を共有しようと思いブログを始めました。

 

Macの良いところ

  • かっこいい!! 以上!
  • 開発環境が楽に準備できる。(今回のメインテーマ)
  • 使っている人がそこそこ多いのでネットにも情報が豊富。
  • UIが鮮麗されており、人間が直感的に操作できるためストレスなく仕事ができる。(慣れの問題かも…)
  • Apple機器との連携が優れている。
  • かっこいい。それだけで使う価値がある。

Macのイマイチなところ

  • Windowsでしか動かないデバイスがある。
  • 高い(本体が)
  • カスタマイズがほぼ不可能

 
しかし物理の解析で用いられるツールがほぼ動き、サーバーに用いられるLinuxとも共通点が多いことから素粒子原子核物理解析を行う大学生のみなさんにおすすめです。
中途半端なPC買うと買い替えが必要になって余計に金がかかるし…


↓ここからが本編です↓

基本セットアップ

今回開発環境を整備したMacのスペック
OS:                          macOS Catalina 10.15.4
機種名:         iMac(21.5-inch, 2019)
プロセッサ:       3.2 GHz 6Core Intel Core i7
メモリ:         16 GB 2667 MHz DDR4
グラフィックス:  Radeon Pro 555X 2 GB
 

キーボード、マウス

プログラムの編集だけでなくメールやレポート作成の際、文字を素早く入力したり連続で消したり、矢印キーで目的の箇所へ素早く移動したいですよね。

まず、キーボードとマウスのレスポンスをあげましょう。

f:id:salt22g:20200506220431p:plain
アップルマークをクリックしてシステム環境設定へ
こちらのシステム環境設定からキーボードを選択。

f:id:salt22g:20200506215415p:plain
赤矢印の方向にカーソルを動かします。

ちなみに、ターミナル上でコマンドを入力することでさらに速度を早くできます。

#今の値がわかる。
defaults read -g InitialKeyRepeat
defaults read -g KeyRepeat
#さらに速く
defaults write -g InitialKeyRepeat -int 10
defaults write -g KeyRepeat -int 1

GUIアプリ

とりあえずブラウザはGoogle Chrome
www.google.com


ブラウザはなんでもいい。自分が慣れている物を使いましょう。
僕はスマホSafari、仕事のPCではChromeと使い分けています。

(履歴がry…)


テキストエディタとしてVSCode
code.visualstudio.com


私はターミナル上でテキストやスクリプトを編集する際はemacsを使っていますが、
大掛かりなプロジェクトや人が書いたコードを解析するときにはVSCodeを使っています。
現在最も開発が盛んなテキストエディターで、新機能がどんどん追加されています
一部を除きほとんどの機能がWindows, Mac, Linuxで共通なのが嬉しいですね。
拡張機能が多すぎて追いつけていないので勉強中です。

インストールしたら⌘ + Shift + Pでコマンドパレットを開いて>codeと入力。

f:id:salt22g:20200506220903p:plain
vscode コマンドパレット
これでターミナルからもvscodeを起動できるようになります。

code {ファイル名}

ターミナル

ここからが研究用の開発環境整備です。
まずこの開発環境整備の軸を担うHomebrewというパッケージ管理機能をインストールします。
この機能だけでもMacを選ぶ価値があると考えています。

brew.sh

Homebrewとは登録されている開発研究用のパッケージをその機能を使うために必要な周辺環境も含めてインストールしてくれる非常に便利な機能です。
例えば「ROOTというパッケージを使ってデータ解析がしたい!」
と思った場合、通常であればROOTを使うために必要な様々な依存パッケージをインストールし、それらを自分でセットアップする必要があります。

Homebrewはそれらを自動で検知し、依存関係にあるパッケージを自動でインストールし、使える状態にしてくれます。
初心者でもネットからコマンドをコピーして貼り付けるだけで狙ったツールが使えるようになります。

ターミナルを開き以下のコマンドを入力します。

xcode-select --install

インストールをクリックし、xcodeとコマンドツールとやらを手に入れる(くそ時間がかかる) 

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

==> This script will install:
/usr/local/bin/brew
/usr/local/share/doc/homebrew
/usr/local/share/man/man1/brew.1
/usr/local/share/zsh/site-functions/_brew
/usr/local/etc/bash_completion.d/brew
/usr/local/Homebrew
==> The following new directories will be created:
/usr/local/bin
/usr/local/etc
/usr/local/include
/usr/local/lib
/usr/local/sbin
/usr/local/share
/usr/local/var
/usr/local/opt
/usr/local/share/zsh
/usr/local/share/zsh/site-functions
/usr/local/var/homebrew
/usr/local/var/homebrew/linked
/usr/local/Cellar
/usr/local/Caskroom
/usr/local/Homebrew
/usr/local/Frameworks
==> The Xcode Command Line Tools will be installed.
Press RETURN to continue or any other key to abort
Password:
#PCのパスワードを入力

すると自動的にコマンドラインツールのインストールが始まります。
インストールが終わったら以下のコマンドを

brew doctor
Your system is ready to brew.

 
ビールが飲みたくなりますね。

次にこちら

brew install cask

通常、homebrewはコマンドラインツール(ターミナル上で動くアプリケーション)を中心に扱いますがcaskをinstallすることでchromeやこの後紹介するiTremなどのGUIアプリケーションもインストールできるようになります。

brew search iterm2

このコマンドでインストール可能なパッケージがあるか教えてくれます。

brew cask install iterm2

インストールが終わったらデフォルトのターミナルとはおさらばです。

f:id:salt22g:20200506220109p:plain
Launchpad画面にもcaskで追加したアプリが表示されます。

Catalinaからデフォルトのshellがzshになりましたがbrewでインストールしたzshを使います。
(意味はないけれど)

brew install zsh

zshの導入

brew install zsh
sudo emacs /etc/shells

で中身を編集。

最後の行に/usr/local/bin/zshを加える

#デフォルトのshellをインストールしたzshにする。
chsh -s /usr/local/bin/zsh

homeに.zshrcを作り以下の内容をコピペ。 

emacs .zshrc

(.が先頭につくファイルは隠しファイル)

gist.github.com

この設定ファイルを読み込むとzshがめちゃくちゃ便利に使えます。
履歴の呼び出しやコマンドの補完、大文字小文字の自動認識など…
作者の方には頭が上がりません。

shellの見た目をよくする

tmuxの導入

brew install tmux

なんかかっこいいから入れてる。

itermを再起動
するとこんな文章が

zsh compinit: insecure directories, run compaudit for list.
Ignore insecure directories and continue [y] or abort compinit [n]?

なんか出てくるので調べてみると

qiita.com

どうやら権限の問題で警告が出ているらしい

compaudit
/usr/local/share/zsh/site-functions
/usr/local/share/zsh

どうやらこの二つのファイルが問題らしいので以下のコマンドを実行(権限を変更)

chmod 755 /usr/local/share/zsh/site-functions
chmod 755 /usr/local/share/zsh

tmuxの拡張機能
ここにあるファイルを展開して
home dirの .tmux/の下にコピー

mkdir .tmux
cd .tmux/

設定ファイル.tmux.confにこれをコピー

set -g @plugin 'tmux-plugins/tmux-battery'
set -g @plugin 'tmux-plugins/tmux-online-status'
set -g @plugin 'tmux-plugins/tmux-cpu'

# tmuxを256色表示できるようにする
set-option -g default-terminal screen-256color
set -g terminal-overrides 'xterm:colors=256'

# prefixキーをC-tに変更
set -g prefix C-t

# C-bのキーバインドを解除
unbind C-b

# ステータスバーをトップに配置する
set-option -g status-position top
# window-status を中央揃えで配置する
set-window-option -g status-justify "centre"

# #P => ペイン番号
# status-left の最大の長さを指定する。
set-option -g status-left-length 30
# 最左に表示
set-option -g status-left '#H:[#P]'


# status-right の最大の長さを指定する。
set-option -g status-right-length 100
# Wi-Fi、バッテリー残量、現在時刻
#set-option -g status-right '#(battery) #(getwifi.sh) %m/%d %H:%M:%S#[default]'
set -g status-right "Batt: #{battery_icon} #{battery_percentage} #{battery_remain} | Online: #(getwifi.sh) | CPU: #{cpu_icon} #{cpu_percentage} | %m/%d %H:%M:%S#[default] "
# status line の文字色を指定する。
set-option -g status-fg "colour255"

# status line を更新する間隔を 1 秒にする
set-option -g status-interval 1

# status line の背景色を指定する。
set-option -g status-bg "colour238"

# status line の文字色を指定する。
set-option -g status-fg "colour255"

# window-status のフォーマットを指定する。
set-window-option -g window-status-format " #I: #W "

# カレントウィンドウの window-status のフォーマットを指定する
set-window-option -g window-status-current-format "#[fg=colour255,bg=colour27,bold] #I: #W #[default]"

# | でペインを縦分割する
bind | split-window -h

# - でペインを縦分割する
bind - split-window -v

# 番号基準値を変更
set-option -g base-index 1


# マウス操作を有効にする
set-option -g mouse on
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e'"

set-option -g default-command "reattach-to-user-namespace -l zsh"

####
# コピーモードを設定する
#Setup 'C-@' to begin selection as in Emacs
bind-key -T copy-mode C-@ send -X begin-selection
bind-key -T copy-mode C-w send -X copy-pipe "reattach-to-user-namespace pbcopy"
bind-key -T copy-mode C-c send -X cancel

# Update default binding of `Enter` to also use copy-pipe
#unbind -T copy-mode Enter
#bind-key -T copy-mode Enter send -X copy-pipe "reattach-to-user-namespace pbcopy"
###
run '~/.tmux/plugins/tpm/tpm'
brew install reattach-to-user-namespace
tmux source-file ~/.tmux.conf

おまけに筆者のiTerm2の設定を写真で載せておきます。

f:id:salt22g:20200506221157p:plain
この画面から設定を変更できます。
f:id:salt22g:20200506221218p:plain
まずはターミナルと他のアプリとクリップボードを共有させます。
f:id:salt22g:20200506221306p:plain
スタート時にtmuxを起動するように設定。
f:id:salt22g:20200506221334p:plain
フォントと文字のデカさを変更
f:id:salt22g:20200506221611p:plain
透明度を上げて…

完成

Python

brew install python3

% python3
Python 3.7.3 (default, Mar 6 2020, 22:34:30)
[Clang 11.0.3 (clang-1103.0.32.29)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

これが出ればオーケイ
以降は

pip3 install {パッケージ名}
でパッケージをinstallできる。研究室や開発内容で必要なパッケージが異なるので確認をお願いします。
とりあえずpip3 自体をアップデート
>||
pip3 install --upgrade pip 
Could not install packages due to an EnvironmentError: [Errno 13] Permission denied: 'RECORD'
Consider using the `--user` option or check the permissions.

 
なんか怒られたの。
末尾に--userをつけると良いらしい。

pip3 install --upgrade pip --user

今後使うパッケージもpip3でinstall。
pip"3"をつけ忘れるとpythonの2系用のパッケージをインストールしてしまうので注意しましょう。

 

ROOT, Geant4

素粒子原子核物理の解析パッケージとしてスタンダードとなっているROOT。
粒子のシミュレーションツールとして有名なGeant4。
調べるといろんなインストール方法が出てきます。
これらは使い方を覚えるのが大変なのでインストールの段階でつまずくとやる気がなくなります。
Homebrewを使って楽をしましょう。

brew install root6
brew install geant4

ホームディレクトリに作成済みの.zshrcのどこかに
以下の内容を記載する。

. /usr/local/Cellar/root/6.20.02_1/bin/thisroot.sh 
#数字はインストールされたversionに従って変更。
cd /usr/local/Cellar/geant4/10.5.1/bin 
#数字はインストールされたversionに従って変更。
source ./geant4.sh
cd - > /dev/null

versionによって数字が変わりますがbrewによってインストールされる場所は同じです。

ROOTが動くか確認。

% \root
   ------------------------------------------------------------------
  | Welcome to ROOT 6.20/02                        https://root.cern |
  | (c) 1995-2020, The ROOT Team; conception: R. Brun, F. Rademakers |
  | Built for macosx64 on Mar 15 2020, 15:25:34                      |
  | From tags/v6-20-02@v6-20-02                                      |
  | Try '.help', '.demo', '.license', '.credits', '.quit'/'.q'       |
   ------------------------------------------------------------------

root [0]

Geant4についてはいつか解説したいです。(筆者が使いこなせるようになったら)

LaTeX編集環境

Overleafがあれば自分の環境にTeXコンパイル環境を作成しなくてもクラウド上で編集できるし便利である。
共同編集も楽々。
www.overleaf.com


 

その他

Xcode

Xcode

Xcode

  • Apple
  • 開発ツール
  • 無料
apps.apple.com
めっちゃくちゃ重たいけどとりあえず入れている。
ないと怒られる時があるので。

office365
https://apps.apple.com/jp/app-bundle/microsoft-365/id1450038993?l=en&mt=12&at=10l8JW&ct=hatenablogapps.apple.com
Macのpagesyakeynoteでも仕事はできるけれど
仕事での資料作成等で必ずmicrosoftのofficeを使うことが要求されつので諦めて買う。
職場や学校が法人契約してくれているとありがたいですね。

 
Clipy クリップボードの履歴を増やす
clipy-app.com
qiita.com



Auto desk Fusion360
www.autodesk.co.jp
3D cadアプリケーション
教育目的のライセンスなら無料でのライセンスなら無料で使える。操作に慣れればかなり便利。
2次元図面を作るのはちょっと難しい。

XQuartz
ssh先の画像やグラフを表示したりする奴。
問題が発生したのでこちらを参照願います。
salt22g.hatenablog.jp



 

pytorch, Docker…proxy環境下でのfile download

最近、Linuxサーバーにsshで接続し、その中でDockerを走らせてpytorchを使っている筆者です。
(何を言ってるのか分からねぇと思うが…)

proxy環境下での開発環境整備やDocker imageの作成で苦戦したのですが徐々に理解が進んでいます。
その辺りはいずれ記事にしたいと思っています。

pytorchのパラメータファイル自動ダウンロード…

今流行りの機械学習
pythonを使ったフレームワークの中の一つにpytorchがあります。

pytorch.org

研究室で導入しているので「私も勉強しなくては!」と思い、公式サイトのtutorialをやってみました。

最近の機械学習フレームワークはめちゃくちゃ賢い。
目的にあった学習済みのパラメータファイルをネットからダウンロードして使えるようになっています。
しかし、proxy環境で動くDockerの中でダウンロードが動かず
以下に詳細と解決策を。

環境

NAME="Ubuntu"
VERSION="16.04.6 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.6 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial

Docker image: nvcr.io/nvidia/pytorch:19.08-py3
以下のサイトからgit cloneしたやつです。
github.com


proxy環境
salt22g.hatenablog.jp
この記事にある設定を使っています。
proxy環境下のDockerの中でもwget等は問題なく使えています。

問題発生

transfer_learning_tutorial.pyという手法を試してみました。
pytorchによる画像分類のtutorialです。
github.com

このコードの253行目
https://github.com/pytorch/tutorials/blob/f557ee0addc24900929bafd4ceff2fc4c3f47072/beginner_source/transfer_learning_tutorial.py

model_ft = models.resnet18(pretrained=True)

この行で学習済みファイルを読みに行きます。
今回のコードでは

Downloading: "https://download.pytorch.org/models/resnet18-5c106cde.pth" to /root/.cache/torch/checkpoints/resnet18-5c106cde.pth

が実行されますがerrorが…

Traceback (most recent call last):
  File "/opt/conda/lib/python3.6/urllib/request.py", line 1318, in do_open
    encode_chunked=req.has_header('Transfer-encoding'))
  File "/opt/conda/lib/python3.6/http/client.py", line 1254, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/opt/conda/lib/python3.6/http/client.py", line 1300, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/opt/conda/lib/python3.6/http/client.py", line 1249, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/opt/conda/lib/python3.6/http/client.py", line 1036, in _send_output
    self.send(msg)
  File "/opt/conda/lib/python3.6/http/client.py", line 974, in send
    self.connect()
  File "/opt/conda/lib/python3.6/http/client.py", line 1407, in connect
    super().connect()
  File "/opt/conda/lib/python3.6/http/client.py", line 946, in connect
    (self.host,self.port), self.timeout, self.source_address)
  File "/opt/conda/lib/python3.6/socket.py", line 704, in create_connection
    for res in getaddrinfo(host, port, 0, SOCK_STREAM):
  File "/opt/conda/lib/python3.6/socket.py", line 745, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -3] Temporary failure in name resolution

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "transfer_learning_tutorial_org.py", line 254, in <module>
    model_ft = models.resnet18(pretrained=True)
  File "/opt/conda/lib/python3.6/site-packages/torchvision/models/resnet.py", line 231, in resnet18
    **kwargs)
  File "/opt/conda/lib/python3.6/site-packages/torchvision/models/resnet.py", line 217, in _resnet
    progress=progress)
  File "/opt/conda/lib/python3.6/site-packages/torch/hub.py", line 457, in load_state_dict_from_url
    _download_url_to_file(url, cached_file, hash_prefix, progress=progress)
  File "/opt/conda/lib/python3.6/site-packages/torch/hub.py", line 372, in _download_url_to_file
    u = urlopen(url)
  File "/opt/conda/lib/python3.6/urllib/request.py", line 223, in urlopen
    return opener.open(url, data, timeout)
  File "/opt/conda/lib/python3.6/urllib/request.py", line 526, in open
    response = self._open(req, data)
  File "/opt/conda/lib/python3.6/urllib/request.py", line 544, in _open
    '_open', req)
  File "/opt/conda/lib/python3.6/urllib/request.py", line 504, in _call_chain
    result = func(*args)
  File "/opt/conda/lib/python3.6/urllib/request.py", line 1361, in https_open
    context=self._context, check_hostname=self._check_hostname)
  File "/opt/conda/lib/python3.6/urllib/request.py", line 1320, in do_open
    raise URLError(err)
urllib.error.URLError: <urlopen error [Errno -3] Temporary failure in name resolution>

解決法

どうやらpythonのrequest.pyとやらがproxyの設定を読み込めていない模様。

qiita.com

こちらの記事によると環境変数を設定すれば良いとのこと。

export HTTP_PROXY="http://${USERNAME}:${PASSWORD}@${PROXY_HOST}:${PROXY_PORT}"

筆者もこの設定したはずなんだけど動かない。
そこでもう一つの解決法を試しました。
pythonのプログラムにこちらを追加。

import os
os.environ["http_proxy"] = "http://user:pass@server:port"
os.environ["https_proxy"] = "http://user:pass@server:port"

すると問題なくダウンロードが行われ学習が開始されました。

各ドライブからのwgetによるファイルのダウンロードの方法

最近Linuxサーバー上で仕事することが増えたため備忘録として残します。
随時加筆予定

環境

Ubuntu 18.04(Docker)

下準備

qiita.com

プロキシ環境下なので
こちらの記事を参考に~/.wgetrcを作成し以下を記入

http_proxy=http://${xxx.xxx.xxx.xxx}:${pp}/
https_proxy=http://${xxx.xxx.xxx.xxx}:${ss}/

ppはhttpのポート番号、
ssはhttpsのポート番号である。

これを設定していないと

wget -e "http_proxy=${xxx.xxx.xxx.xxx}:${pp}/" 〜〜

を毎回打ち込むことになります。

Google drive

qiita.com

Google driveのブラウザ上でファイルを右クリック。
共有可能なリンクを取得を押すとクリップボードにリンクがコピーされます。


f:id:salt22g:20200501041319p:plain:w300
右クリック時の画面

https://drive.google.com/open?id=〇〇〇〇〇〇
〇〇〇〇〇〇をコピーして

wget --no-check-certificate "https://drive.google.com/uc?export=download&id=〇〇〇〇〇〇" -O 保存名
    • no-check-certificateをつけておくとデカいファイルでもセキュリティチェックなしで行けるようです。

qiita.com
こちらの用にエイリアスを組むのも賢いですね。

~/.zsh_aliasesに以下を記載

function gdrive_download () {
  CONFIRM=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate "https://docs.google.com/uc?export=download&id=$1" -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')
  wget --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$CONFIRM&id=$1" -O $2
  rm -rf /tmp/cookies.txt
}

ターミナルでこちらを読み込む
source .zsh_aliases

以降は

gdrive_download 〇〇〇〇〇〇 保存名

で使える。

Dropbox

ちゃんと調べずに適当に試行錯誤したらできました。
こちらはリンクをそのまま貼って" "の中に閉じる。
ただし、後ろについてる〜?dl=0は消す。

wget "https://www.dropbox.com/〜/〜/ファイル名"

今後も色々追加します。

参考
qiita.com
qiita.com
qiita.com

macでXQuartzを入れたらemacsが死んだ件

結論から言うとemacsを再インストールしたら直りました。

SSH先の画像を表示したいのでXQuartz入れよー。」
www.xquartz.org


と言うことでいつも通りhomebrewにお願いした。

brew.sh

brew cask install xqurtz

なんかimagemagickとやらがいるらしいのでこいつもinstall

brew install imagemagick


PCを再起動したところ問題が発生

emacs hogehoge

dyld: Library not loaded: /usr/local/opt/libffi/lib/libffi.6.dylib
Referenced from: /usr/local/opt/p11-kit/lib/libp11-kit.0.dylib
Reason: image not found

 

なんでや!!!!emacs関係ないやろ!! 


error文で検索すると
github.com
この指示通りlibffiを再インストールしてみる。

brew reinstall libffi

しかし効果なし。

 
blue1st-tech.hateblo.jp
このブログによると「シンボリックリンクを更新せい」とのこと

ln -s /usr/local/opt/libffi/lib/libffi.dylib /usr/local/opt/libffi/lib/libffi.7.dylib

しかし効果なし。

 
結局、「emacsが動かねえ」と言う情報を加えるとここにヒット。
stackoverflow.com

brew reinstall emacs

==> Reinstalling emacs
==> Installing dependencies for emacs: p11-kit
==> Installing emacs dependency: p11-kit
"以下略"

動くようになった。
おそらくp11-kitが悪さしてたんでしょう。
いつもemacsばっかり使ってるのでいざと言う時のためにvimも最低限使えるようにしないとな…

 
Homebrewはめちゃくちゃ便利なんだけどたまに依存関係が死んで他のところが動かなくなったりするので注意が必要ですね。
ではまた!!。


参考

github.com


blue1st-tech.hateblo.jp


stackoverflow.com