読者です 読者をやめる 読者になる 読者になる

basyura's blog

あしたになったらほんきだす。

Arc Mouse

2.4ghz Wireless Foldable Folding Arc Optical Mouse for Microsoft Laptop Notebook - Black 並行輸入

(この画像はサイドボタンの形が違うな)

旧型の Arc Mouse。見た目と操作感が好きでずっと使っているのだけど壊れやすい。特にホイール。圧力に弱いようでカバンに入れて持ち歩くとダメージが蓄積しやすい。これまでも定期的に買い換えている。今回はホイールも気になるけど左クリクックが引っかかる感じがするので買い換え。ところが、ヨドバシにもビックカメラにもない。そもそも Microsoft のマウスが無い。Arc Mouse より前から Microsoft のマウスを使っている。使いやすくて良い。なのに無い。生産をやめたとも思え無いし。仕方ないので amazon で注文。ちょっと高いけど今から他に良いマウスを探すのはダルいので仕方なし。

アルドノア・ゼロ

久しぶりに amazon prime video を起動したらアルドノア・ゼロを見つけてしまったので一気見。と言いつつほぼ戦闘のみ。

放送中も面白かったが、改めて見ても面白い。カッコいいという方が正しいか。

ロボットアニメ作品としては「リアルロボット路線でいま一度、物語をつくるとどうなるか」という視点で製作され、地球側のロボット(カタフラクト)が工業的なデザインのリアルロボット、火星側が古代文明の超技術を導入したスーパーロボットとして位置づけられており、「火星側のスーパーロボットをどうやって地球側のリアルロボットが倒していくか」を全体のコンセプトとする
アルドノア・ゼロ - wikipedia

カッコいい。勝つんだろうと分かっていつつもハラハラする。伊奈帆みたいに冷静沈着にバッタバッタと課題をなぎ倒していきたい今日この頃。

キノコ狩りのテーマ。パワフル。何回も聞いてしまう。

作曲の澤野 弘之さん、よく知らなかったけど作品見るとどれも見たことあるようなので驚く。医龍とか。

いくつか iTunes Store でかいつまんで購入した。

Docker - ToolBox で動いてる dokuwiki のバックアップ

やっつけ。

