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

  ▼次回イベント情報

  ▼すべての発行物

  ▼ご注文方法

頒布中発行物

  逃し弁コマンド

  速読とフラッシュ暗算…できる?

  シェルスクリプト人類のWebSocket

  先生、わかりません!

  トキデリ

  電車バス断ち 自転車生活を 1年8カ月 続けた結果

  File/Dir Hacks ver.1.0

  File/Dir Hacks ver.0.2

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

  初めてのPOSIX原理主義

  平成最後のフレンズかんそくたい

  そんなにあるのか チップスター図鑑

  ポプテピツイ

  フレンズかんそくたい

  ついったーちほーの最大瞬間風速

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

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

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

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

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

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

頒布終了発行物

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

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

  すべての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同人誌用
栄養補助食品
 
  カバー・タイトル
 
表紙:File/Dir Hacks ver.1.0

POSIX原理主義の本 第3弾

File/Dir Hacks ver. 1.0
SQLtoUNIXマイグレーション編
追記版

リッチー大佐 (著)

2018/8/10(コミケ94) 0.1版発行
2019/12/31(コミケ97) 0.2版発行
2021/12/31(コミケ99) 1.0版発行
A5版 174ページ

目次を表示,→訂正情報はこちら
①冊子+PDF版 頒布価格1200円【税込】
(学生・教職員無料対象品)

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

②PDF単独 現在無償公開中
(本書は電子版無償公開商品です)

今後の改訂でより良い内容にするために、
ご意見をください

▲トップに戻る


  本の内容
 

FileとDirですべて解決、シンプル・超堅牢なアプリ・システム開発術

本文サンプル(1)

「シェルスクリプトでシステム開発」と言われても,「ろくな開発ライブラリーが揃ってないじゃないか!」と不満を口にし,始めから眼中にないという方,多くありませんか?

見くびってはいけません.シェルスクリプトでも十分に開発ができます.でも多くのプログラミング言語が持っているようなライブラリー類に頼るのではありません.少々のUNIXコマンドと,ファイル・ディレクトリーを,頭を使って使いこなし,やりたい処理を実装していくのです.

コンピューター化される前の紙の時代,人々は業務で降りかかる様々な作業をどのようにこなしていたのでしょうか.答えは「書類」です.業務で発生する様々な情報を,まとめ方(フォーマット)を工夫しながらノートや札に記録し,それを机の棚や引き出し,倉庫,掲示板などに整理整頓しつつ保管・参照・更新をしていました.

ということは,突き詰めて考えれば,紙の時代に人々がこなしていた情報管理やタスク管理はみな,書類や札,そして棚,引き出し,倉庫,掲示板等のデータ構造をファイルやディレクトリーに写像すれば実現できるはずなのです.

この理屈に基づき,RDB製品が行っていたデータ管理から,トランザクション処理などのタスク管理をファイル・ディレクトリーでこなすテクニック,さらにはSQL文をUNIXコマンド・シェルスクリプトに置き換える方法を解説した本です.もはや移植性や維持管理で足を引っ張る言語やライブラリー類は要りません.どのOSにも始めから入っているファイルシステムとUNIXコマンドだけで,しがらみから解放されたプログラミングを実現しましょう.

ver. 1.0 版の目次

1.0版では主に様々なSQLの句をUNIXコマンドやシェルスクリプトに翻訳する方法を追記しました.

