テスターですが何か?

ホビープログラマ略してHPです

Archive for the ‘未分類’ Category

クラウド環境で処理効率のいいプログラムを実行するということ

leave a comment »

2011年5月ころから、1年近く個人的にWindows Azureを使ってきました。趣味プログラマ的な観点ですが、気付いたことを書きたいと思います。
自分が使っていたのはクラウドサービスのWebロール+TableStorageが中心で、作成したWebアプリをアップしていました。ローカルでデバッグした後にデプロイして思うことはいつも

遅い

です。何せXSインスタンスを使っていたので、スペックがあまりよくないんですよ。もちろん自分のプログラムが悪いこともあるんですが、ローカルに比べてハードウェアスペックに差がありすぎるので、明らかに遅いと感じてしまいます。ちなみにローカルとXSインスタンスの簡単なハードウェアスペックを記載しておきます。

ローカル
CPU: Core i5-520M 2.40GHz (2コア×2スレッド)
Memory: 8GB
SSD 128GB

Azure XSインスタンス
CPU: 1.0GHz(コア共有)
Memory: 768MB
ストレージ 20GB(I/Oパフォーマンス低)

ちょっと重めの処理をローカルで実行してそれなりのスピードがでて「何とかなるかな」と思ってデプロイすると、レスポンスが返ってくるまでに秒単位の時間がかかったりします。とくに、LinqでTableStorageにアクセスするときに遅延評価のことをすっかり忘れていて、ループの中で何度もTableStorageにアクセスしてしまうと遅くてイライラします。なので、Azureにアップするアプリは自分なりに効率性を考えてプログラミングをしていました。この時代にXSインスタンスのようなハードウェアスペックのサーバーで動作するプログラムを書くというのはいい経験になりました。とくに意識したのは以下の2点です。

Linqの実行タイミング
Linqは遅延実行されます、メソッドの行を通ったタイミングではなくIEnumerable<T>オブジェクト以外の結果が必要になった時に実行されます。
たとえば、以下のようなデータベースやストレージにアクセスするコードを書いたとします。
var hogeList = Db.HogeTable.Where(x => x.Code == code);

foreach(var h in hogeList)
{
    Console.WriteLine(h.Name);
}

ぱっと見、1回のアクセスを行っているように見えますが、ループの回数分アクセスが行われます。メモリ内のコレクションに対するアクセスであればそれほどパフォーマンスに差が出ませんが、外部ストレージ(SQL Azure/Table Storage)へのアクセスの場合一気にパフォーマンスが劣化します。自分が一番ハマったのもこのパターンです。アクセスを1回に抑えるためには、Whereメソッドの後にToListやToArrayなどで、データの型を確定させる必要があります。

Linqの細かいことはこちらの@ITの記事を参考にしてください。
LINQの仕組み&遅延評価の正しい基礎知識
http://www.atmarkit.co.jp/fdotnet/chushin/greatblogentry_06/greatblogentry_06_01.html

外部ストレージへのアクセスタイミング
1つめと関連する内容ですが、1回のアクセスで大量の件数のデータを取得する方が速いのか、1件のデータを複数回のアクセスで取得する方が速いのかです。具体的には
・1回のアクセスで多めにデータを取得し、ループではメモリにのみアクセスする
・ループの中で都度データを1づつ取得して処理を行う
のどちらが速いかということです。これはケースバイケースで、しかも実機でしか確認できないので、少し書き換えて何度もデプロイして確認していました。ローカルのSQLServerやストレージエミュレーターでは何度もアクセスした方が速いのに、実機ではネットワークアクセスが伴うので、1回のアクセスで多めのデータを取得したほうが速いことが多かったです。

あと、.NET4から導入されたParallelを使って並列処理を行うと大幅にパフォーマンスを改善できることがありました。特に、単純ループでデータを登録する処理は1ケタ速くなります。1コアのCPUでも並列処理は効果がありました。今見るといい加減なデータの取り方ですが、昨年TableStorageに並列アクセスして高速化に挑戦したブログを書いています。

