You can read this blog in any language using google translate as follows:

Goto http://translate.google.com/
Paste URL in the box and select "Japanese for From Language" and "To Language". Then click "Translate".

English translated pages are here:
http://bit.ly/xPuXoy

你可以閱讀這個博客,在任何使用“Google”的語言翻譯

本ブログのアクセス統計: 60万アクセスを達成しました。ご訪問ありがとうございました。

60万アクセスまでの経過

2009年12月に始めた本blog。2011年7月ごろに10万アクセスを達成し、2011年12月13日には15万アクセスを達成。
その後、私も更新しておらず、アクセスは少し減りましたが、3月1日には18万アクセス。2012/4/18に20万アクセス、2012/8/21に25万アクセス、2013/1/18に30万アクセス、2013/12/17に40万アクセスを達成しました。しばらく見ていなかったら、2015/5/1に50万2584アクセスになっていました。またまた、しばらく更新しないうちに、2017/6/11に60万7197アクセスになっていました。久しぶりに更新します。

2017年7月10日月曜日

LinuxサーバにMySQLを設定した

以下に投稿した機能を拡張するために、MySQLを家庭内ゲートウェイであるLinuxサーバに立ち上げて、RaspberryPI等、家庭内IoTシステムからremote accessして、データを共有できるようにした。

2017年6月12日月曜日

 目次)MySQL化の理由は最後の背景で説明する。
  1. MySQLのinstall
  2. remoteアクセスの設定
    1. 設定ファイルの変更
    2. RasperryPiからのアクセス実験
    3. rootではアクセスできない
  3. Databaseの移動
    1. RAID (mdadm)のpartitionへの移動 (堅牢化)
    2.  Apparmor (CentOSでいう、SELinux) の無効化
  4. おまけ)MySQL workbench on Mac OS-X
  5. 背景
    1. microSDカードの書き込み寿命
    2. 対策
      1. USB HDDの利用
      2. MySQLなどremote databaseの利用

MySQLのinstall)
 Ubuntu 16.04 LTSなので、

2016-11-17 Ubuntu 16.04 LTSにMySQLをインストールする 
の通りに aptでinstallして、設定をすれば、まずはlocal machineで使えるようになった。上記にある、サンプルのtest_dbも、この通り動いた。

Remote Accessの設定)

  1. LinuxサーバのUFW を設定して、標準の3306ポートを開いた。
    参考)
    1. UFWの設定: http://qiita.com/yoh-nak/items/46935af3c5c4036e93b3
    2. コンソールからGUFWのほうが簡単かも:
       http://sicklylife.at-ninja.jp/memo/ubuntu1404/gufw.html
  2. ついでに /etc/sysctl.conf を書き換えてrebootしてIPv6も止めた。
    参考) http://l-w-i.net/t/ubuntu/ipv6_001.txt
  3. remote accessの設定)
    1. だが、telnet ipaddress 3306をやってもつながらない。
       /etc/mysql/mysql.conf.d/mysqld.cnf   の設定変更が必要
      bind-address           = 127.0.0.1
      でローカルマシンからしか接続できなくなっているので、これを、
      bind-address           = 0.0.0.0
      に書き換えてどこからでも接続できるようにする。
      参考)http://bit.ly/2uVx9Rl  How to allow mysql remote connections via particular interface
    2. RasperryPIからのアクセス実験

      1. rasp01 ~ $ mysql -h 192.168.0.88 -u user -p
        Enter password: 
        Welcome to the MySQL monitor.  Commands end with ; or \g.
        Your MySQL connection id is 26
        Server version: 5.7.18-0ubuntu0.16.04.1 (Ubuntu)

        Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
      2. :
        mysql> connect test_db;
        Reading table information for completion of table and column names
        You can turn off this feature to get a quicker startup with -A

        Connection id:    27
        Current database: test_db

        mysql> show tables;
        +-------------------+
        | Tables_in_test_db |
        +-------------------+
        | emp               |
        | lights            |
        +-------------------+
        2 rows in set (0.00 sec)

        mysql> select * from emp;
        +------+------+
        | id   | name |
        +------+------+
        |    1 | aaa  |
        |    2 | bbb  |
        +------+------+
        2 rows in set (0.00 sec)

        mysql> 
    3. ところがRasperryPIからrootでMySQLに入れない。mysladmin でやってみるとアクセス権がないとのこと。
      rasp01 ~ $ mysqladmin -h Linux02 -u root -p version
      Enter password: 
      mysqladmin: connect to server at 'Linux02' failed
      error: 'Access denied for user 'root'@'192.168.0.122' (using password: YES)'
    4. サンプルテーブルでの実験からも類推できるし、以下のようなやり方でできると書かれた webサイトもあったが。。。やり方がまずかったのか上手く行かない。mysql> grant all on *.* to 'root' identified by 'rootのパスワード';
    5. どうもlocal machine上で 管理table mysqlの設定をいじればよいらしいがよくわからない。
    6. Local MachineからMySQLにroot権限で入って見える特権データベース
      (以前、SQLite3で、壊してひどいことになった。)

      localhost以外で追加してみようとするが。。
      SQLは初心者なので、、、よくわかりません。。
  4. Databaseの移動)
    1. Quitta http://bit.ly/2uXMLnp をみて、ファイルをmdadmのpartition (/homeからのsymblic linkへ移動)
    2. が、/etc/init.d/mysql restart するとコケる。

      # journalctl -xe でみると、apparmor (CentOSでいう、SELinux)が拒絶している) 
    3.   https://bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1610765 を参考に、Apparmorの設定 /etc/apparmor.d/usr.sbin.mysqld あたりを書き換えたが、なんどやっても上手く行かない。
    4. CentOSでは、SELinuxは扱いにくいので、無効化(おすすめは、http://red.ht/2uZTaP1 にあるPermissive mode) なので、Ubuntuでも無効化することにした。
    5. Grubからdisableしてrebootして、問題になくデータベースは移動した。
      しかし、Databaseを移動すると何がどうなってダメなのか不明。
    6. おまけ)rootになって # journalctl -xe をすると、Mac OS-XにインストールしたCanon printer drive (tools) のbonjure が、大量にbroadcastメッセージを出して、UFW (iptables) つまりlinuxサーバのfirewallが拒絶メッセージを出している。なんだか怪しい。。
  5. おまけ)MySQL Workbench on MacbookPro OS-X El Capitan.
    Mac OS-Xからの確認用に、
    https://www.mysql.com/jp/products/workbench/ からダウンロードした。グラフィカルにMySQLサーバに触れる。
    MySQL Workbenchでサンプルdatabase/tableの操作

  6. 背景)microSD cardの書き込み寿命
