ラベル osx の投稿を表示しています。 すべての投稿を表示
ラベル osx の投稿を表示しています。 すべての投稿を表示

2010年4月29日木曜日

OSXのApache2でDjangoをデプロイするには



Snow Leopard付属のApacheでDjangoを動かしてみたのでまとめておこうと思います。


CGIだとやたら遅いのでFastCGIを使うことにします。


Apache で FastCGI を扱うモジュールのうち、今回は mod_fcgid を試してみました。


mod_fcgid をインストール


http://httpd.apache.org/mod_fcgid/ に svn レポジトリのURLがあるのでそこからダウンロードします。



% svn checkout http://svn.apache.org/repos/asf/httpd/mod_fcgid/trunk mod_fcgid
% cd mod_fcgid
% ./configure.apxs
% make
% sudo make install


flup をインストール



% wget http://www.saddi.com/software/flup/dist/flup-1.0.2.tar.gz
% tar zxvf flup-1.0.2.tar.gz
% cd flup-1.0.2
% python setup.py build
% sudo python setup.py install


Apache で mod_fcgid を使えるように設定


/etc/apache2/httpd.conf に


LoadModule fcgid_module libexec/apache2/mod_fcgid.so


を記述


Django のプロジェクトを移動


今回は /Library/WebServer 以下に置きました。


ディレクトリ名は django です。


fcgid.conf を設定


fcgid_module 用の設定を記述。場所は /etc/apache2/other/fcgid.conf です。



<IfModule fcgid_module>
AddHandler fcgid-script .fcgi
SocketPath /tmp/fcgidsock
SharememPath /tmp/fcgidshm
IPCCommTimeout 40
IPCConnectTimeout 10
</IfModule>


django.conf を設定


django 用の設定を記述。場所は同じく /etc/apache2/other/django.conf



Alias /django/ "/Library/WebServer/django/"
Alias /django "/Library/WebServer/django/"
<Directory /Library/WebServer/django/>
Options +ExecCGI +FollowSymLinks
AllowOverride all
Order allow,deny
Allow from all
</Directory>


.htaccess を設定


/Library/WebServer/django 内に .htaccess を用意します。



AddHandler fcgid-script .fcgi
RewriteEngine On
RewriteBase /django/
RewriteRule ^(media/.*)$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(dispatch\.fcgi/.*)$ - [L]
RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]


dispatch.fcgi を用意


自分の場合は MacPorts でインストールした python を使うように設定してますが、


その辺りは適宜読み替えてください。



#!/opt/local/bin/python
import sys
import os
sys.path.insert(0, '/Library/WebServer')
os.environ['DJANGO_SETTINGS_MODULE'] = 'django.settings'
os.environ['PYTHON_EGG_CACHE'] = '/tmp'
os.environ['PYTHON_PATH'] = '/opt/local/lib/python2.6/site-packages'
from django.core.servers.fastcgi import runfastcgi
runfastcgi(method='threaded', daemonize='false')


以上の設定が終わった後にWebサーバを再起動して、


http://localhost/django/ で動いてるのを確認しました。


ちなみに、fcgid 入れた当初はアクセスするとなぜか apache が落ちるという症状が出てました。


調べてみて http://ktjx.blogspot.com/2008/02/mac-os-x-php5-apache2-modfcgid.html を参考に解決。





で、ここまで設定した後で settings.py で DEBUG = False にするのを忘れていました。


伴って必要な設定をもう一つ済ませておきます。


静的なファイル(テンプレート、CSS、画像など)の設定


Django はこれらのファイルを提供しないらしいです。 http://djangoproject.jp/doc/ja/1.0/howto/static-files.html


ただし、DEBUG = True の場合は例外です。よって、DEBUG = False にする場合はなにかしら設定をする


必要があります。


今回は、django/templates に静的なファイルをまとめてしまうことにしました。


で、/Library/WebServer/other/django.conf に一行書き加えます。


django 用の設定を記述



Alias /django/ "/Library/WebServer/django/"
Alias /django "/Library/WebServer/django/"
Alias /django/media "/Library/WebServer/django/templates" # <- 追加
<Directory /Library/WebServer/django/>
Options +ExecCGI +FollowSymLinks
AllowOverride all
Order allow,deny
Allow from all
</Directory>


これで DEBUG = True にしても問題なく動作しました。





