わんくま同盟 Blog's

わんくま同盟

わんくま同盟 Blog's

その名のとおりです。

統計

わんくま同盟メンバ

わんくま同盟わんくま同盟

わんくま同盟メンバの最新の記事

9月18日(土)のわんくま勉強会(東京)に登壇します

9月18日(土)の

 

わんくま勉強会(東京)に登壇

 

します。

 

今スライド作っているところです。

今回の内容は、涙あり、笑いありの下町人情ものです(嘘)

まだ、席は空いているので、みんな来るといいと思います。

http://www.wankuma.com/seminar/20100918tokyo51/Default.aspx

 

#さおさんも来ます(これ重要ですw)

posted @ 2010/09/03 1:46 by R・田中一郎

エラーを握りつしちゃダメ

VB6システムは、まだまだ現役で、新規開発もあったりします。開発者の思いとは裏腹に。 当然なから、改修の仕事も時折発生するわけです。とあるシステム改修現場でのこと。
「納得できない妙な動作をしています」との訴え。
確かに、業務仕様とは異なる動作をしている。いままで動作していて、急におかしくなるときは、データに起因することが多い。 データを閲覧すると、想定外の規約コードや、桁オーバーの値がチラホラ。
エラーログにもエラー状況は書かれていない。異常データだから、落ちてもよさそうなのに落ちない。
内部仕様書をみても埒が明かないので、ソースを見ることにした。    Public Property Let xxx(ByVal yyy As 区分)    On Error GoTo ErrHandler     xx区分 = 区分      Exit Property    ErrHandler:    End Property 関数やプロパティのすべてに on Error goto ErrHandlerが入っている。これはいい。でも
   ErrHandler:    End Property で握りつぶしている。そりゃないよ。半分ほどは、Logに書いているけど。    ErrHandler:        Log出力    End Property これじゃ、正常終了したのかどうか、いちいちログをみなきゃだめだし、ログにもかかれず葬られた処理があるかもしれない。 とりあえず、全部のErrHandler: のあとに、Log出力を咬ませた。 不具合が出る出る......いままで正常とされていたのも、実はおかしかった...というのも発覚。
開発元を捕まえて、文句をいうと、「当時の開発指針に則っています。」との返事。 開発指針には、「各関数には on Error goto ErrHandler を咬ますこと。」と明記はされているが、握りつぶせとは書かれてない!!! 「サラリーマン開発者はプロではないのか」と愚痴りたくもなった。 落ちないシステムは大事だか、不正データの対策は、安全に回避ルーチンに陥るのが望ましいが、結構考慮点が多岐にわたるので、工数増になります。 予算と工期がないとき、素直に落とすほうが、よほど後々のデバッグが楽になります。 どこで落ちたか、解る仕組みの実装するのがプロです。 不確か状態で継続動作するより、落ちたほうがマシと思うのだが。 (*)もちろん、Try catch処理の時も握り潰しちゃだめですよ。

posted @ 2010/09/03 0:15 by Ognac

Codezineに「一覧更新画面を持つWebアプリの作り方~MultiRow for ASP.NETの編集機能を使いこなす!」が公開されました。

CodeZine>COMPONENTzineに「一覧更新画面を持つWebアプリの作り方~MultiRow for ASP.NETの編集機能を使いこなす! 」が掲載されました。

---引用開始

 一覧系のWebアプリケーションを作成する際、悩むことの一つに、編集機能をどのように実装するかという点があります。

 一般的な実装方法としては、一覧の各列に[編集]ボタンを用意して、それをクリックしたら編集用ページが開き編集できる、という流れが考えられます。この流れがなぜ一般的かと言えば、参照と編集で適切なデザインを使い分けられるからです。それ以外にも、編集画面を閉じるタイミングでサーバー側にデータを送信して保存することで、ブラウザを閉じてしまったとしても最後に編集中だったデータ以外は確実にサーバー側に保存できるという点も考慮してあるためだと思います。

 しかし、一覧画面でどんどんとデータを更新していき、任意のタイミングでサーバー側に保存するような操作性を、Webアプリケーションで実現したい場合もあります。Visual Studioに添付されている標準Webコントロールでは実現が難しい、このような一覧更新画面も、MulitRow for ASP.NET 1.0Jを使えば簡単に実現可能です。

---引用終了

posted @ 2010/09/02 23:11 by 初音 玲

Windows 7 アプリ投稿キャンペーン

http://msdn.microsoft.com/ja-jp/windows/jpwin7cp01.aspx

Windows7らしいクライアントアプリ作ってみましょう

っていうキャンペーンがあった。

おもしろそうだけどなぁ・・・・

posted @ 2010/09/02 12:48 by 中博俊

祝 Windows Phone 7 RTM

http://windowsteamblog.com/Windows_Phone/b/windowsphone/

本当にRTMですね。

ここからメーカーの最終組み立てですしw

日本語版は出ないらしいので初期ロットの英語版を輸入するしかないですね。どうやって買おうかなー

posted @ 2010/09/02 12:37 by 中博俊

Silverlightのランタイムが更新されました。

image

2010/08/20にbeta 1版の配布が開始されたLightSwitchに関連してSilverlight 4のランタイムが更新されていたそうです。そのため、LightSwitchをいれたPCで作成されたSilverlight 4アプリを配布しても配布先のランタイムと合わずに動作できないということがあったようです。

でも、US現地の2010/09/01から、日本でも本日からSilverlight更新プログラムの自動配布が動くようになったようなので安心ですね。

posted @ 2010/09/02 8:15 by 初音 玲

iPhone 4がこわれました

iPhone 4が壊れて、全然電源が入らなくなりました。

