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月)

7月プログラミング言語人気 - PHP急上昇 | マイナビニュース

順位

  1. C
  2. Java
  3. 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へ流す方法

f:id:redpanda:20131103002159j:plain

利用シーン

とりあえず、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へすんなりと接続できた。

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