2013-07-17

Emacs で N 進数を簡単に 10 進数になおす

先のエントリー「Emacs で 2,8,16 進数を簡単に 10 進数になおす」を書いたら、Twitter で面白いことを教えてもらった。

さっきと同じ様に *scratch* バッファーに移って次の文字を入力して C-x C-e

#32r10

32 が返ってくる。実はこれ、32 進法での「10」の値を返してる。試しに 32 進法の「20」を計算させてみる。

#32r20 -> 64

# と r の間に挟まってる数字が基数になる。なら 24 進数は?

#24r18 -> 32

オオッ。

36 進数もいけるかな?

#36r1z -> 71

凄い。凄い。

もちろん、2 進数、8 進数、16 進数も...

#16rff -> 255
#8r10 -> 8
#2r100 -> 4

こりゃ面白いことを教えてもらった。

Emacs で 2,8,16 進数を簡単に 10 進数になおす

ソースコードを読んでいると、2 進数や 8 進数や 16 進数の直値がときおり現れる。時にその値の 10 進数値を知りたいことがある。色々ツールは沢山あるけれど、Emacs 使いなら Emacs ですぐに値を知ることができる。意外と知られていないので、ご紹介。

  1. *scratch* バッファーに移動
  2. N 進数を書く
  3. N 進数の後ろで C-x C-e

これでミニバッファーに数値が現れる。数引数を取れば、ミニバッファーではなく *scratch* バッファーに値が出力される。

N 進数の書き方は下記の通り:

#xff (16 進数: 255)
#o10 (8 進数: 8)
#b100 (2 進数: 4)

x,o,b は大文字 (X,O,B) でも良い。

Emacs 使いにこそ手軽に使えるので、覚えておかれると良ろしいかと。

2013-07-16

Redmine でチケットを登録する時に確認画面を出す方法

何度言っても忘れてしまうチケット起票者に対して、確認画面を出すことになった。使っているチケット管理システムは Redmine。Redmine はデフォールトで JQuery をロードしているので、いきなりソースコードに JQuery のコードを書くことができる。

編集するのは /var/redmine/app/views/issues/new.html.erb。ページの末尾に次のコードを突っ込む。

<script>
$(function(){
  $('#issue-form').submit(function(e) {
    if (!confirm('確認用文言')) {
      e.preventDefault();
      $('#issue-form').removeAttr('data-submitted');
      return false;
    }
  });
});
</script>

これで、「作成」ボタンを押すと「確認用文言」がポップアップして OK を押すとチケットが作成され、キャンセルを押すともう一度説明文を編集することができるようになる。

「確認用文言」は状況に応じて変わると思うけど、「再現手順は書きましたか?」とか「不具合画面のスクリーンショットは貼りましたか?」等々、入力されなくて困ってることを書いておけば良いと思う。if 文以下をコピペすれば、複数個の確認画面を表示できる。

一日に数本チケットを作るかどうかという環境において有効。あんまりやりすぎると、自分がチケットを作る時ストレスになるのでご注意を。

JQuery を初めて触ってみた

会社に JQuery 本が転がっていたので、ちょっと JQuery の勉強でもしてみようかと本を手に取った。本当に基本的なことをメモ。

jQueryデザインブック 仕事で絶対に使うプロのテクニック
jQueryデザインブック 仕事で絶対に使うプロのテクニック

CDN の利用

CDN: Contents Delivery Network を利用すると、バージョンを指定したり、最新の JQuery を自動的に取得したりできる。

CDN の提供は Google, Microsoft, JQuery, CDNJS の三者が行なっている。

  • Google: //ajax.googleapis.com/ajax/libs/jquery/VERSION/jquery.min.js
  • Microsoft: http://ajax.aspnetcdn.com/ajax/jQuery/jquery-VERSION.js
  • jQuery: http://code.jquery.com/jquery-VERSION.min.js
  • CDNJS: //cdnjs.cloudflare.com/ajax/libs/jquery/VERSION/jquery.min.js

大文字で「VERSION」と書いた部分には、JQuery のバージョン番号を入れる。

Google では、下の番号を省略すると最新バージョンが自動的に指定される (他の CDN は知らない)。例えば、2.0.2 とフルバージョンを指定するのもあり。2.0 とすると、2013-07-16 現在最新の 2.0.3 が使われる。単に 2 とするとバージョン 2 系の最新版が得られるハズ。

フルバージョン指定すると、丸一年間キャシュされるのでその分高速化が期待できる。一方、バージョンを省略すると、24 時間しかキャッシュされない。キャッシュの恩恵に与かるか、サービスを自動で最新にしたいか。目的によって使い分けると良さそう。

最後に Google の Script を書いておく。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

おや、http: がないけれど良いのかしらん。

JQuery 基礎の基礎

JQuery の基本的な構文は下記の通り:

jQuery('セレクタ').メソッド(パラメーター)

セレクターは CSS と同じものが使える。ID を指定するなら #id, クラスを指定するなら .class, h1 要素直下の p 要素は h1+p といった具合。

メソッドは... 本やウェブサイトで勉強して...

パラメーターも同様に...

jQuery にはシンタックス・シュガーが用意されていて、普通はこちらを使う:

$('セレクタ').メソッド(パラメーター)

JQuery のコードは、onload 以前に走らせることが可能。タイミングとしては HTML の準備が整った段階でのスタートとのこと。

$(document).ready(処理);

実際のコードは次の様になるか...

$(document).ready(function(){
  処理
});

これもシンタックス・シュガーが用意されている:

$(function(){ 処理 });

簡単なサンプル

というわけで、簡単なサンプル。サイト内に foo という ID を持つ a 要素があったらクリックした時に alert を出す jQuery Script。

$(function(){
  $('#foo').click(function(){
    alert('#foo is clicked')
    return false;
  })
});

あとがき

うん。まだ、始めたばかりで勝手が良く分かってない。とにかく楽しそうなのは実感した。