2017年1月3日火曜日

MacBook Pro 2016用のマルチポートアダプタをkickstarterで支援しました。

MacBook Pro 2016モデルの周辺機器問題を解消するためのアダプタを探していたんですが、なかなか「これ!」というものが見つかりませんでしたが、kickstarteで見つけて、即支援しました。

良いところ: 

・thunderbolt3ポートを利用するので、高速  前のポストでも書いたようなものはほとんどがUSB3.1の接続(たぶん)で、5Gbpsの帯域をハブで分け合っている状態で、パフォーマンスに不安がある。買ったのはMBP2016のファンクションキーモデルでThunderbolt3ポートは2つしかないので、有効に使いたい。
・2つのThunderbolt3ポートを塞ぐが、一つはThunderbolt3がそのまま通っているみたいなので安心。もう一つはUSB-Cの口だけど、USB3.1仕様みたいで、ディスプレイ出力もなし。このへんがUSB-Cのややこしいところ。

 不満なところ: 

・Ethernetアダプタは欲しかった。けど、comment欄でEthernetポートは厚すぎるというのを見てある程度納得して、別途買うことにしました。
アダプタが届くまでの当座のしのぎ兼Ethernetアダプタとして、ANKERの下記の製品を書いました。と、いうか外部ディスプレイ出力がなければ正味これで十分かもしれない。

dockerのmysqldコンテナにdumpデータをロードする

ローカルにmysqlのダンプファイルがあるとして、
すでにmysqldが起動しているdockerコンテナが存在するとする。
このとき、以下のようにすればローカルのdumpファイルのロードが可能。
$ docker exec -i mysqld_container_name mysql -uroot -proot < dump.sql

2016年12月25日日曜日

docker-composeで既存のnetworkに接続する

docker-composeを利用してコンテナを起動した場合、通常だとdocker-compose.yml(プロジェクト)単位で 内部ネットワークが作成される。これを、例えば別のdocker-compose.ymlファイルから起動されたコンテナのnetworkの中でコンテナを作成するには、network設定をdocker-compose.yml内に記述する

既存のネットワークの一覧

$ docker network ls
コマンドを実行すると、以下のようにネットワークの一覧が表示される。例ではexisting_nw_defaultに接続するとする。
$ docker network ls
NETWORK ID          NAME                DRIVER
a36b706eb5a6        bridge              bridge              
7ee0cd187fbd        host                host                
39be267aeb70        existing_nw_default      bridge              
bb39f75ad969        none                null

既存のネットワークに接続するdocker-compose.ymlの例

デフォルトでexisting_nw_default内にコンテナを作成するには、docker-compose.yml内に以下のようなnetworkの記述を追加すれば良い。
networks:
  default:
    external:
      name: existing_nw_default
 参照:https://docs.docker.com/compose/networking/

2016年12月24日土曜日

Bloggerでシンタックスハイライトを利用する

code-prettifyを利用する方法。 https://github.com/google/code-prettify

(1)ブログ管理画面の"Template"から、テンプレートのHTMLを編集する。
haedタグの中に以下を記述する。

<script src='https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js?skin=sunburst'/>

(2)シンタックスハイライトを利用したい部分を、以下のタグで囲う。

<pre class="prettyprint">
(任意のコード)
</pre>

classに、追加で"lang-*"を指定すると対象言語を明示的に指定できる。lang-*の"*"の部分にはデフォルトで以下が利用できる
    "bsh", "c", "cc", "cpp", "cs", "csh", "cyc", "cv", "htm", "html",
    "java", "js", "m", "mxml", "perl", "pl", "pm", "py", "rb", "sh",
    "xhtml", "xml", "xsl".
ヘッダ行のrun_prettify.jsを呼び出すパラメタにskinを指定すると、シンタックスハイライトのスタイルを切り替えられる。上記の例ではsunburstというスタイルを利用している。 デフォルトで利用可能なスタイルの一覧は以下。 https://rawgit.com/google/code-prettify/master/styles/index.html その他にも呼び出し時のパラメタで挙動を変更することができ、詳しい設定は以下を参照。 https://github.com/google/code-prettify/blob/master/docs/getting_started.md

2016年12月18日日曜日

Raspbianでpyenv環境を構築する

Raspbian環境をアップグレードしたついでにpyenv/pyenv-virtualenv環境を構築しようとおもいました。その際、pyenvを使ったpythonバージョンのインストールでエラーが出たので、その構築メモです。

0.環境

記事執筆した時点で、 $ sudo aptitude safe-upgrade した状態です。
日本語環境を入れたりはしてるので、かならずしもデフォではないです。

$ uname -a
Linux raspberrypi 4.4.34+ #930 Wed Nov 23 15:12:30 GMT 2016 armv6l GNU/Linux


1.エラー

以下のようにreadlineとかbzip2とかいかにも必要そうなものがないとか怒られます。

$ pyenv install 2.7.12
Downloading Python-2.7.12.tar.xz...
-> https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tar.xz
Installing Python-2.7.12...

