2013-01-01から1年間の記事一覧
この投稿は Linux Advent Calender 19日目の記事です. キーボードの設定は xmodmap! Linuxの魅力は,設定のしやすさだと思っています.Windows ではレジストリを書き換えないといけないような設定でも,Linux ならテキストファイルを使って管理できることが…
Jeff Bay は The ThoughtWorks Anthology の中で,オブジェクト指向エクササイズ(Object Calisthenics)を提案しています.このエクササイズでは,次の9つのルールを守らなければいけません. メソッドのインデントは1つまで else句を使わない すべてのプリミ…
このエントリは Advent Calendar 2013 4日目の記事です.前日のエントリーは,comuttさんのvim + py.test で TDDでした. アサートファースト このエントリでは「テストコードの書き方」,特に, テストコードの中身をどの順番で書き進めるか についてまとめ…
Java & オーバーロード & コンストラクタ Javaでは,オーバーロードによって複数のコンストラクタを定義できます.例えば,Personの集合を表すPeopleクラスには,次のコンストラクタがあります. public People { private Set<Person> people; public People() { thi</person>…
SetやListなどのコレクションを全く使わないプログラミングはほとんど有り得ません.コレクションを使うとなれば,その中から特定の条件を満たすオブジェクトを抽出するメソッドが必要になることがあります.このエントリでは,コレクションに対するクエリメ…
情報を隠蔽せよ public Book { private String title; private int price; public Book(String title, int price) { this.title = title; this.price = price; } public String getTitle() { return name; } public int getPrice() { return price; } } オブ…
Jeff Bay は ThoughtWorks Anthology の中で,オブジェクト指向エクササイズを提案しています.エクササイズでは,9つのルールを守らなければいけません.それぞれのルールの解説は他の方にお任せするとして,実際にやってみてどうしても両立できなかったル…
普段からTDDでコーディングされている方にとっては当然のことだと思いますが,自分への確認と戒めの意味でまとめてみました.TDDでコードを書き出す理由は2つだけです. 1: リファクタリングのため 「グリーン」だけど「スパゲッティな」コードを改善する場…
オブジェクト指向言語の参考書では フィールドを private に フィールドの取得は getter を使って が基本のように書いていることが多いように思います.でも,その getter は本当に必要ですか?もしかしたら getter がクラス間の関係を複雑にしているかもしれ…
行を消す # 3行目を消す $ sed -e '3d' input.txt -e は "expression" の略 処理の内容が1つのときは -e は省略できる 上書きとバックアップ # input.txt に処理内容を上書き $ sed -i '3d' input.txt # input.txt.org という名前でバックアップをとる $ sed…
LANG=C ifconfig eth0 | grep "inet addr" | awk '{ print $2; }' | cut -d: f2
グループについての設定ファイル /etc/group が設定ファイル. $ cat /etc/group | grep your your:x:1000: # グループ名:グループパスワード:GID:グループメンバ グループパスワードはシャドウパスワードを使うのが普通なので x と表示される. グループメ…
オブジェクト指向開発で重要なこと 責任の割り当て (responsibility assignment) オブジェクト指向分析 (OOA) プログラミングによって解決したい問題の概念を説明すること オブジェクト指向設計 (OOD) OOAで見つけた概念をソフトウェア上のオブジェクトとし…
少しずつ読んでいこうと思う.買った後に知ったけど,ファウラーさんが激押ししてた. "People often ask me which is the best book to introduce them to the world of OO design.Ever since I came across it, Applying UML and Patters has been my unre…
# add コマンドの実行結果を確認する # インデックスには追加されない $ git add -n * $ git add --dry-run * # インデックスへの追加 $ git add main.tex # インデックスから削除 $ git reset main.tex
// 今まではこれで初期化してました Set<Integer> s = new HashSet<>(Arrays.asList(1, 2)); // Guava を使えば,少しだけ短くなります Set<Integer> s = Sets.newHashSet(1, 2); // 空集合の初期化はCollectionsを使うほうが好き // 意図が伝わる気がするので. Set<Integer> s = Colle</integer></integer></integer>…
CSVファイルから読み込み load data ifile '[file]' into table [tab] [options]; オプションに指定できるのは下の3つ. option defalut 意味 fields terminamted by '\t' 区切り文字 lines terminamted by '\n' 改行文字 ignore [n] lines 0 スキップする行…
ストレージエンジン関連のコマンド MySQLでデータは以下のいずれかのストレージエンジンによって管理されている. MyISAM InnoDB(デフォルト) ISAM MEMORY MERGE # ストレージエンジンの確認 show create table [tab]; # 見やすく表示(Gは大文字で) show…
Eclipse Market Place から m2e をインストール Mavenを使えるようにする キーバインドをEmacs風に 作業対象URL: http://www.mulgasoft.com/emacsplus/update-site若干キーバインドをいじる Command binding When Category Delete Previous C-h Editing Text…
ストアドプロシージャの作成と実行 # デリミタを ; から // に変更 delimiter // # プロシージャ定義 create procedure [proc] begin ... end // # デリミタを ; に戻す delimiter ; # 呼び出し call [proc]; # 引数ありのプロシージャ定義 create procedure…
ビュー # ビューの作成 create view [view] as select...; # ビューの更新 update [view] set [col] = [new value] where ...; # ビューの確認 # テーブルへの操作と同じやり方で確認できる. show tables; desc [view]; show create view [view]; ビューと…
複数のテーブルから抽出 (select [col] from [tab1]) union (select [col] from [tab2]); # 3つ以上の union も可能 (select [col] from [tab1]) union (select [col] from [tab2]) union (select [col] from [tab3]); # 条件付き抽出 (select [col] from [t…
あるカラムのデータをまとめて変更 # 全てのレコードを変更 update tb set [col] = [value]; # 条件に合致するレコードのみ変更 udpate tb set [col] = [value] where ...; # ちょっとした応用 # 成績の良い10人に「成績上位者」と表示 update tb set memo =…
グルーピングしてフィルタリング グループ化した値についてのフィルタリングは having を使う. select name, sum(point) from tb group by name having avg(point) >= 60; フィルタリングしてグルーピング where でレコードのフィルタリング,そのあとでグ…
select文の小技 # カラムの入れ替え SELECT [col]... FROM [tab]; # エイリアス SELECT [col] as [alias]... FROM [tab]; # 四則演算 SELECT [col][+-*/][n]... FROM [tab]; # 平均,合計,個数 SELECT AVG([col]) FROM [tab]; SELECT SUM([col]) FROM [tab]…
テーブルの複製 テーブルのカラム構造とデータを複製 CREATE TABLE [dst-tab] SELECT * FROM [src-tab]; 属性が変更されることがあるので,DESCコマンドで確認する癖をつける. テーブルのカラム構造を複製 CREATE TABLE [dst-tab] LIKE [src-tab]; テーブル…
カラムの変更 カラムのデータ型を変更 カラムの順番を変えるときも ALTER TABLE コマンドを使う. ALTER TABLE [tab] MODIFY [col] [dtype]; カラムを追加 # 末尾に追加 ALTER TABLE [tab] ADD [col] [dtype]; # 先頭に追加 ALTER TABLE [tab] ADD [col] [dt…
ふと思い立ってEmacsの置換について復習したら、色々と発見があったので。 クエリ置換の実行方法 素直に実行 M-% クエリ置換に入る C-u M-% 単語単位のクエリ置換に入る 単語単位の置換では,large を small にする置換のとき "very large" は "very small" …
インストール $ sudo apt-get install mysql-server 文字化け対策 やっぱりlinuxの恒例行事は避けて通れないようで,文字コードを utf8 で統一する. $ cd /etc/mysql # my.cnf の [mysqld] セクションに以下を追加 # character-set-server = utf8 # skip-ch…
(第1版)griupByを使う ある要素がリストにいくつ含まれているかを数えたMapを作って比較してる。 scala> def toGroupMap(l: List[String]): Map[String, Int] = | l.groupBy{ identity }.map{ case (k, v) => (k, v.size) } toGroupMap: (l: List[String])…