ほんじゃらねっと

ダイエット中プログラマのブログ

プログラミング

指定したフォルダ内のファイルの文字コードをUTF-8に変換するタスク

指定フォルダ内の全ファイルについて、文字コードを自動判定して読み込み、 UTF-8に変換して保存するカスタムタスクを作成する。 文字コード自動判定については、下記のページでJcode.pmを参考にした関数が 紹介されているので、そちらを使わせていただく。 …

NAntのカスタムタスクで実行時にユーザー入力を受け付ける

便利タスクを作っていく上で、実行時に処理対象を指定したりできた方がいい、 ということでユーザー入力を受け付ける方法を調査した。 方法としては2つあって、どちらもプロパティ(変数みたいなもの)に ユーザーからの入力を代入するというもの。 nantコマ…

NAntのカスタムタスクで便利コマンドを作れる環境を作る

仕事でC#を使うことになったので、勉強している。 たとえ練習でも、どうせ作るなら役に立つようなプログラムの方がモチベーションがあがるので、 コマンドラインで簡単に実行できるような便利コマンドを作りながら、言語の仕様とか、ライブラリの 使い方を習…

Google Readerでスターをつけた記事をはてブに自動投稿する

iPhoneのReederアプリでGoogle Readerの記事を読むようになってから スター機能を多用するようになったので、スターをつけた記事をはてブと 連携させる簡単なWebアプリを作成した。 やり方としては、 Google Readerでスター記事ページを公開する スター記事…

vim設定最新版

他の環境で使えるように最新版の設定をアップしておく。 たいした内容じゃないですよ。 _vimrc set number set fenc=utf-8 set fencs=utf-8,iso-2022-jp,euc-jp,cp932 set enc=utf-8 set backupdir=~/tmp/vim set directory=~/tmp/vim set nowrap set tabsto…

Kayでローカル開発環境に認証ユーザー作成

下記のコマンドを実行する python manage.py create_user -h localhost:8080 -u ユーザー名 --no-secure パスワードを聞かれるので、入力したらユーザー作成される。

Google App EngineでBabelとJinja2を使って国際化

Jinja2を導入すれば簡単に国際化できると思ったら大間違いだった。 Jinja2と国際化フレームワークのBabelを使うことで、Djangoの国際化機能と同じようなことが実現できる、 ということだったらしい。何度か「Kay Frameworkにしときゃ良かったか...」と思った…

Google App Engine でwebappフレームワークとJinja2を使用する

Jinja2の国際化機能が使いたかったので、テンプレートシステムを今まで使っていた DjangoテンプレートからJinja2に移行した。Kay Framework に移行することも考えたのだけど、 大分作り込んじゃったサイトだったので断念し、テンプレートだけを変更。 移行自…

Google App Engine で Foursquare APIv2 認証

FoursquareのAPIのv2でモバイル版の認証画面が使えたりjsonpが使えたりするらしいので、移行してみた。 OAuth認証処理が少し変わったので、それに合わせて作成した認証用クラスや処理を公開。 下記のような認証用クラスを作成した。 foursquare_oauth.py fro…

jQuery MobileでiPhone用Webサイトを作成する

jQuery Mobile http://jquerymobile.com/ いろいろはまったので、メモ。 バージョンは 1.0 ALPHA 2。 page毎にHTMLを分けて作成する これは好みだと思うのだけど、URL直指定でそれぞれのページを呼び出せたりするようにするなら、分けた方が簡単な気がした。…

Ubuntu10.04で最新版のiBus-skkを使う

Synapticパッケージマネージャで入るバージョンは0.0.2で辞書の追加や z/などでの記号入力ができなかったので、最新版(1.3.4)をインストールした。 既にパッケージマネージャでiBus-skkをインストールしてる場合は削除しておく ダウンロード https://github.…

wubiでインストールしたubuntuがアップデート後に起動しなくなった時の解決方法

色々パターンがあるみたいけど、今回僕がハマったパターンは、 ubuntuのアップデート後に再起動して、OS選択画面で「Ubuntu」を選択したら Unknown command (loadfont) と一瞬表示されてから自動的にまた再起動されてしまう、というもの。 色々試してみた結…

wubiでノートパソコンにWindows/Ubuntuデュアルブート環境を構築

Windows(Vista)のappengine開発サーバがあまりにも遅いのでUbuntuに切り替えようと思い、 調べてみたらパーティションの設定もいらないお手軽なデュアルブート環境構築方法が見つかったので 試してみた。 https://wiki.ubuntulinux.jp/UbuntuTips/Install/Wu…

Apacheのログからアクセス数上位20件のIPアドレスを表示する

こちらを参考にしました http://www.freia.jp/taka/blog/356 import re f = open("error_log") pattern = re.compile(r"\[client (?P<ip>[0-9\.]+)\]") ips = {} for line in f: m = pattern.search(line) if m: ip = m.group("ip") ips[ip] = ips.get(ip, 0) + </ip>…