上下のボタンを同時長押ししても反応しないし、ホームボタンをしながらiTurnsが入ったPCにつないでもリカバリーモードで立ち上がってこないしどうにもなりません。これが2010/07/28のことです。

そこでやっぱり携帯なのですから購入したSoftBankショップに持ち込むことにしました。とはいっても行動範囲と行動時間内に立ち寄れるショップは限られているので2010/09/01になってやっといきました。

私:すいませーん。i Phone 4の電源がはいらなくなったんですが、一通りのことはやってもダメでした。

店員さん:店のPCにつないでちぇっくしてみますねー

(数分後)

店員さん:だめですねー。ここでできることはないので、ソフトバンク i Phoneテクニカルセンターに電話して聞いてみてください。ダメだったら代替機おかししますねー(と電話番号)

(でんわしてみる)

私:すいませーん。i Phone 4の電源がはいらなくなったんですが、一通りのことはやってもダメでした。

オペレータ:リカバリーモードをためしてみてください。電源はいらなくてもそれで大丈夫です。ただし、リカバリーモードだとデータとかは消えてしまいます。

私:バックアップから復元じゃだめなんですか?

オペレータ:そのバックアップの状態に故障の原因がふくまれているとやっぱりだめになるので、そのときは工場出荷状態にするしかありません。

私:リカバリモードも実は試していて反応なかったです

オペレータ:そうですかー。ではもうできることはないのでAppleStoreにもっていってください。修理には1週間とかかかると思います。

(店に戻る)

私:すいませーん。さっききたものですが、やっぱりだめだそうですー。

店員さん:そうですか、では、代替機だしますねー。

私:修理ってどれくらいかかりますか?

店員さん:一週間くらいでしょうか。ここでは分からないのですよ。お客様ご自分でApple Storeにもちこんでいただくので?

私:(あれ?ここで修理受付すらしてくれないの?)わかりましたー。

(なんとか時間を作ってApple Storeへ)

17:10

私:i Phone 4の修理ってどこでうけつけてますか?

店員さん:2階になります。予約が必要なので今おとりしますね(専用端末じゃなくてその辺のMacでWebサイトから予約)。15分からの回が空いていたので2階にどうぞー。

17:15

(2階で待つ)ジニアスバーじゃなくて i Pod bar。

17:39

店員さん:はつねさーん。はっつねっあっきらさーん(外国人な店員さんだったので)。

私:すいませーん。i Phone 4の電源がはいらなくなったんですが、一通りのことはやってもダメでした。

店員さん:ちょっとしらべてみますねー。あー、全然反応しませんね。いま、新しいのだしますね。

17:45

店員さん:液晶確認してください

私:OKです

店員さん:アクティベートできるかチェックしますね。OKみたいです。いま、書類だしますね

17:50

店員さん:ここと、ここにサインを。ありがとうございました。おまたせして申し訳ありませんでした。

.

.

.

.

そして、手元にネットにつながる代替機と、ネットにつながらない(代替機に切り替えられたSIMなので)iPhone 4があります。

次にSBショップにいけるのはいつなんでしょうか。。。。。。

posted @ 2010/09/02 8:01 by 初音 玲

Windows Phone 7 RTM

http://windowsteamblog.com/windows_phone/b/windowsphone/archive/2010/09/01/windows-phone-7-released-to-manufacturing.aspx

---引用開始

Today is the day that the Windows Phone team has been driving towards, and we’re very excited to say that we’ve reached the biggest milestone for our internal team ? the release to manufacturing (RTM) of Windows Phone 7!

---引用終了

ということで、Windows Phone 7がRTMまできました。いよいよですね。

さて、日本ではいつ搭載携帯が発売されるんでしょうね。

posted @ 2010/09/02 6:08 by 初音 玲

9:00~9:59 6ch , 10:00~11:00 8ch

ビデオ予約で、1時間番組が連続して(他チャンネル)放送される時の予約設定の仕様の件です。
Video業界の共通仕様なのか、我が家の機種固有の仕様なのか、知りません。 9時代の6Chと10時代の8chを連続して録画したいとき、
9:00~10:00 6ch , 10:00~11:00 8ch と指示すると、「時間が重複してます。」と叱られます。
9:00~ 9:59 6ch , 10:00~11:00 8ch と指示すると、正常にOKになります。が。9:59:00~9:59:59の1分間が抜けるようです。
開始<= 動作 <=終了 と解釈しているようです。 連続帯で指定すると、終了1と開始2が同じ時刻指定になります。
開始1 <= 動作 <= 終了1
開始2 <= 動作 <= 終了2
どちらにも、含まれてしまうので、エラーとしているのね。その結果、1分間の録画不能時間帯が生じることに...
単純に 開始1 <= 動作 < 終了1
開始2 <= 動作 < 終了2
にすれば、問題は発生しないと思うのですが、なぜそうしないのだろう。 録画と録画の連続してチューナーの切り替え作ができないから、ワザとGapを入れているのだろうか。それにしたら、1分間のギャップは大きいような。

posted @ 2010/09/02 0:43 by Ognac

東京だよおっかさん

プロダクト受け入れテストと次版の設計のため
急遽デッチ上げられたプロジェクトに飛び込むことになり、
机のお引越ししてました。

東京タワーすぐそば一等地26階角部屋、
こんなの↓を背にシゴトしてます。

右隅にスカイツリーがほんのり。

posted @ 2010/09/01 19:18 by επιστημη

OpenCL(7) ホスト-デバイス間のやりとり

そゆわけで、先週日曜は兎さんとやきそば食って
悟空茶荘で茶ぁしばきながら愛と平和を熱く語るはずもなく、
GPGPUがどーしたこーしたなんつーおよそ茶席にはそぐわぬ
ネタで盛り上がったわけですが。

