2010-01-01から1年間の記事一覧

direct_bookmark.js

OS Ubuntu 10.04 LTS Mozilla Firefox 3.6.8 for Ubuntu (Lucid) Vimperator 2.3.1 direct_bookmark.js 0.15 let g:direct_sbm_use_services_by_tag = 'h' let g:direct_sbm_use_services_by_post = 'h' let g:direct_sbm_is_use_migemo = &…

無名関数を引数にとる関数

#!/usr/bin/perl use strict; use warnings; use feature qw( say ); sub hoge(&) { my ($func) = @_; $func->(); } hoge { say 'call from anonymous function!' } Perlを書きはじめている。なにもかもがわからない(なにがわからないのかすら、わ…

Perlの標準ライブラリ

けっきょく、Perlで書いてみることにした。実はすこしRubyで書きはじめていたのだけど。極力、外部のライブラリに依存したくないので、まず標準ライブラリを把握する。Ubuntu 10.04 LTSだと /usr/lib/perl/5.10 を見ればいいっぽい。ちなみに /usr/lib/perl/…

パッケージ管理システムについて

パッケージ管理システムをつくろうと考えている。クロスプラットフォームなやつ。といいつつ、Windowsは対象に入れていなかったりする。いろいろ考えたこと。 バイナリかソース・コードからビルドするか パッケージの粒度は? 依存関係の解決について aptitu…

コーディング・スタイルについて

インデントに使う文字について タブ文字を使う。いわゆるハード・タブ。幅は4で。詰まりすぎず、開きすぎず、ちょうどよい幅だとおもう。もちろん、言語仕様で指定あるいは推奨されている場合(YAML, Pythonなど)はこの限りではない。また、他人のソース・…

Compizを使って、UbuntuでもMacのVisorぽいことをする

VisorというアプリケーションがMac OS Xにあります。ホットキーひとつでターミナルを呼び出すことができる、イカしたアプリケーションです。これをUbuntuでも再現できたので、メモを残しておきます。Ubuntu 10.04 + GNOME 2.30.2 + Compiz 0.8.4 という環境…

screenのウィンドウ・タイトルに実行したコマンド名を出す(sudoでもよさげに)

はてなダイアリーこれをまるっとコピペして使っているのだけど、 sudo aptitude update などと打ったときに sudo とだけ出てきていまいちわかりづらい。すこし手を入れて、 sudo したときには管理者権限で実行したコマンドも出すようにした。 # http://d.hat…

システムにあるコマンドがインストールされているかどうか

FileUtils とか探したけど見当たらなかったので。 module Kernel def installed?(cmd) FileTest.executable?(`which #{cmd}`.strip) end end String#strip が肝。 irb で出力確認したら末尾に \n がついていたので、取り除かないと true が返らない、はず。

やりたいこと

はてなダイアリー これをうまく変えて、 sudo から始まるときは、次のコマンドを出すようにしたい。

ls ~

時代遅れもいいところ。メインで使っている Ubuntu 10.04 LTS を晒します。 S | v | Z bin@ - dotfiles/bin へのシンボリック・リンク。ちょっとしたスクリプトを入れたりしている。 dotfiles/ - aereal/dotfiles · GitHub の中身をここに置いている。 $HOME…

Enumerable#grep を使うときに Regexp.last_match をさわりたい

うまいタイトルが思い付かない。Ruby は $~ や Regexp.last_match などで、カレントスコープで実行した最後の正規表現マッチの結果を得ることができる。 /(.)(.)/ === 'abcdef' puts $1 # => a puts $2 # => b こんな風に。ところで、 Ruby には Enu…

エスケープ・キーをC-Spaceにする

screenをつかっていると、エスケープ・キー(デフォルトは ^A になっている)を打ち込む回数を数え上げることは、今までに食べてきたパンの枚数を数え上げるのに等しい行為である(たくさん打つよね)。エスケープ・キーは、できるだけ押しやすいキーバイン…

return と finally (ensure)

return と ensure 節 - #!/usr/bin/env japanese - Teq.gこれを Scala で書いてみた。 object ReturnEnsureSample { def main(args: Array[String]) = { println("yuno => " + yuno) println("miyako => " + miyako) println("hiro => " + hiro) println("sa…

return と ensure 節

Rubyのensureはreturnを撤回できる - Hello, world! - s21gこれを見て気になったので試した。 def yuno true ensure false end def miyako return true ensure return false end def hiro return true ensure false end def sae true ensure return false en…

声優の新谷良子さんへの愛を叫ぶ

TaniRyoko = "谷良子" def new(syntanix, shout=nil) if shout puts "#{shout}! 新#{syntanix}, #{shout}!!!" else puts "New #{syntanix} って…100万回も言われてます。もうあきましたっ!!ばーかばーか。" end end new TaniRyoko, "もげええええええ" # => …

Rubyでノーム・ソート

ノームソート - Wikipedia def gnome_sort(array, i=1) if i < array.size if array[i - 1] >= array[i] array[i - 1], array[i] = array[i], array[i - 1] i = i > 1 ? i - 1 : i + 1 else i = i + 1 end gnome_sort(array, i) else array end end returnを…

整数を英語へ変換

class Integer def english_name(delimiter=&#39;-&#39;) if self < 20 english_table[self] else ret = english_table[(self / 10) * 10] (self % 10) == 0 ? ret : ret + delimiter.to_s + english_table[self % 10] end end private def english_table { …

access_hatena.js

144,147c144,147 < } else if (pageFor[host].uri.length > page.uri.length) { // より短いアドレスのタイトルが妥当 < pageFor[host] = page; < isUpdated = true; < } --- > }// else if (pageFor[host].uri.length > page.uri.length) { // より短いアド…

hatena.vimから書きこむ。

Enumerable#sort_by.reverse

hash = {:a => 30, :b => 50, :c => 40, :d => 20} hash.sort_by {|k, v| v }.reverse キーを単語、値を単語の出現回数とするハッシュをつくっていじくりまわしたりすることがある。そして出現回数でソートして Array#reverse で昇順に、ということをやるこ…

Ubuntu 10.03 LTSを入れてやること #3

Mozilla Thunderbirdを入れる。 % sudo apt-get install thunderbird thunderbird-locale-jaGoogle Calendarをローカルで扱えるように、LightningとProvider for Google Calendarを入れる。

#!/usr/bin/env ruby # # http://github.com/cho45/dotfiles/raw/master/setup.rb require "pathname" require "fileutils" include FileUtils::Verbose class String def expand ret = Pathname.new(self).expand_path ret.parent.mkpath unless ret.parent…

Ubuntu 10.04 LTSを入れてやること #2

Ubuntu 10.04 LTSa - #!/usr/bin/env japanese - Teq.gこれに加えて。Qtを使用しているアプリケーションで、英数字のレンダリングがおかしい。半角英数字なのに、全角幅でレンダリングされる。これを解決するにはJapanese Teamによる追加パッケージをインス…

Gnome DoのAliasプラグインを使う

Gnome Doという、MacのQuicksilverに似たアプリケーション・ランチャがある。あらかじめ設定されたキーバインドで起動し、インクリメンタル・サーチを利用してアプリケーションを選択、様々なアクションを実行する、という(たぶん)Quicksilverと比べても遜…

快適にリージョン移動

screenはリージョンを分割することができます。デフォルトでC-a Tabというキーバインドが割り当てられていて、これを叩くと次のリージョンに移動することができます。しかし、リージョンを分割しまくっていると、C-a Tabの一方向の移動のみでは、とてもじゃ…

Ubuntu 10.04 LTSa

最初にやること。 LANG=C dpg-user-dirs # ディレクトリ名を英語にかえる sudo apt-get update sudo apt-get upgradezshとgit。 sudo apt-get install git-core git-svn zsh chsh -s /usr/bin/zsh # ログインシェルを変えるRubyを入れる。 sudo apt-get inst…

zsh

% sudo apt-get install lighttpd{,-dev,-doc} # ここでTab % sudo apt-get install lighttpd lighttpd-dev lighttpd-doc実は、それほどzshの「すごい機能」を使っていないのかもしれない。せいぜい補完がべんりなシェル、くらいの認識なのかもしれない。も…

Rakeをつかって快適にBDD

ある程度の規模のプログラムを Ruby で書こうとおもうと、RSpec による BDD (Behavior Driven Development) は大事なんだな、っていうのがなんとなくわかってきた。 ディレクトリ構成やファイル構成はほぼ機械的に決まるので、じゃあ自動化しましょう、とい…

FileUtils#.mkpath と Pathname#mkpath の挙動

$ irb > require &#39;pathname&#39; => true > Pathname.new(&#39;~/tmp&#39;).expand_path.mkpath => nil mkpathFileUtils.mkpath(self.to_s) と同じです。 [SEE_ALSO] FileUtils.#mkpath class Pathname [RETURN]list を返します。 module function FileU…

dotfilesをよしなに扱うRakefile

require &#39;rubygems&#39; require &#39;rake&#39; module Enumerable def like?(val, op = :===) any? {|i| i.__send__(op, val) } end end class String def expand File.expand_path(self) end def exist? File.exist?(self.expand) end end SOURCE_DIR…