Xserver で git を使う

(2015/12/04 更新)

まず、GNU gettextが必要なのでインストールする。場所はホームディレクトリの opt 以下ということにする。

[Xserverで作業]
$ wget http://ftp.gnu.org/pub/gnu/gettext/gettext-0.19.6.tar.gz
$ tar zxvf gettext-0.19.6.tar.gz
$ cd gettext-0.19.6
$ ./configure --prefix=/home/[ユーザ名]/opt
$ make install

インストールした gettext のコマンドラインツールを使えるようにするため、PATH に ~/opt/bin を追加する。

次に、https:// のリポジトリを clone できるようにするため、curl をインストールする。これをやらないと、以下のエラーに遭遇する。

$ git clone https://github.com/xxxxx/xxxxxxxx.git
Cloning into 'xxxxxxxx'...
fatal: Unable to find remote helper for 'https'

もともと Xserver に curl はインストールされているものの、curl-devel パッケージが存在しないため、curl をリンクできない。なので、ソースから ~/opt にインストールする。

[Xserverで作業]
$ wget http://curl.haxx.se/download/curl-7.46.0.tar.gz
$ tar zxvf curl-7.46.0.tar.gz
$ cd curl-7.46.0
$ ./configure --prefix=/home/[ユーザ名]/opt
$ make
$ make install

最後に Git をインストールする。

[Xserverで作業]
$ wget https://github.com/git/git/archive/master.zip
$ unzip master
$ cd git-master
$ make configure
$ ./configure --prefix=/home/[ユーザ名]/opt --with-curl=/home/[ユーザ名]/opt
$ make all
$ make install

これで git コマンドが使えるようになります。

エリックサウス(東京駅八重洲地下街)





東京駅八重洲地下街の南インド料理屋さん、エリックサウスでランチしてきました。このお店、オープンは2011年9月と比較的最近ながら、インド料理ファンにはすでに定着しています。僕が行ったのは2度目。この日は、フィッシュカレーのミールスを頼みました。やはりおいしい! おかわり自由のサンバルとラッサムを1回ずつおかわりしました。お腹いっぱい。食べ過ぎました。おかわりのせいというより、もともとこのミールスは、豪華で嬉しい反面、量が多いです。そういえば、インド人はみんな大食いだそうです。インドでは、全ておかわり自由が普通で、量も最初からどかんと出てくるのだとか。

3Dプリンタ買いました

3Dプリンタの組み立てキットを買いました。仕事が溜まっていて、いま手をつけると、あちこちに迷惑をかけるので、ちょっとの間おあずけです。

何を作るの、と聞かれて、しばし固まりました。うーん。特に作りたいものが思い浮かばない。フィギュアの趣味があるわけでもないし。オリジナルの洗濯ばさみでも作ろうかなと答えたら、もっといいもの作りなよ、と。ごもっともです。

クリエイティブな人にとっては、無限の可能性が広がって、楽しい機械です。でも、多くの人にとっては、面白そうだけど使い道のない機械でしょう。頭の固まってしまった僕はおいておいて、子供に自由に使わせてあげたら、デジタルネイティブならぬ、3Dプリンタネイティブが生まれそうです。好きな形状を思うがままに作れる自由を知った子供は、何を作るのでしょうか。

でも3Dプリンタは、僕たちの生活も大きく変えます。人々の生活を、行動様式を、思考を根底から覆す機械です。3Dスキャナと組み合わせれば、簡単に3次元の形状が複製できるんです。これまで、3次元の形状を複製するというのは、比較的困難な作業でした。その困難さを前提として構築されたセキュリティシステムも数多くあります。

たとえば鍵。複製するには鍵屋に持っていって、専用の機械で複製する必要があります。ハンディタイプの3Dスキャナで10秒ほどで複製用データが作れるようになったら、鍵のありようも変わります。印鑑だって、印鑑そのものや印影から、同じ印影を持つ別の印鑑を作るのは、比較的手間のかかる作業でした。ハンコを押した書類から、誰でも同じ印鑑をつくれるのが当たり前になれば、役所から会社まで、日本全体が依存している契約、認証の仕組みが変わります。さらに精度が向上して、指紋を簡単に複製できるようになれば、犯罪捜査も変わります。

