アクセスカウンタ
インフォメーション

読者登録
メールアドレスを入力して登録する事で、このブログの新着エントリーをメールでお届けいたします。解除は→こちら
現在の読者数 1人
プロフィール
のんきよね
のんきよね
オーナーへメッセージ
のんきの日記(こちらのサイトも立ち寄ってください)

スポンサーサイト

上記の広告は2週間以上更新のないブログに表示されています。 新しい記事を書くことで広告が消せます。  

Posted by スポンサー広告 at

2008年07月15日

EeePCハンドブックを購入

購入して2日、EeePCに愛着を感じてきております。(やばい?)

ネットを探すと、EeePCを改造したり、改善する方法等、
興味をそそる情報が多くありました。
(でも改造するところまでは、ちょっと、、できません。)

その中で、私が一番欲しいと感じていた画面サイズ変更。
調べてみると1024×768でも表示ができるという事で、
ネットで情報を仕入れて早速実施しました。キーワードは[AsTrayPlus]
(これをインストールした為か、800×600ができなくなりました。)


そして、、本が売られている事も知り、早速購入です。
「EeePCハンドブック Windowsモデル対応版 」
これを読めば大体はできてしまいそう(必需品かも)

1024×768の表示は、7インチには正直きついです。
ちょっと実用的でないと感じました。
一見するとよさそうですが、7インチでは正直見づらくて、
目が疲れてしまいます。↓これです(クリックで拡大)。

けれど、YAHOOを見る時には、ボタンの表示ができるので、
時と場合によって切り分けて使うのが良いんでしょうね。



結論として、通常使用では、800×480あたりがよろしいかと。

最後に、、、こんなことができるのは、
ネットで公開してくれた方たちのおかげだと感謝です。
ネット社会なんだなとしみじみ実感です。
  


Posted by のんきよね at 01:20Comments(0)コンピュータ

2008年07月13日

100円パソコン(EeePC 4G-X)

EMOBILEで、スーパーライトデータプラン にねんMAX で、
新規契約することで、Eee PC 4G-XとD02HWが100円で
購入できました。(そしてそのPCでこのブログを書いております。)

実際にかかる費用は、契約事務手数料2,835円(初回のみ)と
毎月2,900円~6,880円(上限)です。
2,900円には、1,000円分の無料通信分が含まれているとの事ですが、
今のネット環境は、YAHOOのサイト等、FLASHばりばり使っている所へ
2回アクセスすれば、無料通信分はなくなってしまうとの事です。
(ちゃんと使うつもりなら)6,880円は覚悟するべきなんですね。

今のご時世、会社へ持ち込んで使用する事はできません。
それでも、今回、購入しようと考えた理由は、魅力的な安さを感じたから。
こんな事があるのは、きっとiPhoneが発売されたおかげなんじゃないかと
思っています。

 同じお店でiPhoneを実際に手に取って見てみました。画像を拡大したり
 スライドさせたり、縦から横にしたら表示も切り替わりました。
 使った第一印象はホントに欲しいと思いました。やっぱりアップルという
 操作性の良さ、スタイル、私の携帯もSoftBankだし、8月で丸2年だし、
 購入してしまおうかと迷ったくらいです。(その時、残り在庫3台のみ)
 でも、、、、ねぇ。
 毎月の価格がねぇ、、8,000円台だとね。かみさんがNGを出します。

EMOBILEは、私にとっては渡りに舟でした。今まで欲しかったノートPCが
100円で買えるし、毎月の支払いは私の小遣いならばとOKしてくれたのですから。

このPCが普通のノートPCでない点、
それはハードディスクが付いていない事です。
その代用としてフラッシュメモリ4Gが用意されてます。(少ないです)
店員さんもソフトをどんどん入れて使うものではないですよと
言っておりました。
(店頭に置いていたEeePCは残り空き容量が320Mでした。)

私は、メールを取ったりする事はそのPCではやらないと決め、
ネットサーフィン位ができれば良いと思う事にしました。

