BlueSkym

BlueSkym

BlueSkymの部屋

Amebaでブログを始めよう!

■malloc()
new_buffer = (char *)malloc((size_t)new_size);
if (new_buffer == NULL) {
return buffer;
}
buffer_size = malloc_usable_size(buffer);
if (memcpy((void *)new_buffer,(void *)buffer, (size_t)buffer_size) == NULL) {
free(new_buffer);
return buffer;
}
free(buffer);
buffer = new_buffer;

■realloc()
new_buffer = (char *)realloc((void *)buffer, (size_t)new_size);
if (new_buffer == NULL) {
return buffer;
}
buffer = new_buffer;

:;;;:+*+:;;;:+*+:;;;:+*+:;;;:+*+:;;;:+*+

WindowsのOpenSSLで自己証明書の作成方法を記載します。

WindowsにOpenSSLをインストールして、環境変数を設定します。
・OpenSSLの環境変数を設定
・マイコンピュータのプロパティで、詳細設定タブを開き、環境設定ボタンを押します。
  pathにc:\OpenSSL\binを設定します。
 ・システム環境変数の新規ボタンを押し、以下の内容で設定します。
  変数名:OPENSSL_CONF
  値:C:\OpenSSL\bin\openssl.cnf

OpenSSLで自己証明書を作成します。
・秘密鍵(server.key)の作成
 openssl genrsaコマンドで秘密鍵を作成します。

 > openssl genrsa -aes256 1024 > server.key
  Loading 'screen' into random state - done
  Generating RSA private key, 1024 bit long modulus
  .................................................................++++++
  .............++++++
  unable to write 'random state'
  e is 65537 (0x10001)
  Enter pass phrase:[パスフレーズを入力]
  Verifying - Enter pass phrase:[パスフレーズを入力]

 引数
  genrsa
   RSA形式の秘密鍵を作成
  -aes256
   256ビットの AES 方法で暗号化
  1024
   1024バイトの鍵

  ※その他の引数は、openssl genrsa /? で確認ください。

・公開鍵(server.csr)の作成
 openssl reqコマンドで公開鍵を作成します。

 > openssl req -new -key server.key > server.csr
 Enter pass phrase for server.key:[パスフレーズを入力]
 Loading 'screen' into random state - done
 You are about to be asked to enter information that will be incorporated
 into your certificate request.
 What you are about to enter is what is called a Distinguished Name or a DN.
 There are quite a few fields but you can leave some blank
 For some fields there will be a default value,
 If you enter '.', the field will be left blank.
 -----
 Country Name (2 letter code) [AU]:JP
 State or Province Name (full name) [Some-State]:
 Locality Name (eg, city) []:
 Organization Name (eg, company) [Internet Widgits Pty Ltd]:
 Organizational Unit Name (eg, section) []:
 Common Name (e.g. server FQDN or YOUR name) []:sample.com
 Email Address []:

 Please enter the following 'extra' attributes
 to be sent with your certificate request
 A challenge password []:
 An optional company name []:

 引数
  req
   CSRファイルを作成
  -new
   新規にCSRを作成
  -key 秘密鍵ファイル
   秘密鍵のファイル名を指定

 入力
  Country Name (2 letter code) [AU]:
   ※国名:半角大文字で JP と入力し、[Enter]キーを押します。
  State or Province Name (full name) [Some-State]:
   ※都道府県名:都道府県名をローマ字表記で入力し、[Enter]キーを押します。
  Locality Name (eg, city) []:
   ※市町村名:市区町村名をローマ字表記で入力し、[Enter]キーを押します。
  Organization Name (eg, company) [Internet Widgits Pty Ltd]:
   ※組織名:会社名・団体名などを入力し、[Enter]キーを押します。
  Organizational Unit Name (eg, section) []:
   ※部門名:部門名・部署名などを入力し、[Enter]キーを押します。
  Common Name (e.g. server FQDN or YOUR name) []:sample.com
   ※サイトの名前:Webサイト名(SSL接続の際のURL:FQDN)を入力し、[Enter]キーを押します。
   ※IPアドレスで運用する場合は IP アドレスを入力。
   ※ワイルドカード自己署名証明書も作成できる。例:*.sample.com
  Email Address []:
   ※メールアドレス:メールアドレスを入力し、[Enter]キーを押します。(空欄でもよい)
  A challenge password []:
   ※証明書を破棄する時に必要になるパスワード:パスワードを入力し、[Enter]キーを押します。(空欄でもよい)
  An optional company name []:
   ※別の組織名の入力:フレンドリ名を入力し、[Enter]キーを押します。(空欄でもよい)

・デジタル証明書(server.crt)の作成
 openssl reqコマンドでデジタル証明書を作成します。
 ※SSL 通信には CA(Certification Authority, 認証局)が発行した証明書が必要だが、ここでは、自分自身でデジタル証明書(server.crt)作成する。

 > openssl x509 -in server.csr -days 365 -req -signkey server.key > server.crt
 Loading 'screen' into random state - done
 Signature ok
 subject=/C=JP/ST=Some-State/O=Internet Widgits Pty Ltd/CN=sample.com
 Getting Private key
 Enter pass phrase for server.key:[パスフレーズを入力]
 unable to write 'random state'

 引数
  x509
   X.509 形式のデジタル証明書を作成
  -in CSRファイル
   CSR ファイル名を指定
  -days 日数
   証明書の有効期限を指定
  -req
   入力ファイルがCSRファイルであることを指定
  -signkey 秘密鍵ファイル
   自己証明書作成時に使用するオプション。秘密鍵ファイルを指定する。

