ブログ移転しました

Wordpressをいろいろ整理したいと思っていたのだけど、 せっかくなのでOctopressに移行してみた。 Wordpressからの移行でデザインが崩れてる記事もあるけど、 おおよそおっけーなのでひとまずこのまま。


あけましておめでとうございます。年末年始、風邪で死んでおります。 なんだかよくわかりませんが、ここ数カ月体中の節々が痛いです。年ですか。 ちょっと作業するだけで小指も痛いので、 今年はEmacsからVimへの乗り換えを画策したいと思います。 本当はSublime Text2にしたかったけど、痒いところに微妙に手が届かず、断念orz そんなわけで、MacVimを使いながら、勉強したコマンドを 覚えた順に列挙していきたいと思います。適宜追加予定。

これを書き始めたときの僕のviレベル

  • 基本的にEmacsユーザ
  • viはサーバの設定ファイルとかいじるときとかにたまに使用
  • 最低限のモード切り替え(i,A,etc)、移動(hjkl,gg,etc)や、最低限のコピペ(dd/yy/p)とかは知ってる

ビジュアルモード

コピー等する領域をコマンドベースじゃなくて、範囲を確認しながら行うモード。 ふつーのエディタならShift+カーソルで選択している状態。Emacsだとtransient-mark-modeオンでのリージョン選択相当。以下の表は記載なければビジュアルモードでのコマンド。
ノーマルモードでv ビジュアルモードに入る。 現在のカーソル位置から始まる任意の範囲を選択できる。 vの代わりにVで行単位での選択、<C-v>で矩形選択。
hjkl等 hjklはじめ、移動はノーマルモードと同様に利用可能。
d 選択範囲を削除
c 選択範囲を削除してインサートモードにする。
y 選択範囲をコピー(ヤンク)

画面分割

:split もしくは <C-w>s 画面を水平分割
:vsplit もしくは <C-w>v 画面を垂直分割
<C-w>[hjkltb] hjklで指定した方向の画面に移動。 <C-w>tで最初のウィンドウ、bで最後のウィンドウ
<C-w>c 分割した画面を閉じる

インデント

>> インデントを挿入
<< インデントを削除
= 指定した範囲をオートインデント
gg=G ファイル全体に対してオートインデントを適用。 ファイル先頭に移動(gg)→オートインデント(=)→ファイル終端(G)まで。

zencoding.vim

VimでのZen-Coding。下記をみながらお勉強。

Big Sky :: zen-codingの殆どの機能をzencoding.vimに取り込んだ。

略語入力後<C-y>, Zen-Coding略語展開
範囲選択後<C-y>, 任意のタグで選択範囲を括る

移動・編集とか

編集の肌感覚がなんとなくわかってきた。

g, 直前の編集箇所に戻る
cw カーソル位置の単語を単語の終わりまでを削除してインサートモードに移行
caw カーソル位置の単語全体を削除してインサートモードに移行
dw カーソル位置から単語の終わりまでを削除
daw カーソル位置の単語全体を削除
d$ カーソル位置から行末までを削除
d0, d^ 行頭からカーソル位置までを削除


2,3回調べちゃったので備忘。

AIR for Androidで作成したapk のエントリポイントとなるActivityの名称は “AppEntry” 。

なので、adbからAIR for Androidで作成したアプリを起動する必要がある場合は以下のコマンドで実行可能。

adb shell am start -a android.intent.action.MAIN -n air.{APP_ID}/.AppEntry

Windows 8はWindows2000以来初めて、発売日に手に入れてない(^_^;)
仕事で各プレビュー版をそれなりに触ってしまったので、情熱が。。。
さて、Windows 8は単体ではDVD再生ができない。これは前から周知があった。

GetProductInfo function

以下のMedia Center Packを適用すれば再生可能になる。2013/1/31まではタダらしい。

機能の追加 - Microsoft Windows