Makerfairを主催する米国の雑誌Makerとは比べ物にならないほど内容が詳細で充実した..日本の誇る雑誌 トラ技 2017/7月号 (CQ出版社の画面 http://bit.ly/2tO4iB3 を引用)にラズパイ特集があった。実は、CQ出版社にはバックナンバーがほとんどあって、買い逃した本も上記リンクから行けるCQ出版のweb shopの通販で送料無料で数日で届く。カード支払いも可能。

CQ出版社webのトラ技2017/7月号情報

CQ出版社webにあるトラ技2017/7月号の目次情報

その第4章が、
「数Kバイトの小データを10年間記録し続ける高信頼メモリの技術
寿命対決! コンビニSDカード vs 産業用SDカード」であり、
ラズパイで使った時のmicroSDカードの寿命を徹底評価していた。
http://bit.ly/2tO4iB3リンクから各章の1ページ目がpdfで閲覧できる。
SDカード(Flash memory)の詳細な仕組みから始まり、8GBのmicro SDカードを装着したラズパイで、4KBのファイルを1秒間に100個記録し続ける(古いのは消す)データロガーとして使ったときのmicro SDカードの寿命を算定していた。TPSM-GS1Sという産業用のSLC(Single level Cell)カードだと10年持つが、通常売られているMLCタイプの安いmicro SDカードだと18日でダメになるとのこと。(ここを特集するのは、さすが、トラ技。)
そりゃそうだ、wear levelingも適当な安価SDカードだし。。
さすがに、1秒間に100個ずつファイルを記録することもなく、1分間に1個。同じファイルへの書き込みはbufferされていると考えると、もうちょっと持つのかもしれないが、小さいファイルを更新しまくるlinux/unixのストレージが市販microSDカードというのは、いかにも心配である。
記事にある書き換え寿命の仕様(保障)値を引用すると、
SLCで10万回、p-SLCで2万回、MLCで3000回。
実効最小ではSLCで21万回、p-SLCで11.8万回、MLCで1.2万回。
 amazon.com http://amzn.to/2tNVmvM では、p-SLCの16GBのmicroSDカードが10枚 $815で、SLC 4GBのmicroSDカードが10枚 $805で売られている。---- 高い!!!!

拙blog: http://bit.ly/2sccXwe に掲載した、RaspberryPIを使ったコンセント制御。cron でアプリが1分ごとに起動して、タイマー機能を実現する作りになっている(簡単なので..) 。
機能拡張するのに状態管理をファイルでやろうと思ったが、危ない。。常時起動しているdaemonにするか、状態管理daemonと通信させるか、ちょっとやり方を考えたい。と、考えた結果、MySQLサーバを立ち上げて、今後増えるであろう、いろいろな家庭内IoT機器の情報をRelational Databaseで共有して、検索・変更を容易にすることにした。
コンセント制御では、WebベースなのでPHPを使っており、PHPにはMySQLをアクセスするライブラリもある。

Learning PHP, MySQL & JavaScript: With jQuery, CSS & HTML5 (Learning Php, Mysql, Javascript, Css & Html5) 4th Edition (amazon.com http://amzn.to/2uPRBmF でベストセラーらしい。以下表紙写真)にも、PHPとMySQLの連携について書かれている。
参考になりそうなR'REILLY本


2017年6月12日月曜日

RaspberryPIを使って、コンセントを制御する。


久々に投稿します。かなりネタが溜まっているので、順次投稿し、本稿も随時加筆します。
RaspberryPI 2 modelB v1.1 を使って、電灯制御を作っている。

方針)


  1. 他にもRaspberryPI, Raspberry PI3 BやRaspberryPI Zero W等も購入した。
    おいおい拡張したい。
  2. RaspberryPI 3B+ には、Ubuntu mateをいれ、Elecrow RPA05010R HDMI 5-Inch 800x480 TFT LCD Display with Touch Screen Monitor for Raspberry Pi B+/2B/3B をamazon.comで購入して、接続しタッチパネル操作できるようしている(以下写真)。DRAMも多いし、CPUも速い(別途投稿したい)
  3. Raspberry PI 2 modelB v1.1はRaspbian Wheezyで使っている。設定法や上記Ubuntu mateの設定法は別途記事にする。(上記、Ubuntu mateやJessieとかも入れてみたが、やはり、木の実マークのWheezyが良いかも)
  4. 電灯制御に関する記事: https://www.samkear.com/hardware/control-power-outlets-wirelessly-raspberry-pi の通りにやった。

    1. ここではEteckcity という430MHzの無線のリモコンコンセントを使う。
    2. リモコン制御はSMKNという430MHzの送受信カードセットを使う。信号はRS232Cのような、調歩式の振幅変調(1,0)コーディングではなく、パルス幅(FM)コーディングなので、RaspberryPI等のGPIOを使うのが良さそう。
      1. 以下に書いたwiringPIライブラリを使って信号を入出力するバイナリがある。
        1. 送信機で押された無線コードを表示するRFSnifferを起動して、無線コード(10進6桁から7桁)を得る。
        2. codesendというアプリにコードを与えると無線送信する。
      2. このカードも大変安い。5個入りパックの無名ブランドはもっと安い。
    3. 以下にamazon.comでの値段を掲載する。
  5. 上記では、wiringPIというパッケージを使い、GPIO (RaspberryPIシリーズの入出力ポート)を制御している。
    1.  GPIOポートの結線図:: https://projects.drogon.net/raspberry-pi/wiringpi/pins/  
    2.  例題LED点滅: http://wiringpi.com/examples/blink/
  6. 上記の点滅を改造して3色LEDの点滅アプリ (blinkRGB) を作った。root(特権ユーザで実行する必要があるが、以下のようにつかう
    1. 自動点滅: 引数なし。以下のように点滅する。
    2. 所定点滅: (R,G,B) = で所定色を指定。(1,1,1) = 7が白を示す。4が赤、0が黒など。
  7. スイッチで電灯を点滅させたいので、Eteckcity から電線を引き出した。従来、TP-Link Smart Plug w/ Energy Monitoring http://amzn.to/2scgjzr  からスイッチを引き出していたので、このプラグが入るジャックにして、コンセント部分を入れ替えて使えるようにした。


    従来のTP Linkのもの

    引き出した線が繋がる、壁スイッチ

    改造作業。TP LinkもEteckCityも、もともとスイッチがあるので、そこから線を引き出すだけ
    左: 従来のTP Link,  右: EteckCityにつけた壁スイッチへのコネクタ。
  8. RaspberryPIへ外出先からのアクセス
    1. RaspberryPIは、192.168.のローカルLANからしかみえない。
    2. Broadband routerからsshポート(安全のためport番号は規定の22番とは全然違うものにしている)をポートマッピングしている、ゲートウェイのLinuxサーバ ホスト名: Linux02 がある。
    3. Linux02は No-IPのDynamicDNSサービス(有料。そうしないと更新が面倒)を使いホスト名を与えてある。無料だったminiDNSはサービスが打ち切られた。
    4. RaspberryPIのapache2, sshdに対して、Linux02でsshトンネルを掛けて、外部からアクセスしている。sshポートが特殊なうえ、rsaのprivate鍵がないとログインできないので、ハッキングに対する安全性は高いと思う。
  9. 電灯制御のweb pageを改造している。
    1. 設定部分のファイルをJSONにして分離。
      1. 部屋・電灯の名前、受信機がないスイッチ、つながっていない受信機などが分かるアノテーションをいれた
    2. 読み込み部分とtrigger部分を分離
    3. デバッグ用表示を追加: デバッガphpdbgを使おうとphp 5.6をコンパイルしてみた。php 5.6は、phpdbgが使えるまでには至らず。
    4. タイマー設定のJSONを読み込み表示。(末尾に写真をつける)
      1. formのradio buttonでのPOSTにしたが、いちいちhtmlを読み込むのは面倒なのでJavascript化したい。
      2. スイッチの状態で色を変え、また、現在の状態をJSON (or cookie) に保存したい。
      3. 肝心のタイマーのコード(多分PHP)を完成させる。
制御画面)

現状のもの:Allでは全部のリモコンにon/off信号を送る。webからのon/offは動作している。

タイマーは、JSONの設定ファイルの時刻設定を表示。ただし、タイマーの機能をする本体はまだない。タイマーformのラジオボタンもJavascript化する予定。。

リモコンパラメータなどが入った設定JSONファイルを読み込み、表示も自動作成する。
送信ボタンだけで受信機がない行を排除した表示。つかっていないコンセントを表示しない仕様にも簡単に切り替えられる。

上記と違い、送信機にある全部の無線信号を表示させたもの。

記事のものをとりあえず動かした版、手でhtmlを改造してB1,B2,B3を追加。

2016年6月22日水曜日

CentOS6.6でパッケージ更新をできるようにする

久々に自宅のCentOSにconsoleからloginしてGoogle Chromeを立ち上げたら、古くてセキュリティ上問題があるので、更新するように言われた。

rpmパッケージをダウンロードしたが、grapicツールからエラーが出るので、テキストベースで試すと、やはり以下のエラーになる。

# rpm -ivh google-chrome-stable_current_x86_64.rpm
エラー: 依存性の欠如:
libnss3.so(NSS_3.19.1)(64bit) は google-chrome-stable-51.0.2704.103-1.x86_64 に必要とされています
libstdc++.so.6(GLIBCXX_3.4.18)(64bit) は google-chrome-stable-51.0.2704.103-1.x86_64 に必要とされています
libstdc++.so.6(GLIBCXX_3.4.14)(64bit) は google-chrome-stable-51.0.2704.103-1.x86_64 に必要とされています
libstdc++.so.6(GLIBCXX_3.4.15)(64bit) は google-chrome-stable-51.0.2704.103-1.x86_64 に必要とされています
CentOSの版と64bitか確認)
 CentOSは6.6。2つ目の行から64bitでよいらしい。
