<   2011年 10月 ( 12 )   > この月の画像一覧

WiMax も iPhone4S も やっぱり電波が一番 (10/15)

(この記事の内容は2012/1/9に良い評価に変わりました)

WiMax契約から半年になるが、全然活用できていません。
最初固定回線の置き換えを狙ってたのですが、
屋内での電波が弱いため、結局面倒になってそのまま。

モバイルも利用シーンでは電波が弱くてだめ。
(駅構内、電車高速移動中、帰省、旅行)
それと利用時のターンアラウンドの悪さ
やはり別だとすぐに使えないし、出し入れも面倒、開始準備も2倍手間がかかり、面倒になってしまいます。

「中都市の沿線沿い」が利用範囲なのにこんな調子です。
最初のころは物珍しさで手間も苦にならないです。
今は泊まりの教育で都内のホテルで役に立ったくらいかな~
それも半年で2回くらい。

これならb-mobile2980円SIMを1ヶ月T-01Aに挿して、郊外に遊びに行った時の方が、
スピード遅くても、Google Mapで迷子の時に道を探したり、qikで動画投稿したりして、よっぽど安くて簡単で電波が強くて活用できたよ。

まあWimaxは1年契約だから、4000×12ヶ月で4万8千円の勉強代として払うけど、
モバイルWiFiルータはもうやりたくないな~(動画配信サイトを見るのも一つの目標だったんだけど、最近ではスマホもパワーあって配信サイトもスマホ対応が良くなってきたからもうスマホで無問題なんだよなー)
イーモバイルはうちの中都市では電波全然来ない所がいっぱいあって駄目だし。

これからは、電波の良い3Gでのテザリングスマホ(データ通信)とガラケー(通話)、出張時に+モバイル機器かな。

同じように通信機器2台持つなら上記でしょう。2台持ちはイーモバイルのH11Tでやってたけど電波が悪かった。それにデータ通信がメインなのに通話用のH11Tと2台起動しなければならなかった事。上記ならスマホだけでデータ通信できるから普段使いでは、スマホ1台だけで済む。

ただしガラケーで2台持ちならキャリア揃えないと安くならない。
通話はPHSで満足してるから、半年後にはCPUの早いドコモかauで3Gテザリングスマホを買いたいな~
モバイル機器は当然7インチ以上の軽くてキー入力し易くて性能の良い、iPadかandroidタブレット(キーボード付)だな。これを安くて電波の良い3Gのテザリングで利用すれば最強だね。

iPhone4S auが3Gテザリングを安く提供しないかな~
[PR]
by k1segawa | 2011-10-15 12:08 | Comments(0)

数学ゲーム Google Code Jam (10/13)

code jam 練習問題
リンク先

この問題はGoogle Code Jam Japan 2011によるもので、
クリエイティブ・コモンズ表示ライセンスに従う。

Small条件とLarge条件のどちらかを選んで回答する。
===============================================
問題
みんな大好きジェットコースター! この遊園地に来た人はみんなこれがお目当てさ。 1 人で来る人もいるし、グループで来る人もいる。グループで来たからにはやっぱりみんなで一緒じゃないと乗りたくないよね。楽しい楽しいジェットコースター! このジェットコースター、乗った人はみんなもう一度乗りたがるんだ。
乗車料は一回一人当たり 1 ユーロ。このジェットコースターの今日の売上を予測するのが君のお仕事さ!

このジェットコースターは同時に k 人乗ることができて、グループが列を作って待っています。グループは順番にジェットコースターに乗り込み、全部のグループが乗ったか、次に待っているグループ全員が乗れるだけの席が無くなった時点で、空席が残っていたとしても出発します。ジェットコースターを降りた後、グループは乗り込んだ順番と同じ順番で列の後ろに並びします。ジェットコースターは 1 日に R 回発車します。

例えば R=4, k=6 の場合に、1 人, 4 人, 2 人, 1 人の 4 つのグループがこの順番に並んでいたとしましょう。 1 回目の出発は 1 人, 4 人の 2 つのグループが乗り込んで、残りひとつの席は空けたまま出発します(次の 2 人のグループは座りきれず、 最後の 1 人のグループは前のグループを抜かすことはできません)。
1 回目が終わった後、彼らは列の後ろに並びなおし、列は 2 人, 1 人, 1 人, 4 人となります。 2 回目は 2 人, 1 人, 1 人の計 4 人が乗り、終わった後の列は 4 人, 2 人, 1 人, 1 人となります。 3 回目は 4 人, 2 人 の計 6 人が乗り、終わった後の列は 1 人, 1 人, 4 人, 2 人となり、最後に 1 人, 1 人, 4 人の計 6 人が乗るので、合計 21 ユーロの売上になります。

