NokogiriでXMLに子要素を追加すると要素名が小文字になる

環境 Mac OS X 10.7.5 Ruby 1.9.3-p327 Nokogiri 1.5.6 問題 XMLノードに子要素を追加する際にNokogiri::XML::Node#add_childを使いつつ引数を文字列で渡すと、要素名が小文字になる。要素名はdowncaseしないでほしい。 解決 Nokogiri::XML::DocumentFragmen…

メソッド内でメソッドの引数の一覧を取得する

def hoge(a, b, c) p self.method(__callee__).parameters #=> [[:req, :a], [:req, :b], [:req, :c]] end hoge(1, 2, 3) Kernel.#__callee__とMethod#parametersを使う。 __callee__で今いるメソッドの名前がSymbolとして取れるので、それをself.methodの引…

プロンプトに顔文字を出す

.bashrcとかにこんな感じで書く。 function check-shell-command { if [ $? -eq 0 ]; then face="\e[32m(^_^)" else face="\e[34m(+_+)" fi echo -e "${face}\e[m" } PS1='$(check-shell-command):\W \$' コマンドが成功した時と失敗した時とで顔文字が変わ…

なんだか自分の好きな本を10冊挙げるのが流行ってるみたいなので流行に乗りました!!!

自分の好きな本を挙げるのがにわかに流行っているみたいなので。順番は思いついた順です。About Face 3 インタラクションデザインの極意作者: Alan Cooper,Robert Reimann,David Cronin,長尾高弘出版社/メーカー: アスキー・メディアワークス発売日: 2008/07…

コマンドの処理が一定時間以上かかった時だけGrowlで通知する