# more /etc/centos-release
CentOS release 6.6 (Final)
# uname -a
Linux Linux02 2.6.32-504.12.2.el6.x86_64 #1 SMP Wed Mar 11 22:03:14 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
ライブラリをyumでインストールしてみると.. エラー)
# yum install libnss3.so
読み込んだプラグイン:fastestmirror, refresh-packagekit, security
インストール処理の設定をしています
Loading mirror speeds from cached hostfile
epel/metalink                                                                                             | 8.8 kB     00:00    
 * epel: linux.mirrors.es.net
 * ius: archive.linux.duke.edu
 * remi: mirror.uta.edu.ec
http://linux.dropbox.com/fedora/6/repodata/repomd.xml: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found"
他のミラーを試します。
エラー: Cannot retrieve repository metadata (repomd.xml) for repository: Dropbox. Please verify its path and try again
解決策)
ググってみると

という記事があった。
 自分のLinuxサーバで、
 /etc/yum.repos.d/CentOS-Base.repo を見ると記事にあるように、http://mirror.centos.org/centos/6.6/ がyumのレポジトリになっていて、そこには、readmeがあって、確かに、http://vault.centos.org/ を使うようにと書かれている。

やってみる)
# sed -i -e "s|mirror\.centos\.org/centos/\$releasever|vault\.centos\.org/6.6|g" /etc/yum.repos.d/CentOS-Base.repo # sed -i -e "s|#baseurl=|baseurl=|g" CentOS-Base.repo # sed -i -e "s|mirrorlist=|#mirrorlist=|g" CentOS-Base.repo

