Read "Source code reading technic for programmers"

投稿者 okkez 2010-07-15 15:33:00 GMT

「プログラマーのためのソースコードを読む技術」という本をジュンク堂で見かけたので、買って読んでみた。

わかっている人にとってはものすごく普通の内容でした。 それでも、後半のコードリーディング実践の部分は実際に使われているソースコードを全文掲載していて、 移動中でも読めそうな感じだったのは良いと思いました。実際に、自分も移動中に読んでいました。

個人的にはあまり合わなかったけど、これからプログラマや SE として働く人や、新人教育担当になる予定の人や 来年から後輩ができる人なんかは読んでみると参考になると思います。

カテゴリ  | タグ  | コメントなし | トラックバックなし

Read Perfect Software

投稿者 okkez 2010-06-25 15:06:00 GMT

読んだ。

ワインバーグの最新作なのかな。ジュンク堂で偶然見かけて、購入。

ソフトウェアのテストにまつわる誤解、誤謬、詐欺に関する本。 具体的なソフトウェアテストの技術や知見を知りたい人は別の本を読めばいいと思う。 例えばこの辺。(もちろん本書にも参考文献はいくつもあげられている。)

本文で紹介されている人々の会話も面白いし、実際にありそうな感じだった。いくつかは、自分自身も経験がある内容だった。

で、どういう人がこの本を読むべきかと言うと、ソフトウェア開発に直接、間接に関わるすべての人々が読むべきだと思った。 開発者は、自分の行動やテストに対する考え方や振る舞いを振り返りながら。 テストエンジニアは、開発者から本書にあるような扱いを受けたことがないか振り返りながら。 マネージャは、自分のチームの開発者とテストエンジニアが上手くいっているか気にしながら。あるいは、部下の報告を無視したり、 曲解したり、勘違いしていないか振り返りながら。 その他の人々は、いつか自分が当事者になるかもしれないのだから、当事者になったときのために。

カテゴリ ,  | コメントなし | トラックバックなし

Working Effectively with Legacy Code

投稿者 okkez 2010-06-13 13:39:00 GMT

「レガシーコード改善ガイド」の読書会に行ってきた。今回で最終回だった。 全体的に著者の経験に基づいた実用的なテクニックが多かった。

著者の「テストコードが無いコード」== 「レガシーコード」という考え方には同意できる。 本書では、そういったレガシーコードに対するシチュエーション別の考え方が多数紹介されている。 難を言えば、サンプルコードに C++ と Java が節ごとに切り替わって、少し戸惑うことがあった。 「レガシーコード」 == 「テストコードが無いコード」に悩んでいる人は読んでみるといいと思う。

合わせて読みたい

カテゴリ ,  | コメントなし | トラックバックなし

now can add your comment to doc.okkez.net

投稿者 okkez 2010-04-10 02:27:00 GMT

Ruby reference manual (beta) の BitClust 版にコメント機能が付きました。

デザインとかちゃんと出来てないけど、動くようになっているので「一言、言いたいけどチケットを起票するのはちょっと。。。」という人はコメントしてみてください。

カテゴリ ,  | タグ  | コメントなし | トラックバックなし

using jQuery in Rails

投稿者 okkez 2010-02-20 02:00:00 GMT

最近 Rails で作っているウェブアプリケーションでは jQuery を使うようにしている。 なんとなくこうすれば良さそう、というのがわかってきたので書いておく。

google の jsapi を使う。 どこかのブログで見つけたコード片をちょっと変更したやつ。

module ApplicationHelper

  def google_jsapi_tag
    '<script type="text/javascript" src="http://www.google.com/jsapi"></script>'
  end

  def google_load_tag(name, version)
    %Q|<script type="text/javascript">google.load("#{name}", "#{version}");</script>|
  end

end