3次元の形状の複製は難しいという前提の上になりたっている仕組みや習慣は、今後3〜10年をかけて、変えていくことになるでしょう。

MySQL の起動中に slow query log を開始する

通常は my.cnf に以下の設定をして restart すればいいのですが、稼働中のサービスの場合、再起動したくないこともあります。

slow_query_log=1 long_query_time=3

そういうときは、set global すれば動的に有効にできます。

mysql> set global slow_query_log=1; mysql> set global long_query_time=3;

が、なぜか long_query_time の値が反映されません。デフォルトの 10秒のままです。

mysql> show variables like 'slow_query%'; +---------------------+-------------------------------------------+ | Variable_name | Value | +---------------------+-------------------------------------------+ | slow_query_log | ON | | slow_query_log_file | /var/lib/mysql/ip-10-160-138-xxx-slow.log | +---------------------+-------------------------------------------+ 2 rows in set (0.00 sec)

mysql> show variables like ‘long_query%’; +—————–+———–+ | Variable_name | Value | +—————–+———–+ | long_query_time | 10.000000 | +—————–+———–+ 1 row in set (0.00 sec) </code>

実はそれは勘違いで、グローバルシステム変数の変更は、新規のコネクションから有効になるのでした。一旦 quit してから再接続すると、反映されているのが確認できました。

mysql> show variables like 'long_query%'; +-----------------+----------+ | Variable_name | Value | +-----------------+----------+ | long_query_time | 3.000000 | +-----------------+----------+ 1 row in set (0.00 sec)

iOSアプリでカスタムフォントを使う

Cocos2d for iPhone のゲームで、iOS 標準ではない独自のフォントを使おうとしました。ゲームですからね。得点の表示とかは、ゲームっぽいフォントにしたいわけです。

ググると、以下をすればいいことがわかりました。 ・TTFファイルを Resourcesフォルダに置く(まあ、たぶんどこでもいいです) ・その TTFファイルを Xcode プロジェクトに追加する(フォルダに置くというのと同時にやってもいいはずです) ・info.plist にフォントを追加する。 ・フォントを使うときは、TTFファイル名ではなく、フォント名を指定する。

info.plist へのフォント追加は、こうやります。これは Cocos2d for iPhone 固有の手順ではなく、UIKit 一般の手順です。

CubicSansFont.ttf GF Fuffiger.ttf

</code>

実は Cocos 2D for iPhone は、以下のように内部的に UIFont を用いてフォントを探すので、上記が必要になるのです。

libs/cocos2d/CCTexture2D.m uifont = [UIFont fontWithName:name size:size];

#if CC_FONT_LABEL_SUPPORT if( ! uifont ) uifont = [[FontManager sharedManager] zFontWithName:name pointSize:size]; #endif // CC_FONT_LABEL_SUPPORT if( ! uifont ) { CCLOG(@”cocos2d: Texture2d: Invalid Font: %@. Verify the .ttf name”, name); [self release]; return nil; }

さて、info.plist で指定したフォントは、次のようにして使います。fontName: に指定するのは、ファイル名ではなくフォント名です。TTFファイルをダブルクリックすると開くはずの、Mac の Font Bookアプリのタイトルバーに表示される文字列を指定してください。

CCLabelTTF *time = [CCLabelTTF labelWithString:@"00:00" dimensions:CGSizeMake(100, 50) alignment:UITextAlignmentCenter fontName:@"CubicSans"];

ここまでやればいいはずなのですが、なぜかエラーがでます。

cocos2d: Texture2d: Invalid Font: CubicSans. Verify the .ttf name

[UIFont familyNames] でフォントの一覧を取得しても、CubicSans は出てきませんでした。困った。

実は、Xcodeプロジェクトの Build Phases タブの、Copy Bundle Resources に TTF ファイルを入れておく必要があったのです。これを指定しないと、ビルドしたバンドルにTTFファイルが含まれず、プログラムから探せなくなります。