この結果、mirrorlistをコメントアウトして、baseurlを上記の新しいものに書き換えている。ほかにも複数行ある..
-#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&re-baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/+##mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&r+baseurl=http://vault.centos.org/6.6/extras/$basearch/
が、やはり同じエラーが出る /etc/yum.repos.d にある、 dropbox.repo ファイルが古くなっていただけ。これを削除(実際にはbakというdirectoryを掘ってそこに移した..) ところ、yum updateは先に進んだ。。いろいろアクセスできないrepositoryがあって、他のミラーを試しているようだが、これでうまくいくのかは不明。必要に応じてやはりCentOS 7.x にあげないとだめかもしれない。顛末は、後日追記する。

トランザクションの要約
============
インストール        30 パッケージ
アップグレード     779 パッケージ
総ダウンロード容量: 1.0 G

 

2016年6月19日日曜日

LiZoneというLaptopPC用電池が強力!!

最近、2013 後期のMacbookPro 13インチ Retinaの電池がへたり気味で、膨らんできたのかタッチパッドが非常に押しにくくなってきた。電池交換についても調べたので、後半に書く。

また、最近は、学会に行ってMacで直接議事録を書いている。英語の学会で直接議事録を書くのは、議事録を書く時間の短縮にもなるし、リスニングの勉強にもなりそう。これも別途投稿したい。

そういう背景で、5/23(月)-24(火)とSan FranciscoのUnion Square横のGrand Hyatt Hotel (移転したApple Storeの真横)で開催されたIn-Memory Computing Summitという学会に行ってきた。この学会、WiFiは通っているのだが、座席からAC電源がとれない。議事録を書いていると、電池がどんどん減っていく。いろいろ対策してみた(これも後述する)のだが、大変なので、ググってみると、Laptop用のリチウムイオン電池がamazon.comで売られていた。

前置きは長くなったが、これがなかなか強力そうなのでレポートする。

LiZone)

http://amzn.to/24YBcqL が米国Amazon.comのサイト。26,000mAh=20Ah のSサイズで$149.99であった。他にも、Mサイズ40,000mAh, Lサイズ60,000mAhの上位機種がある。この容量は5V換算時。
Amazon.comのLiZoneのページ


何が嬉しいか)

  1. Laptop充電に対応したLiIon電池であるが、USBポートもあり同時充電できる。以下の3つの主要メーカのそれぞれに対応したケーブルも付属しており、3つともPCを所有していたので動作を確認した。
    1. MacbookPro : Mac付属のアダプタは14.5V 3.65A (52Wぐらい?)
      添付しているのはMagSafeアダプタなので、Mag Safe2の変換アダプタ利用。MagSafe2からMagSafeに変換するアダプタは売られていないので、若干がさばるが、このほうが助かる。また、何度も付け外しして、だめになったMagSafe2変換アダプタが一つあった。変換アダプタなら置き換えも可能。
    2.  Dellのラップトップ: 所有しているE7250 12inch (PC付属のアダプタは 65W 19.5V 3.35A, センタが+プラスの丸型) で動作を確認した。
    3. Lenovo ThinkPad: E430( PC付属アダプタは65W 20V 3.25A , センターが信号線、円筒の内側がプラス、外側がマイナスの3重構造)で動作を確認。ただし、標準外の電源とwarning画面がでる。
    4. マニュアルには90W 4.5Aまでの機種に対応とある。USBは2.1Aまで。
    5. Laptopに繋いで電源供給するときには、電源ボタンを3秒長押しする。
  2. LiIon電池からの充電能力はMacbookPro 13inchの場合1.5回分らしい(次章で検証する)
  3. AC100Vから240V入力の専用充電アダプタが付属している。アダプタとLiZone電池は白色のケーブルで接続する。このケーブルは16.8V 4.5Aとある。この充電器側のプラグはLiIon電池のプラグと同じ形状であり、Laptopの充電器としても使える。また、USB端子もでている。つまり、この充電器と電池1セットで、Macbook系、Del系、Lenovo系の全てに対応できる。この充電器をLiIon電池に接続し、充電しながらLaptopにも電源供給することもできる。
  4. 電池には緑色LEDが5個ついていて、残電池量が分かる。Laptopに繋がずに電源ボタンを3秒長押しをすると残りバッテリ量がわかる。
    ただし、充電中は充電完了の容量は示しておらず、一番上のLEDが点滅中は充電中を示している模様。
  5. 充電時間はフル放電から完了まで。3〜3.5時間らしい。
  6. LiZone電池にも充電器にも"Lizone Extra Prp Technology"という技術が導入されているらしく、繋いだLaptopに対応して最速で充電するのに最適な電圧に制御するらしい。
  7. 通常の製品では、供給電力の35%分が、AC入力から充電、電池ロス、Laptop電圧変換で失われるが、この製品は20%に抑えられているとのこと。
  8. 日本語を含む各国語のマニュアルが付属
  9. 重さ: Sサイズ 26,000mAh 566g,  Mサイズ 40,000mAh 850g, Lサイズ 60,000mAh 1,130g
LiZoneの付属品:上段:電池用のポシェット
中段、左から:Mac用のMagSafeケーブル(MagSafe2アダプタをつけてある)
Dell用ケーブル、Lenovo用ケーブル、
専用充電器と電池用ケーブル、ACケーブル、Li

専用充電器で充電中のLiZone電池

MacbookPro充電回数の計算)

  1. LiZone 20,000mAh * 5V = 130Wh
  2. MacbookPro Late 2013 Retinaの電池: 71.8Wh (11.34V)
より計算すると、MacbookProが 130/71.8 = 1.8回充電できる計算になる。


機内持ち込み)
LiIon電池は発火の恐れがあるため、機内持ち込みは制限さされている。LiZoneのマニュアルにも、航空会社に確認してくださいとある


  1. JALでは、http://www.jal.com/ja/safety/airport/baggage.html に以下のようにある。含有量はわからないが、定格上は最小サイズのものなら一つ持ち込み可能。一人あたりの持ち込み個数は制限なしとある。

    ・リチウム電池はリチウム含有量が2g以下のもの
    ・リチウムイオン電池はワット時定格量が160Wh以下のもの
  2. ANAの規定も http://www.ana.co.jp/wws/us/j/asw_common/guide/baggage_caution.html にあり、JALと同じ内容。
  3. タイ航空では機内持ち込みは32Ahまでらしいので、20Ah品ならOKだが上位の40Ah, 60Ah品は持ち込み不可。


