Railsのビューのrenderメソッドにはブロックが渡せるんですね
Railsで作っているウェブアプリの一部ページにサイドバーを載せたいなと思いました。それでいろいろ調べてたら、ビューのrenderメソッドにブロックが渡せることを知ったので、これを使うことにしました。
環境
- Ruby 1.9.2
- Ruby on Rails 3.0.3
- Haml 3.1.0.alpha.147
書き方
まずサイドバーをあらわす_sidebar.html.hamlを用意します。
_sidebar.html.haml
%aside = yield
そしてサイドバーを呼び出したいビュー(ここではsomething.html.haml)を以下のように書きます。
something.html.haml
%article %h1 Tシャツ = render :layout => 'sidebar' do %ul %li ハイテク %li NEO
something.html.hamlのページを開くとこんな感じのHTMLになります。
<article> <h1>Tシャツ</h1> </article> <aside> <ul> <li>ハイテク</li> <li>NEO</li> </ul> </aside>
ソースコードを見る限り、ブロックを渡すときは:partialではなく:layoutでないといけないみたいです。
jQueryでAjax on Kay framework
jQueryの$.ajax()から送ったデータをKayで受け取りレスポンスを返すまでのコードをメモしておきます。
index.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Top Page - jquery_ajax</title> </head> <body> <input type="text" id="data"> <input type="button" value="送信" id="submit"> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script> <script type="text/javascript"> $("#submit").click(function () { $.ajax({ type: "POST", url: "/send", data: {"data": $("#data").val()}, success: function (msg) { alert("success! : " + msg); } }); }); </script> </body> </html>
フォームとボタンを1つずつ用意して、ボタンが押されたらフォームに書いた内容をサーバに送るという内容です。今回はjQueryを使うためにGoogle Libraries APIを使っています。
urls.py
# -*- coding: utf-8 -*- from kay.routing import ( ViewGroup, Rule ) view_groups = [ ViewGroup( Rule('/', endpoint='index', view='jquery_ajax.views.index'), Rule('/send', endpoint='send', methods=['POST'], view='jquery_ajax.views.send'), ) ]
kay.routingのRuleクラスはWerkzeugのRuleクラスを継承しています。その__init__()にmethodsという引数があったので、それを2つ目のルールで使っています。ここでPOSTメソッドを使うということを書いておけば、Viewでrequest.method == 'POST'とかしなくて済むので、Viewがスッキリします。
views.py
# -*- coding: utf-8 -*- from werkzeug import Response from kay.utils import render_to_response def index(request): return render_to_response('jquery_ajax/index.html') def send(request): return Response(request.form['data'] + u'ゲソ')
$.ajax()で送ったデータはrequest.formに格納されています。このrequest.formはWerkzeugのCombinedMultiDictクラスのオブジェクトなので、辞書から要素を取り出すようにキーを指定すれば要素を取得できます。
これで「うまくいった」などとフォームに書いてボタンを押すと、「success! : うまくいったゲソ」とalertされます。
MacにPython, Distribute, virtualenv(, pip)をインストールしたよ
Pythonをインストールする
$ sudo port install python26 $ sudo port install python_select $ sudo python_select python26
Distributeをインストールする
Distribute is a fork of the Setuptools project.
http://packages.python.org/distribute
「エキスパートPythonプログラミング」を見るまで存在を知りませんでした><
$ curl -O http://python-distribute.org/distribute_setup.py $ sudo python distribute_setup.py
virtualenvをインストールする
virtualenv is a tool to create isolated Python environments.
http://virtualenv.openplans.org/
$ sudo easy_install virtualenv
pipはインストールされている
pip installs Python packages.
http://pip.openplans.org/
pipはvirtualenv環境で使えるようになっているので、自分でインストールする必要は(多分)ありません。
$ pip --version -bash: pip: command not found $ virtualenv ENV $ source ENV/bin/activate (ENV)$ pip --version pip 0.8.1 from /Users/bojovs/Desktop/ENV/lib/python2.6/site-packages/pip-0.8.1-py2.6.egg (python 2.6)
Aquamacsにauto-install.elをインストールする
環境
- Mac OS X 10.6.4
- Aquamacs 2.1
流れ
auto-install.elをダウンロードする
http://www.emacswiki.org/emacs/auto-install.el からダウンロードしてきます。今回は~/Desktop/にダウンロードしました。
auto-install.elをバイトコンパイルする
- Aquamacs上で M-x byte-compile-file RET
- "Byte compile file: "と出てくるので、そこにダウンロードしたauto-install.elを指定する
- auto-install.elがあるディレクトリにauto-install.elcが生成される
auto-install.elとauto-install.elcをload-path以下に移動する
~/Library/Preferences/Aquamacs Emacs/以下に移動させます。
$ mkdir ~/Library/Preferences/Aquamacs\ Emacs/auto-install $ cd ~/Desktop/ $ mv auto-install.el auto-install.elc ~/Library/Preferences/Aquamacs\ Emacs/auto-install/
Preferences.elに設定を施す
~/Library/Preferences/Aquamacs Emacs/Preferences.elに以下の設定を加えます。
;; (install-elisp-from-emacswiki "auto-install.el") (require 'auto-install) (setq auto-install-directory "~/Library/Preferences/Aquamacs Emacs/auto-install") (add-to-list 'load-path auto-install-directory) (auto-install-update-emacswiki-package-name t) (auto-install-compatibility-setup) (setq ediff-window-setup-function 'ediff-setup-windows-plain)
これでM-x install-elispなどが使えるようになっていればインストール成功です。
Preferences.elに加えた設定は http://www.amazon.co.jp/dp/4774143278 を参考にしました。
iptablesを使って80番ポート以外からのINPUTをDROPする方法@CentOS
以下の環境で動いているCentOS上で起動しているウェブサーバにアクセスしようとしたとき、アクセスできなかったのでメモ。問題はiptablesによるファイアーウォールのようでした(まだよくわかっていない)。
環境
- CentOS 5.3
- Mac OS X 10.5.7
- VMware Fusion 2.0.5
流れ
まずはiptablesファイルのバックアップを取っておく。
# cp /etc/sysconfig/iptables iptables.backup
おもむろにiptablesの中を見てみる。
# iptables -L (いろいろ出てくる)
既にいろいろ設定されているけど、これらの設定を残しておくとどうもうまくいかない。なので思い切って設定を全て消してしまいました(^o^)
(このコマンドで設定を全て消す) # iptables -F
次にINPUTチェーンとFORWARDチェーンへのパケットをDROPする。
# iptables -P INPUT DROP # iptables -P FORWARD DROP # iptables -P OUTPUT ACCEPT
OUTPUTチェーンについてはACCEPTでも良いみたい。
そしてINPUTチェーンに80番ポートからのパケットの受け入れを許可するようにする。
# iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
これでINPUTチェーンは80番ポートからのパケット受信のみを許可するようになる。必要に応じてSSHからの通信を許可したりする。
最後にiptablesへの変更を保存、iptablesの再起動をする。
# service iptables save # service iptables restart
おしまい。
iptablesは奥が深いらしいので、そのうち勉強する。
Firefoxのアドオン&Greasemonkeyスクリプトのまとめ (2009/06/04)
- Add to Search Bar 1.8
- AutoPager 0.5.1.3
- bbs2chreader 0.4.18
- Context Search 0.4.3
- Download Statusbar 0.9.6.5
- Firebug 1.3.3
- FireMobileSimulator 1.1.7
- Google Gears 0.5.21.0
- Google Toolbar for Firefox 5.0.20090122Mb2
- Greasemonkey 0.8.20090123.1
- Greasemonkeyスクリプト
- Remember The Milk - display keyboard shortcuts
- GR+?B
- Google Reader Prefetch More
- Greasemonkeyスクリプト
- Hatena Bookmark 1.1.5
- Live HTTP headers 0.14
- Menu Editor 1.2.6
- Omnibar 0.5.3
- Read it Later 0.9945
- SBMカウンタ 0.4.2
- 公式ページが消えてる…?orz
- Smart Bookmarks Bar 1.4.3
- SQLite Optimizer 0.2
- Tab Mix Plus 0.3.7.3
- Tombloo 0.4
- Wescript 0.0.29
- Xmarks 3.1.0
Mac & EclipseでAndroidの開発環境を整える
行程
Eclipseをダウンロードする
http://www.eclipse.org/downloads/から「Eclipse IDE for Java Developers」をダウンロードする。
Android SDKをダウンロードする
http://developer.android.com/sdk/からダウンロードする。
Android SDKをインストールする
ダウンロードしたzipファイルを解凍後、適当な名前にリネームしてアプリケーションディレクトリに移動します(ディレクトリはどこでも良いと思うけど、僕はここにしました)。
そして.bash_profileを以下のように編集します。
$ vim ~/.bash_profile export PATH=/Applications/android_sdk/1.5_r1/tools:$PATH
ADT (Android Development Tools)をEclipseにインストールする
- Eclipse起動
- 「Help」→「Software Updates...」
- 「Available Software」
- 「Add Site...」
- 「Location」に以下のURLを入力
https://dl-ssl.google.com/android/eclipse/
おしまい
そういえばEclipseを日本語化してない…。ま、いいか(^^;)