2013年

C# で XML の シリアライズ と デシリアライズ

JavaScript の サニタイジング

machineKey の 生成ツール

ASP.NET MVC + Web API で フォーム認証 の実装

jasmine 日本語 API リファレンス (jasmine)

JavaScript で クエリストリング を 取得 & 分解 & 整形 する 方法

ASP.NET MVC で フォーム認証 の実装方法

認証(Authentication) と 承認(Authorization) の違い

ASP.NET Web API の ルーティング

ASP.NET Web API における クエリパラメーター と メッセージボディー の バインド

ASP.NET Web API で DataContract の利用

ASP.NET Web API で レスポンスヘッダー の設定

ASP.NET Web API で 独自 フィルター の実装方法

ASP.NET Web API チュートリアル

GitHub で プルリクエスト を マージ する方法

クロスドメイン制約 を XmlHttpRequest level 2 で 回避 (プリフライト)

JavaScript で 関数 を 文字列化 する方法

クロスドメイン制約 を document.domain の 変更 で 回避

Blogger に pocket の "pocket" ボタン を 設置 する 方法

Blogger に はてなブックマーク の "B!" ボタン を 設置 する 方法

Blogger に google の "+1" ボタン を 設置 する 方法

Blogger に facebook の "いいね" ボタン を 設置 する 方法

Blogger に twitter の "ツイート" ボタン を 設置 する 方法

Blogger に ソーシャルボタン を 設置 する 方法

JavaScript タッチ イベント (MSIE)

JavaScript タッチ イベント (webkit)

WCF Web サービス における レスポンスヘッダー の設定方法

UserAgent を 用いた IE11 の判別方法

Function.prototype.bind を用いた イベント の アタッチ、デタッチ

クロスドメイン制約 を JSONP で 回避 (WCF + jQuery)

WCF を利用した RESTful Web サービス の 作成

クロスドメイン制約 を JSONP で 回避 (ASP.NET MVC + jQuery)

クロスドメイン制約 を サーバー設定 で 回避

IE8, IE9 環境 において jQuery で クロスドメイン通信 する方法

XDomainRequest と XMLHttpRequest level 2 の 違い

Ajax クロスドメインリクエスト 制約

Chrome の UserAgent まとめ

Blogger 記事 を 一覧 表示 する ページ の 作成方法

Blogger の フィード URL 生成 ツール

'); } if ($('#startindex').val() !== '' && (!$.isNumeric($('#startindex').val()) || $('#startindex').val() < 1)) { valid = false; $('#msg').append('
・「取得開始番号」には1以上の数値を入力してください。
'); } if ($('#maxresults').val() !== '' && !$.isNumeric($('#maxresults').val())) { valid = false; $('#msg').append('
・「最大取得数」には数値を入力してください。
'); } var regexp = new RegExp("\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}"); if ($('#orderby').val() === 'published') { value = $('#publishedmin').val() || ''; matched = value.match(regexp); matched = matched ? matched[0] : null if (value !== '' && value !== matched) { valid = false; $('#msg').append('
・「公開日付の開始」には W3C-DTF で入力してください。
'); } value = $('#publishedmax').val() || ''; matched = value.match(regexp); matched = matched ? matched[0] : null if (value !== '' && value !== matched) { valid = false; $('#msg').append('
・「公開日付の終了」には W3C-DTF で入力してください。
'); } } else if ($('#orderby').val() === 'updated') { value = $('#updatedmin').val() || ''; matched = value.match(regexp); matched = matched ? matched[0] : null if (value !== '' && value !== matched) { valid = false; $('#msg').append('
・「更新日付の開始」には W3C-DTF で入力してください。
'); } value = $('#updatedmax').val() || ''; matched = value.match(regexp); matched = matched ? matched[0] : null if (value !== '' && value !== matched) { valid = false; $('#msg').append('
・「更新日付の終了」には W3C-DTF で入力してください。
'); } } return valid; }; var isEnable = function (targetId) { switch (targetId) { case 'publishedmin': case 'publishedmax': return ($('#orderby').val() === 'published') case 'updatedmin': case 'updatedmax': return ($('#orderby').val() === 'updated') case 'callback': return ($('#alt').val().indexOf('script') >= 0) } return true; }; var createLabelUrl = function () { var inputs = document.getElementById('label-row').getElementsByTagName('input'); var labels = []; var uri = '', i, length, label; for (i = 0, length = inputs.length; i < length; i++) { label = $(inputs[i]).val(); if (label) { labels[labels.length] = encodeURIComponent(label); } } if (labels.length > 0) { uri = '/-/'; uri += labels.join('/'); } return uri; }; var createFeedUrl = function () { var url = '', param = '', query = []; var keys, i, length; url += 'https://'; url += $(document.getElementById('baseurl')).val(); url += '/feeds/'; url += $(document.getElementById('resource')).val(); url += '/'; url += $(document.getElementById('content')).val(); url += createLabelUrl(); keys = [ ['alt', 'alt'], ['startindex', 'start-index'], ['maxresults', 'max-results'], ['orderby', 'orderby'], ['publishedmin', 'published-min'], ['publishedmax', 'published-max'], ['updatedmin', 'updated-min'], ['updatedmax', 'updated-max'], ['redirect', 'redirect'], ['callback', 'callback'] ]; for (i = 0, length = keys.length; i < length; i++) { var targetId = keys[i][0]; var queryKey = keys[i][1]; if ($(document.getElementById(targetId)).val() && isEnable(targetId)) { param = queryKey; param += '='; param += $(document.getElementById(targetId)).val(); query[query.length] = param; } } if (query.length) { url += '?'; url += query.join('&'); } return url; }; $('#exec').on('click', function (event) { $('#result').val(''); $('#opn').hide(); window.setTimeout(function () { var url = ''; if (validateInputs() === false) { return; } url = createFeedUrl(); document.getElementById('result').value = url; document.getElementById('opn').href = url; $('#opn').show(); }, 100); }); $('#addlbl').on('click', function (event) { var input = document.createElement('input'); input.type = 'text'; input.className = 'form-control'; input.style.width = 'auto'; document.getElementById('label-row').appendChild(input); }); $('#alt').on('change', function (event) { var value = $(this).val(); if (value.indexOf('script') < 0) { $('#callback-row').hide(); } else { $('#callback-row').show(); } }); $('#orderby').on('change', function (event) { $(document.getElementById('published-row')).hide(); $(document.getElementById('updated-row')).hide(); switch ($(this).val()) { case 'published': $(document.getElementById('published-row')).show(); break; case 'updated': $(document.getElementById('updated-row')).show(); break; } }); $('#result').on('focus', function (event) { $(this).select(); });

Blogger の フィード URL 構成 と パラメタ― まとめ

黒猫 SQL Studio で .mdf (SQL Server データベース ファイル) を 開く