世界的日曜WEBプログラマー日記 -10ページ目

世界的日曜WEBプログラマー日記

一年後に世界的なWEBサービスを運営するにはどうすればいいのか書いていく(予定)

例えば本日の何かを検索する場合、rangeを使う。
もっと他の方法は無いのか、と思うが無い。
import datetime
from maishoku.models import DomainEvent # our original models.

def main():
today = datetime.datetime.today()
min_today = datetime.datetime.combine( today, datetime.time.min )
max_today = datetime.datetime.combine( today, datetime.time.max )
events = DomainEvent.objects.filter( dispatch_time__range = [min_today, max_today] )

となる。
上記のDomainEventは私達マイ食で使っているモデルなので実際にないため注意。

実はstartwithでも出来るかもと思うかもしれない。
YourModel.objects.filter(your_datetime_field__startswith=datetime.date(2009,8,22))
これはできるが、Stringの比較が重いため、テーブルが大きい場合には向かないので注意すること。

蛇足: combineとreplace関数( datetime )
datetimeのcombineは意外と知られていないが、便利な関数。
その他にdatetime.replaceも結構便利。replaceを説明すると、
today = datetime.datetime.today()
b = today.replace( year = 2012 )

とすることで、yearだけを2012にすることができる。その他day, hourなどあるので各自参考のこと

株式会社OctOpt
コンピューターサイエンス会社OctOptの技術公式ブログ
等々力 康弘
@rocky_house
画面解像度の設定といえばxorg.confをいぢっていたような気がしたけど、最近では便利なコマンドが出来たようだ。
(もともとずっとあったのかもしれないけど、全く気づかなかった。。)

Linuxで画面解像度がおかしく検出される場合、手動で調整する方法がある。それがxrandrコマンドだ。
使い方を説明する。

まずはcvtコマンドを使って使いたい解像度を入力
$ cvt 1680 1050
Modeline ... と出力されるはず。この...の出力モードの情報が必要。

このあとの流れはxrandrを用いて
1.出力モードの登録
2.名前登録、関連付け(上記出力モードを関連付け)
3.アウトプットの設定(上記関連付けした項目の出力)
となる。

では実際にコマンドを叩く。

$ xrandr --newmode "1680x1050_60.00" 146.25 1680 1784 1960 2240 1050 1053 1059 1089 -hsync +vsync
名前をVGA1として登録する。名前は何でもよく覚えやすいのにしておく。
$ xrandr --addmode VGA1 1680x1050_60.00
あとは出力するだけ。
$ xrandr --output VGA1 --mode 1680x1050_60.00

以上。これでVGA1に出力される。

Tips.
2画面表示なども出来る。LVDS1というのがすでにあり、新しいVGA1を左にしたい場合
$ xrandr --output LVDS1 --auto --left-of VGA1

株式会社OctOpt
コンピューターサイエンス会社OctOptの技術公式ブログ
等々力 康弘
@rocky_house
HTMLからPDFを作成する方法。

wkhtmltopdfを使う。インストール方法は
$ apt-get install wkhtmltopdf

お手軽でした♪

ところが!
wkhtmltopdf cannot connect to x server
というふざけたメッセージ。
これはQTをwkhtmltopdfが使っているせいで、GUI環境がないとHTMLからPDFが作成できないらしい。

まさにふざけるな。
No GUIとか基本でしょ。

これを回避するにはxvfbを使って仮想のXserverを立ち上げる方法があるが、
めんどくさいでゲス。
最初から公式サイトで主導インストールするのが早い。
32ビットなら
$ wget https://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.11.0_rc1-static-i386.tar.bz2
64ビットなら

あとはやるだけ。
$ tar -vxf wkhtmltopdf-0.11.0_rc1-static-i386.tar.bz2
$ mv wkhtmltopdf-i386 wkhtmltopdf
$ chmod a+x wkhtmltopdf
$ sudo mv wkhtmltopdf /usr/bin




これならGUIを要求されない。
$ wkthmltopdf tst.html out.pdf
でPDFの作成。
一つ注意が、HTMLのファイルのヘッダーにはきちんと日本語の文字コードを書くこと
meta http-equiv="Content-Type" content="text/html; charset=UTF-8"
とか付けておかないと、日本語が文字化けする。

Tips:
インストール作業がメンドイのであればxvfbを使って仮想GUIを立ち上げることもできる。
wkhtmltopdf.shというファイルを作り(ファイル名は何でもいい)
次の用に書くといい。
xvfb-run -a -s "-screen 0 640x480x16" wkhtmltopdf $*

株式会社OctOpt
コンピューターサイエンス会社OctOptの技術公式ブログ
等々力 康弘
@rocky_house