スキップしてメイン コンテンツに移動

”知らないということを知れるかもしれない”と読みました

著者 :
オライリージャパン
発売日 : 2010-12-18
耳が痛くなる言葉も、
そうでない言葉もがたくさんありました。

あらためて、当たり前のことを当たり前にやるのは、
本当に難しいことだと感じました。
もっと覚えなくてならないこと、
もっと学ばなくてはならないこと、
もっと経験しなくてはならないことが、
たくさんあると思いました。

できてないと感じたのならやれば良くて、
できてないと感じれたことが、
今の自分の一歩目なのだと思いました。

ざ きのこ本。

(以下抜粋。○:完全抜粋、●:簡略抜粋)
○壊れていないものを直すのは無意味です。(P.13)

○たとえコードが4行ほどのもので、
 行っていることが同じだったとしても、
 それはたまたま一時的にそうなっていただけのことです。(P.14)

○コードレビューを成功させるためにもっとも有効な方法は、
 レビューを楽しいものにすることです。(P.29)

○関数はできる限り短くし、機能は1つに絞り込む。
 古くから言われる「24行制限」は今も有効である。(P.31)

○英語には、
 たとえば「Make up your room, be quiet and do your homework」ということを
 一語で伝えれるような単語はないのです。(P.39)

●デザインパターンの多くは明らかにアプリケーションの中の重複を減らす、
 あるいは排除することを目的としています。
 オブジェクトの使用する条件がいつも同じであれば、
 Abstarct Factory、Factory Methodパターンを、
 オブジェクトのふるまいに種類があるのであれば、Stategyパターンを使用します。(P.59)

●金融関係のアプリケーションには浮動小数点数を使うべきではない
ということも書いておくべきでしょう。
 (中略)
 浮動小数点数は、元々、科学技術計算を効率的に行うことを目的としたものです。

