2008-01-01から1年間の記事一覧

メタ言語PythonでPHPのラインタイムをモデル化して理解する

メタ言語としてPythonを使い、PHPの変数やらリファレンスやら周辺の、ランタイム実行モデルを表現してみた。あの変な「リファレンス」ってやつの正体はなんなのか、ってね。今の自分の解釈を書き留めておきたいんだけど、いくら自然言語で説明しても、マニュ…

PHP配列トリビア 配列の正体は辞書

PHP

忘れそうなのでメモ。格納順序が不自然で、インデックスは連続している配列があるとする。 Array ( [0] => 0 [1] => 1 [2] => 2 [5] => 5 [4] => 4 [3] => 3 )foreachでは格納順に処理される。 $e){ echo "[" . $i . "]=". $e . " "; } echo "\n"; ?> [0]=0…

PHPコードをページからPOSTしてevalする

PHP

ありがちかもしれないけど、PHPコードをページからPOSTしてevalする対話的プログラムの窓口を書いてみた。CLIが封じられてる環境だと、エディタ→FTP→ブラウザ→ソースを見る→エディタ→FTP→ブラウザ→...がめんどくさいので。あと、管理で楽するために、「テス…

そうか、Kohanaが急激によくなっているんだ

PHP

Kohana2は急激に良くなっている。こっちは 宣伝に偽りありで申し訳ございません -- CodeIgniter自体は急激に変わっていない - なんたらノート 第二期 こんなことなく、個人的な感覚とは関係ないお話。よくあるフレームワークと違わないと思って名前しか知ら…

CodeIgniterにリレーション解決サポートを

PHP

CodeIgniterにリレーション解決をサポートするライブラリを書きました。librariesに入れてload->library()で使います。CodeIgniterにはSQLクェリビルダはあるけど、エンティティの関連性を補助する機能がまるでありません。あるレコードに関連する別のレコー…

PHPオブジェクトのフィールドに名前文字列でアクセス

PHP

Pythonでいう、 o = some_oblect() n = 'new_field' setattr(o, n, 'new value') で、JavaScriptでいう、 o = new Object(); n = 'new_field'; o[n] = 'new value'; をPHPでやりたい。 $n = 'new value'; ?> が正解。これを思いつかず、APIを探して見つから…

Pythonが他の言語に似てないからって、そんな…

はじめてのひき - PythonSucks が気になった。 raw_input("hoge") とかで出力もできる まともな標準入出力は import sys sys.stdout.write("Hello, world!\n") めんどくさいなぁ。 Pythonは標準入出力の存在を前提としない言語だから。PerlやRubyとはちょっ…

jEditをWin32アプリケーションとして

このエントリは2007/3/14の再掲です。 補足 再掲の時点で、launch4j 3.0.1がリリースされています。 再掲の時点でリリースされている FileZilla 3.1 では、エディタが「このファイルは別のプログラムによって削除されました」と言わないように修正されていま…

jEdit日本語メッセージの誤訳を修正

注:こっちに最新があります。jEdit日本語リソース for 4.3pre16 - なんたらノート 第二期http://d.hatena.ne.jp/tanakahisateru/20080826/1219746244 にて、誤訳の報告を頂き、jEdit日本語メッセージの誤訳ファイルを修正しました。 jedit_gui-4.3pre15-ja.…

いろんな言語のコードを比べてみた

すこし前に、コードの字面について書いたので、いろいろな言語で共通して頻出しそうなパターンを例に、等価なコードを書いてみた。課題設定 配列の各要素を関数に渡すループ手続きを書け。 要素は辞書やオブジェクトで、関数は引数の内容を加工するかもしれ…

宣伝に偽りありで申し訳ございません -- CodeIgniter自体は急激に変わっていない

PHP

http://d.hatena.ne.jp/tanakahisateru/20080924/1222190229 を受けて、 http://angelicwing.net/diary/5012.html と思われたみたい。宣伝に偽りありで申し訳ありません。えぇと、そうです、CodeIgniter自体が急激に良くなってるわけじゃないです。彼が主観…

PHP配列のインデックス外アクセス

PHP

構文チェックを厳しくしてると、 PHP Notice: Undefined offset: 3 という警告が出る。でも、 --警告なし --警告なしでなぞの非表示値が表示されてる 配列アクセスと同時に実体コピーが起こるとだめっぽい。配列アクセスと実体コピーが別の文ならいいらし…

私が間違っておりました

PHP

CodeIgniterが急激によくなってきた - なんたらノート 第二期で書いた、 バリデーションがダサいまずライブラリのメソッドの中身に「$_POST」がハードコーディングされているため、任意の変数をバリデートできない。 バリデーションは「何らかの境界で、正体…

CodeIgniterの余計なお世話

PHP

CodeIgniter(CI)は"?"以降のクエリ文字列を綺麗に無視し、$_GETを空っぽにしてくれる。CI曰く「パスベースのルーティングがあれば、クエリ文字列なんて要らない」もしくは「GETリクエストにオプションパラメータなど許してはいけない」だそうな。おいおい、…

PIL以外でTrueType日本語フォントを使う -- リベンジ

http://d.hatena.ne.jp/tanakahisateru/20081008/1223450159 のリベンジPyGameを使えば、sbit(TTFに埋められたビットマップフォント)のあるTrueTypeフォントでは、文字サイズが小さいとき自動的にビットマップフォントが使われる。 import pygame, pygame.fo…

