サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
TGS2024
hatotech.org
以前から表立っての活動やアウトプットがめっきりなくなってしまっていましたが、このたび記事を書くべき報告がありまして帰ってきました。 同社は iPhone/iPad アプリケーションの開発を主力事業としてやっておりますが、私は主にサーバサイドのシステム構築、実装に携わることになります。これまで行ってきたWebアプリ開発の経験を活かしつつ、これからも日々邁進していくことで成長し、それが会社自身の成長に繋がればと想う次第です。
音楽や動画などのデータを保存しているストレージ用のマシンとHDDがヘタれたので、ひとまず新しいHDDを買ってきたんですよ。この手のPCパーツを買うのは2年ぶりほどですけど、相変わらず暫らく遠ざかっているだけで性能アップと価格ダウンの進展が大きくて驚くばかりですよ。HITACHI の省電力仕様のHDD 500GB が 9000円でした。 で、タイトルにあるように iTunes ライブラリ(音楽データ、アートワーク、楽曲再生リスト)を新しい HDD に移しつつ、既存の再生環境でも正しく再生されるようにしないといけないなあと思ったんですね。気をつけないと「データが見つかりません」とか言われてデッドリンクが大量発生しちゃうし。 そこで、ふと気づいたんですよ。なんで今までこの方法が思いつかなかったんだろうと。google で調べても同じことやってるケースが一杯ヒットしているくらいだし。 iTune
Runemaster は、Web プログラム向けに提供される DOM アクセスベースな PHP5 HTML テンプレートエンジンです。 テンプレート <html> <head></head> <body> <h1 key="title">Hello, World!</h1> </body> </html> PHP require_once 'Rune/Master.php'; $master = new Rune_Master('./templatesDirectory'); $master->assign(array('title' => 'Hi, Runemaster!')); $master->cast('Hello'); 結果 <html> <head></head> <body> <h1 key="title">Hi, Runemaster!</h1> </body> </htm
男なら一度はテンプレートエンジンの作成に挑戦してみるよね! ということで PHP Simple HTML DOM Parser を使って、DOMパーサ利用ならではのテンプレートエンジンを作ってみました。 ひとまずはテンプレート変数の利用だけ。クラス名とかは考えるのが面倒だったのでひとまず Template で。 PHP <?php require_once 'Template.php'; $variables = new stdClass(); $variables->foo = 'AAA'; $variables->bar = array(1, 2); $variables->baz->quux = 'BBB'; $template = new Template('./templates', './caches'); $template->assign($variables); $te
require_once 'html_dom_parser.php'; $dom = file_get_dom('http://www.google.co.jp/search?q=%E3%83%94%E3%82%AB%E3%83%81%E3%83%A5%E3%82%A6&lr=lang_ja&ie=utf-8&oe=utf-8'); foreach ($dom->find('a') as $node) { $node->innertext = str_replace('ピカチュウ', 'オプーナ', $node->innertext); $node->href = 'http://www.opoona.com/index.htm'; } foreach ($dom->find('b') as $node) { $node->innertext = str_replace('ピカチュ
Piece_ORM を使えば、だれでも簡単にデータベースを使ったPHPプログラムを書くことができます。(任天堂のCM風に。) 1. フォルダの作成 Piece_ORM を動作させるには、プログラムのファイルとは別に3つのフォルダを使います。 プログラムファイルを作成するフォルダ内に、次の3つのフォルダを作成します。 ・config ・cache ・mappers 2. データベース情報を準備する 次に Piece_ORM から接続するデータベースサーバの情報を設定します。 仮にデータベースの情報が データベース: PostgreSQL ホスト名: localhost database : example username : example_user password : example_password 以上のようなものなら、先ほど作ったフォルダのうちの1つ、config
うちの Blog で利用している Movable Type は SQLite でデータ保存を行っていたのですが、どうもその SQLite データファイルが、利用しているホスティングであるさくらサーバの容量に対して到底無視できない割合(1/4)を利用しているということが判明。事実、容量の空きが非常に苦しいものとなってきていました。 その一方、さくらでは別途 MySQL も用意されており、ユーザは www 用サーバとは別に準備されたいくつかの MySQL サーバのうちの1つを選択し利用できるというサービス体系になっています。 そんな利用状況なさくらサービス、ひょっとすると使用可能なホスティングデータ量ってば、利用可能なサーバ容量の範囲とは別でないかという甘い考えが思いついたことはさておき、そもそも SQLite よりも MySQL サーバを利用するほうが保持するデータ容量は少なくなるであろう
普段使っているテキストエディタは相変わらず Meadow (Meadow3) なんですけど、実は密かに日本語の取り扱いが完全ではない状態で使い続けていました。 日本語の取り扱いに問題がないとは以下のようなもの。 (a) 通常の日本語文字群に加えて、NEC 特殊文字や NEC 選定 IBM 拡張文字といった拡張文字群が表示、編集できる。 (b) Shift_JIS, EUC-JP, ISO-2022-JP, UTF-8 などの日本語を取り扱う一通りの文字コードをすべてカバーし、表示、編集できる。また相互変換できる。編集後他のエディタで開いたときに弊害が出ない。 普通は当たり前の機能のような気もするんですけどこれがうまくいっていなくって、UTF-8 では拡張文字が正しく表示できないとか文字コードを変換して保存した際にマッピングが変になったりとか、これを Meadow2 に移行して以後3年以上は
例えば PEAR の場合だと、Linux のパッケージによる導入を行った場合などは /usr/share/pear, Windows 環境などでは PHP 実行環境直下の pear ディレクトリといった具合にグローバルなスペースにライブラリが格納されます。php.ini による include_path の設定もこのグローバルなスペースを指定しているので、皆さんが使用、もしくは開発している Web アプリケーションにおいても、この一箇所にまとめられているライブラリを利用しているかと思います。 これらライブラリを更新する場合、この一箇所を変更するだけで全ての Web アプリケーションが Ver.UP されることになるため効率がよいその一方で、全てに影響するとあってそうあっさりと更新ができない場合があったり、権限の問題で簡単に書き換えることができない(そもそも権限がない)、また Web アプリ
第3弾の今回で最後になります。今回は、ステートフルWebアプリケーションで戻るボタンを利用するための方法、および戻るボタンの利用是非について紹介していきます。 (7) ステートフルWebアプリケーションで戻るボタンを機能させる 前述したとおり、ステートフルなWebアプリケーションではブラウザ機能の戻るボタンによる再描画に対しての振る舞いを簡単に抑制することが出来ます。通常は状態の遷移を行うための指示(以下イベント)を規定していく形でフローを構築するため、結果的に戻るボタンは機能しなくなります。 この戻るボタンを機能させるにはどうすればよいか。PCブラウザの場合、戻るボタンを押すと1つ前のサーバリクエストが発生します。このことより、通常の遷移と同じように戻るボタンを押すことで発生する遷移イベントを予め想定して設定しておけば良いのです。 図7. 3画面間を遷移するサービス 図7は、再び3画面を
以前 Piece Framework で作る EZWeb 向けサイトの画面遷移のお話をあげましたがその結果「極めて一部な人達にのみ好評」だったため、その補足および、より詳細な情報・アプローチを含めたお話です。久々に技術的なお話をあげたと思えばこういう極めてニッチな事柄であるのが hatotech::kumatch です。 なお既にタイトルに 1 とつけているだけあって、少しだけ連続したエントリになります。 (1) 挙動の異なる「戻る」ボタン 現在日本国内では複数のキャリアがそれぞれの携帯端末仕様を展開し、それらに準ずる端末が発売されています。 ご存知のとおり各携帯端末にはWebサイトを閲覧する機能が備わっており、各キャリア向けの仕様に基づくサイトを閲覧できる専用のブラウザが組み込まれています。 携帯端末ブラウザはPCで利用するようなブラウザと同じようにページコンテンツを表示したり「ブッ
Piece Framework を利用してフローを制御した携帯端末向けアプリケーションを組む際、以下のような問題提起がありました。 EZweb端末の強制的なブラウザキャッシュに適切に対処する 要はフローを制御したアプリケーションに対し「戻る」ボタンによる遷移が行われると、ユーザが閲覧しているページと実際に留まっているフローの状態との不一致が発生することになり、リクエストによる正しい再読み込みを行わない限り同期しないことになります。 で、WML を利用したボタンの制御について、そこまで厳密に制御したことがなかったので良く分からなかったのですが、実際のところ思ったより簡単でした。 以下サンプルを。 ソースは本体同梱の Registration フローより。プログラム部分や設定ファイルはそのまま使用し、テンプレートのみを変更して実験しました。とはいっても、EZWeb端末向けに若干の変更を行ったこ
まあ、ジワジワと Eclipse の練習も始めとるんです。 Emacs キーバインドのような設定内容を準備していただいているわけで、偉大なる Eclipse の先人者の方々には感謝しつつも、やっぱり違うのですよ。 変更するには、まずは以下を参照のこと。 Emacs風キーバインド - EclipseWiki ちなみにデフォルト内容のキーバインド設定と共存するような形になるので、明らかに重複しているような設定(たとえばコピーなんかは、M-w と C-c の両方がエントリされる)などは削除していくとよいかも。 上記にも以下を実施。まだこれでも全てじゃない予感。数が多くてチェックが大変。 ・C-j も Enter に C-M と同様、デフォルトがインクリメンタルサーチになってしまっているので、これを消去するとよい。 ・C-/ を undo に デフォルトではソースコメントの In/Out トグ
ファイナルファンタジー5 がまた急にやりたくなってきた。 数多くのFFシリーズの、その(すべてとは言わないけれど)どれもが素晴らしい出来で、内容、展開、曲どれもが興奮や涙腺を刺激するものが多数ある。しかし、「ゲームを遊ぶ」という面から見た場合、FF5 は他のシリーズとは比べ物にならないほどとんでもないレベルの完成度なのである。 FF5 のプレイの仕方には2種類ある。通常プレイと、やり込みプレイだ。昔々、ファミ通やり込みプレイに「FF5 全員 L6 クリア」が投稿されたとき「根性だな」と思い、「FF5 レベル 4-2-1-1 クリア」が投稿されたとき「有り得ね〜」と思ったが、以前から当ページを見ている人の一部の方は知っているとおり、私は FF5 を「レベル 4-2-1-1 + 7時間12分クリア」というプレイ記録を公開していたことがある。ポイントは「いかに効率よい手順で先に進んでいけるか」
PHP4 と PHP5 で __get(), __set(), __call() を共存する方法 PHP5 では クラスの __get()、__set() および __call() をネイティブにサポートしています。 一方 PHP4 でも 4.3 以降 overload() を実行することで、クラスのオーバーロードを行うことが可能で、__get()、__set() および __call() を使用することができます。 しかしそれぞれのメソッドのインターフェース仕様が異なっているため、これらを普通に使用した対象クラスは PHP4 用もしくは PHP5 用という限定した存在になってしまいます。 しかし以下のようにすることで、PHP4, PHP5 の共存が可能になります。 例として Foo クラスにて __call() を実装してみます。 Foo.php <?php class Foo {
玄箱で iTunes Music Box (DAAP サーバ) を構築するための情報を求めて来られる方が結構おられます。なんか Google でえらい上位に入ってるし。その割にまともな情報が書かれていないのは非常に忍びないので、分かっている範囲の情報を一応書こうかなと思います。 ちなみに構築方法は他サイトの方で既にキチンと記載されていますので、ここでは記載せずポインタにて失礼したいと思います。どっちかというと問題をば。あげるだけ。解決してません。やっぱり忍びない。 ● Linux における iTunes 音楽共有の実現 iTunes の音楽ファイル共有は Rendezvous という Zero Configuration Networking (Zeroconf) の実装 + DAAP (Digital Audio Access Protocol)という独自ファイル共有規格の組合せで実現さ
DHTML ほとんど書けないよ〜という貴方も少し背伸びをすればみんな憧れ Ajax!という胡散臭い形でなんとかしてみようという試みです。 コードずらずらで長ったらしいのでご注意を。 まずは Ajax 抜きに足し算プログラムを用意。内容としてはなんてことはない、二つの数字を入力してそれを足すだけのプログラム。 ● SumDefault_Form module <?php class SumDefault_Form { function execute() { return 'success'; } } ?> maple.ini [View] success = SumDefault/form.tpl template <html> <head></head> <body> <form method="POST" action="index.php"> <input type="hidden"
先日の忘年会にて。 くまっち「ネットワークメディアプレイヤーってあるやん。TV に接続して、Network 越に PC で扱うような動画ファイルとか音楽ファイルとかを PC 側で公開することで再生できるってやつ。あれってどんなもんなんかなあ?」 御大「持ってないなあ。でも面白そうやね。」 くまっち「ネットワークメディアプレイヤーってあるやん(略」 ぴよ「くまっちが人柱にならないと。」 れろ「是非よろしく!」 くまっち「ネットワークメd(ry」 尊師「使ってみて私に報告しなさい。」 おのれらあぁぁ!!!11! ということで買ってきた。IODATA の AVeL LinkPlayer AVLP2/DVDLJ というやつ。 さて、冒頭で書いたとおり、ネットワークメディアプレイヤーとは、TV に接続するプレイヤーとして動作し、ネットワーク越しに PC 内 AV ファイルを再生できるという
一部の人にだけ大好評な PHP 版 String_Random が約一年ぶりに Ver.UP! 前回は 0.0.2 だったんですが、あまりにも鈍足過ぎるので繰り上げました。マイナーバージョンがこっそりついてるのは ITEMAN の陰謀により 0.3.0 で行った変更が無用のものになったためです :p 今回の目玉はスタティック呼び出しの実装!すげー超今更。 ということで一回だけの使用とかいうシチュエーションなら、わざわざ new しなくても、 String_Random::getRandRegex('[a-zA-Z0-9]{5,8}'); でいいです。 同セクション内で繰り返し生成するのであれば今までどおりの使用方法のが高速です。 <?php require_once('String/Random.php'); $st = new String_Random(); // randre
http://coderepos.org/share/browser/events/phpframework/piece_framework/trunk 機能をすべて実装したものの、まだまだチューニングや見えざる敵(bug)との戦いが控えています。 俺たちの戦いはこれからだ! r15761 号をもってコミットメントは終了です。 ご愛読ありがとうございました。 できました。 Runemaster (http://hatotech.org/runemaster/) これまで「PHP DOMパーサを使ってテンプレートエンジンを作ってみる」としてエントリをあげてきたライブラリが、このたびめでたく(まだベータ的なものですが)初めてのリリースと相成りました。 ライブラリが今の形に落ち着いてからドキュメントをカリカリと書いてたんですがこれが地味に時間がかかってしまっていたので、思い切って 2/3
今月の UNIX USER にて、Linux iTunes server の構築について紹介がありました。 以前に PC Web の MAC OS X コラム LinuxをiTunesサーバに仕立てる を読んでイイナーイイナーと思っていたところに駄目押しの今回記事が飛んできたので、この3連休を利用して1から Server 環境を作ってしまおうというのが今回の企みです。 UNIX USER では Debian での環境と IO/DATA の NAS LANDISKへの構築方法が掲載されてまして、家で常時稼動 Server マシンがない身として低音性などから後者が魅力的。更なる情報収集をしていたところに、玄箱を Debian 化するパッケージを配布しているサイト、そしてそれを利用した情報サイトを発見。こりゃ素晴らしいということで玄箱を買いにでかけるのでありました。 玄箱:15538円 HD
自分で調べなさい。 どうやら Phrame スレッドでは、maple での Web アプリ作成を行う上で、その構造や考え方が重たいし分かりにくいと思われているようなので、いっちょ仕事として始めたプログラム歴一年のこのウンコが、付属サンプルからちょこっとだけ延長した例を元に少し書こうと思う。頼まれてもいないけどな。 サンプルではよくあるパターンとしてフォームの入力、確認、完了という遷移の例がある。じゃあその値をデータベースに格納するのは?単純に完了 action にてデータベースへ格納するようなクエリを発行する動作を execute に書くのもいいけど、maple ではこういう形を許容する。 まず maple module。 function setLogic(&$logic) { $this->logic =& $logic; } function execute() { $logic
このページを最初にブックマークしてみませんか?
『hatotech.org』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く