Archive for the ‘.NET’ Category

.NET Micro Framework 4.0 Features

2009年11月23日

Microsoftは、組み込みシステム向けの開発および実行環境である「.NET Micro Framework」の大部分をオープンソース化した。

今回のエンハンスポイントは次にような感じらしい。

  1. HTTP と HTTPs:
    System.Net.HttpWebRequest、System.Net.HttpWebResponse、および System.Net.HttpListener のサポート
  2. Multi-touch
    multi-touch イベントが、オブジェクト モデルと、エミュレータでサポート。 ジェスチャ サポートの再設計により高速化かつ柔軟性の向上。
  3. バージョン管理:
    以下、意味がよくわからないけれど、バージョン管理の強化。構築時と、デバイス上のアセンブリ バージョン番号で、厳密なバージョニング、および不足しているアセンブリの再配布。同じアセンブリで別のバージョン番号に属する型のサイドバイサイドロードとバインドをサポート。 バージョン番号を含む名前付けアセンブリのサポート追加。
  4. SSL および HTTPS のエミュレータ サポート:
    SSL および HTTPs エミュレーションをエミュレータでサポート。
  5. ネイティブ XML Parser:
    XML パーサー ネイティブ コードでパフォーマンスを向上。
  6. ネイティブのコレクション:
    コレクション クラスはネイティブ コードで実装され、Queue と Stackをサポート。
  7. 時刻の同期:
    新しい時刻同期 API により、システム時刻を指定したサーバーの時刻から自動または手動で同期。
  8. 任意の表示サイズ:
    760 KB を超えるビットマップをサポート、カスタムのヒープと割り当て領域を提供。
  9. 大きなバッファ:
    新しい型、Microsoft.SPOT.Hardware.LargeBufferをサポート。これにより、マネージド ヒープに収まるらない 760 KB を超えるバッファの割り当てが可能。
  10. ウォッチドッグと電力制御:
    電力レベルとウォッチドッグ動作の振る舞いの制御が、Microsoft.SPOT.Hardware.PowerState、Microsoft.SPOT.Hardware.Watchdog により可能。Microsoft.SPOT.Hardware.dll を使用して、マネージ アプリケーションから制御。
  11. 太いペンやグラデーション塗りつぶし:
    ウィジェットとコントロールをデザインするため、豊富なグラフィック モデルを提供。
  12. TinyCore パフォーマンスの向上:
    イベントのディスパッチとレイアウトで TinyCore のパフォーマンスを強化。
広告

VS2008でASP.NETプロジェクトを作ると落ちる

2009年3月14日

image

イベントビューアーで調べると・・・

障害が発生しているアプリケーション devenv.exe、
バージョン 9.0.21022.8、タイム スタンプ 0x47317b3d、
障害が発生しているモジュール mswebprj.dll、
バージョン 9.0.21022.8、
タイム スタンプ 0x4731806d、例外コード 0xc0000005、障害オフセット 0x00018fba、
プロセス ID 0x179c、アプリケーションの開始時刻 0x01c9a468c04aeb50。

ふむううう。

イベントビューアーで調べたら、直前に警告で

テンプレート (C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ProjectTemplates\CSharp\Windows\1041\WPFBrowserApplication.zip)、ファイル (csWPFBrowserApplication.vstemplate) にエラーがあります。不明な要素 (EnableEditOfLocationField) です。解析で修復を試行します。

と出ている。ファイルがおかしくなっているせいか?

くそっ、C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ProjectTemplates\CSharp\Windows\1041 以下を消して、再インストールしてみる。

そうしたら、また修復も、アンインストールもできない罠。orz

image

Culminis : 1/22/2009 Announcing the APAC Regional Board

2009年1月26日

シアトルでルームシェアしたインド人の Ashwin からのチャットで、次のお知らせをもらった。

http://thevoice.culminis.com/APAC/Lists/Posts/Post.aspx?ID=4

北端さんが DAL (Director-at-Large): で日本代表として参加されているとのこと。

プロファイルは