PILでTrueType日本語フォントを使う

PIL(Python Image Libraly)で日本語フォント使おうとすると、ラスタライズ結果がぐちゃぐちゃになることがある。これはハマった。つぶれる条件はどうやら、ビットマップを持つフォントのビットマップが適用される場合のようだ。ビットマップが適用されないぐ…

HTTPチャンク転送をPythonで受ける

HTTP1.1には、「アプリケーションが明示的にちょっとづつデータを送る」ための、チャンク転送符号化という仕様があります。ヘッダの項目について http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.41 転送方式そのものの説明 http://www.w3.or…

jEditプラグインセンター復活

先日からずっと、世界的にjEditプラグインがオンラインインストールできない状態が続いていましたが、 http://community.jedit.org/?q=node/view/4013 現在この問題は解消している模様です。プラグインを手作業で集めてjarsに入れるか、プラグインマネージャ…

MacのRapidSVNで外部プログラム設定

MacでRapidSVNを使うとき、お気に入りの外部プログラムと連携しよう。MacのGUIアプリケーションは、WindowsやLinuxほど実行ファイルの実体が明確じゃないし、非コマンドラインなコーダーが多いという文化的な特徴もあるし、というわけで、例を書いておきます…

前略、PHPとかプログラミングに対して思ってること

PHP

http://webbingstudio.blog10.fc2.com/blog-entry-564.html からはじまり、 http://d.hatena.ne.jp/riaf/20080922/1222056153 http://d.hatena.ne.jp/bobchin/20080923/1222148540 http://d.hatena.ne.jp/iakio/20080923/1222161332 http://d.hatena.ne.jp/s…

全角英数を半角に変換するjEditマクロ

日本人でもjEditを便利に使おう、というわけで、選択範囲の全角英数を半角に変換するjEditマクロを書いてみた。ホームディレクトリ/.jedit/macros に、 ConvertWideCharToASCII.bshというファイルを置き、以下のコードを貼り付ける。 void convertWideCharTo…

CodeIgniterが急激によくなってきた

PHP

CodeIgniterを評価しました。申し訳ないけど、このブログエントリの著者が学生さんだと知りつつ、きつく批判します。 CodeIgniterの嫌な部分 | Oddwit 某巨大掲示板でも、このブログと同じような議論がありました。 これを批判することが、CodeIgniterの良さ…

Papervision3DのAPIヘルプ

FlashPlayer9の高速言語処理系で3Dレンダリングしちゃうという、噂のPapervision3D。アフィン変換じゃ済まない変形ができておいしいかも。というわけで、API全体像をつかむため、バージョン2.0 beta1のAPIヘルプをchm形式に変換しました。CHM converted Pape…

"クリックしてアクティブ化する" 動作を無効にするための Internet Explorer Automatic Component Activation (IE ACA) 更新プログラム が自動更新対象に

# 表題の冗長さは、そもそもの問題のばかばかしさを表現しております。反対の反対の賛成なのだ。で、結局どっちなのさ?wなんと、 Windows XP Service Pack 3 に含まれる修正の一覧 に "クリックしてアクティブ化する" 動作を無効にするための Internet Expl…

FlashDevelop 3 beta9 はFlex SDKがそのまま使えます

http://d.hatena.ne.jp/tanakahisateru/20080830/1220043869で書いたパッチを含んだ、FlashDevelop 3 beta9 がリリースされました。これで、Flex SDKの改変なしにAS3プロジェクトをビルド/実行できるようになります。-Duser.language=en の追加も、日本語リ…

Pythonデコレータが熱い

今回は decorator 3.4.0 : Python Package Index のお話。Pythonのデコレータは便利です。関数の実体定義直後に、任意のフィルタをその関数に施すことができます。 def special(func): def invoker(*args, **kw): return "special " + func(*args, **kw) inv…

Objective-C vs Java とその周辺

ガベゴレ有効を前提に、ありがちなOOPっぽいコードを、Objective-Cで書いてみました。 以下のコードは、GNUstepを使ってコンパイルしています。 http://www.gnustep.org/ あ、GNUstepのチュートリアルのコード残骸がちらほら…。 #include <stdio.h> #include <Foundation/Foundation.h> @protoc</foundation/foundation.h></stdio.h>…

Xinha Here がMozilla Japanにリスティングされる

Xinha Here がMozilla Japanにリスティングされました。 https://addons.mozilla.jp/firefox/extensions/forms_and_clipboard/ って、リストの順番が変わるといけないので、 Xinha Here! | Firefox アドオン | Mozilla Japan の公式アドオン紹介サイト も貼…

日本語環境で素のFlex SDKとFlashDevelopを動かすパッチ

たったいま、日本のFlashプログラマにとって重要なパッチが、FlashDevelopのソースリポジトリにコミットされました。FlashDevelopと素のFlex SDKが日本語環境でうまく協調できるようにしたものです。 これまで何がうまく動かなかったかについて、詳しくはこ…

FlashDevelop 3 beta8 のFDB設定

レビュー http://d.hatena.ne.jp/tanakahisateru/20080807/1218078130 からはや3週間、FlashDevelop 3 beta8がリリースを迎えた模様です。 http://www.flashdevelop.org/community/viewtopic.php?f=11&t=3470リリース版は、Windows VistaのUAC下で綺麗に動い…