WARNING: The Python readline extension was not compiled. Missing the GNU readline lib?
WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?
WARNING: The Python sqlite3 extension was not compiled. Missing the SQLite3 lib?
ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?

Please consult to the Wiki page to fix the problem.
https://github.com/yyuu/pyenv/wiki/Common-build-problems


BUILD FAILED (Raspbian 8.0 using python-build 1.0.4-13-g1000c2f)

2.必要なパッケージ(インストール済のものを除いた)

下記の参照先のリンクに情報があったので、それを参考にインストール済のものは除きました。
RapPiは非力なので、余計なインストールプロセスは省きたかった。
$ sudo aptitude -y install libssl-dev libbz2-dev libreadline-dev libsqlite3-dev llvm libncurses5-dev libncursesw5-dev

3.参照

https://github.com/yyuu/pyenv/wiki/Common-build-problems



あるていど予想できた結果ですが、pyenv installするとたぶんzipとかがものすごいボトルネックで時間がかかるので、実用に耐えるのかは不明です。

Raspbian with PIXEL閑環境で日本語環境の構築

 Raspberry Piの情報を細かく追っているわけではないので、知らない間にバージョンアップしてPIXELというデスクトップ環境になっていました。正確には、深く考えずにsudo aptitude sage-upgradeして再起動したらいきなり変わっていてびびった。

ながらく初期インストールだけして放置していたRaspberry Pi初代(+ですらない!)を日本語かするときにPIXEL 以前の情報が多かったので、PIXEL環境で日本語入力ができるようになるまでのメモです。結論からいうと、すごく簡単になっているみたいです。

  1. 日本語フォントのインストール
    PIXELな環境からは初期で表示できるのかも?という情報もみたのですが、それをみたのがフォントをインストールした後でした...。まあ、減るもんでなしという感じでインストールしました。タカオフォントというのはIPAフォントの派生みたいです。

    $ sudo aptitude install fonts-takao 
  2. fcitx-mozc(インプットメソッド)のインストール
    界隈のブログ記事ではibus-anthyとかibus-mozcを入れてるケースが多かったけど、しらべるとibusは最近はあまりイケてなくてfcitxという系列が良いみたいなので、そちらを採用してみることにしました。なお、ibusとかfcitxというのがベースになるインプットメソッドで、変換エンジン(?)自体がAnthyとかmozcとか、という構成になるようです。なので選択肢としては、インプットメソッドとしてfcitxかibus、それぞれでの変換エンジンとしてanthyかmozcか、という考え方になるようです。このへんは正直よくわからん。

    $ sudo aptitude install fcitx-mozc
    上記で、メインメニューの「設定」のところに「fcitx設定」とか「mozc設定」とかの項目が追加されるので、そこで諸々を設定します。(ターミナル上でim-configを実行する必要があるかもしれない)
  3. 日本語ターミナル(不要っぽい)
    上記同様にjfbtermというのを入れないとターミナルで日本語が出ないよ、という記事が多いのですが、PIXEL環境では不要でした。標準のターミナルはLXTerminal 0.2.0というやつでした。 
あとはPIXEL以前の環境と同様、ロケールやタイムゾーンの設定、あとはフォントを上述のTAKAOフォントに変えてあげたりすればOKです。

2016年12月16日金曜日

Android Things on Raspberry pi3でディスプレイを反転させる

Android ThingsのRaspberry pi用OSイメージで
RasPi3を起動した際、Raspbianのときと同じように、
純正の7inch touchscreenの構成では画面を反転させないとUSBコネクタが
邪魔になってしまうという状況が発生しました。

Raspbianの場合なら、/boot/config.txtの中にlcd_rotate=2という記述を追記して際kどうすれば解消するのですが、それのAndroid Thingsでのやり方。stackoverflowに聞いたらすぐに回答してくれる人が現れました。すごい。ありがとう。

例えば、sdカードのデバイスが/dev/sdbだとした場合、ブートパーティションは/dev/sdb1になるようです。なので、母艦となるpcなりでこのパーティションを
マウントしてあげると、その中にconfig.txtというファイルがあるので、
この中にlcd_rotate=2という設定を追加してあげて再起動すればよろしい。
$ sudo mount /dev/sdb1 /mnt/disk
$ echo 'lcd_rotate=2' >> /mnt/disk/config.txt
私はmacを使っていてext4のファイルシステムをマウントするのにFUSE for macなどの
セットアップが必要そうだったんだけど、これが時間かかるのでたまたまvirtualboxに
設定してあったboot2dockerのOSイメージを起動して、これでマウントしてやっつけました。

教えてくれた人によるとこれはhackみたいなもんでオフィシャルな設定とか機能ではないから、アップデートのたびにやらないといけないよ、だから機能リクエストしたほうが良いよ、とのこと。とはいえ、いったんのworkaroundとしては十分です。

http://stackoverflow.com/questions/41165198/android-things-with-rasp3-7-inch-touchscreen/

[12/16追記]
その後
ということだったので試したら、以下のようにしてmacで直接マウントできました。
$ sudo mount -t msdos /dev/disk1s1 /mnt/sd