このMedia Center Packを当てたWindows 8 Proは、通常のWindows 8 Proとは別エディションになるようだ。

見た限り、エディション判別によく使う、getProductInfo APIのpdwReturnedProductTypeの値がWindows 8 Proと異なる。

GetProductInfo function

Media Center Packを適用すると、Proを示すPRODUCTPROFESSIONAL(0x00000030)でなく、 PRODUCTPROFESSIONAL_WMC(0x00000067)になってるようだ。

WindowsのOSバージョン/エディション判定ロジックのWindows8対応を行ったプロダクトがある場合、この点を見逃していないか確認が必要かも。

Microsoft Windows 8 Pro (DSP版)  64bit 日本語
Microsoft Windows 8 Pro (DSP版) 64bit 日本語


最近はコンセプト検証用のサンプルプログラムを作って営業することが多い。 ここ数日、FlexでAdobe AIRのサンプルを作っているけど ActionScript自体触った機会がないので手探り状態…

さて、こんなん

<s:VideoDisplay id="video_player">
    <s:source>
        <s:DynamicStreamingVideoSource streamType="live" host="{data.host}">
            <s:DynamicStreamingVideoItem streamName="{data.streamName}"/>
        </s:DynamicStreamingVideoSource>
    </s:source>
</s:VideoDisplay>