2008年11月19日水曜日

QSTwitterの設定



TwitterPodのQuickPost(F7でポスト用ウィンドウを表示)はえらく便利だったんだけど、Twootに移行したので代替案を探してみた。調べてみたところ、QuickSilverからTwitterに投稿できるようにするQSTwitterとやらが良さげだったので設定してみた。


が、mootoh.log - QSTwitter 1.4を読んでて一つだけわからなかったのが「ターゲットをブランクにする」というもの。


Triggerを設定しようとすると、Actionにreply that...を設定した時点でTargetが勝手にテキストモードになってしまう。結局使えねーじゃねーかって感じだったのだが、QSTwitterの英語版ページ(改めて探そうとしたら見つからない…)にその方法が書かれてた。「ターゲットを選択した状態でコマンド + X」。これで、ターゲット部分がブランクになる。テキストを入力する状態だとコマンド + Xが効かないので、一旦アクションを選択してから改めてターゲットを選択するとうまくいく、はず。





2008年11月17日月曜日

TwootとGrowlの連携



元々TwitterPodを使ってた身としては、Growl通知はどうしても欲しい。


ということで、TwootをGrowl対応させることにした。


で、ググってみた結果以下の事がわかった。



  • Growlには各種プログラミング言語用のバインディングが存在している

  • Growlはネットワーク経由での連携が可能

  • JavaScript -> CGI -> Growl とすることでJavaScriptからでもGrowlを呼び出せる


というわけで、TwootをGrowl対応させることは可能。


まずは以下の記事を参考にしてGrowlを呼び出すCGIを書いてみた。


Big Sky :: Growl for Windowsを試してみた


Growl用WebAPI提供サーバ - Okiraku Programming



#!/opt/local/bin/perl
use lib '/opt/local/lib/perl5/5.8.8';
use lib '/opt/local/lib/perl5/vendor_perl/5.8.8';
use strict;
use warnings;
use Net::Growl;
use utf8;
use CGI;
use Encode;
my $q = new CGI;

my $name = "Message via Web API";
my $title = $q->param("title");
my $msg = $q->param("msg");

register(host => 'localhost',
application =>"Twoot",
password=>"sm05ofgd", );

notify(
application => "Twoot",
title => decode_utf8($title),
description => decode_utf8($msg),
priority => 2,
sticky => 'True',
password => "growl's password",
);

print "Content-type: text/javascript\n\n\"OK\";";


これを/Users/username/Sites 辺りに保存しておく。


もちろんapacheの設定等も必要だけどそこら辺は割愛。


で、次にTwootからこのCGIを呼び出す部分。


twoot.jsの20行目あたりに以下の記述を追加



