2011年3月12日

GSL(GNU Scientific Library) in Visual studio 2008

1.安裝好visual studio 2008
2.下載好GSL安裝檔(gsl-1.8-src.exe),並安裝
http://gnuwin32.sourceforge.net/downlinks/gsl-src.php

3.C:\Program Files\GnuWin32\src\gsl\1.8\gsl-1.8\VC8底下,執行專案:libgsl.sln
4.libgsl要建置四次(右鍵-->建置),分別為Debug-DLL,Debug-StaticLib,Release-DLL,Release-StaticLib模式下(選擇上方工具列的下拉式選單即可)
5.install_libgsl專案右鍵-->建置,C槽底下就會出現編譯好的檔案,但lib bin是空的
6.修改install_libgsl右鍵中的屬性-->組態屬性-->建置事件-->建置前事件-->命令列,內容為


mkdir %LIBGSL_INSTALL_DIR%\bin
if exist .\..\libgsl\Debug-DLL\libgsl_d.dll copy .\..\libgsl\Debug-DLL\libgsl_d.dll %LIBGSL_INSTALL_DIR%\bin
if exist .\..\libgsl\Release-DLL\libgsl.dll copy .\..\libgsl\Release-DLL\libgsl.dll %LIBGSL_INSTALL_DIR%\bin
if exist .\..\libgslcblas\Debug-DLL\libgslcblas_d.dll copy .\..\libgslcblas\Debug-DLL\libgslcblas_d.dll %LIBGSL_INSTALL_DIR%\bin
if exist .\..\libgslcblas\Release-DLL\libgslcblas.dll copy .\..\libgslcblas\Release-DLL\libgslcblas.dll %LIBGSL_INSTALL_DIR%\bin
mkdir %LIBGSL_INSTALL_DIR%\lib
if exist .\..\libgsl\Debug-StaticLib\libgsl_d.lib copy .\..\libgsl\Debug-StaticLib\libgsl_d.lib %LIBGSL_INSTALL_DIR%\lib
if exist .\..\libgsl\Release-StaticLib\libgsl.lib copy .\..\libgsl\Release-StaticLib\libgsl.lib %LIBGSL_INSTALL_DIR%\lib
if exist .\..\libgslcblas\Debug-StaticLib\libgslcblas_d.lib copy .\..\libgslcblas\Debug-StaticLib\libgslcblas_d.lib %LIBGSL_INSTALL_DIR%\lib
if exist .\..\libgslcblas\Release-StaticLib\libgslcblas.lib copy .\..\libgslcblas\Release-StaticLib\libgslcblas.lib %LIBGSL_INSTALL_DIR%\lib
if exist .\..\libgsl\Debug-DLL\libgsl_dll_d.lib copy .\..\libgsl\Debug-DLL\libgsl_dll_d.lib %LIBGSL_INSTALL_DIR%\lib
if exist .\..\libgsl\Release-DLL\libgsl_dll.lib copy .\..\libgsl\Release-DLL\libgsl_dll.lib %LIBGSL_INSTALL_DIR%\lib
if exist .\..\libgslcblas\Debug-DLL\libgslcblas_dll_d.lib copy .\..\libgslcblas\Debug-DLL\libgslcblas_dll_d.lib %LIBGSL_INSTALL_DIR%\lib
if exist .\..\libgslcblas\Release-DLL\libgslcblas_dll.lib copy .\..\libgslcblas\Release-DLL\libgslcblas_dll.lib %LIBGSL_INSTALL_DIR%\lib

7.install_libgsl專案右鍵-->建置,C槽底下就會出現編譯好的lib bin

8.vs2008中,開啟專案empty-->工具-->選項-->專案和方案
可執行檔加入:C:\libgsl-1.8\bin
include檔案加入:C:\libgsl-1.8\include
程式庫檔加入:C:\libgsl-1.8\lib



9.專案右鍵-->屬性-->連結器-->輸入-->其他相依性加入:libgsl_d.lib libgslcblas_d.lib

