こちらもオススメ!!

ハンドブック同人誌を同時購入すると
400円値引き!

コンパチブル・シェルスクリプティング

700円→300円

現在,カゴに 冊入っています


                linkto_oldcontents linkto_sitemap  
  menu_top   menu_aboutus   menu_coterie  
    menu_inquiry   menu_link   menu_blog
発行物紹介
 
発行物一覧

  ▼次回イベント情報

  ▼すべての発行物

  ▼ご注文方法

頒布中発行物

  Win/Mac/UNIX
すべてで20年動くプログラムはどう書くべきか

  あの紀文(ひと)は今、キッコーマン。(改)

  Shell Script
ライトクックブック
2014-2016

  鳥と太陽の紋章を受け継ぎし者たち

  コンパチブル・シェルスクリプティング

  すべてのUNIXで20年動くプログラムはどう書くべきか

  キッコーマンの
飛んでる豆乳
飲みたい紀文

  本当は身近な
うつ病のはなし

頒布終了発行物

  あの紀文(ひと)は今、
キッコーマン。

  すべてのUNIXとWindowsで20年動くプログラムはどう書くべきか

  Shell Script
ライトクックブック
2014-2015

  ななか Inside Press vol.5

  リッチな
コンピューター入門

  リッチな
サーバー構築
VOLUME1 DS

  Shell Script
ライトクックブック

  笑顔になりたい

  Googol Mac
Like Racks 第1版

  リッチな
サーバー構築
VOLUME2

  できねPROmini
Chromium OSクラウドコンピューティング

  できねPRO
そろそろIPv6事始め

  できねPRO
快適データ通信

  TeX同人誌用
栄養補助食品
 
  カバー・タイトル
 
表紙:すべてのUNIXとWindowsで20年動くプログラムはどう書くべきか

すべてのUNIXと
Windowsで20年動く
プログラムはどう書くべきか

デプロイ・保守に苦しむ エンジニア達へ贈るシェルスクリプトレシピ集

松浦智之 著,USP研究所 監修,C&R研究所 発行

2015年7月24日 初版発行
2016年4月1日 妄想特別装丁版発行

A5版 2色刷 256ページ
本体2,700円+税216円

【販売終了!】現在,カゴに 冊入っています


Amazonでは売ってないぞ!

普通のが欲しい人はこちら

目次を表示(別ウィンドウ)正誤表(2015/09/22更新)

▲トップに戻る


  Windows10へのUbuntu Linux搭載記念、特別企画
 

特別版を2016/04/01限定で販売!

3/31日,この夏にリリースされるWindows10最新版にUbuntu Linuxが公式に取り込まれるというニュースが世界を駆け巡りました.これはすなわち何を意味するか…….そうです,POSIX原理主義がUNIXの枠を超え,Windowsでも通用する時代が来ることを意味するのです!!

そんな未来を1年くらい先取りしていた本書を著者自らが勝手に祝福し,「本書が改訂されたらきっとこんなふうになるに違いない!」と妄想し,カバーをデザインしました.

こんな妄想ネタ本がホントに欲しいという奇特な方.いいでしょう!家内制手工業でこのウソカバーを,著者自らが丹精込めて作ってホントに売ります.こんなものAmazonでは買えませんよ.ここでの直販のみですからね.

▲トップに戻る


  本の内容
 

「速い」「簡単」でも,流行り廃りの激しいソフトはもう懲り懲り!

「高速です」「簡単です」とは主張する一方で,「どこの環境でも動きます」とか,ましてや「長年に渡って動き続けます」などと主張する言語やライブラリー,フレームワークはほどんど聞かない.それらがバージョンアップしたり廃れたりするたび,苦労を強いられてきた.

そんな苦労から解放してくれる言語とは,意外にも書き捨て言語と言われることの多いシェルスクリプトなのである.さらに意外に思うかもしれないが,シェルスクリプトでも実用的な速さのプログラムが書けるのである.ただしそれには,POSIX規格の遵守やUNIX哲学の実践が欠かせない.

本書では,プログラミング上よくある課題を,極力POSIXの範囲で,かつUNIX哲学的アプローチで解決しているシェルスクリプトを多数例示し,高い可搬性・可用性を持ちつつも実用的なプログラムを書く方法を紹介する.

本書でわかる,5つのこと

  1. 環境依存せず,長持ちするプログラムの書き方(環境依存を引き起こす落とし穴)
  2. 環境依存しない正規表現の書き方
  3. シェルスクリプトで処理を行うための,たくさんの小技(レシピ)
  4. シェルスクリプトも,意外と速くて機能も豊富という事実
  5. プログラム制作でも参考になる,UNIX哲学

本書の実用性を疑う人が見るべきデモ

