2011年6月15日水曜日

easy_installでビルドする時。

easy_installを使うとき、ソースコンパイルするモジュールがあったりする。
その時VisualStudio2010 C++入ってるから大丈夫って思うとvcbatcall.bat?が
無いと起こられてしまう。
パス通したりしてがんばっても先に進まないので、こうなったら迷わず

「VisualStudio2008 C++」をインストールする。

これに尽きる。

2011年6月13日月曜日

Django デバッグ環境を整える

今回は3つデバッグ環境について触れてみた。
 ・Logging
 ・django-debug-toolbar(IE9だと表示崩れる)
 ・pylint


○Logging
Django v1.3になって、setting.pyにロギングするコードが追加されたようだ。

使い方は簡単で、
https://docs.djangoproject.com/en/1.3/topics/logging/
ここを見ながら設定してみると、

setting.py
LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'mail_admins': {
            'level': 'ERROR',
            'class': 'django.utils.log.AdminEmailHandler'
        }
    },
    'loggers': {
        'django.request': {
            'handlers': ['mail_admins'],
            'level': 'ERROR',
            'propagate': True,
        },
  'app': {
   'handlers': ['console'],
   'level': 'DEBUG',
   'propagate': True,
  },
    }
}

views.py
import logging
...

logger = logging.getLogger('app')
...
このような感じに設定しておく。

○django-debug-toolbar
さらにデバッグしやすくしようと思って調べてみたら、
「django-debug-toolbar」というものを発見。
ここからいつもどおりの手順で導入していく。

1.インストール
sudo easy_install-2.5 django-debug-toolbar

2.設定
.\python\Lib\site-packages\django_debug_toolbar-0.8.5-py2.6.egg\example
サンプルを見ながら設定していく。

settings.py
INSTALLED_APPS = (
    ...
    'debug_toolbar',
)
MIDDLEWARE_CLASSES = (
    ...
    'debug_toolbar.middleware.DebugToolbarMiddleware',
)

DEBUG_TOOLBAR_PANELS = (
    'debug_toolbar.panels.version.VersionDebugPanel',
    'debug_toolbar.panels.timer.TimerDebugPanel',
    'debug_toolbar.panels.settings_vars.SettingsVarsDebugPanel',
    'debug_toolbar.panels.headers.HeaderDebugPanel',
    'debug_toolbar.panels.request_vars.RequestVarsDebugPanel',
    'debug_toolbar.panels.template.TemplateDebugPanel',
    'debug_toolbar.panels.sql.SQLDebugPanel',
    'debug_toolbar.panels.signals.SignalDebugPanel',
    'debug_toolbar.panels.logger.LoggingPanel',
)

def custom_show_toolbar(request):
    return True # Always show toolbar, for example purposes only.

DEBUG_TOOLBAR_CONFIG = {
    'INTERCEPT_REDIRECTS': False,
    'SHOW_TOOLBAR_CALLBACK': custom_show_toolbar,
    #'EXTRA_SIGNALS': ['myproject.signals.MySignal'],
    'HIDE_DJANGO_SQL': False,
}

3.確認
サーバ立ち上げて、管理画面を表示してみる。
右側に黒いメニューバーが表示されていれば成功。

(Firefoxはうまく表示されたが、IEだと表示バグがあった。。)

○pylint
コーディング中に構文エラーを発見したい人向け。
自分が使っているエディタはVIMを使っているので、
VIM環境で楽に使えるように設定まで行ってみた。

1.インストール
 easy_install pylint

2.VIM環境設定
 http://www.vim.org/scripts/script.php?script_id=891
 pylint.vimの最新版をダウンロードして、
 Vimフォルダのruntime/plugin/
 にコピーする。

参考ページ
http://www.hexacosa.net/blog/detail/54/

2011年6月1日水曜日

pythonでタグジャンプを使う

VIMでPythonをいじってるとき、タグジャンプできたらいいなと思い、検索してみたら
ctagでPython用のタグ生成できる事を知った。

やりかたはいたって簡単

 :!ctags *.py

これだけで生成できる。しかし、これだけだと同一フォルダ内のソースしかジャンプできない。

サブフォルダにもジャンプしたいよって事で、

 :!crags -R ..

こうすることで一階層下からサブフォルダにアクセスできるようになるが、
プログラム中の「from ~import」命令分にもタグが貼られてうまくジャンプできないケースがあって
思ってるようないい結果にはならない。。

ということでpython\tools\Scripts\ptags.pyを少しいじって
再帰検索に対応したタグジャンプ作成モジュールを使うことにした。

使い方:
 python ptags.py [カレントディレクトリ]

例:
 python ptags.py ../


コメント部分がオリジナルでコメント下に書いた文が追加箇所。
def main():
 #args = sys.argv[1:]
 #for filename in args:
 #    treat_file(filename)
 #>>> 追加:再帰表現に対応 >>>
 xdir = os.walk(sys.argv[1])
 for xpath, dirs, files in xdir:
  for xfile in files:
   fname, ext = os.path.splitext(xfile)
   if '.py' == ext:
    filename = os.path.join(xpath, xfile)
    treat_file(filename)
 #<<< 追加:ここまで <<<

 if tags:
  fp = open('tags', 'w')
  tags.sort()
  for s in tags: fp.write(s)
 
 
これでC言語のタグジャンプと同じ動きになる。

オマケ
 vimrcの設定でCTRL+Eキーでタグファイル生成するマクロ。 ptagsのディレクトリ位置や、カレントディレクトリの設定は環境に合わせる必要あり。

  nnoremap :!python d:\TracLight\python\Tools\Scripts\ptags.py ../

参考URL :

 http://d.hatena.ne.jp/t2y-1979/20080904/1220458000

Androider