10.
範例1:

#include <gsl/gsl_math.h>
#include <iostream>
using namespace std;

int main()
{
double x = 5.0;
double y = gsl_pow_int(x,2);

cout << x << " " << y;
system("pause");

}


程式碼範例2

#include <iostream>
using namespace std;
#include <stdio.h>
#include <gsl/gsl_errno.h>
#include <gsl/gsl_math.h>
#include <gsl/gsl_roots.h>
    
struct quadratic_params
{
    double a, b, c;
};
    
double quadratic (double x, void *params);
double quadratic_deriv (double x, void *params);
void quadratic_fdf (double x, void *params, double *y, double *dy);

double quadratic (double x, void *params)
{
    struct quadratic_params *p = (struct quadratic_params *) params;
    
    double a = p->a;
    double b = p->b;
    double c = p->c;
    
    return (a * x + b) * x + c;
}
    
double quadratic_deriv (double x, void *params)
{
    struct quadratic_params *p = (struct quadratic_params *) params;
    
    double a = p->a;
    double b = p->b;
    double c = p->c;
    
    return 2.0 * a * x + b;
}
    
void quadratic_fdf (double x, void *params, double *y, double *dy)
{
    struct quadratic_params *p = (struct quadratic_params *) params;
    
    double a = p->a;
    double b = p->b;
    double c = p->c;
    
    *y = (a * x + b) * x + c;
    *dy = 2.0 * a * x + b;
}
    
int main (void)
{
    struct quadratic_params params = {1.0, 0.0, -5.0};
    double r = 0, r_expected = sqrt (5.0);


//////////// ROOT BRACKETING ////////////////////////////
    gsl_function F;  
    F.function = &quadratic;
    F.params = &params;

const gsl_root_fsolver_type *T = gsl_root_fsolver_brent;
    gsl_root_fsolver *s = gsl_root_fsolver_alloc (T);
    double x_lo = 0.0, x_hi = 5.0;
    gsl_root_fsolver_set (s, &F, x_lo, x_hi);
    
    printf ("using %s method\n", gsl_root_fsolver_name (s));
    
    printf ("%5s [%9s, %9s] %9s %10s %9s\n",
            "iter", "lower", "upper", "root",
            "err", "err(est)");
    
int status;
    int iter = 0, max_iter = 100;
  
    do {
        iter++;
        status = gsl_root_fsolver_iterate (s);
        r = gsl_root_fsolver_root (s);
        x_lo = gsl_root_fsolver_x_lower (s);
        x_hi = gsl_root_fsolver_x_upper (s);
        status = gsl_root_test_interval (x_lo, x_hi,
                                         0, 0.001);
    
        if (status == GSL_SUCCESS)
            printf ("Converged:\n");
    
        printf ("%5d [%.7f, %.7f] %.7f %+.7f %.7f\n",
                   iter, x_lo, x_hi,
                   r, r - r_expected,
                   x_hi - x_lo);
    } while (status == GSL_CONTINUE && iter < max_iter);
    
    gsl_root_fsolver_free (s);
    
//////////// ROOT POLISHING ////////////////////////////
    gsl_function_fdf Fdf;  
Fdf.f = &quadratic;
Fdf.df = &quadratic_deriv;
    Fdf.fdf = &quadratic_fdf;
    Fdf.params = &params;

const gsl_root_fdfsolver_type *Tdf = gsl_root_fdfsolver_steffenson;
    gsl_root_fdfsolver *sdf = gsl_root_fdfsolver_alloc (Tdf);
    gsl_root_fdfsolver_set (sdf, &Fdf, 1.0);
    
    printf ("using %s method\n", gsl_root_fdfsolver_name (sdf));
    
    printf ("%5s %9s %10s\n",
            "iter", "root", "err");
    
iter = 0;
    do {
        iter++;
        status = gsl_root_fdfsolver_iterate (sdf);
        r = gsl_root_fdfsolver_root (sdf);
        status = gsl_root_test_residual (quadratic (r,&params), 0.001);
    
        if (status == GSL_SUCCESS)
            printf ("Converged:\n");
    
        printf ("%5d %.7f %+.7f\n",
                   iter, r, r - r_expected);
                
} while (status == GSL_CONTINUE && iter < max_iter);
     system("pause");

    gsl_root_fdfsolver_free (sdf);

return status;

}