layout では以下のようにする。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
  <head>
    <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
    <meta http-equiv="Content-Script-Type" content="text/javascript" />
    <meta http-equiv="Content-Style-Type" content="text/css" />
    <%= google_jsapi_tag %>
    <%= google_load_tag 'jquery', '1.3' %>
    <%= google_load_tag 'jqueryui', '1.7' %>
    <%= javascript_include_tag 'application' %>
    <%= yield :head %>
    <%- javascript_tag do -%>
      jQuery(function($){
        if (navigator.cookieEnabled) {
          $("#cookie_check").hide();
        } else {
          $("#cookie_check").show();
        }
        <%= yield :script %>
      });
    <%- end -%>
    <%= stylesheet_link_tag 'application' %>
    <%= stylesheet_link_tag 'jquery-ui-1.7.2.custom' %>
    <title><%= @title %></title>
  </head>
  <body>
    <!-- 略 -->
  </body>
</html>

こうしておくと view では以下のように書くことができる。

<%- content_for :script do -%>
$("a#hoge").click(function(event){ /* なんか処理 */});
<%- end -%>

global な名前空間を汚さないし、割と短く書けるし気に入っている。

カテゴリ ,  | タグ , , ,  | コメントなし | トラックバックなし

Let'snote CF-Y4 with SSD

投稿者 okkez 2010-02-16 01:58:00 GMT

Debian を入れてもう5年ほど使っている Let’snote CF-Y4 がどうにも遅くなってきたのでSSDに換装する事にした。 使ったSSDはこれ。

この辺を参考にした。

Let’snote テンプレによると、今回使った Transcend の SSD は JMicron のコントローラを使っているので Let’snoteとは相性が悪いらしい。まあ、参考サイトの二番目のように動いている例もあるのだから大丈夫だろうと思って購入した。 結果的にはうまく動いていると思うが、なかなかに紆余曲折があった。

最初に換装した時には、そのままではBIOSレベルで認識しなかった。 で、色々調べて、SSD No1ピン プルアップ/Ochibi-net を見つけたので真似してみることにした。 しかし、電子工作に必要な工具類は全く持ってなかったので、友人に助けてもらった。 もちろん半田付けも友人にやってもらった。お礼兼夕食としてお寿司の出前を取った。

それでも認識しなかったので、SSDが生きていることを別のマシンにつないでチェックしてもらった。 ついでに、元のHDDに戻してもHDDを認識しなかった。

終電の時間だったので諦めて帰宅したのだけど、ふと思いついてSSDを接続しているコネクタをよく見てみたら、表裏どちらでも挿すことができる形状になっていた。「これは!」と思って裏表入れ替えて再接続して確認したらBIOSで認識した。

結論

Let’snote CF-Y4 を SSD に換装するのは可能だけど、ちゃんといろいろ確認して作業しないと思わぬトラブルになりますよ、と。

あと、Let’snote CF-Y4 の場合はプルアップ無しでもうまく動くかもしれません。

カテゴリ ,  | タグ  | コメントなし | トラックバックなし

org-mode を使ってみた

投稿者 okkez 2009-12-18 14:36:00 GMT

るびきちさんのところを見て、良さそうだと思ったのでやっと org-mode を使ってみている。

この辺。

今のところ、 org-remember を使って TODO 管理しかしていないけど、テキストファイルに 書くだけでいいというのが気に入っている。

複数マシン間のデータの共有には自宅サーバに git レポジトリを用意して共有するようにしているが、 公開しても問題ないデータなら gits や github でもいいかも。 # dropbox とかでもいいかもしれないけど、なんか信用できないので自分の自由になるところに置いてる。

上記三つ目のリンク先で紹介されている祝日表示の方法がよくわからなかったので 、試行錯誤した結果 ~/memo/agenda.org に以下のように書くとうまく表示できた。

* Calendar
%%(org-calendar-holiday)
* Inbox
** TODO ほげほげをする

で、わからないことがいくつかあって未解決。

  • TODO -> DONE に変更したあと非表示になって欲しいのだけど今のところ方法がわからない
  • deadline を設定したいのだけどカレンダーは表示されるが、エラーが出て設定できない