if($("#msg-" + item.id).length == 0) { // <- fix for twitter caching which sometimes have problems with the "since" parameter
$.get("http://localhost/~username/growl.cgi", { title: item.user.name, msg: item.text}); // <- これを追加
list.prepend('<li id="msg-' + item.id + '"><img class="profile_image" src="' + item.user.profile_image_url + '" alt="' + item.user.name + '" /><span class="time" title="' + item.created_at + '">' + relative_time(item.created_at) + '</span> <a class="user" href="javascript:addAddress(\'' + item.user.screen_name + '\')">' + item.user.screen_name + '</a><div class="tweet_text">' + item.text.replace(/(\w+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+)/g, '<a href="$1">$1</a>').replace(/[\@]+([A-Za-z0-9-_]+)/g, '<a href="http://twitter.com/$1">@$1</a>').replace(/[&#60;]+[3]/g, "<tt class='heart'>&#x2665;</tt>") + '</div></li>');


最後にGrowl自体の設定。


システム環境設定 -> Growl -> ネットワークと進んで、「受信される通知を聞く」と「リモートアプリケーション登録を許可」にチェックを入れてパスワードを入力。さっきのPerlのソースコード中の「growl's password」はこれと対応している。


これでTwootとGrowlの連携は完了。


























で、ここまで書き終わってTwootの最新版をチェックしてみたところ、なんとGrowl対応がされていた…。まあ、いいや。





2008年11月15日土曜日

Twootを使ってみた



これまではTwitterクライアントとしてTwitterPodを使ってたけど、特定の人のアイコンが表示されなかったりたまに暴走したりするのでTwootというクライアントを使うことにした。


Building your own Twitter client with Fluid and jQuery - Peter Krantz


Twootは純粋なデスクトップアプリじゃなくて、Fluidというアプリを利用してTwitterのクライアントを簡単に作ってしまおう、というもの。Fluid自体はGMailとかのWebアプリをデスクトップアプリのような感覚で使えるようにしてくれるアプリ。


というわけで、Twootのインストール方法を以下に書いておく。単なるリンク先の訳ですよ。



  1. Fluidをインストールする
  2. twootというディレクトリをどっかに作る。ホームディレクトリとか?
  3. twoot用のファイルをダウンロードしてさっき作ったtwootディレクトリに保存。
  4. Fluidを起動する。すると「URLを入力して」みたいなウィンドウが出てくるのでさっき保存したtwoot.htmを指定する。
    ホームディレクトリにtwootディレクトリを作った場合だとfile:///Users/user/twoot/twoot.htmみたいな。
  5. 設定を保存する。


これでTwootがアプリケーションとして保存されてるはず。後はCSSを書き換えたりして自分好みに修正していけばok。


自分の場合はこれをGrowlと連携させたりしてるのだけど、それについては次書くことにする。





2008年5月14日水曜日

MeCabのRubyバインディングをOSXにインストール

MacPortだと比較的楽に入れられたのでメモ。


% sudo port install rb-mecab +universal
% sudo port install mecab-ipadic-utf8


で、/opt/local/etc/mecabrcを修正


## 追加
dicdir = /opt/local/lib/mecab/dic/ipadic-utf8


これで、utf8で文字化けせずに使えるようになる。

OSXでFirefox3 RC1を使う

RC1が使えるようになったよ!ということでダウンロードしようとしたのだけど、osx版はどっから落とせばいいのかよくわからんかった。
が、OSXに最適化されたFirefoxを配布されてる方がRC1も公開されてた。
http://fox.lazycat.info/archives/8

とりあえずしばらく使って様子を見てみる。

2008年5月1日木曜日

Firefox3用のdel.icio.us Bookmarks

del.icio.usのサイトを見てると、ページ右上に「Beta del.icio.us extension for Firefox 3 now avaliable!」という文字が。

del.icio.us公式Firefox拡張のdel.icio.us BookmarksがFirefox3に対応した、ということらしい。
まだBeta releaseだから不具合あるかもよ、ということらしいんだけどかまわずインストールしてみた。

で、新機能の一つ「Quick Jump」がいい感じ。

F2で表示されるウィンドウにタグを入力すると、こんな感じのウィンドウが表示される。


タグを入力することで関連したポストが表示される。
複数タグでの絞り込みにも対応してる。
従来からあるサイドバーの検索もいいけど、何か気になったときに簡単に検索できるこのインターフェースもかなり便利っぽい。
問題は、Firefox3自体がまだまだ不安定だってことだけど。

2008年4月30日水曜日

osxで蔵書管理

osxで蔵書管理をしたい、ということで色々とアプリを探してみた。


  • Delicious Library
    http://www.delicious-monster.com/
    iSightでバーコードを読み込んで書籍情報を自動的に取得してくれる。
    本だけでなくDVDなんかも管理できる。
    リスト表示じゃなくて表紙が並んで表示されるのがいい感じ。

    わざわざ名前とか打ち込まなくてもさくさく読み込めて非常に便利なんだけど、40ドル…。
    というわけで、フリーの代替アプリを探すことにした。

  • Booxter
    http://www.deepprose.com/
    iSightでバーコードを読み込んで書籍情報を自動的に取得してくれる…らしい。
    どうやって読み込むのかよくわからなかったのでスルー。
    ついでに、フリーだと思ってたらSharewareらしいことが発覚したので終了。

  • Books
    http://books.aetherial.net/wordpress/
    iSightでバーコードを読み込んで書籍情報を自動的に取得してくれる(三回目)。
    Delicious Libraryのように表紙を並べて表示できる。
    かつDonationware。
    唯一の難点としては、Delicious Libraryに比べてバーコードの読み取りに時間がかかること。
    が、そんな贅沢は言ってられないのでありがたく使わせていただくことにした。


こうやって自分の持ってる本を眺めてみると、予想以上に自分が本を読んでないことに気づく…。
もっと読書しよう。

2008年4月28日月曜日

ブックマークレットでポップアップウィンドウを開くには on Safari & Firefox

del.icio.usとかFemoとか、ブックマークレットでポップアップウィンドウを開いて更新したいのだけれど、サービスが提供してるブックマークレットだと上手く動かなかったりする。

ブラウザが変わると動かなかったりとか。
そこで、SafariとFirefoxで使えるようなブックマークレットを作ってみた。
とりあえずdel.icio.usとlivedoor clipのやつを。

Safari
「ポップアップウィンドウを開かない」にチェックを入れててもちゃんと動くはず。

del.icio.us

javascript:window.open('http://del.icio.us/post?v=4&url='
+escape(location.href)+'&title='+escape(document.title),
%20'_blank',%20'width=700,height=600,resizable=1,scrollbars=1');


livedoor clip

javascript:window.open('http://clip.livedoor.com/clip/add?link='
+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),
%20'_blank',%20'width=700,height=600,resizable=1,scrollbars=1');


Firefox
上手くいかない場合、拡張か何かの設定でJavaScriptによるポップアップを防がれてる可能性がある。
自分の場合は、Tab Mix Plusの設定でJavaScriptポップアップの設定 -> サイズ指定されたポップアップを許可にすると
ちゃんと動いた。

del.icio.us

javascript:var a=function(){window.open('http://del.icio.us/post?v=4&url='
+escape(location.href)+'&title='+escape(document.title),
%20'_blank',%20'width=700,height=600,resizable=1,scrollbars=1')};setTimeout(a,0);void(0);


livedoor clip

javascript:var a=function(){window.open('http://clip.livedoor.com/clip/add?link='
+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),
%20'_blank',%20'width=700,height=600,resizable=1,scrollbars=1')};setTimeout(a,0);void(0);


他のWebアプリでも、'http〜'の部分を置き換えれば上手くいく、はず。
上に書いてないやつだとFemoとか、1470.netでも上手くいった。

EvernoteとTaskpaperでタスク管理

Taskpaperでタスクを管理するにあたって、Evernoteを使うことにした。
http://evernote.com/

タスク管理というか、完了済みのタスクを新規メモとして保存する、って感じの使い方。
メモの名前は日付。「08/4/28」みたいな。
完了済みだったら編集することはないし、Evernoteのインターフェースで一括して検索できるので便利かなーと。

2008年4月27日日曜日

todo管理ツールをいろいろ使ってみた

今までそこら辺の紙にメモったり、スティッキーズにメモったりしてたtodoをもっとちゃんと管理したい!
課題提出直前で焦るのはやだ!ってことで、Webアプリやら何やらを試してみた。

Remember The Milk
http://www.rememberthemilk.com/
一時期そこかしこで紹介されてたような。

Dashboard widgetから参照できるのはうれしいけど、できれば編集もさせてほしかった…。
Webインターフェースは微妙に使いづらいと感じた。
常に一覧表示させたいけどよくわからんかった。

check*pad
http://www.checkpad.jp/
百式の中の人が運営しているWebアプリ。

Remember The Milkと比べると非常にシンプル。
こっちは「後からこれやっとこ」とか、ちょっとしたことをメモっておくのに便利そうだと感じた。

Todoist
http://todoist.com/
ぱっと見はRemember The Milkと似た感じ?

このサービスで気に入ったのは、タスクの階層化ができるってところ。
タスクを細かく分けて管理できるのがありがたい。
あと、Dashboard widgetからタスクの編集ができるのもうれしい。
タスク作成までのステップ数は短いにこしたことないので。

Taskpaper
http://hogbaysoftware.com/products/taskpaper
これまでの3つと違って、こいつはデスクトップアプリケーション。
テキストファイルを編集する感じでさくさくタスクを追加していける。
期日を管理するような使い方は難しいけど、ちょっとしたタスクをメモするには最適な感じ。


実際の使い方
色々試してみて、期日を伴うタスクにはTodoist、そうじゃないタスクにはTaskpaperを使うことにした。
Taskpaperの方は[毎日やること][今日やること][後でやること]みたいな感じでざっくり分けて、
思いついたタスクを追加してく感じ。たとえば「Todoistを使ってみる」とか。

ただ、Taskpaperの方はタスクを実行済みにしても画面上から消えないので、定期的に整理する必要がある。
そこら辺の整理とかの話はまた次に書く予定。