はてなブログ2周年おめでとう!

はてなブログ2周年おめでとう!> id:hatenablogおめでとう!おめでとう!おめでとう!Tシャツください。

Objective-Cのクラス・カテゴリ・クラス拡張の整理

以前こんな記事を書きました。 Objective-Cのプロトコルとデリゲートのまとめ - $ cat /var/log/shin 現時点で、こんな場末のブログで唯一ブクマが多い記事なのですが、その文末で、 次は、カテゴリについて勉強したいと思います。 Objective-Cのプロトコル…

初めてiOS Developer Problemに登録してみた

iOS

正直な感想としては、とにかく面倒、それに尽きますね。 iOS Developer Programへの登録 2013年11月現在でも、ほぼ完璧に以下のサイト通りでした。 日本のApple StoreでiOS Developer Programを購入しActivateするまでの全スクリーンショット | MUSHIKAGO AP…

Vimで現在のバッファのプログラミング言語を変更する方法

Vim

EmacsとTextmate2をふらふらしつつ、最近Vimも始めた今日この頃。Objective-Cも書く必要が出てきたので、練習がてらVimで書いてみるかと思ったら、ヘッダファイルがC/C++と同じなので、ハイライトが微妙なことになってしまいました。Emacsならモードを切り変…

super(self.__class__, self) は危険 (Python 2.x)