「シェルスクリプトで,しかもPOSIX原理主義でマトモなアプリなんて作れるわけないだろ.寝言は寝て言え!」と思っている人は次のアプリ(デモ)を見てもらいたい.

  • Ajaxで時計を更新するデモ
  • HTTPセッション管理をするデモ
    • シェルスクリプトで実装したCookieを駆使
  • 郵便番号から住所を引くデモ
    • 日本郵便が提供しているCSVデータをシェルスクリプトでパース
    • データは全部で約14万レコードだが,果たして何秒で答えを出すか?
  • 東京メトロ車両位置情報表示プログラム「メトロパイパー」
    • Web APIからJSONで渡ってくる車両位置情報をパース
    • HTMLをプログラムから分離,Webデザイナーとの協業を実現
  • 侵略型ショッピングカート「シェルショッカー1号男」
    • このサイト自体がデモサイト(たとえばここ
    • PayPal Web APIを叩き,オンライン決済が可能
    • よそのCMSやサイトをショッピングカート化することも可能(→
    • スライドも参照

実用性はいかがだろうか.本書の中でももちろん紹介&解説.

▲トップに戻る


  同人誌版と商業版
 

なんと、同人誌版も頒布継続!!

本書は、同人誌として作ってきた「ShellScriptライトクックブック2014」が元になっています.本来ならば商業本に発行に伴って同人誌版は販売を終了するとろですが,出版社の粋な計らいで販売継続できることになりました.

その大きな理由の一つは,本書で紹介しているプログラムを実演するためです.本書ではシェルスクリプト製のショッピングカートを紹介していますが,同人誌版はそのショッピングカートで通信販売しています.つまり,本書(商業版)の内容に実用性があることを実証するためにこその販売継続なのです.

C&R研究所さんスバラシい!ありがとうございます。

でも同人誌版とは完成度が違う!

そうなると,果たして商業版が存在する必要があるのかと戸惑うかもしれません.しかし,ハッキリ言って完成度が全然違います.同人作家としては自分の実力不足を痛感して少し悔しいところですが,さすがそれでメシを喰っている方々の本気には敵いません.

同人誌版との5つの違い

  1. 誤字、表記揺れに対するプロ編集者からの厳しいツッコミ
  2. 素人のTeX組みでは敵わないプロ編集者による組版
  3. しかも2色刷りで圧倒的に見やすい
  4. 書き下ろしコラム付き(7本)
  5. トドメの索引付き

同人誌版を購入済という方も,一度書店で眺めて判断する価値は大いにあります.

▲トップに戻る


  正誤情報
 

発行後に見つかった訂正情報について報告します.ご購入いただいた皆様にはご迷惑をお掛けして申し訳ございませんが.下記の正誤情報をご覧ください.

25ページ,表2.2「置換前文字列のメタ文字一覧」内、2つ目の「\{n\}」

  メタ文字 意味
\{n\}
【繰返し指定子】直前に記述した文字がn文字以上連続していることを指定し、後続の繰返し指定子よりも優先して可能な限り最大数マッチさせようとする。
\{n,\}
【繰返し指定子】直前に記述した文字がn文字以上連続していることを指定し、後続の繰返し指定子よりも優先して可能な限り最大数マッチさせようとする。

33ページ,2つ目のコンソール「■GNU版AWKでも文字列〜」内

$ awk 'BEGIN{print "010"*1}'
10
$ echo 010 | awk 'BEGIN{print $1*1}'
10
$
$ awk 'BEGIN{print "010"*1}'
10
$ echo 010 | awk '{print $1*1}'
10
$

58ページ,「■改行コードへの置換をキレイに書く」リスト内

# --- sedにおいて改行コードを意味する文字列の入った変数を作っておく ---
LF=$(printf '\\n_')
LF=${LF%_}
# --- sedにおいて改行コードを意味する文字列の入った変数を作っておく ---
LF=$(printf '\\\n_')
LF=${LF%_}

69ページ,「■元のパーミッションとACLを維持〜」リスト内6行目

	  [^-]*) echo "Not a regular file" 1>&2;exit 1;;
	  [!-]*) echo "Not a regular file" 1>&2;exit 1;;

87ページ,1つ目のコンソール「■ダミーの会員リスト〜」内

$ dd if=/dev/urandom bs=1 count=20000 2>dev/null |
> od -A n -t x2 -v                               |
$ dd if=/dev/urandom bs=1 count=20000 2>/dev/null |
> od -A n -t x2 -v                                |

102ページ,「■UNIX時間から日常の時間〜」リスト内下から7行目

  D = days_from_epoch - days_on_Jan1st_from_epoch + 1;
  D = days_from_epoch - days_on_Jan1st_from_epoch[Y] + 1;

158,161ページ,「■前述のフォームから送られてきた〜」リスト内8-9行目

fullname=$(nameread fullname $tmp-cgivars)
email=$(nameread email $tmp-cgivars)
fullname=$(nameread fullname $Tmp-cgivars)
email=$(nameread email $Tmp-cgivars)

172ページ,コンソール

$ cat mail2.txt | while read -r line; do
>   case "$line" in
>     '') echo
>         cat | base64
>         ;;
>      *) printf '%s\n' "$line"
>         ;;
>   esac
> done
$ 
$ CR=$(printf '\r')
$ cat mail2.txt | while read -r line; do
>   case "$line" in
>     '') echo
>         cat                             |
>         sed '/[^'"$CR"']$/s/$/'"$CR"'/' |
>         sed '/^$/s/$/'"$CR"'/'          |
>         base64
>         ;;
>      *) printf '%s\n' "$line"
>         ;;
>   esac
> done
$ 
これは,base64コマンドに流し込む前にメール本文の改行コードをCR+LFに変換する作業が抜けていたことが判明したために追加したものです.

173ページ,「■「ハロー、email!」をエンコード」コンソール内1行目

白抜きのコメント「←改行コードが入らないように-nオプションを付ける」は不要です.

187ページ,「■掲示板の投稿者名〜」リスト内11-12行目

name=$(nameread name $tmp-cookievars)
email=$(nameread email $tmp-cookievars)
name=$(nameread name $Tmp-cookievars)
email=$(nameread email $Tmp-cookievars)

他にも判明した場合には随時報告致します.

▲トップに戻る


  その他情報
 

クレジット

This book is the 15th work of the Rich Laboratory.
Copyright © 2016 Tomoyuki Matsuura (Matsura Rich Laboratory), All rights reserved.

▲トップに戻る

 
 
nearly_valid_html401
[Powered by FreeBSD]
Powered by Apache
     
 
Copyright © 2007 Matsura Rich Laboratory, All rights reserverd.