読者です 読者をやめる 読者になる 読者になる

Path.GetDirectoryNameでフォルダパスを取得

パス文字列からフォルダパスを取得したいときはPath.GetDirectoryNameを使います。 Path.GetDirectoryName メソッド (String) (System.IO) このメソッド名だとフォルダパスじゃなくてフォルダ名を取得できる感じが・・・というのは置いておいて。 上記にもサ…

ASP.NET MVC - 部分ビューにあるinput要素のname属性にプレフィックスを付ける

探していたことはまさにコレでした。 stackoverflow.com TemplateInfoもよくわかっていなかったので真似してサンプルを書いてみました。 やりたいこと まずはやりたいことを整理します。 次のようにAddressクラスのプロパティを2つ持つモデル、SampleInputMo…

.NETでUDPを使って通信する(UdpClientを使う)

前回はTCPを使って通信してみたので今回はUDPを使って通信するサンプルを書いてみました。 ichiroku11.hatenablog.jp .NETでUDPを使って通信するにはUdpClientを使います。Socketを使う方法はまたそのうち…というフラグ。 UdpClient クラス (System.Net.Sock…

.NETでTCPを使って通信する(TcpClientとTcpListenerを使う)

.NETで通信するプログラムに興味が出てきたので調べたりしています。ネットワークプログラミングと言うんですかね。まずはやっぱりTCPかなと思うので、TCPを使って通信する簡単なクライアントとサーバのサンプルコードを書いてみました。 .NETでTCPを使って…

SQL Server - OPENROWSETでJSONファイルを読み込んでOPENJSON

前回、OPENJSONを使ってJSON文字列を結果セットに変換してみました。 ichiroku11.hatenablog.jp そのあとにそういえば「JSONファイル」を読み込んでOPENJSONを使う方法を知らないなと思いました。検索してみると次の記事が見つかります。 Importing JSON fil…

SQL Server - OPENJSONは役に立つ

SQL Server 2016から手軽にJSONを扱えるようになっています。 MSDNなどを読みながら勉強している最中で全体を把握しているわけではないですが、SQL ServerのJSONサポートは次の2つの機能がメインなのかなと思います。 機能 概要 FOR JSON句 結果セットをJSON…

数値や文字列を右詰して前を「0(ゼロ)」で埋める(T-SQL)

T-SQLの小ネタです。 数値や文字列を右詰して前を「0(ゼロ)」で埋めた文字列を作ります。 前回はC#でやってみたので今回はT-SQLです。 ichiroku11.hatenablog.jp 数値の右詰と0埋め 数値の場合はSQL Server 2012から追加されているFORMAT関数を使います。C…

数値や文字列を右詰して前を「0(ゼロ)」で埋める(C#)

c#

C#の小ネタです。まぁいつも小ネタですが。 数値や文字列を右詰(右寄せ?)して前を「0(ゼロ)」で埋めた文字列を作ります。 数値の右詰と0埋め 数値の場合はstring.FormatメソッドかToStringメソッドで標準の10進数"D"数値書式指定を使います。"0"カスタ…

Entity Frameworkでenumのビット演算

FlagsAttributeを適用したenum(「ビットフラグ列挙体」と言うんですかね)に対して、Entity Frameworkでビット演算してみました。 ビット演算というよりHasFlagsメソッドを使えるよね?ということを確認した感じです。 FlagsAttribute クラス (System) Enum…

Entity FrameworkでTPT(Table Per Type)

今ごろ感ありますがEntity FrameworkでTPT(Table Per Type)を試しました。 データを追加する方法や取得する方法、どんなクエリになるのか、最終的には派生クラスではなく基本クラスだけを取得できるのかといったことを確認することが目的でした。 クエリは…

DateTime.AddMonthsとDateTime.AddYearsのメモ

ちょっとした発見。 DateTime.AddMonthsメソッドは、結果の月にその日が存在しない場合はその月の末日に調整してくれます。 文章にするといまいちなのでコードで例を。 // 2016/08/31 + 1ヶ月 // 2016年9月は30日までなので結果は2016/09/30になる new DateT…

T-SQL - BETWEENのメモ

BETWEENは自分ではあまり使わないのでたまに見かけるとあれ?含むの?含まないの?どっちだっけ?ってなります。 カップル専用アプリのことではないです。 between A and B A以上かつB以下。AもBも含む。 select * from (values(1), (2), (3), (4), (5)) as …

SQL Server - xmlデータ型のメソッド(query、value、nodes)を試す

そういえばT-SQLでxmlを扱ったことがないなーと思ったので、とりあえず基本の基本を押さえるために簡単なサンプルを書いてみましたというお話です。 まずxmlデータ型のメソッドはこれだけあります。 xml データ型のメソッド そのうちよく使うんじゃないかな…

.NETで名前付きパイプを試す(4) - 複数のクライアントに対応したサーバにする

もう少しNamedPipeClientStreamとNamedPipeServerStreamを試してみます。 前回のサーバは1つのクライアントの1つのリクエストを処理するだけでプログラムが終了しています。 ichiroku11.hatenablog.jp これではさすがにサーバとは言えないと思うので、もう少…

.NETで名前付きパイプを試す(3) - クライアントサーバ間で送受信する

前回に続いてもう少しNamedPipeClientStreamとNamedPipeServerStreamを使った名前付きパイプを試します。 ichiroku11.hatenablog.jp 今回はクライアント側のプログラムからサーバ側のプログラムにリクエストを送ってレスポンスを受け取るようにしてみます。…

.NETで名前付きパイプを試す(2) - クライアントからサーバにオブジェクトを送る

前回はクライアントからサーバに文字列を送ってみましたが、文字列だけでは少し寂しいので今回はオブジェクトを送信したいと思います。それでもまだ寂しいけど。 ichiroku11.hatenablog.jp 下準備 目的をクリアするために必要なクラスを準備していきます。 …

.NETで名前付きパイプを試す(1) - クライアントからサーバにメッセージを送る

.NET Frameworkを使って名前付きパイプでプロセス間通信を実装する方法が気になったので調べています。このエントリはその勉強の記録です。 名前付きパイプを実装するには、NamedPipeServerStreamとNamedPaipeClientStreamを使います。 NamedPipeServerStrea…

Visual Studioでソリューション内の複数のプロジェクトをデバッグ実行する

実行可能なプロジェクトが複数あるソリューションで、複数のプロジェクトをデバッグ実行する方法です。 今日知りました。 ソリューションのプロパティからスタートアッププロジェクトで「マルチスタートアッププロジェクト」を選びます。そして実行したいプ…

T-SQL - DROP IF EXISTS

先週SQL Server 2016の提供が開始されました。 新機能を調べだしたところですが、まずはとりあえずDROP IF EXISTSを試してみました。 開発中、試行錯誤してたりとかでテーブル構造がなかなか固まらず、テーブルを作っては消してまた作るということを繰り返す…

FlagsAttributeを指定したenumの文字列

c#

ものすごく小ネタですが、FlagsAttributeを指定したenumの文字列表現はどうなるんだろ?とふと気になって試してみました。 // トッピング [Flags] public enum Toppings { None = 0x00, // なし Nitamago = 0x01, // 煮卵 CharSiu = 0x02, // チャーシュー M…

ASP.NET MVC - FilterAttribute.OrderとFilterScopeによるフィルタの実行順を確認する

FilterAttribute.OrderとFilterScopeによるフィルタの実行順を確認します。 同じフィルタが複数ある場合に FilterAttributeのOrderプロパティの昇順(小さい値から大きい値の順序) FilterScopeの昇順 でフィルタがソートされて実行される、というあたりを確…

ASP.NET MVC - input要素のplaceholder属性に使うHtmlHelperの拡張メソッドを作ってみた

気持ち今さら感はありますが、input要素のplaceholder属性にテキストを出力するためのHtmlHelperの拡張メソッドを作ってみました。正直なところやってみて作りました!というほどではなかったんですが、まあ試してみたかったんです、ということで。 モデルの…

LINQ - 空のシーケンスでMin/Max/Averageを使ったときのメモ

LINQで空のシーケンスに対してMin/Max/Averageを使うとInvalidOperationExceptionが発生する場合があります。言われるとそっかと思うんですが、SQLの感覚もあってかうっかりやっちゃうかなあと思ったのでちょっとメモしておきます。 たとえば、intの空のシー…

SqlConnectionの接続タイムアウトを確認してみる

SQL Serverで単にタイムアウトと言っても接続タイムアウトとクエリタイムアウト(コマンドタイムアウト)の2つがあります。発生するタイミングが違いますし、それぞれ理解しておきたいなと思います。 まずはちょっと簡単に整理します。 接続タイムアウト 名…

SQL Server - 主キーの一覧を取得するクエリ

前回は外部キーの一覧を取得するクエリを書いてみました。 ichiroku11.hatenablog.jp 今回は外部キーのときと同じようにテーブル名やカラム名を含めて主キーの一覧を取得するクエリを書いてみました。 select i.name as [主キー名], ic.index_column_id as […

SQL Server - 外部キーの一覧を取得するクエリ

テーブル名やカラム名を含めて外部キーの一覧を取得するクエリです。探したら似たようなクエリが見つかる気もしますが練習もかねて書いてみました。また使うことがあるかなと。 select fk.name as [外部キー名], fkc.constraint_column_id as [外部キーカラ…

Entity Framework - 条件付きで関連エンティティを読み込む

Includeメソッドを使って関連エンティティを読み込むとき、読み込む関連エンティティをフィルタしたいことがあると思います。というかありました。 Includeメソッドで書けるのかなと思って調べましたがどうもできない様子。代替案がないかなと思って調べたと…

SQL Server - NULLを含んだ複合外部キーのメモ

複合外部キーを使うことになったんですが、外部キー制約を設定するカラムの1つの値がNULLの場合に想像していた動きと違ったのでメモを残しておきます。(想像と違うのはわたしだけかもですが) 次のようなテーブルがあったとします。SampleBに外部キー制約が…

Entity Framework - EXISTSを使ったサブクエリのサンプル

WHERE句にEXISTSを使うようなデータ取得をEntity Frameworkで実行したい場合、LINQのAnyメソッドを使うようです。想像通りという気もしますが適当な1対多のテーブルとデータで試して出力されるクエリを確認してみます。 まずはモデルとDBコンテキストを用意…

SQL Server - null以外の値でユニークにする

SQL Serverでnull以外の値でユニークにしたいときがあると思います。 先に方法を書くと「フィルター選択されたインデックス(filtered index)」を使うことでnull以外の値でユニークを実現できます。 フィルター選択されたインデックスの作成 ということで今…

jQuery.ajaxでJSON形式の空のレスポンスはエラー扱いになる

この前ちょっとはまったのでメモ。まさしくこれ。 jQuery Core 1.9 Upgrade Guide | jQuery Prior to 1.9, an ajax call that expected a return data type of JSON or JSONP would consider a return value of an empty string to be a success case, but r…

Entity Framework - ワイルドカード文字を使った文字列検索

Entity FrameworkでstringのContainsメソッド、StartsWithメソッド、EndsWithメソッドを使って文字列を検索すると、LIKE演算子で「%」を使ったselect文が作成されます。 MSDNとかのドキュメントっぽいものは見つけられませんでしたが、適当なエンティティとD…

Entity Framework - 複合型のマッピング先のカラム名を変更する

Entity Frameworkで特に指定しない場合、複合型(ComplexType)は「{プロパティ名}_{複合型のプロパティ名}」という名前のカラムにマッピングされます。たとえば次のようになります。 エンティティ // メールアドレス(複合型) public class MailAddress { …

ASP.NET MVC - コレクションのコレクションにバインドする

できるかな?できるよね?と思って試したらやっぱりできたのでメモ。 コレクションにバインドする まずはおさらいということでコレクションにバインドするサンプルです。 name属性に配列のようにインデックスを指定します。 ビュー @using (Html.BeginForm()…

LINQでn個ずつグルーピング

前に少し考えたときは思いつかなかったのですが、今日ふと思い立って書いてみました。 コレクションの要素を5個ずつでグルーピングするサンプルです。 static void Main(string[] args) { var letters = "abcdefghijklmnopqrstuvwxyz".ToCharArray(); Consol…

dapper dot net - 1対多のテーブルをコレクションプロパティにマッピングする

いつものごとくタイトルが微妙な気もしますが、やりたいことは「DBに注文テーブルと注文明細テーブルがあって、注文明細のコレクションを持っている注文にマッピングしたい」といった感じのことです。 てことでマッピングするクラスです。 // 注文 class Ord…

Entity Framework - SkipメソッドとTakeメソッドを使うとFETCH句とOFFSET句が使われることを確認する

SQL Server 2012からOFFSET句とFETCH句が追加されて、クエリだけでページングを実現できるようになりました。Entity Frameworkを使っているときに、SkipメソッドとTakeメソッドを使うとOFFSET句とFETCH句が使われるの?ってあたりが気になったのでログで発行…

SqlCommandがタイムアウトした時にスローされるSqlExceptionを確認する

SqlCommandにはタイムアウトの時間を設定するSqlCommand.CommandTimeoutプロパティがあります。 SqlCommand.CommandTimeout プロパティ (System.Data.SqlClient) MSDNからもわかりますがタイムアウトした時にはSqlExceptionがスローされます。 このSqlExcept…

LINQでクロス結合

クロス結合(CROSS JOIN)はLINQを使ってどうやって書くんだろうと気になったので調べてみました。 SQLでもほとんど使わないのでC#でもほとんど使わないとは思いますが・・・。重複ありのすべての組合わせを出したいときに使えるかなーと思います。まぁほと…

「ファイル名を指定して実行」で起動する管理ツールのメモ

Win + Rのあれですね。 主にWebサーバやDBサーバを管理するときに使いそうなコマンドです。というより最近覚えたコマンドとたまに使うので覚えたいコマンド。 管理ツール コマンド IISマネージャー inetmgr SQL Server Management Studio ssms コンピュータ…

Json.NET - enumを文字列でシリアライズする

久しぶりにJson.NETのメモです。 Json.NETを使ってenum値をJSONに出力するとき、デフォルトでは数値になります。数値だとぱっと見わかりにくいので文字列で書き出したいときがあると思います。そんなときはStringEnumConverterを使います。 使い方はたぶん2…

cURLのメモその2

cURLの個人的なメモその2です。 その1はこちら。 とりあえず覚えた cURL のオプション - いちろぐ 今回はファイルのアップロードとダウンロードです。 ファイルのアップロード multipart/form-dataでファイルを送信するには-Fオプションを指定します。name=v…

TypeScript - アロー関数でオブジェクトリテラルを返そうとしてちょっとはまった話

いい解決方法が見つかったわけではありませんが、ちょっとはまった記念に残しておきます。 TypeScriptで次のようにアロー関数を使って単にオブジェクトリテラルを返そうとしたのですが、コンパイルエラーに・・・。 // TypeScript [1, 2, 3].map((value, ind…

T-SQL - TOP句とパラメータ

SELECT文のTOP句にパラメータを使用できることを初めて知りました。 こんな感じ。Dapperでクエリを実行するサンプルです。 // TOP句に@countを指定する var sql = @" select top (@count) * from (values (N'ホルモン', 490), (N'カルビ', 880), (N'キムチ',…

再帰トリガーとRECURSIVE_TRIGGERSオプションのメモ

UPDATEトリガーで自身を定義したテーブルに対してまたUPDATEしたら無限ループに入らないの?と疑問に思ったので試してみましたと言う内容です。 説明するよりクエリを見てもらった方がわかりやすいと思うので、さっそくテーブルとUPDATEトリガーを。UPDATEト…

DMLトリガーを試す

トリガーをほぼ使ったことがないトリガー初心者なのですが、使う機会がでてきそうで調べていました。とりあえずDMLトリガーの、さらにAFTERトリガーにしぼって気になったところを試してみたので、少しメモとして残しておきます。 まずはテスト用のテーブルと…

PRINT・RAISERRORとSqlConnection.InfoMessageイベント

T-SQLのPRINTを使うとクライアントにメッセージを通知できます。そのメッセージはSqlConnection.InfoMessageイベントで取得できます。 また、RAISERRORでも重大度(severity)が10以下の場合は、同様にSqlConnection.InfoMessageイベントでメッセージを取得…

再帰CTE(共通テーブル式)で階層構造のパスを作る

検索すると再帰CTEのサンプルはいろいろ見つかりますが、自分で書いたクエリを残しておきたいなと思って書いてみました。おさらいというかメモというか。 共通テーブル式を使用する再帰クエリ 上記MSDNにもありますが、再帰CTEのざっくりした書き方はこんな…

Entity Framework - パラメータを渡してSQLを実行する

Entity Frameworkを使って直接SQLを実行したいときがあって、さらにパラメータの渡し方が気になったので試していました。 まず直接SQLを実行するメソッドは2つ用意されています。 Database.SqlQuery メソッド (System.Data.Entity) Database.ExecuteSqlComma…

TypeScript - lib.d.tsの場所

lib.d.tsの場所のメモです。 ローカルだと(Visual Studioがインストールされていれば)ここ。 C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\TypeScript\lib.d.ts またはcodeplexにも。 http://typescript.…