ほんじゃらねっと

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

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

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) と一瞬表示されてから自動的にまた再起動されてしまう、というもの。 色々試してみた結…

作業をペアで行うことによって日常業務の中での成長速度を高める

1つの作業を二人で行うことで、一人で仕事するよりも早く成長し、良い成果を出せるようにする。 頭を使う仕事には全て効果があるはず。 期待できること 常に判断や行動の理由を相手に伝える必要があるので、論理的思考、判断力、説明力を高めることができる …

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 = ... (ここ)

crop機能付きでサムネイル化できる画像管理モデルを作る

crop機能を初めて使ったけど、縦か横どちらかに長い画像をサムネイル化する時は、cropした方が見栄えがいいですね。 相変わらず整理されてないソースだけど、メモメモ。 ライブラリは、Python Imaging Library と、 http://www.pythonware.com/products/pil/…

フォームデータのメール送信をバッチで処理する

Webフォームから送信されたデータを保存後にメールでユーザーやら担当者やらに送信する処理が必要な事が多い。 メール送信処理は結構重いので、リクエスト中に送信するのではなく、後でバッチ処理で送信する処理を作ってみた。 送信するメールを保存するモデ…

地図上で場所を選択すると選択した地点の座標をフォームのhiddenフィールドに入力するプラグイン

jQueryプラグインの作成方法を学びつつ、色々作ってみる。 今回は、HTMLのフォームで場所の情報を登録する際に座標情報を入力してもらうのに使えそうなプラグインを作った。 表題のままだけど、地図で地点を選択するとその座標情報が指定したフォームフィー…

Google App Engineでセッションを使う

AppEngineでGoogleユーザーアカウントを使用せずにセッションを使う方法を探したところ、 gaeutilitiesというモジュールを発見した。 http://gaeutilities.appspot.com/ このモジュールはセッションだけでなく、appengine用の便利機能が色々入ってるみたい。…

Google App Engine でエンティティの一括削除の方法を考えてみる

EvernoteのAPIを使ったWebアプリをappengine上に作ろうとしてる。 たまに既存のデータを全部消してフル同期する必要が発生しそうなので、 なんとかこれを最小のコストで終らせたい。 ついでに汎用的な一括削除の仕組みができたら再利用できて嬉しいな、と思…

Google App EngineでフィルタしないリストはBlob化してキーで一括取得

使いまわせそうな方法が見つかったのでメモ。 ユーザー毎にタグを作成できるような機能を作成していて、特定のユーザーのタグを一括で取得しようと する場合、普通にタグ毎にエンティティを作成していると、200件くらいのタグをuserでfilterして 取得するだ…

Ubuntu9.10でGoogle App Engineのアップデートエラーを解決

Google App Engine 楽しいですね。 表題の件、僕のPATHの設定か何かが悪いのかもしれないけど、普通にappengineを配置して cd google_appengine ./dev_appserver.py プロジェクト名 すると下記のようなエラーが表示される。 ERROR 2010-03-01 17:18:14,354 a…