.emacsを公開した!
kentaroさんが最近やたらemacsづいてるので影響を受けて先週末に.emacsを整理したのでついでにcodereposにあげてみました。
整理したら300行ちょっとしかなくなってしょんぼり。まぁまだ今までやってた設定全部は移せてないのだけども。
あとmmm-modeに再挑戦したがやっぱりむりだった>< javascript.elでコメントアウトしたりしてるのがその名残。
nxml-mode + css-mode はうまくいくんだが javascript-mode とだとうまくうごかんなぁ。
convertコマンド
ImageMagickのconvertコマンドをsystem関数でたたいてた古いプログラムを動かす必要があったのだが、そのためだけにImageMagickインストールするとか面倒すぎたので、perlでconvertコマンド的なものを書いてお茶を濁した。
ファイル形式の変換とリサイズしかできない。
#!/usr/bin/env perl
use strict;
use warnings;
use Getopt::Long;
use Imager;
use Path::Class qw/file/;
GetOptions(
\my %options,
qw/geometry=s/,
);
my $in = file($ARGV[0]);
my $out = file($ARGV[1]);
my ($width, $height) = ($options{geometry} || '') =~ /(\d+)x(\d+)/;
# read
my $img = Imager->new;
$img->read( file => "$in" ) or die 'Cannot read: ', $img->errstr;
# scale if exists geometry option
if ($width and $height) {
$img = $img->scale( xpixels => $width, ypixels => $height, type => 'nonprop' );
}
# write
$img->write( file => $out ) or die 'Cannot write: ', $img->errstr;
Catalyst MVC
Catalyst に関してだけ言えば Model いらなくね?という話もわかるのだが、アプリの複数の箇所で共通で使うオブジェクトはModelを使うと楽だし論理的な実装になるとおもう。
僕のMVCの理解が変かもしれないけど、今はそんな感じで考えている。>共通で使うオブジェクトはModel
そんで、Catalyst::Model
微妙っていうのはやっぱり Catalyst 専用の Model つくってもほかから利用できないしなってのがあるんだけど、それは Catalyst::Model::Adaptor
で解決。jrockway++
なので、単体で動作する何らかのモジュールをまずつくり、それを Model::Adaptor で連結する、というのが今の好きな方法。
グラハムエーカー上級大尉がアツイ件
彼を見るのが楽しみで毎週ガンダム見てるといっても過言ではない。
「そんな道理、私の無理でこじ開ける!」
とか
「男の誓いに訂正はない!」
とかあついっすなー。
電王でもユウトが好きだったし、こういうキャラクターが好きなんでしょうな。
Catalystアプリオレオレポリシー
下記camr作った時点での僕のポリシーは
- アプリ名にかかわらず設定ファイルはconfig.yamlとconfig_local.yaml
- でも変更することがないほとんどの設定はyamlには書かない。yamlがごちゃっとするときもい
- ForceUTF8系モジュールは使用しない。内部がきちんとutf8で統一されていれば必要ない。
- MyApp::UtilsとかいうのでいろいろBKなことをまとめてする。uri_forを気に入るように直したり、FillInFormの挙動変えたり
なんか抜けてる気がするけどこんな感じ。
Webカメラから直接写真をFlickrにあげる
はてなフォトライフでWebカメラから直接写真を撮影してアップロードできるようになりました - はてなフォトライフ日記 - 機能変更、お知らせなど
をみて、おもろいなーとおもったので僕も作ってみた。Flickrバージョン。
本家に比べると大分しょぼいけど、動いたので満足した。なんかこれだけで3時間くらいかかった。。
ローカル git レポジトリからあげる方法がわからなんだので、普通に svn import した><
TDD支援elisp
が面白いなーと思ったので自分用に改造してみた。
モードラインの色を変えるようにしただけだけど。
;; C-c m でTDDのモード切替え
(defvar tdd-bgcolor-alist
'(("Think" ."snow")
("Red" ."#ff4444")
("Green" ."#44dd44")
("Refactoring"."#ffaa44")))
(defvar tdd-bgcolor-mode 3)
(defvar tdd-bgcolor-mode-name "")
(let (
(cell (or (memq 'mode-line-position mode-line-format)
(memq 'mode-line-buffer-identification mode-line-format)))
(newcdr 'tdd-bgcolor-mode-name))
(unless (member newcdr mode-line-format)
(setcdr cell (cons newcdr (cdr cell)))))
(defun tdd-bgcolor-rotate ()
(interactive)
(let (pair)
(if (>= tdd-bgcolor-mode 3)
(setq tdd-bgcolor-mode 0)
(setq tdd-bgcolor-mode
(+ tdd-bgcolor-mode 1)))
(setq pair
(nth tdd-bgcolor-mode tdd-bgcolor-alist))
(setq tdd-bgcolor-mode-name (format "[%s]" (car pair)))
(message tdd-bgcolor-mode-name)
(set-face-foreground 'mode-line (cdr pair))))
(global-set-key "\C-cm" 'tdd-bgcolor-rotate)
fast-forward merge
は git-svn なブランチ上では予期せぬ動作になるので使用しない方がいいっぽい。
新しいコミット発生しないので git svn dcommit できなくなる。