programming

Project Eulerの日本語訳へのリンクを張るuser script(2015/4/30時点)

Project Eulerの日本語訳へのリンクを張るuser scriptを更新しました。Chrome 42.0.2311.90 m Tampermonkey 3.10.84 で動作確認してます。 // ==UserScript== // @name ScriptEuler // @namespace http://d.hatena.ne.jp/yatt/ // @description link euler p…

Mobile Safariで端末の傾きを取得する

jsdo.itに、Mobile Safariで端末の傾きを取得して、Highchartsでグラフ化するサンプルを作成しました。http://jsdo.it/brainfs/A7SL JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス作者: Douglas Crockford,水野貴明出版社/メーカー: …

iPhone Mobile SafariでGPSトラッキングをした話

データベースに記録された緯度経度をマッピングした図。 iPhoneでGPS座標値を記録するためにはどうすればいいのか、という話。 最近、自転車を買ったので遊ぶために調査しました。 以下、iPhone4S, iOS6環境での話です。

平方数の判定を高速にやりたい

ある数が平方数かどうか(整数を2乗した整数かどうか)判定して、平方数ならその平方根を得たい。 しかも、大きな数(例えば、3^256)でも正しく判定できることが条件。 という観点で試行錯誤したのでメモ。考えた後で思ったけどPARI/GPとかになら組み込みで超高…

project eulerの日本語訳へのリンクを張るuser script

project eulerの日本語訳へのリンクを張るuser scriptをかきました。問題番号がhttp://odz.sakura.ne.jp/projecteuler/ の問題文日本語訳へのリンクになります。 scripteuler.user.jsという名前で保存して、chromeの拡張機能画面にドロップするとインストー…

Amazon RDSのOracleを使い始めた話

AWSのAmazon RDSを使うと、オンデマンドでRDBMSの環境を作成できます。たしか当初は、サポートしているデータベースはMySQLだけだったと記憶していますが、最近はOracleのインスタンスを立ち上げる事もできるようになっています。中でも、Oracle Standard Ed…

python向けHTTP関連モジュールのrequestsが便利すぎる

(追記 2015/04/19) コードは既に互換性が無くなっているので、以下を参考に読み替えて下さい。 pythonのrequestsライブラリの更新に追従 大幅に改善強化されたurllib2ことrequestsモジュールを使ってみたら便利すぎて驚いたので報告。 urllib2で面倒だった処…

pythonからgdataライブラリでGoogle Calendarを操作する際に302 Redirect RequestError: Moved Temporarilyが発生する問題

pythonのgdataライブラリでGoogle Calendar APIを叩くと、ステータスコード302が返ってくる場合があるので調べたらこんな内容が。http://code.google.com/p/gdata-python-client/issues/detail?id=268要は、連続的にカレンダーの登録などを呼び出した場合に…

ヒープの変化

http://d.hatena.ne.jp/yatt/20120525/1337959944 で描いたモジュールで、heapqモジュールで作られたヒープの変化を出力した. 珠玉のプログラミング―本質を見抜いたアルゴリズムとデータ構造作者: ジョンベントリー,Jon Bentley,小林健一郎出版社/メーカー: …

pythonで使うための木構造のビジュアライザ書いた

木構造のトラバースに使うためのクラスを定義して各種メソッドを定義するだけで、各種フォーマットでの画像出力ができるモジュールを作りました。pydot便利ですね. 適当に作った木構造 (define (fn x y) (+ x y))の構文木 関係無いけど積ん読。最近読む時間…

pythonのdictでいちいちブラケット[]を書きたくないでござるの巻

特殊メソッドのオーバーライドで実現します。 class edict(dict): def __getattr__(self, name): return self.get(name, None) def __setattr__(self, key, val): self[key] = val d = edict() d.hello = 'foo' d.world = 'bar' print d # {'world': 'bar', …

逆FizzBuzz問題をPythonで解いた

逆FizzBuzz問題 (Inverse FizzBuzz)初めは検討もつかず。 連続数列のどこが始まりか分からないし、どこが終わりかも分からないし、どこからどう調べればいいかまったく分からないといった感じ。しかし、ご飯を食べたり散歩しながらぼんやり考えている内にひ…

pythonで直積集合を取る

pythonで、set型同士の直積集合を簡単に得るにはどうすればいいだろうと悩んでいたところ、アドバイスを頂きました。 window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)…

ファイルがvalidなjsonかどうか簡単にチェックする方法

pythonを使いましょう。標準モジュールjson.toolを-mオプション付で起動すると、jsonのプリティープリントをしてくれます。このとき、標準出力をすべて捨てて標準エラー出力だけ出すようにすれば、簡単にjsonのvalidationができるのです。 # unix like $ pyt…

appengine pythonで数時間でtwitterのbotを作る

一日につぶやいた数を毎日23:55に自動でつぶやくbot, nekofierをappengine上で作りました。 以下、その時のメモです。簡単な仕組みなのでbotを作成する際の参考になれば。 nekofierってなに? 一日につぶやいた数を毎日23:55に自動でつぶやきます。この時、…