Python2.xのsuperのお話です*1。まさかの今の今まで知らなかったので戒めとして記録しておきます。 結論 結論から言えば「2回以上継承されうるクラスでは*2、super関数で親クラスを参照する場合は、super(self.__class__, self)ではなく、ちゃんとsuper(クラ…

WSGI/Rack/PSGIの登場の背景

何番煎じ変わりませんが、WSGI/Rack/PSGIに関して、何でこれらが必要とされるようになったのか、歴史的経緯を踏まえて色々調べたので、記録しておきます。ただし、特に歴史的な話に関しては、ネットで自分が納得できるまで探りはしましたが、正確性を欠くか…

Perl勉強 - use, my, package

試行錯誤のための良くないサンプルコード。 #!/usr/bin/env perl use strict; use warnings; use utf8; my $a = {b => 'c'}; my $n = 0; sub print_a { print Data::Dumper->Dump([$a]), "\n"; } { package Package1; sub print_a { my $a = {%{$a}, d => 'e…

Pythonリスト遊び

Pythonでリストを操作する場合、基本的に、2つの方針があります。 新しいリストを作成する インスタンスメソッドを使う(破壊的) これを意識した上で、スライス、==とisの違い、リスト内包記法、filter, map, reduce, ...などを理解していると捗ります。 >>…

swap色々

ちょっとした小ネタです。Cでswapをするには、マクロやポインタを使えば出来ます。 // int値の交換 #include <stdio.h> void swap(int* a, int* b) { int t = *a; *a = *b; *b = t; } int main(void) { int a = 0, b = 1; printf("%d, %d\n", a, b); swap(&a, &b); pr</stdio.h>…

OpenGLによるCOLLADAなはちゅねの描画 (2)

前回に引き続き、はちゅねの描画に挑戦します。 はちゅね用チューニング 理想的には、1つCOLLADAプレビュー用のプログラムを作れば、全部のCOLLADAに対して適用出来ると思うのですが、とりあえず今回ははちゅね用に色々チューニングを施しました。 テクスチ…

OpenGLによるCOLLADAなはちゅねの描画

前回の記事では、モダンなOpenGLでティーポットを描画するための基礎知識について整理し、ティーポットが描画できたよ、ということまで書きました。実は、前回のティーポットの描画では、ジオメトリ部分だけを読み込んで描画しています。シンプルなモデルで…

モダンなOpenGLでティーポットを描画したい -- COLLADAをOpenGLで描画する際の勘所

「モダンなOpenGLでティーポットを描画したい」という動機から、いろいろ調べた結果を残しておきます。シェーダーやglDrawElements*1は一応使えます、という人向けです。 モダンなOpenGL OpenGL 3.x以降のシャーダーを使うことを前提とした仕様のOpenGLのこ…

習うより慣れろなPerlのOOP入門

入門記事書けるようなレベルではありません*1ので、タイトルは釣りです。諸事情により、Perlのモダンな機能の予備知識0の状態で、突如分けわからないOOPなPerlの開発をちょこっとしたので、その知見をまとめたものです。オブジェクト指向のベーシックな概念…

Perlの対話モード

調べても情報古かったり、よく分からなかったり、うーん。 Perlの対話モード、なんて洒落たものは標準では存在しない pythonとかirbとか涙ちょちょぎれるぐらい便利ですね。特にPythonの「デフォルトは対話なんだ」という姿勢には感服です。ではPerlは?とい…

イマドキの(?)Perlの環境構築

そういえば、環境構築の話をまだ書いていなかったので、メモ残しておきます。 perlbrewとcpanmで環境構築 歴史的な話などはよく分かりませんが、perlbrewとcpanmというのが割りとホットなツールのようです。 perlbrew 複数のPerlを管理できるツールです。Rub…

「初めてのPerl」第6版を購入。

所用にてスーパーPerlプログラマーにならざるを得ない感じなので、初めてのPerlを購入しました。Perlさんマジ無理っす。リャマ本だけではスーパープログラマになることはできないのですね…。モジュールの作り方とかOOPとかは続編のアルパカ本で詳しく解説し…

MacのOpenGLのバージョン及びプロファイル

今日一日を費やしたので記録しておきます。 発端 今日は、PyOpenGLを使って、OpenGL 3.xでGLSL 1.4のモダンなOpenGLの勉強でもするぜー、と意気揚々としていたのですが、PyOpenGLで扱うGLSLのバージョンを1.2からどうやっても変えることが出来ず、ひたすら調…

NumPyでフィルタリングを高速に行う方法

例えば、OpenCVで2値化済みの画像から黒色(つまり値が0)のピクセルの数を数えることを考えます。一番分かりやすいのは単純にfor文で回して数を数える方法です。bin_imgは2値化済みの画像でnumpy.ndarray型の2次元配列とします。 count = 0 for color in bi…

ARシステムの開発(CV・CG・計算幾何学)

最近ARシステムの開発をしています。果たして、修論に繋がるんだか繋がらないんだか、何とも困ったものではあるのですが、趣味としては楽しいですね。ARといえば、イマドキはUnityを使っちゃうようなハイレベルなフレームワークがいくつも出てきているし、オ…

Pythonの関数内関数の生存期間

Pythonは関数内に関数を定義し、そのネストした関数はクロージャ的に外の関数スコープの変数を参照することが出来ます*1。しかし、やったークロージャだーとJavaScriptばりに乱用できるかというと全くそうではない点に注意が必要です。というのもPythonの関…

Jadeで属性をエスケープしない方法

Jadeで取得したHTMLを、underscore#template()で扱おうとした時に、ハマったのでメモを残しておきます。 問題 例えば、 a(href="<%= url %>") <%= name %>というJadeスクリプトがあった時、出力は <a href="&lt;%= url %gt;"><%= name %></a> となります。そのため、Jadeの属性値にundersco…

OpenCVをPythonで利用する on Mac

色々詰まったのでメモを残しておきます。 基本方針 ざっと検索する限り、NumPyというPythonパッケージを入れれると、もれなくOpenCVのPythonバインディングが付いてくるということが分かりました。というわけでNumPyを入れることを目標とします。 Macでの方…

OpenCV 2.4 on Mac OS 10.8 導入メモ

Mac上にOpenCV 2.4の環境を整えたので、そのメモです。 導入時の環境 Mac OS X 10.8.4 (Moutain Lion) OpenCV 2.4.6.1 Homebrew 0.9.4 OpenCVの導入 Homebrewを使います。 $ brew tap homebrew/science $ brew install opencv ... ==> Installing opencv ==>…

なんか絵を描くと抽選で3DL LLくれるらしいので…

今週のお題「2013 日本の夏」 我ながら傑作だな(ドイヒーという意味で)*1 *1:トラックパッドは無理ゲー。指ツリそう。

最近仕様が変わったらしいFacebookページのバグ対策

ここのところ所用にてFacebookページをいじっているのですが、つい最近どうもシステムアップデートがあったようで、基本情報が更新できない問題に出くわしたので、解決策をメモしておきます。 問題1:「情報」の欄が長すぎるため、更新できませんでした。 ま…

Macでのスクリーンショットの取り方

Mac

久しぶりの更新です。気がついたら、ここのところ何も*1Webにアウトプットしていなかったので、とりま身近なネタをまとめてみました。さて、本題ですが、Macでのスクリーンショットの取り方のお話です。一般的な方法としては、以下の3つあると思います。1. …

Pythonでimportのパスを追加するスニペット

例えば、 modules/ hoge/ __init__.py ... bin/ run.py のような配置にした時、run.pyからmodulesディレクトリ内のモジュールを参照するには、importのためのパスを追加するのがよさそうです。importの際にはsys.pathリストにあるパスを元に探索されるので、…

Pythonのwithステートメントのまとめ

Pythonを使う上で、withステートメントは、やはり見逃せない機能の1つであると思います。Python2.5〜3.xまで網羅しているようにしたつもりです。 基本 まず、一番身近なファイル操作の例を載せておきます。 with open("...") as f: print(f.read()) これは…

Cのプログラムでたまに出てくる関数内の無意味なvoid宣言の意味

C言語のソースを読んでいると、稀に以下のような感じのフレーズが出てきます。 void doSomething(int unused) { (void)unused; } この(void)unused;は一体なんじゃい、という話なのですが、一言で言えば「コンパイル時のunused variable系warningを減らすた…

OpenAL+ALUREによる立体音響遊び・・・の準備

立体音響(3D Audio)を試したかったので、OpenALをインストールすることにしました。 環境 Mac OS X Mountain Lion Homebrew 結論 OSXにはOpenALが標準装備されているようなので、OpenAL(OpenAL Soft)を別途入れる必要はありません。 OSX標準のOpenALを利…