『バグ』というのはですね、嘘吐きの言葉なんです。
A「『バグ』というのはですね、嘘吐きの言葉なんです。
修正してしまうからバグになるんですよ」
B「?」
A「修正するからバグになるんです。
修正しなければバグじゃ無くなります」
B「いやいやいや、順序としては『バグだから→修正する』
んですよね?」
A「いえ、修正してしまうからバグになるんです」
B「?」
A「修正しないんです。鯖が高負荷になろうがDBが不整合起こそうが、とにかく一週間放置」
B「一週間」
A「そうすればもうバグとは口が裂けても言えないでしょう」
B「・・・んん??」
A「バグじゃなかったって事です。実際に一週間も動いたのだから。
『バグ』という言葉は嘘だった」
B「いや、一週間動いたんじゃなくて修正しなかったって事でしょ。鯖が火を噴いてもDBがぶっ壊れても」
A「しかし現実として動いたのですからバグじゃなかった。
その後はもう『バグ』なんて言葉は言わせません」
B「なるほど、仕様ですね!」
via.
ワタミ社長「途中で止めるから『無理』になる。止めさせなければ『無理』じゃなくなる」
http://blog.livedoor.jp/dqnplusminus/archives/3239752.html
修正してしまうからバグになるんですよ」
B「?」
A「修正するからバグになるんです。
修正しなければバグじゃ無くなります」
B「いやいやいや、順序としては『バグだから→修正する』
んですよね?」
A「いえ、修正してしまうからバグになるんです」
B「?」
A「修正しないんです。鯖が高負荷になろうがDBが不整合起こそうが、とにかく一週間放置」
B「一週間」
A「そうすればもうバグとは口が裂けても言えないでしょう」
B「・・・んん??」
A「バグじゃなかったって事です。実際に一週間も動いたのだから。
『バグ』という言葉は嘘だった」
B「いや、一週間動いたんじゃなくて修正しなかったって事でしょ。鯖が火を噴いてもDBがぶっ壊れても」
A「しかし現実として動いたのですからバグじゃなかった。
その後はもう『バグ』なんて言葉は言わせません」
B「なるほど、仕様ですね!」
via.
ワタミ社長「途中で止めるから『無理』になる。止めさせなければ『無理』じゃなくなる」
http://blog.livedoor.jp/dqnplusminus/archives/3239752.html
多摩湖・狭山湖までいってきまんた
誘われるがままに多摩湖・狭山湖+αいってきまんた。
合流&解散したルートはたぶんこんなかんじ。
案内してくれたガイドの方がものすごい裏道をジグザグ進んだので正確なルートは全くワケワカメw
これに家までの往復を入れて、サイコンで約110km・・・。
(縮尺大きくしてみてね)
大きな地図で見る
まずは二子玉川と高井戸で待ち合わせ。
さむい。
全員そろったら、ノッケから裏道的なルートをガンガン突き進み、まずは井の頭公園へ。
その時点で辺境まで飛ばしてきた感がすごかったけど、地図で見たら全然だったのね・・。
ちなみに今日は全部で7人でした。
そのまま三鷹駅を通ってゴリゴリ進み多摩湖へ。
なんか川っていうより大きな用水路みたいなところの横を通ってったけど、
ヘタなCRよりも全然走りやすかった。
堤防上がすごかった。
片方は水張ってるのに、逆側にはそれよりも低い位置に住宅街が・・。
んでそのまま西武ドームの横を通って狭山湖へ。
今日の一番遠いところ。ていうかココすでに埼玉県だったのか・・。
そしてちょっとした腹ごしらえにダンゴむしゃりむしゃり
帰りはまた井の頭公園まで行き、そこから多摩川へ出てガイドさんと解散。
この時点で60~70kmくらい。
はー疲れた疲れた、では!
・・・とは行かず「ちょっとそこに良い坂があるからもうひとっ走りして行こう」という流れにw
良い坂ってなんやねん・・。
というわけでそのまま矢野口駅へ行き、そこから西側へ行ったところの桜ヶ丘公園?まで登る道が、急じゃないけどだいぶ長い坂でマジ辛かった・・。
50km以上走ってきてから登る坂じゃないよ('A`)
そういうわけで、そのままくるりと戻ってきて、多摩川CRへ戻り、二子玉川付近まで戻ってきて、今度こそ解散~。
やっぱりというなんというかだいぶ疲れてて、流石に直接的な筋肉痛みたいなのがキタけど、
お尻は全然痛くならなかったので、尻はだいぶ鍛えられいるようですなアッー!
合流&解散したルートはたぶんこんなかんじ。
案内してくれたガイドの方がものすごい裏道をジグザグ進んだので正確なルートは全くワケワカメw
これに家までの往復を入れて、サイコンで約110km・・・。
(縮尺大きくしてみてね)
大きな地図で見る
まずは二子玉川と高井戸で待ち合わせ。
さむい。
全員そろったら、ノッケから裏道的なルートをガンガン突き進み、まずは井の頭公園へ。
その時点で辺境まで飛ばしてきた感がすごかったけど、地図で見たら全然だったのね・・。
ちなみに今日は全部で7人でした。
そのまま三鷹駅を通ってゴリゴリ進み多摩湖へ。
なんか川っていうより大きな用水路みたいなところの横を通ってったけど、
ヘタなCRよりも全然走りやすかった。
堤防上がすごかった。
片方は水張ってるのに、逆側にはそれよりも低い位置に住宅街が・・。
んでそのまま西武ドームの横を通って狭山湖へ。
今日の一番遠いところ。ていうかココすでに埼玉県だったのか・・。
そしてちょっとした腹ごしらえにダンゴむしゃりむしゃり
帰りはまた井の頭公園まで行き、そこから多摩川へ出てガイドさんと解散。
この時点で60~70kmくらい。
はー疲れた疲れた、では!
・・・とは行かず「ちょっとそこに良い坂があるからもうひとっ走りして行こう」という流れにw
良い坂ってなんやねん・・。
というわけでそのまま矢野口駅へ行き、そこから西側へ行ったところの桜ヶ丘公園?まで登る道が、急じゃないけどだいぶ長い坂でマジ辛かった・・。
50km以上走ってきてから登る坂じゃないよ('A`)
そういうわけで、そのままくるりと戻ってきて、多摩川CRへ戻り、二子玉川付近まで戻ってきて、今度こそ解散~。
やっぱりというなんというかだいぶ疲れてて、流石に直接的な筋肉痛みたいなのがキタけど、
お尻は全然痛くならなかったので、尻はだいぶ鍛えられいるようですなアッー!
bashで特定のファイルを検索して同じ操作をする
たまにはエンジニアっぽいものをかいてみる
bashは便利!ファイル操作は最強!
の名の下にできるだけコマンドライン上でいろいろやってしまいましょう。
ターミナル上でフンフン言いながら操作したりするので基本直書きです!
構造文すらあんまり多くなければセミコロンで区切ってどんどん書くよ!
でもシェルスクリプトとしてファイルに保存するときは見やすくしましょう。
-i(確認する) か -f(確認無しに消す) はお好みで。
※ {}が引っかかったファイル名に置き換えられます。
※ \;が終端 (本当は;でいいけどエスケープするんねん)
ちなみに
こまかなオプションは置いとくとして、これで見つかったファイルを全部消してやる!ってとき
xargsでもできるとは思うけどあんまり使ったことないからよくわからぬ。
っていうかちょっとググったらバックダッシュにぶちこむよりもxargs使えよオラァ!みたいな記事が多かったごめんなさい
bashは便利!ファイル操作は最強!
の名の下にできるだけコマンドライン上でいろいろやってしまいましょう。
ターミナル上でフンフン言いながら操作したりするので基本直書きです!
構造文すらあんまり多くなければセミコロンで区切ってどんどん書くよ!
でもシェルスクリプトとしてファイルに保存するときは見やすくしましょう。
■ 単純編:特定のファイルを削除したい
・カレントディレクトリのswpファイルを消す
-i(確認する) か -f(確認無しに消す) はお好みで。
~hoge/fuga$ rm -i *.swp
・ディレクトリ配下にあるswpファイルを全部消す
~hoge/fuga$ find . -name "*.swp" --- 確認
~hoge/fuga$ find . -name "*.swp" -delete
~hoge/fuga$ find . -name "*.swp" -delete
■ find活用編:findで引っかかったファイルをいろいろなんかする
・-execオプションでお好きなように。
けす。
~hoge/fuga$ find . -name "*.swp" -exec rm -f {} \;
バックアップファイルをつくる。
~hoge/fuga$ find . -name "*.txt" -exec cp {} {}.bak \;
~hoge/fuga$ find . -name "*.swp" -exec rm -f {} \;
バックアップファイルをつくる。
~hoge/fuga$ find . -name "*.txt" -exec cp {} {}.bak \;
※ {}が引っかかったファイル名に置き換えられます。
※ \;が終端 (本当は;でいいけどエスケープするんねん)
・全部viで編集する
~hoge/fuga$ vi `find . -name "*.txt"`
バックダッシュ便利!ちなみに
~hoge/fuga$ find . -name "*.txt" -exec vi {} \;
でもできないことはないけど、こうすると一個一個viで開かれるので:nや:Nでファイル間を移動できなくなります。便利ジャナイ!■ grepオラオラ編
こまかなオプションは置いとくとして、これで見つかったファイルを全部消してやる!ってとき
まずgrep
~hoge/fuga$ grep "hoge" *
マッチしたファイル名だけ表示する
~hoge/fuga$ grep "hoge" * -l (-l はどこに書いてもいいみたい)
バックダッシュにぶち込んで削除!
~hoge/fuga$ rm -f `grep "hoge" * -l`
~hoge/fuga$ grep "hoge" *
マッチしたファイル名だけ表示する
~hoge/fuga$ grep "hoge" * -l (-l はどこに書いてもいいみたい)
バックダッシュにぶち込んで削除!
~hoge/fuga$ rm -f `grep "hoge" * -l`
xargsでもできるとは思うけどあんまり使ったことないからよくわからぬ。
~hoge/fuga$ grep "hoge" * -l | xargs rm -f
動作としては、標準入力に来たリストをそのままコマンドの後ろに引数としてくっつけてくれるようなかんじっていうかちょっとググったらバックダッシュにぶちこむよりもxargs使えよオラァ!みたいな記事が多かったごめんなさい
■ 制御構文もへっちゃらへー
・findをfor文に渡しちゃえばもうなんでもできる!
~hoge/fuga$ for FILE in `find . -name "*.txt"`; do mv $FILE ${FILE}.bak; done
ちなみに自分が普段ちょいちょい使うときは変数名すらAとかです。~hoge/fuga$ for A in `find . -name "*.txt"`; do mv $A ${A//txt/bak}; done
サラッと変数置換も書けるとさらにカッコイイ!