入力
1 行目にはテストケースの数 T が含まれており、次の行から T 個のテストケースが後に続きます。各テストケースは 2 行からなり、始めの行にはスペースで区切られた 3 つの整数 R, k, Nが含まれています。次の行には N 個のスペースで区切られた整数 gi が含まれています。 gi は列に並んでいる各グループの人数を表しており、 g0 は 1 番目のグループの人数、g1 は 2 番目のグループの人数、... となっています。

出力
各テストケースにつき 1 行、 "Case #X: Y" と出力してください。ただし、X は 1 から始まるテストケースの番号、Y はジェットコースターのその日の売上です。

制約
1 ≤ T ≤ 50
gi ≤ k

Small
1 ≤ R ≤ 1000
1 ≤ k ≤ 100
1 ≤ N ≤ 10
1 ≤ gi ≤ 10

Large
1 ≤ R ≤ 108
1 ≤ k ≤ 109
1 ≤ N ≤ 1000
1 ≤ gi ≤ 107

サンプル

入力
3
4 6 4
1 4 2 1
100 10 1
1
5 5 10
2 4 2 3 4 2 1 2 1 3

出力
Case #1: 21
Case #2: 100
Case #3: 20
===============================================
回答できそうな問題Cを選んでみた。コードの練習にいいかも。

面白いなと思ったのは、入力フォーマット。
可変長でプログラムで読み込みやすいフォーマットだと思う。
MAC>IP>TCPのパケットのヘッダに通じる感じ?
後ろが読み込めるとは限らない通信データと同じで、
わからないIDやらへんちくりんな用語がないシンプルなもの。
業界標準仕様を決めるどこかの会社には参考にしてもらいたい。

*(追記)
なんで読み込みやすいのか、考えてみた。
ぱっとみでは、いったいどういうフォーマットなのかわからないけど、
説明を読めば簡単にわかる。(上記の入力データ)
逆に、ぱっと見てわかりやすい業界のよくあるフォーマット。(たとえば放送関係)
あれは2次元的に情報がまとまっていて、Excelとかで出来ていそう。
人間の目はパターン認識が出来るから、どこに必要なデータがあるかすぐわかる。
でもコンピュータでExcelの表を読み込もうとすると、とたんに関係ない表のタイトルや、
2行にわたっているセルや、一つ飛ばしのデータセル(空白セルをはさむ-人間には見やすいけどこれがルール無用なんだ)とか、どうやってもOA化の妨げにしかならない。
一旦データ移行工程をかまさないと、システム化は無理な電子データ。
これでデータ管理してるって言う「情報システム」管理者がいたらちゃんちゃらおかしい。
キーワード:2次元
シンプルと言ったが、コンピュータが読み込みやすいのは、1次元で、
人間から見ればかえってわかりにくいひと手間かかるフォーマットがいいのだ。
*(追記終わり)

Google Code Jamも面白いよ。

(もちろん適材適所、ケースバイケースであり、人間視点かシステム中心か、コンピュータリソースなどの局所的な問題であって、ユーザは最も適切なフォーマットで接するべきである。ただプログラマーやシステム設計者がこんなことを言ってると笑われる。データベースもリクエストを返すサーバが居るからあれでいいのであって、あくまでもデータのやり取りをシリアルにするので、データの持ち方は自由)
[PR]
by k1segawa | 2011-10-13 18:04 | Comments(0)

WPFウィンドウに背景画像を設定する(10/9)

Expression Blendで出来ることを出来るだけやることで、コードの量を減らし、バグを作りこまないようにする。

上記の件、デザイナーが背景画像や、ボタンやアイコンなど別途提供することがある。
PictureBoxならプロパティにImageがあるのでIDEで設定できるが、WPFのWindowは?

1.Express Blendを開く。(前のリストボックスで使ったやつ)
2.左のソリューションエクスプローラタブ画面で、プロジェクトを選択した後右クリックで既存のアイテムを追加を選ぶ。
a0034780_13563685.png

3.ローカルから画像ファイルを選ぶと、画像が追加される。
a0034780_1402345.png

4.オブジェクトとタイムラインタブ画面でWindowを選択状態にしてから、画像ファイルを選び、右クリックで挿入を選ぶ。
a0034780_143292.png

5.画像が表示されるが、listBox1が下になって見えないので、オブジェクトとタイムラインタブ画面で、[Image]"base"の行をマウスでつかんだまま、listBox1の上の行まで移動する。
a0034780_1475894.png

6.リストボックスが前面に来て表示されるようになる。
a0034780_14102316.png

7.XAMLはImage Sourceの1行が追加されている。
<Image Source="base.png" Stretch="Fill" Margin="0,0,-8,-34"/>
<ListBox FontSize="8" Margin="166,39,495,435" x:Name="listBox1">
<ListBox.RenderTransform>

[PR]
by k1segawa | 2011-10-09 14:10 | Comments(0)