lsコマンドでファイルサイズ順にソート

$ ls -S http://database-tearoom.seesaa.net/article/49061637.html より

Google App Engine で全文検索を実装してみる

以前下記のURLでAppEngineでの全文検索についてあれこれ考える記事を書いたけど、実際に実装した例を載せてみる。 http://d.hatena.ne.jp/piro_suke/20100721/1279643738 検証してないけどあまり多くのデータを検索対象にするには向いてないと思う。 1ユーザ…

Foursquare API のOAuth認証用クラス

FoursquareのAPIを使って場所系のサービスでも作ってやろう、 と思い立って作っている。 APIドキュメントのRate Limitingを読んだところ、 認証済みの場合は認証ユーザー毎、認証していない場合はIPアドレス毎に 1メソッドにつき1時間200アクセスまでと制限…

Google AJAX Search API でシンプルにローカル検索

Google AJAX Search API http://code.google.com/intl/ja/apis/ajaxsearch/ ドキュメントに掲載されているサンプルでは備えつけのフォームや検索結果を表示する ようになっているのだけど、Javascript内で検索処理を実行して 結果をJSONで処理する方法もあっ…

Admin管理画面でForeignKeyをプルダウン以外で選択できるようにする

DjangoのAdmin管理画面でForeignKeyを使用したモデルを編集する場合、 プルダウンを生成して参照先のオブジェクトを簡単に選択できるようにしてくれる。 しかし、プルダウン生成時に全てのオブジェクトを取得してきてしまうので、 参照先のデータが増えてき…

jQuery UI でダイアログ表示

別の記事でも書いたけど、個人で開発しているWebアプリでは、だいたいjQuery UIを使用してる。 今回はその中でもよく利用しているdialogの使い方をまとめておく。 dialog機能を使うと、割と簡単にエラーダイアログやフォーム表示用のサブウィンドウを作成す…

Google App Engine で画像を正方形にcropして保存

こちらのRuby版を参考にしました。 http://d.hatena.ne.jp/tohtas/20100221/1266778938 サムネイル等で画像を縮小してから正方形にcropする。 image_api.py from google.appengine.api import images def resize_image(image_data, width, height): """画像…

Google App Engine で全文検索

Google App Engine には今のところ全文検索機能がないので、色々試してみた。 検索処理についての知識は、Web+DB Pressの53号を読んだ程度。 やりたいことは、 Twitterみたいな感じで各ユーザーが短い文章を登録するようなサービスで、その発言内容からキー…

re.finditerで正規表現マッチしたパターン毎にグループ化

分かりにくいタイトルだけど。 1つのファイル内に同じパターンにマッチする箇所が複数ある場合に、 個々の箇所でデータを名前つきグループ化して抽出したい場合に使える。 例えば、HTMLファイルの中からテーブルの各行から個々の列の値を取り出す時とか。 パ…

関数の呼び出しログを取る

デコレータ便利。この例では呼び出しと引数だけをログしてるけど、 処理にかかった時間の計測とか、色々できそう。 log.py import logging def log_api_call(func): def decorator(*args, **kwargs): logging.info("API: %s called. params: %s %s" % (func.…

jQuery UI.Layout Plugin を使って単一ページUIを作る

Google App Engineを使うようになって、リクエスト時間の節約のために 重いページ(HTML)のロードは最初の1回だけにして、以降はページ遷移なしで AjaxでJSONのやりとりをしてビューを変更するような方法をとることが多くなった。 UIについても毎回デザイン…

フォント設定

set guifont=DejaVu\ Sans\ Mono\ 10 set guifontwide=VL\ ゴシック\ 10 変えてみたらめちゃキレイでやる気でた。

ある日付が指定日数より後かどうかを判定するカスタムフィルタ

ページ上で3日以内に更新された記事に「New!」と表示したりする場合に使えるフィルタを作ってみた。 datetime型と、yyyy-mm-dd形式の文字列の両方に対応。 がんばったらもっと色々なフォーマットに対応できるだろうけど、がんばれなかった。 使う時はエラー…

テンプレート用のカスタムタグやカスタムフィルタをサブディレクトリに分ける

djangoのカスタムタグやカスタムフィルタを利用する場合はloadタグでファイル名(モジュール名)を 指定してロードする。 これまたアプリ名は必要なく、モジュール名だけで呼び出せるのだけど、 そのままだと名前がかぶる可能性があるのでアプリを指定して呼び…

fixturesをサブディレクトリに分ける

djangoでデータベースのデータをインポートする時は fixtureデータを用意してloaddataコマンドでインポートする。 loaddataコマンドはアプリの指定無しでfixture名を指定するだけでインポートしてくれるのだけど、 そのままだと名前がかぶる可能性があるので…

やむをえず親リポジトリの場所を移動する時に子リポジトリが親を見失わないようにする

簡単でした。 .hg/hgrc に書いてある親パスを変更するだけ。 [paths] default = ... (ここ)