兎さん曰く:「ATI Streamてばホスト-デバイス間のデータ転送が速くねぇ」
...そぉなの?

GPGPUはホスト(マザボ)にぶっ挿したデバイス(グラボ)に対し
あれやこれやと命令投げて処理を行います。
で、ホストはデバイスの持ってるメモリに直接アクセスできません
なので必要に応じてホスト→デバイス,ホスト←デバイスなメモリ転送
コマンドを発行し、その完了を待たにゃならんです。そのスピードがイマイチとのこと。

おうち帰ってやってみた。1024x1024個のfloat(=4MB)領域に対し1000回の
書き込み(ホスト→デバイス)と読み込み(ホスト←デバイス)にかかる時間を計ってみる。

#include <iostream>

#include <vector>
#include <string>
#include <utility>
#include <cassert>
#include <Windows.h>

#define __CL_ENABLE_EXCEPTIONS
#include <CL/cl.hpp>

using namespace std;

int main() try {
  vector<cl::Platform> platforms;
  cl::Platform::get(&platforms);
  assert( !platforms.empty() );

  cl_context_properties properties[] =
    { CL_CONTEXT_PLATFORM, (cl_context_properties)(platforms[0])(), 0};
  cl::Context context(CL_DEVICE_TYPE_GPU, properties);
 
  std::vector<cl::Device> devices = context.getInfo<CL_CONTEXT_DEVICES>();
  assert( !devices.empty() );

  const size_t N = 1024*1024;
  vector<float> host_buffer(N, 0.0f);
  cl::Buffer buffer(context, CL_MEM_READ_WRITE, N*sizeof(float));

  cl::CommandQueue queue(context, devices[0]);

  DWORD t0, t1;

  // かきかき
  t0 = GetTickCount();
  for ( int i = 0; i < 1000; ++i ) {
    queue.enqueueWriteBuffer(buffer, CL_TRUE, 0, N*sizeof(float), &host_buffer[0]);
  }
  t1 = GetTickCount();
  cout << "Write 1000 times: " << (t1-t0) << "[ms]\n";

  // よみよみ
  t0 = GetTickCount();
  for ( int i = 0; i < 1000; ++i ) {
    queue.enqueueReadBuffer(buffer,CL_TRUE, 0, N*sizeof(float), &host_buffer[0]);
  }
  t1 = GetTickCount();
  cout << "Read  1000 times: " << (t1-t0) << "[ms]\n";

} catch ( const cl::Error& err ) {
  cerr << "OpenCL error " << err.err() << " :" << err.what() << endl;
}

ATI Stream SDK 2.2 / ATI Radeon HD5450 DDR2-512MB での結果:
Write 1000 times: 11766[ms]
Read  1000 times: 5313[ms]

ほほー、書き込みは読み込みの倍以上の時間がかかるですね。
ホスト-デバイス間のメモリ転送(特にホスト→デバイス)はパフォーマンスを落とすのか。

posted @ 2010/09/01 19:16 by επιστημη

Usingのこわさ

かつてやった、とっても怖いVisualBasicのお話。

Imports System.Data.SqlClient

Module Module1

    Sub Main()

        Dim constr As String = "なんか接続文字列があると思ってv"
        Dim getTb As New DataTable

        Using sqcm As SqlCommand = New SqlConnection(constr).CreateCommand

            sqcm.CommandText = "select * from hoge"

            Using myad As New SqlDataAdapter(sqcm)

                myad.Fill(getTb)

            End Using

        End Using

    End Sub

End Module

これのusingが終わった時、実は、生成されていたSQLConnectionが破棄されずに残ってしまう、という現象が起きたの。かなり、かなり、当時、悩んだ。

実はここにその答えがあって、

Using ステートメント (Visual Basic)
http://msdn.microsoft.com/ja-jp/library/htd05whh(v=VS.100).aspx

resourceexpression

必ず指定します。resourcetype の要件を満たすシステム リソースを参照する変数または式です。2 番目の構文を使用する場合は、制御を Using ステートメントに渡す前にリソースを取得する必要があります。

と書かれている2番目の構文、がさっきの10行目の構文。つまり、Usingに使用する前に必ずリソースを取得しておく、ってところがミソ。

Imports System.Data.SqlClient

Module Module1

    Sub Main()

        Dim constr As String = "なんか接続文字列があると思ってv"
        Dim getTb As New DataTable

        Using sqcon As New SqlConnection(constr)

            Using sqcm As SqlCommand = sqcon.CreateCommand

                sqcm.CommandText = "select * from hoge"

                Using myad As New SqlDataAdapter(sqcm)

                    myad.Fill(getTb)

                End Using

            End Using

        End Using

    End Sub

End Module

こうすれば、usingステートメントで綺麗にオブジェクトは破棄されまする。

ちょっとした事なんだけどね。

Usingって聞いて、ちょっと、思い出した。

posted @ 2010/09/01 19:09 by 片桐 継(Tugu Katagiri)

JavaScriptの開発環境にVS2010を使ってみる

これが意外と使えたw

インテリセンスもちゃんと働くし、HTMLをセットにしたらちゃんとデバッグできたし。

eclipseプラグインのaptanaをつかってたんだけどeclipseマシンは非力だからちょっと重くて。

VisualStudio2010は専用環境(Windows7 64bit)をHyper-V上に構築してるから動作も快適で、スムーズ。

最初からここでやれば良かったorz

posted @ 2010/09/01 18:45 by 片桐 継(Tugu Katagiri)

現在、WWWコンソーシアムでは

‘nowrap’属性を旧式の属性として扱っています。新しい属性仕様で構成する事をお勧めします。

だって。

ExpressionWEB4でHTMLサイトを作っていた時のお話。

