寝苦しい夜が続いていますがいかがお過ごしでしょうか。世間から大体1年ぐらい遅れてJavascriptを書きはじめたkomagataです。
前置きはさておき、ぶっちゃけたこと聞いていいでしょうか?
「varって何?」
「付けたときと付けないときどう違うの?」
それでは宜しくお願い申し上げます。あ、わかった、myみたいなもんか。
寝苦しい夜が続いていますがいかがお過ごしでしょうか。世間から大体1年ぐらい遅れてJavascriptを書きはじめたkomagataです。
前置きはさておき、ぶっちゃけたこと聞いていいでしょうか?
「varって何?」
「付けたときと付けないときどう違うの?」
それでは宜しくお願い申し上げます。あ、わかった、myみたいなもんか。
「AwesomeFrameworkってどうなってるの?」って言われたんで最新版(0.9.0)をアップしました。
ちょこちょこいじってはいるんですが、相変わらずぱっと見でわかるぐらいのソースです。
追加機能は以下。
以下サンプル。
アクション(default.php):
<?php
assign('hello', 'Hello World!!!');
forward("view");
?>
テンプレ(view.php):
<html>
<head><title><?=fetch('title')?></title></head>
<body>
<h1><?=fetch('title')?></h1>
<p><?=$hello?></p>
</body>
</html>
コンポーネント(title.php):
Hello World
(コンポーネントはアクションでもなんでもいい)
結果:
<html>
<head><title>Hello World</title></head>
<body>
<h1>Hello World</h1>
<p>Hello World!!!</p>
</body>
</html>
アプリ作るとき(1人か2人を想定)あと面倒なのってDBとValidation。 DBはこの間のヤツがちゃんとできれば簡単になりそう。Validationは…なんも思いつかない。
以下、全ソース。
<?php
//
// AwesomeFramework - extremely simple framework.
//
// Copyright (C) 2005 Masaki Komagata <komagata@p0t.jp>
// All rights reserved.
// This is free software with ABSOLUTELY NO WARRANTY.
//
// You can redistribute it and/or modify it under the terms of
// the PHP License, version 3.0.
//
define('DEFAULT_PAGE', 'default');
define('VERSION', '0.9.0');
define('EXT', '.php');
define('PARAM', 'p');
define('DOCROOT_DIR', dirname(__FILE__) . '/');
define('ROOT_DIR', DOCROOT_DIR);
define('APP_DIR', ROOT_DIR);
define('LIB_DIR', ROOT_DIR);
define('CONF_FILE', ROOT_DIR . 'config.php');
define('INC_FILE', APP_DIR . 'include.php');
define('DOCROOT_DIR_URI', dirname($_SERVER['SCRIPT_NAME']) . '/');
define('ROOT_DIR_URI', DOCROOT_DIR_URI);
$vars = array();
if (file_exists(CONF_FILE)) {
include_once CONF_FILE;
}
if (file_exists(INC_FILE)) {
include_once INC_FILE;
}
session_start();
forward(isset($_REQUEST[PARAM]) ? $_REQUEST[PARAM] : DEFAULT_PAGE);
function forward($page)
{
$C = &$GLOBALS['C'];
$R = &$_REQUEST;
$S = &$_SESSION;
extract($GLOBALS['vars']);
include APP_DIR . '/' . $page . EXT;
}
function fetch($page)
{
ob_start();
forward($page);
$buffer = ob_get_contents();
ob_end_clean();
return $buffer;
}
function redirect($page, $params = array())
{
header('Location: ' . url($page, $params));
exit();
}
function url($page, $params = array())
{
$param = '';
foreach ($params as $name => $value) {
$param .= '&' . $name . '=' . $value;
}
return 'index.php?' . PARAM . '=' . $page . $param;
}
function assign($name, $value)
{
$GLOBALS['vars'][$name] = $value;
}
function assign_by_ref($name, &$value)
{
$GLOBALS['vars'][$name] =& $value;
}
function get($name)
{
if (isset($$name)) {
return $$name;
}
}
?>
今日、とても泥臭いソースを書きましたのでご報告申し上げます。
urlからfaviconのurlを取る。
% cat favicon.php
<?php
require_once 'PHP/Compat/Function/file_get_contents.php';
require_once 'XML/XML_HTMLSax.php';
function getFavicon($url)
{
class FaviconHandler
{
var $favicon;
function openHandler(&$parser, $name, $attrs)
{
if ($name 'link' and $attrs['rel'] ‘shortcut icon’) {
$this->favicon = $attrs[‘href’];
}
}
function closeHandler(&$parser, $data) {}
}
$handler = new FaviconHandler();
$parser =& new XML_HTMLSax();
$parser->set_object($handler);
$parser->set_element_handler(‘openHandler’, ‘closeHandler’);
$doc = file_get_contents($url);
$parser->parse($doc);
$favicon = $handler->favicon;
if (!$favicon) {
if ($url{strlen($url)-1} != ’/’) {
$url .= ’/’;
}
$favicon = $url . ‘favicon.ico’;
}
return $favicon;
}
echo getFavicon(‘http://del.icio.us/komagata’)
?>
% php favicon.php
http://del.icio.us/favicon.ico
ヘッダに書いてない場合は何故か無理矢理URLにfavicon.icoをくっ付けて返す。 誰かJavaScript版ください。さもないとまたおれが泥臭いの書くぞ!faviconの決めつけは良くないということで一応、あるかどうか探すように変更した。
$favicon = $link . 'favicon.ico';
if (!@file_get_contents($favicon)) {
$favicon = false;
}
file_get_contents()はやっぱりイイ!ネット上のファイルの存在確認もわかる!(404だとfalse返ってくるみたい)
はじめてのBillGレビューのこと – The Joel on Software Translation ProjectExcelチームは、我々に必要なのはExcelのためのVisual Basicなんだと言ってBasicチームを説得した。私は自分のお気に入りの機能を4つBasicにどうにか付け加えた。ひとつはVariant型だ。これはどんな型でも保持できる共用データ型で、これがなければswitch文を使わずにスプレッドシートのセルを変数に格納できなかったからだ。
Variant型はExcelチームの提案だったのカ!
MT3.3を入れる前にそういえば前から引っかかってたさくらインターネット上のうざいnviをvimにする作業をしました。 さくらインターネットでSubversionを参考に書くまでもないが、
% wget ftp://ftp.vim.org/pub/vim/unix/vim-7.0.tar.bz2
% tar jxf vim-7.0.tar.bz2
% cd vim70
% ./configure --prefix=$HOME/local
% make
% make install
で当り前ながらつつがなく入った。
あぁ?いい。なんでいままでやんなかったんだろ!
- Joel on Software
- オーム社(2005-12)
- オーム社
- (著)Joel Spolsky
- (翻訳)青木 靖
- 定価:¥ 2,940
- 新品価格:¥ 2,940
- 中古価格:¥ 2,600
- ASIN:4274066304
ここを読んで、さらに教えの通りここを読んで、それからJoel on Softwareをyoshukiさんから借りて読みました。(買っても読み終わったら捨ててしまうからな)
よくある、「これさえ行えばハッピーになれる!」ていう方法論じゃなく、筆者自身のプログラマとしての泥臭い経験談から来る解答が楽しい。GUIプログラム製品をたくさん作ってきた経験に基づくユーザビリティへの考え方はおれの様なチンカスWebプログラマにはとってもためになりました。
ところで、以前から名著・古典を読もうキャンペーン中だったおかげでこの本で引用されてる内容が良くわかって嬉しいです。 以下引用されてる中で読んで良かった名著・古典リスト。
- ピープルウエア 第2版 - ヤル気こそプロジェクト成功の鍵
- 日経BP社(2001-11-26)
- 日経BP社
- (著)トム・デマルコ
- (著)ティモシー・リスター
- (翻訳)松原 友夫
- (翻訳)山浦 恒央
- 定価:¥ 2,310
- 新品価格:¥ 2,310
- 中古価格:¥ 1,100
- ASIN:4822281108
ソフトウェア開発に置ける人間学。知的労働者の生産性に関して引用されてます。
- 人月の神話―狼人間を撃つ銀の弾はない
- ピアソンエデュケーション(2002-11)
- ピアソンエデュケーション
- (著)Jr.,フレデリック・P. ブルックス
- (原著)Frederick Phillips,Jr. Brooks
- (翻訳)滝沢 徹
- (翻訳)富沢 昇
- (翻訳)牧野 祐子
- 定価:¥ 3,045
- 新品価格:¥ 3,045
- 中古価格:¥ 2,995
- ASIN:4894716658
古典中の古典。「遅れているプロジェクトに人を投入するとさらに遅れる。」
- 伽藍とバザール―オープンソース・ソフトLinuxマニフェスト
- 光芒社(1999-09)
- 光芒社
- (著)エリック・スティーブン レイモンド
- (原著)Eric Steven Raymond
- (翻訳)山形 浩生
- 定価:¥ 1,890
- 中古価格:¥ 3,500
- ASIN:4895421686
オープンソース=レイモンドって感じでたびたび名指しされてる。何でもかんでもOSS万歳って姿勢には否定的です。(おれは信者だが)
Microsoft内部の話も結構書き手によって全然違うので楽しい。闘うプログラマーではWindows NT 1.0開発がプロジェクトX並に感動的に描かれてますが、失敗プロジェクトとあっさり…。
言語に関しての話で、シンタックスはどうでもいい。生産性を上げるにはメモリを自動的に開放してくれる言語を選ぶべき。(VB1.0でもやってくれる)ってところは同意。でもそれじゃ最近の言語を選ぶ指標には全然ならん…。メモリ管理以外ではMixin的な機能があるか無いかが結構でかい気がするんだけどどうだろうか。その観点から言うとAggregation系関数が本体に含まれなくなってPHP5は退化? そんなこと言ったら怒られるか。
LinuxWorld – 2006/06/24発売号 – 雑誌のFujisan.co.jp
【特集1】 <付録CD-ROM連動> デスクトップ・リナックスの大本命! Ubuntu 6.06!
Ubuntuは、洗練されたデスクトップ環境を持つ新進気鋭のLinuxだ。 これまでのLinuxに馴染めなかった方は、今年6月に登場した新版(6.06)の Ubuntuをぜひ試してみていただきたい。
LinuxWorldの最新号はUbuntuの特集だって。日本でも一般的になりそうです。 初心者に優しいし、Debian好きもそのまんまな感じで使えるのがいいっすね。普通に普及して欲しい。
とかいっておれも2月頃はこんなこといってた癖に…。
Six Apart – Movable Type News: Movable Type 3.3 正式リリースMovable Type 3.3の正式リリースをお知らせします。
MT3.3日本語版がもう出てたのカー。おれもアップデートしよう。 そもそもTypoとか他の素敵っぽいものに変えるのもいいんだけど、何故か管理画面のかわいっぽさとかにひかれてMTのままにしてしまう。これ何ていうんだ?なにロック?
任天堂、「ニンテンドーDS Lite」に新色登場。ノーブルピンクを7月20日に発売
任天堂株式会社は、「ニンテンドーDS Lite」に新色“ノーブルピンク”を追加する。発売は7月20日で価格は16,800円。カラーリング以外に違いはない。
ノーブルピンクか…淡い色で気取りやがって!もっと濃くてきついピンクの方が良くない?新色にビッチピンクとか加えてみるぐらいの気概を見せろよ。(そんな色あるのか知らんが)
八つ当たりはさておき、DS Lite欲しくなったんですが、売ってません。普通に売ってるものなのかと思ってたのに…。23区近辺で売ってるとこあったら教えてください!