作ってVideoPlayerにDynamicStreamingVideoSourceを指定してライブストリーミングを受信するようにすると、 video_player.play()で再生はできるけどstop()やpause()が効かない…(´・ω・`)

手探りで videoplayer.mxinternal::videoPlayer.stop(); としてみると止まった。

ただし、mxinternal名前空間以下のメソッドは<a href=“http://cookbooks.adobe.com/postWhatismxinternal-12212.html”>アドビの説明によると

Problem Looking at the Flex framework code, several properties and functions are prefixed with mxinternal. What is this? Solution mxinternal is a namespace used by the Flex framework to partition out functions and properties that may change in future releases of the Flex SDK.
いつ消えるとも知れないらしい… Flexのバージョンアップに追随していく必要のあるアプリだと使えなさそう。 今回のケースでは問題少なそうだから、ひとまずこれで対処することにする。


Redmineのガントチャートはデフォルトだと日付がでない。過去にパッチが作られている。

【Redmine 1.1.2】ガントチャートに日付を表示させる|渋谷ではたらくマー君の技術とかブログ。 Redmineガントチャートの日付表示再び: 100ねんごの未来予想図

これらを参考に、Redmine2.0でViewを直接書き換えた。ほぼ上記サイト作成のものそのままで動いた。

gantt-with-date

Redmine 2.0.3.stable.9920にて確認。 $RAILS_HOME/app/views/gantts/show.html.erbに下記パッチ。

こういう変更はERB差し替えになってしまう以上、Redmineプラグインにするのも微妙… バージョンアップごとにパッチするしかないのかなー


gooからだログと連携できる体組成計をつかってみたよ

gooからだログに自動でデータを送信できる体組成計(体重計+α)のUC-411PBT-Cを試してみた。

IMG_8082.JPG IMG_8083.JPG デザインは悪くない感じ。

Withings Wifi Body Scaleとの比較

Web記録可能な体重計として最も知られているのはWithingsWifi Body Scaleだろう。 個人的に気になった点を比較してみる。
名称 UC-411PBT-C Wifi Body Scale
価格 - \12,800 (USBドングル付き \18,780) - \17,800
連携サービス - gooからだログ - Withings
通信方式 - Bluetooth - Wifi
必要機器 コンティニュア対応機器
(一部シャープ製Android,
同規格対応PCもしくは
インターネットに繋がるWindowsPC+ BluetoothUSBドングルBlue-1000-v)
無線LANルータ等
測定値 体重、体脂肪率、BMI、 基礎代謝、筋肉量、水分量 体重、体脂肪率、BMI
家族利用 測定者自動検出、5ユーザ 測定者自動検出、8ユーザ
体重測定単位 50g(〜100kgまで) 100g

価格については、現況ではほとんどのユーザが必要となってしまうUSBドングルも含めるとWifi Body Scaleとほぼ同等かやや高めといった感じ。単体購入のみで済む人であればUC-411PBT-Cのほうがお買い得。
インターネットへの通信方法は大きく異なり、UC-411PBT-CはBluetooth利用のため、インターネットに繋がる何らかの機器で送信を仲介することになる。
コンティニュアなる規格対応らしいけど、現況では対応機器は少ないが、Androidはシャープ製のものについてはアプリがあれば対応できるらしい。最近のBluetooth対応機器ならば理屈の上では対応できそうなので、今後に期待。

“体組成計"を謳っているだけあって、測定項目は多い。 一応これまでも体重想定をしてきた身からすると、 運動の長期的効果の確認としての基礎代謝測定と、 水分補給による一時的変動なのか否かの指針となりそうな水分量測定は魅力的。 ウェブサービスはWithingsのサービスの利用経験もないし、からだログも使い込んでいないので評価は保留。 今のところ、からだログで閲覧にあたり不便はない。 ブログパーツがないことと、Twitter/Facebook連携ぐらいあればいいのになー、ぐらい?

PCとの連携

Windows PCとの連携手順は以下。
  1. ドングルをUSBポートに指して、ドライバをインストール。Windows Vista/7の場合はプラグアンドプレイで自動インストールされるドライバでよい。 自分の場合はWin7で付属CDのドライバ入れたらペアリングできなかった。
  2. データ転送用アプリをダウンロード、インストール。
  3. アプリ内でgoo IDを設定。
  4. 体組成計の中央ボタンを3秒押した後、さらに2回押す。(利用者1名の場合) その後、アプリ側で機器設定->機器追加をクリックしてペアリング。成功すれば下記のように見える。 gookaradalog
  5. 体組成計に乗れば体重等の情報が自動送信される。
Windows PCと連携する場合、測定時に必ずしもPCが起動している必要はなく、体組成計側で過去の測定履歴を保存、PC起動時にまとめて送信してくれる。

ステマじゃないよ

※このポストは個人の見解であり、所属する組織の公式見解ではありません。


Windows7でもネイティブモードで動かすためにはマニフェストに互換性設定が必要だったように、Windows8でもネイティブモードで動かすにはマニフェストに宣言が必要。

App (Executable) Manifest (Preliminary)

Windows8でもネイティブモードでないとプログラム互換性アシスタント(PCA)が動く。

Program Compatibility Assistant (PCA)
  • Windows 8: Apps with the compatibility section do not get the PCA mitigation.
  • Windows 7: Apps with the compatibility section are tracked for potential compatibility issues for Windows 8 changes (described in this document).
  • Windows Vista (default): Apps that fail to install properly or crash during runtime under some specific circumstances get the PCA mitigation. For more information, see the Resources section.
Windows8サポートであることを明示し、ネイティブモードで動かすには以下のGUIDをcompatibilityセクションで指定する。
{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}
MSDN記載のサンプルは以下。
<?xml version=“1.0” encoding=“UTF-8” standalone=“yes”?> <assembly xmlns=“urn:schemas-microsoft-com:asm.v1” manifestVersion=“1.0”> <compatibility xmlns=“urn:schemas-microsoft-com:compatibility.v1”> <application> <!–The ID below indicates app support for Windows Vista –> <supportedOS Id=“{e2011457-1546-43c5-a5fe-008deee3d3f0}”/> <!–The ID below indicates app support for Windows 7 –> <supportedOS Id=“{35138b9a-5d96-4fbd-8e2d-a2440225f93a}”/> <!–The ID below indicates app support for Windows Developer Preview –> <supportedOS Id=“{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}”/> </application> </compatibility> </assembly>


Mac Miniを購入して、OSXでマウス(Logicool M705)とMagic Trackpadを常用する環境になったが、マウスがいまいちしっくりこない。

1. マウス移動がWindowsと比べて加速しすぎる。

細かい動きをしようとすると動きが少なすぎてイライラする。最小化/最大化をミスクリックすること多数。 Logicool等、サードパーティのソフト設定ができる場合はOS側の"軌跡の速さ"を下げて、サードパーティ側の速度を極端に上げれば(Logicoolの場合、"追随速度係数")加速が弱まってちょうどいい感じ。

それにしてもLogicoolはハードウェアはいいのにソフトウェアはWindowsでもMacでもイマイチだね…

2. マウスのスクロール方向が逆

トラックパッドとマウスを併用する場合、現行のLionでは、トラックパッドとマウスのスクロール方向は連動しているので、トラックパッドをナチュラルスクロールにするとマウスのスクロールも逆になる。これは流石に慣れない…

指定デバイスのスクロールだけ逆転させてくれるソフトがあったのでOSがどうにかしてくれるまではこれを使うとする。

Scroll Reverser for Mac OS X

3. 利用しているM705の場合、ホイールをフリースピンさせた後にガタガタ動く。

Windowsでは起こってなかったのでハードウェアがヘタったわけではないようだ。これだけ解決策がまだ見当たらないので模索中…


旧さくらのVPS移行期限が近づいてきたので、急いでWordpressを新設したVPSに移行した。せっかくなのでnginxベースに。

WordPressは事前にWordPressディレクトリ内全ファイルをコピーしておく他、 データベースはすべてダンプし、移行先サーバに設置、インポートするだけ。データベースのダンプは phpmyadminなどで行うか、wp-db-backup等のWordPressプラグインで行えばかんたん。

以下、Ubuntu 12.04での作業ログ。

nginx/php/fastcgiのインストール。 aptitude install nginx php5-cli php5-cgi php5-gd spawn-fcgi

/usr/bin/以下に以下の内容でphp-fastcgiファイルを作成。 #!/bin/sh /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 6 -u www-data -f /usr/bin/php5-cgi

作成したファイルに実行権限付加。 cd /usr/bin/ chmod a+x php-fastcgi

起動用スクリプト/etc/init.d/php-fastcgiを作成。

\#!/bin/bash
PHP_SCRIPT=/usr/bin/php-fastcgi
FASTCGI_USER=www-data
RETVAL=0
case "$1" in
start)
su - $FASTCGI_USER -c $PHP_SCRIPT
RETVAL=$?
;;
stop)
killall -9 php5-cgi
RETVAL=$?
;;
restart)
killall -9 php5-cgi
su - $FASTCGI_USER -c $PHP_SCRIPT
RETVAL=$?
;;
*)
echo "Usage: php-fastcgi {start|stop|restart}"
exit 1
;;
esac
exit $RETVAL
console output

権限付加、自動起動設定してデーモン起動。 chmod a+x /etc/init.d/php-fastcgi update-rc.d php-fastcgi defaults /etc/init.d/php-fastcgi start

nginxにWordpress用の設定を追加する。/etc/nginx/sites-available/wordpress に下記を追加。 upstream php { server unix:/tmp/php-cgi.socket; server 127.0.0.1:9000; }

server {
listen 80;
server_name your_domain_name;
access_log /var/log/nginx/wordpress.access.log;
error_log /var/log/nginx/wordpress.error.log;
root /path/to/wordpress/;
index index.php;
location = /favicon.ico {
log_not_found off;
access_log off;
}

location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}

location / {
try_files $uri $uri/ /index.php;
}

location ~ \.php$ {
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME /path/to/wordpress/$fastcgi_script_name;
fastcgi_intercept_errors on;
fastcgi_pass php;
}

location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
}

作成した設定を有効化、fastcgi/nginxを起動。 ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enable/wordpress /etc/init.d/php-fastcgi start /etc/init.d/nginx start

参考サイト

耐えられずにSixcore...