とりあえずやった内蔵電池を長く使うための対策)

  1. 電池食いのGoogle Chromeを筆頭に余分なアプリを止める
  2. WiFiを止める。
  3. 休憩やお昼時間は電池を充電する。ただし、目の届かないところに置くと、盗まれる可能性がある(それが米国のスタンダード)ので、コーヒーや食事を持ってきて、コンセント近くのテーブルで食べながら充電とか。。これが、また面倒くさい。
  4. 充電しながら使うのが一番電池消費が少ないので、WiFiやブラウザを使うときは、休憩中にそういう形で行う。
MacbookPro用の交換電池)

これもamazon.com で、$66.8の http://amzn.to/1OwCVlc (以下写真)を購入した。Appleで交換してもらうと、部品代$100, 工賃 $100らしい。工具付きでも、さらに安い電池もあるがが、review結果が高いこれにした。

LQM製のMacbookPro用交換LiIon電池

到着した品物


が、やり方をググってみて、http://www.theregister.co.uk/2013/10/25/macbook_pro_2013_teardowns/ の記事。FixItによる分解記事の引用が見つかった。

2013 Late MacbookPro 13inch/15inch  Retinaは、電池がノリ(両面テープ)で、しっかり張り付いているので剥がすのが大変だった。ムリに剥がしたら、(下にあって、電池に張り付いていた)タッチパッドのケーブルが引きちぎれた。

とある。。写真も記事から引用した。

MacbookPro内蔵の電池が劣化して膨れたためタッチパッドのクリックが反応しにくくなっているが、ムリに電池を交換してタッチパッド自体が使えなくなるのも困る。しばし思案中。

2016年1月1日金曜日

ビデオサーバプログラムのその後の更新

2015年1月16日金曜日 Linuxを用いたテレビ録画Serverでのロケフリ視聴が快適


で投稿したビデオサーバはその後も便利に使っている.
その後,いろいろカスタマイズしたので,列挙しておく.

カスタマイズ内容)
USからsshで入って,コンソールからphp, html, cgi等を書き換えている.バグで時々 htmlが表示されなくなったりするが,console logで分析状況を表示してデバッグしてから,最後に本当にdatabaseを書き換えるようにすれば,databaseを壊すこともなく,デバッグできている.米国から日本にアクセスする距離もあるがpingで測る限りは往復144ms程度なので,sshでtext baseでやる限りはあまり気にならない.(remote desktopのようにグラフィックベースで,echo backする状況で文章を書くと,遅くてイライラするが....)

以下リスト1,2,4,5への対応状況がわかるスクリーンショット(2015/12/31時点のもの)を以下に引用する.

3TBのHDDを使って,H.264のSD画質 (640x360)で保存している(画質は,普通の番組であれば27インチフル画面で十分満足できるレベル) なので,相当に大量に録画可能である.ほぼほぼ満杯になったときのために,自動消去する機能はまだ必要性を感じていない.

録画済一覧のスクリーンショット


  1. mpeg2(1080i HDTV)からH.264(640x360)に変換する ffmpegでエラーが出る番組があるので,設定を解析し修正.主に以下への対応が必要だった.ffmpegで分析し,perlスクリプトで結果を解析し,ffmpegへの変換オプションを作成するよう自動化している.
    1. 解説音声,副音声のあるもののストリーム番号への対応
    2. 2014/4月の朝ドラ新編成で一旦TS(mpeg2)の録画ストリーム番号が変わっていたので,自動検出するように変更
    3. 常に変換ログをvideo置き場に残している
    4. 録画スクリプトは簡単に変更できて,オリジナルのTSファイルを残すこともて設定で変更可能.常に残すとdisk spaceを圧迫する
  2. サムネイル右クリックメニューで,mp4をダウンロードできる.これを追加して,
    1. TSが残っているときに,番組サムネイルを右クリックすればTS(HD画質)をダウンロードできるようにした.
    2. 番組説明ではmp4ファイルを流す.Google Chromeでは,自動的に動画viewerが立ち上がるが,IEやSafariではダメ.右クリックしてダウンロードしてからquick time playerとかで再生するしかない.
    3. 本来は,AFCファイルを流す.これは番組説明のクリックとして残した.が,どのブラウザもAFCは表示できない.画像ビューアVLCでは表示可能なので,ブラウザ設定でAFC型ファイルとVLCを関連付ければ可能かもしれない.
    4. ダウンロードしたmp4ファイルは,拡張子を.m4vに変えるとiTunesで再生可能だし,そのままiPhoneに転送して再生可能.
  3. git repositoryを作り,commitする.
    1. 適宜,repository等はcroneでNASにバックアップする.
    2. .htaccessに不備があり,ログイン許可を書いたファイルが外部アクセスされ変更されていた.git statusで発覚.firewallのログから,アクセスが合ったのはアジアの近隣国.ログイン許可ファイルを修正したが,git statusから再度別方法でファイルが変更されていた.ここの穴も塞ぐと同時に,webからアクセス可能なipアドレスを変更.以降,不正アクセスは発生していない.
      BBrouterに穴を開けたり,外部アクセス可能なサーバを設置するときには,不正アクセス対策に加えて,容易に不正アクセスを検出できる手段が必要だと痛感した.
  4. 録画済み一覧に,録画数,利用disk space,平均録画サイズ,可能録画本数の予測を表示するようにした.これは,recordedTable.phpを修正し,system()コマンドで,ls -al からawkをpipeで流すようにして値を求め,対応するtemplates/recordedTable.htmlを修正して表示している.
  5. 録画済みの各エントリに,ファイルサイズをMBで表示する.
  6. 一部を公開できるようにした.
    1. 公開用のdirectoryを作成し,そこにパスワード無しでアクセスできるindel.htmlを作成
    2. 上記directory配下のビデオ置き場に録画済みファイル(.mp4)をln すると,自動的に.mp4をlsするようperlのcgiスクリプトを作成し,それをデフォルトのhomeとして公開
    3. 公開・非公開はlnコマンドとrmコマンドでハードリンクを変更するだけだが,録画済みファイルが増えてくると面倒なので,録画済み一覧に列を追加して,公開・非公開のボタンを設置.表示時にphpで公開用directoryにファイルがあるかないかで,表示を切り替えている
      1. 今後,ボタンを押すことで公開・非公開を切り替えられるようにしたい.
  7. 時々,録画が終わっても録画予約にあるエントリが残ることがある.これは,録画予約データベース(RESERVE_TBL)のcomplete フィールドが0のまま残るため.この状態だと,録画済み番組ファイルの削除もできない.
    1. そこで,録画予約表示で使うreservationTable.php を改造し,録画予約状況表示時に録画終了時刻よりも現在時間のほうが遅いときには,強制的にcompleteフラグを立てるように変更(Smartyを使っているので,対応するPHPの配列を更新するだけであとは自動的に書き戻される).ただし,厳密には以下の様なやり方.
      1. 本来completeフラグを操作するrecorder.phpとの競合回避のため,終了時刻+600秒(10分)と現在時刻を比較している.
      2. 強制的にcompleteフラグをセットしたときには,video/reservationTable.logにフラグをセットした旨を追記する.
        1. PHPでのログの吐き出し方: http://www.php-labo.net/tutorial/php/file.html#write
      3. completeの未設定が検出されたときにも,録画予約表示には該当するエントリも録画予約として表示している.実際には,この時点でMySQLのデータベースが書き換わるので,次回からは表示されない.
  8. 番組表で,現時刻を示す,赤い横のラインが表示されるが,これがローカル時間になる.海外から番組表をアクセスすると本来あるべき日本時間ではなく,ブラウザの時間になる.これは,ブラウザのJavascriptで表示時に時間を取得し,現在時刻表示しているため.そこで,
    1. templates/index.htmlで記述しており,現時刻ラインのIDはtableNowBas
    2. templates/index.htmlに記載されているJavascriptを改造し,UTCのtimestamp( UNIXの秒表示(1971年よりの秒数)をミリ秒で表したもの)を取得,日本時間へ補正し,Date()で,日本時間のnow値を得ている.
    3. デバッグは,Google Chromeのコンソールとコンソール出力を利用.
      ストリング表示すると,timezoneとしては,ブラウザのある地域のタイムゾーンのまま日本時間になるので気持ち悪いが,javascriptではタイムゾーンは見ていないので問題なく動く.
      1. Date()の使い方:
        https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Date/prototype#Methods
      2. Google Chromeのコンソールの使い方:
        https://developer.chrome.com/devtools/docs/console
      3. console.log('JST now: %s', now.toString()); などでコンソール表示してデバッグしたが,Chromeコンソール専用の出力コマンドもあるらしい..
        See: http://blog.asial.co.jp/1152