RenderTransformとリストボックス (10/9)

Expression Blendで、リストボックスのスクロールバーをズームして、タッチパネル用に使いやすくしたい。

WPFでRenderTransformを使えば、標準コントロールを拡大する事が出来る事は以前調べた。(XAMLにScaleTransform ScaleX="4" ScalY="4"で4倍)
せっかくなので、Expression Blendですいすいとやりたい。

1.VS2010でWPFアプリケーションを新規作成し、リストボックスを置く。
2.アイテムを追加する。
※コードをコンストラクタに書いてもいい。
enum num { A, B, C, D, E, F, G, H, I, J, K, L, M, N }

foreach( string n in Enum.GetNames(typeof(num)))
listBox1.Items.Add(n);
3.プロジェクトを保存して、Expression Blenderで開く。
4.listBox1を選んで、プロパティタブ画面の▼変換で、ズームタグ(3番目の四角の中から矢印が外に飛び出しているアイコン)を選ぶ。
5.X、Yに4を入力する。
a0034780_13215764.png

6.フォントサイズを小さく(8)したり、リストボックスのサイズや位置を調整してGrid内に収まるようにする。
7.メニュー>プロジェクト>プロジェクトの実行でテスト動作をする。
8.スクロールバーが太くなりタッチパネル向きになる。
a0034780_13262330.png

9.全て保存してVS2010で開く。
10.XAMLを表示すると色々追加されているが、結局下記のようになる。
<Grid>
<ListBox FontSize="8" Margin="166,39,495,435" Name="listBox1">
<ListBox.RenderTransform>
<ScaleTransform ScaleX="4" ScaleY="4"/>
</ListBox.RenderTransform>
</ListBox>
</Grid>
11.アイテムを選択すると、フォーカス枠がぶつぶつした点で表示される。
a0034780_1337667.png

12.これはlistBox1.FocusVisualStyleでうまく消せないので、オーナードローで消す。
http://dobon.net/vb/dotnet/control/lbownerdraw.html
[PR]
by k1segawa | 2011-10-09 13:34 | Comments(0)

Expression Blend 入門8 (10/8)

33.ボタンに閉じるという文字を入れる。ツールボックスから「TextBlock」を選び、楕円の上で、テキストブロックを作成する。
a0034780_1412667.png

34.直接閉じると入力し、右のプロパティタブ画面のカテゴリ▼テキストでフォントサイズを18ptにする。
a0034780_1445796.png

35.全てを保存して、プロジェクトを閉じる。
36.VS2010を開き、ソリューションファイルを選んで開く。
a0034780_1473433.png

37.このまま実行しても閉じるボタンに処理が入っていないので、ボタンをダブルクリックしてイベントを追加する。イベント処理内に、Close();を追加する。
38.これで実行すると、閉じるボタンで閉じるが、フォーカスの四角い枠が残ってしまうので、MainWindowのコンストラクタに、button1.FocusVisualStyle = null;を追加する。
a0034780_1543733.png

39.これで実行すると、ボタンを押してもフォーカス枠が表示されずに閉じるようになる。
a0034780_1565045.png

■■■ 駆け足だったが、簡単にプログラマー向けのExpress Blendの使い方を説明した。
Express Blend 4 ・・・ 試用版
VS2010 ・・・ Ultimate 試用版
.NET Framework 4 ・・・ SP1 JPN

書いてある事は一々面倒だが、やってみると操作はそれほどでもない。Expression BlendはVS 2010のXAML部分しか書き換えないので、プログラマーとデザイナー間でソリューションファイルを共有しても競合することは少ない。簡単なのでVS2010だけでなくこういうデザインツールも活用していきたい。備忘録。
[PR]
by k1segawa | 2011-10-09 02:04 | Comments(0)

Expression Blend 入門7 (10/8)

27.楕円を編集する。楕円内で右クリックし、パス>パスに変換を選ぶ。
a0034780_117514.png

28.左のオブジェクトとタイムラインタブ画面がEllipseからPathに変わっている。この状態でツールボックスからペンを選ぶと、楕円に編集ポイントが現われる。
a0034780_1223197.png

29.楕円の上にマウスカーソルを持っていき、ペンで楕円の外周をクリックすると、編集ポイントが増える。
a0034780_1253286.png

30.4つほどクリックし、ツールボックスの白い矢印の個別選択を選ぶ。
a0034780_1281746.png

31.この状態で編集ポイントをクリック・ドラッグすると、編集ポイントの移動、編集ポイントから出ている2本のガイドバーを動かすと、曲線の曲がり具合を編集できる。
a0034780_1314236.png

32.4点をそれぞれ移動・変更して自由な形に変更する。
a0034780_1341810.png

(オプション終わり。続く)
[PR]
by k1segawa | 2011-10-09 01:38 | Comments(0)

