C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >>
■22577  Re[1]: ソースが出てこない
□投稿者/ ゆりか -(2008/07/27(Sun) 02:46:13)
    この説明文をください。涙

    #include <stdio.h> // printf使用
    #include <stdlib.h> // rand, srand使用
    #include <time.h> // time使用
    #include <conio.h> // getch使用
    #include <math.h> // 三角関数の使用

    long double num;

    void ramdam_figeur(void);
    void sin_wave(void);
    void cos_wave(void);
    void tan_wave(void);
    void arcsin_wave(void);
    void arccos_wave(void);
    void arctan_wave(void);
    void log_wave(void);
    void log10_wave(void);
    void sinh_wave(void);
    void cosh_wave(void);
    void tanh_wave(void);
    void modf_change(double x);

    // 乱数の生成テスト(数値が1を超えるので使用不可)
    void randam_figeur(void)
    {
    long i,j;
    int x[44039];

    j = 44039 * 8;
    // 乱数の seed 値のセット
    srand((unsigned) time(NULL));

    // 100個の乱数を生成して出力
    for (i=0; i<j; i++) {
    int n = rand();
    x[i] = n;

    printf("%d %d\n", x[i],i);
    }

    // if (gecth()) return;
    }

    void main(void)
    {
    //randam_figeur();
    //sin_wave();
    //cos_wave();
    //tan_wave();
    //arcsin_wave();
    //arccos_wave();
    //arctan_wave();
    //log10_wave();
    //log_wave();
    //sinh_wave();
    //cosh_wave();
    //tanh_wave();
    }

    //ピッチ角18°毎にsin波の数値を求める関数
    void sin_wave(void)
    {
    int a;
    long double b;

    for(a=1; a<21; a++ )
    {
    double c;
    c = 18.0 * a;
    b = sin ( c * 3.14159 / 180 );
    printf("%f\n", b);
    }
    }

    //ピッチ角18°毎にcos波の数値を求める関数
    void cos_wave(void)
    {
    int a;
    long double b;

    for(a=1; a<21; a++ )
    {
    double c;
    c = 18.0 * a;
    b = cos ( c * 3.14159 / 180 );
    printf("%f\n", b );
    }
    }

    //ピッチ角18°毎にtan波の数値を求める関数(数値が1を超えるので使用不可)
    void tan_wave(void)
    {
    int a;
    long double b;

    for(a=1; a<21; a++)
    {
    double c;
    c = 18.0 * a;
    b = tan ( c * 3.14159 /180 );
    printf("%f\n", b );
    }
    }

    //ピッチ角18°毎にarc sin波の数値を求める関数(数値が1を超えるので使用不可)
    void arcsin_wave(void)
    {
    int a;
    long double b;

    for(a=1; a<21; a++)
    {
    double c;
    c = 18.0 * a;
    b = asin ( c * 3.14159 /180 );
    printf("%f\n", b );
    }
    }

    //ピッチ角18°毎にarc cos波の数値を求める関数(数値が1を超えるので使用不可)
    void arccos_wave(void)
    {
    int a;
    long double b;

    for(a=1; a<21; a++)
    {
    double c;
    c = 18.0 * a;
    b = acos ( c * 3.14159 /180 );
    printf("%f\n", b );
    }
    }

    //ピッチ角18°毎にarc tan波の数値を求める関数(数値が1を超えるので使用不可)
    void arctan_wave(void)
    {
    int a;
    long double b;

    for(a=1; a<21; a++)
    {
    double c;
    c = 18.0 * a;
    b = atan ( c * 3.14159 /180 );
    printf("%f\n", b );
    }
    }

    //整数値の常用対数値を求める関数(数値が1を超えるので使用不可)
    void log10_wave(void)
    {
    double a;
    long double b;

    for(a=1; a<50; a++)
    {
    b = log10 ( a );
    printf("%f\n", b );
    }
    }
    //整数値の対数値を求める関数(数値が1を超えるので使用不可)
    void log_wave(void)
    {
    double a;
    long double b;

    for(a=1; a<50; a++)
    {
    b = log ( a );
    printf("%f\n", b );
    }
    }
    //ピッチ角18°毎にhyponic sin波の数値を求める関数(数値が1を超えるので使用不可)
    void sinh_wave(void)
    {
    int a;
    long double b;

    for(a=1; a<21; a++)
    {
    double c;
    c = 18.0 * a;
    b = sinh ( c * 3.14159 /180 );
    printf("%f\n", b );
    }
    }
    //ピッチ角18°毎にhyponic cos波の数値を求める関数(数値が1を超えるので使用不可)
    void cosh_wave(void)
    {
    int a;
    long double b;

    for(a=1; a<21; a++)
    {
    double c;
    c = 18.0 * a;
    b = cosh ( c * 3.14159 /180 );
    modf_change(b);

    printf("%f\n", b );
    }
    }
    //ピッチ角18°毎にhyponic tan波の数値を求める関数
    void tanh_wave(void)
    {
    int a;
    long double b;

    for(a=1; a<21; a++)
    {
    double c;
    c = 18.0 * a;
    b = tanh ( c * 3.14159 /180 );
    printf("%f\n", b );
    }
    }

    //計算結果の少数部の引き抜き
    void modf_change(double x)
    {
    double jp;
    double modf(double x, double *jp);

    num = x;
    }

    /*
    void mod_main(double x)
    {
    double num;
    for(;;)
    {
    if(x > 10000)
    x = x -10000;
    else if(10000 > x > 1000)
    x = x - 1000;
    else if(1000 > x > 100)
    x = x -100;
    else if(100 > x > 10)
    x = x - 10;
    else if(10 > x > 1)
    x = x - 1;
    else if(1 > x)
    break;
    }
    }
記事No.21671 のレス /過去ログ42より / 関連記事表示
削除チェック/

■22681  ページフォルトについて
□投稿者/ セイン -(2008/07/29(Tue) 17:10:32)

    分類:[C/C++] 

    いつもお世話になっています。
    BMPファイルを読み込み処理をするアプリを作っているのですが、
    以下のソースを実行すると、ページフォルトの値が、newを行うたびに
    少しずつ上昇していき、処理が遅くなり、
    最終的にはnewができないところまで行ってしまいます。

    unsigned char* pBuffer = new unsigned char[1000000];
    delete[] pBuffer;

    このページフォルトの値を開放したり、
    ページフォルトの値を上げないようにnewすることは可能でしょうか?
    よろしくお願いします。
親記事 /過去ログ43より / 関連記事表示
削除チェック/

■22690  Re[2]: ページフォルトについて
□投稿者/ セイン -(2008/07/29(Tue) 18:40:57)
    やはりそうですか^^;
    ↓これを小分けでnewする方法ってあるのでしょうか?
    10000ずつぐらいnewした結果をpBufferに持たすことって
    可能ですか?

    unsigned char* pBuffer = new unsigned char[1000000];
    delete[] pBuffer;
記事No.22681 のレス /過去ログ43より / 関連記事表示
削除チェック/

■23549  Re[5]: Thread.Sleepについて
□投稿者/ ともいま -(2008/08/18(Mon) 15:39:48)
    επιστημη様、早速の回答有難う御座います。

    No23547 (επιστημη さん) に返信
    >>このループ処理で上位PCにウォッチドッグコマンドを送信しているのですが、
    >>送信している上位PCが5秒以上ウォッチドッグコマンドを受信できないと
    >>異常警報が発生する仕様なので、
    >
    > 番犬に餌をやるだけの簡単なお仕事なら
    >
    > 「Sleep(1000)にしておいて、2回に1回餌をやる」
    >
    > で十分じゃないかしら。
    >
    Sleep(1000)も試したのですが、やっぱりこの時も4秒近く制御が戻らない時がありました。
    その他に、Sleep(4000)の場合ですと、6秒近く制御が戻らない時があり、
    Sleep(10000)にすると必ず10秒で制御が戻っています。
記事No.23524 のレス /過去ログ44より / 関連記事表示
削除チェック/

■23554  Re[4]: Thread.Sleepについて
□投稿者/ れい -(2008/08/18(Mon) 16:03:52)
    No23544 (ともいま さん) に返信
    > コンマ何秒のズレは仕方ないのですが、指定秒数の倍近く(数秒単位)制御が戻らないなんてことは
    > あるのでしょうか?

    しょっちゅうあってもおかしくないです。
    仕様を検討しなおすしかないですね。

    Real TimeなLinuxとかが安くていいのでは。

    > Sleep(10000)にすると必ず10秒で制御が戻っています。

    これも、時と場合によりけり。
    10秒は戻ってこないことしか保証できないです。
記事No.23524 のレス /過去ログ44より / 関連記事表示
削除チェック/

■25306  Re[13]: シェアウェアで金儲けは「悪」か。
□投稿者/ れい -(2008/09/17(Wed) 14:24:46)
    No25288 (じゅで さん) に返信
    > なぜなら、ユーザ側からは、コストが見えないから、とんでもない金額に設定される
    > 可能性があるからです。

    そうですよね。

    どんな商品でも、
    消費者側はリターンを考えて「このくらいの値段なら役に立つ」と、購入するかを決めるだけで、
    普通は「初期コストが〜で材料費が〜で、だから値段が〜くらいなのは妥当」とか考えたりしませんよね。

    商品製造者側は初期コストと材料費とかを考えて「このくらいの値段なら利益がでる」と決めますが。

    やっぱり問題なのは「無限の非劣化コピー」ができることですよねぇ。
    数が裁けるならいくらでも0に近づく…。

    質の高いソフトほどたくさん利用されるので、値段が安くても開発費に見合うようになるなら…

    ・値段が安いほど質の高いソフトである。
    ・なので「0円」のソフトは「10000円」のソフトよりも質が高い。
    ・なので消費者は「0円」であることを要求する。

    という論理はどうでしょう。

    もちろん嘘ですが。
記事No.25208 のレス /過去ログ47より / 関連記事表示
削除チェック/

■25941  VBscriptを使った単位換算の方法
□投稿者/ WOW -(2008/09/28(Sun) 16:53:11)

    分類:[VBScript] 

    http://www5b.biglobe.ne.jp/~fji/
    ここのソフトではVBscriptを使用して、自分で関数を定義することが出来るのですが、
    この機能を使って、入力した値を10000なら100k、1000000なら1Mみたいな感じで単位を変更する機能を付けたいのですが
    どうすれば良いでしょうか?

    特に文字列の表示の仕方が分かりません。

    お願い致します。
親記事 /過去ログ48より / 関連記事表示
削除チェック/

■26896  ThreadPoolに溜まっている各スレッド全体の完了
□投稿者/ 正規表現 -(2008/10/22(Wed) 16:47:07)

    分類:[C#] 

    「ThreadPoolに溜まっている各スレッド全体の完了待ち」の方法を教えて下さい。
    /*
    * 環境 VS2008 FW3.5
    */
    using System;
    using System.Threading;

    public class TaskInfo {
    public string sBoilerplate;
    public int iValue;

    public TaskInfo( string sText_ , int oNumber_ ) {
    sBoilerplate = sText_;
    iValue = oNumber_;
    }
    }

    public class Example {
    public static void Main() {
    const int iNumbOfTask = 100000;
    TaskInfo[] oTasks = new TaskInfo[iNumbOfTask];
    WaitCallback[] oWCall = new WaitCallback[iNumbOfTask];
    int iWorkerThreads;
    int iPortThreads;

    for ( int i= 0 ; i < oTasks.Length ; i++ ) {
    oTasks[i] = new TaskInfo("data = " , i);
    oWCall[i] = new WaitCallback(ThreadProc);
    }
    ThreadPool.GetMaxThreads(out iWorkerThreads , out iPortThreads);
    Console.WriteLine("A : " + iWorkerThreads.ToString() + " : " + iPortThreads.ToString());
    ThreadPool.SetMaxThreads(4 , 4);
    ThreadPool.GetMaxThreads(out iWorkerThreads , out iPortThreads);
    Console.WriteLine("B : " + iWorkerThreads.ToString() + " : " + iPortThreads.ToString());
    for ( int i= 0 ; i < oTasks.Length ; i++ ) {
    for ( ; ; ) {
    try {
    ThreadPool.QueueUserWorkItem(oWCall[i] , oTasks[i]);
    break;
    } catch ( Exception e ) {
    Thread.Sleep(1000);
    }
    }
    }
    /*
    ThreadPool に 溜まっている 各スレッドの全体の完了待ち
    の方法が書かれているサイトを教えて下さい。
    */
    Thread.Sleep(10000);
    ThreadPool.GetMaxThreads(out iWorkerThreads , out iPortThreads);
    Console.WriteLine("C : " + iWorkerThreads.ToString() + " : " + iPortThreads.ToString());
    Console.WriteLine("Main thread exits.");
    }

    static void ThreadProc( Object oStateInfo_ ) {
    Thread.Sleep(1000);
    TaskInfo oTInfo = (TaskInfo)oStateInfo_;
    Console.WriteLine(oTInfo.sBoilerplate + oTInfo.iValue.ToString());
    }
    }
