getopts sample
Webからもらったコードを少しだけカスタマイズ。徐々に強化していく予定。
#!/bin/bash CMDNAME=`basename $0` usage() { echo "Usage: $CMDNAME [-f format] [-m macro] [file]" 1>&2 } # check the number of parameters if [ $# -lt 2 ]; then usage exit 1 fi # check options while getopts f:m: OPT do case $OPT in "f" ) FLG_F="TRUE" ; VALUE_F="$OPTARG" ;; "m" ) FLG_M="TRUE" ; VALUE_M="$OPTARG" ;; * ) usage exit 1 ;; esac done # skip options shift `expr $OPTIND - 1` # main if [ "$FLG_F" = "TRUE" ]; then echo "値は $VALUE_F です。" fi if [ "$FLG_M" = "TRUE" ]; then echo "値は $VALUE_M です。" fi echo "引数に $1 が指定されました。" exit 0
The Goal
- 作者: エリヤフ・ゴールドラット,三本木亮
- 出版社/メーカー: ダイヤモンド社
- 発売日: 2001/05/18
- メディア: ペーパーバック
- 購入: 32人 クリック: 373回
- この商品を含むブログ (391件) を見る
この本すごいです。納期遅延でダメダメだった工場が、
生まれ変わって行くサクセスストーリーなんですが、
ゴールドラット博士の提唱する TOC(Theory of Constraints) という理論に
基づいており、実践すれば本当に効果があるようです。
トヨタの看板方式などとの位置づけが分かっていませんが、
読み物としても面白いのでぜひお勧めです。
案本
案本 「ユニーク」な「アイディア」の「提案」のための「脳内経験」
- 作者: 山本高史
- 出版社/メーカー: インプレス
- 発売日: 2008/03/28
- メディア: 単行本
- 購入: 10人 クリック: 66回
- この商品を含むブログ (39件) を見る
大変、勉強になりました。何をするにも経験量が絶対必須ですが、
それを補うために脳内経験を蓄積することができる、というのは
とても大切なことだと思いました。
* 脳内経験
* 経験量の増加によって、主観の妥当性を高められる
* 脳内アングル、脳内ツリーというツール
バカでも年収1000万
- 作者: 伊藤喜之
- 出版社/メーカー: ダイヤモンド社
- 発売日: 2010/07/30
- メディア: 単行本
- 購入: 15人 クリック: 341回
- この商品を含むブログ (38件) を見る
とても勉強になった。今日から6大奥義を使います!
* 成功の糸を捕まえて、100% 全力で実行する。
* 超速行動
* 逆さまの法則
20代じゃない僕が読む本
- 作者: 土井英司
- 出版社/メーカー: 大和書房
- 発売日: 2010/12/18
- メディア: 単行本(ソフトカバー)
- 購入: 11人 クリック: 732回
- この商品を含むブログ (33件) を見る
もう数年早く出会いたかった本。
* 仕事は欲しい結果でえらぶ
* 会社の評価と市場価値のずれ
* マネジメントは避けられない
20歳のときに知っておきたかったこと
20歳のときに知っておきたかったこと スタンフォード大学集中講義
- 作者: ティナ・シーリグ,Tina Seelig,高遠裕子
- 出版社/メーカー: CCCメディアハウス
- 発売日: 2010/03/10
- メディア: ハードカバー
- 購入: 475人 クリック: 17,353回
- この商品を含むブログ (395件) を見る
本当に知っておけば良かったと思える本。
- やりたいことを一番邪魔しているのは自分自身だ
- 何度も失敗せよ
- キャリアは常に最適化が必要
スタンフォードのDスクールを受講してみたい。
org-export-hatena の改造
org-mode で書いた文章をはてなダイアリー形式にするための elisp が
org-export-hatena として 公開] されています。これをベースに、
未サポートの文法を追加してみました。ありがとうございます > r_takaishiさん!
私が使う文法でブログで足りていないとしたら、まずはリンクですね。
というわけで、リンクの変換を追加したものが以下です。
;;; hatena.el --- ;;; for hatena export to diary (defvar org-export-hatena-notation-section '("^\\* \\([^\t\n\r\f]*\\)\n\\[.*$" "* \\1")) (defvar org-export-hatena-notation-subsection '("^\\*\\* \\([^\t\n\r\f]*\\)$" "** \\1")) (defvar org-export-hatena-notation-subsubsection '("^\\*\\*\\* \\([^\t\n\r\f]*\\)$" "*** \\1")) (defvar org-export-hatena-notation-link '("\\[\\[\\(.*\\)\\]\\[\\(.*\\)\\]" "[\\1:title=\\2]")) ; 追加 (defvar org-export-hatena-notation-quote '("[ ]*#\\+BEGIN_QUOTE[ \t]*" ">>" "[ ]*#\\+END_QUOTE" "<<")) (defvar org-export-hatena-notation-super-pre '("[ ]*#\\+BEGIN_EXAMPLE[ \t]*" ">||" "[ ]*#\\+END_EXAMPLE" "||<")) (defvar org-export-hatena-notation-src '("[ ]*#\\+BEGIN_SRC[ \t]*\\([^\t\n\r\f]*\\)" ">|\\1|" "[ ]*#\\+END_SRC" "||<")) (defvar org-export-hatena-temp-buffer-name "*Org Hatena Export*") (defun org-export-hatena-section (notation) ;; buffer で取り得る最小の位置に移動する (goto-char (point-min)) ;; notation[0] に match しなかったら停止する、をバッファの終わりまで繰り返す。 ;; match しなかった場合は nil を返す (while (re-search-forward (nth 0 notation) nil t) (replace-match (nth 1 notation)))) ; 最後の検索結果を notation[1] で置換する ;;; org-export-hatena-section を2回実行する関数 ;; 一回目は、notation[0] --> notaition[1] ;; 二回目は、notation[2] --> notaition[3] (defun org-export-hatena-begin-to-end (notation) (goto-char (point-min)) (while (re-search-forward (nth 0 notation) nil t) (replace-match (nth 1 notation))) (goto-char (point-min)) (while (re-search-forward (nth 2 notation) nil t) (replace-match (nth 3 notation)))) ;;; (defun org-export-hatena (beg end) (interactive "r") ; Region (let ((diary (buffer-substring beg end)) ; local var1 (begin-to-end `(,org-export-hatena-notation-quote ,org-export-hatena-notation-super-pre ,org-export-hatena-notation-src)) ; local var2 (section `(,org-export-hatena-notation-section ,org-export-hatena-notation-subsection ,org-export-hatena-notation-subsubsection ,org-export-hatena-notation-link ; 追加 )) ; local var3 (buffer (get-buffer-create ; create buffer (generate-new-buffer-name org-export-hatena-temp-buffer-name)))) ; local var4 (set-buffer buffer) ; make buffer (insert diary) ; point に引数を追加 (mapc (function org-export-hatena-begin-to-end) begin-to-end) (mapc (function org-export-hatena-section) section) (switch-to-buffer-other-window buffer))) (provide 'hatena) ;;; hatena.el ends here
正規表現は、もちろん、M-x re-builder で作成しました。
知らない関数は、F1-f で検索することも覚えました。
後は、いろいろと追加するだけですね。
これで、org-mode で日記を付けて、org-export-hatena で
はてな形式に変換し、それをカットしてはてなに貼付けるだけ良くなりました。
らくちんだー。
大部、elisp のソースが理解できるようになってきました。