2011年3月4日

Apache的設定、微調及除錯

http://tcliou.wordpress.com/2007/07/08/apache%E7%9A%84%E8%A8%AD%E5%AE%9A%E3%80%81%E5%BE%AE%E8%AA%BF%E5%8F%8A%E9%99%A4%E9%8C%AF/

Apache 基本功 httpd.conf在哪裡?

http://www.hkcode.com/linux-bsd-notes/381


各個 Linux Distro 及 control panels 會將 Apache 的設定檔放到不同位置,另外自行編譯及安裝 Apache,預設值會將設定檔放在 /etc/httpd,但編譯時可以指定到其他的位置及檔案名稱。(預設的設定檔名為 httpd.conf)
以下是幾個找出 Apache 設定檔的方法:
1. httpd 指令:
httpd -v | grep HTTPD_ROOT
2. find 及 locate 指令:
因為用 find 要等一段時間,所以建議在使用 find 指令前先試試用 locate 指令:
locate httpd.conf
如果找不到的話,便要用 find 指令來找:
find / -name ‘httpd.conf’ -print
3. cPanel 或 Plesk Control Panel
如果是使用 cPanel 或 Plesk Control Panel,會放到 /home/username/ 或 /var/www/vhosts/ 目錄。

2011年2月14日

virtual box in fedora 14

reference
http://linux-cisco.blogspot.com/2008/01/fedora-8virtualbox.html

>rpm -ivh VirtualBox-4.0-4.0.2_69518_fedora14-1.i686.rpm


錯誤:相依性偵測失敗:
    libQtCore.so.4 被 VirtualBox-4.0-4.0.2_69518_fedora14-1.i686 所需要
    libQtGui.so.4 被 VirtualBox-4.0-4.0.2_69518_fedora14-1.i686 所需要
    libQtNetwork.so.4 被 VirtualBox-4.0-4.0.2_69518_fedora14-1.i686 所需要
    libQtOpenGL.so.4 被 VirtualBox-4.0-4.0.2_69518_fedora14-1.i686 所需要
    libSDL-1.2.so.0 被 VirtualBox-4.0-4.0.2_69518_fedora14-1.i686 所需要





download "oracle_vbox.asc" key for virtualbox:
http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc

>su - apt-key add oracle_vbox.asc


否則會出現類似警告
warning: VirtualBox-3.2-3.2.6_63112_fedora13-1.i686.rpm: Header V4 DSA/SHA1 Signature, key ID 98ab5139: NOKEY



update fedora:
>yum update

install Qt:
>yum install qt
>yum install qt-devel

錯誤:相依性偵測失敗:
    libSDL-1.2.so.0 被 VirtualBox-4.0-4.0.2_69518_fedora14-1.i686 所需要


yum install SDL


錯誤:can't create transaction lock on /var/lib/rpm/.rpm.lock (沒有此一檔案或目錄)
只要用最高權限安裝就不會出現了



DKMS packeage install:
http://linuxhub.net/2009/08/install-dkms-virtualbox-driver-not-installed-error-after-updating-to-new-linux-kernel/

>yum install dkms


error:
ref:http://webcache.googleusercontent.com/search?q=cache:79uWE8G1FjsJ:fedoraforum.org/forum/showthread.php%3Ft%3D255773+fedora+virtualbox+Error!+Your+kernel+source+for+kernel+2.6.35.6-45.fc14.i686+cannot+be+found+at+/lib/modules/2.6.35.6-45.fc14.i686/build+or+/lib/modules/2.6.35.6-45.fc14.i686/source.&cd=2&hl=zh-TW&ct=clnk&gl=tw&client=firefox-a&source=www.google.com.tw