親記事 /過去ログ49より / 関連記事表示
削除チェック/

■26966  Re[1]: ThreadPoolに溜まっている各スレッド全体の完了
□投稿者/ 倉田 有大 -(2008/10/24(Fri) 01:57:14)
    No26896 (正規表現 さん) に返信
    > 「ThreadPoolに溜まっている各スレッド全体の完了待ち」の方法を教えて下さい。
    > /*
    > * 環境 VS2008 FW3.5
    > */
    > using System;
    > using System.Threading;
    >
    > public class TaskInfo {
    > public string sBoilerplate;
    > public int iValue;
    >
    > public TaskInfo( string sText_ , int oNumber_ ) {
    > sBoilerplate = sText_;
    > iValue = oNumber_;
    > }
    > }
    >
    > public class Example {
    > public static void Main() {
    > const int iNumbOfTask = 100000;
    > TaskInfo[] oTasks = new TaskInfo[iNumbOfTask];
    > WaitCallback[] oWCall = new WaitCallback[iNumbOfTask];
    > int iWorkerThreads;
    > int iPortThreads;
    >
    > for ( int i= 0 ; i < oTasks.Length ; i++ ) {
    > oTasks[i] = new TaskInfo("data = " , i);
    > oWCall[i] = new WaitCallback(ThreadProc);
    > }
    > ThreadPool.GetMaxThreads(out iWorkerThreads , out iPortThreads);
    > Console.WriteLine("A : " + iWorkerThreads.ToString() + " : " + iPortThreads.ToString());
    > ThreadPool.SetMaxThreads(4 , 4);
    > ThreadPool.GetMaxThreads(out iWorkerThreads , out iPortThreads);
    > Console.WriteLine("B : " + iWorkerThreads.ToString() + " : " + iPortThreads.ToString());
    > for ( int i= 0 ; i < oTasks.Length ; i++ ) {
    > for ( ; ; ) {
    > try {
    > ThreadPool.QueueUserWorkItem(oWCall[i] , oTasks[i]);
    > break;
    > } catch ( Exception e ) {
    > Thread.Sleep(1000);
    > }
    > }
    > }
    > /*
    > ThreadPool に 溜まっている 各スレッドの全体の完了待ち
    > の方法が書かれているサイトを教えて下さい。
    > */
    > Thread.Sleep(10000);
    > ThreadPool.GetMaxThreads(out iWorkerThreads , out iPortThreads);
    > Console.WriteLine("C : " + iWorkerThreads.ToString() + " : " + iPortThreads.ToString());
    > Console.WriteLine("Main thread exits.");
    > }
    >
    > static void ThreadProc( Object oStateInfo_ ) {
    > Thread.Sleep(1000);
    > TaskInfo oTInfo = (TaskInfo)oStateInfo_;
    > Console.WriteLine(oTInfo.sBoilerplate + oTInfo.iValue.ToString());
    > }
    > }

    スレッドが終了するたびにイベント送って確認かな。
    なんか他に方法もありそうですが。