C:\Program Files\Docker Toolbox\start.sh をコピーして backup.sh にリネームして編集。

                           ##         .
                     ## ## ##        ==
                  ## ## ## ## ##    ===
              /"""""""""""""""""\___/ ===
         ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
              \______ o           __/
                \    \         __/
                 \____\_______/
   
   EOF
   echo -e "${BLUE}docker${NC} is configured to use the ${GREEN}${VM}${NC} machine with IP ${GREEN}$(${DOCKER_MACHINE} ip ${VM})${NC}"
   echo "For help getting started, check out the docs at https://docs.docker.com"
   echo
   cd
   
+  cd ワークディレクトリに移動
+  rm -rf backup
+  mkdir backup
+  cd backup
+  docker cp dokuwiki:/var/www/wiki/conf .
+  docker cp dokuwiki:/var/www/wiki/data .
+  docker cp dokuwiki:/var/www/wiki/lib/tpl .
+  cd ..
+  tar cvfz backup.targ.gz backup
+  rm -rf backup
+  
+  exit

backup.bat を作成。

cd "C:\Program Files\Docker Toolbox"
"C:\Program Files\Git\bin\bash.exe" --login -i "C:\{パス}\backup.sh"

タスクスケジューラに登録。

リストアする際は data フォルダを置き換えた後に chown -R nobody:nobody で変更。

Docker - DokuWiki をサブディレクトリ運用

DokuWiki が便利なので Docker で立ててみる。

インストール

コンテナを取得して起動 (nginx 版)

$ docker pull vimagick/dokuwiki
$ docker run -d -p 8000:80 --name dokuwiki

初期設定

サイトの設定

  • http://localhost:8000/doku.php?id=start&do=admin&page=config
  • ✓ を入れる → URL上の名前空間の区切りにスラッシュを使用
  • ✓ を外す
    • DokuWikiの更新とセキュリティに関する情報をチェックしますか?
    • 最初の見出しをページ名とする → 常に使用する
  • .htaccess を使用する

コンテナにログイン

$ docker exec -it dokuwiki sh

ディレクトリ名を変更

$ cd /var/www
$ mv html dokuwiki " ディレクトリが消えないけど放置

/etc/nginx/nginx.conf を編集

  • location ~* .(js ・・・ のところを消さないと画像が出ないのがよく分からない
/etc/nginx # diff nginx.conf.org nginx.conf
--- nginx.conf.org
+++ nginx.conf
@@ -17,7 +17,7 @@
  server_name             _;
  client_max_body_size    4M;
  client_body_buffer_size 128k;
- root                    /var/www/html;
+ root                    /var/www;
  index                   doku.php;
 
  location ~ /(data/|conf/|bin/|inc/) {
@@ -31,19 +31,19 @@
    log_not_found       off;
  }
 
- location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
-   expires  31536000s;            
-   add_header  Pragma "public";      
-   add_header  Cache-Control "max-age=31536000, public, must-revalidate, proxy-revalidate";
-   log_not_found  off;                                                                        
- }                                                                                                   



- location / {
+ location /dokuwiki {
    try_files     $uri $uri/ @dokuwiki;
  }
 
   location @dokuwiki {
-    rewrite   ^/_media/(.*) /lib/exe/fetch.php?media=$1 last;
-    rewrite   ^/_detail/(.*) /lib/exe/detail.php?media=$1 last;
-    rewrite   ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2 last;
-    rewrite   ^/(.*) /doku.php?id=$1&$args last;
+    rewrite   ^/dokuwiki/_media/(.*) /dokuwiki/lib/exe/fetch.php?media=$1 last;
+    rewrite   ^/dokuwiki/_detail/(.*) /dokuwiki/lib/exe/detail.php?media=$1 last;
+    rewrite   ^/dokuwiki/_export/([^/]+)/(.*) /dokuwiki/doku.php?do=export_$1&id=$2 last;
+    rewrite   ^/dokuwiki/(.*) /doku.php?id=$1&$args last;
   }
      
   location ~ \.php$ {
-    try_files           $uri $uri/ /doku.php;
+    try_files           $uri $uri/ /dokuwiki/doku.php;
     include             fastcgi_params;
     fastcgi_param       SCRIPT_FILENAME $document_root$fastcgi_script_name;
     fastcgi_param       REDIRECT_STATUS 200;

nginx を再起動

$ nginx -s reload

Apache でリバースプロキシ

—link を指定してコンテナを作成する

docker run -d -p 80:80 --name apache \
                       --link dokuwiki:dokuwiki \
                       jmferrer/apache2-reverse-proxy

コンテナに入って設定を変える

$ docker exec -it apache bash
$ apt-get update
$ apt-get install vim
$ vi /etc/apache2/apache2.conf 

以下を追記

ServerName localhost
ProxyPass /dokuwiki http://dokuwiki/dokuwiki
ProxyPassReverse /dokuwiki http://dokuwiki/dokuwiki

再起動

$ apache2ctrl -k restart

Timezone の変更

dokuwiki/inc/init.php L88

// set timezone (as in pre 5.3.0 days)
// date_default_timezone_set(@date_default_timezone_get());                 
date_default_timezone_set('Asia/Tokyo'); 

Plantuml Plugin

プラグインをインストール

必要なソフトウェアをインストール

  • proxy 内からの場合は設定が必要
# apk update
# apk add fontconfig  // 結果いらなかったと思われ
# apk add ttf-dejavu  // 結果いらなかったと思われ
# apk add openjdk7
# apk add graphviz

日本語 (IPA) フォントを入れる

# wget http://ipafont.ipa.go.jp/old/ipafont/ipag00303.php
# unzip ipag00303.php
# mkdir -p /usr/share/fonts/ipa
# cp ipag00303.php/ipag.ttf /usr/share/fonts/ipa
# fc-cache -fv

plantuml.jar をダウンロードして配置

  • http://plantuml.com/download
    • wget でのとり方がよく分からんのでホストにダウンロードしてから docker cp で配置

サイトの設定

  • Render localy にチェック
  • jar のパスを指定 (dokuwiki が見える位置に置く)

Proxy

パッケージを更新しようとすると proxy 判定で失敗する。

~ # apk update
fetch http://dl-cdn.alpinelinux.org/alpine/v3.5/main/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.5/main: Permission denied
WARNING: Ignoring APKINDEX.c51f8f92.tar.gz: No such file or directory
fetch http://dl-cdn.alpinelinux.org/alpine/v3.5/community/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.5/community: Permission denied
WARNING: Ignoring APKINDEX.d09172fd.tar.gz: No such file or directory

proxy 設定を変更。かなりハマってここだけで半日ぐらい消費。

export http_proxy=http://{host}:8080
export HTTP_PROXY_AUTH=basic:*:proxyuser:proxypass

まとめ

次はコンテナを作ってみる。

Docker Toolbox + Windows8 のインストール

windows 上で docker を使って dokuwiki を動かしたくて環境を作る。php だし windows で動かすのは難しくないのだけど、何事も試してみたいしうまく行けば他にも動かしたいものがある。パフォーマンスがもっさりなのか、それなりに速いのかも実際どうなのか気になる。

インストール

windows8 では Docker for Windows が動かないので、Docker Toolbox をダウンロード (docker.io でダウンロードできるのは古そう) してインストール

ConEmu で動かしたいので Task を登録。

"C:\Program Files\Git\bin\bash.exe" --login -i "C:\Program Files\Docker Toolbox\start.sh" "-new_console:d:C:\Program Files\Docker Toolbox"

プロキシ

.bashrc に proxy と no_proxy を設定する

export no_proxy=192.168.99.100
export http_proxy=・・・

VirutalBox のイメージに直接入って proxy を設定する

  • var/lib/boot2docker/profile に http_proxy= を追記
  • us キーボードなので注意
  • イメージを再起動

ポートフォワーディング

dokuwiki を立てるとして、docker を動かしている端末から localhost (127.0.0.1) でアクセスする場合と、外からアクセスする場合を定義。localhost はいらないと思う。

f:id:basyura:20170504210247p:plain

VirutalBox のイメージに入って proxy を設定するところがずっと分からずはまってた。知ってる人に聞けたから良かったけど web を漁ってるだけで見つけられたかなぁ。それっぽい記述は見るのだけど繋がらなかった。

いろいろハマったので以下にメモ。

Docker 立ち上がりでエラー

もともと Virtual Box が入ってたのか記憶が定かではないけど Docker の立ち上がりでエラーが出る

Starting "default"...
(default) Check network to re-create if needed...
Unable to start the VM: C:\Program Files\Oracle\VirtualBox\VBoxManage.exe startvm default --type hea
dless failed:
VBoxManage.exe: error: Failed to open/create the internal network 'HostInterfaceNetworking-VirtualBo
x Host-Only Ethernet Adapter #2' (VERR_INTNET_FLT_IF_NOT_FOUND).
VBoxManage.exe: error: Failed to attach the network LUN (VERR_INTNET_FLT_IF_NOT_FOUND)
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component ConsoleWrap, interface IConsole

Details: 00:00:01.315564 Power up failed (vrc=VERR_INTNET_FLT_IF_NOT_FOUND, rc=E_FAIL (0X80004005))
Looks like something went wrong in step ´Checking status on default´... Press any key to continue...

パラメータ指定で VirtualBox を入れたら動いた

VirtualBox-5.1.14-112924-Win.exe -msiparams NETWORKTYPE=NDIS5

バージョン違い

$ docker version
time="2017-04-23T20:40:06+09:00" level=info msg="Unable to use system certificate pool: crypto/x509: system root pool is not available on Windows"
Client:
 Version:      17.03.1-ce
 API version:  1.27
 Go version:   go1.7.5
 Git commit:   c6d412e
 Built:        Tue Mar 28 00:40:02 2017
 OS/Arch:      windows/amd64

Server:
 Version:      17.04.0-ce
 API version:  1.28 (minimum version 1.12)
 Go version:   go1.7.5
 Git commit:   4845c56
 Built:        Wed Apr  5 18:45:47 2017
 OS/Arch:      linux/amd64
 Experimental: false

あまり検証できてないけど、Client と Server のバージョンが一致しなかったので Docker と VirtualBox 両方を消してからインストールし直した。

go 製コマンドラインツールを配布

日々の開発で非効率だなと前々から思っていた件を解決するためのコマンドラインツールを go で作成して配布した。チーム内では予想以上に反応が良かったのでみんな思うことは一緒だったんだろう。我慢強い。てんこ盛りになりそうだけど当面はサブコマンドを増やしていきつつ様子を見る。

go を書くこと自体は初めてではないけれど、明確な目的を持って書いた事はなかった。どう実現するか頭を捻るので吸収しやすい。

みんなのGo言語[現場で使える実践テクニック]

みんなのGo言語[現場で使える実践テクニック]

  • 作者: 松木雅幸,mattn,藤原俊一郎,中島大一,牧大輔,鈴木健太
  • 出版社/メーカー: 技術評論社
  • 発売日: 2016/09/09
  • メディア: Kindle版
  • この商品を含むブログを見る

いざはじめようとすると環境をどう作ったらいいのか困る。「第 1 章 Go によるチーム開発のはじめ方とコードを書く上での心得」が非常に参考になった。環境ができてしまえば進められる。

途中まで読んで作り始めてしまったのだけど、「4.4 サブコマンドを持った CLI ツール」とそれほどズレてなかったので一安心。

スターティングGo言語 (CodeZine BOOKS)

スターティングGo言語 (CodeZine BOOKS)

これも読んでいたんだけど、あまり頭に入ってなかった。復習を兼ねて基礎的なところを読み直し中。

まだ慣れて無くてお作法を勉強中。思ってたほど違和感は感じないので 先駆者の記事を有りがたく読ませていただきつつ、API リファレンスを読みつつすれば書いていけそう。C を挫折した 勢なので * とか & がモヤっとしてるけど。あと、exe をポンと渡して「使って」と言うだけで済むのが楽。

仕事で使った?はグレーゾーンだけど、ひとまず投入成功。