『プログラミングの魔導書 〜Programmers' Grimoire〜』がすごいのです

すでに多くの方がご存知のことと思いますが、株式会社ロングゲートからまもなく『プログラミングの魔導書 〜Programmers' Grimoire〜』が発刊されます。発売前レビューをするということで、id:faith_and_brave さんより PDF を頂戴していたのですが、まった…

LLの虎 準決勝: 殺伐Python - 「タイガー&ドラゴン」

資料とパッチを公開します。 Lltiger20100731View more presentations from Moriyoshi Koizumi.Puby の方の解説とスクリーンキャストは 「Python の文法だけを Ruby っぽくしてみたらどうなるか実験した」にあります。Rhython の方のパッチは Gist:502964 で…

LLTigerで発表しました -Language Update編-

資料あげときます。Xlib.php は http://github.com/moriyoshi/php-Xlib/ よりとってきてください。 "/System/Library/Fonts/ヒラギノ明朝 ProN W6.otf", 'courier' => "/Library/Fonts/Courier New Bold.ttf", ); $texts = array( array("はい"), array("始…

pthread_once() の glibc における実装

「ストアドを使ってWebスクレイピングしよう!」で作ったUDFでは、本来ステートレスに作らないといけないUDFを強引にステートフルに扱うために、MySQLが1コネクション1スレッドモデルであることをいいことにTLSを使ったのであるが、さて、TLSを使うためには…

ストアドを使って、Webスクレイピングをしよう!

こんにちは、SQLを愛してやまないmoriyoshiです。ストアドプロシージャは、一連のSQL文をサブルーチンのようにDBサーバに記録しておき、後からそれを呼び出すことができるようにする仕組みです。近代的なRDBMSには標準的に備わっている機能といえます。制御…

Python Hack-a-thon #4 にて話しました

php

追記: 4回目でした。タイトルを修正。thanks to id:ymotongpoo . 追記2: id:ymotongpoo が当日の様子を録画してくれていました! 説明を端折りすぎて、何言ってるか分からない人も多かったのではないかと思うので、どうせネタなんだけど改めて書く。端的に言…

動的な配列サイズの増やし方 - PHPの場合

php

もう誰か触れてそうなもんだけど。 PHP : 2 倍?(これは PHP から使う配列の実装とは別物かな…?) // Zend/zend_dynamic_array.c : 43行目〜 if (da->current == da->allocated) { da->allocated *= 2; http://www.kmonos.net/wlog/111.html?_2334100705 P…

PHPのはなし ― by moriyoshi

PHPのコミッタ申請したのは2002年の9月くらいだし、PHP は何度も fix(修正)しているから「関係ない第三者が」「勝手に」とか言われるのは正直腹が立つが。(Pythonとかあらゆるメジャー系スクリプト言語にバグレポートしてるのよ、一応) – 【お前ら貢献し…

Mac OS X で chroot 環境を作るときのメモ

配下に chroot 環境を作成するディレクトリを作成する (ここでは仮にそのディレクトリへの絶対パスを $CHROOT_ENV_ROOT とする) $CHROOT_ENV_ROOT 配下に以下のディレクトリを作る bin usr/bin usr/lib 以下の必須ライブラリを $CHROOT_ENV_ROOT 配下にコピ…

画像処理を JavaScript で行ってなんかのサービスを作る実験

最近 JS + JSONP だけを使って何かつくるのがマイブームなのですが、今回は 2 つの Twitter アカウントのプロフィール画像の類似度を調べるというものを作ってみました。似たもの診断「Canvas のセキュリティモデルでちょっとはまった件 (2)」で使った手法を…

「Boost.Python で C++ から Python の関数オブジェクトをコールする」より簡便な方法

http://d.hatena.ne.jp/ousttrue/20100204/1265291359たまたま目にしたので。 生の PyObject* を触らなくとも、 #include <boost/python.hpp> void call_python_func(boost::python::object func) { func(123); } BOOST_PYTHON_MODULE(calling_python_func) { boost::python::d</boost/python.hpp>…

Canvas のセキュリティモデルでちょっとはまった件 (2)