まぁnowrapに限らず、時々、ときどぉき、叱られてしまうんだけれども、そもそも、WWWコンソーシアムって何ぞ?とおもって、この単語でぐぐってもびんぐっても答えはズバっと参上!してくれない(三味線BGM付き)

 

なので、ここは、素直に?「www Consortium」でぐぐってびんぐることをおすすめ。

探し求める答えは、

World Wide Web Consortium (W3C)
http://www.w3.org/

ここにあるから。

このサイトを1巡するだけで相当情報を得られるので、WEBサイト構築している人は知っておくといいかも

posted @ 2010/09/01 15:34 by 片桐 継(Tugu Katagiri)

using ステートメントの利点

using ステートメント

の利点は、Dispose メソッドを確実に呼んでくれるということなんだと思う。

だから、極端な話、Dispose の実装が空っぽなら、アンマネージリソースは解放されない訳です。

もちろん、そんな実装しちゃダメなわけだけど、using ステートメント使っているから後始末が完璧って思っていると、ときどき痛い目にあったりするので、 MSDN ライブラリみたり、クラスの仕様書みたりした方がいいかもしんない。

作った人が、どういうつもりで作っているのかわかったもんじゃない。

posted @ 2010/09/01 15:33 by R・田中一郎

書籍:テスト駆動開発入門

ケント ベック
ピアソンエデュケーション
発売日:2003-09

「テスト」という単語から様々な誤解をされがちの「テスト駆動開発(TDD)」について、その根底に流れる思想からテクニックまで開設した入門書。
著者はまず第一に「TDDは「設計・開発手法」であり、決してテスト手法ではないということをあげています。そしてTDDを行うことで「ストレス」の少ない開発が行えると謳っています。
実際に本書では、Moneyクラスの実装、xUnit(テスティングフレームワーク)をTDDで行っていく様子が解説されているので、まずは自分の得意とする言語で写経してみることをお勧めします。
(私の場合、xUnitについては手元ですぐ動かせるという理由でVBScriptで実装してみました。)
また、Amazonのレビューでは翻訳がいまいち、という評価がちらほら見られますが、私はそれほど違和感なく読み進められました。おそらくコードを中心に見ていたので、気にしていなかったのかなと思ってます。
とにかく、TDDをやるなら一度は目を通すべき本だと思います。

※ブクログより転記

 

作成したVBSUnitは↓からダウンロードできます。(まだ途中です)

posted @ 2010/08/31 22:53 by まさる

[数学]微積分(2)

微分の性質

本項では微分の諸性質について確認する。これらの性質は具体的な関数の導関数を求める際に役立つことがある。

 

定理3 定数倍の微分(斉次性)

関数 clip_image002 と定数 clip_image004 に関して、clip_image002 が微分可能ならば clip_image006 も微分可能で、次の関係式を満たす。

clip_image008

clip_image010

 

定理4 和と差の微分(加法性)

関数 clip_image012 に関して、clip_image012 が微分可能ならば clip_image014 も微分可能で、次の関係式を満たす。

clip_image016

clip_image018

 

定理3、定理4より、明らかに

系1 線型性

clip_image020

微分は線型性を満たすから、線型作用素の一種である。

 

定理5 積の微分(ライプニッツ則)

関数 clip_image012 に関して、clip_image012 が微分可能ならば clip_image022 も微分可能で、次の関係式を満たす。

clip_image024

clip_image026

 

定理3、定理4、定理5より、微分は線型性とライプニッツ則を満たすから、微分作用素の一種である。

 

定理6 商の微分

関数 clip_image012 に関して、clip_image012 が微分可能であり、clip_image028 ならば clip_image030 も微分可能で、次の関係式を満たす。

clip_image032

clip_image034

 

定理7 合成関数の微分

関数 clip_image036 に関して、clip_image038 clip_image040 で微分可能であり、clip_image042 clip_image038 で微分可能ならば、clip_image036 の合成関数 clip_image044 clip_image040 で微分可能であり、次の関係式を満たす。

clip_image046

clip_image048

clip_image050

clip_image052 と置くと、clip_image054 である。

また、clip_image002 は微分可能であるから clip_image002 は連続であり、clip_image052 も連続である。よって、

clip_image056

つまり、clip_image058 ならば clip_image060 であるから、

clip_image062

 

定理8 逆関数の微分

関数 clip_image038 に関して、clip_image038 clip_image040 で微分可能であり、狭義単調関数ならば、clip_image038 の逆関数 clip_image064 が存在し、clip_image064 clip_image066 で微分可能であり、次の関係式を満たす。

clip_image068

clip_image070

clip_image072

clip_image074 と置くと、clip_image076 である。

また、clip_image078 は微分可能であるから clip_image078 は連続であり、clip_image080 も連続である。よって、

clip_image082

つまり、clip_image058 ならば clip_image060 であるから、

clip_image084

 

定理9 媒介変数で表された関数の微分

関数 clip_image086 に関して、clip_image086 clip_image088 で微分可能であり、clip_image090 が狭義単調関数であり、clip_image092 ならば、clip_image066 clip_image088 を媒介変数とする clip_image040 の関数として clip_image040 で微分可能であり、次の関係式を満たす。

clip_image094

clip_image096

(証明)clip_image090 は微分可能であり、狭義単調関数であるから、clip_image090 の逆関数 clip_image098 が存在し、clip_image098 clip_image040 で微分可能であり、clip_image100 である。

定理7と定理8より、

clip_image102

 

問題4

関数 clip_image104 に関して、clip_image104 が微分可能であり、clip_image028 ならば clip_image106 も微分可能で、次の関係式を満たすことを示せ。

clip_image108

(解)定理6より、

clip_image110

 

問題5

