プログラミング

2009年11月23日 (月)

サルにもわかる・・・・

メモ・・・

サルにもわかるRSA暗号
http://www.maitou.gr.jp/rsa/

サルにもわかる正規表現入門

http://www.mnet.ne.jp/~nakama/

サルでもわかる高校英語教室
http://eigokyousitsu.nomaki.jp/

| | コメント (0) | トラックバック (0)
|

2009年9月24日 (木)

[linux][GNU] stdio.hが見つからない

gcc でコンパイル時に"stdio.hが見つからない"のエラーとなる

場合は、libc6-devをインストールする。

| | コメント (0) | トラックバック (0)
|

2009年8月24日 (月)

WindowsでOpenGLの拡張機能を使用する方法

[Windows][VC6][OpenGL][GLUT][GLEW]
WindowsでOpenGLの拡張機能を使用する方法
OpenGL+GLUT+GLEWの導入

[動機]
    OpenGL1.5のAPIを使えるようにする。
    redbook(version2)のexampleをWindows上で動作可能にする。
[前提]
    Windowsの標準で直接使用できるOpenGL APIはOpenGL 1.1まで。
    Windowsで拡張機能を使用するには、間接的にwglGetProcAddress を使用する。
    OpenGL 1.5用のgl.hやDLLは、ネット上には転がっていない。
    GLEWを導入すると、拡張機能が使えるらしい。
[環境]
    Windows XP (SP2)
    Visual Studio 6.0
[導入]
    ・GLUTのインストール
        - http://www.xmission.com/~nate/glut.htmlからバイナリを入手。
        - glut.h を C:\Program Files\Microsoft Visual Studio/VC98/include/GL にコピー。
        - glut32.lib を ~/VC98/libにコピー。
        - glut32.dll を C:\WINDOWS\system32 にコピー。
    ・GLEWのインストール
        - http://glew.sourceforge.net/ からバイナリを入手。
        - glew.h と wglew.h を C:\Program Files\Microsoft Visual Studio/VC98/include/GL にコピー。
        - glew32.lib と glew32s.lib を ~/VC98/libにコピー。
        - bin\glew32.dll を C:\WINDOWS\system32 にコピー。
    ・コードの追加
        - ヘッダファイルのインクルード
            #pragma comment(lib, "glew32.lib")
            #include <GL/glew.h>
            #include <GL/glut.h>
        - 初期化処理
            int
            main(int argc, char** argv)
            {
                glutInit(&argc, argv) ;
                glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB) ;
                glutInitWindowSize(640, 480) ;
                glutCreateWindow(argv[0]) ;
                glewInit() ;
                    :           :
            }
[補足]
    - 関数名やラベルにARBが付いていても付いていなくても使える。

参考


| | コメント (0) | トラックバック (0)
|

2008年11月19日 (水)

[Tcl/Tk] tk_getOpenFileでデスクトップを参照すると落ちる

症状

tk_getOpenFileでデスクトップを表示し、
一旦キャンセルもしくはファイル選択した後、
再びtk_getOpenFileを実行して操作を行うと、
Wish85自体が落ちる。

運用環境

WindowsXP SP3
(ただし、同環境、同バージョンでも症状が起きないPCあり)

バージョン

ActiveTcl 8.5.2~8.5.5で同じ

手順

デスクトップに新規フォルダを作成

Wish85を起動

tk_getOpenFileを実行

ファイルダイアログで、デスクトップに移動

新規フォルダにマウスカーソルを移動し、ポップアップを表示させる

ファイルダイアログをキャンセル

再びtk_getOpenFileを実行

同じく、新規フォルダにマウスカーソルを移動し、ポップアップを表示させる

Wish85自体が落ちる。

| | コメント (0) | トラックバック (0)
|

2008年1月18日 (金)

[WIN32] Links of Tips

ショートカットを作成するには

[SDK] デスクトップのパスを取得

10 行でズバリ !! セットアップ プログラムの作成

| | コメント (0) | トラックバック (0)
|

2008年1月14日 (月)

[Tcl/Tk] リストボックスの選択動作

あらかじめリストボックスのエントリを選択する方法

    .lb selection set 0

リストボックスの選択を解除する方法

    .lb selection clear 0 end

| | コメント (0) | トラックバック (0)
|

[Tcl/Tk][Windows] HTMLファイルを別アプリとして起動する方法。

execコマンドで直接HTMLファイルを指定すると、FireFoxがデフォルトアプリケーションの場合、開きません。(IEは未確認)
また、終了待ちとなるので、ブラウザを終了するまでアプリケーションは操作できなくなります。
以下の記述により、別アプリケーションとしてHTMLをブラウザで起動することができます。

    set helpCmd "cmd /C start index.html"
    set pipe [open "| $helpCmd" r]
    tkwait variable pipe
    close $pipe

| | コメント (0) | トラックバック (0)
|

2008年1月13日 (日)

[Tcl/Tk] \や空白を含む文字列をリストに追加

¥や空白が含まれる文字列を、lappendやlinsertでリストに追加すると、追加した文字列全体がリストになる。({}で括られる)

    set a {}
    set b "a\\b"
    a\b
    set c [linsert $a 0 $b]
    {a\\b}

空白や¥を含むファイル名を扱う場合に有効に働く。

| | コメント (0) | トラックバック (0)
|

2007年10月15日 (月)

[VC6][MFC][WIN32] 起動ファイル名の取得

    HINSTANCE hInst = AfxGetInstanceHandle() ;
    char path_buffer[MAX_PATH] ;
    ::GetModuleFileName( hInst, path_buffer, MAX_PATH ) ;

| | コメント (0) | トラックバック (0)
|

2007年10月12日 (金)

[VC6][MFC] unicodeからShiftJISへの変換

/*
* @brief  CComBSTR(unicode)からCString(shiftJIS)への文字列変換
* @param[in]  bstr  CComBSTR型の2バイトコード文字列
* @return  CString型マルチバイト文字列
* @par 解説
* 文字列を、ワイド文字からマルチバイトコードに変換します。
* VC6において、unicodeからshiftJISへ変換するのに使用します。
*/

CString
BSTRToMultiByte
(
    const CComBSTR &bstr
)
{
    CString s ;
    int len = ::WideCharToMultiByte(CP_THREAD_ACP, 0, bstr, -1, NULL, 0, NULL, NULL ) ;
    char *name = new char[len] ;
    ::WideCharToMultiByte(CP_THREAD_ACP, 0, bstr, bstr.Length()+1, name, len, NULL, NULL );
    s = name ;
    delete name ;
    return s ;
}

■マクロを使用

#include "atlbase.h"

CString
BSTRToMultiByte
(
    const CComBSTR &bstr
)
{
USES_CONVERSION;

    CString s = W2CA( bstr ) ;
    return s ;
}

| | コメント (0) | トラックバック (0)
|