http://new.culminisconnections.com/BOD/APAC.aspx?PageView=Shared

ZAM 3D CTP 135 がアップされています。

2007年10月3日

ZAM 3D CTP 130 が9月末日でエクスパイアしたと思います。
報告して、対応をお願いしたら、
ZAM 3D CTP 135 がダウンロード可能になったとの連絡がありました。
 
こちらです。
 
あと、日本語フォントのドロップダウンのバグも報告したら、日本語版のリリースも予定されているとのこと。
 

Web Service の Web サイトの発行時の単なるメモ

2007年8月11日

Web Service の Web サイトの発行時の単なるメモ。

たまにしか、Web Service の発行はしないので、毎回迷う。メモっておこう。

Web Service の発行時のターゲットの場所
 
この下に、ソリューションのファイル(Service.asmx, etc) がコピーされる。
 
Virtual Directory が作成される。そこにホスティング管理ソフトより Script の実行権を付与する必要がある。
 
Web Service の発行時のターゲットの場所に、
を指定してしまうと、既存のファイルが消されてしまい、復旧が面倒なので注意。
 
 
 

Visual Studio Orcas Beta 1 ダウンロード開始

2007年4月22日

March CTP をさっきインストール終わって、触ってみるかと思いつつ・・・
あれ? Beta 1 でてるじゃん・・・ orz
ということで Beta 1ダウンロード中。おそ!
ISOで自分でインストールか、Virtual Image でインストール済みのイメージも提供されている。
 

Visual Source Safe のクライアントライセンス

2007年1月7日

 
によると、
 

ライセンス

Visual SourceSafe のライセンスは、製品をインストールまたは使用するコンピュータごとに必要です。たとえば、100 人が Visual SourceSafe データベースを使用する場合、著作権法を遵守するためには、100 個の Visual SourceSafe ライセンスを購入する必要があります。ユーザーがクライアント コンピュータに Visual SourceSafe をインストールする場合、ライセンスされた製品パッケージの CD キーを各ユーザーごとに用意する必要があります。すべてのユーザー用に同じ CD キーを使用してインストールすることはできますが、その場合でも、ライセンス数はユーザー全員の分を用意する必要があります。

とあり、ユーザーー全員の分が必要となる。小売価格で8万円~9万円するので、大規模開発だと相当な出費になる・・・CVSやSource Forgeに走るのも無理ない。

 

Microsoft .NET Compact Framework の P/Invoke とマーシャリング入門

2006年10月23日

 
 
よくまとまっていそうなので、メモ。
あとでよく読んでみよう・・・と思う前に、読んで試してみた。。。
 
メモリーはこんな感じ。
さすがにW-ZERO3はゼロスピンドルなので、ページファイルは何も帰ってこなかった。w
        private struct MEMORY_STATUS
        {
            public uint dwLength;
            public uint dwMemoryLoad;
            public uint dwTotalPhys;
            public uint dwAvailPhys;
            public uint dwTotalPageFile;
            public uint dwAvailPageFile;
            public uint dwTotalVirtual;
            public uint dwAvailVirtual;
        }
        [DllImport("coredll.dll", SetLastError=true)]
        private static extern void GlobalMemoryStatus(ref MEMORY_STATUS ms);
        private MEMORY_STATUS GetMemStatus()
        {
            MEMORY_STATUS ms = new MEMORY_STATUS();
            GlobalMemoryStatus(ref ms);
            return ms;
        }
————-
CPU負荷も、こんなことしないとだめなのね・・・
dwStartTick = GetTickCount();
dwIdleSt = GetIdleTime();
// タイマーか、何かの処理
dwStopTick = GetTickCount(); dwIdleEd = GetIdleTime(); PercentIdle = ((100*(dwIdleEd - dwIdleSt)) / (dwStopTick - dwStartTick));

TextureBrush OutOfMemoryException with .NET Compact Framework 2.0

2006年10月22日

I encounterd TextureBrush OutOfMemoryException with .NET Compact Framework 2.0.
 