画像を data URI にして、JSONP で返すプロキシを appengine 上に載せてなんとかしのいでみた。 <html> <head> <title>DCT</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function() { $.ajax({ url:"http://to-data-uri.appsp…</head></html>

Canvas のセキュリティモデルでちょっとはまった件

HTML5 の canvas の 2D context には getImageData() というメソッドがあって、これを使うと canvas 上のピクセルデータを取れるようになっている。ところが、他ドメインの画像を引数に drawImage() を使って描画を一度でも行なってしまうと、データを取るこ…

fontconfig で、埋め込みビットマップフォントを持つスケーラブルなフォント使用時にビットマップフォントを無効にするには

適用前 (unapplied): 適用後 (applied): Linux などのデスクトップ環境で、埋め込みビットマップフォントを持つスケーラブルなフォント使用時にビットマップフォントを無効にするには、すべてのフォントについて、embeddedbitmap プロパティの値が false に…

PythonにC++のconstみたいな、Javaのfinalみたいな修飾子を追加する…

パッチを書きました。 Python 2.6.5 (r265:79063, 魔改造, May 2 2010, 17:41:13) [GCC 4.0.1 (Apple Inc. build 5465)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> def a(): ... readonly a = b = 3 ... a = 3…

高度にテンプレート化されたC++のコードがどれだけ最適化されるかを確かめてみる。

c++

あるベクトルと行列の積を計算するような関数 product() を作る。引数に、ベクトルや行列を表す様々なものを受け取れるよう、ジェネリックに作ることにする。そのような場合に、コードが実際どのように最適化されるのかを見てみることにした。例として、ある…

よくあるこういうのにハマった。

c

ついやってしまうので自戒を込めて。(C99) #include <stdio.h> struct vector { double elts[3]; }; #define create_vector_1(a, b, c) (struct vector){ a, b, c } static inline struct vector create_vector_2(double a, double b, double c) { return (struct vec</stdio.h>…

mod_jsonp なるものを書きました。

mod_jsonp は、Apache のフィルタモジュールです。適当に手ででっち上げた JSON のコンテントを手軽に JSONP 化できるとおもしろいなーと思って、適当に作りました。 Content-Type が「application/json」 callback=... というクエリ文字列が Request URI に…

Visual C++ 2008 Express Edition + distutils で x64 ターゲットを扱うには

Windows SDK をインストールし、x64 コンパイラ、ヘッダ、ライブラリをインストールしただけではだめで、次の操作が必要だった。C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin にある以下のファイルを以下の場所に移動 (+リネーム) する。 vcv…

興味のある言語にPHPと書いておいたら面接で爆笑された

php

Inspired by http://anond.hatelabo.jp/20100125020240 Perlエンジニアを募集してる会社の採用面接を受けた時の話。 転職エージェントに作れと言われて作ったシートに、「興味のある技術/言語」という欄があったんです。 PSGI/Plackとか色々書いたけど、プロ…

Boost.Intrusive のコンテナを hook なしで使う

Boost.Intrusive を使いたい場面は結構あるものの、なんだ hook とか書かなくちゃいけないのか、既存のデータ構造には適用できないのか、と諦めていた。ところが、よくよくソースを読んでみると ValueTraits という trait クラスを指定することで完全にノー…

Boost.Graph の graphviz リーダだけを使ってみる

もう単純に boost::adjacent_list とかその辺に興味がない場合どうすればいいかって話です。適当な MutableGraph コンセプトを実装するクラスを用意してやればまあ一応動くみたいです。 #include <map> #include <string> #include <iostream> #include <boost/property_map/property_map.hpp> #include <boost/property_map/dynamic_property_map.hpp> #include </boost/property_map/dynamic_property_map.hpp></boost/property_map/property_map.hpp></iostream></string></map>

Boost.PHP で SPL のイテレータを実装する

残念ながら所用で参加できなかった モダンPHP勉強会。SPL の発表を Ust 経由で聞いて楽しくなってきたので、Boost.PHP でインターフェイスを実装できるようにしてみた。追記: Boost.PHP の導入については、id:Kiske さんが素敵なチュートリアルを書いている…

Boost.CoroutineとBoost.OptionalとBoost.Pythonを使って、C++クラスの内部イテレータをPythonの外部イテレータとして見せる

追記: うっかり戻り値ポリシーのところで boost::python::return_internal_reference<> を使ってしまい、メモリリークを引き起こしていたので修正しました。Stackless Python であれば continuation が使えるので、Python 側で C++ をまたぐ外部イテレータと…

Boost.Python の機能をざっと紹介してみる

Boost の一部ながらも「実用的」すぎるため、とかくテンプレートメタプログラミングを愛好する諸兄から黙殺されてきた不幸のライブラリ、Boost.Python。Boost.勉強会でこいつの魅力を伝えようと思ったのだけど、時間の都合で無理だったので、簡単に紹介して…

アメーバなうクライアントを Python で書いてみる

タイムライン取得とかつくらんとなー。つけた。http://gist.github.com/253169 # encoding: utf-8 import urllib2 import cookielib import re import xml.dom as dom import xml.dom.minidom as minidom from BeautifulSoup import BeautifulSoup, Tag, Com…

display_errorsが謎の副作用を持っている箇所について

昨日 id:narusase さんよりお便りをいただきました。 はじめまして narusaseです。↓このあたりに軽くまとめてありますが・・・ http://d.hatena.ne.jp/narusase/20091203 http://d.hatena.ne.jp/narusase/20091204htmlspecialcharsのdisplay_errorsの解釈が…

Shibuya.pm テクニカルトーク #12 で発表してきました

果たしてPHPやPythonの人が行っていいのかどうか、しかも発表はGoの話でPerl関係ないしって感じで、微妙なアウェイ感でした。というか最近どこで喋ってもアウェイ感があるわけですが。GoでKVSを書けるのかView more documents from ... ....※実際に作ってみ…

PL_keyword_plugin で、Perl の lexer と re2c を組み合わせる

さいきん PL_keyword_plugin というのをよく耳にするので、ためしにつかってみました。p5-php-embedたとえば use PHP::Embed; $a = ; print $a, "\n"; こんなふうに PHP をインラインで Perl にまぜたりできる。じつは、内部的には PHP を pipe でよびだす P…

Go の X11 ライブラリを試してみる

default ブランチの方の pkg/exp 以下にすでに含まれている、パッケージ draw/x11 を試してみた。このパッケージは Xlib を介さず、直接 X プロトコルを喋って X サーバと通信して画面描画を行うようになっている。まったくよく実装するよほんとに。次のプロ…