programming

適当書いたビットリバース

ビットリバース。 #include<stdio.h> typedef unsigned int uint; void printbits(uint n, int bitlen) { int i; for (i = 0; i < bitlen; i++) printf("%d", (n >> (bitlen-i-1)) & 1); } uint bitreverse(uint n, int bitlen) { uint r = 0; int i; for (i = 0; i <</stdio.h>…

ステートマシンを作れる仕組みみたいな。

状態遷移表と、状態と入力に対応する処理を入力するだけでステートマシンが作れるような仕組みを作れないかなあと思いちょっと作ってみました。そして、サンプルとしてダブルクオテーションによるエスケープ処理ができるCSVパーサを作ってみました。BNFから…

BF Brainf*ck Interpreter in Python

自分で書いたやつを見つけたのでアップ from sys import stdin, stdout # state class Int(object): def __init__(self, v=0): self.val = v def set(self, v): self.val = v; return self.val def inc(self): self.val += 1; return self.val def dec(self)…

Google DocsをDBとして使うアプリケーションを作成してみた

YoutubeやBlogger、CalenarなどGoogleのサービスを利用するGoogle Data APIというのがあるらしいです。 その一つにGoogle Documentsのスプレッドシートを操作するAPIがあり、今回はそのAPIを使って簡単な食事記録アプリケーションを作ろうと思います。 イン…

凸包走査アルゴリズムをPython+PyOpenGLで

オライリーから出版されている『アルゴリズムクイックリファレンス』で凸包走査アルゴリズムを学習したので、PythonとPyOpenGLで適当に点を打った点集合から凸包を計算して表示するプログラムを作成しました。点(-1,-1)と、点(+1,+1)からなる矩形に一様…

HTML5のcanvas要素でライフゲーム

初めてPhotoShop使ってみた HTMLの次世代規格であるHTML5にはWeb Socketsやvideoなどおもしろいタグや機能が追加される予定、らしいです。 その中でもcanvasタグという、javascriptで画像を制御するためのタグがあります。今回はそのタグとタイマーイベント…

C言語で関数ポインタを使ってカプセル化に挑戦してみた

要はデータと手続きを一緒にすりゃいいんでしょ簡単簡単みたいなテキトーな考えに基づいて、構造体のメンバに関数ポインタを代入するだけのカプセル化(笑)に挑戦してみました。 さて、どんな題材にしようか迷ったあげく、C言語でもっとも面倒な処理の一つ…

XMLツリーのタグへの参照を属性アクセスで実現する

PythonでXMLを読んで辞書オブジェクトの木に変換するプログラムを書いたけどなんかいけてないので、タグへのアクセスを属性アクセスで実現する方法を考えてみました。要は <root> <children> <child>A</child> <child>B</child> <child>C</child> <child>D</child> </children> </root> こういうXMLを読んで、Pythonから root['children']['child'][0] こうア…

curlコマンドからTwitterへpost

パラメータはchromeの開発ツールとかでhtmlファイルを読んで適当に送信しました。ログイン時 https://twitter.com/sessionsに以下のパラメータを送信する。/sessions/newにリダイレクトされるので直接そちらに送信しても可。 session[username_or_email] ユ…

PythonでTwitterにログインするプログラムを書いていたら、ブラウザでの認証にCAPTCHAが出現した件

PythonからTwitterにログインしてpostしたりfollowingを確認したりするプログラムを書いてみようとしたわけなんですが、数回はうまくいったものの以降突如としてCAPTCHAが現れ玉砕。さて困った。ついったー的にはOAuth使えや!!!って感じなんでしょうか。 …

PythonでAmazonの商品ページをパースしてasinから書籍名を取得する

とある理由でPythonでASIN→書籍名変換をしたいと思います。前はAmazon APIとかいうのがあって楽に取得できた記憶があるんですが、今はどうやら認証の手続きが必要になったらしく、名前も変わっていました。Product Advertising API認証にシークレットトーク…

PythonでHTTPS通信してはてなにログインしてみる

今書いているプログラムでhttps通信を使ったログイン処理っぽい事をする必要が出てきたのでPythonのマニュアルを読んで、簡単にできることがわかりました。urllib2を使うみたいだ。 http://www.python.jp/doc/2.5/lib/urllib2-examples.htmlサンプルとして、…

PythonのCGIスクリプトで診断メーカーの診断結果を複数同時に取得する

診断メーカーの複数の診断結果をテキストで返すCGIスクリプト。結果をHTMLから抽出するのにBeautifulSoupライブラリを使用した。追記: 2010/11/02 HTML構造の変化に伴ってソースを変更しました。 #! /usr/bin/python2.6 # coding: utf-8 import cgi import …

__slots__使ってみた

Pythonのクラス定義で__slots__でクラスの属性を指定するとクラスをインスタンス化するとき__dict__を作成しないため メモリを節約 参照、代入可能な属性を固定 できるらしい。。。実際のところどの程度メモリを節約できるのかに興味をもったので、100万…

Pythonでパスワード生成&クリップボードへコピー wxPython編

