Hatena::ブログ(Diary)

Kobarin’s Working Memo

2012-04-19

Google Sitesで独自ドメインのサイトを表示するまで

| 13:23

大まかな流れ

  1. Google Sitesでサイト作成
  2. Google Appsコントロールパネル(以降コンパネ)でマッピング
  3. レジストラにホスト登録

手順

以降の手順は、独自ドメインを既に取ってあり、Google Appsアカウント登録も済んでいる前提で書きます。

  1. 独自ドメインのAppsアカウントログイン
  2. Google Sitesへ移動し、サイトを作成します。適当に1ページだけ作ればいいです。
  3. サイトの設定から「共有と権限」を開き、「リンクを知っている全員が閲覧」を選択しておきます。作成途中なのでクローズにしたいのは山々ですが、これをしないとマッピングしてもリダイレクトされるだけになってしまうようです。
  4. Appsコンパネに移動し、グローバルメニュー「設定」へ進みます。
  5. 左メニューより「サイト」を選択。
  6. 「全般」タブを押し、「ユーザーはサイトを公開できます」にチェック。
  7. ウェブアドレスのマッピング」タブを押し、「新しいウェブアドレスを追加」を押します。
  8. Sitesで登録したアドレス(http://sites.google.com/a/nfs.jp/の後のぶぶん)を入力し、「web address」欄にサブドメインを入力し、画面下の「変更を保存」ボタンを押す。
  9. レジストラ(お名前ドットコム等)の設定画面に移動し、Appsで登録したサブドメインのCNAMEとして「ghs.google.com.」を登録します。Googleの説明上では現れませんが、末尾に「.」が必要です。これがないと、Sitesのアドレスにリダイレクトされるだけでホスト名で偽装できません。

以上。

2012-02-15

経済センサスと事業所・企業統計調査の違い

| 13:41

H18まであった事業所・企業統計調査は、H21以降は「経済センサス」として移行されました。

その中で事業所や従業者数の数値が事業所統計経済センサスで異なっていたため、調査方法の違いを調べたところ、内閣府のサイトに以下の資料が見つかりました。


経済センサス-基礎調査と事業所・企業統計調査の比較(内閣府)


調査対象の違いが大きく影響していると思われます。以下引用。

.経済センサス事業所・企業統計
調査の対象約700万事業所
(調査員が現地確認により把握した事業所に加え、商業・法人登記簿に記載の法人も対象)
約570万事業所
(調査員が現地で確認したすべての事業所を対象)

2012-02-14

ObjectDataSourceからクラスを呼び出してバインドする

| 16:12

Repeater等のデータリスト系コントロールから、データソースとしてObjectDataSource(以降ODS)を指定した際にクラスを呼び出す方法です。


私個人のやり方ですが、SQL文の定義を1つに集約するため、最近はSqlDataSourceやODSを個別に定義せず、クラスをObjectDataSourceから呼び出しています。

以下にサンプルを示します。

まずRepeaterのデータソースにODSを指定します。

ODSではFruitsクラスのItemsメソッドを呼び出し、パラメータに色タイプ(colorType)としてRedを指定しています。

Itemsメソッドでは、FruitクラスをGeneric化し返しています。

<asp:Repeater ID="rp1" runat="server" DataSource="ods1">
  <HeaderTemplate><ol></HeaderTemplate>
  <ItemTemplate>
    <li><%# Eval("Name") %>(<%# Eval("Price", "{0}円") %>)</li>
  </ItemTemplate>
  <FooterTemplate></ol></FooterTemplate>
</asp:Repeater>
<asp:ObjectDataSource ID="ods1" runat="server" SelectMethod="Items" TypeName="Products.Fruits">
  <SelectParameters>
    <asp:Parameter DefaultValue="Red" Name="colorType" Type="String" />
  </SelectParameters>
</asp:ObjectDataSource>

クラス

namespace Products
{
  public class Fruits
  {
    public Fruits(){ }
    public List<Fruit> Items(string colorType)
    {
      List<Fruit> fruits = new List<Fruit>();
      switch(colorType)
      {
        case "Red":
          fruits.Add(new Fruit("Apple", 100);
          fruits.Add(new Fruit("Cherry", 250);
          break;
        case "Yellow":
          fruits.Add(new Fruit("Banana", 200);
          fruits.Add(new Fruit("Pineapple", 400);
          break;
        default: break;
      }
      return fruits;
    }
  }

  public class Fruit
  {
    public Fruit(string name, int price)
    {
      Name = name;
      Price = price;
    }
    public string Name{ get; set; }
    public int Price{ get; set; }
  }
}

実行結果

1. Apple(100円)
2. Cherry(250円)

2012-01-31

タスクマネージャーをGoogleリーダーで代替

| 11:04

Googleリーダーを利用してスケジューラーにしてしまおう」という記事です。


当方の環境では、タスクマネージャーで定期的(月次、週次、日次、毎時)にスケジュールさせているコンソールアプリケーションがありますが、やり方が悪いのか、未だに結構トラブルが多いです。

知らない間に実行されていない事もありますし、実行形式のファイルなのでバグが見つかった場合、コンパイルし直してexeファイルをサーバーに置いてやったりしなくてはならない等、asp.netに比べると使い勝手が悪いと感じています。


そこで表題の件になりますが、要は「定期的に実行する」事さえ出来ればいいわけで、必ずしもタスクスケジューラーに依拠する必要はないと考えました。というか実践済み。


そこで当方が考えたのが、表題の件になりますが、Googleリーダーで呼び出してやる方法です。

Googleリーダーの説明をしますと、クラウド型のRSSリーダーで、フィードのアドレスを指定しておくと、定期的にアクセスし、新規の記事を蓄積してくれるサービスです。


RSSだけでしょ?」と思われるかもしれませんが、asp.netXMLの出力形式に対応しているため、(擬似的に)RSSとして振る舞う事も可能なのです。

この性質を利用して、asp.netページにC#VB.NETプログラムを記述し、RSSに準拠した出力を行い、Googleリーダーフィード登録しておけば、スケジューラーの設定をするまでもなく、Googleが勝手に読み込んでくれる事になります。


更に付加的な機能として、フィードのtitleやdescriptionに結果データ(処理件数やエラー内容など)を書きだすようにしておけば、Googleリーダーを通して結果報告を知る事も出来て、面倒なメール通知などの機能を盛り込む必要さえなくなります。


以下、メリット・デメリットをまとめました。

メリット

  1. スケジューラーの設定・管理をせずに済む
  2. 記述の慣れたasp.netプログラムを書ける
  3. プログラムの更新の際に、サイトのaspxファイルを書き換えるだけで良い
  4. エラー時も、web.configのcustomerrors等で定義しておけば、メール通知等可能
  5. Googleリーダーを通じて出力結果を参照できる
  6. AndroidiPhoneアプリには、googleリーダーに対応したRSSリーダーがあるため、スマフォタブレットで結果を確認・共有できる

デメリット

  1. 実行時間が長くかかる処理だと、Googleが読み込んでくれない可能性がある
  2. フィードを読み込むタイミングを設定できないため、例えば日次処理などの場合、何度も実行される事があっても、不具合のないようにプログラムを書く必要がある(例:当日実行済みならその日は処理しない…等)
  3. 原則、public公開されるため、RSSに吐き出す内容には極秘情報は入れられない(メールで送信すればいいんですが)
  4. 当然ですが、DBの処理等をする場合、アクセス権を適切に設定する必要がある(原則、全てストアドプロシージャで実行させるのが安全でしょう)

特に重要になるのは、デメリットの1と2あたりでしょうか。

しかし定期的にレコード件数をDBに書きだすとか、そういった類の処理にはうってつけだと思いますが、いかがでしょうか。

また、Googleリーダーの巡回以外のIPアドレスasp.netページへのアクセス遮断しちゃえばよりセキュアになる気もしますが、まー面倒でしょう。


サンプルプログラムなんかも載せたかったのですが、時間がないのでここまで。リクあれば載せます。

その他ご意見等あれば、コメントお願いいたします。

2012-01-27

Windows Server 2008におけるタスクの設定

| 10:52

タスクスケジューラーで毎日あるいは毎時実行するはずのタスクが実行されず、履歴にも実行された形跡がないため、改めてタスクスケジューラーの設定を見直します。

参考にしたのはTechnetタスクの設定( for WinServer2008 and Vista)」です。

http://technet.microsoft.com/ja-jp/library/cc722178(WS.10).aspx


とりあえず以下の設定で週末運用し、来週確認してみようと思います。黒く塗りつぶした箇所がチェックONを表します。


タスクを要求時に実行する

□スケジュールされた時刻にタスクを開始できなかった場合、すぐにタスクを実行する

タスクが失敗した場合の再起動の間隔

タスクを停止するまでの時間

■要求時に実行中のタスクが終了しない場合、タスクを強制的に停止する

タスクが再度実行するようにスケジュールされていない場合に削除されるまでの時間

タスクが既に実行中の場合に適用される規則

 ○新しいインスタンスを開始しない

 ○新しいインスタンスを並列で実行

 ●新しいインスタンスをキューに追加

 ○既存のインスタンスの停止