関数 clip_image112 に関して、clip_image112 が微分可能ならば clip_image114 も微分可能で、次の関係式を満たすことを示せ。

clip_image116

(解)[1] clip_image118 のとき、明らかに満たす。

[2] clip_image120 のとき、

clip_image122

と仮定する。

clip_image124 のとき、定理5より、

clip_image126

[1][2]より、数学的帰納法により、clip_image128 である(終)。

 

問題6

関数 clip_image130 に関して、clip_image132 clip_image040 で微分可能であり、clip_image134 clip_image136 で微分可能ならば、clip_image130 の合成関数 clip_image138 clip_image040 で微分可能であり、次の関係式を満たすことを示せ。

clip_image140

clip_image142

(解)[1] clip_image118 のとき、明らかに満たす。

[2] clip_image120 のとき、

clip_image144

と仮定する。

clip_image124 のとき、定理7より、

clip_image146

[1][2]より、数学的帰納法により、clip_image148(終)。

posted @ 2010/08/31 21:48 by Piz&Yumina

ここのところ

最近に始まったことではないが、落ち着きがない。前エントリーの原因にしろ、昨日の妻からのメールにしろ、落ち着いて読んだら間違って解釈してるとわかろうものを、ススッと読んで、パパッと処理して間違っている。

今のところ、仕事ではやってなさそうなんだけど、点検し直した方がよさそう。

「そんな時間…」と言いたいが、後戻りの方が、時間食うからなぁorz

posted @ 2010/08/31 20:45 by はなおか じった

業務連絡

昨日か今日あたり、私から郵便が送られた人がいらっしゃると思います。

申し訳ありませんが、半分を送り返して下さい送信もと住所を書かず、切手無しで送れば、受取人支払いになるので、それでお願いします。

お手間をとらせて申し訳ありませんが、お願いします。

中さんにも、申し訳ない。

posted @ 2010/08/31 20:38 by はなおか じった

森長可の鬼畜っぷりが笑える件

http://ja.uncyclopedia.info/wiki/%E6%A3%AE%E9%95%B7%E5%8F%AF
森長可(アンサイクロペディア)

森長可と言えば、蘭丸の兄ちゃんですな。

リンク先を読む限りだと、

ちょwww、森長可鬼畜杉www

とか思うわけです。

戦国ネタおもろい。

posted @ 2010/08/31 18:25 by R・田中一郎

負数時の剰余演算子の振る舞い

先日に行われたHaskell勉強会ではIOモナドの説明に入り、例題としてライフゲームが
ありました。http://gameage.blog58.fc2.com/blog-entry-1346.html

ライフゲームでは二次元のボードを用意し、1つのセルに対して周囲の八方向のセルを
チェックする必要があります。
ボードの角をチェックする場合でも、一貫性を持たせるためにボードは上下、左右が
つながっているようにすることで、周囲の八方向をチェック出来るようにしている。

そのボードの端をつなげる役割を果たす補助関数 wrap の中で剰余(Mod)を使用して
いたのですが、何故、それで出来るのか疑問に思ったわけです。

