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

ASP.NET MVC で二重サブミットを防止したい

フォームなんかでボタンをうっかりダブルクリックしちゃって二重に投稿されてしまうのを防ぎたい。 クリックしたらボタンを無効にできればなお良し。

単純に JavaScript でボタンクリックされたら無効にするイベントハンドラ書けばいいと思ってたら、クライアントバリデーションに失敗したときボタンが押せなくなって困った。

なので今のところ

$(function () {
    $("form").on("submit", function (e) {
        var $form = $(this);
        // クライアントバリデーションに成功したら submit を無効にする
        if ($form.valid()) {
            $(this).find("[data-disable-with]").each(function () {
                var $button = $(this);
                var text = $button.attr("data-disable-with");
                $button.val(text);
                $button.prop("disabled", true);
            });
        }
    });
});

な感じでクライアントバリデーションに成功したらボタンを無効にするようにしている。Rails をマネして、data-disable-with 属性でボタンを無効にしたとき、ボタンのタイトルも変更できるようにもしてみた。

ビューでは

<input type="submit" value="ログイン" class="btn btn-lg btn-primary btn-block" data-disable-with="ログイン中..." />

という風に使っている。

Launchpad に勝手に追加された Chrome アプリを削除

mac

Launchpad に Chrome アプリが勝手に追加されてうざかったので、 下記のフォルダを削除したら表示されなくなった。

Macintosh HD/ユーザ/<ユーザー名>/アプリケーション/Chrome アプリ

Launchpad に表示されなくなるだけで、Chrome アプリ自体が削除されるわけじゃないから、フォルダを削除しても実害なし。

Visual Studio 2015 の ASP.NET 5 プロジェクトを Windows7 でビルドするには PowerShell 3.0 以上が必要だった

Visual Studio 2015 で ASP.NET 5 プロジェクトをビルドしようとしたら

DNX SDK バージョン 'dnx-clr-win-x86.1.0.0-beta5' のインストールに失敗しました。
ソリューションでは、このセッション用に DNX SDK バージョン 'dnx-clr-win-x86-1.0.0-beta5' を使用します

っていうエラーが出てビルドできなかった。

これは既知の問題で、Windows7 でビルドするには PowerShell 3.0 以上が必要みたい。

https://support.microsoft.com/ja-jp/kb/3025135

PowerShell の現時点での最新は 4.0。 Windows Management Framework 4.0 をインストールすれば、PowerShell 4.0 もインストールされた。

Download Windows Management Framework 4.0 from Official Microsoft Download Center

これでようやくビルド成功。

『スクラム実践入門』読んだ

本書では、スクラムとはなんぞやから、 スクラムと組み合わせるプラクティス、 そしてスクラムを実践していて陥るであろう問題とその解決方法が紹介されていた。

スクラムはチームとしての仕事の進め方に特化したフレームワークなので、 どう作るかといった細かな事は決まっていないみたい。 インセプションデッキだったりプラニングポーカーといったプラクティスを組み合わせる必要があったのか。

後半では、ペパボとmixiDeNAの導入事例が、 成功だけでなく導入失敗時の話まで書いてあった。 優秀な人たちですら失敗するんだから、 自分たちが導入しようとしたらまず失敗するだろうな。 そこから立て直す方法が載っているのは実用的。

スクラム実践入門 ── 成果を生み出すアジャイルな開発プロセス (WEB+DB PRESS plus)

スクラム実践入門 ── 成果を生み出すアジャイルな開発プロセス (WEB+DB PRESS plus)

Rails の flash みたいに ASP.NET MVC の TempData を使ってみた

Railsflash と同じことが ASP.NET MVC でもやりたくて、 ミドルウェア自作するしかないかなぁって思っていたんだけど、 TempData で同じことができそうだった。

ただ、TempData を素で使うとキーを typo しそうなので、次のように拡張メソッド使っている。

/// <summary>
/// TempData の拡張機能を提供します。
/// </summary>
public static class TempDataExtensions
{
    /// <summary>
    /// 通知メッセージを設定します。
    /// </summary>
    /// <param name="tempData">一時データ</param>
    /// <param name="message">通知メッセージ</param>
    public static void Notice(this TempDataDictionary tempData, string message)
    {
        tempData["notice"] = message;
    }

    /// <summary>
    /// 通知メッセージを取得します。
    /// </summary>
    /// <param name="tempData">一時データ</param>
    /// <returns>通知メッセージ</returns>
    public static string Notice(this TempDataDictionary tempData)
    {
        return tempData["notice"] as string;
    }

    /// <summary>
    /// アラートメッセージを設定します。
    /// </summary>
    /// <param name="tempData">一時データ</param>
    /// <param name="message">アラートメッセージ</param>
    public static void Alert(this TempDataDictionary tempData, string message)
    {
        tempData["alert"] = message;
    }

    /// <summary>
    /// アラートメッセージを取得します。
    /// </summary>
    /// <param name="tempData">一時データ</param>
    /// <returns>アラートメッセージ</returns>
    public static string Alert(this TempDataDictionary tempData)
    {
        return tempData["alert"] as string;
    }
}

『「納品」をなくせばうまくいく』読んだ

「納品のない受託開発」がどういうものか興味があったので本書を購入して読んでみた。受託開発というよりも、顧客のビジネスをITで支援する顧問エンジニアという印象。顧客のビジネスに必要なサービスを企画から開発・運用まですべて基本一人でやるから、優秀な人ばかりを集めないと成り立たなさそうだ。面白いやり方なので、ぜひ広まってほしいところだけど。

「納品」をなくせばうまくいく

「納品」をなくせばうまくいく

麺道はなもこしの『特製鶏とろつけそば』

土曜の昼にまた『麺道はなもこし』に行ってみた。 今回のお目当ては『特製鶏とろつけそば』。 この店のつけそばをどうしても食べてみたかったんだよね。 20食限定なので昼の開店直後に行かないと食べられないから。

まずはつけそばの麺。 かえしをつけて一口味わってみる。 コシがあって、のど越しもツルっとしていて美味い。

f:id:griefworker:20150429122457j:plain

つけ麺は濃厚なつけ汁が大半なんだけど、 はなもこしのつけ汁はアッサリとしていて上品だった。 鴨せいろみたい。 何杯でもいけそうだ。

f:id:griefworker:20150429122637j:plain

〆はつけ汁をご飯で割って雑炊に。 注文するとつけ汁を熱々の雑炊に調理してくれるのが嬉しい。 こんなの美味いに決まってる。

f:id:griefworker:20150429124151j:plain

特製鶏とろつけそば期待以上だった。 鶏だしラーメンも美味かったけど、 麺の味わう意味ではつけそばのほうが好み。 確実に食べるには開店前に並ぶ必要があるけど、 また食べに行きたい。

関連ランキング:ラーメン | 薬院大通駅薬院駅桜坂駅