そこで、私が良く利用しているYAHOO動画等を確認してみようと
思いたち、試させてもらいました。
試して思った事は、画面サイズが小さいという事。
LCDの画面サイズが800×480か800×600しか選べないので、
音の調節ボタンをうまく押す事ができませんでした。
(下に消えてしまって押せない)
ちょっと残念に思いましたが、動画がそれなりに再生できる事がわかり、
安心して決定です。

購入してわかりましたが、マウスと4GのSDHCメモリーカードが
標準でついてました。





自宅の回線にて、動画サイトがアクセスできるかを確認。
・GYAO(再生OK、安心して見れました)

・ニコニコ動画(弾幕OKでした。)


せっかくなので、性能評価(HDBENCH)

CPU-Z


これは開発環境が動くか確認してみた所です。結果はOKです。


メモリー常駐


Cドライブが、フラッシュメモリの4Gで、OSがインストールされます。
Dドライブは、増設ドライブとしてSDカードが差し込めるようになってます。
そこで、付属していたメモリーカード4Gに、C++Builder6の開発環境を入れました。また、Cドライブに、OpenOffice、圧縮・解凍ツール、エディタ、ウイルスソフト等をインストール。
結果、フラッシュ4Gの残りは約800Mとなってしまいました。

でも使ってみての感想は、、、、こいつ!、できがいいぞー!!!。
VISTAは無理でも普通のXPなら、なんら変わりがないです。

100円で、モバイル環境が整うなんて、ほんとにあり得るんですね。  


Posted by のんきよね at 01:26Comments(0)コンピュータ

2008年07月07日

VCのDLLをC#から呼び出すには

VCで作られたDLLを、C#から参照したいときの方法。

構造体をやり取りすると想定して、
その場合の方法は以下のとおり。

--------------------------------------------------------------------------
VC側(DLLとなる側)
--------------------------------------------------------------------------
// 構造体を仮定
typedef struct typstrData{
    char    strMsg[256];
    int     sw;
    char    strStok[128];
    int     sw2;
}TYPESDATA;
// dll側の領域
static TYPESDATA stockdt[5];
static int          stockidx=0;

// DLL側関数の例として以下のような2関数を用意していたとする
// データをDLL側に渡す関数(stock_pushd)
int WINAPI stock_pushd(TYPESDATA *psetdt)
{
    if( 4<stockidx) return -1;
    memcpy(&stockdt[stockidx++],
               psetdt,sizeof(TYPESDATA));
    return stockidx;
}
// DLL側からデータを受け取る関数(stock_popd)
int WINAPI stock_popd(TYPESDATA *psetdt)
{
    if( 0==stockidx) return -1;
    memcpy(psetdt,&stockdt[--stockidx],sizeof(TYPESDATA));
    return stockidx+1;
}

--------------------------------------------------------------------------
C#側
--------------------------------------------------------------------------

using System;
using System.Runtime.InteropServices; 

namespace TestCSharp
{
   // C#側プログラムで実際に使用するデータ用クラス
   public class csData
    {
        public string message;
        public  int sw1;
        public string Stock;
        public  int sw2;
        public csData(){
            message = string.Empty;
            sw1=0;
            Stock=string.Empty;
            sw2=0;
        }
    }

   // C#側で、DLLとやり取りを行うクラス
    public class testdllApi
    {
        //----------------------------------------------------------
        //構造体定義
        //----------------------------------------------------------
//      typedef struct typstrData
//              {
//                  char    strMsg[256];
//                  int     sw;
//                  char    strStok[128];
//                  int     sw2;
//              }TYPESDATA;
        // この構造体と同じレイアウトにするには以下のような記述
        [StructLayout(LayoutKind.Sequential)]
            public struct dll_TYPESDATA
        {
            [MarshalAs(UnmanagedType.ByValTStr,
                 SizeConst = (int)256)]
            public string   strMsg;
            public int      sw;
            [MarshalAs(UnmanagedType.ByValTStr,
                 SizeConst = (int)128)]
            public string   strStok;
            public int      sw2;
        }

