HTML5 Boilerplate を使ってみる

HTML5 Boilerplateは、Webサイトを作る上で必要となる基本的なファイルがまとめられたパッケージです。

http://html5boilerplate.com/ からダウンロードできます。

gitを使える環境であれば、GitHub(https://github.com/h5bp/html5-boilerplate)から最新版を取得できます。

中身の構成は以下のようになっています。

h5bp_contents.png

拡張子が.mdのファイルは、HTML5 Boilerplateに関するドキュメントで中身はマークダウン記法で書かれています。これらは実際のサイトに置く必要はありません。

 

Objective-Cで可変引数

※本記事は、http://www.cocoawithlove.com/2009/05/variable-argument-lists-in-cocoa.html を参考に(というかほぼそのまま意訳)しました。

 

Objective-CはC言語を拡張した言語なのでC言語と同じように可変引数も扱えます。

一般的に、書式文字列と、nil終端リストによる2つのパターンで可変引数を扱います。

 

書式文字列による可変引数

C言語のprintf系で使われている書き方で、書式文字列中のプレースホルダーの位置に引数を埋めてやるやり方です。プレースホルダは%で始まる書式指定子で指定します。

以下は、NSStringのstringWithFormathメソッドの例です。

MacでPostfixを起動

PerlやPHPを使った開発でメールを送信する機能を実装することがありますが、Macの場合、標準の状態ではメールが送信されないようです。

※sendmailコマンドや、mail関数(phpの場合)を使って送信する場合の話です。以下は、Mac OSX 10.7.5で試しました。環境によっては違うかもしれません。

 

Macには最初からPostfixがインストールされているのですが、自動起動はしないので設定して起動する必要があります。

ps_postfix.png

sudoを使ってルートユーザで起動します。

postfix_start.png

警告が出ていますが、とりあえず起動はしたようです。

Perlのchomp

Perlのchompは、文字列の最後の改行コードを削除してくれる関数ですが、ちょっと癖があります。

Perlでテキストファイルの読み込みをする時に次のように使ったりします。


open( IN, "hoge.txt" );
while( <IN> ) {
    chomp;
    print length;
    print "\n";
}
close( IN );

これは単にテキストファイルの内容を読みこんで、各行の長さを表示しているだけです。

各OSで作成したファイルをそのOSで処理する分にはこれで問題ないのですが、例えばWindowsで作成したテキストファイルをMacで処理すると問題が発生します。

Windowsのメモ帳で次の内容のhoge.txtを作成し、


a
bb
ccc

Macで上のスクリプトを動かすと、結果は


2
3
4

と表示されます。期待した長さより1大きな値が表示されてしまいます。

これは、各OS間の改行コードの相違に起因しています。

http、httpsを省いたURLの指定

SSLで暗号化しているページにアクセスする場合は、https://~というURLを使いますが、このページにhttp://で始まるリンクが含まれていると、ブラウザによっては警告が表示されます。

例えば、JQueryをCDN(コンテンツを配置している外部のサービス)からリンクする場合、次のような書き方ができますが、


<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

同じようにSSLのページでJQueryをリンクする場合は、


<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

と、書かないと、IEでページを見た時に以下のような警告が出てしまいます。

Webサイトにおくアイコン

近頃は、スマホに特化したしたサイトも多くみられるようになりましたが、スマホ用のサイトを作ったらスマホ用のアイコンを設置しておくのが望ましいです。

スマホが無い時代は、サイトに用意するアイコンというと、favicon.icoでしたが、今ではそれぞれの端末用に以下のようなアイコンが必要になります。

 

CakePHPでデータを一括登録する

CakePHPでちょっとハマったので、メモ

 

CakePHPのモデルを使うと、SQL文を書かなくてもレコードの登録や更新ができます。

例えば、citiesというテーブルがあるとします。


CREATE TABLE `cities` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `post_code` char(7) NOT NULL,
  `name` tinytext NOT NULL,
  PRIMARY KEY(`id`),
  UNIQUE KEY `post_code` (`post_code`)
);

このテーブルにレコードを登録する場合は、Cityというモデルクラスを用意して、

※テーブル名が英語の複数形で、モデルクラス名が単数形なのは、CakePHPの既定の命名規則で、この規約に従って命名すると、いろいろ記述を省略できて便利なんですが、この規約に従わないように記述することもできます。

MySqlの自動採番の値をリセットする

MySQLでAUTO_INCREMENTのフィールドは、レコードを追加するたびに自動的に値が増えていきますが、この値は全てのレコードを削除しても、1には戻りません。また1から番号を振るようにしたい場合は、


ALTER TABLE テーブル名 AUTO_INCREMENT = 1;

とSQL文を発行してリセットします。

ちなみに、レコードが残っている状態でリセットした場合は、SQL文の発行自体は成功しますが、リセットはされませんでした。

えばろぐ v2.9をリリースしました

えばろぐのv2.9をリリースしました。

Evernote SDKの最新版(1.1.0)を利用したため、本バージョンより、iOS5.0以降の対応とさせて頂きました。

 

本バージョンでは、ノートに任意の位置情報を設定できるようにしました。今までは、「位置情報の送信」をオンにした場合に、その時点の位置を取得して自動的に送信していたのですが、今いる位置だけでなく、任意の位置を設定して送信できるようになりました。

 

あまり使われる機会はないかもしれませんが、あるユーザーさんから、子供が学校で描いてきた絵を写真に撮ってEvernoteに残しておきたいけど、その時に学校の位置情報を付加して送りたいとリクエストがあり、実装した次第です。

公式アプリでも位置の設定はできるんですが、今回はテンプレートにも位置の初期値を設定できるようにしたので、このユーザーさんのように場所がある程度固定されている場合は、便利かも知れません。

 

PHPで可変引数を使う

phpで引数を受け取る関数を定義する時、普通は、


function add($a, $b) {
    return $a + $b;
}

といった感じで定義しますが、実は次のようにも書けます。


function add() {
    $args = func_get_args();
    return $args[0] + $args[1];
}

func_get_args()で、関数に渡された引数が配列で返されます。

この書き方だと、引数の数も限定されません。


function add() {
    $args = func_get_args();
    $sum = 0;
    foreach ($args as $v) {
        $sum += $v;
    }
    return $sum;
}

echo add(10, 20, 30, 40, 50);	// 150が出力される。

関数定義で引数を宣言しても構いません。