Environment:
           Visual Studio 2005 Team Suite / Japanese version.
           .NET Compact Framework 2.0 Service Pack 1
           Sharp W-ZERO3 WS004SH for the target machine.
          
By using TextureBrush with extensive FillPolygon results in OutOfMemoryException.
Forcing GC does not help.
I used the using pattern, and those instances should have no leak.
 
If I replace
                g.FillPolygon(textureBrush, drawArea);
          with g.FillRectangle(textureBrush, 0,0,100,100);
then, it works fine.
Therefore, it could be a potential bug of .NET Compact Framework 2.0.
 
I have checked out the same symptom by the Google and found a few people reported same issue.
But, there seems to be no solution yet.
—————–
// Run following code and wait for a few minutes, then results in the exception.
// Please note that you have to add a timer with 100mSEC interval and enabled state.
—————–
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace TextureBrushOutOfMemory1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void timer1_Tick(object sender, EventArgs e)
        {
            this.Invalidate();
        }
        private Bitmap backBuffer = null;
        Point[] drawArea = { new Point(10, 10), new Point(90, 10), new Point(90, 90), new Point(10, 90) };
        Bitmap bmp = null;
        Random rnd = new System.Random();
        private void Form1_Paint_1(object sender, PaintEventArgs e)
        {
            using (Graphics g = e.Graphics)
            {
                doPaint(sender, g);
            }
        }
        private void doPaint(object sender, Graphics gr)
        {
            // Make a new back buffer if needed.
            if (backBuffer == null)
            {
                backBuffer = new Bitmap(this.ClientSize.Width, this.ClientSize.Height);
            }
            if (bmp == null)
                bmp = new Bitmap(100, 100);
            // Create Image for TextureBrush
            using (Graphics g = Graphics.FromImage(bmp))
            using (SolidBrush redBrush = new SolidBrush(Color.Red))
            using (SolidBrush blueBrush = new SolidBrush(Color.Blue))
            {
                float val = 0.5F;
                g.FillRectangle(redBrush, 0, 0, 100, 100);
                for (int i = 0; i < rnd.Next(300); i++)
                {
                    g.FillRectangle(blueBrush, (int)(val * rnd.Next(100)), 100 – (int)(val * rnd.Next(100)), (int)(val * rnd.Next(50)), (int)(val * rnd.Next(50)));
                }
            }
            // FillPolygon on the backBuffer with textureBrush
            using (Graphics g = Graphics.FromImage(backBuffer))
            using (TextureBrush textureBrush = new TextureBrush(bmp))
            {
                g.FillPolygon(textureBrush, drawArea);
                // g.FillRectangle(textureBrush, 0,0,100,100);
                // FillRectangle works fine.
                // But, FillPolygon results in Out of Memory Exception.
            }
            // Force GC by GC.Collect() or WaitForPendingFinalizers() is not effective.
            GC.Collect();
            GC.WaitForPendingFinalizers();
            // Draw the backBuffer to the FormWindow
            gr.DrawImage(backBuffer, 0, 0);
        }
        protected override void OnPaintBackground(PaintEventArgs pevent)
        {
            // avoid flicker
        }
        private void button1_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
    }
}

XMLスキーマから、DataSetから継承したクラスを作成する方法

2006年10月1日

xsd.exe /l:cs /d xmlschema1.xsd

を実行すると、次のような DataSetから継承したクラス(名前はデフォルトでDocument)を作成してくれる。
とりあえずメモっておこう。

//——————————————————————————
// <自動生成>
// このコードはツールによって生成されました。
// ランタイム バージョン:2.0.40607.42
//
// このファイルへの変更は、以下の状況下で不正な動作の原因になったり、損失したりします:
// コードは再生成されました。
//
//——————————————————————————

using System;

//
// This source code was auto-generated by xsd, Version=2.0.40607.42.
//

[Serializable()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.ComponentModel.ToolboxItem(true)]
[System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedDataSetSchema")]
[System.Xml.Serialization.XmlRootAttribute("Document")]

public partial class Document : System.Data.DataSet {