fedora virtualbox Error! Your kernel source for kernel 2.6.35.6-45.fc14.i686 cannot be found at /lib/modules/2.6.35.6-45.fc14.i686/build or /lib/modules/2.6.35.6-45.fc14.i686/source.

>yum install kernel-devel kernel-headers gcc
>yum groupinstall 'Development Tools'
>/etc/init.d/vboxdrv setup

 fedora13成功範例
http://forums.fedoraforum.org/showthread.php?t=245638

Ferora安裝flash player

 參考資料
http://www.wretch.cc/blog/Likao/24774290

原本在 Linux 視窗介面下安裝插件是一件很容易的事~
只要雙擊 .rpm 檔就可以自動安裝了~
但是不知道為什麼,用這樣子的方式安裝插件包~
常常會莫名其妙的安裝失敗~
在上網搜尋過後~
發現還是以輸入指令的方式安裝比較"穩"~!!


安裝步驟如下:

1.去 Adobe 的官網下載 flash player 的 .rpm 檔。

2.打開終端機 cd 到該 .rpm 檔的路徑底下,輸入以下指令:

shell>> su -c "yum localinstall --nogpg *.rpm"

然後輸入 root 的密碼照著提示操作就安裝完成了。



[jim@jimfedora download]$ su -c "yum localinstall --nogpg *.rpm"




Loaded plugins: langpacks, presto, refresh-packagekit
Adding zh_TW to language list
Setting up Local Package Process
Examining flash-plugin-10.2.152.27-release.i386.rpm: flash-plugin-10.2.152.27-release.i386
Marking flash-plugin-10.2.152.27-release.i386.rpm to be installed
fedora/metalink                                          |  13 kB     00:00    
fedora                                                   | 4.3 kB     00:00    
fedora/primary_db                                        |  11 MB     00:02    
updates/metalink                                         | 4.1 kB     00:00    
updates                                                  | 4.7 kB     00:00    
updates/primary_db                                       | 3.5 MB     00:36    
Resolving Dependencies
--> Running transaction check
---> Package flash-plugin.i386 0:10.2.152.27-release set to be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package  Arch Version             Repository                              Size
================================================================================
Installing:
 flash-plugin
          i386 10.2.152.27-release /flash-plugin-10.2.152.27-release.i386  12 M

Transaction Summary
================================================================================
Install       1 Package(s)

Total size: 12 M
Installed size: 12 M
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : flash-plugin-10.2.152.27-release.i386                    1/1

Installed:
  flash-plugin.i386 0:10.2.152.27-release                                      

Complete!
[jim@jimfedora download]$

2010年12月19日

RTF(Rich Text Format)PPT大綱轉成WORD好用格式

富文字格式(Rich Text Format)即RTF格式,又稱多文本格式,是由微軟公司開發的跨平台文檔格式。大多數的文字處理軟體都能讀取和保存RTF文檔。

作為微軟公司的標準文件,早期外間需要數十美元向微軟付款,才能購買一本薄薄的RTF標準文件。不過隨著採用RTF格式標準的軟體愈來愈多,RTF格式也愈來愈普遍,微軟公司就把標準文件公開,放在網上供開發者下載。現時可供下載的各個RTF版本標準文件如下:

RTF 1.9.1 specification (March 2008)
RTF 1.8 specification (April 2004)
RTF 1.6 specification (May 1999)
RTF 1.5 specification (April 1997)
RTF 1.3 and 1.5 specifications
RTF 1.0 specification (June 1992)


支持RTF的軟體

WordPad(Microsoft Windows)/ TextEdit(Mac OS)
Microsoft Word
OpenOffice Writer
WPS
EIOffice

NO-CARRIER 網卡無法啟動

 工作時,由於想要啟動linux OS的網卡, 發現某張新設定的網卡一直無法啟動,就算下指令UP了,但是也沒有順利啟動 所以爬文後,想要確認該網卡的status, 發現某行為: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu...