Ruby 2.0 + Sinatra + Thin を Windows サービス化してみた

簡単な Web アプリを Ruby + Sinatra で作って、それを Windows サービス化しようとしたらすごくハマったのでメモしておく。 最終的には Thin を使って Winsw で Windows サービス化した。 リポジトリは https://github.com/toruuetani/SinatraThinService ※…

Chef SoloでTracLightningぽい環境を構築してみた

Chefが面白そうなのでいろいろやってみた結果、TracLightning+hglightぽい環境を構築できるようになったのでまとめを書いてみることにした。TracLightningと違うのはSubversion/MavenがないとかTracプラグインが最小限しかないくらいかな。動作確認は次の環…

Chef Solo で invalid byte sequence in Windows-31J / invalid byte sequence in UTF8 に遭遇したときの対処をいくつか

OS は Windows 7 SP1, Windows Server 2008 R2 Chef は Fast Start Guide for Windows - Chef - Opscode Open Source Wiki からダウンロード => chef-client-11.4.0-1.windows.msi Chef リポジトリは ここ Chef-solo に同梱されている Ruby は 1.9.3p286 な…

Chef-soloでプロキシ設定の切り替え

OS は Windows 7 SP1, Windows Server 2008 R2 Chef は Fast Start Guide for Windows - Chef - Opscode Open Source Wiki からダウンロード => chef-client-11.4.0-1.windows.msi Chef リポジトリは ここ 今までサーバー設定なんかは Fabric でいろいろやっ…

SourceTree for Windows で使われているWPFライブラリ

Free Mercurial and Git Client for Windows and Mac | Atlassian SourceTreeをダウンロードしてみたら、全然知らないWPFライブラリが使われてるので、備忘録を兼ねてメモ。 WPF Converters - Home コンバーター ScrollableTabPanel スクロール、クローズ可…

64bit Windows が本格的に普及する前にネイティブ DLL を P/Invoke する .NET アプリがやっておくべきこと

以前からいろいろ調べたり質問したりしてた、ネイティブ DLL を P/Invoke する .NET アプリを 64bit Windows でも動作させる方法がようやく納得できる形で見つかったので、備忘録を兼ねてメモしておく。P/Invoke したいネイティブDLL x86用DLLとx64用DLLが用…

コマンドラインから ASP.NET4 を有効化する

最近いろいろ試してみたのでメモ。基本的に Windows 7 SP1 でしか動作確認してない。 以下の操作はすべて管理者権限で実行すること。 IISとASP.NETの有効化 Windows コンポーネントなので ocsetup かと思ったが、 DISM コマンドでいけた。ただし DISM コマン…

InnoSetupで作成したインストーラのバージョンについて

issで定義した値がどこに反映されるのか、いまいち分かりにくいのでメモ。ミニマムな構成でこんな感じに定義したとして、 AppVersionはインストーラの初期画面と、アプリケーションの追加と削除に反映される。 ちなみに AppVerName を指定するとそちらが優先…

経路列挙モデルで階層構造

SQL

参考URL: SQLで木と階層構造のデータを扱う(2)―― 経路列挙モデル ちょっと仕事で階層構造を持つテーブルをリファクタリングしたくなったので、いろいろ調べてみたところ経路列挙モデルが便利そうなので試してみた。試してみたDBはSQL Server 2008 R2。ま…

これの続き。 参考URL : http://mercurial.selenic.com/wiki/SubrepositoryMercurial 2.0 ( TortoiseHg 2.2 ) で仕様が変わったらしく、以前の方法だとうまくいかない。 [subpaths] subrepo_name = https://bitbucket.org/toruuetani/virtualenv-scaffoldた…

py2exeでハマったことの解決法

環境は Windows + Python 2.7.2 + virtualenv 1.7 UAC で管理者権限を要求する # -*- encoding: utf-8 -*- from distutils.core import setup import py2exe #python setup.py py2exe するために必要 setup( console = [{'script' : 'hoge.py', 'uac_info' :…

TortoiseHg 2.x 入門記事にMercurialコマンドリファレンス追記

最近書いてる TortoiseHg 入門記事に、Mercurialのコマンドリファレンスを追記した。 Windows+TortoiseHg 2.x で始めるMercurial今回改めて Mercurial コマンドのヘルプを調べてみたけど、ほとんどオプションは使ってない。このあたりが Git との違いなんだ…

Sphinxドキュメントにソーシャルボタンを設置して、bitbucketに公開してみた

結果はこれ → http://toruuetani.bitbucket.org リポジトリはこれ → https://bitbucket.org/toruuetani/toruuetani.bitbucket.org ソーシャルボタンの設置 参考URL 今日のPython: Sphinx にソーシャルボタンを設置する はてなブックマークボタンの作成・設置…

TortoiseHg 2.x 入門記事にMercurial採用理由追記

以前書いてた TortoiseHg 入門記事を Ver.2.2 ベースで書きなおした記事に、なぜMercurialを採用するのか追記した。 Windows+TortoiseHg 2.x で始めるMercurialある程度分量があってはてなでは書きにくいことと、最近ドキュメントはSphinxで書いたほうが書…

Windows, Apache, mod_python な環境で virtualenv 上の django を動かしてみた

環境構築に使ったリポジトリはここ https://bitbucket.org/toruuetani/virtualenv-modpython-test基本的にはここのまま。 http://mydjangoblog.com/2009/03/30/django-mod_python-and-virtualenv/ なぜ必要か Pythonはsite-packages以下にすべてのライブラリ…

Windows7のVHD bootとDisk2vhdで快適環境構築=>挫折した・・・

Windows7になってかなり快適になったけども、使い続けるといろいろ問題が出てくることが多い。特にVisual Studioとか開発環境を複数入れたり、再インストールしたりするとよく問題が起こる。つい最近もVisual Studio 2008にWindows Mobile 6.5.3の開発環境を…

GUIテストフレームワークwhiteがすごい

http://white.codeplex.com/たとえばこんなWindowsアプリがあったとして、 namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e)…

subpathsを使ったリポジトリをcloneする方法

2012/01/25 追記 Mercurial 2.0 以降は これ を参照 subrepoを使わない場合とか、subrepoを使ってもsubpathsを使ってない場合なら、リポジトリは普通にcloneできる。ただしsubrepoかつsubpathsを使っていると、普通にcloneすると失敗する。何故かというと、s…

subrepoをさらに便利に使うためにはsubpathsを使おう

2012/01/25 追記 Mercurial 2.0 以降は これ を参照 これの続き。subrepoは確かに便利なんだけども、あるシチュエーションでは使いにくいことになる。 サーバの名前が変更されたとき 場所によってpushする先が違うとき(滅多にないだろうけど) 例えば、ある…

subrepoを試してみた

前から気になってた、Mercurialのsubrepoの使い方がなんとなくわかったのでメモ。 何がうれしいのか 別管理のリポジトリを一緒に扱える。具体的には、共通ライブラリは別のリポジトリで管理しつつ、それを利用するアプリのリポジトリの下に共通ライブラリの…

TortoiseHg2.0

PyQtにポーティングしたTortoiseHgがついに出た。 Workbench(以前のログビューア)からシームレスにコミットできる。 今までなかったのが不思議なリポジトリビューアも追加 あと地味に便利なのが、エクスプローラとかコマンドプロンプトも開ける。

Windows+TortoiseHgで始めるMercurial(hgコマンドをTortoiseHgで)

この記事は1.1.xを基準にしていて古いので、2.x対応版に書きなおした。 設定 => 2.x版はこちら hgコマンドをTortoiseHgで => 2.x版はこちら ブランチ・リポジトリ間の連携 => 2.x版はこちら 間違えたときのやり直し => 2.x版はこちら bitbucketの使い方(あ…

Windows+TortoiseHgで始めるMercurial(設定編)

ちょっとMercurialのHowToを書く必要が出てきたので書いてみる。この記事は1.1.xを基準にしていて古いので、2.x対応版に書きなおした。 設定 => 2.x版はこちら hgコマンドをTortoiseHgで => 2.x版はこちら ブランチ・リポジトリ間の連携 => 2.x版はこちら 間…

django.db.transaction.commit_on_successデコレータの挙動はいまいち

ちょっとハマったのでメモしておく。commit_on_successデコレータは、その名の通り関数が成功したらコミットする。その関数の開始時にトランザクションを開始したりはしない。既存のコネクションがあればそれを利用する。したがって、commit_on_successデコ…

MacBook Air 11インチ欲しい!

hglightをTracLightning 3.0に対応してみた。

自己流でTracMercurialをセットアップするのも面倒なので、hglightをforkしてTracLightning 3.0に対応してみた。こちらからどうぞ。インストール手順とかは本家と同じです。 本家 https://bitbucket.org/akihirox/hglight/wiki/ fork https://bitbucket.org/…

bitbucketの使い方メモ

基本的なこと、サインインとかpush/pull/forkは大抵書いてあるけど、forkしてから先の事とかを書いてるサイトが見つからなかったので、メモしておく。 fork元の変更をpullする。 bitbucket上でやるのかと思ってたけど、違うみたい。まずはforkしたリポジトリ…

どっかに分散バージョン管理に対応したITSはないものか

ITS

最近はTrac&Mercurialで開発管理して、さらにSphinxにも手を出し始めたんだけども、いまいち使いにくい。理由は主にTracが分散バージョン管理に対応してないから。リポジトリを複数に分けて管理したいけど、対応してないから一つしか使えない。おまけにリボ…

Sphinx&Graphvizで日本語を含むグラフを出力する方法

※ 環境は以前(id:re_guzy:20101012)と同じ http://sphinx-users.jp/doc10/ext/graphviz.html 基本的にはドキュメントを見ればOKだが、日本語を記述すると文字化けするので、その回避策をメモしておく。まずはconf.pyでgraphviz拡張を有効にする。 # conf.p…

Windows環境でSphinxを使って日本語PDFを作成するメモ

参考URL http://sphinx-users.jp/gettingstarted/install_windows.html http://sphinx-users.jp/cookbook/pdf/rst2pdf.html 前提条件 easy_installで依存ライブラリもインストールされるはず。今回試したのは以下のバージョン。 python 2.6.6 docutils 0.7 j…

py2exeで生成するexeの名前を指定する方法

いくら検索してもpy2exeで生成するexeの名前を指定する方法が見つからなかったのでメモしておく。 キーになるのは「dest_base」。生成するexeの種類によって指定の仕方が異なるので注意。 # -*- encoding: utf-8 -*- from distutils.core import setup py2ex…

インストールしないでPython2.6を動かしてみた

ずいぶん前にした質問を自己解決できそうなので、その手順をメモしておく。 使ったのはPython2.6.6+Windows7。コピーして試してみたのはWindowsXP。 Python2.6.6のインストール まずはネタ元のPythonをインストール。重要なのは「Install just for me」。こ…

System.Windows.Forms.Button.PerformClickのWPF版

(new ButtonAutomationPeer(button).GetPattern(PatternInterface.Invoke) as IInvokeProvider).Invoke();

EnumをComboBoxに表示する。

アセンブリHogeAsmに含まれるEnum、HogeEnumをComboBoxに表示。

TracLightningでMercurialを使ってみた

サーバリプレースのついでに、自己流でセットアップしたTrac0.10からTracLightning2.3.2に移行してみた。ついでにTracをmod_wsgiで動かしてみたり、Mercurialと連携させてみたり、チケットの自動クローズとかできるようにしてみたのでメモしておく。環境はこ…

FormWizardを使いこなすための注意点

環境はPython2.5+Django1.0.3trunkをみてもdjango/contrib/formtools/wizard.pyの最終更新はr8679なので、Django1.1でも同じかな。 問題点 基本的な使い方はドキュメントにあるとおりだが、おそらく実際には使えない。問題は3つ。 FormWizardのextra_conte…

既存モデルを拡張する

Python2.5 + Django1.0.2で動作確認ずみ。Djangoで既存モデルを拡張したい場合、アプローチは2つある。 マルチテーブル継承を使う。 ForeignKeyで既存モデルを参照する。 マルチテーブル継承を使う 前者のマルチテーブル継承は、Django1.0からの機能でかな…

管理サイト外で日付選択ウィジェットを使う

管理サイトの日付選択ウィジェットを、管理サイト外で使いたいって要望は結構あるんじゃないかな。まずはurls.pyでjsi18nへのマッピングを追加しておく。これがないと、テンプレートでadmin/jsi18nを参照しないといけない。ただしadmin配下なので、スタッフ…

インライン編集するモデルの削除チェックボックスを非表示にする。

http://groups.google.com/group/django-users/browse_thread/thread/631fbc97b54f023e/16b6a85f1a4b5c94?lnk=raot&pli=1同じことを考える人はいるもんだ。とりあえず解決法としては、django.forms.models.BaseInlineFormSetのサブクラスをdjango.contrib.ad…

newformsでUserProfileをインライン編集する(1.0対応)

admin.site.unregisterで、既存のUserAdminからカスタムしたUserAdminのサブクラスに入れ替えてやればいい。当然ながら、UserAdminのサブクラスは普通のModelAdminと同じようにカスタマイズできる。 # -*- encoding: utf-8 -*- from django.contrib import a…

django.forms.ModelChoiceFieldをカスタマイズ

newformsは奥が深い。(1.0final前提。1.0rc1だとうまく動かない)たとえば、django.contrib.auth.models.Userを拡張するこんなモデルがあったとして。(user.get_profile() で UserProfile が取れるように設定しておく) class Department(models.Model): name…

Django 1.0beta1で作ったアプリを1.0rc1で動かすためにやったこと。

1.0rc1リリース記念。 saveメソッドのシグネチャ変更 http://docs.djangoproject.com/en/dev/ref/models/instances/#saving-objects beta1からrc1にアップデートしたら、軒並みテストに失敗したので焦った。force_insert と force_update が追加された。なの…

Django 0.97preで作ったアプリを 1.0beta1 で動かすためにやったこと

互換性の無い変更はここらへんを参考に。 http://code.djangoproject.com/wiki/BackwardsIncompatibleChanges newforms-admin のマージ http://code.djangoproject.com/wiki/BackwardsIncompatibleChanges#Mergednewforms-adminintotrunk http://www.djangop…

PythonでSNMPを扱うためのメモ

SNMP SETを送信したかったんだけど、ろくに情報がないのでメモしておく。 Python SNMP frameworkとりあえずこれがメジャーなのかな? TwistedSNMP, PySNMP-SEこれはよくわからない。Twistedのサブプロジェクト?TwistedSNMPにはPySNMPまたはPySNMP-SEが必要…

Djangoアプリ用setupスクリプト

Djangoアプリを複数のWinマシンにインストールする必要に駆られて試行錯誤していたら、なんとなく形になったのでメモしておく。 20080410追記 国際化用ファイルの考慮が漏れていたので修正した。 setup.py # -*- encoding: utf-8 -*- from distutils.core im…

Windowsサービスでlog4netを使うための覚え書き

最近作っていたWindowsアプリをWindowsサービスに作り替えてみたら、log4netで出力していたイベントログが出力されなくなってしまった。最初は権限関係だろうと思っていろいろ試してみたがさっぱり解決できなくて、1週間くらい無駄にしてしまった。 原因は…

Ext JS 2.0 の GridPanel に動的に行追加してみる

どうも jQuery でがんばってUIを構築するのに疲れたので、デブサミで知った Ext JS に浮気してみた。確かにUI構築はかなり楽になるけど、いかんせん日本語の情報が少ない。本家のAPIドキュメントでも肝心の引数がobjectとしか書かれてなくて、いろいろ試行錯…

Django の管理サイトに、下書き機能を付けられないか考え中

Gmail の下書きとか、はてなのバックアップみたいなやつ。できたら便利だと思う。Webアプリケーションを操作していて最も恐ろしいのは、長文を書いている最中に何らかのアクシデントが起きて、入力した長文が消えることだろう。もう一度同じ文章を書く気力が…

django - javascript 間を JSON でやりとりする

ちょっと必要にかられたのでやってみたら、思ったより手間取ったのでメモしておく。 手間取った理由その1 0.97pre-SVN-6883 だと、django.utils.simplejson でモデルオブジェクトを JSON にできなくなってる。0.96のころはできたように思うんだけど。unicod…

django で論理削除を実現してみる

イベント系のデータならともかく、リソース系のデータの論理削除というのは結構需要が多そうな気がするけど、あまり触れられてないのはなんでだろうか?すでに Django Snippets とかにあるような気もするけど、なかなかいいアイデアが浮かんだのでメモしてお…