Ubuntuでgoogle drive をマウントする
google drive をマウントする
Ubuntu標準でgoogleドライブをマウントする機能(設定⇛オンラインアカウント⇛googleの「ファイル」を「ON」する)があるが遅過ぎてダメなので以下を使う。
GitHub - astrada/google-drive-ocamlfuse: FUSE filesystem over Google Drive
#インストール $ sudo add-apt-repository ppa:alessandro-strada/ppa $ sudo apt-get update $ sudo apt-get install google-drive-ocamlfuse #マウント $ mkdir ~/gdrive $ google-drive-ocamlfuse ~/gdrive 〜ここでブラウザでoauth認証して暫く待つ〜 Access token retrieved correctly. #マウントできたか確認 $ ls -l ~/gdrive
環境
Ubuntu18.04LTS
テキスト選択でポップアップ翻訳する 〜 GoldenDict 〜
目的
- 英語テキストをマウスで選択すると翻訳結果がポップアップされるようにする
- 英語⇛日本語の単語翻訳。
- 環境はUbuntu18.04
GoldenDict(辞書ソフト)について
- マウスでテキスト選択するとポップアップ表示してくれる便利な辞書ソフト
- StarDictの後継ソフトのようです・・・
- オンライン辞書やwikiやローカル辞書を使える
- クロスプラットフォームで linux / win / mac 等で使える。
手順
GoldenDictインストール
sudo apt -y update sudo apt -y install goldendict
wikidict(英語)の設定
- メニューバー ⇛ 編集 ⇛ 辞書 ⇛ ソース ⇛ wikipedia を開く。
- English WikiDictionary ( https://en.wiktionary.org/w )のチェックボックスをオン
- OKをクリック
ローカル辞書の用意
stardictの辞書ファイルがそのまま使えるようです。 「 (stardict or goldendict) and 辞書 」等で検索、もしくは以下からDL。
- https://www.babylon-software.com/free-dictionaries/languages/Babylon-English-Japanese/907.html
- http://pkgs.fedoraproject.org/repo/pkgs/stardict-dic-ja/
インストールは
sudo tar jxvf stardict-jmdict-ja-en-2.4.2.tar.bz2 -C /usr/share/stardict/dic/ sudo tar jxvf stardict-jmdict-en-ja-2.4.2.tar.bz2 -C /usr/share/stardict/dic/
設定
以下の設定画面で好みにする。
- メニューバー ⇛ 編集 ⇛ 環境設定 ⇛ インターフェース
- メニューバー ⇛ 編集 ⇛ 環境設定 ⇛ スキャンポップアップ
システムトレイにいれておくのが使いやすい。また「すべて選択されたキーが押されているときだけポップアップ」を設定しないと頻繁にポップアップされて目障り・・・
アプリ再起動
閉じるボタンではトレイに格納されるだけなので
メニューバー ⇛ ファイル ⇛ 終了 してから再起動。
思った事
- google翻訳で文単位で翻訳ができない・・・
- Macは以下の組み合わせがすごくいい!
- 強めのクリック ・・・ OS標準の辞書
- Translate Tab ・・・ $6 ぐらい
- PopClip for Mac ・・・ $10ぐらい
ー以上ー
『postfix』 外部smtpサーバ(gmail)経由でメール送信する
動機
①運用しているWebサーバからメール送信したい ⇛ ②自前でsmtpサーバを立てる ⇛ ③gmail宛にメール送信すると、お前のsmtpサーバは信用ならないから中継しないと断れれる ⇛ ④困った ⇛ ⑤gmailアカウントでsmtp認証してそこからメール送信する。
※最近はセキュリティーが厳しく③のようにはじかれたりする。以下は関係してそうなwiki
Sender Policy Framework - Wikipedia
環境
普段DockerベースでWebサーバを運用しており、ベースイメージがDebian(Stretch)を使っているので、今回はこれがターゲットです。
Debian + postfix
Debian(Stretch) 9.6
Postfix 3.1.8-0+deb9u1
Dockerイメージ
使ったのは、php:7.1.24-apache-stretch です。元イメージは、debian:stretch-slim です。
gmailの設定
gmailアカウントでは、デフォルト設定だと OAth2認証のみ有効になっているようです。他の認証方式だとエラーになります。 gmailアカウントでログイン⇒ログインとセキュリティ⇒アカウントにアクセスできるアプリ⇒安全性の低いアプリの許可 を「有効」にする。 https://myaccount.google.com/security
上記を許可しないと以下のようなmailログを吐いてエラーになりました。また使ったgmailアカウント宛に、「ログインをブロックしました」とメールが飛んできました。
Dec 10 12:58:45 e08929302e84 postfix/smtp[1743]: 1A08426107E: to=<your@gmail.com>, relay=smtp.gmail.com[108.177.97.108]:587, delay=2.4, delays=0.02/0.01/2.3/0, dsn=4.7.14, status=deferred (SASL authentication failed; server smtp.gmail.com[108.177.97.108] said: 534-5.7.14 <https://accounts.google.com/signin/continue?sarp= ~(中略)~ Please log in via?534-5.7.14 your web browser and then try again.?534-5.7.14 Learn more at?534 5.7.14 https://support.google.com/mail/answer/78754 h19sm14266437pfn.114 - gsmtp)
sasl2
sasl2のインストール
apt install libsasl2-2 sasl2-bin libsasl2-modules
sasl2がインストールされていないと、mailログに
warning: SASL authentication failure: No worthy mechs found
と表示されてエラーになる。
postfix
postfixインストール
インストール途中で、設定を聞かれますが、後で設定ファイルを編集するので、ここでは「1の設定なし」を選択。
$ apt update -y $ apt install -y postfix Postfix Configuration --------------------- Please select the mail server configuration type that best meets your needs. No configuration: Should be chosen to leave the current configuration unchanged. Internet site: Mail is sent and received directly using SMTP. Internet with smarthost: Mail is received directly using SMTP or by running a utility such as fetchmail. Outgoing mail is sent using a smarthost. Satellite system: All mail is sent to another machine, called a 'smarthost', for delivery. Local only: The only delivered mail is the mail for local users. There is no network. 1. No configuration 2. Internet Site 3. Internet with smarthost 4. Satellite system 5. Local only General type of mail configuration: 1 <リターン>
postfix設定ファイル
postfixの設定ファイル/etc/postfix/main.cf
を編集。cp main.cf.prot main.cf
で雛形をコピーして使います。いろいろ書いてあるけど、修正したのは以下の箇所
#自分の環境に合わせて書き換え myhostname = host.mydomain mydomain = mydomain myorigin = $mydomain #パス等の指定 sendmail_path = /usr/sbin/postfix newaliases_path = /usr/bin/newaliases mailq_path = /usr/bin/mailq setgid_group = postdrop #つかわないのでコメントアウト化 #html_directory = #manpage_directory = #sample_directory = #readme_directory = #relayとsaslの設定追記 # smtp server relay with sasl_auth relayhost = [smtp.gmail.com]:587 smtp_use_tls = yes smtp_sasl_auth_enable = yes smtp_tls_security_level = encrypt smtp_sasl_tls_security_options = noanonymous smtp_sasl_mechanism_filter = plain smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_tls_CApath = /etc/pki/tls/certs/ca-bundle.crt
アカウント情報の設定
main.cfのsmtp_sasl_password_mapsに指定したファイルにアカウント情報を記述します。
経由するsmtpサーバ アカウント:パスワード
と記述します。
/etc/postfix/sasl_passwdを編集
$ touch /etc/postfix/sasl_passwd $ chmod 600 /etc/postfix/sasl_passwd $ vi /etc/postfix/sasl_passwd smtp.gmail.com your_account@gmail.com:your_password
アカウント情報をハッシュ
$ postmap /etc/postfix/sasl_passwd
postfix再起動
$ /etc/init.d/postfix reload
テスト
mailコマンドとログ確認用のrsyslogの準備
このdockerイメージには、mailコマンドが入っていないので、mailutilsパッケージをインストールします。 また、syslogも入ってないので、インストールしてmailログが出れるよしておきます。
$ apt install -y mailutils rsyslog $ /etc/init.d/rsyslog start
mail送信テスト
$ mail hogehoge@fugafuga.com CC: Subject: test mail sub honnbunn1 honnbunn2 <CTL-D>
これでメールが届けばOK。
うまく送信できたら以下のようなログがでる・・・
to=<hoge@fuga.com>, relay=smtp.gmail.com[108.177.97.109]:587, delay=2.2, delays=0.01/0.01/1.1/1, dsn=2.0.0, status=sent (250 2.0.0 OK - gsmtp)
うまくいかないときのログ強化
main.cfに以下を指定するとmail.logにデバック用の詳細な情報がでるのでこれで原因を確認。
debug_peer_list = smtp.gmail.com
Let's Encrypt! 〜無料でSSL化〜
背景
運用しているWebサーバを無料で、独自/常時SSL化する。
よくWordPress等のCMSが使えるマネージド型レンタルサーバを借りていれば無料でSSL化するサービスが提供されていますが、自分が借りているのは格安高性能クラウドのVultrです。SSLも自前で導入する必要があります。
Let's Encrypt!
云わずと知れた、無料で使えるSSL認証局 (Certification Authority (CA) )です。 日本語ポータルもあるのが助かりますね・・・ letsencrypt.jp
- 無料で SSL/TLS サーバ証明書を発行
- 非営利団体の ISRG (Internet Security Research Group) が運営。世界のWebを全て常時SSLにするというのが理念。大手(シスコ、Akamai、電子フロンティア財団)がスポンサーとして支援。
- ワイルドカード証明書とACME v2へ対応(2018年03月15日)
- Certbotというツールで証明書発行・更新が行える
- 証明書は有効期限が3ヶ月と短い。しかしCerbotで自動定期更新を行うことで半永久的に使えるので使用上困ることはない。
環境
普段DockerベースでWebサーバを運用しており、ベースイメージがDebian(Stretch)+Apache2を使っているので、今回はこれがターゲットです。
※いつもはUbuntuユーザーなのです。DebianでもUbuntuでも手順はあまりかわらないはず。aptつかえるし・・・
Debian + Apache2 + certbot
Dockerイメージ
使ったのは、php:7.1.24-apache-stretch
です。元イメージは、debian:stretch-slim
です。
certbotで証明書発行してApacheに登録
インストール
$ apt install -y certbot $ certbot --version certbot 0.10.2
certbotで証明書発行
- certonly で証明書発行のみ
- --webrootオプション
certbotは、webサーバーを内包していて、内容しているwebサーバを使って証明書を発行する時は、standalone
モード。使わない場合(ApacheやNginxを使う時)はwebroot
モードを使用する。 - -d でドメインを指定する
-d example.com -d test.example.comのように複数指定できる。最初に記述したドメインがコモンネームになる。 - -w でドキュメントルートを指定
ドメインごとに別のドキュメントルートディレクトリを指定したいときには、-dオプションの直前に-wオプションを書く。 - --rsa-key-size 4096 で鍵長4096bitに指定
- -m で連絡用メアドを指定。(期限切アラート等が送られてくる)
certbot certonly --agree-tos --webroot --rsa-key-size 4096 -w /var/www/html -d www.hogehoge.com -m webmaster@hogehoge.com Saving debug log to /var/log/letsencrypt/letsencrypt.log Obtaining a new certificate Performing the following challenges: http-01 challenge for www.hogehoge.com Using the webroot path /var/www/html for all unmatched domains. Waiting for verification... Cleaning up challenges Generating key (4096 bits): /etc/letsencrypt/keys/0000_key-certbot.pem Creating CSR: /etc/letsencrypt/csr/0000_csr-certbot.pem IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/www.hogehoge.com/fullchain.pem. Your cert will expire on 2019-02-25. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - If you lose your account credentials, you can recover through e-mails sent to webmaster@hogehoge.com. - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
/etc/letsencrypt/live/www.hogehoge.com/ 以下に鍵ファイルが生成されている。これらをWebサーバに設定する。
Apache設定
SSL設定ファイルは/etc/apache2/sites-available/default-ssl.conf
これを編集する。
必要なのは以下の設定。
ServerName www.hogehoge.com DocumentRoot /var/www/html SSLEngine on SSLCertificateFile /etc/letsencrypt/live/www.hogehoge.com/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/www.hogehoge.com/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/www.hogehoge.com/chain.pem
Apacheに設定反映させてリロードする。
$ a2enmod rewrite Enabling module rewrite. To activate the new configuration, you need to run: service apache2 restart $ a2enmod ssl Considering dependency setenvif for ssl: Module setenvif already enabled Considering dependency mime for ssl: Module mime already enabled Considering dependency socache_shmcb for ssl: Enabling module socache_shmcb. Enabling module ssl. See /usr/share/doc/apache2/README.Debian.gz on how to configure SSL and create self-signed certificates. To activate the new configuration, you need to run: service apache2 restart $ a2ensite default-ssl.conf Enabling site default-ssl. To activate the new configuration, you need to run: service apache2 reload $ service apache2 reload [ ok ] Reloading Apache httpd web server: apache2.
テスト
Webブラウザでhttps://www.hogehoge.com/にアクセスしてつながるか確認。ブラウザの鍵マークが表示されればOK。
また、以下のサイトでSSL証明書のテストができるのでこれで確認する。サイトにホスト名を入力して実行する。
https://www.ssllabs.com/ssltest/
ちなみに、B判定でした。なんでだろ・・・。今日は時間ないので、あとでA判定目指そう・・・
常時SSL化
せっかくSSL対応したので、httpをhttpsにリダイレクトして常時SSL化にします。
/etc/apache2/apache2.conf
を編集します。今回は / 以下すべて対象。
<Directory /> 〜中略〜 #### forword http -> https ----add start <IfModule mod_rewrite.c> RewriteEngine On LogLevel alert rewrite:trace3 RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] </IfModule> #### forword http -> https ----add end 〜中略〜 </Directory>
これで、ブラウザでアクセスして、http://www.hogehoge.com/ ⇛ https://www.hogehoge.com/ にリダイレクトされればOK。
SSL証明書自動更新
Let's Encrypt!では、証明書が90日間の期限で、期限切れの30日前から更新できます。わすれないようにcronに登録しておきます。
certbotで更新
certbot renew
ですべての証明書が更新される。- --post-hook "command"
で、renew後に、commandが実行される。renewは更新期限が迫らないうちは実行がスキップされる。その場合はpost-hookも実行されない。以下のように、apache2にリロードする等の使い道。 - --force-renew
更新期間外でも強制的に更新できるが、何回もやると弾かれるらしい・・・。動作確認時や鍵長変更など期限をまたずに更新したい時だけ使うようにする。
certbot renew --post-hook "service apache2 reload"
cron に登録
3ヶ月期限で、1ヶ月前から更新できるので、2ヶ月に1度の実行でよいはず。だが、ここでは、念のため1周間に1度実行するように設定する。
自作GPUマシン完成(フェーズ1)
『手元にGPUマシンを』~シリーズ第5回~
やっとGPUを買いました。最終的にGTX1080tiにしました。10月中旬に買ってとりあえずGPUマシンは完成していたのですがなにかと時間がなく、ブログにも少し飽きてたのでほったらかし状態でした。やっとモチベーション戻ってきたので再開したいとおもいます。
前回までのあらすじと本シリーズについて
迷ったあげくPalitの1080tiに
RTX2080tiですがMSIのGaming X Trioがコアクロックも高めで静寂でよく冷えると評判が良いので狙っていたのですが、10月中旬の時点で在庫が劇薄でなかなか手に入りそうではありませんでした。現在でも品薄です・・・。2080tiの値段を考えると1080tiの2倍ぐらいするので、普通にFP32演算ベースだとコスパが悪すぎます。そうなると2080tiの魅力は、①FP16演算、②TensorCore(4x4テンソルのFP16演算)、③NVLINK SLI(見かけ上複数のGPUが1つのGPUとして振舞う)といった感じでしょうか・・・。左記①②はどちらかというと推論向きです。もともとNVIDIAはグラフィックのAI強化目的(推論)でTensorCoreを載せてるので当たり前といえば当たり前です。③はで2枚構成で35万円ぐらいになってしまいます。またパフォーマンス的に未知なので人柱感が強いです(それでも11GBx2枚で、22GBのGPUカーネルコードを実行できるのは魅力的・・・)。
以上を考慮して、1080tiを買うことにしました。1080tiは一時期のマイニングブームのころより大分値段が落ち着いていますし在庫も豊富です。口コミも多いので参考にさせてもらい、定評があったPalitの「GTX 1080ti Super Jet Strem 風」を買いました。このグラボはドスパラとPalitのコラボモデルで、ドスパラで8.4万円ぐらいで買えます。ヤフオクでもUsed品探してみましたが落札相場が6.4万円ぐらいでした。グラボは使用環境(オーバークロックなど)で寿命が短くなる等聞いたこともあり保証なしの中古品で2万差なので新品を購入しました。
取り付つ
ハイエンドグラボは初めてかったのですが、大きさにビックリしました。これでも2連ファンで控えめなほうです。ちなみに、MSI 2080ti Gaming X Trioは3連ファンでこのPalitよりさらに大きく330mmもあります。 MSIはケースに収まるかな・・・と、そんなことを思いつつ取り付けました。流用したSilverStoneのPCIeケーブル(PCIe補助電源ケーブルを流用してみた - vz-sharkのブログ)もバッチリで問題なく動きました。
ベンチマーク&消費電力確認
- Win10のNiceHash
NiceHashでマイニングすると、333ワット、アルゴリズムX16Rで18.885M H/s。。
GTX700ti(2GB)で、137ワット、2.146M H/sだったのでほぼ想定通りの結果。
これまでにかかった費用(パーツ第のみ計上)
~<今回購入分詳細> ~
- Palit GTX 1080ti Super Jet Stream = 83980円
- 合計: 83980円
~<シリーズ通した全体>~
- 第1回分 : 0円
- 第2回分 : 70,000円
- 第3回分 : 4,415円
- 第4回分 : 991円
- 第5階分 : 83,980円
- 合計 : 159,386円
最後に
とりあえず完成です。これをフェーズ1として、しばらく運用します。あとは、2080tiの情報や相場などを見つつ臨機応変にをグレードアップなどしていこうと思います。これが自作のだいごみですね。GPUメモリ8Gの1080/1070ti/1070当たりがヤフオクで大分安くでてます・・・。そのへんを増設してマルチGPUをフェーズ2にしようかな・・・。Chainer v5にChainerMNが統合されたらしいので、マルチGPUが扱いやすくなってそう・・・
-続くー
「手元にGPUマシンを」シリーズインデックス
『手元にGPUマシンを』シリーズ投稿のインデックスページです。
動機。今までのあらすじ。まとめなど。(随時更新中・・・)
動機
今まで初期コスト0で始められるクラウドのGPUインスタンスを使用していました。しかし開発中はコーディング/デバック/休憩/ご飯/犬の散歩/雑用etcで何かとアイドル時間が長く、クラウドVM上で開発するのはコスト的に効率が悪いという結論に至りました(まあ初めから分っていた事ですが)。こまめにインスタントを起動/終了して節約するのも悪くないですが何しろ面倒くさいです。なので今後は手元にGPUマシンを置き、時間課金を気にすることなく開発/デバック/犬の散歩を行い、GPUパワーが必要な時はクラウドのGPU(特に割安なGCPのプリエンプティブインスタンス や AWSのスポットインスタンス)でトレーニングを行う。というスタイルに変えようと思います。本シリーズは、この思惑を実現するために行った環境構築作業・費用などを記録したシリーズ投稿です。
現在までのあらすじ
シリーズ第1回~『[GPUマシンの購入を検討してみた - vz-shark:Dive2Deep』
購入を検討したがお金がないので自作をすることにシリーズ第2回~『自作GPUマシンのパーツ購入 - vz-shark:Dive2Deep』
パーツ集め。組み立て。OSインストール。起動OK。しかし肝心なGPUはまだ購入検討中・・・シリーズ第3回~『自作GPUマシンのPCIe補助電源ケーブルを流用してみた - vz-shark:Dive2Deep』
PCIe補助電源ケーブルを流用(テスタで電圧計測OK)。まだGPUは買っていない・・・シリーズ第4回~『消費電力モニタ付けてみた - vz-shark:Dive2Deep』
肝心なGPUがまだですが、今のうちに消費電力モニタをつけておきます。シリーズ第5回~『自作GPUマシン完成(フェーズ1) - vz-shark:Dive2Deep』
GPUは1080tiにしました。とりあえずGPUマシン(フェーズ1)完成です。
現在までに掛かった費用
- 第1回分 : 0円
- 第2回分 : 70,000円
- 第3回分 : 4,415円
- 第4回分 : 991円
- 第5階分 : 83,980円
- フェーズ1完成時 : 159,386円
- シリーズ通した合計 : 159,386円
GPUマシン(フェーズ1)構成
- ケース : 普通のミドルタワー
- マザーボード : ASRock Fatal1ty X299 Gaming K6
- CPU : Intel Core i7 7800X (6コア12スレッド)
- メモリ : DDR4-2400 16GB x 1 (Singleチャンネル動作)
- GPU : Palit Geforce GTX 1080Ti Super JetStream 風(Palit NEB108TS15LC-1020J )
- ストレージ1 : M.2 SSD (512GB) ※Ubuntuインストール
- ストレージ2 : SATA3 SSD(512GB) ※Win10インストール
- ストレージ3 : USB3.0 外付けHDD (2TB) ※非冗長
- 電源 : Stronger 700W 80PLUSスタンダート ※PCIe補助ケーブル(SiliverStone製)流用
最後に一言
とりあえずGPUマシン完成しました。しばらくこれで運用します。
-続くー
GCP認定~01「Google Cloud Platform」
GCP (Google Cloud Platform) 概要
現在Googleが提供しているクラウドサービスのブランドと特徴
GCPで提供している主なサービス
カテゴリ | GCPサービス名 | サービス概要 |
---|---|---|
管理・運用 | Cloud Console | ブラウザ上の総合管理ツール(GUI) |
Cloud Shell | ブラウザ上で実行するコマンドラインインターフェース | |
Stackdriver | 統合監視サービス | |
Cloud IAM | ユーザーアクセス管理 | |
コンピュート | Compute Engine (GCE) | 仮想マシンサービス |
Container Engine (GKE) | マネージドKubernetsサービス | |
App Engine (GAE) | アプリケーションプラットフォーム | |
ストレージ | Cloud Storage | オブジェクトストレージ |
データベース | Cloud SQL | マネージドRDBMSサービス |
Cloud DataStore | NoSQLデータベース | |
ネットワーク | Cloud Virtual Network | 仮想ネットワーク |
Cloud Load Balancing | ロードバランサ | |
Cloud DNS | DNSサービス | |
Cloud CDN | ||
ビックデータ | Big Query | |
Cloud BigTable | ||
Cloud Spanner | ||
Cloud Dataflow | ||
Cloud Dataproc | マネージド Hadoop / Spark サービス | |
Cloud Pub/Sub | ||
機械学習 | Cloud Vision API | 画像分析サービスAPI |
Cloud Speech API | 音声のテキスト変換サービスAPI | |
Cloud Translation API | テキスト翻訳サービスを提供するAPI | |
Cloud Natual Language API | 自然言語分析サービスを提供するAPI | |
Machine Learning Engine | Tensorflowを使った機械学習環境。GPU/TPUを使用した大規模なトレーニングが行える |