今後やりたいカスタマイズ)
  1. 録画予約の高度化
    1. 簡易予約で,開始,終了時間を文字入力ではなく,iOSのような回転文字盤で変更できるようにする.これは,キーボードが日本語モードになっていると変換等でうっとおしいのと,数分ずらすつもりで入れ間違えるとおかしくなるため.
    2. 長時間番組を分割する.例えば1時間ずつセクションにわける.理由は,
      1. mpeg2録画終了後に,バッチでSDに変換をかけている.変換が終了したことは,録画済み番組表でサムネイルが表示できたこととため,長時間番組が見られるようになるまでに時間がかかる
      2. 長時間番組ではスクロールバーでの位置合わせが微妙なうえに,実際にファイルが転送されるまで待つので画像表示開始までに時間がかかる.
    3. 実時間に近い再生をしたい
      1. TSファイルに書き出してから,ffmpegをかけるのではなく,pipeで繋いで実時間transcodeしたい.
      2. さらには,TSファイルやmp4への書き込みが終了するまえに,視聴を開始したい.(実時間表示モード or タイムシフト表示モード)
    4. 消去機能
      1. チェックしておいてまとめて消去する機能
      2. ある時点より古いファイルをまとめて消去する機能
      3. 絞込検索で表示されたファイルに対して,1,2が適用できるようにしたい.
      4. ディスクスペースが減ってきた時に古いファイルから自動消去する機能

2015年12月31日木曜日

真田幸村と今の日本社会との類似性

NHK 英雄たちの選択)
先日,JALの機内ビデオで,NHK 英雄たちの選択 「大坂の陣400年 真田幸村・決戦へのジレンマ」という1時間番組を見たので紹介したい.

真田幸村は,2016年のNHK大河ドラマの主人公で「戦国時代最後の名将」としても紹介されている.

それも踏まえてこの番組を流しているのかもしれない.

今後再放送の予定あり)
NHKサイト http://www4.nhk.or.jp/heroes/2/ によると2016/1/14(木) 20:00-21:00にNHK BSプレミアムで再放送されるらしい.
NHKオンライン http://www4.nhk.or.jp/heroes/x/2016-01-14/10/13363/2473001/ にも掲がっている.番組概要と出演者も出ている.

  上記にある番組紹介を引用)
今年は、大坂の陣勃発からちょうど400年。この大坂の陣、最大のヒーローといえば、真田幸村だ。 
幸村は、夏の陣において、徳川方15万に対して豊臣方5万という圧倒的に不利な戦いの中、家康を幾度も追い詰め、自決すら覚悟させた猛将だった。 
しかし、幸村には家康と決戦する以外の選択もありえた。それは一体どんな選択肢だったのか?幸村の最終決断の真相とは?戦国の世・最後にして最大の戦い、大坂の陣の実像に迫る。
他のblogでの解説)

結局,今,日本が抱えている問題と変わらない)

真田幸村と大坂の陣) 真田幸村は,大阪の陣に先立つ,天下分け目の戦い,関ヶ原の戦いで,西軍に付き徳川家康に破れ,幽閉されていた.

 もやは大阪の陣が避けられないとなったとき,当主 豊臣秀頼は真田幸村(当時47歳)を直々に大阪城に引き入れた.大阪冬の陣では,真田丸という出城をつくり徳川方を蹴散らし,その後,講話し外堀・内堀を埋められ,もはや籠城もできなくなった大阪城では,家康の本陣に切り込み,家康がもはやこれまでか...
 と自害する寸前まで追い込んだと言われている.