Azure TableStorageの高速化(2) -処理の並列化-
https://david9142.wordpress.com/2011/10/26/azure-tablestorage%E3%81%AE%E9%AB%98%E9%80%9F%E5%8C%962-%E5%87%A6%E7%90%86%E3%81%AE%E4%B8%A6%E5%88%97%E5%8C%96/

AzureTableStorageの高速化(3) -打倒SQLAzure!!!-
https://david9142.wordpress.com/2011/10/26/azuretablestorage%E3%81%AE%E9%AB%98%E9%80%9F%E5%8C%963-%E6%89%93%E5%80%92sqlazure%EF%BC%81%EF%BC%81%EF%BC%81/

最新のハードウェアでは些細な、ほとんど気づかないパフォーマンス差であっても、低速なハードウェア環境では大きな差になることを身に染みて感じましたし、パフォーマンスを改善するのはなかなか楽しいものです。

最後にプログラムのパフォーマンスとクラウドの関係について考えてみます。オンプレミス環境ではリソース不足を防ぐために余裕をもってハードウェアスペックを調達することが多いです、想定される負荷に耐えられるスペックの1.3~1.5倍とか。そしてハードウェア調達後にプログラムを改修してパフォーマンスを改善して必要なサーバー台数が少なくなると、運がよければ感謝されるかもしれません。ただ、見えないところで

「なんで最初から速いプログラムにしなかったの?」

「誰がこんな余分なスペックを見積もったんだ!」

と揉めることになるかもしれません。そして誰かが責任を取ることになることになるかもしれません。ハードウェア購入費用は返ってきませんから。運用・サポート費用がそれほど変わることも稀ですし。パフォーマンスが悪くてハードウェアを追加購入して増強した後に、プログラムを改修してパフォーマンスが改善した場合はもう目も当てられません、パフォーマンスがよくなったこと自体はいいことなのですが、大惨事です。誰がハードウェア増強の判断をしたのか、もとのプログラムを作ったのは誰なのか、と犠牲者が増えていきます。

そういった経験をすると、別の機会では

「プログラムの改修は必要ない、ハード増強で対応する」

という判断になるのかもしれません。

クラウド環境であれば、必要なサーバー(インスタンス)数が少なくなれば、直接的に運用コストを下げることができます。クラウド環境のメリットにスケールアウトが挙げられることが多いのですが、個人的には一番のメリットはスケールインだと思っています。クラウドのプログラマにとってのメリットは、環境構築・サービスイン後にパフォーマンスを改善してもみんなが幸せになれることでしょう。サービスイン時点で完璧なプログラムを作るのって難しいです、あとから改善して幸せになれることが分かれば、改善しようと努力しますよね。今まで余裕を見てハードウェアスペックを見積もって、処理が非効率であってもハードウェアのパワーに頼って目を瞑ってきたプログラムは結構あると思います。購入後にそのハードウェアが不要になる状況は作りたくないので、あえてパフォーマンスの見直しを行わないプログラムも結構あると思います。

今後クラウド上で動作するプログラムが増えると、こういったプログラムを見直すメリットが増えてきます。また、処理効率のいいプログラムを書けるスキルは運用コストに直接響いてくるので、今まで以上に重要視されるかもしれません。

広告

Written by david9142

2012年12月15日 at 9:48 PM

カテゴリー: 未分類

退職しました

with 2 comments

7月31日をもって10年勤めた会社を退職しました。8月1日から新しい会社で働きます。

社員数2,000人超の中堅SIerを辞めて社員400人くらいの会社へ転職するので、いろんな方に「もったいない」と言われましたが、自分の中ではこの会社に継続して勤めることがもったいないと感じたので転職することにしました。