Expression Blend 入門6 (10/8)

ここからはボタンのデザインを設定する。

21.Expression Blendを開き、再度ソリューションファイルを開く。
22.ボタンを選択し、右クリックでテンプレートの編集>空アイテムの作成を開く。
a0034780_0414033.png

23.コントロールテンプレートの作成ダイアログが出るのでOKを押す。
a0034780_0433814.png

※WPFでは、今まで隠蔽されていたMS-Windowsのウィンドウシステムがあらわになって、ボタンコントロールがWindowがいくつも重ね合わされて作られている事を意識することになる。Windowの上に子Windowが載って、その子が受け取るイベントがボタンクリックイベントであり、子Windowを作るスクリプトがXAMLである。テンプレートとはXAMLで作られるウィンドウのことを指す。今はボタンのベースウィンドウの上にGridコンテナが載っておりその上に載るXAMLで作るウィンドウの設定を行っている。
テンプレートという名のウィンドウを操作している。

24.ボタンのあった場所がクリアされ、マウスを持っていくとGrid枠だけが表示される。
a0034780_0552344.png

25.クリックして、左のツールボックスから四角形を長押しし、楕円を選ぶ。
a0034780_103494.png

26.Grid枠内で、楕円を描く。
(はみ出してもOK。複雑な形でも形に沿ってクリックが有効となる。逆にGrid枠内でも楕円外なら無効)
a0034780_1111274.png

27.ここからはオプション。やらなくてもいい。楕円を少し編集する。(続く)
[PR]
by k1segawa | 2011-10-09 01:12 | Comments(0)

Expression Blend 入門5 (10/8)

14.ラベルが選択状態のまま、画面右のタブの中からプロパティを選ぶか、メニューのウィンドウでプロパティをチェックONにする。
a0034780_16154426.png

15.プロパティ画面の右スクロールバーで下のほうにスクロールして、▼テキストを表示する。(▼をクリックして開いたり閉じたり出来る)
a0034780_16175788.png

16.テキストのフォントサイズを48ptにする。(タブの境界線をドラッグすると幅を広げられる)
a0034780_16203048.png

17.左のタイムラインが1のところまで太い線が延びているのを確認する。
a0034780_16224325.png

18.中央上のOnLoaded1 タイムライン 記録オンの赤いランプをクリックして、オフにする。
a0034780_16251073.png

19.メニューから全てを保存を選び、プロジェクトを閉じる。
20.VS2010で再度開いて、実行すると、Hello Window!が小さい状態からズームされて表示される。
a0034780_16292198.png
a0034780_16293033.png

(続く)
[PR]
by k1segawa | 2011-10-08 16:29 | Comments(0)

Expression Blend 入門4 (10/8)

※左のプロジェクトエクスプローラの下に「オブジェクトとタイムライン」というタブ画面がある(ない場合は[メニュー]-[ウィンドウ]からチェックボックスがオフになっているか、ウィンドウがフロー状態でただよっているので選んでオンにするか、画面の適当な場所に移動させ、ドッキングさせる)。

13.前にトリガータブ内のイベントボタンによってWindow_Loadedが追加したので、その発生時の右の+ボタンを押すと、ストリートボードの追加ダイアログが表示されるので、OKを押す。
a0034780_15575483.png

14.オブジェクトとタイムライン画面にタイムラインが追加される。
a0034780_1614471.png

15.真ん中の画面でラベルをクリックし、黄色の0の線の上の「縦長の楕円に+がついたマーク」をクリックすると、label1という行の交わったところに楕円のマークがつく。(OnLoaded1がタイムライン記録オンになっている)
a0034780_1675794.png

16.数字の1をクリックして黄色の線を移動する。
a0034780_16104488.png

17.ラベルをズームする(続く)。
[PR]
by k1segawa | 2011-10-08 16:11 | Comments(0)

Expression Blend 入門3 (10/8)

デザインと動きのうち、動きを設定する方法を述べる。

12.ソリューションを開いても真ん中が表示されないときは、左のタブの中から、プロジェクトというタブをクリックして、ソリューションエクスプローラを表示させ、MainWindow.xamlをダブルクリックする。
a0034780_15283738.png

13.まだ何も選択していない状態か、またはWindowとグリッドのうち、Windowを選んだ(次のイベント登録に必要)状態にする。(Formの出来るだけはじの、何もないところをクリックする)
14.左のタブの中から、トリガーという(マウスを近づけるとポップアップで表示される)タブをクリックする。
a0034780_15323658.png

15.イベントという2Dのボタン(有効なら明るい)をクリックすると、Window_Loadedイベントが追加される。
a0034780_1541740.png

16.これにラベルがズームする動きを設定する。(続く)
[PR]
by k1segawa | 2011-10-08 15:42 | Comments(0)