2010/03/25

Google Analyticsにアクセスできないんだけど

このエントリーをはてなブックマークに追加
何度試しても中に入れなかった。「Analytics にアクセス」を押しても、もとのページ(英語)に戻ってくる。使い物になんないよと思えるほど、みんな注目してアクセスが集中しまくっているのか、アップデートの途中なのかは知らないけれど。

Googleさんが悪いのではないのかもしれないけれど、安定したサービスを供給しているとは言えないのではないかな。

Google Analytics
http://www.google.com/intl/en/analytics/index.html

n-sasaoka 2010/03/25
アクセスできた。何も変わってないね。

2010/03/21

HTML5も

このエントリーをはてなブックマークに追加
HTML5についての話は聞くけれど、実用機能のある一般サイトで「え? これってFlashじゃなかったの?」って後で驚くようなことは、残念ながら今のところ未経験です。

「こんだけすげーことができるんだぜ」というのも「Flashを使わずに」という一文が付いて回っている限り、全然すごくないんだよね。なので、いまいち盛り上がりに欠けるところです。
まあ、ブラウザの能力が急速に上がっていることは、何より楽しい未来を期待させる要因です。

Chrome Experiments
http://www.chromeexperiments.com/

2010/03/20

i++と++iの違い

このエントリーをはてなブックマークに追加

インクリメント時の処理の違い

インクリメントするときに、記述の違いでの処理の違いについて。
i++は値を返してからiに1を加えます。++iは、1を加えてから値を返します。

例としてソースコードはjavascriptのものですが、C#でも同じです。

i++
var i = 0;
var a = i++;

alert("i=" + i + "/a=" + a);
/* 出力結果 i=1/a=0 */

++i
var i = 0;
var a = ++i;

alert("i=" + i + "/a=" + a);
/* 出力結果 i=1/a=1 */

インクリメントのときに、一緒にどこかに代入するようなケース自体が稀です。
whileの条件判定するときにi++か++iを使うのだろうなあと想像はできますけれど、もはやそういうコードを書く機会はあまりないかもしれませんね。けれど、知ってるに越したことはないです。
雑学的なネタ話になってしまってる感もあります。どっちがどっちかごっちゃになって調べる羽目になったので自分メモ。
世の中にはi++派が多いらしい(自分もその一人)。右利きが多いみたいなもんでしょうか。i++しか見たことない気もします。

2010/03/15

GridViewの使い方

このエントリーをはてなブックマークに追加
大量のデータを扱うときに、いかに見やすく、高速に表示させるかというのは重要なテーマです。
GridViewコントロールは、表形式の出力をいとも簡単に行ってくれる出来る子なのですが、機能が多くて、いきなり使おうとしても何をどうしていいのやらと、取っ付きにくい性質もあります。
初めてGridViewを使おうとしている人に向けて、使い方を解説していきます。
※スクリーンショットはVS2005ですが、以降でも大体同じです(たぶん)。

とりあえず使ってみる


カレンダー的なものをGridViewで表示させてみます。
ダイジェストはこちら。
  1. コントロールを貼る
  2. データをGridViewに設定する
  3. 表示の仕方を調整する
  4. オートフォーマットのスタイルを使う

1.コントロールを貼る


GridViewコントロールを配置します。

配置します。
配置して終わり。とりあえず、これだけです。

2.データをGridViewに設定する


  • データの元となるカレンダーのDataTableをつくります
  • GridViewのDataSourceにDataTableを設定
設定されたデータを反映させるために、DataBindメソッドを呼び出します。

ソースコード
protected void Page_Load(object sender, EventArgs e) {
  // データをつくる
  DataTable table = new DataTable();
  table.Columns.Add("日付");
  table.Columns.Add("曜日");

  int year = DateTime.Today.Year;
  int month = DateTime.Today.Month;
  DateTime dateTime = new DateTime(year, month, 1);
  int count = DateTime.DaysInMonth(year, month);
  for (int i = 0; i < count; i++) {
    DataRow row = table.NewRow();
    row["日付"] = dateTime.ToShortDateString();
    row["曜日"] = dateTime.DayOfWeek.ToString();
    table.Rows.Add(row);
    dateTime = dateTime.AddDays(1);
  }

  // GridViewに設定する
  this.GridView1.DataSource = table;
  this.GridView1.DataBind(); // DataSourceに設定した値を反映させる
}

DataTableの通りに対応するヘッダ行が自動的につくられます。
⇒GridView.AutoGeneralColumnsプロパティがデフォルトでtrueに設定されているので、このように動作します。カラムを都合のよいようにカスタマイズする場合は、この値をfalseにすると勝手に行が作られることはありません。

GridViewコントロール自体は、フォームデザイン上では配置しただけ。その後、DataSourceの設定とDataBindメソッドの呼び出しを行っているだけですが、このようにDataTableの中身を表示することができます。

3.表示の仕方を調整する


単にデータを表示しただけですが、表示の仕方を調整してみましょう。
  • 曜日の表示を日本語にする
  • 土日の行に色を塗る

DataTableに設定する段階で整形すればいいのですが、このようなデータは大体の場合、表示とは無関係のところで生成されるのが一般的です。ごく小規模のプログラムを除けば見せ方を念頭においてデータが作られることは少ないと思います。
GridViewのDataSourceにデータがすでに設定されているとして、表示の段階で都合がよいように整形します。

DataBindメソッドが呼ばれた後に、GridViewの行が作成されるときに発生するRowCreatedイベントを追加します。
このイベントの中で、指定列の値の変更や、行の背景色の設定を行うことができます。