        //----------------------------------------------------------
        // 関数定義
        //----------------------------------------------------------
        // DLL側の関数を使用できるように定義
        [System.Runtime.InteropServices.DllImport("testdll.dll")] 
        public static extern System.Int32 
                                  stock_pushd(ref dll_TYPESDATA psetdt);
        [System.Runtime.InteropServices.DllImport("testdll.dll")] 
        public static extern System.Int32 
                                  stock_popd(ref dll_TYPESDATA psetdt); 

        //----------------------------------------------------------
        public testdllApi() { /* コンストラクタ */  }
        // C#側ではこのメソッドを使用する(pushd)
        public int pushd(csData pdt)
        {
            dll_TYPESDATA dt = new dll_TYPESDATA);
            dt.strMsg = pdt.message;
            dt.sw = pdt.sw1;
            dt.sw2 = pdt.sw2;
            dt.strStok = pdt.Stock;
            int nans = stock_pushd(ref dt);
            return nans;
        }
        // C#側ではこのメソッドを使用する(popd)
        public int popd(ref csData pdt)
        {
            dll_TYPESDATA dt = new dll_TYPESDATA();
            int nans = stock_popd(ref dt);
            pdt.message = dt.strMsg ;
            pdt.sw1 = dt.sw;
            pdt.sw2 = dt.sw2;
            pdt.Stock = dt.strStok;
            return nans;
        }
    }
}

  


Posted by のんきよね at 20:10Comments(0).NET(開発)

2008年07月06日

RAD Studio EXE配布

ついつい忘れてしまうEXE配布時、単体動作可能にするオプション設定。

1.プロジェクト  - オプションにて設定ダイアログを表示。

2.設定箇所は2つ
①リンカ   - リンク  - 動的RTL のチェックをはずす。

②パッケージ  - パッケージ再構築  - 実行時パッケージを使って構築のチェックをはずす。

  


Posted by のんきよね at 15:24Comments(0)RAD Studio

2008年07月05日

CString のメモリーリーク

VC6の話です。

Dumping objects ->
strcore.cpp(118) : {522} normal block .....

 Data: <  007 > 01 00 00 00 03 00 00 00 04 00 00 00
 30 30 37 00 
Object dump complete.
strcore.cpp(118) というメモリーリークの内容

何度か試して同じ522だったので、theAppのコンストラクタに、
_CrtSetBreakAlloc(522)を挿入しデバッグを行いました。

最初にとまったのは、_heap_alloc_dbgという関数でした。
これではわからないので、呼び出し元をたどります。

コールスタックで上にさかのぼっていくと、
strcore.cppの118行目に次のような記述があります。
 pData = (CStringData*) new 
        BYTE[sizeof(CStringData) + (nLen+1)*sizeof(TCHAR)];

さらにさかのぼると処理は、次のような所に到達しました。
 CString& CString::operator=(LPCTSTR lpsz)

この上をたどると、メモリーリークしている所に到達しました。
該当箇所は、ただ単純に CString型 = char*型している所でした。。。


CString型は扱いが厄介に感じます。

そこで、こうすればメモリーリークになるのではと
考えている事を書きたいと思います。
(注)もちろん私の勝手な見解です。根拠はありません。

1.CString型の関数を作った時。
  CString hoge()等、関数の型にした時、発生した覚えがあります。
  [対応]基本的に作らないようにしています。

2.スレッドを利用している時。
  スレッドの終了のタイミングと関連があると感じています。
  [対応]スレッド内のローカル変数や引数で渡したCString型のものは、
   スレッドが終わる前に[変数名].Empty() でクリアします。


3.クラスメソッドや構造体でCString型変数を再設定する時。
   パラメータ設定用メソッドと実行メソッドを別にしたクラスで、
  設定メソッドにCString型の変数を渡していた場合や、
  構造体内のCString型変数に対して、繰り返し設定し使用した場合。
  [対応]設定前に、[変数名].Empty()を行い、再設定します。


基本的にメモリーリークが増えなければ良いという考えもあると思います。
でも、、気持ち悪いので調べて納得して結論を出すべきと思います。  


Posted by のんきよね at 22:16Comments(0)C++