ブログのお引っ越しのお知らせです
バリバリ日記2
http://rimpei.org/blog/
連休中に Symfony2 を調べるついでにサンプルとしてブログっぽいものを作ってみたので、その勢いでドメイン取ったりさくらのVPS借りたりして引越しすることにしました。
MacPorts でありがちなこと
% sudo port install postgresql84-server
...
% psql
zsh: command not found: psql
PATH 通ってねえ!!!
/opt/local/lib/postgresql84/bin にいつもの皆様が揃っておられました。
% ls /opt/local/lib/postgresql84/bin clusterdb dropdb initdb pg_dump postgres vacuumdb createdb droplang pg_config pg_dumpall postmaster vacuumlo createlang dropuser pg_controldata pg_resetxlog psql createuser ecpg pg_ctl pg_restore reindexdb
てか、/opt/local/bin の下に psql コマンドだけってのはどうなんだ。。。
% ll /opt/local/bin | grep postgres ... psql84 -> /opt/local/lib/postgresql84/bin/psql
Python はじめた い
いろいろ思うところあって Python をはじめてみようかと思って、とりあえず一番何も考えないバージョンで FizzBuzz ってみたの図。
for i in range(1, 100): if i % 15 == 0: print "FizzBuzz", elif i % 3 == 0: print "Fizz", elif i % 5 == 0: print "Buzz", else: print i,
感想とか
- {} いらないの楽だなあ
- ; いらないの楽だなあ
- elif なのかー
- print の末尾に , 付けると改行されないっぽい(なぜだろう)
- そういえば range() って PHP にもあるけどほとんど使ったことない気がする(なぜだろう)
PHP でなるべく似せて書いてみたらこんな感じになった。
<?php foreach (range(1, 100) as $i): if ($i % 15 === 0): echo 'FizzBuzz '; elseif ($i % 3 === 0): echo 'Fizz '; elseif ($i % 5 === 0): echo 'Buzz '; else: echo $i . ' '; endif; endforeach;
まあ、この程度だとあんまり違いがわからんのでもっと Python 勉強してきます。
OpenPNE3 で Gmail の SMTP サーバを使ってメールを送信する方法
OpenPNE3 の master ブランチを追いかけている人(日本時間の 19:30 くらいから使えるようになりました!)もしくは OpenPNE 3.4 を導入する予定の人向け
config/OpenPNE.yml で mail_smtp_host と mail_smtp_config を以下のように設定してください。
# config/OpenPNE.yml # SNS から SMTP 経由でメールを送信する場合の SMTP サーバのホスト名 # Hostname of the SMTP server for sending e-mail via SMTP mail_smtp_host: "smtp.gmail.com" # SNS から SMTP 経由でメールを送信する場合の SMTP の設定 # Config of the SMTP for sending e-mail via SMTP mail_smtp_config: auth: "login" username: "yourname@gmail.com" password: "yourpassword" ssl: "tls" port: 587
Zend_Mail で Gmail の SMTP サーバを使ってメールを送信する方法
基本は Zend Framework のマニュアル通り。
http://framework.zend.com/manual/ja/zend.mail.smtp-authentication.html
<?php $host = 'smtp.gmail.com'; $config = array( 'auth' => 'login', 'username' => 'yourname@gmail.com', 'password' => 'yourpassword', 'ssl' => 'tls', 'port' => 587, ); $tr = new Zend_Mail_Transport_Smtp($host, $config); Zend_Mail::setDefaultTransport($tr);
default transport を設定した後は通常通り new Zend_Mail() とかして送信すればおk。
ちなみに設定は何通りか書ける。
<?php $config = array( 'auth' => 'plain', // login の代わりに plain でもOK 'username' => 'yourname@gmail.com', 'password' => 'yourpassword', 'ssl' => 'tls', 'port' => 587, );
<?php $config = array( 'auth' => 'login', 'username' => 'yourname@gmail.com', 'password' => 'yourpassword', 'ssl' => 'ssl', // tls の代わりに ssl でもOK 'port' => 465, // ssl の場合はポートを 465 にする );
以下はNG集。
# NG <?php $config = array( 'auth' => 'login', 'username' => 'yourname@gmail.com', 'password' => 'yourpassword', 'ssl' => 'tls', 'port' => 465, );
# NG <?php $config = array( 'auth' => 'login', 'username' => 'yourname@gmail.com', 'password' => 'yourpassword', );
opRichTextareaSyntaxHighlightPlugin 作った
http://github.com/balibali/opRichTextareaSyntaxHighlightPlugin
OpenPNE3 のリッチテキストエリア(現在、標準で使われているのは日記の本文の部分のみ)に、ソースコードを貼ったときにシンタックスハイライト(色付け)してくれるプラグインです。
インストール方法と使い方はとってもかんたんなので README.ja を見てください。
以下、内部の技術的な話。
opWidgetFormRichTextareaOpenPNE は、symfony の sfWidgetFormTextarea を拡張したものですが、TinyMCE によるリッチテキストエディタの機能を追加するとともに、自身で外部から拡張可能な機構を備えています(作者のid:ooharabucyou++)
拡張するにはまず opWidgetFormRichTextareaOpenPNEExtension を継承した独自のクラスを作成します。
opWidgetFormRichTextareaOpenPNEExtension には5つの拡張可能なメソッドが用意されています。
- getPlugins()
- getButtons()
- getButtonOnClickActions()
- getConvertCallbacks()
- getHtmlConverts()
今回はリッチテキストエディタのボタンやアクションは増やさずに、表示処理だけ変更することにしたので、 getConvertCallbacks() メソッドだけを拡張しました。
getConvertCallbacks() は、キーにタグ名(今回の場合 op:source)、値にコールバック形式を持つ連想配列を返すようにしてやります。
# lib/widget/opRichTextareaSyntaxHighlightExtension.class.php <?php class opRichTextareaSyntaxHighlightExtension extends opWidgetFormRichTextareaOpenPNEExtension { static public function getConvertCallbacks() { return array('op:source' => array(__CLASS__, 'toHtml')); } static public function toHtml($isEndtag, $tagname, $attributes, $isUseStylesheet) { ... if ($isEndtag) { ... $lang = $attributes['lang']; ... return sprintf('<pre class="brush: %s">', $lang); } else { return '</pre>'; } } }
コールバック関数側では
第三引数の $attributes を使えば
最後に拡張したクラスを opWidgetFormRichTextareaOpenPNE::addExtension() で登録すれば一丁上がりです。
# config/config.php <?php opWidgetFormRichTextareaOpenPNE::addExtension('opRichTextareaSyntaxHighlightExtension');
以上、かいつまんで説明しましたが、このプラグイン自体は省略した部分も大した分量はないのでぜひ参考にして独自のプラグインを作ってみてください。