証明書をApacheに設定します。
・Apacheの設定
 httpd-ssl.confまたはssl.confにデジタル証明書と秘密鍵を指定する。

 httpd-ssl.confファイル
 
  …
 SSLCertificateFile "C:/.../conf/server.crt"
 SSLCertificateKeyFile "C:/.../conf/server.key"
  …
 


※Apache 起動時にパスフレーズの入力を求められます。
 これを省略するには、秘密鍵をあらかじめ復号化しておき、復号化したファイルを使用するようにする。
 次の手順で復号化します。

 > ren server.key server.key_bak
 > openssl rsa -in server.key_bak > server.key
 Enter pass phrase for server.key_bak:[パスフレーズを入力]
 writing RSA key

:;;;:+*+:;;;:+*+:;;;:+*+:;;;:+*+:;;;:+*+
グラフィックボードには映像出力インタフェースの規格として、DVI-I(Digital Visual Interface-Integrated)、HDMI(High-Definition Multimedia Interface)、DisplayPortなどが存在します。珍しい規格を発見しました。
それが、DMS-59です。
グラフィックボードにはDMS-59端子があり、その端子からDVI端子×2変換ケーブルを接続することで、DVI端子でのマルチディスプレイを実現します。

DMS-59のグラフィックボード一覧


参考にしたグラフィックの記事

。。+゚゚。。+゚゚。。+゚゚。。+゚゚。。+゚゚。。+゚゚

    LPTSTR   lpBuffer = NULL;
    DWORD    nSize = 1024, nByte, nOrgByte, dwRet;

    while(1) {
        nByte = nSize * sizeof(TCHAR);
        if (lpBuffer == NULL) {

            lpBuffer = (LPTSTR)GlobalAlloc(GPTR, nByte);
            if (lpBuffer == NULL) {
                brak;
                /* ERR */
            }

        } else {
            LPTSTR lpBuffer2;

            lpBuffer2 = (LPTSTR)GlobalAlloc(GPTR, nByte);
            if (lpBuffer2 == NULL) {
                GlobaleFree(lpBuffer);
                lpBuffer = NULL;
                break;
                /* ERR */
            }

            nOrgByte = GlobalSize(lpBuffer);
            if (nOrgByte > nByte) {
                CopyMemory(lpBuffer2, lpBuffer, nByte);
            } else {
                CopyMemory(lpBuffer2, lpBuffer, nOrgByte);
            }

            GlobalFree(lpBuffer);
            lpBuffer = lpBuffer2;
        }

        dwRet = GetPrivateProfileSectionNames(lpBuffer, nSize, lpFile);
        if (dwRet == (nSize - 2)) {
            nSize += 1024;
        } else {
            break;
        }
    }
:;;;:+*+:;;;:+*+:;;;:+*+:;;;:+*+:;;;:+*+

    DWORD nSize=1024, dwRe;
    while(1) {
        try {
            lpBuffer = new TCHAR[nSize];
        } catch (std:bad_alloc&) {
            /*ERR*/
        }
        dwRe = GetPrivateProfileSectionNames(lpBuffer, nSize, lpFile);
        if(dwRe < nSize - 2) {
            break;
        }
        nSize += 1024;
        delete[] lpBuffer;
    }

:;;;:+*+:;;;:+*+:;;;:+*+:;;;:+*+:;;;:+*+

・‥…━━━☆・‥…━━━☆・‥…━━━☆
if (D->Snameisname == target)
{
---
}
for (t = D; t; t = t->n)
{
if (t->Sno == TDno)
if (t->Dname == TSName)
if (t->Dnameisname != target)
break;
}
if (!t)
{
---
}
削除:tS
---
・‥…━━━☆・‥…━━━☆・‥…━━━☆
for (t = S; t; t = t->n)
{
if (t->Sno == TSno)
if (t->Dnameisname == target)
break;
}
if (!t)
{
---
}
for (t = D; t; t = t->n)
{
if (t->Sno == TDno)
if (t->Dnameisname == target)
break;
}
if (!t)
{
---
}
終了:tS
・‥…━━━☆・‥…━━━☆・‥…━━━☆

■TrustedInstaller権限を持ったファイルの削除

1.管理者でコマンドプロンプトを起動し、「takeown/f 削除したいファイルのパス」を入力
2.削除したいファイルを右クリックしプロパティを開く
3.[セキュリティ]タブ→[編集]→Administratorsを選択し、[フルコントロール]にチェック

■TrustedInstaller権限の追加

1.[セキュリティ]タブからユーザー追加で NT SERVICE\TrustedInstaller を入力

c言語で文字列の後方一致の例を示す。

#include <stdio.h>
#include <sys/types.h>
#include <string.h>
#include <stdlib.h>
#include <wchar.h>