~/.bashrcに書いておけば多分動く。bash以外で動くかは試してない。 Mac用に書いてるのでLinuxとかは適宜コマンドを(notify-sendとかに)置き換えてください。 function notify-last-command { # 3秒以上かかったらGrowlで通知する if [ 3 -lt $MYDATETIME ];…

はてなブックマークはメニューをmap要素以外で実装するかarea要素のcoords属性をちゃんと指定してほしい

はてなブックマーク( http://b.hatena.ne.jp/ )のメニュー(トップ〜動画のあれ)はmap要素を用いて実装されています。この記事を書いた時点でのHTMLを引用します。 <div id="category"> <span> <img src="http://cdn-ak.b.st-hatena.com/images/scategory.png" usemap="#catmap" alt="カテゴリー" style="margin-top: -60px;"> </span> <map name="catmap" id="catmap"> </map></div>

セキュリティ&プログラミングキャンプ「Rubyのバグを探せ」問題を解いてみた

セキュリティ&プログラミングキャンプ「Rubyのバグを探せ」問題 - 西尾泰和のはてなダイアリーを見て、面白そうだなーと思ったので挑戦してみた。 Evernoteにログを残しながらやってて、ダウンロードして解凍が完了したのが20時56分、makeが通ったのが23時4…

外部リンクを自動で新規タブで開くUserScript

ブラウザ上でリンクをクリックした時に起こることといえば、そのタブでページが遷移するか新しいタブでクリックしたリンクが開かれるかだと思う。自分の中で「これは新規タブで開かれるだろう」と予想したリンクがそのままそのタブで遷移することが結構あっ…

Togetterの「続きを読む」ボタンを自動でクリック(したことに)するUserScript

Togetterの「続きを読む」ボタンはVimiumのhit-a-hintに反応しないので、マウスでクリックしないと続きが読めなくて大変です。 というわけでUserScript化。 togetterの"続きを読む"を自動でクリック · GitHub // ==UserScript== // @match http://togetter.c…

document.createElementNSの使い道

console.dir( document.createElement("path") ); // HTMLElement console.dir( document.createElementNS("http://www.w3.org/2000/svg", "path") ); // SVGRectElement ときどきJSコンソールの補完で出てくるからdocument.createElementNSという関数がある…

古いgemをインストールしようとすると警告を出すgemを作った

昨日メンテナンスされていないgemをインストールしてはまって大変だったので、インストールする際に古いgemだと警告を出すgemを作った。 GitHub - ohnishiakira/check-date: Check gem's date and warn if date is more than 1 years ago. 1年以上メンテナン…

gem installでインストールするrefeは使わない方がいい

更新が2006年と古いし、多分まともに動かない。自分の環境(Mac OS X 10.5.8 + RVM 1.6.20 + Ruby 1.9.2p180 + Rubygems 1.8.5)ではエラーが出る。 $ gem specification refe (略) date: 2006-02-28 00:00:00.000000000 +09:00 (略) $ refe /Users/akira/.rvm…

blockdiagをインストールする

blockdiagという簡単にダイアグラムを生成出来るツールがあるらしいので、ちょっと使ってみようと思いインストールしたら微妙に手間取ったのでメモ代わりに残しておく。 自分の環境 Mac OS X 10.5.8 macportsを使っている インストール手順 基本的にマニュア…

RVMを導入している時にgem installでrdocやriをインストールしないようにする

RVMを導入する前は~/.gemrcに色々書いてsudo無しでgem install hogehoge出来るようにしたり、rdocやriをインストールしないようにしていた。けど、RVM導入してからは~/.gemrcでは特に何もせずに*1RVMの設定そのままでgem install hogehogeするようにしていた…

ubuntu11.04をインストールする

使用しているマシン Dell XPS M1530 元々ubuntu10.04を入れてた。 ISOイメージのダウンロード ダウンロードは http://www.ubuntu.com/download/ubuntu/download から。 ディスクの作成 Braseroを使ってディスクを作成。 バックアップ Downloadディレクトリあ…

ファイル内で定義されている変数の一覧を取得する

ファイル内で定義されている変数の一覧が欲しい時がある。例えばこんな感じで変数が定義されていたとする。 hoge = 3 fuga = "bero" この変数の一覧を取得したい場合、local_variablesを使うと上手くいく。 local_variables do |v| puts v end #=> hoge #=> …

nginx設定メモ

忘れないようにメモ。 ドキュメント 公式サイト:http://nginx.org/ wiki:http://wiki.nginx.org/ 公式のサイトよりwikiの方が充実してたのでwikiを参考にした。 自分の環境 OSはUbuntu10.04。 ドメインは http://www.oh24.net/ を取った。まだ特に何もない…

ダブルクリックするとinput要素になるp要素を作る

仕組みとしては、ダブルクリックイベントを取ってreplaceChildで置き換えているだけ。 input要素内でエンターキーが押されるか、input要素からフォーカスが外れるとp要素に戻る。 HTML <html lang="ja"> <head> <meta charset="utf-8"> <title>ダブルクリックするとpがinputに変化します</title> <script type="text/javascript" src="p2input.js"></script> <body> <h1>ダブルクリックすると</h1></body></meta></head></html>…

コマンドラインから「きれいな」スクリーンショットを撮る

Ubuntuでスクリーンショットを撮る時は、標準の「スクリーンショットの取得」*1を使ったり、ImageMagickのimportコマンドだったりxwdだったりを使うと思います。これらのコマンドは、コマンドラインから自動で処理させる場合には微妙に扱いづらいです。「ス…

MacBook Airを1年近く使ってみて

mac

MacBook Air 11インチ欲しい!と書くとMacBook Airが当たるらしいのでたなぼた的なものを期待してMacBook Airを1年くらい使った感想でも書いておきます。 やっぱり軽い。持ち運び便利!!! SSDおいしいです。*1 メモリは2GBだとちょっと足りない感じがする…

SFC-LTに参加しました

SFC

2011年1月12日に開催されたhttp://sfc-lt.com/というイベントに参加(運営側として)しました。 当日の様子はUstreamでSFC-LTにて流していました。こちらも多い時で300人以上の方が見てくださっていて、結構多くの方が見てくれてるなあと感じてました。 Ustrea…

Ubuntuのある日常

ここ2年近くUbuntuを日常的に使用してきた個人的な感想でも書きます。 自分のPC環境 今は以下の2台を併用しています。 MacBook Air(mid2009) mid2009が出てすぐに購入しました。学校とかに持ち歩いたり、ネットしたりコーディングしたりしています。 Dell XP…

頭の体操

window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s); js.id = id; js.src = "https://platform.twitter.com/widgets.js"; fjs.paren…

manコマンドっぽく美女リナックスの画像を取ってくる

巷では美女リナックスという女の子がUnixのコマンドを紹介してくれるサイトが話題になっています。 折角コマンドを紹介してくれるんだから、やっぱりブラウザからじゃなくてターミナルから参照したいですよね! .bashrcとかにこんな感じで書きましょう。 fun…

ウェブ上から画像を取得してRMagickで変換してRuby/Tkで表示する

#!/usr/bin/env ruby # coding: utf-8 require "rubygems" require "tk" require "tkextlib/tkimg/png" require "open-uri" require "rmagick" width = height = 45 icon = "http://a0.twimg.com/profile_images/1182392304/bakeneko.png" image = Magick::I…

オブジェクトが持っているメソッド一覧を出力する

def show_all_methods(o = Object) o = eval(o) if o.class == String all = [] o.methods.each do |m| begin all << o.method(m).call if m.to_s.include? "methods" rescue ArgumentError next end end all.flatten.uniq.sort end p show_all_methods ARGV…

Watirで診断メーカー巡り

Watirを使って延々と診断メーカーするだけの簡単なスクリプトを書いた。 入力フォームに入力されるのが妙に遅いのが気になるのと、Ctrl+Cしても異常終了しないようにSignal.trapしてるけど効いていない気がする。 #!/usr/bin/env ruby # coding: utf-8 requi…

Excelの列の形式を数字に変換する

Excel等では列が"AA"とか"AB"のようにアルファベットで表示されているんだけど、この表記だと今の列が何列目か直観的に分からないので書いてみた。 def col_to_number(str) sum = 0 al = ("a".."z").to_a.join str.downcase.split(//).reverse.each_with_ind…

『パーフェクトソフトウェア』を読んだ

前々からウェブ上で「テストファースト」とか「TDD(Test Driven Development)」を見かけて気になっていて、実践してみたいと思っていたんだけどなかなか実践できていなかった。そんな中本屋をぶらぶらしてるとこの本を見つけ、気になったので買ってきた。 思…

テキストを正方形っぽく整形したい

ふとなんとなくテキストを正方形っぽく整形したいなあと思って書いてみた。割とそれっぽくなるはず。 class String def pat w = Math.sqrt(self.length).ceil a = self.split(//) t = [] self.length.times do |s| t[s%w] ||= "" t[s%w] << a.shift end t en…