[Books] Pragmatic Version Control Using Git

Tags: ,

興味を持ちつつも全然手を出していなかったGitだったのだけど、さっさと導入しとけばよかったなというのが最初の印象。普段は可能であればGUIを使いたいと思うのだけど、GitはGUI(例えばMacだとGitX)なくてもいいかなと思ってしまうほど操作が直感的だった。非常に好印象。というのも教本がとても読みやすかったからというのがある。

Pragmatic Version Control Using Git (Pragmatic Starter Kit)
Pragmatic Version Control Using Git (Pragmatic Starter Kit)

以前、同じ出版社のSubversionの本を読んだのだが([Books] SubversionとTextMateの本 - boreal-kiss.com)、Subversionの手続きが面倒なのか著者の文体が悪いのかわからないが必ずしもSubversion便利!と思える内容ではなかった。しかし、上記Gitの本はリーズナブルな内容。バージョン管理に関わる観念的な内容を実生活の行動に例えたり、なかなか上手に説明しているなと思う。一般に外国人のたとえ話なんか日本人の心に響くわけないのだけど(例えば[Books]ActionScript 3.0 Design Patterns - boreal-kiss.com)、この本はそれほど悪くなかった。

この本の面白いところは、教本中のソースのダウンロード先が全てGitのリポジトリを使っているところか。まあ当たり前と言えば当たり前だけど、プログラム本にありがちな「出版社のHPにアクセスしてサンプルソースをダウンロードする」という手間のかかる操作がなくてよかった。ということで本もGitもオススメ。

ソースコードを色付けしてhtml化するPHPパッケージ - GeSHi

Tags: , ,

GeSHi - Generic Syntax Highlighterはプログラムソースを修飾語などにきれいに色付けした状態でhtmlソースとして出力してくれるPHPパッケージ。対応言語が豊富で、ActionScriptやObjective-Cも対応している。GeSHiを使ったWebサービスが見当たらないのはプロジェクトライセンスがGPLのためなのかな。

使い方

  1. sourceforge.netからパッケージをダウンロード。パッケージ全体をPHPが動作する環境に配置する。
  2. パッケージで定義されているGsShiクラスにhtml化したいソースファイルのストリング内容とパースしたい言語を引数に渡してパースさせる。
  3. パース内容を出力させたものがhtml化されたソースコードになる。

ActionScript 3.0の場合

例えばTest.asの中身を表示したい場合、PHPファイルに以下のように記述して実行。

<?php
 
include(‘geshi.php’);
 
//Language
$lang = ‘actionscript3′;
 
//Raw source code
$path = ‘Test.as’;
 
$src = file_get_contents($path);
$geshi = new GeSHi($src, $lang);
$geshi->enable_keyword_links(false);
 
echo $geshi->parse_code();
?>

上記PHPファイル実行時の出力内容は以下の通り。Flex Builderと全く同じ見た目が出力される。インデントがちょっと深いぐらい?

package {
	import flash.display.Sprite;
 
	/**
	 * Test.as
	 */
	public class Test extends Sprite{
		/**
		 * Constructor
		 */
		public function Test(){
			this.init();
		}
 
		protected function init():void{
			trace("Hello");
		}
	}
}
 

Objective-Cの場合

例えばTestAppDelegate.mの中身を表示したい場合、PHPファイルに以下のように記述して実行。

<?php
 
include(‘geshi.php’);
 
//Language
$lang = ‘objc’;
 
//Raw source code
$path = ‘TestAppDelegate.m’;
 
$src = file_get_contents($path);
$geshi = new GeSHi($src, $lang);
$geshi->enable_keyword_links(false);
 
echo $geshi->parse_code();
?>

上記PHPファイル実行時の出力は以下の通り。まあアリ?

//
//  TestAppDelegate.m
//  Test
//
//  Created by boreal-kiss.com on 09/02/08.
//  Copyright boreal-kiss.com 2009. All rights reserved.
//
 
#import "TestAppDelegate.h"
#import "TestViewController.h"
 
@implementation TestAppDelegate
 
@synthesize window;
@synthesize viewController;
 
 
- (void)applicationDidFinishLaunching:(UIApplication *)application {
 
    // Override point for customization after app launch    
    [window addSubview:viewController.view];
    [window makeKeyAndVisible];
}
 
 
- (void)dealloc {
    [viewController release];
    [window release];
    [super dealloc];
}
 
 
@end
 

その他

パッケージデフォルトだとSpriteやintなんかに変なURLのリンクがくっつくので、以下の設定でキーワードへのURLリンクを無効にしておくとよい。

$geshi->enable_keyword_links(false);

出力された内容をそのままブログなんかにコピー&ペーストしたいのであれば、以下のように出力内容を設定してやるとよい。出力内容がhtmlタグの形で表示される。

//echo $geshi->parse_code();
 
echo ‘<pre>’;
echo htmlspecialchars($geshi->parse_code());
echo ‘</pre>’;

[iPhone] ArchivingデータをUITextFieldに表示させたときに出るSQLエラー

Tags:

archivingにより取得したデータをUITextFieldに表示させるようなアプリケーションを、iPhoneシミュレータ(iPhone OS 2.2)で初めて起動させる時、データを表示させたUITextFieldをクリック(エディット用のキーボードが出現する状態)するとなぜかSQL文に関係するエラーがコンソールに表示される。

error compiling query "SELECT value FROM _SqliteDatabaseProperties
WHERE key = ?;": no such table: _SqliteDatabaseProperties

これはアプリケーションの二回目以降の起動では表示されないし、iPhone実機を使ったデバッグでも表示されない。Beginning iPhone Development: Exploring the iPhone SDKの著者の一人であるJeff Lamarcheによると、よくわからんがシミュレーター近傍の問題ぽいので気にするなとのこと。iphonedevbook.com • View topic - Persistence Solution Using Archivingより。

← Previous Page