wchar_t * wcsrstr(wchar_t *s, wchar_t *f);

void main(int argc, char *argv[])
{
    wchar_t *target;
    wchar_t *target2;
    size_t len;
    wchar_t *p;

    target = (wchar_t *)malloc(256);
    if (argc > 1) {
        mbstowcs(target, argv[1], strlen(argv[1]));
    } else {
        wcscpy(target, L"Target (Target )(1970/1/1)");
    }

    // 前方一致
    p = wcsstr(target, L"Target ");
    if (p != target) {    // if (wcsncmp(terget, L"Target ", 7))と同じ
        wprintf(L"Not Found. wcsstr\n");
        return;
    }

    target2 = p + 7;
    len = wcslen(target2);   
    if ((len - 1) <= 0 || *(target2 + len - 1) != L')') {
        wprintf(L"Not target2\n");
        return;
    }

    // 後方一致
    p = wcsrstr(target2, L"(");
    if (!p) {
        wprintf(L"Not Found. wcsrstr\n");
        return;
    }
    *p = '\0';
    wprintf(L"%ls\n", target2);   
}

wchar_t * wcsrstr(wchar_t *s, wchar_t *f)
{
    size_t slen = wcslen(s);
    size_t flen = wcslen(f);
    wchar_t *p;

    if (slen < flen) {
        return NULL;
    }

    for (p = s + slen - flen; p >= s; p--) {
        if (wcsncmp(p, f, flen) != 0) {
            continue;
        }
        return p;
    }
    return NULL;
}

Alt+Tabキーでウィンドウ切り替えのカスタマイズについて示す。

■Aeroプレビュー無効でカスタマイズ
Alt+Tabで表示しているアイコンを一定時間同じアイコンを選択しているとき、
そのアイコンのウィンドウが前面に出てくるのを無効にする方法。

1.「コントロールパネル」-「システム」をクリック。
2.「システムの詳細設定」-「詳細設定」-「パフォーマンス設定」-「カスタム」の
  「Aero プレビューを有効にする」のチェックを外す。

■レジストリでカスタマイズ
Alt+Tabで表示するデザインをWindows XP風にする方法。

1.レジストリを起動。
2.「HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer」に
  「AltTabSettings」という DWORD32 値のエントリを作成し「1」を入力。
 
■■視覚効果
レジストリでカスタマイズしたのち、おすすめの有効にしていた方が良い視覚効果。(無効)はお好みで。
・Windows内のアニメーションコントロールと要素 – (無効)
・ウィンドウとボタンに視覚スタイルを使用する – 有効
・ウィンドウを最大化や最小化するときにアニメーションで表示する – (無効)
・コンボボックスをスライドして開く – (無効)
・スクリーンフォントの縁を滑らかにする – 有効
・デスクトップコンポジションを有効にする – 有効
・透明感を有効にする – (無効)
 
その他の項目は無効にしていた方が良いが、(有効)はお好みで。
・アイコンの代わりに縮小版を表示する – (有効)
・デスクトップのアイコン名に影を付ける – (有効)
・ドラッグ中にウィンドウの内容を表示する – (有効)

■備考
Alt+Tabで表示しているアイコンを選択して前面に出てくるまでの時間を変更する方法。

1.レジストリを起動。
2.「HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\AltTab」に
  「LivePreview_ms」という DWORD32 値のエントリを作成し、値を単位msで入力。
  ※最大値は、3000ms(3秒)。

。。+゚゚。。+゚゚。。+゚゚。。+゚゚。。+゚゚。。+゚゚

Windows 7 「デザインの詳細」のデフォルト値を記載します。
なお、”→”印はWindowsXP相当の値です。

指定する部分(I)

フォント(F)

サイズ(Z)

サイズ(E)

アイコン

メイリオ→MS UI Gothic

32→16

9

アイコンの間隔(横)

68→53

アクティブタイトルバー

メイリオ→MS UI Gothic

21→18

9

タイトルのボタン

21→18

パレットタイトル

メイリオ→MS UI Gothic

20→14

9

メニュー

メイリオ→MS UI Gothic

20→18

9

選択項目

メイリオ→MS UI Gothic

20→18

9

非アクティブタイトルバー

MS UI Gothic

21→18

9

:;;;:+*+:;;;:+*+:;;;:+*+:;;;:+*+:;;;:+*+

Windows 7 で Quick Launch を復活させるには、次の通りです。

【手順】
1.タスクバーを右クリックし、[ツールバー]-[新規ツールバー]をクリック。
2.フォルダーを選択するウィンドで、フォルダー「%appdata%\Microsoft\Internet Explorer\Quick Launch」を入力。
3.通知領域の左側に「Quick Launch」という文字が現れます。
4.タスクバーを右クリックし、[タスクバーを固定する]のチェックを外します。
5.「Quick Lunch」をスタートボタンの右隣へドラックして移動します。
6.「Quick Lunch」を右クリックをし、[ボタン名の表示]と[タイトルの表示]のチェックを外します。

:;;;:+*+:;;;:+*+:;;;:+*+:;;;:+*+:;;;:+*+