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アクセスになっていました。2018/7/7 .. おお七夕 .. には63万0656アクセスになっていました。久しぶりに更新しました。

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. ディスクスペースが減ってきた時に古いファイルから自動消去する機能