ソースコード
protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e) {
  if (e.Row.RowType == DataControlRowType.DataRow) { // データ行のみ
    // 曜日を日本語に変換
    DataRow row = (((DataRowView)e.Row.DataItem).Row);
    string dayOfWeek = ConvertDayOfWeekString(row["曜日"].ToString());
    row["曜日"] = dayOfWeek;

    // 土曜と日曜に背景色をつける
    if (dayOfWeek == "土") {
      e.Row.BackColor = Color.LightGray;
    } else if (dayOfWeek == "日") {
      e.Row.BackColor = Color.LightPink;
    }
  }
}

// 曜日を日本語に変換する
protected string ConvertDayOfWeekString(string dayOfWeek) {
  string ret = "";
  switch (dayOfWeek) {
    case "Sunday": ret = "日"; break;
    case "Monday": ret = "月"; break;
    case "Tuesday": ret = "火"; break;
    case "Wednesday": ret = "水"; break;
    case "Thursday": ret = "木"; break;
    case "Friday": ret = "金"; break;
    case "Saturday": ret = "土"; break;
  }
  return ret;
}

実行結果
実行すると下のように表示されます。

4.オートフォーマットのスタイルを使う



GridViewには、表を整形するためのスタイルとしてあらかじめ用意されているものがあるので、それらを使うことができます。
表の一行一行を明示させるため、奇数行と偶数行をそれぞれ色分けするというスタイルも用意されています。
選ぶだけです。
実用的なので文句はないんですけれど、グッとくるようなデザインは期待しないであげてください。


こちらもどうぞ。

2010/03/11

[javascript]canvasで円や角丸の矩形を描画する

このエントリーをはてなブックマークに追加

円や角丸の矩形の描画

canvasで円や、角丸の矩形を描く。
関数が用意されていないので自作します。
ソースコード
function draw(){
    var canvas = document.getElementById("canvas");
    var ctx = canvas.getContext("2d");
    var pi = Math.PI;
    // 塗りつぶし円を描く
    var fillCircle = function (x, y, r) {
        ctx.beginPath();
        ctx.arc(x, y, r, 0, pi * 2.0, true);
        ctx.fill();
    };

    // 塗りつぶし角丸の矩形を描く
    var fillRoundRect = function (l, t, w, h, r) {
        ctx.beginPath();
        ctx.arc(l + r, t + r, r, - pi, - 0.5 * pi, false);
        ctx.arc(l + w - r, t + r, r, - 0.5 * pi, 0, false);
        ctx.arc(l + w - r, t + h - r, r, 0, 0.5 * pi, false);
        ctx.arc(l + r, t + h - r, r, 0.5 * pi, pi, false);
        ctx.closePath();
        ctx.fill();
    }

    var colorList = ["#0080be", "#00b09b", "#a6ff2d", "#ffbe23", "#f70013", "#8200b2"];
    var count = colorList.length;
    for (var i = 0; i < count; i++) {
        ctx.fillStyle = colorList[i];
        var v = i * 40  / count;
        fillCircle(50, 50, 40 - v);
        fillRoundRect(100 + v, 10 + v, 120 - v * 2, 80 - v * 2, (40 - v)  / 2);
    }
}
実行結果
サンプルコードの実行結果はこのとおり。

fill()をstroke()にすれば、塗りつぶしではなく線を描くことができます。

2010/03/04

祝日法改正案、嫌すぎる

このエントリーをはてなブックマークに追加
祝日が地域ごとにばらばらになる法案です。

個人的にはものすごい反対。
日本全国どこにいても変わることのない絶対基準が通じないなんて、なんか不安で仕方ない。
標準時刻を地域ごとに分けましょう、とかいうのと同じくらいの抵抗があります。

大型連休によって集中する交通渋滞の緩和、観光の需要、観光地の雇用拡大を目指すというものらしい。
けれど、地域別って近畿、北海道・東北なんかの括りだったら、同じ方向向かってしまうわけで、交通渋滞の緩和にならないんじゃ…、と思ってしまうわけだけどどうなんでしょうか。

忘れてはいけないのは企業の目線です。
会社によっては、4/29から二週にわたって休みをつなげるとこも珍しくない。というのも、ちょこちょこ休みいれたり、飛び石で工場をまわしたりするのが逆に非効率という判断なのだと思います。すでに祝日の範囲を超えて、企業側が勝手に大型連休にしているのです。
大型連休は祝日ではなくて、企業が生み出しているものがと言っても過言ではない。つまり祝日が移動するのであれば、実質的な休みは確実に減るとも言えますね。少なくとも、一週がまるごと休みになっても最大9連休にしかなりません(2010は4/29-5/10が休みの人は11連休)。
まあ、うちの会社は暦どおりなのでそんなことは気にしませんけどね。

感覚的には、あくまで「たまたま」祝日が連なってるね。それを誰かが、ゴールデンウイークと呼んだそうな。乗っかる形で、シルバーもあるでよ、というノリだと思ってました。ついに国まで動かしたのね、と言えなくないですね。

wiki - ゴールデンウィーク

ああ嫌だなー。
カレンダーが面倒くさすぎる。全国で使えるように、ちまちました文字で「中部・北陸」「近畿」とか書かれてて、細く矢印とか引かれていたりするのを考えるとぞっとします。


gigazine - 地域別で連休がバラバラになる「祝日法改正案」、さらに海の日や敬老の日を平日扱いにして秋にシルバーウィークを創設へ
http://gigazine.net/index.php?/news/comments/20100304_gw_sw/