●YANGI(You Ain't Gonna Need It:それはたぶん必要ない)
 余計かもしれないがおもしそうだと思えた。
 将来必要になるかもしれないと思った。
 必要かどうか判断に迷った。
 常に考える必要があるのです。
いま自分が書いているコードは本当に必要なものなのか。(P.76-77)

●プログラミング言語のパラダイムは大きく、
 手続き型、オブジェクト指向型、関数型、論理型、データフロー型などに分類することができます。
 (中略)
 ある問題を解決するのに、
 言語Aではこのイディオムを使用するが、
 言語Bで同じイディオムは使えないというような体験が重要なのです。
 (中略)
 最も顕著な効用は、
 1つのパラダイムしか知らなければ思いつかないような表現を
 使用することができるということです。(P.86-87)

○find . -name "*.java" | sed 's/.*\/// | sort | uniq -c | grep -v "~ *1 " | sort -r(P.89)

○Shippingクラスのshipメソッドを呼び出す仕事をItemクラスに委譲しています。(P.115)

○ある問題について十分に考えたら、あとは音楽を聴くなり、散歩をするなりして、
 脳の創造を司る部分をはたらかせてみてください。
 じっとコンピュータの前に座って考え込んでいるより、
 その方が良いアイディアを思いつくものです。(P.133)

○プログラミングの技術を本気で磨きたいと思っているのなら、本を読むのもいいですが、
 一番いいのは、他人が書いたものでも自分が書いたものでも、
 とにかくコードを読むことです。

○スモール・イズ・ビューティフル(P.167)

○いつ、何を、どのように再利用すべきかがわからなければ、良い結果にはなりません。
 それをわかるためには、問題領域について、またアルゴリズムとデータ構造について、
 十分な知識が必要なのです。(P.169)

○1つの機能の実装が10個存在するのは、WETなシステムであるといえます。
 もしDRY原則に従ってシステムが作られていれば、
機能XがCPUを30%消費している事実にすぐに発見できる上、
 修正するコードも1/10で済むでしょう。
 そもそも、10の実装をすべて見つけ出すための時間も手間も必要ありません。(P.172)

○良いテストの条件を簡単にまとめると次のようになるでしょう。(P.180)
 ・コンテキスト、出発点、満たすべき前提条件がわかる。
 ・ソフトウェアがどのように起動されるかがわかる。
 ・期待される結果と、確認すべき事後条件がわかる。

●プログラマが持っておくべきすきるを3つあげるとすれば、
 (1)コードを読むスキル
 (2)テストをするスキル
 (3)デバッグをするスキル
 だと考えます。
 そして、このスキルはインターネットの情報を読むだけでは身につきません。
 野球のルールを知っていたとしても、誰もが上手にヒットを打つことが出来ないのです。
 いいバッターになるには、正しいトレーニングをして、試合で経験を積むしかないのです。(P.208)

コメント

このブログの人気の投稿

Excelのマクロの差分もGitHubみたいに見たいよね

なんやかんやでまだ残っているExcelマクロ。修正したはいいが、差分が・・・。 Google先生に聞いてみるとWinMergeでできるらしいが、なぜかうまくいかない。 そう、WinMergeもExcelもバージョンが新しくなっていたのでうまくいかなかったみたい。 前提は Excel 2013 WinMerge 2.14.0-jp63 over です。 以下差分を確認するための手順です。 WinMerge をインストール ここから WinMerge の2.14.0-jp-63 より新しいバージョンをダウンロード 画面に従ってぽちぽち押していけばいい。 ただし・・・このときに必ずカスタムインストールで プラグイン にチェックを入れること!!(このプラグインを利用します) WinMerge のプラグインの設定変更(やらなくてもOK) WinMerge を起動 プラグイン → プラグインの設定 → CompareMSExcelFiles.sct をダブルクリック ”ワークブックの情報を複数ファイルに展開する” にチェックを入れる Excel の設定変更 ファイル → オプション → セキュリティセンター → セキュリティ センターの設定 ボタンを押下 マクロの設定 を選択 ”VBA プロジェクト オブジェクト モデルへのアクセスを信頼する” にチェックを入れる WinMerge で差分を表示する WinMerge を起動して、比較したいファイルを二つ選択する プラグイン → 展開プラグインの選択 → ファイル展開プラグイ に CompareMSExcelFiles.sct を選択して OK ボタンを押下する 各シートの差分と合わせて、*.bas の形式でマクロの差分が表示される(はず)

間違ったフォーマットのプログラムじゃないんだけど

以下エラーに対し、 ファイルまたはアセンブリ 'SSPI'、またはその依存関係の 1 つが読み込めませんでした。間違ったフォーマットのプログラムを読み込もうとしました。 以下環境で対応した話です。 VisualStudio2012(C# ASP.NET MVC4.0) IIS7.5 とあるところのdllを使用中 ASP.NETをIISに発行しようとしたら、上記エラーが発生。 他のプロジェクトでは問題なく発行できているのに、 何かと思ってみたら、google先生に尋ねてみると、 DLLファイルの対象プラットフォーム(32bit/64bit)が異なる とのことでした。 このサイトでは対処方法として、 運用環境のプラットフォームに合わせ、適切なランタイムファイルを配布してください。 と記載されていますが、今回の私のようにとあるところのdllを使用している場合などは、 そうもいかない場合もあるでしょう。 そこでdllを変更できない場合には、 IISのアプリケーションプールの設定で、 32bitアプリケーションを有効化してあげることで対応できます。 以下手順です。 コントロールパネル → 管理ツール → インターネット インフォメーション サービス (IIS) マネージャー を起動します。 変更したいアプリケーションを右クリックして、詳細設定を選択します。 32ビットアプリケーションの有効化をTrueに変更します。 もう一度発行します。 ここまでです。 簡単だけど知らないとなかなかはまるかなって気がしますね。 独特のくせなのかもしれません。 そして、次なるエラー発生中です・・・。

SQLServer2008でのトランザクションログの切り捨て方

SQL Server 2008でとあるDBのトランザクションログが一杯に。 BACKUP LOG DatabaseName WITH TRUNCATE_ONLY を使ってトランケートしようとしたら、 'TRUNCATE_ONLY' はBACKUP オプションとして認識されません。 との冷たい返事。2008で廃止されていたのを忘れていた。 SQL Server 2008 で廃止されたデータベース エンジンの機能@MSDN そこでヌルデバイスを使用してバックアップを取得する方法で、切り捨てを試みる。 BACKUP LOG DatabaseName TO DISK = ‘nul’ GO するとまた冷たい返事。 現在、データベースのバックアップが存在しないので、BACKUP LOG を実行できません。 2008では過去にフルバックアップを取得しておかないと、ランザクションのバックアップが取得できないことを忘れてた。てなわけで、まずはデータベースのフルバックアップを取得して、 BACKUP DATABASE DatabaseName TO DISK = ‘nul’ GO もう一度トランザクションのバックアップをして、やっと切り捨てれた。最初から単純にしておけばよかった・・・。