記事No.26896 のレス /過去ログ49より / 関連記事表示
削除チェック/

■28051  Re[1]: ネットワーク上の端末のメモリ監視
□投稿者/ 魔界の仮面弁士 -(2008/11/19(Wed) 11:02:31)
    No28038 (ひろこ さん) に返信
    >  ・ネットワーク上にある端末の特定のサービスの再起動
    
    サーバー名="hoge"、サービス名="W32Time" だとした場合、
    「PowerShell でよければ」下記の 3 行で再起動できました。
    
    ------
    (Get-WmiObject -computer hoge Win32_Service -Filter "Name='W32Time'").StopService()
    Start-Sleep -m 10000    # 10000ミリ秒待機
    (Get-WmiObject -computer hoge Win32_Service -Filter "Name='W32Time'").StartService()
    ------
    
    Restart-Service というコマンドレットもあるのですが、
    リモートに接続できないようなので、WMI を利用しています。
    
    
    上記の PowerShell コマンドと同様のことを C# で処理するとなると、たとえばこんな感じ。
    
    using System;
    using System.Management;
    
    class Class1
    {
        static void Main()
        {
            string serverName = "hoge";
            string serviceName = "W32Time";
    
            string wql = string.Format(
                "SELECT * FROM Win32_Service WHERE Name = '{0}'",
                serviceName.Replace(@"\", @"\\"));
    
            ManagementObjectSearcher searcher = new ManagementObjectSearcher(
                @"\\" + serverName + @"\root\cimv2", wql);
            foreach (ManagementObject o in searcher.Get())
            {
                // http://msdn.microsoft.com/en-us/library/aa393673.aspx
                uint resultStop = (uint)o.InvokeMethod("StopService", new object[] { });
                Console.WriteLine("StopService:{0}", resultStop);
            }
            Console.WriteLine("10秒待機");
            System.Threading.Thread.Sleep(10000);
            foreach (ManagementObject o in searcher.Get())
            {
                // http://msdn.microsoft.com/en-us/library/aa393660.aspx
                uint resultStart = (uint)o.InvokeMethod("StartService", new object[] { });
                Console.WriteLine("StartService:{0}", resultStart);
            }
        }
    }
    
    
    >  ・ネットワーク上にある端末の特定のプロセスが使用しているメモリを監視
    こちらは WMI のイベント監視にて、Win32_Process クラスの WorkingSetSize プロパティを
    参照するようにすれば良いかも。
    
    
    # ってもたもたと書いているうちに、いろいろと回答が付いてる…。
記事No.28038 のレス /過去ログ51より / 関連記事表示
削除チェック/

■28198  ガベージコレクションについて
□投稿者/ nori -(2008/11/21(Fri) 00:27:02)

    分類:[.NET 全般] 

    public Form()
    {
       InitializeComponent();

       System.Timers.Timer timer = new System.Timers.Timer(100000);
       timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
       timer.AutoReset = false;
       timer.Start();
    }

    void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
    {
       何らかの処理
    }

    FormのコンストラクタでSystem.Timers.Timerを作ります。(Formのメンバー変数として持ちません)
    この場合、Formが生きてる限りガベージコレクションによりTimerオブジェクトが回収される事は無いのでしょうか?
    (生きてるFormのtimer_Elapsedと紐付いているので)

    また、上記で回収されないとした場合、timerオブジェクトが回収対象となるタイミングは
    Formが誰からも参照されなくなった時でしょうか?
親記事 /過去ログ51より / 関連記事表示
削除チェック/

■28281  Re[8]: ガベージコレクションについて
□投稿者/ .SHO -(2008/11/22(Sat) 18:31:18)
    上記ソースを確認のためにタイマーを 100000 ではなく 1000 にし
    AutoReset を true にして、1時間近く動かし続けましたが
    何の問題もなく動き続けてます。

    ガーベジコレクタの動きを細かく検証したことはないですが
    たぶん timer.Start(); をかけた時点で、タイマー使用中みたいな
    フラグが立って回収されないんじゃないでしょうか?

    そうじゃないと、C#って相当注意深くガーベジコレクタの動きを
    考慮していないと、まともなプログラムなんて作れないです。

    そもそも、ガーベジコレクタの動きなんて意識せずにコーディング
    できなければ意味がないです。
記事No.28198 のレス /過去ログ51より / 関連記事表示
削除チェック/

■28283  Re[9]: ガベージコレクションについて
□投稿者/ オショウ -(2008/11/22(Sat) 20:19:44)
    2008/11/22(Sat) 20:23:10 編集(投稿者)

    > 上記ソースを確認のためにタイマーを 100000 ではなく 1000 にし
    > AutoReset を true にして、1時間近く動かし続けましたが
    > 何の問題もなく動き続けてます。

      ガーベージの動作ですが・・・
      別件で・・・
      未検証ですが、1秒なら回収されませんでした。
      90秒〜120秒アクセスしなければ回収される
      頻度が高くなった記憶があります。

      因みに、VB6時代のActiveXをフォームに貼って一度
      動作させた後、長時間(2分以上)アクセスしない
      とフォームに貼ってあるActiveXすら回収されてし
      まいエラーとなったことがあります。

      原因を追究する時間が当時無かったので、タイマー
      中にダミーの空アクセスを行なうようにして回収さ
      れないように回避させたことがありました。

    ● 今回のケースで・・・
      100秒間隔のタイマーと言う設定は仕様的に可能でも
      問題が出ることが多分にあるので、1〜10秒とし
      てイベント内で回数をカウントし、所定回数イベン
      トが発生したら本来の処理を行なう。と言う風にす
      るのが最善かと。

      1秒間隔なら100回カウント
      10秒間隔なら10回カウント

      異論はあると思いますが、私はそうやって長時間の
      タイマー間隔の動作を保全しています。

      あと変数の宣言ですが、Auto変数はどうかと・・・
      クラス内でPrivate とかで宣言した方がよいと思い
      ますが。

      スレッドや別インスタンス空間からのアクセスがあ
      るならPivate Shared ですか・・・(VBの場合)

      AutoResetに影響があるかについては未確認です。
      あしからず。

    以上。
記事No.28198 のレス /過去ログ51より / 関連記事表示
削除チェック/

■28284  Re[9]: ガベージコレクションについて
□投稿者/ 渋木宏明(ひどり) -(2008/11/22(Sat) 20:42:32)
>
    > 上記ソースを確認のためにタイマーを 100000 ではなく 1000 にし
    > AutoReset を true にして、1時間近く動かし続けましたが
    > 何の問題もなく動き続けてます。

    であっても、何かを証明したことにはならないでよね。

    > そもそも、ガーベジコレクタの動きなんて意識せずにコーディング
    > できなければ意味がないです。

    それは大きな誤解です。

    ガベージコレクタが管理しているのは、あくまで「マネージヒープ上に確保されたメモリ」だけです。

    ウィンドウやファイル、タイマ等々、OSが管理しているリソースを使用する際は、それらの寿命管理はプログラマの責任で行うものなのです。
記事No.28198 のレス /過去ログ51より / 関連記事表示
削除チェック/

■28354  Re[10]: ガベージコレクションについて
□投稿者/ .SHO -(2008/11/25(Tue) 10:10:02)
    No28284 (渋木宏明(ひどり) さん) に返信

    >>上記ソースを確認のためにタイマーを 100000 ではなく 1000 にし
    >>AutoReset を true にして、1時間近く動かし続けましたが
    >>何の問題もなく動き続けてます。
    >
    > であっても、何かを証明したことにはならないでよね。

    完全な証明でないことはわかってますが、1時間も動かせば必要十分な証明だと思います。
    100秒、200秒の世界の話をしているわけですから。

    もし、GCによって回収されたこと(回収されないこと)を確実に判断する方法があるなら
    是非、ご教授願います。
記事No.28198 のレス /過去ログ51より / 関連記事表示
削除チェック/

■28305  Re[2]: 【速度】 IF文とSELECT文 VB.NET
□投稿者/ やじゅ -(2008/11/24(Mon) 01:34:53)
>
    ストップウォッチクラスで計測してみるといいかな
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    
            Dim sw As New Stopwatch
            Dim a As Integer = 9
            Dim b As Integer = 0
    
            sw.Start()
            For i As Integer = 0 To 10000000
                If a = 9 Then
                    b = 1
                End If
    
                'Select Case a
                '    Case 9 : b = 1
                'End Select
            Next
            sw.Stop()
    
            Dim sec As Double = sw.ElapsedTicks / Stopwatch.Frequency
            Console.WriteLine(sec)
    
        End Sub
    
記事No.28302 のレス /過去ログ52より / 関連記事表示
削除チェック/

■28525  WebRequestクラスのリクセストについて
□投稿者/ .NET初心者 -(2008/11/27(Thu) 13:25:35)

    分類:[ASP.NET (VB)] 

    OS:WINDOWS2003
    言語:ASP.NET(VB)
    .NET Framework1.1

    初めまして。
    いつも参考にさせて頂いております。

    ある商品詳細画面を作成しております。
    仕様上、この画面が表示される際に関連商品(10商品)の画像をキャッシュさせる必要があります。
    この画像を画像作成URLにパラメータを付与して動的に作成しております。
    以下該当個所のスクリプトを記載いたします。

    ***************************************************
    '関連商品のURLを作成する
    Call CreateCacheImageURL(CachePoductURL())

    '関連商品画像をキャッシュさせる
    For i = 0 TO CachePoductURL.Length - 1
     req = WebRequest.Create(CachePoductURL(i))
     req.Timeout = 10000
     res = req.GetResponse()
     res.Close
    Next
    ***************************************************

    上記の方法で、関連商品の画像がキャッシュされるのですが、画像作成URLからの
    戻りに3秒ほどかかってしまうため、この個所で30秒ほどまたされてしまいます。
    こちらをなんとか解消出来ないかと考えております。

    ※上記の個所を高速で処理して(画像作成URLにリクエスト投げて戻りは見ない?)画面表示後に
    徐々にキャッシュされていくイメージです。

    どなたかご教示頂ければ幸いです。

    宜しくお願い致します。
親記事 /過去ログ52より / 関連記事表示
削除チェック/

■28559  Re[1]: WebRequestクラスのリクセストについて
□投稿者/ Jitta on the way -(2008/11/27(Thu) 19:03:14)
    No28525 (.NET初心者 さん) に返信
    > OS:WINDOWS2003
    > 言語:ASP.NET(VB)
    > .NET Framework1.1
    >
    > 初めまして。
    > いつも参考にさせて頂いております。
    >
    > ある商品詳細画面を作成しております。
    > 仕様上、この画面が表示される際に関連商品(10商品)の画像をキャッシュさせる必要があります。
    > この画像を画像作成URLにパラメータを付与して動的に作成しております。
    > 以下該当個所のスクリプトを記載いたします。
    >
    > ***************************************************
    > '関連商品のURLを作成する
    > Call CreateCacheImageURL(CachePoductURL())
    >
    > '関連商品画像をキャッシュさせる
    > For i = 0 TO CachePoductURL.Length - 1
    >  req = WebRequest.Create(CachePoductURL(i))
    >  req.Timeout = 10000
    >  res = req.GetResponse()
    >  res.Close
    > Next
    > ***************************************************
    >
    > 上記の方法で、関連商品の画像がキャッシュされるのですが、画像作成URLからの
    > 戻りに3秒ほどかかってしまうため、この個所で30秒ほどまたされてしまいます。
    > こちらをなんとか解消出来ないかと考えております。
    >
    > ※上記の個所を高速で処理して(画像作成URLにリクエスト投げて戻りは見ない?)画面表示後に
    > 徐々にキャッシュされていくイメージです。
    >
    > どなたかご教示頂ければ幸いです。
    >
    > 宜しくお願い致します。


    えっと、まず、システムの構成から教えていただけないでしょうか。とても無駄なことをしているように思うのですが、システムの構成上、仕方のないことなのかどうか、判断が出来ません。
記事No.28525 のレス /過去ログ52より / 関連記事表示
削除チェック/

■28572  Re[6]: バイナリコード内の16進数での文字列検索
□投稿者/ ま -(2008/11/27(Thu) 23:49:59)
    1バイトは8ビット
    8ビットは255までの正数値が表現できる。
    16進数は、4ビットで表現する。0〜9、A〜Fまでの16通りだから。
    2進数にすると、0000 が 0 で、1111 が F になる。
    1バイト=8ビットだから、0000 0000 は 00 で、0011 0000 は文字の 0 。

    char[] hexstring = "0123456789ABCDEF";
    のhexstring の配列インデックスに 0011 0000 をそれぞれ指定すれば16進数値を2桁の文字列
    に表現できそうですよね?

    で、1バイトは8ビットであり、文字の 0 は、2進数に直すと、00110000 だから、16進数の値は
    4ビットで表現することを考慮すると、00110000 を4ビットずつに分割しなければならない。

    1バイトの上4ビットは、下4ビットの16倍だから、16で割れば上4ビットが取り出せます。
    逆に、下4ビットは、16で割った余りですね。

    unsigned char a = 00110000b;
    unsigned char div = a / 16;
    unsigned char mod = a % 16;
    っていう表現で16進数の値を上下4ビットずつに分割できました。
    ここで見慣れない unsigned ってのが出てきました。符号拡張されないようにするために unsigned
    ってのを指定します。Jitta さんが指摘している通り、1バイトは正数値では、-128 〜 127 の値を
    取りますが、符号無しで考えると、0 〜 255 の値を取ります。
    div と mod は 0 〜 15 の値を取るので、さきに提示した hexstring のインデックスに当てはめると
    char upperNibble = hexstring[div];
    char lowerNibble = hexstring[mod];
    で、upperNibble に 3 が、lowerNibble に 0 が取得出来ました。

    こんな面倒なことやらんでも printf って便利な奴があるから勉強してこいつで変換してあげればOKよ。
    但し現状、右も左も分かってないみたいだから、コーディング遅れてもいいから、1週間入門本買って
    勉強した方がいいよ。今のまま皆さんに教えてもらったところでまた躓くのがオチ。

    次回躓いて教えを請う時はもう少し発展的なスレッド展開を目指した方がいいと思いません?
    何を言っているのか意味不明、調べ方もわからんし、適当な教材も無いし、上司に聞くに聞けないし
    ・・・なんて泥沼は卒業しましょ。いくら粘っても模範解答は出てこないです。この雰囲気だと。

    別に STL なんて使わなくても出来るし。STL って言われてもピンとも来ないでしょう?
    (dogatena さんを批判しているわけではありません。)

    ただのC言語さえ意味不明なのにね、さらにSTLだのboost だの言われてもね〜、でしょ?

記事No.28511 のレス /過去ログ52より / 関連記事表示
削除チェック/

■28578  Re[7]: バイナリコード内の16進数での文字列検索
□投稿者/ あんどちん -(2008/11/28(Fri) 00:40:17)

    No28572 (ま さん) に返信
    > unsigned char a = 00110000b;
    これ通りますか?
    unsigned char a = 0x30; /* 00011 0000 */
    の方が無難かと
記事No.28511 のレス /過去ログ52より / 関連記事表示
削除チェック/

<前の20件 | 次の20件>

<< 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >>

ヒット件数が多いので過去ログ1〜103 までの検索結果 / 過去ログ104からさらに検索→

パスワード/

- Child Tree -