2011-08-27に開催されたPyCon JP 2011のセッションで使用したスライドです。 サンプルプログラムのソースコードは http://alpa.homeip.net/files/PyConJP2011-SampleCodes.zip からDL可能です。 スライド内のURLをコピペすると文字コードの関係なのか何故か正しいURLとしてペーストできないので、注意してください。

Pythonで一番有名で普及しているライブラリと言っても過言ではない「Numpy」の覚書きです。かなり多機能な数値計算ライブラリで、内部はC言語で記述されているため超高速に動作します。 ベクトル ベクトルの長さ&正規化 import numpy a = numpy.array([[2,2]]) #ベクトルの長さ length = numpy.linalg.norm(a) #length=>2.8284271247461903 #ベクトルの正規化 a / numpy.linalg.norm(a) #=>array([[ 0.70710678, 0.70710678]]) 内積&外積 import numpy v1 = numpy.array((1,0,0)) v2 = numpy.array((0,1,0)) #内積 numpy.dot(v1,v2) #=> 0 #外積 numpy.cros
複数のスレッドから1つの変数にアクセスする際、システム側のスレッドスケジューリング次第で、予期せぬ書き換えが起こってしまう場合があります。その為、ある1つのスレッドが変数にアクセスしている際は他のスレッドをブロックする排他制御やスレッドの同期を行う必要があります。C++でJavaのsynchronizedメソッド/ブロックと同じような記法でクリティカルセクションを実装する方法の1つにboost::threadライブラリのmutexとconditionクラスがあります。 mutex クラスの使い方 スレッドの排他制御を実現できます。具体的な使い方は、mutexインスタンスをmutex::scoped_lockクラスのコンストラクタの引数に指定し、そのインスタンスを取得することでロックをかけられます。あるスレッドが上の処理を以ってmutexインスタンスにロックをかけた場合、その他のスレッドは再
C言語やC++,Javaにはvolatileという修飾子があります。組み込み系ソフトウェアやマルチスレッドのアプリケーションを書いている方にとっては、なじみ深い存在ですが、そうでない方にはあまり縁がないのかもしれません。しかし、volatileの使い方や存在意義を知らないままコーディングを行うと、思わぬバグを引き起こす場合があります。今回は、そのvolatileキーワードについて簡単に説明したいと思います。 volatileは初期のCであるK&Rには含まれていませんでしたが、ANSI C(C89)以降のC標準規格にはconstと一緒に含まれるようになりました(constとvolatileをあわせてcv修飾子と呼ぶこともあります)。一般的なCなら必ず備えている修飾子です。 volatile修飾子の意味ですが、「プログラミング言語C ANSI規格準拠」によると、 volatileの目的は,黙っ
なんか、プログラマとして必要な本をあげるのが流行っているようなので、自分も書いておこう。きれいなソースコードを書くために読んでおくべき本10冊。 最初はリファクタリング リファクタリング―プログラムの体質改善テクニック (Object Technology Series) 作者: マーチンファウラー,Martin Fowler,児玉公信,平澤章,友野晶夫,梅沢真史出版社/メーカー: ピアソンエデュケーション発売日: 2000/05メディア: 単行本購入: 94人 クリック: 3,091回この商品を含むブログ (312件) を見る 以上。終了。10冊じゃないか(^^; きれいなソースコードを書きたければ、一にも二にもリファクタリング、それしかない。 後は、良いソースコードを読みながら自分でも、実際にプロダクトを作ってみること。OSSとして公開すると、自然と良いコードを書こうというモチベーショ
Elixir の読み方は多分「エリクサー」。RPGゲームのアイテムにありそうな名前だ。 個人的には「エリクシール」と読みたいところだが多分「エリクサー」で良いだろう。 Elixir は最近になって開発が活発化しており、公式サイトも最近立ち上げられたようだ。 http://elixir-lang.org/ つい先週のことだが Github でも公式にサポートされている。 Elixir is officially supported on Github! Including file identification and syntax highlight: github.com/languages/Elix… — Elixir Lang (@elixirlang) March 5, 2012 ここにきて盛り上がってきた感があるので、作者である José Valim が約1年前に書いた Why
こんにちは。 最近いろいろごたついてて、ブログなんか更新してませんが、それなりに充実した生活を送っているのでご心配なくw ところで、今日はいつもどおり Python の話題です。 いま、某 LUG であるプログラムを作っているのですが、その中でマルチスレッドを使えたらなーと思って、ちょっといじってみました。 マルチスレッドが使えると...: 複数の作業を並列して実行できる 一定間隔で何かを実行するような処理を簡単にできて便利。 CPU を有効的に使える などいろいろ利点がありますが、今回は主に 2 番目のものをターゲットにしてみました。 結局、1番目も関わってくるんですけどね。 Python でスレッドを生成するには、threading モジュールを使うのが便利です。 http://www.python.jp/doc/release/lib/module-threading.html こい
Every course has real-world projects designed to develop the skills you need to reach your career goals.
Flask 基礎を勉強中。 環境構築 OS:CentOS 5.4 Python-2.6.6 インストール。 $ pythonbrew install 2.6.6 $ pythonbrew switch 2.6.6 Flask インストール。 $ pip install Flask Hello Flask $ vi main.py from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return 'Hello Flask.' if __name__ == '__main__': app.run() $ python main.py * Running on http://127.0.0.1:5000/ ルーティング&変数ルール from flask import Flask app = Flas
Vim の自動補完にはずいぶん長く AutoComplPop を使っていたのですが、最近は neocomplcache がモダンらしいとのこと。 neocomplcacheとは? VimScriptによって実装された究極の補完環境。 Presentation file - neocomplcache - GitHub 確かに、AutoComplPop の日本語入力との相性の悪さが気になってたんですよね。 というか、究極っていいですよね。究極ですよ究極! ということで、重い腰を上げて乗り換えてみました。 AutoComplPop の各種ファイルを削除してから、vimball で一発インストール。 $ wget -O neocomplcache-5.1.vba http://www.vim.org/scripts/download_script.php?src_id=13456 $ vim n
指定の範囲のプログラムのコードを、 コメントアウトすることのできるスクリプトです。 コメントアウトの形式は、プログラムのコードの種類に応じて、 適切な形式が選択されます。 (Windows, Mac) 概要 EnhCommentify.vim : comment lines in a program http://www.vim.org/script.php?script_id=23 指定の範囲のプログラムソースにコメントを付与したり、 逆に指定の範囲のコメントを取り外すことができるVimプラグインです。 コメントの形式はプログラムの種類ごとに異なっていますが、 このプラグインは編集中のソースのファイルタイプに合わせて、 適切なコメント形式を自動的に選択してくれます。 現在の時点でも、既にかなりの数のファイルタイプに対応しています。 (2003年2月1日)
クリアコードではMozilla製品やRuby関連の開発だけではなく、広くフリーソフトウェアのサポートもしています。もちろん、サポート対象のソフトウェアの多くは私達が開発したものではありません。しかし、それらのソフトウェアに問題があった場合は調査し、必要であれば修正しています。 このようなサポートが提供できるのは、もともと、私達がフリーソフトウェアを利用したり開発したりしているときに日常的に問題の調査・修正をしていたからです。ソフトウェアを利用していると、問題に遭遇することはよくあることです。そのソフトウェアがフリーソフトウェアの場合は、開発者に問題を報告し、可能ならパッチを添えます。このとき、そのソフトウェアの内容を完全に把握していることはほとんどありません。しかし、それでも修正することができます。 それはどうしてでしょうか?今まではどのようにやっているのかを自分達でもうまく説明できなかっ
Emacsで作業していると、バッファ内で別の場所をちょっとだけ見て戻ってきたいことがある。方法は2つある。 goto-chg.el goto-chg.elは変更箇所を辿っていける。便利。 EmacsWiki: goto-chg.el (require 'goto-chg) (global-set-key "\C-xj" 'goto-last-change) (global-set-key "\C-xJ" 'goto-last-change-reverse)Ctrl-x,jで変更箇所に辿れる。Ctrl-x,Jで逆に辿る。 しかし、この方法では当然変更してない箇所には辿れない。 そういう場合は以下の方法を使う。 レジスタを使う Emacsのレジスタ(registers)は、あとで使うためにテキストやポイント位置を保存するための場所。ここではポイント位置保存を紹介する。 C-x r SPC r
Perl › デバッガ Perlのとても便利な道具のひとつにデバッガがあります。デバッガを使うとスクリプトを一行づつたどって変数の中身を見たり、ブレークポイントを設定してその位置で停止したりすることができます。 デバッガは本当に便利なのですがPerlをやっていても意外と知らない人がいます。ひとたびデバッガを覚えてしまうと試験をするときに手放せなくります。Perlを覚えたての時期からどんどん使っていって欲しいツールです。そんなデバッガのコマンドとテクニックをまとめてみました。 デバッグ用のスクリプト デバッグ用の簡単なスクリプトを準備しました。debug.plという名前で保存してください。このスクリプトを使用してデバッガの解説をします。 my $message = 'Hello'; my @nums = (1, 2, 3); my %scores = (math => 80, english
erlang/OTP界隈でreiaというrubyフレーバーの言語が開発されて以来、erlang/OTP上で動作する言語がいくつか開発されている(efene, LFE(Lisp Flavoured Erlang)など)。どれも、erlang/OTPの独特な機能である、並行性、動的アップグレード、対障害性などをもっと、「普通の」言語から利用したいという要求だろう。 elixirはそんな中、reiaのすぐ後に独立して開発され、reiaの後継プロジェクトに指定された歴史を持つ。 当初はreiaと同様にrubyフレーバーの言語とオブジェクトシステムを持っていたが、2011年末の0.4-devから大胆に仕様変更を行い、全く別のものとなった。 特徴 近代的なシンタックス ruby風味なので、Prologチックなerlangに比べて取っ付きやすくなっている。 強力なメタプログラミング機能 homoicon
こんばんは。第二回腐lispの時間です。 今回はループ処理と高階関数について説明します。そして最後にfizzbuzz問題のアレンジ版を作ってみますよ。 ループ 一番単純なループはwhileです。書き方はこちら。 (while 条件式 フォーム1 フォーム2 ) whileを使って、1からlimitまでのリストを作る関数を作ってみます。 fizzbuzzなので1から15までのリストを作ります。 (defun generate-list (limit) (let ((i 1) ret) (while (<= i limit) (setq ret (cons i ret)) (setq i (1+ i))) (reverse ret))) (generate-list 15) ; (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) 高階関数 高階関数というのは引数に関数を
腐lispの第一回です。いきなりですが、関数定義についての話をします。 関数定義の方法 elispの関数定義の方法は以下のようになっています。 (defun 関数名 (仮引数1 仮引数2 ...) フォーム) かけざん関数をつくる というわけで、早速、みなさんにはおなじみのあのかけざんをする関数をつくっちゃいましょう☆★☆★☆ (defun × (seme uke) (message "%s × %s" seme uke)) (× 'kusakabe 'sajo) ; "kusakabe × sajo"と表示される 簡単ですね。 上のコードはEmacsのscratchバッファに書いてすぐに試すことができるので、好きなだけかけざんしましょう。 括弧について 最初は括弧が多くて戸惑うかもしれません。でも慣れればかわいく見えてくるので大丈夫です。 それでも信じられないという方は、開き括弧"("
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く