前回のエントリで、パスワードを生成してクリップボードにコピーするプログラムを書きました。今回も同じ機能を持つプログラムを書きました。前回はWIN32APIをつかってクリップボードを操作しましたが、今回はクロスプラットフォームのGUIライブラリであるwx…

Pythonでパスワード生成&クリップボードへコピー

自分でランダムなパスワードを考えるのが億劫なので適応な長さのパスワードを生成してクリップボードに貼り付けるプログラムを書いた。 #! /usr/local/bin/python2.6 # coding: utf-8 # n文字のパスワードを作成するプログラム。 # 最後にプロンプトを出して…

Pythonのデコレータで関数の型チェック(2)

前回のエントリでは1引数で1つの値を返す関数の型チェックをするデコレータを書きました。今回はそれを拡張して、複数の引数を受け取り一つの値を返す関数に対してごく簡単な型チェックをするコードを書きました。 #! /usr/local/bin/python2.6 # coding: …

Pythonのデコレータで関数の型チェック

『エキスパートPythonプログラミング』を少しづつ読み進めています。序盤からジェネレータについて自分の知らなかった使い方が載っていたりして読み進めるのが楽しいな。BTSを使ったバグ管理、unittestモジュールとnoseを使ったTDDなど、実際の開発プロセス…

wxpythonで簡単な予定管理アプリケーションを作った

さんざんwxGladeとXRC駄目だなどと書いておいてまたwxGladeでアプリケーション書いちゃいました。 wxGladeが4時間で7回落ちた。最高記録だ!少し前まで、webサーバ上で予定管理のためのごく簡単なアプリケーションを作って使っていて、そのサーバが使えな…

Pythonでネットワーク上のコードをインポートする

impモジュールを使うと自前のimportを記述できそうだということがわかったので、試しにはてなダイアリーに簡単なソースコードをアップロードしてPCのローカルにあるファイルからインポートして関数を実行させてみました。 実装にはhttp://antas.jp/blog/ya…

javaのループの記述の仕方

javaでループを記述するときは三つの方法があり、 C言語のようにループ変数を0からシーケンスのサイズ-1までループさせて参照する for-each構造を使う イテレータを使う がある。 // 参考: // http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/util/Arr…

Javaでキュー、スタックを使った木構造のBFS,DFS

インタフェースとArrayList,LinkedListを使ってみたかったので、ちょうどい題材としてキューとスタックにインタフェースを組み合わせて木構造を幅優先探索と深さ優先探索しました。 / bin ar diff od usr home userA userB userC etc var// スタックとキュー…

java学習 javaで単方向連結リストを実装

Javaで単方向連結リストを実装してエラトステネスの篩をかけてみた。 できるだけ汎用にしたいな → 総称クラスを使おう イテレータがほしい → 自分で実装しよう filterのための関数オブジェクトがほしい → じゃあその基底クラスを定義 とかしてる間に130行に…

java学習 ファイルを読む

めんどくさいね。 /* * 1. java.io.Fileでファイルを読む * 2. java.io.FileReaderのコンストラクタに渡す * 3. さらにjava.io.BufferedReaderのコンストラクタに渡す * 4. nullが返るまでreadLine * * 例外:IOException,FileNotFoundException */ import j…

java学習 はじめてのArrayList

ArrayList使ってみた。基本型はラッパーオブジェクトを格納して、メソッド呼び出しでは引数をオートボクシングといって自動でラッパーオブジェクトにしてくれるらしい。 // ArrayListはサイズが拡張可能な配列型データ構造 // C++STLのvectorに似たデータ構…

javaで標準入力からデータを読む

PKUのHangoverの問題でテストした。eclipseの補完機能は楽だなーhttp://acm.pku.edu.cn/JudgeOnline/problem?id=1003 import java.util.Scanner; public classHangover { public static void main(String[] args) { Scanner sc = new Scanner(System.in); do…

javaで標準入力を受ける方法

javaで標準入力を受ける方法をTwitterで@nise_nabeさんに教えてもらった。 http://twitter.com/nise_nabe/status/14289697162 ほかにもいろいろ教えてもらった。ありがとうございました。 http://bettween.com/brainfs/nise_nabeScannerのリファレンス。 htt…

javaで時間計測する方法 -ラップタイムを計測するクラス

Javaの学習。時間計測にはSystem.currentTimeMillisを使う。 コード中の2点を通るまでの時間はそれぞれでSystem.currentTimeMillisでlong型の値を取得してその差分をとるとミリ秒単位での時間になる。そこでラップタイムをとるクラスを作ってみた。 public c…

java学習 ... ガウスの消去法

java学習中。とりあえずeclipseの日本語環境を入れた(ついでにPyDevも)もうこんな時間なのでガウスの消去法を実装しておわり。 import java.util.Arrays; public class GaussEliminationMethod { public static void main(String[] args) { double[][] a =…

Pythonオブジェクトをjsonモジュールでjsonにシリアライズ

前の記事で書いたjsonシリアライザの仕組みを、自作のパーサではなくjsonモジュールで実装した。32行で実装できた。お手軽。ユーザ定義型のシリアライズの方法は同じで、__encode_json__で永続化したいオブジェクトを返して、__decode_json__クラスメソッド…