大坂の陣を含む幸村の生涯は http://senjp.com/sanada-yuki/ などのblogが詳しい.

大阪夏の陣で真田幸村がとりえた選択肢)
  1. 真田家を守るために,秀頼を見捨て徳川に寝返る
  2. 豊臣家が領地を捨て,一大名になるよう進言する
  3. 徳川家康と決戦する
 コメンテータの意見としては,大方3だが2をサポートする意見もあった.判断基準としては,それぞれに対して
  1. 幸村の兄弟たちは,既に徳川方におり,真田家の存続は幸村の判断によらず既に保証されている
  2. 冬の陣で講和してまで豊臣家存続を優先したのだから首尾一貫している.ただし,徹底抗戦を叫んで雇入れ冬の陣を戦った,浪人たちは納得しない.まとめられるとしたらそれこそ大阪冬の陣で大きな戦功をあげた真田幸村しか考えられない.が,幸村は戦には強いが,政治力に欠ける.
  3. 大阪城は堀を埋められてしまったので,もはや籠城戦はできず不利ではあるが,徳川方の要は家康一人なので,奇襲で家康を討ち取れば勝機はある.
大阪冬の陣での和平では,
  1. 豊臣の領地を安堵する (実際,大阪の陣の時点でも,徳川家と味方する大名の領土は,豊臣のそれの半分しかなかった.)
  2. 冬の陣で豊臣に味方した浪人たちの責任は問わない
  3. 大阪城の外堀を埋める
とのこと.ところが,徳川方は,大阪城の内堀まで埋め,さらに,家康は,約束を反故にして,豊臣の領地の返還と浪人たちの引き渡しを強要してきた.
 大阪冬の陣の和平派は,当時72歳の家康が死ねば,徳川方は家臣の覚えが良くない後継者秀忠では徳川方をまとめられない.一方,豊臣秀頼は21歳で安泰.したがって,ゆっくりと堀を埋めていればよい,と考えたとのこと.

今の日本と変わらない点)
ここからが本題.

歴史学者,政治学者,心理学者など多方面のコメンテータが自らの専門を活かして,多方面から分析していて面白かった.
  1. 抜擢人事ができない) 戦国最後の名将といわれる真田幸村を当主 豊臣秀頼が抜擢したが,政治判断していたのは,戦の経験のない大野治長らであった.
  2. CTOが居ない)大阪城には文官(事務屋)とそのトップはいるが,武将(武官)のトップがいない.... これ,事務屋のトップはいるが,技術に詳しい技術屋のトップがいない日本の会社に似ている.
  3. 自分目線で判断する)大阪冬の陣の講和主張派は,「ゆっくりと堀を埋めていれば,家康が死ぬだろう」と自分の都合がよい前提で講和をのんだ.一旦,徹底抗戦しようと,浪人たちを抱え込んでいたのにもかかわらず..
    コメンテータ曰く「勝者の条件は,最悪の条件を考えて手を打つ」
  4. 目的と手段が入れ替わってしまう.堀も埋められ,もはや後がない大阪夏の陣では,「家康を討つ」ことが最終手段.真田幸村もそのための本陣突撃の策を練った.
    1. 大阪冬の陣では,幸村は野戦を主張したが,籠城戦になり,それでも,幸村は出城 真田丸を作り善戦して,徳川方を恐れさせた.が,この実績があっても,和平議論やその後の戦略議論では,幽閉されていて引き入れられたという浪人組の真田幸村の主張は大阪城幹部にはききいれられていない.
    2. 豊臣秀頼から「自身で出馬する」との約束を得ており,もしも出馬していれば豊臣方の指揮も随分あがった.が,取り巻きの反対で出馬できず.
    3. 真田幸村隊が徳川本陣奇襲の位置に付く手前で,勝手に戦闘がはじまってしまった.
  5. 脳科学の先生曰く,人間は幽閉されたり冷遇されるとモチベーションを失い,次第に能力を失っていくが,真田幸村は50歳近くまで能力を維持し続けた.高い目的意識があったのだろう.
  6. 真田幸村は戦術や武術には長けていたが政治がヘタであった.大阪城の重鎮達がしゃべろうとしているのを遮って主張したりしていた.
    1. 事をなすには,実力よりも表現力が大事なことがある.
    2. 平和な時代には話が通じる上司ばかりではない,間抜けな上司の扱い方を知らないと,やりたいことがやれない.
      これも,目的のために手段も適宜考えるべきということかもしれない.
      今の時代の技術バカといわれる人たちにも言えそうである...
  7. 徳川は,この後,安定志向の日本社会の基礎を築いた.もしも,豊臣が勝って,大阪が日本の首都になっていたら,今の日本と違っていたかもしれない.
    1. 浪人の反乱を抑えこんだ.江戸時代には藩を潰しても1万石ぐらいは与えて,浪人がでないように生かさず殺さずにした.
    2. 徳川にとっては反乱軍の真田幸村だが,時が流れ江戸太平の時代には,主君への忠誠を尽くしたということで,英雄扱いされた.(これは,忠臣蔵の赤穂浪士も同じ)..... 善悪を決めない中途半端なところが,今の日本にも共通する.

      ま,キリスト教的な,「正義(味方)と悪(敵)」の2色塗り分けがもたらした,テロの時代を考えると,来る者は拒まず的な風土こそ,平和な世界をもたらすのかもしれないが.....
2016年の大河ドラマ)
2016年1月10日から始まるNHK大河ドラマ 「真田丸」http://www.nhk.or.jp/sanadamaru/ は,真田幸村の生涯を描いたものになる.以下,ここからタイトルバックを拝借.

堺雅人 売れているなぁ..100倍返し(て,もらっている)か... 
番組では,PCゲーム「信長の野望」などで好評 CG戦国マップなども流用して,わかりやすく説明される模様.


 「真田丸」の内容紹介は http://www.nhk.or.jp/sanadamaru/about/index.html にある.