Debugger entered--Lisp error: (invalid-function increment-calendar-month)
  increment-calendar-month(7 2009 -1)
  calendar-mark-weekend()
  run-hooks(today-visible-calendar-hook)
  byte-code("....."
  generate-calendar-window(7 2009)
  calendar-basic-setup(nil)
  calendar()
  byte-code("....
  org-read-date(nil to-time nil nil nil nil)
  byte-code(".....
  org-add-planning-info(deadline nil closed)
  org-deadline(nil)
  call-interactively(org-deadline)
  • key-chord.el で設定した同時押しが全く効かなくなることがある (起動直後は効く。時間が経つと効かなくなる。)

カテゴリ  | タグ  | コメントなし | トラックバックなし

Debian sid with nvidia

投稿者 okkez 2009-10-15 05:49:00 GMT

Debian sid を使っているとたまに Kernel を更新する必要がある。単純に Kernel を更新してしまうと X が起動しなくなってしまい困る。そのときの更新方法をいつも忘れるので自分用のメモとして書いておく。

# 更新後の kernel で起動する
$ sudo m-a auto-install nvidia
$ sudo aptitude update && sudo aptitude safe-upgrade # nvidia-glx を更新する
$ sudo shutdown -h -r now

手順自体は上記の通りいたって簡単。更新後の kernel で起動してからモジュールを入れ直すだけ。

カテゴリ ,  | タグ ,  | コメントなし | トラックバックなし

I got a new machine.

投稿者 okkez 2009-09-18 15:08:00 GMT

自宅用に新しいマシンを組んだので適当に記録しておく。

  • CPU: AMD Phenome II X4 905e
  • MEM: DDR3 1333MHz の 2GB*2 * 2
  • M/B : Gigabyte MA770T-UD3P
  • G/B: Gigabyte GeForce 9600GT
  • HDD: seagate の SATA2 の 500GB
  • ケース : Cooler Master Sileo 500
  • 電源 : 超力 500W
  • 光学ドライブ: pioneer のバルク

こんな感じで組んで 80k+ でした。

あとディスプレイが iiyama の ProLite E2608WS で \26,800- くらいでした。

ちょっとインストールに手間取ったけど、動きはじめてからはすごく快適です。 Let’s note でちょっともたついてた勉強会の資料作成もこのマシンなら一瞬です。 ロードアベレージが 3.0 を越えても操作感がほとんど変わらないのはすごいです。

あとは仮想マシンを入れて Android の開発環境を作ればいいだけです。

カテゴリ  | コメントなし | トラックバックなし

IMAP4 over SSH tunnel

投稿者 okkez 2009-07-07 10:40:00 GMT

Dovecot + fetchmail + procmail だけで出来た。

MUA は sylpheed2.6.0 を使っている。

インストール

サーバに必要なパッケージをインストールする。

$ sudo aptitude install dovecot fetchmail procmail

aptitude で一発。

Dovecot の設定

SSH トンネルを通すので認証やセキュリティに関してはゆるゆるの設定にしてある。

fetchmail の設定

man fetchmail を見ながら書いた。

set daemon      1800
set no bouncemail

defaults:
  no mimedecode
  flush

poll mail.example.com
  protocol protocolname
  user "username"
  password "password"
  mda "/usr/bin/procmail -p -f %F"

procmail の設定

google 先生に尋ねて出てきた設定のまま。man procmailrc を見るといいかもしれない。

PATH=/bin:/usr/bin:/usr/local/bin
MAILDIR=$HOME/Maildir
DEFAULT=$MAILDIR/inbox/.
LOGFILE=$MAILDIR/procmaillog
LOCKFILE=$HOME/.lockmail

:0
./

注意

fetchmail の設定が決まるまではサーバのメールを削除しない方がいいと思う。 MUA の IMAP4 のディレクトリの設定をしておかないとエラーになる。

あとはいつものように ssh port forwarding の設定をしておけばいい。

ssh -N -f -L 10143:localhost:143 user@example.com

これで MUA の設定で IMAP4 としてつなぎにいくポートを 10143 にしておけばサーバの 143 に転送してもらえる。

カテゴリ  | タグ  | コメントなし | トラックバックなし