Amonでctx_request

Ark::Test や Catalyst::Test でおなじみの ctx_request をつかってテストを書く必要があったので書いてみました. Data::Util or Moose を使う程ではないと思ったので, ベタっといった感じ.俺はそんな感じ.正しい実装ではない可能性があることを断っておきま…

emacs で anything 起動中に入力中のパターンを区切りマッチに変化させるコマンド

ik:anything-cycle-pattern を anything 起動中に起動させると入力中のパターンを「区切りにマッチする正規表現」に変化させる事ができます。連続して起動すると順番に変化していきます。自分は Shift+d に割り当てています。 (define-key anything-map (kbd…

70行で emacs に Text::MicroTemplate like なテンプレートを実装する

>>>> 2010/04/23 追記 未使用の変数消したので、69行になってしまいました。 「(eval-when-compile (require 'cl))」まで加えて丁度70行です。 (eval-when-compile (require 'cl)) (defun* micro-template (mt/template &key (mt/source-type 'string)) (fle…

あけましておめでとうございます

しばらくご無沙汰でしたので、近況でも。 最近、自由に使える時間が少しばかり増えたので勉強をするようにしています。今日なんかは数学をやっていたのですが、思ったより全然できないんですね。 あらあら、これはどうしたことか。忘れてしまったのかな。ど…

選択している文字列を camelcasesnakecase に変換するコマンド

;; copied from rails-lib.el (defun ik:decamelize (string) "Convert from CamelCaseString to camel_case_string." (let ((case-fold-search nil)) (downcase (replace-regexp-in-string "\\([A-Z]+\\)\\([A-Z][a-z]\\)" "\\1_\\2" (replace-regexp-in-st…

smartchr.elがやばい!

連続で押すと指定した文字列を順番に入力するコマンドを、簡単に定義するための拡張 smartchr.el をリリースしました。自分で作っておいてアレですが、しばらく使ってみて、手放せない拡張になったので宣伝しておきます。smartchr.el from imakado on Vimeo.…

インストールされているモジュールのパスを取得する

モジュール名から .py ファイルのパスを得たくて探してみたのですが、正しい方法がわかりませんでした。 結局、以下のコードでお茶を濁すことにしました。 import sys import inspect def main(argv): m = eval('__import__("' + argv[1] + '")') print insp…

auto-complete.el 1.0aでlambdaで定義したコマンドが使えない

2009-11-20 追記 以下の変更は、 322dcb5a で本家にmergeされました。 auto-complete.elのversionを 1.0a(http://github.com/m2ym/auto-complete)に上げたのですが、 (global-set-key (kbd "=") (lambda () (interactive) (insert "="))) 上のようにlambdaで…

anything-projectの候補にディレクトリが含まれないようにする

(setq ap:project-files-filters (list (lambda (files) (remove-if 'file-directory-p files)))) 最新の anything-project.el だと上のように書いておけばファイルのみが対象になります。

ランダムに一つのROWをとってくる

package App::Schema::Table::Hoge; use strict; use warnings; use base qw/DBIx::Class::ResultSet/; sub get_random_row { my ($self) = @_; my @ids = $self->search( {}, { select => [ qw/ id / ], } )->get_column('id')->all; my $id = $ids[ int( r…

auto-complete.el の ac-source-words-in-buffer の候補に日本語を含む単語が含まれないようにする

(require 'cl) (require 'auto-complete) (defadvice ac-candidate-words-in-buffer (after remove-word-contain-japanese activate) (let ((contain-japanese (lambda (s) (string-match (rx (category japanese)) s)))) (setq ad-return-value (remove-if …

symfony.el始めました。

一昨日くらいからsymfony.elを作り始めました。 rails.el や rinari.el, symfony.vim とか見ながら作ってます。 コードはgithub上にあります。 http://github.com/imakado/emacs-symfony/tree/master絶賛開発中でございます。 Installation `anything.el' ht…

conspとlistpの違い

(equal t (consp nil)) ;;=> nil (equal t (listp nil)) ;;=> t

いままで iモードID(guid, 個体識別番号)は大文字・小文字の区別ありなことを意識していなかった

いわゆる、かんたんログインと呼ばれる認証方法をドコモ端末で実装するときにつかわれていると思われるiモードIDですが、大文字・小文字の区別あり、だということを今日初めて知りました。以下、問題になった部分の最小構成。かんたんログインの是非はいった…

DBIC_TRACE=1のときに発行されるsqlにどこで発行されたクエリか追記する

package DBIx::Class::Storage::Statistics::Caller; use strict; use warnings; use base qw/ DBIx::Class::Storage::Statistics /; sub query_start { my ($self, $string, @bind) = @_; my $caller_sub_name = $self->_get_non_dbic_caller; my $message …

SQL扱うのに便利な関数とか、プレースホルダーを埋める関数とか

Arkのログ、DBIC_TRACE=1 の時に出るやつをごニョゴニョしたいと思って。いろいろやってみた。SELECT * FROM user me WHERE ( ( me.id = ? AND deleted = ? ) ): '4', '0'を選択して、 M-x sql-fill-placeholders すると、kill-ring にSELECT * FROM user me…

Emacsに選択してる範囲を読んでもらう

say コマンドがインストールされている場合のお話です。 (defun say-on-region (&optional start end) (interactive "r") (unless (executable-find "say") (error "say command is not installed!!")) (shell-command-on-region start end "say")) 読んで欲…

List::Util::first の返り値でハマったのでメモ

use Test::Base qw(no_plan); use Test::Exception; use List::Util qw(first); use Perl6::Say; my $arr = [ { id => 1, name => 'aaa' }, { id => 2, name => 'bbb' }, ]; my $is_ccc = sub { $_->{name} eq 'ccc' }; lives_ok( sub { map { say $_->name …

デフォルト設定の semantic が semantic.cache を各ディレクトリに作ってアレなときにすべき設定

semanticdb-default-save-directory にディレクトリを設定してあげると、そこにキャッシュを作るようになります。 (setq semanticdb-default-save-directory "~/.emacs.d/") また、 semanticdb-default-file-name を変更するとキャッシュファイルの名前を変…

Lingua::JA::Regular::Unicode をつかって全角カナを半角カナに変換する

全角と半角が混在していて、アレだったのですが、以下のコードで一発でした。 "、。" 等の文字も変換されて問題ない状況でした。 use Lingua::JA::Regular::Unicode; sub z2h { katakana_z2h($_[0]) } $_->update({ name => z2h($_->name), description => z…

DBIC勉強しつつ、SQL書き方ドリル読んだメモ -2-

p175〜 相関副問い合わせ。 SELECT p.ProductName, s1.Quantity, s1.saledate FROM Sales AS s1 JOIN Products AS p ON p.ProductID = s1.ProductID WHERE s1.Quantity > ( SELECT AVG(s2.Quantity) FROM Sales AS s2 WHERE s2.ProductID = s1.ProductID ) ;…

DBIC勉強しつつ、SQL書き方ドリル読んだメモ

DBは SQL書き方ドリル のサンプルです。 そこから DBIx::Class::Schema::Loader をつかって schema dump して relation とか書きました。 毎日ちょっとずつやっていこうかと思っております。 Util dumpするやつ。 sub p { my ($rs) = @_; my @rows = $rs->is…

perl失敗時のreturn

use strict; use warnings; use utf8; use Test::Base qw(no_plan); sub return_undef { return undef; } my @list_undef = return_undef; ok( ! @list_undef ); # Failed sub just_return { return; } my @list_just_return = just_return; ok( ! @list_jus…

面白法人カヤックに入社しました。

多分、もう正社員になりました。 直属の上司は、id:typesterさんです。 mashさんとかid:sun-basixさんを始め、プログラマがたくさんいて、凄く楽しいです。結構好きな事やらせてもらっています。 perl使ってwebアプリの開発とかしています。elisp書くのもブ…

perl編集時以外でもperl-completionのコマンドを使う

perldocを開くコマンドをperl編集時以外にも使いたいときがあります。 その場合は以下のように global-map に perl-completion.el のコマンドを割り当てると、いつでも使えるようになります。 ;; perl-completionがインストールされていれば割り当てる (when…

EmacsにPHPの補完を実装するマイナーモード、php-completion.elをリリースしました。(動画有)

anything.elのインターフェイスを使い、EmacsにPHPの補完を実装するマイナーモード php-completion.el をリリースしました!! auto-complete.elとの連携もできます。 スクリーンキャスト php-completion.el DEMO from imakado on Vimeo. 出来る事 visual stud…

M-x align を知らなくていいのは小学生までだよね

隣の席のid:typesterさん(上司)から M-x align の存在を教えてもらった。今まで手動でそろえていました自分って・・・ my $hsh = { hoge => 'hoge', hugapiyo => 'hugapiyo', hogepiyohuga => 'hogepiyohuga', }; こんなコードをリージョン選択して、 M-x al…

関数にlocalな変数を作る。あとbyte compilerのwarningsを抑える

emacs lispで複数の関数で共有したい変数を作りたい場合、普通は、グローバル変数を作って (require 'cl) ; incf (defvar my-count 0) (defun my-inc-count () (incf my-count)) (defun my-reset-count () (setq my-count 0)) (defun my-get-count () my-cou…

日本人ユーザーかどうか判別する処理

を考えたのですが (cond ((string= (downcase current-language-environment) "japanese") (message "japanese")) (t (message "otherwise"))) しか思いつきませんでした。

今の頭の中

本当にダメだ。毎日毎日自分に余裕がなくて、げんなりするくらいダメなコードしか書けてない。 少し落ち着いて考えれば綺麗な答えが見付かる筈なのに、コピペですませて同じようなコードを量産して、自分で自分の首をしめまくっちゃってます。。★。 あかん、…