達人に学ぶ SQL徹底指南書 (CodeZine BOOKS)

中級以上を目指すDBエンジニアのための実践的SQL習得本。豊富なサンプルで正しいSQLの書き方、考え方が身につくとする。
前に「」とか「Head First SQL 頭とからだで覚えるSQLの基本」とか読んで、SQL面白い、集合なんだっていうあたりをもっと知りたい、と思って買ってあったんだけど、なかなか読む時間なくて。
そうこうするうちに仕事でやたらややこしいSQL組まなきゃいけなくなって、慌てて読んだ。読んだと言っても最初の方と最後の方だけだけどね(^^;
この1週間毎日あーでもこーでもとやってたのは、この本の内容で言うと、
「1-1 CASE式のススメ」の「異なる条件の集計を1つのSQLで行う」ってやつ。

pref_name |sex|population
--------------------------
徳島   |1 | 60
--------------------------
徳島   |2 | 40
--------------------------
香川   |1 | 100
--------------------------
香川   |2 | 100
--------------------------
こういう表を

県名   |男 |女
--------------------------
徳島   |60 | 40
--------------------------
香川   |100| 100
--------------------------
というように集計して、「行待ち」から「列待ち」に水平展開しましょう、というもの。
書き方は、
SELECT pref_name,
SUM( CASE WHEN sex = '1' THEN population ELSE 0 END) AS cnt_m,
SUM( CASE WHEN sex = '2' THEN population ELSE 0 END) AS cnt_f
FROM PopTbl2
GROUP BY pref_name;

となっていて、

WHERE句で条件分岐させるのは素人のやること。プロはSELECT句で分岐させる。
だそうで。
なるほどと思ったのでこの水平展開を延々とやってたんだが、ふと思った。
これってこの例では男と女の二つだけだからいいが、これがなんかの分類とかで可変要素で、しかも10も20もあったらどうすんの? と。
実際私が仕事で書いたSQLには真ん中のSUM( CASE WHEN ・・・が30行くらい並んでて、書いてしまってから、しかし、なんだこりゃと(笑)。
結局、
SELECT pref_name, sex, SUM( population )
FROM PopTbl2
GROUP BY pref_name, sex;

として出てきた結果をハッシュにして処理することにした。ま、確かに水平展開するとあたかもエクセルで処理してるかのように見やすい結果が出てくるけど、perlとかPHPから処理する時はかえって処理しづらい。
あ〜やっぱりこの作者はSQL頭の人なんだなあ〜と実感できました。

その他NULL撲滅委員会とか、プログラミング作法とか、いろいろためになる話が後ろの方に載ってて、なかなか実行はできないとは思いますが、がんばってやっていこうと思いました。
また時間を見て、コアな部分は読み直します。

達人に学ぶ SQL徹底指南書 (CodeZine BOOKS)
ミック
翔泳社
売り上げランキング: 17742
おすすめ度の平均: 5.0
5 初心者から脱出したい人向け
5 SQLの可能性を垣間見た



theme : 最近読んだ本
genre : 本・雑誌

Learning Perl

プログラミング言語perlを学ぶ本。2008年7月の第5版。
一応perl5.10対応ってことみたいです。
先日の「WEB+DB PRESS 総集編 [Vol.1~36]」で紹介されている記事を参考に、今風にperlで書くにはどうすりゃいいのか、と日々悶々としてる訳ですが、まあそれ以前に基本がなってない。「WEB+DB PRESS 総集編 [Vol.1~36]」の記事のソースが理解できない、ってことでそういう時の参考書として購入。
例えばchompとかね。最後の改行をとってくれるんだろ、という理解だから、
chomp($text = <STDIN>);

とかって書かれると途端に分からなくなる。
あとevalなんかもそうだよね。
eval { $barney = $fred / $dino };

print "An error occurred: $@" if $@;

とか。いきなりサンプルソースに出てこられる。しかもperl使いにとっては当たり前のことなので何の解説もない。ということでやっぱり手元に一冊は必要なんじゃないですかね。
こういう書き方もあるし、こういう書き方もあるけど、普通のプログラマーはこう書くよ、とかそういう説明が載ってるのでとてもよい本だと思います。
何故そうなのか、何故こう動作するのかということとかも書いてあるしね。読み物として読んでも面白い。発見があるし、飽きない。
ま、結局は自分でソース書かないとおぼえないね。


Learning Perl
Learning Perl
posted with amazlet at 08.11.13
Randal L. Schwartz Tom Phoenix Brian D. Foy
Oreilly & Associates Inc
売り上げランキング: 9856
おすすめ度の平均: 4.5
5 素晴らしきPerlの世界への案内
5 読み物としても十分面白い
5 定番書
5 初心者も持っておきたい一冊
5 CGI言語としてのPerl

theme : 最近読んだ本
genre : 本・雑誌

Beginning Perl Web Development: From Novice to Professional

perlでCGIを書くための様々な知識についての本。From Novice to Professionalってことなので、初心者からプロまで即実践で使える、はず。
オライリーの本もいいんだけど、perlはperlであってCGIではないので、さあ書くぞって段になってどう書くかなあ、と考え出すと書け出せない、というのがあり、なんかこう、肩を押してくれるような本はないものかと思ってね。買ってみた。
やー、まあ日本語の本だったらあるのかもしれないが、今年になって買った「達人に学ぶPerl/CGI道場」も「すぐわかる オブジェクト指向 Perl」もCGIはCGI.pmで、ということでテンプレート使ってないのでどうも実務には使えなくて。
なんかいい本ないすか、まじで。
第12章のThe Template Toolkitから読み始める。PHPのSmartyみたいに使う予定でいたんだけど、これ読むとTemplate Toolkitって、ほとんどCMSだ(^^;
テンプレの中で変数に値をセットしたり(配列も)、definedとかlengthとかのmethodを使ったり、ループや、IF-ELSEとか使ったり、CGIモジュールを使えばCGI.pmがそのまま使え、DBIモジュールを使えば、データベースも操作でき、で、しかも、テンプレとサイト全体の設定ファイルを用意して、ttreeってコマンドを打つと、一気にhtmlとして生成してくれる。ページの追加はテンプレを追加するだけ。
ひえーって感じ。
バッチで動かせばそのまんまCMSじゃん。もうさすがにいなくなったけど、検索エンジン対策で静的なHTMLで作ってくれ、っつーお客さんにも楽勝で対応できる(笑)。
しかも下手をすればなんちゃら.cgiとかってperlのスクリプトを書く必要もなく、テンプレだけでOK。
んなバカな。。。
取り急ぎ、そういう使い方する予定はないんだけどな。
その他、第3章Database and Perlを流し読みして終わり。後は書く時に読む。
mysqlのinsertidの取り出し方の説明で、
my $insertid = $dbh->{'mysql_insertid'};
print "$insertid\n";

In this case, the output from each run should increment, assuming that no one else is inserting data into the table at the same time!


とかって書いてあるんだけど、大丈夫なんでしょうか、この本!



theme : 最近読んだ本
genre : 本・雑誌

jQuery in Action

JavaScriptのライブラリ、jQueryの参考書。
この数週間私を苦しめた苦行の元。
jQuery、とタイトルに明確についてる本ってまだ少ないんだけど、日本で出てるやつはどう見てもデザイナー向けの、即コピペすれば使えます的な(笑)、全く応用がききそうもない本ばかりなので、やっぱ洋書かなってことでひとまずこれにしてみた。
これもamazonの.comで買ったけど、.co.jpとの価格差はすごいよ。
いやーしかしくじけたね。第2章セレクタ、第3章属性の操作(みたいの)あたりまでは楽勝、おれがやりたいこととはあんま関係ないね、なんて思って読み飛ばしてたんだけど、第4章になってお目当てのフォーム要素をいじって変化させるってののサンプルが出てきて目が点。だってこんなのだよ。


$(function(){
$('fieldset div div').hide();
$(':checkbox').click(function(){
var checked = this.checked;
$('div',$(this).parents('div:first'))
.css('display',checked ? 'block':'none');
$('input[type=text]',$(this).parents('div:first'))
.attr('disabled',!checked)
.css('color',checked ? 'black' : '#f0f0f0')
.val(1)
.change()
.each(function(){ if (checked) this.focus(); });
});
$('span[price] input[type=text]').change(function(){
$('~ span:first',this).text(
$(this).val() *
$(this).parents("span[price]:first").attr('price')
);
});
$('span[price] input[type=text]').change();
});


壮絶。なんだこりゃーって感じ。もう一回最初のセレクタから何回も勉強しなおして、1週間くらいかかってやっと理解できた。

セレクタを制すものはjQueryを制す、という感じでしょうか。

まーでもね、
$('div img')
$('div, img')
$('img', 'div')
が全部違うって言われてもねえ。。。なんだこりゃですよねえ。。。笑うしかない?
ただ「jQuery」間違いなくこれは強力です。普通のJavascriptで7〜8行で書いてたスクリプトがたったの1行で書けました。HTML側は全く汚れません。すばらしいです。
泣きながらでも勉強する価値はあります。
セレクタ、とにかくセレクタ。デザイナ(っていうかコーダーか)には変な構造作るなよって話もあるけどね。まあそれはしょうがないし。

jQuery in Action
jQuery in Action
posted with amazlet at 08.10.23
Bear Bibeault Yehuda Katz
Manning Pubns Co
売り上げランキング: 26679



theme : 最近読んだ本
genre : 本・雑誌

Firefox 3 Hacks Mozillaテクノロジ徹底活用テクニック

Firefox3の新機能の説明や、拡張機能の開発、XULアプリケーションの説明等々。
ということではあるが、なにはともあれ、このところずーっとjQueryの勉強してて、いざ書き始めるとデバッグ環境がないと話にならなくて。
Firebug入れるかあ、ってことになったんだけど、使い方がさっぱり分からんので買ってみた。
ま、他にGreasemonkeyの記事もあったし、なによりFirefox3ではクッキーとかbookmarkがSQLiteで管理されてる、という驚愕の事実が書いてあったので即買い。
なんで2800円もするんだと、レジで大いに憤慨したけど(笑)。
読んでみたら別にFirefox3のSQLiteで何ができるって訳でもなかったけどね。ID=1から順に記録が残ってるのがなんか嬉しかったかも。
Greasemonkeyもこんなもんかあ、って感じだったし。(amazonの検索結果に図書館の検索結果を重ねて出したりできる)

や、もちろんFirebugはバリバリ使ってますよ。これないと無理、絶対。
あとは、結局、載ってたおもしろそうなアドオン入れてみたってくらいですかね。

Context Search
Firebug
SearchWP
Selenium IDE
SQLite Manager

入れたのはこれくらい。そうそう、ついでなので、こないだの「WEB+DB PRESS 総集編 [Vol.1~36]」も読み直して、Selenium IDEの使い方も覚えた。とりあえずSelenium IDEだけで十分かなという感じ。


Firefox 3 Hacks Mozillaテクノロジ徹底活用テクニック
江村 秀之 池田 譲治 下田 洋志 松澤 太郎 dynamis
オライリージャパン
売り上げランキング: 54970

theme : 最近読んだ本
genre : 本・雑誌

サーチボックス
最近の記事
月別アーカイブ
カテゴリー
google
プロフィール

Author:gojotaro
自己紹介の100冊。
無理、そんなに本読んでない、
(未完)
1.蓮と刀―どうして男は“男”をこわがるのか? (河出文庫)
2.AV女優 (文春文庫)
3.春の雪 (新潮文庫―豊饒の海)
4.奔馬 (新潮文庫―豊饒の海)
5.クージョ (新潮文庫)
6.ガープの世界〈上〉
7.ガープの世界〈下〉
8.腐蝕の構造 (ハルキ文庫)
9.ヴァリス (サンリオSF文庫)
10.宇宙からの帰還 (中公文庫)
11.失われた世界 (創元SF文庫)
12.決定版 幻魔大戦〈1〉(集英社文庫)
13.アウトサイダー (集英社文庫)
14.太陽の塔 (新潮文庫)
15.火星年代記 (ハヤカワ文庫 NV 114)
16.夕ばえ作戦 (ハルキ文庫)
17.嵐が丘 (新潮文庫)
18.フラニーとゾーイー (新潮文庫)
19.月の記憶―アポロ宇宙飛行士たちの「その後」〈上〉
20.月の記憶―アポロ宇宙飛行士たちの「その後」〈下〉
21.こころ (新潮文庫)
22.地底旅行 (創元SF文庫)
23.フェルマーの最終定理 (新潮文庫)
24.物理学はいかに創られたか(上巻)
25.物理学はいかに創られたか(下巻)
26.ハックルベリー・フィンの冒険〈上〉 (岩波文庫)
27.ハックルベリー・フィンの冒険 下  岩波文庫 赤 311-6
28.日本探偵小説全集〈4〉夢野久作集 (創元推理文庫(400‐4))
29.黒猫・黄金虫 (新潮文庫)
30.ご冗談でしょう、ファインマンさん〈上〉
31.ご冗談でしょう、ファインマンさん〈下〉
32.タオ自然学
33.Holes
34.涼宮ハルヒの憂鬱
35.ぼくたちの洗脳社会 (朝日文庫)
36.甲賀忍法帖 (角川文庫)
37.Yの悲劇 (創元推理文庫 104-2)
38.ゴクミ語録 (角川文庫)
39.


ブログ内検索
RSSフィード
リンク
By FC2ブログ

今すぐブログを作ろう!

Powered By FC2ブログ

ブロとも申請フォーム

この人とブロともになる