wrap :: Pos -> Pos
wrap (x,y) = (((x-1) `mod` width) + 1,(((y-1) `mod` height) + 1)

普段、私が使用しているVBやC#の言語仕様では、負数の場合 -1 mod 5 = -1 となるため
この式では成り立たないからです。
ところが、Haskellでは負数の場合 (-1) `mod` 5 = 4 となるため、反対側の位置を返す
ことが出来るわけです。

この負数の剰余について検索してみたところ、言語によって計算結果が違っています。
Modulo operation 言語ごとの一覧が書かれています。
http://en.wikipedia.org/wiki/Modulo_operation

■ C,VB,Java,JavaScript,VBA,Go (Dividend)
 10 %   3 =   1
 10 %  -3 =   1
-10 %   3 =  -1
-10 %  -3 =  -1
■ Perl,Ruby,Python,Lua,Haskell (Divisor)
 10 %   3 =   1
 10 %  -3 =  -2
-10 %   3 =   2
-10 %  -3 =  -1
※言語によっては両方に対応しているものもある。

負数の割り算が割りきれない
http://materia.jp/blog/20050803.html
剰余演算子の振る舞い
http://d.hatena.ne.jp/kazusato77/20080121/1200871085
負の数 余り 剰余系
http://oshiete.goo.ne.jp/qa/4051557.html

posted @ 2010/08/31 1:56 by やじゅ

ASP.NET始めました。

お仕事がドタバタしたり、子供が生まれたり、家買ったり

色々とあって1年以上もほったらかしに・・・(汗)

 

仕事で色々憂鬱になる事がありましたが、結局自分がプログラム・システムを作る

理由って何だろうと考えたら答えは単純でした。

 「プログラムを作るのが好きだから」

これに尽きるようです。会社が同僚が、先輩がと思うより

 「まだ知らない技術を知ろう!」

と思い今日の更新に至ります。1日1投稿を目標に頑張ります。

 

さて、本題です。

今はASP.NET(VB)を使って開発をしてます。

継続案件なので主に改定なんですが、これがまた今までやってきたクライアントの

アプリとは一味違う!w

Windowsアプリだったらすぐできるのに・・・とか思うことがいっぱいです。

そして今日新たに発覚した問題が2個あります。

1.ボタンを連打すると「ただいま沢山のユーザーが接続・・・」みたいな現象がでる。

2.検索条件にタグなどを入力すると落ちる・・・

(そんなに多くのユーザーが使わない+世間一般に公開されているわけではない)

上記理由からあまり大きな問題は起こっていないようですが、これらは普通大きな問題では・・・

とおもいます。今回お客さんの担当者に上の2点をテストしてね。と言われたようです。

 

さてさて、どうしたものかOrz

1はJavaScriptでフラグ的なものを付ける。がありますが、サーバー側でどうチェックするのだろうか^^;

今日色々ググってみたが答えは見つけられず(´Д⊂

 

2はWebアプリ(IIS?)の設定でリクエスト受信時にエラーにしているようなので「まだ」マシかと思いました。

これを防ぐにはやはりクライアントでチェックするしかないのかなぁと思ったりします。

Webアプリを作るのにはもっと知らなきゃいけない事がありましたね(汗)

 

posted @ 2010/08/31 1:37 by オガシン

【Java クラス (3)】 ConstantPool (2)

久しぶりにCDとか見にいったとです。

「お、懐かしー、このCD再発されたんだ」とか思って、手にとって見てみると、『ボーナストラック10曲追加』。

……。

いや、あの、これって、もともとは6曲しか入ってないアルバムなんですが……。

ボーナストラックの方が多いだろと。もう、それならいっそ新譜として出せと。

やまだです。相変わらず投げっぱなしの前文です。

ふんっ、Tech・Ed なんか行けなくたって、悲しくなんかないもんっ、と虚勢をはる今日この頃だったりします。

 

で、前月の続きなんですが、ちょっとコンスタントープールをざっくり解説など。

……とはいっても、基本的に「その他のデータ(その1)」なんですよね。雑多なデータの集まり。

ConstantPool

#やっぱり図が前月の使い回しですw

 

では先頭のエントリから見ていきましょうか。CONSTANT_Methodref、これは文字通りメソッド定義です。

で、その構成要素が、10 と 25。じゃあ、10番目は何かというと CONSTANT_Class、クラスですな。25番目は Constant_NameAndType つまり名前と型。

要するに、コンスタントプールのメソッド定義は、それが属するクラスと、名前と型から成っていますと。

で、この 10 番目のエントリ CONSTANT_Class にはデータとして何が入っているかというと、31。31番目を見ろということになります。

そこにあるのは CONSTANT_UTF8、つまり UTF8 形式で文字列が入ってます。じゃあ他の文字コードにも対応しているのか、ということになりますが UTF8 以外のタグは(少なくとも公式では)定義されていないようです。

で、その中身は、java/lang/Object これは、java.lang.Object クラスってことですな。なぜかパッケージのセパレータ文字が変わってたりします。

25番目の NameAndType を見ると、さらに 17 番目と 18 番目を見ろと。それぞれはやはり文字列。前者がメソッド名を示し、後者が型を示します。

ということで、このメソッド名は <init>。これはコンストラクタの内部名です。これと衝突しないように、Java では <init> メソッドは予約語扱いでソースコード上では記述できないようになっています。同様に、クラスの初期化メソッドは <clinit> という内部名になります。

で、型は ()V。()内に何もないので、引数はなし。()の後にあるのが、返値の型でVは Void を表しています。

では、引数がある場合はどう表現するんだと。その場合は22番目にあるような形になります。[ は配列を表し、Lはその後;までクラス名がつながります。

という形に、一か所からずるずるとその他の情報がぶら下がっている形になっているわけです。

というわけで、命令側からは一か所指定しとけば、そこからいくらでも必要な情報は辿っていけるということになるわけですが、今回はこの辺で。

#えーと、ある意味今更な解説なので、今後続くかどうかは、私の気分と、誰かからクレームがつくかどうかで決まります?

では。

posted @ 2010/08/30 23:01 by やまだ

WebアクセスとDBアクセスの関係がとても分かりやすい記事紹介

高木浩光@自宅の日記 - 三菱図書館システムMELIL旧型の欠陥、アニメ化 - 岡崎図書館事件(7)

少し前に話題になった「岡崎図書館事件」に絡んで高木浩光氏が書いた記事ですが、事件のことを抜きにしても、WebアクセスとDBアクセスの関係が非常にわかりやすくFlashアニメで表現されています。(個人的にはコネクションプーリングの説明が秀逸だと思います。)

posted @ 2010/08/30 22:03 by まさる

Tech・Ed 2010 のおもひで

楽しかった Tech・Ed 2010 も終わってしまいました。

そこで、

Tech・Ed 2010 のおもひで

と題して、いくつか書きます。

思い切り内輪ネタな気もしますが、わかる人はわかると思います。

 

・船外パーティーで、S さんと密約を結んだ気がするが、どんな内容だったのか思い出せない件

・横浜勉強会に参加できなくて本当にごめんなさい。期間中、この件で何度チクチクいじめられたことか・・・の件

・Tさんお勧めのアイスモナカが食べられなかった件

・関内二郎の汁なしを食べる機会がなかった件

・Twitter のあの人は、この人だったのかっ!、という人が2桁もいた件

・Poken で誰もハイホーしていなかった件

・ドヤ顔の貴公子に「お前には何も教えん」と言われた件

・噂のSさんのツメを見ることができた件

・そこいら中に、兄者がいる件

・I社の社長は、見た目だけ外国人じゃないかと思った件

・わふー、な件

・Nさん絶賛リバウンド中の件

・Hさん来年は、爽快バブシャワーの MVP になると思う件

・実は、MS兄者は見た目ほどリア充ではない気がする件

・開発者系の人気伝道師さんが、雲の上の人になってしまった件

・ユンケルタワーが部室に2回も出現した件

・スピーカー弁当を、3度目にして初めて食べることができた件

・テーブルがお腹につっかえて使えなかった件

・平成なのに明治維新を迎えた人がいた件

・ビジュアルに問題のある、ビジュアルデブ系な人々の件

 

 

以上、何しに行ったんだ、というくらいに技術系の話題がない件

posted @ 2010/08/30 15:13 by R・田中一郎

WindowsMediaPlayerでのDVD再生

まぁ、ふつう、DVDディスク入れたら再生してOK、とか思うじゃない?

ところがね、うごかんかったのよorz

「ディスプレイの解像度を低くして、色数を減らしてみてください」的メッセージをだしまくって。600×800で16bitカラーにもしたのに同じメッセージ。これ以上低くならんっちゅうのorz

そりゃOSはWindowsXPのSP3、メモリは1Gの非力PCだけどさ。

色々と悩んだ結果、そのメッセージをさくっと無視して(笑)、DVDを再生するためのPC環境について勉強。真夜中なのに。

結局、DVDとか再生するには、コーデック(Codec)っていう仲介屋さんみたいな役割のライブラリというかフィルターが必要で、こいつがPCにいてくれないと、Windows Media Player さんは「あ、これ再生するね」となってくれないらしい

今回の目的のDVDは

Browse GPL MPEG-1/2 DirectShow Decoder Filter
http://sourceforge.net/projects/gplmpgdec/files/GPL%20MPEG-1_2%20Decoder/

を入れることで解決した。

posted @ 2010/08/30 13:43 by 片桐 継(Tugu Katagiri)

Windows Azureの課金がきたよ

Windows Azureを使っていると

【重要】Microsoft Online Services の請求書が発行されましたのでご確認ください

というメールがmsonlineservicesteam@microsoftonline.comから飛んできます。

ほとんど使っていないので無料枠に収まっているので怖くありません。Microsoft Onlineのページに接続して確認してみましょう。

image

[オンライン請求書/納品書の表示]をクリックしてみましょう。

image

[利用回別の詳細]をクリックすればどのような課金対象の動作をしているかが分かります。

image

Windows Azureコンピューティングがほとんどのようですね。HelloAzureサンプルを動作させた結果のようです。

[Windows Azure 利用料金]の方をクリックすると次のような表示になります。12+24で36な気もするのですが使用量は17となっていますね。なぜなんでしょう。

image

posted @ 2010/08/30 8:21 by 初音 玲

方向地名など

西xx,東xxという地名は至る所にあるのですが、命名のルールに基準はありません。当初はそれなりの理由があったのでしょうが、今見ると、適当に映ります。
神戸市に東灘区がありますが、字面からは、「灘地域の東」とよめます。しかし、「灘地方」とは、神戸東部、芦屋、西宮、西尼崎の一体です。 もともと、「灘区」が存在していて、本庄村他を合併するとき、「灘区」の東ということで「東灘区」にしたようです。
安易なネーミングは、後日混乱の元になるのは、プログラムにも通じるものを感じます。原住民には馴染みがあり、誤解することはありませんが、他の地域の人のなかには、誤解する人もいるそうです。 誤解といえば、「上越市」に行くのに「上越新幹線」を乗った人がいるらしいです。
こんなのもあった。大東西中の先生に言いたいことは
香西東町 ,香西西町,東葛西 西葛西 なども、「香西」「葛西」が大きくなったので、その地点を中心に東西南北を冠にしたのでしょうが、ややこしい。
「北広島市」は北海道...
大東市と東大阪市も、大阪市の東の意味..でも「大東文化大」は東京。
「西東京市」も最近できましたが、....
東西南北さんと書いて、「よもひろさん、ひがたさん」と読むらしいです。
字面はヤヤコシイですが、日常生活に支障がないのは凄いことだと、妙に感じる次第。 (*)以前類似のエントリーで「西中島南方」のコメントを頂きましたが、まさに安易。

posted @ 2010/08/30 0:05 by Ognac

白牙奇蘭

ひさしぶりの茶ネタ。
今年の夏休みも終わったです。明日からおしごと、行きたくないよぅ...

わんくま同盟横浜勉強会、たくさんのオーディエンスに集まっていただきました。
懇親会も盛況でした、ホントありがとうございます。

勉強会当日夜行バスで岩手からすっ飛んで来てくれた兎さん
何のお相手もできなかったので、今日のお昼はおもてなし。
つーてもいつものごとく茶ぁ買って茶ぁしばいただけですが。
昼飯はネタ度の高い梅蘭やきそばなどを。

兎さんの茶買い出しツアーのついでに僕もいくつか手に入れて、
その中の一つ:福建青茶「白牙奇蘭



岩茶に仕立てたものもありますが、こいつはゆるく丸めたタイプ。
福建の茶らしく、鉄観音あるいは黄金桂系の香味です。
ぁー、ひっさしぶりに真面目に茶淹れた。ウマー

posted @ 2010/08/29 23:33 by επιστημη

Hello Azure - はじめてのAzureアプリ作成

Visual StudioでのWindows Azureアプリの作成から発行までの流れを作成しました。

Hello Azure - はじめてのAzureアプリ作成

posted @ 2010/08/29 22:58 by 初音 玲

ASP.NET MVC 3 Previewの悲しいお知らせ

C#を選んでViewを追加しようとすると

image

ViewエンジンにRazorが選択できます。

VBを選んでViewを追加使用すると

image

Viewエンジンは従来のaspxのままです。

orz

posted @ 2010/08/29 18:31 by 初音 玲

[写真] コーヒータイム

カステラ

最近、休みの日は美味しいおやつ(あえてスイーツ(笑)とは言わない)を食べながら仕事するのが定番。

スタバも家から100メートル以内にあるので、割と素敵な環境です。

 

土日でも結局仕事してるのがあれですが。。

posted @ 2010/08/29 16:03 by りょーいち

Tech・ED行ってきましたので [DynamicMemory]と[RemoteFX]のお話をちょいとしてみます。

今年もTechED参加してきました。

昨年は80%位BOFに参加していたのですが、今年はテクニカルセッションとハンズオンをメインに受講しました。

特に来年早々提供されるWindows2008R2SP1についての新機能「DynamicMemory」と「RemoteFX」についての情報収集が一番の目的でした。

今回は特にこの2つについて簡単に書いてみたいと思います。

ちなみに両方ともHyper-V関連の新機能になります。

まず「DynamicMemory」についてですが、2008R2 RTMではゲストOSで使用するメモリは、初期に設定したメモリ容量を固定的に使用していました。

たとえばメモリ2GBづつ割り当てたゲストOSを4つ起動した場合、ゲストOSを起動した時点で2x4の8GBのメモリが物理的に確保されます。(実際には+α少量)

ゲストOSの使用メモリ容量を変更するためには一度ゲストOSをシャットダウンし、設定の変更を行います。

これに対しDynamicMemoryでは、メモリの設定を「スタートアップ」と「最大」で設定します。①

この設定でのメモリ動作は、「スタートアップ」に設定した容量で起動し、「バッファとして予約しておくメモリ」で設定したメモリ確保条件に合わせて、不足分のメモリを自動的にわりあて追加していきます。

image

上記の例では残りメモリが768mbの20%に当たる153mbより少なくなった場合、動的にメモリが必要最低限のサイズだけ追加されます。(hot-add)

そこで気になるのが動的に追加されたメモリが不要になった場合にどうなるのかです。

ゲストOS上では、再起動するまで見た目(ゲストのタスクマネージャ等)で減ることはないのですが、実際にはホストOS上で管理され、未使用分はホストOSで確保し他のゲストOSで使用することが可能になります。(バルーニング)

といったメモリ管理を行うため、メモリ容量がネックになっていた環境ではDynamicMemoryを使用することにより、より多くのゲストOSを起動することが可能となります。

※正確には「可能な場合もあります」になると思います

といっても実際には物理メモリ以上を使用することはできません。

細かく書くと、ゲストOSが実際に使用しているメモリ量の相和+ホストOSのメモリが物理メモリを超えることはできません。

そのためやはりメモリのサイジングは重要です。

おすすめはやはり物理クライアントの計算方法と同じく、必要量の相和メモリを搭載することですが、落としどころは各ゲストOSの平均メモリ使用量+αといったところでしょうか。

続いて「RemoteFX」についてですが、RDS接続の際にホスト側のGPUを使用し、描画を拡張するものと、USBをリダイレクトする「RemoteFX USB Device Redirection」があります。

機能を有効にするためにはゲストOS側で「RemoteFX 3Dビデオアダプター」を追加します。

clip_image008

また、ホストOSには役割の追加でRemoteFXをインストールしておく必要があります。

後は接続にしていくクライアントがWindows7でSP1が適用済である必要もあります。

ここでは使用感についてのみ説明します。

私自身RDSを使用してWindows7を動かしていますが、メディアリダイレクト以外で特に3Dに関しては実用的ではないと感じていました。

しかし今回のRemoteFXではそれを払拭するほどのレスポンスを提供してくれます。

ローカル環境ではありますが、ExpressionBlendなどを使用したSilverLight開発などもできます。※実用的という意味で。

USB Device Redirectには複数のRDS接続クライアントに接続されているUSB機器を複数同時に扱えます。

ということですでに告知済ですが次回の勉強会でこのあたりをデモしたいと思います。

http://heroshima.jp

※あんまり書くと当日のネタがなくなるので、詳細はまたそのうちにしておきます。

といった2つの機能がWindows2008R2SP1の拡張における大きな機能です。

本当にSP1の提供が待ち遠しいです。

また去年と同様であれば期間限定でTechEDの資料・ムービーが公開される可能性があります。その際はT2-301,T2-401を参照するとよいと思います。

posted @ 2010/08/29 12:03 by matsu

Windows Azureはのアカウント登録と有効化の方法

Windows Azureへの登録方法はクレジットカードが必要な事もありわかりづらさが不安に感じて途中でとまっている人もおおいんじゃないでしょうか。

また、MSDN特別導入プランはAzure Service Developer Portalから登録をしようと思うと登録を開始するところまでたどり着くのも難しいと思います。

Tech Ed 2010 Japanにいったときに担当の方とこのあたりをディスカッションさせて頂けたので、MSDN特別導入プランもわかりやすくなって、このコンテンツの内容が時代遅れになるといいなーと思います。

posted @ 2010/08/29 10:33 by 初音 玲

Windows AzureアプリをVisual Studioで開発動作させるには

Windows Azure SDKをいれて「管理者として実行」で立ち上げたVisual StudioのプロジェクトでWindows Azure クラウドサービスを新規作成してIDEで実行すればDevelopment Fablic ServiceとDevelopment Storage Serviceを使ってローカル実行できます。

 image4[1]

 

このとき、例えばWindows 7では、ローカルサービスとして次のサービスが事前に起動されている必要があります。

  • SQL Server Express
  • SQL Server Browser

これらのサービスが起動していないとDevelopment Storage Service(開発ストレージサービス)が起動できずに次のようなメッセージが表示されます。

 image13

ためしに次のように開発ストレージサービスの起動を行わないようにしたらどうなるでしょうか。

 image18

起動は始まりますが、開発ストレージサービス(127.0.0.1:10000)への接続がタイムアウトするまでまたされ、接続タイムアウト後も次のようなエラーが発生してブラウザに表示が行われません。

ASDP-91

「SQL Server Express」と「SQL Server Browser」を起動した状態で、「開発ストレージサービスの起動」をTureにしてVisual StudioのIDEで実行を行えば次のような手順が内部的に実行されて、ASP.NET WebロールのDefault.aspxがブラウザ上に表示されます。

 ASDP-92

image8

posted @ 2010/08/29 10:25 by 初音 玲