2012年8月28日 星期二

VC++ VTK範例教學



VtkSDI範例動態教學:
Click me!!

VTK Include設定:
Configuration Properties > C/C++ > General > Additional Include Directories
C:\VTK\bin_5.10.0;C:\VTK\src_5.10.0\Common;C:\VTK\src_5.10.0\Filtering;C:\VTK\src_5.10.0\Graphics;C:\VTK\src_5.10.0\Hybrid;C:\VTK\src_5.10.0\Imaging;C:\VTK\src_5.10.0\IO;C:\VTK\src_5.10.0\Rendering;C:\VTK\src_5.10.0\Widgets

VTK Library設定:
Configuration Properties > Linker > General > Additional Library Directories
Release
C:\VTK\bin_5.10.0\bin\Release
Debug
C:\VTK\bin_5.10.0\bin\Debug

Configuration Properties > Linker > Input > Additional Dependencies
vtkCommon.lib;vtkFiltering.lib;vtkGraphics.lib;vtkHybrid.lib;vtkImaging.lib;vtkIO.lib;vtkjpeg.lib;vtkpng.lib;vtkRendering.lib;vtkzlib.lib

其他文獻:

VTK教學
http://vtkblog.blogspot.tw/

VTK-VC++安裝設定
http://www.cs.auckland.ac.nz/~jli023/vtk/BuildandinstallVTKbinaries.htm

STL Wiki範例
http://www.vtk.org/Wiki/VTK/Examples/Cxx/IO/WriteSTL

原始碼請見:
http://codeboxy.blogspot.tw/2012/08/VtkSDI.html

2012年8月27日 星期一

使用CMake建置VC++ VTK函式庫



詳細動態教學如下:
Click me!!

使用軟體:
Visual Studio 2010 VC10
cmake-2.8.9-win32-x86.zip
vtk-5.10.0.zip

使用路徑:
Sourse Folder
C:\VTK\src_5.10.0
Binaries Folder
C:\VTK\bin_5.10.0

備註事項:
1. Configure建不過可能是Visual Studio軟體沒更新

2012年8月23日 星期四

使用 OpenSSL 建立憑證 (Windows)



必須先安裝Apache,請參考這篇

首先切換到Apache的bin目錄:
cd /d C:\Apache24\bin

使用OpenSSL建立『server.key』私鑰檔案,並輸入自訂短密碼:
openssl genrsa -des3 -out server.key 2048

使用私鑰去建立『server.csr』憑證請求檔:
openssl req -new -key server.key -out server.csr -config ..\conf\openssl.cnf

在建立憑證請求檔時會詢問相關資訊,下面為參考設定範例:
Country Name (2 letter code) [AU]:TW
State or Province Name (full name) [Some-State]:Taiwan
Locality Name (eg, city) []:Chiayi Country
Organization Name (eg, company) [Internet Widgits Pty Ltd]:National Chung Cheng University
Organizational Unit Name (eg, section) []:CADCAM
Common Name (e.g. server FQDN or YOUR name) []:cad.me.ccu.edu.tw
Email Address []:ccuboxy@cad.me.ccu.edu.tw

使用憑證請求檔及私鑰檔去建立3650天的X.509格式憑證的CRT憑證檔:
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt

以上步驟完成後會得到共三個檔案『server.key』、『server.csr』、『server.crt』
請將三個檔案移駕到『C:\Apache24\conf』目錄下。

到『C:\Apache24\conf』打開『httpd.conf』檔案找到以下兩句並取消註解:
LoadModule ssl_module modules/mod_ssl.so
Include ./conf/extra/httpd-ssl.conf

到『C:\Apache24\conf\extra』打開『httpd-ssl.conf』檔案找到『SSLSessionCache』並註解掉:
#SSLSessionCache        "shmcb:c:/Apache24/logs/ssl_scache(512000)"

開啟瀏覽器進入『https://localhost/』測試是否成功。

完成。



不支援Win32的問題解決方法:
1、複製 server.key 為 server.key.org
2、對 server.key.org 解密 openssl rsa -in server.key.org -out server.key 輸入密碼解密成功
3、打開 httpd-ssl.conf 找到 SSLPassPhraseDialog builtin 在前面加上#

2012年8月20日 星期一

VTK ucb error problem



當使用Visual Studio 2008編譯VTK出現ucb錯誤時,可以打開這個檔案:
VTKSrc\Utilities\vtkhdf5\ConfigureChecks.cmake

把這行用#號給註解掉:
CHECK_LIBRARY_EXISTS_CONCAT ("ucb"    gethostname  H5_HAVE_LIBUCB)