前の会社(部署)はゆるくてぬるくてMAXパワーの半分程度を出すと仕事が片付いてしまいます。10年戦士となるとサラリーマンとしての技術的なスキルはピークに達するので、他の人ではできなくても自分ではできることが多くなって評価があがります。あとは管理職になって腹八分目で仕事をしていけばある程度は昇進できるような未来が見えました。サラリーマンですからエンジニアの理想よりも、よりリスクを抑えて利益が大きくなる方法を考えていけばいいんです。新しい技術は趣味程度にさらっと追いかけていけばいいんです、客から言われなければ無理に導入する必要はないんです、必要になれば部下に「やれ!」って言えばいいんです。自分の仕事じゃないし、そのほうがリスクを抑えられる。そうやってあと30~35年サラリーマンをだらだら続けていけば、一応1部上場の企業なのでそれなりに給料がもらえる最後の世代だと思っています。自分たちは海外との競争から逃げ切れる最後の世代だと感じています。

その一方で、社外のエンジニアの方と知り合う、Twitterやブログで一方的に知る機会がこの2年くらいで一気に増えました。外には化け物のような(自分よりもはるかにすごいという意味で)人たちがゴロゴロいることを知りました。また、新しい技術(最近では、Windows Azureの新機能リリースやASP.NET MVC4が中心)に触れる機会が一気に増えました。ブログも自分なりに真面目に書くようになりましたし、勉強会などで発表させていただく機会が何度かありました。おぼろげにVBを書くことしかできませんでしたが、業務経験なしでもVBがすらすら書けるようになりましたし、C#も書けるようになりました。30を過ぎてから新しい技術に追随していくことがしんどくなるのではなく、昔よりも楽に新しい技術を追いかけることができるようになりました。

また、ゴミみたいな人たちを使って自分が最大できることの半分の成果をあげればいい仕事はつまらないということを再認識しました。そうなると人間欲が出てくるもので、こういう化け物みたいな人たちと新しい技術を使って一緒に仕事をしてみたい、と思うわけです。しかも、客から言われたことを濁目で淡々とこなすSIではない仕事を。ドラゴンボール的にいうとナメック星時代のクリリンレベルの自分が、ギニューさんやフリーザ様と一緒に仕事をしてみたいと考えてみたってことです。今の会社に対する不満は百万個や二百万個はあります、ただ、それは些細な話しで退職のきっかけになったわけではありません、些細なネガティブな理由で退職してもいいことはないでしょうから。それよりも、今の会社ではなくほかのSIではない会社を見てみたいということと、サラリーマン11年目の自分の評価を他の会社から聞いてみたいという思いで転職活動を始めました。

今年のGW前に転職エージェントに登録しました、たまたまGWがあったので履歴書・業務経歴書を書くまとまった時間があったのは非常にラッキーでした。GW明けに転職エージェントに合い、こちらの希望を伝えました。

  • PM・コンサルではなく、エンジニア職
  • SIerではない会社
  • C#, ASP.NET
  • Windows Azureとかあったらうれしいな

すると、この条件に合う求人はほとんどないんですよね。「SIerじゃない」という条件の時点で、求人条件はほぼLAMP系になります。思わずTwitterでつぶやきました

「ASP.NET / C# / Windows Azureの求人なんて存在しないze!」

「みんな!転職するならLAMPのスキルを身につけよう!!」

そしたらMSの中の人にDMでフォローされました(笑) 仕方がないので条件に完全に合致しない会社も応募しましたが、案の定、求めるスキルと職務経歴が合わない会社は書類選考で落ちました。面接は選考というよりもほぼ勧誘でした。これまでの業務経歴を簡単に説明することと、向こうからのいくつかの質問に答えるだけで勧誘が始まりますw これからこういうサービス/ビジネスをやっていくから、こういう仕事をして欲しいとか、「フレームワークのソース見る?」とか、採用面接に来ただけの人間(機密保持契約結んでない)にこんなことまで言っていいの?とこっちがドン引きになるくらいでした。自分くらいの年齢の人ってどの会社でも不足してるんですね、世代的には団塊Jrよりも下の世代なのでそんなに多くはないですけど、今の20代に比べれば少なくはないと思うんですが。みんなどこにいるんでしょうね。どの会社も20代後半~30代半ばくらいで指示しなくて黙っていても仕事ができる人って足りないし、欲しいんですね。ちなみに、履歴書・業務経歴書にはざっくりとこんな内容を書きました。

  • 経験年数10年(リーマソ11年目)
  • プロジェクトリーダーを担当することが当たり前ですが何か?
  • ASP.NET, C#できますけど?(たぶん...たぶんできると思う...)
  • 新しい技術好きです、個人的にはASP.NET MVCアツいです

一部経歴を詐称していますが...(だってC#の業務経歴ないんだもん(´・ω・`))できないことを「できる!」と言っているのではなく、できることを「できます!」といっているので(自分の中では)問題ないと思っています(`・ω・´)キリッ。いくつかの会社はとんでもないスピード感で採用を進めてきます、面接が終わって帰宅途中の電車の中で結果通知のメールが来ます。実際には転職エージェントを通じてメールが来るので、面接後すぐにエージェントへ結果を通知していることになります、あらかじめ結果を用意しておいたんじゃないかと思うようなスピード感です。しかも「明日、来れますか?最終面接になります」と。その上、最終面接も帰りの電車の中で結果通知メールが来ることがありました、内定通知書付でw もう、絶対面接前に用意していたとしか考えられませんw 現職(もう退職したので、正確には前職)の会社だったら何度も会議して決めるんでしょうねぇ(遠い目)、どの口が「ビジネスのスピード感を高める」とか言ってるんでしょう...おっと、すみません、愚痴になってしまいました。

転職活動を始めてみたら、2週間くらいで最初の内定がもらえて3週間で応募した会社の全ての面接が完了しました。2001年の新卒採用試験ではかろうじて1社からのみ内定をもらえたのですが、11年後には3週間で3社から内定が出ました。で、そのうち採用のスピード感が最も早い会社に決めました。ASP.NET+C#でのアプリ開発エンジニアという職種になります。

明日から

「わたしの戦闘力は530000です」

という人たちと仕事ができると思うと、本当、ドキがムネムネします。自分ドMなので、フリーザー様のように「このクズ野郎!」とか「この虫ケラが!」と言われるとうれしくなってしまいます。

そんなにたくさんの会社の中を知っているわけではありませんが、SIerって能力のある人にはしんどい環境だと思います。自分が転職することを決めたせいか、濁目・社畜自慢をしている人を見ると「会社辞めればいいのに」と思ってしまいます。会社のグチであったり、「オレはXXXXがやりたいんだ!」と主張する労力よりも採用面接を受ける労力のほうがよっぽど小さいですよ。経験や能力が本当にある人であれば、転職先を選べる環境にあると思います。

7月後半は毎日前の会社の送別会でした、毎日二日酔いで昼間も酔っ払った状態だったかもしれません。10年でいろんな部署をたらい廻しにされたため社内の知り合いが(辞める直前の部以外では)多く、直接会ってごあいさつできない方も何人かいらっしゃいました。送別会では絶対転職先の話題になります、転職先や職種について説明が面倒臭いので、転職先について

「Gで始まる(.NET界隈では)有名(だと思う、ソーシャルアプリを作っている)企業」

と説明して勘違いさせたり。

「次の会社でもSE?」とか訳の分からないことを聞く人もいるので

「次の会社ではピージーです。(`・ω・´)キリッ」

と適当に答えたこともありました。ごめんなさい。

// 自部署の送別会よりも常駐している顧客先での送別会のほうがたくさんの方が参加するのは、よくある話ですよね。

このブログについてですが、平日昼間に満たされない思いをぶつけて書いていました。今後、平日昼間にエンジニアとしての自分が満たされることがあればこのブログは更新されないかもしれません。

Written by david9142

2012年7月31日 at 11:53 PM

カテゴリー: 未分類

Tagged with , ,

MS×gloops合同セミナーに参加してきました

leave a comment »

品川マイクロソフトで行われたセミナー「全部見せます!ASP.NETで開発した大規模ソーシャルゲーム」に参加してきました。Windowsプラットフォームでソーシャルゲームを運営しているgloopsのエンジニアを迎えてのセミナーでした。

以下、自分の手元のメモです。

 

gloopsという会社の紹介(川方さん)

  • はじめはNENDOというゲームをリリースしたが、技術にこだわりすぎてあまりウケなかった。
  • モバイルをなめていたが、モバイル向けのゲームをリリースしたらウケた。
  • モバイルソーシャルゲームをリリースしたら大受けした。
  • 1年半で13ゲームをリリース、Mobageランキングでもいくつか上位にランクインしている。

開発チームについて

  • サービスごとに7~12名の体制、すべて内製
  • チームないにPM、ME、デザイナーなどの役割を設けている

現在

  • 126億Req/月

今後

  • やっぱり海外進出

なぜWindowsプラットフォームなのか

  • GUIが充実していて教育しやすい
  • 短期でサービスをリリース可能
  • 高負荷状態でも安定して稼動してくれる

 

gloopsを支える技術(池田さん)

提供するサービス

  • SNS(Mobage)がプラットフォームを提供しているので、そこにゲームを載せて提供している

システムについて

  • 普通のWebアプリ
  • プラットフォームのAPIを利用している
  • 超膨大なトラフィック

構成

  • クライアントからのリクエストはSNS事業者のサーバー経由で来る
  • ユーザーに関する情報は保持しておらず、API経由で取得する
  • OpenSocial, OAuthを使用している、他のプラットフォームへ移植しやすい

image

膨大なアクセス

  • 一気にアクセスが増大する可能性があり、スモールスタートはできない
  • 50万ユーザー登録/週、3.5億Req/日(4000Req/秒)
  • SNSプラットフォームへ5秒以内にレスポンスを返さないとユーザーへはタイムアウトが通知される
  • 1000回/3分のタイムアウトでSNS事業者から強制メンテナンス状態にされる
  • レスポンスタイムは超シビア(レスポンスが悪くなるとユーザーは使ってくれない)

ここから本題

システム構成

  • ASP.NET WebForm + C#
  • Windows Server + IIS
  • SQL Server
  • ngixでロードバランス
  • memcached, Redisをキャッシュサーバーとして使用

インフラ

  • サーバーは国内のDCに数百台
  • 1タイトルで最大50台のサーバーを使用
  • 以下のように普通の構成

image

大量のトラフィックをさばくには

アプリの最適化

  • 不必要なデータベースへのアクセスを行わない
  • SNSAPIへのアクセスを非同期に
  • 基本をしっかりやる。手を抜くと絶対にそこがボトルネックになる
  • 例:冗長DBアクセス、デバッグモードのログ・メールをそのまま本番移行
  • 開発時にはクエリパフォーマンスを常時モニタ、画面に出すようにして遅いクエリにすぐ気づけるようにしている

キャッシュの利用

  • マスタはオンメモリのDataTableに保持
  • 持てるものは全部メモリに持つ、ASP.NETが持つキャッシュ機能は最大限利用する

データベース

  • 1億件のテーブル
  • ボトルネックになるのはDBが多い
  • スケールアウトしにくい
  • データベースのパフォーマンスチューニングも基本が大事!!!
  • ディスクアクセスはメモリアクセスよりも何千倍も遅い
  • メモリにあるデータへアクセスする、ディスクI/Oを発生させない
  • ディスク書き込みはコミットのタイミングではない、チェックアウトのタイミングであることを意識する
  • インデックスは絶対使う
  • クエリの書き方にも注意(データを絞り込んでからJOINする)
  • Row_Number関数、Rank関数など内部的にソートが行われる処理は注意
  • データ件数が数千万になる辺りから性能問題が発生しやすい
  • オンライン中のテーブル定義変更
  • 全件count(sys.sysindex使えよ!)
  • データのスキャン方法(シーケンシャル/ランダム)を意識
  • ソートが遅くなることが多い
  • インデックスを使わないクエリは論外!
  • ログの自動拡張は注意、デフォルトでは10%拡張なので10GBのログだと1GBの領域を割り当てようとする…
  • テーブル変数、一時テーブルを使うことでtempDBがボトルネックにになることも

トラブルは尽きない orz

  • 1回はしょうがない、2回同じことが起きないようにすることが重要

DB負荷低減

  • KVSをキャッシュサーバーとして使用
  • DBの垂直分割、水平分割
  • 高速なストレージを使う(スケールアップ)

KVSとは

  • HashTableのようにkeyに対してvalueを持つもの
  • NoSQLとして注目
  • memcachedとRedisを使用している

memcached

  • データは永続化できない(サーバー、IISのワーカプロセスが終了すると…)
  • 複雑なデータの格納は向かない
  • 実績が多い(使ってないWebサービスはないのでは?)

Redis

  • 単純データだけでなく、List,Hashなどを格納可能
  • ディスクに非同期で書きこむことができ、永続化可能
  • レプリケーション可能
  • ニコ生で使われて注目を浴びている

KVSの使い所

  • 一時的なデータ
  • 更新頻度の多いデータ(経験値、スタミナ など)←都度DBに書きこむなんてありえない
  • 最終的にDBに書きこむデータ(ここはRedisを使う?)

DB分割

  • 垂直分割(テーブルをグループ化して分割、トランザクション制御に注意)
  • 推定分割(同一テーブルをキーで分割、アプリからは同じテーブルに見せる必要がある)

ディスクI/Oがボトルネックになりやすい

  • CPUやメモリの進化に対して、ディスクがアクセススピードは進化が遅い

高速なストレージの利用

  • PCIeのSSDを使用
  • SAS(RAID 10) → 5,500スコア、SSO → 120,000スコア、圧倒的な速さ

運用

  • 担当者のアイディアよりも、データ分析を重視
  • KPI数値(DAU、ARPU 平均課金額, 継続率 何日連続てユーザーが使うか)はいつでも誰でも見えるようにしている
  • 高速なPCDA

開発スタイル

  • ドキュメントは書かない
  • 基本的な考え方をwikiに書く
  • テーブル定義なんてあるわけない
  • 動くものが最新の使用

今後やりたいこと

  • データ分析基盤の構築(いわゆるBigData)
  • Azure上での動作、レスポンス検証

最後に

  • 基本が大事
  • 技術を正しく理解する

 

個人的な感想

ソーシャルゲームだからといって特別なことはしてないという印象でした。「ディスクにアクセスさせず、メモリにアクセスさせる」「よぶんなDBアクセスはしない」は、聞いててものすごく共感できる内容でした、元はてなの伊藤さんが書いた「[Web開発者のための]大規模サービス技術入門 ―データ構造,メモリ,OS,DB,サーバ/インフラ」の内容を思い出しました。「技術を正しく理解して、基本を大事にする」は、どの分野でも同じなのだと思います。業務アプリでもソーシャルゲームアプリでも、WebアプリでRDBを使用している点は同じですから、同じ事で悩んで同じベストプラクティスとなるんだと思います。

そういう意味ではSIerからソーシャルゲームアプリエンジニアへの転職も全然ありだと思います。今まで身につけたスキルは十分に生きると思います。あと、インフラの知識があると(ネットワーク、ロードバランシング、ハードウェア)重宝されるんじゃないでしょうか。利用者が限定されている業務アプリとは異なり、余裕のあるスペックを見積もっても、前提・想定以上のアクセスがくることは日常茶飯事でしょうから。

Written by david9142

2011年11月17日 at 1:45 AM

カテゴリー: 未分類

x64環境でのExpressEditionでのコンパイル

leave a comment »

OSをx64環境(Windows7 64bit)に移行したところ、ReadMailClickerとYahooSearchPointが動かなくなりました。

エラーの内容は以下の通りです。

——————————————————————-

BadImageFormatException

ファイルまたはアセンブリ ‘WatiN.Core, Version=2.0.3.913, Culture=neutral, PublicKeyToken=db7cfd3acb5ad44e’、またはその依存関係の 1 つが読み込めませんでした。間違ったフォーマットのプログラムを読み込もうとしました。

——————————————————————-

x64環境ではターゲットCPUを明示的に指定しないとx64用にコンパイルしてしまい、x86のアセンブリは利用できず例外が発生してしまう。

画面からターゲットCPUを変更できないので、ファイルを直接書き換えます。

*.vbprojファイルの<PropertyGroup>内に<PlatformTarget>x86</PlatformTarget>を追加すれば、x86用にコンパイルされるので動作させることができます。

<PropertyGroup>は3つありますが、最初の部分にのみ追加すればいいです。

以下、サンプルです。

   1: <PropertyGroup>
   2:   <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
   3:   <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
   4:   <ProductVersion>9.0.30729</ProductVersion>
   5:   <SchemaVersion>2.0</SchemaVersion>
   6:   <ProjectGuid>{BBA4A3E0-25E1-4744-8D21-60C78E7A27B7}</ProjectGuid>
   7:   <OutputType>WinExe</OutputType>
   8:   <StartupObject>ReadMailClicker.My.MyApplication</StartupObject>
   9:   <RootNamespace>ReadMailClicker</RootNamespace>
  10:   <AssemblyName>ReadMailClicker</AssemblyName>
  11:   <FileAlignment>512</FileAlignment>
  12:   <MyType>WindowsForms</MyType>
  13:   <PlatformTarget>x86</PlatformTarget>
  14:   <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
  15:   <OptionExplicit>On</OptionExplicit>
  16:   <OptionCompare>Binary</OptionCompare>
  17:   <OptionStrict>Off</OptionStrict>
  18:   <OptionInfer>On</OptionInfer>
  19:   <IsWebBootstrapper>false</IsWebBootstrapper>
  20:   <PublishUrl>publish</PublishUrl>
  21:   <Install>true</Install>
  22:   <InstallFrom>Disk</InstallFrom>
  23:   <UpdateEnabled>false</UpdateEnabled>
  24:   <UpdateMode>Foreground</UpdateMode>
  25:   <UpdateInterval>7</UpdateInterval>
  26:   <UpdateIntervalUnits>Days</UpdateIntervalUnits>
  27:   <UpdatePeriodically>false</UpdatePeriodically>
  28:   <UpdateRequired>false</UpdateRequired>
  29:   <MapFileExtensions>true</MapFileExtensions>
  30:   <ApplicationRevision>0</ApplicationRevision>
  31:   <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
  32:   <UseApplicationTrust>false</UseApplicationTrust>
  33:   <BootstrapperEnabled>true</BootstrapperEnabled>
  34: </PropertyGroup>

Written by david9142

2009年10月12日 at 12:52 AM

カテゴリー: 未分類

美人時計 for Desktop Ver1.0

leave a comment »

美人なお姉さんが時刻を教えてくれる美人時計

iphone向けアプリ、Mac用、Google用ガジェットが公開されていますが、自分の環境(WindowsXP)で楽しもうと思うと常にブラウザで表示しないといけない...

ブラウザの一部分をデスクトップがジェットのように表示させる方法もあるようですが、面倒くさいし。

ということで、美人時計デスクトップアプリケーションを作成しました。

本体

http://cid-5549d6c74ffbb345.skydrive.live.com/embedrowdetail.aspx/.Public/BijinTokeiDT/1.0.0/BijinTokeiDT.zip

ソース

http://cid-5549d6c74ffbb345.skydrive.live.com/embedrowdetail.aspx/.Public/BijinTokeiDT/1.0.0/BijinTokeiDT|_src.zip

<使用方法>

解凍したフォルダ内にあるBijinTokei.exeをダブルクリックしてください。デスクトップ上に美人時計が表示されます。

普通のデスクトップアプリケーションなので、ウィンドウ右上の×ボタンで終了してください。

 ・ブラウザコントロールにGoogleガジェットを表示しているだけなので、インターネットに接続している必要があります。

 ・アプリ内に画像は含まれていないので、常に最新の画像が表示されます。

<今後の予定>

 ・タスクバーに常駐して動作させるようにする

 ・野暮ったさ(普通のアプリケーションっぽさ)をなくして、ガジェットっぽくする。

この調子でiモードアプリも作ってしまおうか...

————————-

美人時計

http://www.bijint.com/jp/

Written by david9142

2009年8月18日 at 3:53 PM

カテゴリー: 未分類

ReadMailClicker Ver0.4.0リリース

leave a comment »

<ReadMailClickerとは?>
 リードメールサービス(メールを受信し、受信したメール内の広告を閲覧することでポイントを獲得し換金するサービス)のメール内URLクリックを自動化するソフトウェアです。

実行ファイルのダウンロードはこちら(通常はこちらからダウンロードしてください)

http://cid-5549d6c74ffbb345.skydrive.live.com/embedrowdetail.aspx/.Public/ReadMailClicker/0.4.0/ReadMailClicker|_bin|_040.zip

ソースコードのダウンロードは こちら

http://cid-5549d6c74ffbb345.skydrive.live.com/embedrowdetail.aspx/.Public/ReadMailClicker/0.4.0/ReadMailClicker|_src|_040.zip

<修正点(改善点)>

・BlackCherryへ対応

・ホワイト工房へ対応

今後はVer1.0リリースへ向けて全面的に作り替える予定です。

<動作環境>

Windows XP + IE8

また、動作には以下のソフトウェアが必要になります。以下URLからダウンロード後インストールしてください。
Microsoft .NET Framework 3.5 sp1
http://www.microsoft.com/downloads/details.aspx?familyid=ab99342f-5d1a-413d-8319-81da479ab0d7&displaylang=ja

<利用方法>

Ver 0.3.0リリースの記事を参照してください。

 

<対応しているリードメールサービス>
以下のリードメールサービスに対応しています。以下バナーから会員登録を行うことができます。

流石メール
banner500f 

1番めーる
1banmail.com

白くつしたのナッツ
natuchotto_3anv300_120 

アクセス宣伝隊長
access-ad.com

King of ReadMail
kingmail.jp

寿司メール
sushimail.biz

SugarMail
Sugar Mail

ABCメール
abc-mail.jp

天空
10ku.biz

Delight-Mail
DM_b4 

P-maga

ねっとde Goooo~oo!!
468_60 

三ツ星メール
3starmail01 

SeasonMail
seasonmail.net 

BlackCherry
bannerCAXOQIEA 

ホワイト工房
ホワイト工房 

 

<注意点など>

・本ソフトウェア利用によって発生した損害(アカウント削除など)に対して、ソフトウェア製作者は一切の責任を負いません。自己責任の範囲でご利用ください。

・不具合、改善要望(対応してほしいポイントサイト)があればこちら(david9142@hotmail.com)、または、ブログ内のコメントに書き込んでください。

Written by david9142

2009年7月22日 at 1:00 PM

カテゴリー: 未分類

YahooSearchPoint公開停止

leave a comment »

ポイントサービス管理者から公開停止を求められましたので、YahooSearchPointは公開を停止します。

ブログのエントリは削除していませんが、エントリ内の実行プログラムとソースコードへのリンクはリンク切れになっています。

Written by david9142

2009年6月24日 at 2:19 PM

カテゴリー: 未分類