WebSurfer's Home

トップ > Blog 1   |   ログイン
APMLフィルター

jQuery の本を買いました

by WebSurfer 2010年9月18日 14:03
jQuery の勉強を始めるために買った本

今さらながらですが、jQuery の勉強を始めようと思って、本を買ってきました。

今の時代の流れは JavaScript ではなく、それをラップしてライブラリ化(正しい表現ではないかも)した jQuery のように思います。

先の記事 Visual Studio 2010 にも書きましたが、Visual Studio 2010 には jQuery が標準で実装されています。

なので、自分もそろそろ勉強を始めて jQuery を使えるようにならないと、時代に取り残されそうです。

もともと、JavaScript の知識はほとんどなかったので勉強しなければと思っていたのですが、いまさら JavaScript の勉強を始めるよりは、これを契機に jQuery の勉強をした方がよさそうだと思ったしだいです。

本屋さんで見た限りでは、ASP.NET と連携して jQuery がどのように利用できるかが述べられているのは、左の写真のものしかなかったので、この本にしました。

最初の何も知らない状態で本を見て、よく分かるのでよさそうだと思って買うと、実は初歩的過ぎる内容で、すぐに物足りなくなって失敗したと思うことがよくあります。

そう思って、少しレベルが高そうな本を買うと、今度は高すぎてほとんど理解できず、本棚にしまいこんだままになってしまうこともよくあって、なかなか自分にぴったりのレベルの本を見つけるのが難しいです。

専門書は高価なので、買った本が合わなかったからといって次から次へと買うわけにも行かず、悩ましいところです。

今度はどうなんでしょうね。とにかく、本を読み進めて、サンプルを動かしてみます。その結果は、またここに書くつもりです。

Tags:

JavaScript

Response.Redirect("url", false)

by WebSurfer 2010年9月17日 09:44

以下のようにした場合、Next.aspx に遷移するのは、Response.Redirect メソッドが実行された時点でしょうか、それとも、「時間のかかる処理」が終わった後でしょうか?

protected void Button1_Click(object sender, EventArgs e)
{
  Response.Redirect("Next.aspx", false);
  // ・・・・・・・・
  // 時間のかかる処理
  // ・・・・・・・・
}

MSDN フォーラムで上記の質問があって、その時は前者だと勘違いしていたんですが、正しくは後者(正確には、それよりさらに後のリダイレクト後)でした。

Response.Redirect は、ブラウザに対して HTTP Response Code 302 と遷移先 (Location) の url を返します。それを受け取ったブラウザが指定された url を GET しに行くという仕組みになっています。

(詳しくは、.NET エンタープライズ Web アプリケーション 開発技術大全の ポストバック処理 の図 10 を見てください。)

従って、Web サーバーからコード 302 と遷移先 url 情報を含んだレスポンスが帰ってこないと、ブラウザは Next.aspx に遷移できないということになります。

Response.Redirect メソッドの第2引数を false にすると、上記コードの「時間のかかる処理」が全部終わらないことにはサーバーからレスポンスは返ってきません。

という訳で、上記の質問の答えは後者(「時間のかかる処理」が終わった後)になります。

処理にかかる時間が長いと、その間フリーズしたようになってしまい、ユーザビリティの面でうまくないですね。でも、自分が調べた限りですが、まずレスポンスを返して、その後処理を継続して完了させる方法はなさそうです。AJAX を利用してプログレスをユーザーに知らせることで対応するぐらいしか手はなさそうです。

以下は余談ですが・・・

Response.Redirect("url") または Response.Redirect("url", true) とした場合は、処理をその時点で中断して、即、ブラウザに HTTP Response Code 302 と遷移先 (Location) の url を返します。ただし、中断することによって ThreadAbortException が発生します。

Response.End、Response.Redirect、または Server.Transfer メソッドを使用した場合のそれは仕様だそうです。詳しくは、Microsoft Support の 文書番号: 312629 を見てください。

その文書に回避策も書いてあって、Response.Redirect の場合は第 2 引数を false にすることだそうです。でも、自分は回避策は取っていません。例外がスローされても、どうせ終了するスレッドなので何も問題はないと勝手に判断しています。本当にそれでいいのかという一抹の不安はありますが・・・(汗)

----- 2013/3/21 追記 -----

最近知ったのですが、.NET 4 以降の MSDN ライブラリの説明で、End メソッドの使用は非推奨になっています。理由は、End メソッドでスローされる ThreadAbortException がパフォーマンスに悪影響を及ぼすからだそうです。

HttpResponse.Redirect メソッド (String) は End を呼び出します。従って、このメソッドの代わりに、HttpResponse.Redirect(String, Boolean) オーバーロードを使用し、その Boolean の引数に false を渡し、CompleteRequest() メソッドを呼び出すことが推奨されています。

詳細は、MSDN ライブラリの HttpResponse.Redirect メソッド (String, Boolean) を参照してください。

Tags:

ASP.NET

SQL Server Management Studio

by WebSurfer 2010年9月16日 16:07
SQL Server 2008 Management Studio Express

今回は、Visual Studio の Express 版を使ってのアプリ開発には SQL Server Management Studio(以下 Management Studio)は不要という話です。

というより、下手に使うと予期しない問題の解決にハマってしまい、無駄な時間を費やすことになりかねないので、手を出さないほうがいいですというお勧めです。(笑)

何故 Management Studio が不要かといえば、Visual Studio の Express 版は既定のインスタンスへの接続をサポートしていないからです。

Management Studio で、ウィザードを使ってデフォルト設定のままデータベースを作成すると、Instid\MSSQL\data フォルダに DB(mdf ファイル)が作成され、アタッチ済みの状態になるはずです。

即ち、DB を利用するためには、既定のインスタンスへの接続が必要となります。アタッチされた DB に対して、ユーザーインスタンスを利用した接続はできません。

その DB に、Visual Studio の Express 版を接続しようとすると、既定のインスタンスへの接続はサポートされておらず、ユーザーインスタンスは使えないわけですから、うまくいきません。それに気がつかないと、解決できないことにハマってしまい、無駄な時間を費やすことになるというわけです。

Visual Studio Professional 版は既定のインスタンスに接続できるので、不要とは言い切れません。でも、あまり使う機会はないような気がします。実際、自分は使っていません。

アプリ開発に必要な Management Studio の機能のほとんどが Visual Studio(Express 版を含む) に実装されています。ソリューションエクスプローラを使って SQL Server DB を新規作成できます。データベースエクスプローラを操作して、テーブルやストアドプロシージャの作成も可能です。

という訳で、経験浅い自分の場合ではありますが、今まで Management Studio がなくてアプリ開発に困った記憶はないです。

ただし、アプリ開発時ではなくて、実際の運用で既定のインスタンスへの接続が主になる場合は話は別です。

以前、自サーバーを構築した際の経験では、DB 生成クエリの実行、アタッチ/デタッチ、ログインアカウントの設定、ユーザーの権限の設定等に Management Studio は必須のツールでした。GUI で直感的に操作できるので、コマンドを覚える気のない自分には特にそうです。

Tags:

SQL Server

About this blog

2010年5月にこのブログを立ち上げました。主に ASP.NET Web アプリ関係の記事です。

Calendar

<<  2024年5月  >>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

View posts in large calendar