タグ:IT ( 110 ) タグの人気記事
Mac 的簡易タイマー
% sleep `expr 60 \* 30`; say "it's time"

タイマーが欲しかったので。
ググるより書いた方が速いものの典型。
[PR]
by fkmn | 2009-10-13 23:55 | 日記
RDB で階層化されたデータを扱う -入れ子集合モデル-
さて今回は、「RDBで階層構造を扱うには?」です。
あるサイトを構築中に階層構造をもったカテゴリ構造にすることになり、DBでどのように扱うか悩みました。

ウノウラボ Unoh Labs: RDBで階層構造を扱うには?

 以前、RDB で階層化されたデータを管理できたら便利なシステムを作る必要があって、ちょっと調べたりした事があったなぁ。結局、そこまできちんと階層構造を管理する必要は無くて、別の方法で対応しちゃったけど。

 入れ子集合モデルは、RDB (もしくは SQL) の柔軟さをよく示すモデルで、初めて知ったときは目から鱗が音を立てて崩れ落ちた。いつか使ってみたいなぁ。

See also:

[PR]
by fkmn | 2009-06-25 23:55 | 日記
「C# エッセンシャルズ」まとめ その4

2.13 デリゲート (p.70, 71)

 メソッドを関数オブジェクトっぽいものに変換する機能。名前とメソッドシグネチャを含めて宣言を行う。new の引数にメソッドを渡してインスタンスを作成する。
delegate bool Filter(string s);

class Test {
static void Main() {
Filter f = new Filter(FirstHalfOfAlphabet);
Display(new String[] {"Ant", "Lion", "Yak"}, f);
}

static bool FirstHalfOfAlphabet(string s) {
return "N".CompareTo(s) > 0;
}

static void Display(string[] names, Filter f) {
int count = 0;
foreach(string s in names) {
if (f(s)) // デリゲートの呼び出し
Console.WriteLine("Item {0} is {1}", count++, s);
}
}
}

 デリゲートの += メソッドを使って、複数のメソッドの保存と呼び出しを行うことができる。
using System;
delegate void MethodInvoker();
class Test {
static void Main() {
new Test(); //=> "Foo", "Goo"
}
Test () {
MethodInvoker m = null;
m += new MethodInvoker(Foo);
m += new MethodInvoker(Goo);
}
void Foo() {
Console.WriteLine("Foo");
}
void Goo() {
Console.WriteLine("Goo");
}
}


以下、「C#エッセンシャルズ」には無い話。

C# 2.0 からは メソッドからデリゲートへの暗黙の変換が可能になったらしい。上の例は、こう書ける。
delegate bool Filter(string s);

class Test {
static void Main() {
Filter f = FirstHalfOfAlphabet; // 暗黙に変換
Display(new String[] {"Ant", "Lion", "Yak"}, f);
}

static bool FirstHalfOfAlphabet(string s) {
return "N".CompareTo(s) > 0;
}

static void Display(string[] names, Filter f) {
int count = 0;
foreach(string s in names) {
if (f(s)) // デリゲートの呼び出し
Console.WriteLine("Item {0} is {1}", count++, s);
}
}
}

匿名メソッド
 C# 2.0 から匿名メソッドというものが導入された、、、が、もっと便利な構文 (ラムダ式) が C# 3.0 から導入されたようなので、省略。

ラムダ式
基本形 (式形式)
(input parameters) => expression

 パラメータの括弧は、パラメータの数が1つの場合は省略可能。パラメータの型は、コンパイラによる型推論が可能な場合は省略可能。
x => x > 0;
(x, y) => return x + y;
(int x, string s) => s.Length > x

本体部分が複数のステートメントからなる場合は、中括弧でくくる (ステートメント形式)。
n => {
string s = n + " " + "World";
Console.WriteLine(s);
}

標準ジェネリックデリゲート
基本形
Func<TParam1, TParam2, ..., TResult>

