C Sharpens you up

http://qiita.com/yuba に移しつつあります

Intellisenseが解析あきらめるコードもあるんです

納涼!ほんとにあった怖いコード(by CodeIQ×はてな)ある夏体験した悪夢のようなコーディングの話です。そのソフトは、もともと1本のプログラムでクライアントとしてもサーバとしても機能するという作りになっていました。そのソフトに転機が訪れます。 サ…

エクスプローラから一発でコマンドプロンプトやPlay!プロンプトを開く

Windowsでコマンドライン操作が必要なとき、わざわざスタートメニューからコマンドプロンプトを探して起動しておられる方はまさかおられませんな。基本操作【フォルダをSHIFT右クリック】→【コマンドウィンドウをここで開く】 はもちろんのこと皆様使ってお…

WindowsのmklinkコマンドとUNIXのlnコマンドは引数が逆

Windowsでシンボリックリンクを作るときは mklink 【作るリンク】 【実ファイルパス】で、UNIXでシンボリックリンクを作るときは ln -s 【実ファイルパス】 【作るリンク】なので引数の順番が逆ですご注意*1。あと、mklinkでは/Hをつければハードリンクで、…

SQL製品別・XORと同値の書き方

SQL

SQLにブール型が定義されたのはSQL99と比較的最近のことなので、ブール型への対応にはまだばらつきがあります。 Oracle(12c), PostgreSQL(9.x) … 対応 SQL Server(2012), MySQL(5.x) … 非対応。1ビット整数のBIT型を代わりに持つ。 XOR(両辺の論理式のうち…

Windowsの巨大フォルダコピーが遅くていらつく? だったらコマンドラインで

Windowsの巨大フォルダコピーが遅いのには、コピーに取りかかる前にフォルダ構造を分析する手間も含まれています。いいから何も考えずコピーしてくれというときにはこれが本当にいらつく。コマンドラインで何も考えずにコピーしてもらいましょう。 xcopy コ…

Linuxサービスが書き出しているログファイルを一発で探し出す

LinuxというかUNIX系のプログラムは、設定ファイルの位置もログファイルの位置もプログラムごとにバラバラ、それもディストリビューションごとにまた違ってくるから扱いづらいです。「Jenkinsのログはどこ!?」となったときにGoogle先生詣でをすることなく一…

SQL Serverの計算列を使ってツリー構造データを完全に制約付ける

SQL

ツリー構造をSQLで扱うための定石はいくつか知られています。 隣接リスト最も単純で、各行が親に当たる行を自己結合で参照します。構造は単純ですが、古いSQLでは子孫を一気に取得する方法がないのでSQLアンチパターンでは「ナイーブツリー」と命名して安易…

IEEE1888のコード例(その1:C#でコンポーネントアクセス)

IEEE1888を検索ワードにしたトラフィックが思った以上にあるのでコード例を追加していくことにします。IEEE1888についての概説はこちら。 IEEE1888を20分で理解する - C Sharpens you up コンポーネントへのアクセスをC#で記述してみます。今後、レジストリ…

データベースでクラス継承を表現する

SQL

こんなスキーマ設計を見ました。 CHECK制約で排他的サブタイプを実現する - pikio公式ブログ オブジェクト指向のプログラミングでは、クラスを継承してサブクラスを作ることはよくあります。そして、アプリケーションではデータを複数のサブクラスに分けて扱…

外部キー参照しあうテーブルを遅延制約で実現する

SQL

先に結論。DEFERRED, DEFERRABLEという単語を覚えてお帰りくださいませ。 そして先にごめんなさい。SQL ServerとMySQLはDEFERRED, DEFERRABLEを未サポートですのでこの記事の内容は使えません。さて話のはじめから。こんな条件のデータを格納したくなったと…

ガチで5分で理解できるワイルドカード総称型("? extends C"/"? super C")

もしくは、「Iterable<Number>にIterable<Double>を代入したいっ!」。もしくは「ガチで5分で理解できる共変・反変」、どれでもいいです。同じことです。 どういうことかというと NumberとDoubleに親子関係があったときにIterable<Number>とIterable<Double>にも親子関係が発生することを共変</double></number></double></number>…

データベース操作でデッドロックは不可避

SQL

デッドロック発生させたと聞いただけで「うわ出たド素人」「それだけはないでしょ」「設計の仕方教わらなかったの?」と炎上3波目くらいまで装弾済みの怖い怖いお兄様方お姉様方こんばんは。案外知られていないのでこの機会に確認しておいていただきたいのは…

JAX-WSでも少しはまともなWebサービスクライアントを作る(実行時にWSDLを要求させない)

注意 追記 2014/03/17この記事で紹介した問題回避方法は処理系依存かもしれません。Windows版JDK7(Oracle)のクライアントモードJVMでは意図通りに動作したもののLinux版JDK7(Oracle)のサーバモードJVMで依然として問題動作(WSDLを実行時に参照してしまう)…

TomcatのフロントエンドとしてApacheを立てないといけない理由

Java系の開発者にとっては当たり前のことかもしれないけど.NET系にとっては初耳の話だったりするのでまとめ。TomcatはJavaで書いたウェブアプリを実行できるウェブサーバ(アプリケーションサーバ)であり、ウェブサーバである以上、単体で80,443ポートを開…

有効なレコードだけに一意性制約をかける

SQL

SQL標準にある強力なCHECK制約をPostgreSQLでも使いたいでござる。 有り体にいうと、一意性制約を付けて論理削除をしたい、というような表現になるのでしょうか。 http://sugar-tomato.hateblo.jp/entries/2013/07/02 無効化したレコードは無視して有効なレ…

twitterでASP.NETとかADO.NETとかつぶやいちゃおうぜ

twitterでASP.NETだADO.NETだVB.NETだと、.NET関連の単語をつぶやくと確実にあれに捕まりますよね。t.coの自動短縮URL化。 ねえなんでWCFってバイト数とか文字数の上限ですぐ引っかかるの。http://t.co/ULsYbu7Lの方が全然ましだったじゃん。— ゆば大好き (@…

IEEE1888を20分で理解する

Wikipediaの記事を読んでもよくわからなかった人のために。 「5分で理解する」というタイトルにしようと思ったんですが書いているうちに5分は無理だなと悟りました。20分ください。 IEEE1888とはなんなのか IEEE1888は建物のエネルギー管理機器類がデータを…

Javascriptで一度しか呼ばれない関数

JavaScriptで、一度しか呼ばれない関数を作る - c4se記:さっちゃんですよ☆もっとJavascriptらしく書けないだろうかとアレンジを試みました。 function one(func) { function action() { var result = func(); action = function() { return result; } retur…

JavaでもC#みたいなオブジェクト初期化子書けるんですよ

コンストラクタが特に何もしてくれず、インスタンス作ってから初期化しないといけないタイプのクラスってありますよね。シリアライズのためだったりJavaBeansだったり、あとはふつーのArrayListだから作ってから内容詰め込みます、みたいに。オブジェクト作…

SQLのカラム制約はテーブル制約と等価

SQL

SQLのテーブルにcol_A, col_Bというカラムがあるとしますよ。ここでCHECK(col_A = col_B)という制約を、col_Aにカラム制約として付けたとします。すると UPDATE my_table SET col_A = col_A + 1; なんて操作は阻止されます。当然。では、 UPDATE my_table SE…

整数を可逆スクランブルする

2年前につぶやいた内容の詳しい説明。 32ビット整数をとりあえずスクランブルするすごく簡単な方法に気付いてしまった。なにか奇数をかけると、それにかければ元の数に戻るような奇数が必ずひとつあるから、それを力任せで見つけてしまえばいいんだ。ビット…

パスワード情報に暗号鍵を格納する

考え中。とりとめゼロ。普通ユーザー管理DBにはパスワードのハッシュ値しか格納しないで、この情報はユーザー認証というか、パスワードがあってるかどうかの判定にだけ使う。で、それとは関係なく。ユーザー管理下のデータをすべて暗号化して格納してくれと…

Play!のEbeanモデルをJUnitでテストするとき"It has not been enhanced"エラーを防ぐ

Play!のJava向けO/RマッパーであるEbeanはコンパイルに介入するタイプのフレームワークです。 具体的には、Ebeanモデルがコンパイルされたあとに、getter/setterを勝手に作成して埋め込んでくれます。これが、単にpublicフィールドを書いただけで遅延アクセ…

Play! framework Evolutionsでストアド関数を書きたい

Evolutionsに指定したSQL文は適用のとき、セミコロンで分解されて一文ずつデータベースに送信されます。 ではストアド関数に含まれるセミコロンはどうなるか。 やはりぶった切られてしまいます。当然文法エラー。ではぶった切られないようにするにはどうする…

Play! framework Evolutionsのsqlファイルの優先順位

Play! frameworkではEvolutionsファイルを書くことでデータベースへのスキーマ適用とか更新がWebからワンタッチできるようになります。ありがたいですね。sqlスクリプトファイルがスキーマ変更1件を表していて、【変更を適用するSQL文(Ups)】【変更を取り消…