Effective C#のもくじ
Chapter 1 C#言語
- アクセス可能なデータメンバの代わりに常にプロパティを使用すること
- constよりもreadonlyを使用する
- キャスト時にはisあるいはas演算子を使用すること
- #ifの代わりにConditional属性を使用する
- ToString()を常に実装すること
- 値型と参照型の違い
- 値型は不変かつアトミックにすること
- 値型における0を正常な状態とすること
- ReferenceEquals()とstaticメソッドのEquals()、インスタンスメソッドのEquals()、等号演算子==の関係を把握する
- GetHashCode()の罠に注意する
- foreachループを使用すること
Chaptert 2 .NETにおけるリソース管理
- 割り当て演算子よりも変数初期化子を使用すること
- staticメンバはstaticコンストラクタで初期化する
- コンストラクタの連鎖を活用する
- usingおよびtry...finallyを使用してリソースの後処理を行う
- ゴミの量を最小限に抑えること
- ボックス化、ボックス化解除を最小限に抑える
- Disposeパターンの標準的な実装
Chapter 3 C#によるソフトウェアデザインの表現
- 継承よりもインターフェイスの定義および実装を行うこと
- インターフェイスを実装することと仮想関数をオーバーライドすることの違い
- デリゲートを使用してコールバックを実現する
- イベントにより発信インターフェイスを定義する
- クラス内オブジェクトの参照を返さないようにすること
- 命令形プログラミングよりも宣言型プログラミングを選択する
- 型はできるだけシリアル化可能とすること
- IComparableとIComparerを実装して順序関係をサポートする
- ICloneableを使用しないこと
- 変換演算子は使用しないこと
- 親クラスの変更による指示がない限りnew修飾子は使用しないこと
Chapter 4 バイナリコンポーネントを作成する
- CLS互換性のあるアセンブリを作成すること
- 機能を最小限かつシンプルにすること
- より小さく凝集したアセンブリを作成すること
- 型の可視性を制限すること
- 粒度の粗いWeb APIを作成する
Chapter 5 フレームワークを活用する
- イベントハンドラよりもオーバーライドを優先すること
- .NETランタイムの診断機能を利用する
- 標準の設定メカニズムを使用すること
- データベインドを活用およびサポートすること
- .NETの検証機能を使用すること
- ニーズに一致したコレクションを用意すること
- 独自のデータ構造よりもDataSetを利用する
- リフレクションを単純化するために属性を使用する
- リフレクションを使用しすぎないこと
- 完全にアプリケーション固有の例外クラスを作成する
Chapter 6 その他
- 例外を強く保証すること
- 相互運用を最小限にすること
- 安全なコードを選ぶ
- ツールとリソースについて選ぶ
- C# 2.0への準備
- ECMA標準について学ぶ
ソースコード、コードスニペット共有Webサービスまとめ
ちょっとしたソースコードの共有系のWebサービス。
利用可能(2013/11/12時点)
- sourcepod.com
シンプル。共有するURLを出力してくれるのが良いかも。 - Snipt.org
UIが綺麗。 - Pastie
超シンプル。 - Pastebin.com
言語が豊富。(PL/SQLとかT-SQLもある!)
サービス終了?※利用不可
- codr.cc
- ShareSRC
今ってC言語が人気ナンバーワンなんだ・・・
「C言語」人気ありますねー。
少し古い記事(2013年7月)
順位
- C
- Java
- Objective-C
過去5年間の傾向
- Java ・・・下落傾向
- PHP ・・・下落傾向だったが、最近巻き返し
- T-SQL、PL/SQL ・・・成長率がアップ
C言語は昔から人気はあるかなと思うし、Objective-Cの影響もありそうだけど、
JavaやPHP、Rubyなんかの方が人気高いのかなと思ってた。
Rubyがおもったよりランクが低い。
T-SQLとかPL/SQL等のストアド系の言語の成長率アップってのが、なんか興味深い。
Oracleは以前の独壇場が消えたがまだまだ健在、SQL Serverは当初よりだいぶ普及してきたイメージはあるけど、最近はMySQLや他のデータストア使うことが多いし。
ストアド系の言語は淡々と・・・って感じなのかなって思ってたけど。
連携ではなく、必要なものだけTwitter→Facebookへ流す方法
利用シーン
とりあえず、Twitterへは投稿する。
その中で、必要なものだけFacebookへ転送したい。
Twitterはどうでも良いけど、
Facebookのタイムラインはあんまり汚したくないんだよなぁってときに。
必要な設定
- Selective Tweets(Facebookアプリ)
手順
- Facebookにログインして、Selective Tweetsへ行く。
- 「アプリへ移動」
- 「The one and only step:」というところに、自分のTwitterアカウントを入力し、「Save」。
※アプリの許可メッセージが表示されたら、「許可」する。 - 続いて、「Settings」タブにて、下記の項目にチェックを入れ、「Save Changes」で保存。 「Allow the #fb tag anywhere in the tweet?」
利用方法
Twitterで発言するとき、Facebookにも転送したい場合、
投稿の文末にハッシュタグ「#fb」を入れるだけ。
このメッセージはFacebookにも転送するぜ?#fb
こうすることで、Twitterには普通に投稿され、Facebook側にも同じ投稿がタイムラインに表示される。
NavicatでOracle接続時、ORA-28547が発生する
環境
- Oracle 11.2.0.1.0
- Navicat Premiam(v11)
現象
NavicatでOracle接続時に、下記のエラーとなる。
ORA-28547: connection to server failed, probable Oracle Net admin error
状況
- SQL*Plusから接続可能。
- また、他のツール(A5:SQL mk-2、CSE等)は接続できる。
- A5:SQLに関しては、TNSもOCIも接続可能。
- NavicatはMySQLには接続できた。
原因と解決
メニュ「Tools>Options」の「OCI」設定項目、「OCI library (oci.dll)」を下記の通り変更。
変更前:
C:\Program Files\PremiumSoft\Navicat Premium\instantclient_10_2\oci.dll
変更後:
D:\app\ss\product\11.2.0\dbhome_1\bin\oci.dll
Navicatを再起動で設定が反映される。
この後、接続をためしたところ、Oracleへすんなりと接続できた。
QAシステム「Tender」がカッコいい
「Marked 2」サイトのサポートが利用してるQAシステム。
Tender Support — Support your product: Knowledge Base, Helpdesk, Forums
これシンプルでカッコいいなぁ。
Alfredにamazon.co.jpの検索クエリを追加
Alfredの「Preferences>Web Search」にて、
「Search URL」を下記の通り登録する。※"Encode spaces as +"にチェック
http://www.amazon.co.jp/s/ref=nb_sb_noss?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&url=search-alias%253Dpopular&field-keywords={query}&x=0&y=0