pythonでskip list

skip listというデータ構造をpythonで実装しました。listとありますが、実際には探索木のような構造で、 要素の挿入時に木をバランスさせる必要が無い lock-free なアルゴリズムだそうです。バランス操作が不要だと、並列プログラムと相性がよさそうというの…

python+pydotで木構造を画像出力

木構造のデバッグって大変ですよね。深さをスペースで表現してコンソールに出力してもいまいちピンとこない。できれば画像で出力できると良いのだけれど、画像処理ライブラリで硬派に処理するのは面倒だなぁ・・・前々からそんなことを考えていました。 最近…

素因数分解を高速にやるには

こんなコードを書いたけど、n以下の素数のリストを得ずに、例えば素数テストを使ってもっと早く計算できたりするのかなぁ。 # coding: utf-8 import primetable def factory(n = 10**7): ps = primetable.primelist(n) # n以下の素数をリストで返す memo = {…

sqlite3がダブルクォートでエスケープされているcsvをインポートしてくれない件

どうしよう。 ODBC経由で接続 専用のプログラムを作る sqlite3を修正 とりあえず、CSVを読んでトランザクションを実行する書き捨てプログラムを書いて解決した。時間があったらsqlite3用のドライバとか入れて、サードパーティーのツールを使ってODBC経由で流…

pythonのsqlite3モジュールでトランザクションする方法メモ

pythonのsqlite3モジュールでトランザクションする方法をメモしておきます。なんか、ネットで調べてもなかなか日本語のサンプルが出てこなかったので。sqlite3.connect()のisolation_levelオプション引数に分離レベルに対応する値を渡すだけです。こんな形に…

msgpack-rpcをインストールして試した

試すだけなのでvirtualenvで仮想環境を作ってそこにインストールした。 不要になったら丸ごと消して終わりにできるので便利だ。 $ mkdir tmp $ cd tmp $ virtualenv formsgpack $ cd formsgpack $ git clone git://github.com/msgpack/msgpack-rpc-python $ …

nginxが小文字のHTTPメソッドでエラーを返す件、nginxを小文字メソッドに対応させる方法

「RESTfulなAPIを叩くときにメソッド名をうっかり小文字で記述するとBad Requestが返るので大文字で記述しましょう」という話です。HTTPメソッドがcase-sensitiveとかどうか、今まで気にした事がありませんでしたが、gumroadのAPIを叩くときに謎のエラーに悩…

gunroad.com APIのPythonバインディングを書きました

https://github.com/yatt/python-gumroad-client/こんな感じに使います。 # sample from gumroad import Gumroad, GumroadItem # setup background interface api = Gumroad('email', 'password') api.login() GumroadItem._api = api # create new item ite…

ORMで木構造を扱う

リレーショナルDBで木構造を扱うためにPython向けのORマッパーを書きました。 yatt / python-tree-data-object-relational-mapper今は隣接リストモデルしか実装していないけれど入れ子集合モデル(https://secure.wikimedia.org/wikipedia/en/wiki/Nested_set…

python + wsgiで2フェーズ・コミットするKVSを作った

データベースの学習として2フェーズ・コミットを理解するために、2フェーズ・コミットで同期するKVSをwsgiアプリケーションとして作成しました。サーバとクライアント合わせて220行ぐらいです。https://github.com/yatt/2phase-commit-kvs 下で実行してるア…

データベースのテーブル結合アルゴリズムを調べた

入れ子ループ 一行づつ、全てのキーとチェックをかけて同じかチェックするよ ソートマージ 2つのテーブルをソートしてからチェックするのでキーの比較回数少ないよ セミジョイン 分散DB前提。キーをリモートホストに送信して部分的な結合結果を受け取って…

twitterlibをアクティビティに対応させた

twitter webのUIが変更されて、「アクティビティ」というタブが追加されました。フォロワーのfavoriteやretweetなどのイベントを通知してくれます。chromeのコンソールなどでアクセスしているURLを調べてみると、/i/activity/about_me.json /i/activitt/by_f…

PyPyのStringBuilderの処理速度を試す

PyPy Status BlogのエントリでPyPyにStringBuilderという高速でmutableな文字列がある事を知り、処理速度をためしてみました。StringBuilderはやい。 #!/usr/bin/env pypy from random import choice from string import ascii_letters as ls import time im…

$.ajaxでYQL経由のクロスドメインリクエストを可能にするjQueryプラグインを作りました

jQueryでAjaxを行う$.ajax関数に、Yahoo Query Language APIを利用したクロスドメインAjax機能を追加するjQuery Pluginを作りました。ソースはgithubにあります。 https://github.com/yatt/jquery.xdomainrequestインクルードするとこんな感じでクロスドメイ…

PythonのGUIアプリを(VB.NETで)書こう

どーも。今回はPythonのクラスをVB.NETから呼び出して、既存PythonソースとGUIとの橋渡しをしたいと思います。 Pythonのベジェ曲線クラスをVB.NETから呼び出してハートマークを書いたの図 PythonでのGUI開発 Pythonで書いたスクリプトの機能をGUI化したい。…