過去の大河ドラマ)
最近の大河ドラマの一覧は,http://www9.nhk.or.jp/taiga/catalog/index.html にあるとおり


もあるが,やはり戦国武将物は人気があるようで1年おきぐらいに登場する.

http://artv.info/taiga.html にある以下の図のように,やはり幕末英雄や戦国武将ものは,大河ドラマの人気が高い傾向があるようで,王道なのだろう.

機内ビデオ機材について)
JALの羽田発-サンフランシスコ便JL001/002のビデオ機材は,前回搭乗した2015/8月と今回の2015/12月の間に更新された模様.従来は新作映画10本強と旧作で合計30本程度だったが,今回からは,番組ガイド1ページに映画4作が18ページ分=72本もある.そのかわりに,新作は邦画・洋画を合わせても10本に減った.これに大量のテレビドラマ,ビデオ作品が50本以上ある.

映画一本,700MBとしても80本で500GB程度なので,おそらくHDD を最近の1TB以上のものにしたのだろう.そして,映画会社との契約を変え,新作を減らし旧作を増やせば,配信料も下がるのかもしれない.映画だけで80本x2時間で160時間,音楽は100番組以上,漫画の電子書籍が40種(各3巻) , ゲーム(囲碁将棋を含む 24種類)もあるので,退屈することはないだろう...

最近のJAL 羽田-サンフランシスコ便の機材について)
機材はB777-300ER : http://www.seatguru.com/airlines/Japan_Airlines/Japan_Airlines_Boeing_777-300ER_B.php だと思う.2014年の末からB787-8から上記機材に変わって,ファーストクラスとプレミアムエコノミーが復活している).

機材と用意される座席クラスの情報は,http://www.seatguru.com/airlines/Japan_Airlines/information.php にでている.

2015年10月13日火曜日

世界大学ランキングで日本の大学の地位が急降下中

 日本人が連続でノーベル賞をとっていると浮かれているマスコミもあるようですが..
 ノーベル賞は過去に教育された人の成果に対して与えられるもの,次の世代を育てる教育はどうなっているのでしょうか...

 今年のTHE世界大学ランキング: http://bit.ly/1FVy6gW 東大は前年23位から43位に転落したものの日本トップ.ただし,北京大学に抜かれました.カナダ,シンガポールなど英語圏や,ベルギー,スイス,ドイツなど英語の上手な国ははるかに上.
THEからトップ20

 QS世界大学ランキング: http://bit.ly/1FVIzsM では,東大は前年の31位から39位に転落,日本トップは38位の京大ですが,すでに中国,香港のほうがうえで,ソウル大学にも負けています.
QSからトップ20

評価基準は,
THE: wikipediaから: http://bit.ly/1FVybkF

QS: http://bit.ly/1FVy88D
 wikipediaから: http://bit.ly/1FVIQfd

SOSPでは)
 SOSPについては以下で紹介した:

2015年10月13日火曜日

先日までの権威ある国際学会SOSPでも,バンケットの最後で,「次回は上海だ!」と英語の上手な中国人の先生たちが,おもしろおかしいスライドでSOSPを誘致していました.SOSPの参加者は,米国が主で,あとは欧州なので,あとから米国から参加した学生に聞くと,「わざわざ中国でやってもなぁ...」という返事でしたが.

日本飛ばしが本当に起きているのでしょうか....

英語は随分まえから世界の標準語,言葉を使いこなせないハンディは非常に大きいと思います.

バンケットの最後での説明の様子
エッジの重みに所要時間を描いたグラフを出して,如何に上海の便がよいか笑いを取る中国の先生

上海には,2016年にディズニーのテーマパークができる,料理が上手い,ホテルの部屋数が多い,ホテルが安い,空港からの便がよい.というまとめを出す講演者,途中でバトンタッチした講演者も英語とプレゼンが上手でした.


シリコンバレーなどの日本人コミュニティでは...)
日本人がコミュニティとかネットワーキングと叫ぶと,どうも,日本人だけの「ムラ」になるように思う.

結果,米国に日本人ムラを作っているのかなぁ?と不思議に思うときもある.たとえば,
  1. 本場の専門家がたくさんいるのに,わざわざ,聴きづての話を日本人が公演する
  2. ベンチャーとかも,シリコンバレーに沢山あるし,世界的にも有名な人がいるのに,わざわざ日本から見学やらビジネスにやってきた,日本のベンチャーの人や研究者に,日本語で公演をお願いする
    • 聴講者も,特に下調べをしているわけでもなく,なんとなく興味本位で聞きに行って,名刺交換するみたいだが,ある程度,努力して継続的に調査・フォローしないと身にはつかないのでは... 日本の本屋にあふれる,安易は,How To 本のノリに近いのだとすると,それでは技術や能力もつかない..
    • また,日本で有名な方が米国を訪問するので,知り合うチャンスがあると..がんばって名刺交換するのは良いが,相手の立場に立ってみれば,give and takeできない人(相手に相応の価値のない人)の名刺を貰っても,活用のしようがない.LinkedInでコネクションの数だけふやしても,単に数を競うだけになるようなものである.
  3. 米国人とかもレセプションとかでは知り合いで群れる.が,あえて知らないひとと食事を一緒にするし,席に座ればまずお互いを紹介して,知り合いを増やす.が,日本人は英語の苦手意識があるのか,日本人としか群れない人が多い.

そもそも,均質民族,均質文化の日本人が集まるのと,
そもそも自己主張が強くてお互い信用しない,多民族・不均質文化の中国人・インド人がコミュニティをつくるのとでは,コミュニティの居心地の良さや,浸かり具合も違うのではなかろうかと感じてしまう.

日本の高校や大学でOB会でコミュニティを作り,大学の交流を図るのはよいことであるが,それが行き過ぎて,身内ボメになったり,お付き合いやら身内への仕事の融通など,能力主義でないところに安住してしまっていては,続々,発展途上国が参入して競争が激化している国際ビジネスでは生き残れられないのではなかろうか...

何がグローバルなのか,何をすると国際的に勝てるのか,これまでの活動とその結果を見直しながら,今一度,見なおしたほうがよいのかもしれない.