Python Hack-a-thon で発表してきました!!

今回は資料の作成が後手に回ってしまい、運営の方々や発表者の皆様には大変迷惑をおかけしました。さて、今回は ctypes 拡張モジュールに関する内容を発表させていただきました。ctypes拡張モジュールView more presentations from Moriyoshi Koizumi. php-i…

http://d.hatena.ne.jp/moriyoshi/20101113/1289663233

Linux上で動くSkype用のbotを作る方法

はじめに 以前、知人のやっているBeProudという会社を手伝ったのですが、BeProudでは、エンジニアの主要なコミュニケーション手段としてSkypeが使われていました。当時、趣味でたまたまSkypeのAPIについて調べていたので、悪戯っ気を出して、開発環境に即席…

php_threading

なんか完全に冗談のつもりで作った threading 拡張モジュールを、Alec さんという方がつい本気にして Windows にポートしたそうです (しかもネイティブスレッド使って)。http://news.php.net/php.internals/49486参照カウントをアトミックに増減させるとかそ…

sotarokを勝手に祝う会

sotarokを勝手に祝う会に行ってまいりました!僭越ながらこのたびはLTをさせていただいたので、その内容の紹介をさせていただきたく。(日立風)皆様ご存知のことと思いますが、OSSコミュニティーにおいて、開発者が結婚する際には、新郎と新婦にオリジナル○○○…

『プログラミングの魔導書 〜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.勉強会でこいつの魅力を伝えようと思ったのだけど、時間の都合で無理だったので、簡単に紹介して…