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

Matlabでポインタ(間接参照)を実現する

私は、このブログではPythonやRubyのことばかり書いていますが、仕事ではMatlabという数値計算ソフトを使っています。 このMatlabというソフトは、ツールとしては非常に便利ですが、ことプログラミング言語として見ると、非常に大きな欠陥があります。 それ…

PythonとRubyの変数のスコープのまとめ

僕が普段使用するPythonとRubyの変数のスコープについてまとめてみました。 Python 1. if文やfor文などの制御構造はスコープを作らない。 次のプログラムでは、if文の内側と外側のスコープは共通なので、if文内でaが上書きされてa=1が出力されます。 a = 0 i…

radikoを録音して後で聞くためのプログラムを作ってみた

radikoを録音して、iPhoneなどで聞くためのプログラムを書いてみました。 といっても、rtmpdumpで録音、ffmpegでエンコードし、gmailで送信するだけのプログラムです。 僕はこれを使って、朝のラジオ番組を仕事終わりの電車の中で聞いています。ただし、プロ…

GAEでDocutilsを使う方法

GAEで動くアプリケーションでDocutilsを使おうとしたところ、何故かエラーが発生してしまいました。エラーメッセージを読むと、GAEでは使用不可能なAPIを、Docutilsが内部で使用しているため、このようなエラーが発生してしまうということが分かりました。こ…

DjangoでJavaScriptの国際化を行う方法

前回のエントリ「GAEでポケモンのデータベースサイトを作成しました - saito’s blog」で紹介したサイトでDjangoの国際化機能でJavaScriptの翻訳を行う際に,いくつかハマったことがあったので,ここにまとめておこうと思います.Djangoのリファレンスによる…

GAEでポケモンのデータベースサイトを作成しました

ここ最近、Google App EngineとDjangoを使って、新作ポケモンのデータベースサイトを作っていました。デザインは全然ですが、一応それなりの機能が揃ってきたので、このブログで紹介したいと思います。 Top Page | Datebase & Calculator for Pokémon Black …

VLCのエクステンションで地デジをリアルタイム視聴する

以前のエントリでpt1をGUIで操作するためのプログラムを紹介しました。 スナップショットはこんな感じです。 このプログラムは単に内部でrecpt1を実行しているだけなので、実際に地デジを視聴するにはvlcなどのメディアプレイヤーを別に起動しなくてはいけま…

Emacs LispとRubyとmozreplを使ってFirefoxを操作する

今回は、Emacs LispとRubyとmozreplを使ってEmacsからFirefoxを操作する方法を紹介したいと思います。 mozreplとは mozreplとはFirefoxのアドオンの一つで、Firefoxをtelnetサーバーにしてしまうというものです。このアドオンを導入することで、ターミナルや…

Docutilsのインラインマークアップを自作する

以前、Docutilsのディレクティブを自作する - saito’s blogでreStructuredTextのディレクティブを自作する方法を紹介しました。サンプルプログラムでは、はてな記法のリンク作成支援に似た機能をreStructuredTextに追加しました。しかし、ディレクティブはイ…

MacでLinuxサーバーと画面共有を行う

Macでvncを使ってLinuxと画面共有を行う方法について書きます。動作環境はvncクライアント側がMac OS X Snow Leopard、vncサーバー側がubuntu 10.04です。Linux側の設定はこちらのサイトの内容をそのまま使用したので省略します。vnc4serverはデフォルトでポ…

Docutilsのディレクティブを自作する

現在、Djangoの勉強を兼ねて簡単なCMSを作成しています。CMSに必要な機能の1つに、Wiki記法やはてな記法のような軽量マークアップ言語のサポートがあります。DjangoではデフォルトでTextile、Markdown、reStructuredTextの3種類のマークアップ言語が利用可能…

高階関数としてのデコレータに関する考察

デコレータはPython2.4で追加された構文で、関数やメソッドのラッピングを行ないます。 @deco1 def foo() pass @deco2(args) def bar() pass このプログラムは以下のプログラムと等価です。 def foo() pass foo = deco1(foo) def bar() pass bar = deco2(arg…

コメント投稿後のページの変更

Djangoの日本語ページに載っていなかったので補足。render_comment_formを使ってデフォルトのコメントフォームを表示する場合は、対応するview関数でnextという名前の変数でコメント投稿後のURLを指定します。render_comment_formを使わない、またはcomments…

Inkscapeで作った画像をemfに一発変換してPowerPointで利用する

PowerPointでの図の作成に限界を感じたので作りました。以下のプログラムを拡張子.batでデスクトップに保存して、Inkscapeで作った画像をドラッグアンドドロップすると、EMF形式に変換してくれます。 "C:\Program Files\Inkscape\inkscape.exe" -z -f %1 --e…

Pythonのcontextlibが便利

Python2.5から使用可能なwith文を使用すると、try...except...finally パターンをカプセル化することができます。 (Python2.5の場合、次の一文をファイルの先頭に記述する必要があります。) from __future__ import with_statement このwith文を使うと、例え…

ubuntu-serverによる自宅サーバーの作成3(PT2による地デジ録画サーバーの作成)

過去の記事 ubuntu-serverによる自宅サーバーの作成1(ハードウェア作成・OSインストール) ubuntu-serverによる自宅サーバーの作成2(Sambaサーバーの設定) 今回はPT2を自宅サーバーに導入します。 LinuxでのPT2の導入方法、epgrecのインストール方法は Ce…

ubuntu-serverによる自宅サーバーの作成2(Sambaサーバーの設定)

前回の記事で作成したサーバーをNASとして機能させるために、Sambaの設定を行ないます。 まず、Sambaのパッケージをインストールします。 sudo apt-get install samba次に/etc/samba/smb.confを編集します。 sambaで共有フォルダを追加するための記述のフォ…

ubuntu-serverによる自宅サーバーの作成1(ハードウェア作成・OSインストール)

自宅にNAS兼地デジサーバーが欲しくなったので、自作パソコンによる自宅サーバーの作成に挑戦してみました。サーバーOSの選択にはCentOSかubuntu-serverを考えましたが、最終的にはubuntu-serverを選びました。 ubuntu-serverを選択した理由は、 ubuntu10.04…

PythonでRubyのStruct風の構造体を実現する

Rubyでは,Structクラスを用いることによって,特定のフィールドを持つクラスを簡単に作成することができます。 Foo = Struct.new("Foo", "foo", "bar") f = Foo.new(1, 2) p f.foo # 1 p f.bar # 2 一方、Pythonの場合、namedtupleというライブラリで同様の…

sshのポートフォワードを使ってエリア外からradikoを録音するプログラム

sshのポートフォワード機能を使ってエリア外からradikoを録音するRubyプログラムを作成しました。(何番煎じかわかりませんが) 一応Rubyのsshライブラリの使い方のサンプルにもなってます。 begin require "net/ssh" rescue LoadError require "rubygems" req…

Mac上で仮想化したLinuxのEmacsでcommandキーをメタキーとして使う

Mac上のEmacsでcommandキーをメタキーとして使う方法は、こちらのサイトなどで紹介されていますが、ここではMac上で仮想化したLinuxでcommandキーをメタキーとして使う方法を紹介したいと思います。 commandキーはLinuxからはsuperキーとして認識されるので…

XcodeをEmacsから操作する

こちらのサイトにEmacsからXcodeを操作して、コンパイルと実行を行う方法が紹介されています。 しかし、キーボード操作をエミュレーションする方法であるからか、たまに失敗することがあるようです。 こちらのサイトにXcodeのコンパイルと実行を自動化するス…