後記:
初步得出的一個結果是,該錯誤似乎是會發生在Windows 7 64位元的環境下,使用Visual Studio 2008或2010版本也都可能發生,原因是找不到ucb.lib檔案。

FYI:
http://vtk.1045678.n5.nabble.com/Build-from-GIT-Master-Linker-errors-tp5429952p5454164.html

2012年8月14日 星期二

Windows Presentation Foundation (WPF)教學文獻



教學網站:
WPF Tutorial.net

比較使用XAML與標準程式碼的差異,
其實使用XAML就像是在寫HTML網頁,
簡單來說就是將設計與程式碼分開來 :)

XAML語法格式:
<StackPanel>
    <TextBlock Margin="20">Welcome to the World of XAML</TextBlock>
    <Button Margin="10" HorizontalAlignment="Right">OK</Button>
</StackPanel>

C#原始碼格式:
// Create the StackPanel
StackPanel stackPanel = new StackPanel();
this.Content = stackPanel;
 
// Create the TextBlock
TextBlock textBlock = new TextBlock();
textBlock.Margin = new Thickness(10);
textBlock.Text = "Welcome to the World of XAML";
stackPanel.Children.Add(textBlock);
 
// Create the Button
Button button = new Button();
button.Margin= new Thickness(20);
button.Content = "OK";
stackPanel.Children.Add(button);

由語法與程式碼就可明顯發現兩者的差異性,而其顯現的結果皆相同。

2012年8月13日 星期一

使用番茄高亮變數



說明:
啟用Visual Assist X(番茄)內的變數高亮功能方法。

CSharp (C#) 教學文獻

//Copyright (C) Microsoft Corporation.  All rights reserved.
// Hello3.cs
// arguments: A B C D
using System;

public class Hello3
{
    public static void Main(string[] args)
    {
        Console.WriteLine("Hello, World!");
        Console.WriteLine("You entered the following {0} command line arguments:", args.Length );
        for (int i=0; i < args.Length; i++)
        {
            Console.WriteLine("{0}", args[i]);
        }
    }
}

C#(CSharp)範例教學:
http://msdn.microsoft.com/zh-tw/library/9ys06tc9(v=vs.90)

範例下載:
http://code.msdn.microsoft.com/csharpsamples

後記:
這是Microsoft Developer Network(MSDN)上的中文教學。

2012年8月10日 星期五

建構Apache2.4.2+PHP5.4.5網際環境



詳細動態教學如下:
Click me!!

相關檔案來源:
httpd-2.4.2-win32-ssl_0.9.8.zip (Apache 2.4.2 Same as above, except build with OpenSSl 0.9.8x instead of 1.0.1c)
php-5.4.5-Win32-VC9-x86.zip (PHP 5.4 (5.4.5) VC9 x86 Thread Safe)(Old file)
php5apache2_4.dll-php-5.4-win32.zip (VC9 - PHP Handler modules for php 5.4)
vcredist_x86.exe (Microsoft Visual C++ 2010 可轉散發套件 (x86))

相關語法如下

批次啟動檔(Start.bat):
@echo off
bin\httpd.exe -k install -n "Apache2.4"
bin\httpd.exe -k start
start bin\ApacheMonitor.exe

批次停止檔(Stop.bat):
@echo off
bin\httpd.exe -k stop
bin\httpd.exe -k uninstall -n "Apache2.4"
TASKKILL /F /IM ApacheMonitor.exe

Apache設定檔(httpd.conf):
PHPIniDir "C:/PHP/"
LoadModule php5_module "C:/PHP/php5apache2_4.dll"
AddType application/x-httpd-php .php
DirectoryIndex index.phtml index.htm index.html index.php index.php3

PHP設定檔(php.ini):
extension_dir = "C:/PHP/ext"

PHPInfo程式(phpinfo.php):
<?php phpinfo() ?>

2012年8月8日 星期三

VS環境下好用的PHP開發工具VS.PHP



官方網站:PHP IDE for Visual Studio | Jcx.Software Corp.

簡  介:
VS.Php is a PHP IDE (integrated development environment) based on Visual Studio IDE. With VS.Php you can design, develop, debug and deploy PHP applications within the Visual Studio IDE. VS.Php key features are around providing rich PHP editor as well as Smarty editing capabilities. Also is the ability to debug PHP scripts locally as well as remotely.

簡單範例:
Click me!!

範例程式:
<?php
class MyClass
{
    public function hello() {
        for ($i = 0; $i < 10; $i++)
        {
            echo "Hello<br />";
        }
    }
}
$hello = new MyClass();
$hello->hello();
?>