以下に目次を示します.強調してある項目が1.0版での追加部分です.(7-10章はすべて)

  • 第1章 File/Dir データ管理術事始め
    • HACK 1.1 まず、何を重要視するかを確認する
    • HACK 1.2 見やすさ・分かりやすさを追求する
    • HACK 1.3 無理なく速さを追求する
    • HACK 1.4 強靭さ"robustness"を追求する
    • HACK 1.5 データやディスク容量をケチらない
    • HACK 1.6 システムを擬人化し、手作業時代の構造を写像する
    • HACK 1.5 File/Dirデータ管理術用コマンドセット"ShellShoccar"のインストール
  • 第2章 データ管理のためのファイルの使い方
    • HACK 2.1 「列区切りは、半角空白1個以上」と決める
    • HACK 2.2 文字列中の半角空白は、"_"(アンダースコア)で表す
    • HACK 2.3 改行・タブ等のその他特殊文字はバックスラッシュ記号でエスケープする
    • HACK 2.4 NULL値は、"-" や"*" などの記号1 文字で表す
    • HACK 2.5 ファイルフォーマットの種類を把握する
    • HACK 2.6 SSV形式(広義のfield 形式)
    • HACK 2.7 key-value 形式(name 形式)
    • HACK 2.8 JSONPath-value形式・XPath-value形式
    • HACK 2.9 CSVindex-value 形式
    • HACK 2.10 ファイルは、常にソート済の状態での保存を心がける
    • HACK 2.11 一時ファイルも必要なら使う
  • 第3章 データ管理のためのディレクトリーの使い方
    • HACK 3.1 RDBのテーブル1 つ̸= ファイル1 つ
    • HACK 3.2 1つのディレクトリー直下のファイル数≦10000
    • HACK 3.3 内容更新する1 つのファイルに収める行数≦10000
  • 第4章 実は排他制御不要な排他処理
    • HACK 4.1 単調増加カウンターは追記リダイレクションで作る
    • HACK 4.2 複数プロセスから同一ファイルの内容を更新しない設計にする
    • HACK 4.3 ファイル更新の最後にはmvコマンドを使う
    • HACK 4.4 小さなファイルをディレクトリーに並べる
    • HACK 4.5 加工元データファイルに加工後データを上書かない
    • HACK 4.6 その他、アトミックな処理を活用する
  • 第5章 排他処理(トランザクション処理)
    • HACK 5.1 排他ロックは「lnなどの早い者勝ち」ルールで捌く
    • HACK 5.2 共有ロックは、ディレクトリーでメンバー管理する
    • HACK 5.3 セマフォ制御は、共有ロックに最大共有数を設けて対応する
  • 第6章 非同期キューイング -- 食券方式な食堂の注文管理
    • HACK 6.1 キューイングは、食券方式の食堂を真似する
    • HACK 6.2 規模や複雑さが増したら、大規模な食堂の仕組みを真似る
  • 第7章 SQL to UNIXマイグレーション(1) ― コマンド
    • HACK 7.1 SELECTコマンド
    • HACK 7.2 INSERTコマンド
    • HACK 7.3 UPDATEコマンド
    • HACK 7.4 MERGEコマンド
    • HACK 7.5 DELETEコマンド
    • HACK 7.6 TRUNCATEコマンド
    • HACK 7.7 DROPコマンド
    • HACK 7.8 CREATE / ALTERコマンド
  • 第8章 SQL to UNIXマイグレーション(2) ― 選択の句
    • HACK 8.1 FROM句
    • HACK 8.2 UNION、UNION ALL句
    • HACK 8.3 EXCEPT / MINUS句
    • HACK 8.4 INTERSECT句
    • HACK 8.5 WHERE句
    • HACK 8.6 GROUP BY句
    • HACK 8.7 HAVING句
    • HACK 8.8 DISTINCT句
    • HACK 8.9 [NOT] (LIKE / REGEXP / SIMILAR TO)句
    • HACK 8.10 [NOT] BETWEEN句
    • HACK 8.11 [NOT] IN句
    • HACK 8.12 ANY / SOME句
    • HACK 8.13 ALL句
    • HACK 8.14 CASE句
    • HACK 8.15 LIMIT句
  • 第9章 SQL to UNIXマイグレーション(3) ― ソート・結合の句
    • HACK 9.1 ORDER BY句
    • HACK 9.2 INNER JOIN句
    • HACK 9.3 LEFT [OUTER] JOIN / RIGHT [OUTER] JOIN句
    • HACK 9.4 FULL [OUTER] JOIN句
    • HACK 9.5 CROSS OUTER JOIN句
  • 第10章 SQL to UNIXマイグレーション(4) ― 関数
    • HACK 10.1 ABS関数
    • HACK 10.2 ACOS関数
    • HACK 10.3 ASIN関数
    • HACK 10.4 ATAN / ATAN2関数
    • HACK 10.5 AVG関数
    • HACK 10.6 CAST / CONVERT関数(データ型変換)
    • HACK 10.7 CEIL / CEILING関数
    • HACK 10.8 COALESCE関数
    • HACK 10.9 CONCAT関数
    • HACK 10.10 CONVERT関数(データ型変換)
    • HACK 10.11 CONVERT関数(文字コード変換)
    • HACK 10.12 COS関数
    • HACK 10.13 CURRENT_DATE / CURRENT_TIME / CURRENT_TIMESTAMP関数
    • HACK 10.14 DATEDIFF / DATADIFF_BIG関数
    • HACK 10.15 DBMS_RANDOMパッケージ
    • HACK 10.16 EOMONTH関数
    • HACK 10.17 EXP関数
    • HACK 10.18 FLOOR関数
    • HACK 10.19 IFNULL関数
    • HACK 10.20 INITCAP関数
    • HACK 10.21 ISNULL関数
    • HACK 10.22 LAST_DAY / EOMONTH関数
    • HACK 10.23 LCASE関数
    • HACK 10.24 LEN / LENGTH / LENGTHB関数
    • HACK 10.25 LEFT関数
    • HACK 10.26 LN / LOG / LOG10関数
    • HACK 10.27 LOWER関数
    • HACK 10.28 LTRIM関数
    • HACK 10.29 MAX関数
    • HACK 10.30 MID / MIDB関数
    • HACK 10.31 MIN関数
    • HACK 10.32 MOD関数
    • HACK 10.33 NOW関数
    • HACK 10.34 NVL関数
    • HACK 10.35 PERIOD_DIFF関数
    • HACK 10.36 RAND / RANDOM関数
    • HACK 10.37 REGEXP_REPLACE関数
    • HACK 10.38 REPLACE関数
    • HACK 10.39 RIGHT関数
    • HACK 10.40 ROUND関数
    • HACK 10.41 RTRIM関数
    • HACK 10.42 SIN関数
    • HACK 10.43 SQR / SQRT関数
    • HACK 10.44 SUBSTR / SUBSTRING / SUBSTRB関数
    • HACK 10.45 SUM関数
    • HACK 10.46 TAN関数
    • HACK 10.47 TIMEDIFF / TIMESTAMPDIFF関数
    • HACK 10.48 TRIM関数
    • HACK 10.49 TO_*関数(データ型変換)
    • HACK 10.50 UCASE関数
    • HACK 10.51 UPPER関数

▲トップに戻る


  訂正情報
 

本誌発行後に見つかった訂正情報を掲載します.

p.150 「HACK 10.32 MOD関数」に関する解説(2022-01-13)

このHACKにおいていくつかの誤りの指摘をいただきましたが,まず根本的な問題としてSQL文における剰余演算(MOD関数)では

負値を除した際の剰余(余り)は負値

でした.従って,「-11を7で割った余り」を"3"と記している箇所はどれも誤りで,正しくは"-4"でした.この結果は,UNIXの世界への翻訳として示しているAWKの演算子"%"と一致します.よって,SQL文の例2

SELECT MOD(-11,7);

は,UNIX上では

echo -11 7             |
awk '{print $1 % $2;}'

と,書けばよいだけでした.(そして,得られる答えはSQLでもAWKでも-4です)

▲トップに戻る

  その他情報
 

クレジット

This book is the 19th product of the Rich Laboratories.
Copyright © 2018-2021 Matsura Rich Laboratories, All rights reserved.

▲トップに戻る

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