TParam1やTParam2 に引数の型を、Tresult に返り値の型を指定する。これを使って、最初の例を書き直してみると、
class Test {
static void Main() {
Display(new String[] {"Ant", "Lion", "Yak"},
s => "N".CompareTo(s) > 0); // ここがラムダ式
}

// 標準ジェネリックデリゲートでラムダ式を受け取る
static void Display(string[] names, Func f) {
int count = 0;
foreach(string s in names) {
if (f(s)) // デリゲートの呼び出し
Console.WriteLine("Item {0} is {1}", count++, s);
}
}
}
最初の例と比べると、かなり簡潔に書けるようになった。

 Java陣営が、クロージャを導入するとかしないとか言っている間に (結局、JDK7 には入らないみたいだけど) C# の関数型機能がこんなに充実しているのに驚き。

参考:
デリゲート (C# によるプログラミング入門)
関数型言語由来の新機能 (C# によるプログラミング入門)
MSDN: Func(T, TResult) デリゲート (System)
[PR]
by fkmn | 2009-04-13 23:55 | IT
Merb が Rails に merge されるとな!?
まだ、ちゃんと内容をチェックしきれてないんですが・・・

 Rails は、怒濤のように状況が変化するのが面白いは面白いんだが、お仕事に使いたい人間としては、もうちょっと落ち着いてくれてもいいんじゃないかと思う次第。

 Rails 3 リリース以降も Rails 2.X 系がメンテされれば問題は無いんだけど。
[PR]
by fkmn | 2008-12-24 23:55 | IT
GitX - Mac用 Git GUI
Git リポジトリを視覚化するツール「GitX」 - kwatchの日記
GitX

 Mac上の gitk は遅くて使い物にならないんだけど、この GitX は動作が軽快で結構よさげ (使い込んだわけじゃないので、まだちゃんとした評価はできないけど)。

 ま、でも、基本的にコマンドラインで十分だと思うんだよなぁ。コミットの流れを見るときは、GUI の方がもちろん便利だとは思うけどね。

a0057891_1375763.jpg

a0057891_138599.jpg

[PR]
by fkmn | 2008-10-23 23:55 | IT
moccur-grep-find で .svn 以下のファイルを無視する
Emacs でソースコードの検索/置換をするときに欠かせないのが moccur-edit

すごく便利で重宝してるんだけど、moccur-grep-find を実行したときにバックアップファイル(ファイル末尾が "~")とか .svn 以下のファイルまで引っ掛けてしまうので、.emacs にこんな感じで無視するファイルの設定を追加している。
(setq dmoccur-exclusion-mask
(append '("\\~$" "\\.svn\\/\*") dmoccur-exclusion-mask))

これで、上記のファイルは無視されるようになる。

# 「svk とか git 使ったら?」というツッコミはスルーするのでよろしくw


ちなみに、デフォルトの dmoccur-exclusion-mask の設定は以下のような感じ。

(defcustom dmoccur-exclusion-mask
'( ;; binary
"\\.elc$" "\\.exe$" "\\.dll$" "\\.lib$" "\\.lzh$"
"\\.zip$" "\\.deb$" "\\.gz$" "\\.pdf$"
;; Microsoft
"\\.doc$" "\\.xls$" "\\.ppt$" "\\.mdb$" "\\.adp$"
;; image
"\\.jpg$" "\\.gif$" "\\.tiff$" "\\.bmp$" "\\.png$"
"\\.pbm$")
"*List of file extensions which are excepted to search by dmoccur."
:group 'color-moccur
:type '(repeat regexp)
)
圧縮ファイルとか画像ファイルなんかのバイナリファイルを無視するようになっている。
[PR]
by fkmn | 2008-07-16 23:55 | IT
富士通のカイゼンという名のアジャイル
NIKKEI NET:富士通、開発に「カイゼン」手法 効率化で期間短縮
 開発現場を5—10人の小グループに分け、技術者一人ひとりが「仕様書の作成」「画面作成」など作業の日程をボードに張り出したり、作業上の課題を書き出したりする。作業の遅れや問題点を見た他の人は応援やアドバイスをする。

「カイゼン」なんて言ってるけど、要はアジャイルだよね、コレ。


そういえば、富士通の人がデブサミで同じような発表をしていたのを思い出した。

デブサミ2008>業務パッケージ開発におけるアジャイル開発実践記
私たちのプロジェクトではトヨタ生産方式・見える化の観点をベースにアジャイル開発に取り組んで来ました。

 富士通みたいな国内企業だと、「アジャイル」とか言うよりも「カイゼン」って言った方が、偉いおじさんたちには効果があるんだろうな。こういうアプローチを考えられる人はスゴイと思う。
[PR]
by fkmn | 2008-07-10 23:55 | 日記
Linux/Unix のシェルで高速タイピングをするためのTips
当たり前すぎて、だれも書かないシリーズ。

 Linux/Unix のシェルでは、Ctrl+何かのキー という組み合わせで、ホームポジションから手を離さずに、各種の入力を行うことができる。この辺がまとまってる記事をあまり見たことが無いのでまとめてみた。bash と zsh で確認 (Bourne系は共通?)。Emacs と共通したキーバインドが多い。

カーソル
  • Ctrl + f => カーソル右 (Forward)
  • Ctrl + b => カーソル左 (Back)
  • Ctrl + p => カーソル上 (過去に入力したコマンドの表示、Previous)
  • Ctrl + n => カーソル下 (Next)
  • Ctrl + a => 行の先頭に移動 (a はアルファベットの最初の文字)
  • Ctrl + e => 行の最後に移動 (End)

特殊キー
  • Ctrl + i => TAB (コマンドの補完)
  • Ctrl + j => ENTER
  • Ctrl + h => Backspace
  • Ctrl + d => DELETE (Delete)
    その他
    • Ctrl + r => 過去に打ったコマンド (history) からインクリメンタル検索
    • Ctrl + k => カーソルから後ろの文字をすべて消去


     今年の新人さんあたりに教えてあげたい感じ。


    6/29 追記
     当たり前すぎて誰も書かない、と書いたけど、鵜飼さんによるラインエディットに関するまとめテキストを見つけました。以下のURLから読めます。このエントリよりも全然詳しいので、そっちを読んだ方が100倍ましかも。

    便利なshell
    [PR]
by fkmn | 2008-06-20 23:55 | IT
eof = ^D; というお話
なんでターミナルでCtrl-Dを打つとEOFになるのかみたいな話を読むと歳の差を感じてしまうなあ。
Practical Scheme
Ctrl-D が入力されるとプログラムの標準入力に EOF が入力されます。
Ctrl-D の話 - ひげぽん OSとか作っちゃうかMona-

な、なんだってー(AA略
全然知らなかった、そんなこと。

実は、今、C言語を勉強中だったりして、K&Rに出てくる下のようなコードで、標準入力から EOF ってどうやって入力するんだろなー、なんて気になってたところ(今までは Ctrl-C で止めてた)。

#include

main()
{
int c;

while ((c = getchar()) != EOF)
putchar(c);
}

プログラミング言語C 第2版 (p.21)
確かに、Ctrl-D を入力すると、プログラムが終了する。



他にも、ひげぽんさんのエントリのコメント欄で話が続いていて面白い。でも、ホント、他でこういう記事とか見たこと無いなぁ。
[PR]
by fkmn | 2008-06-03 23:55 | IT
LL Future のチケットを予約した
トップ | Lightweight Language Future
LL Futureのチケット購入:Drkcore 経由)

うぉ、チケット販売がいつの間にか始まっていた。全くのノーマークだったよ。
ということで、慌てて予約。一応記念なので、Tシャツ有りのチケットにした。

しっかし、なんというか、ローソンチケットはどんどんアレな感じになってくなぁ・・・。「システム利用料 ¥210/枚」、「店頭受取手数料 ¥105/枚」って、どんだけ。
[PR]
by fkmn | 2008-06-01 23:55 | 日記


とあるWebアプリケーションエンジニアの日記
S M T W T F S
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
カテゴリ
以前の記事
ブログパーツ
リンク
検索
タグ
最新のトラックバック
プログラミングが「出来る..
from とりあえず9JP?
Genographic ..
from ナンジャモンジャ
ジュセリーノ
from ありの出来事
くちこみブログ集(ライフ..
from くちこみブログ集(ライフ)(..
以降、丁寧語で行こう!
from エッセイ的な何か
その他のジャンル
ファン
記事ランキング
ブログジャンル
画像一覧

fkmnの最近読んだ本 フィードメーター - フッ君の日常 あわせて読みたい AX