2014年12月14日 星期日

如何快速拷貝 Windows Console 視窗的文字

      預設的情況下當你打開 Windows 中的 console 視窗你是無法選擇視窗中的一小段文字並且拷貝那段字串,你唯一能做的就是按滑鼠右鍵選擇「全選(S)」然後再按滑鼠右鍵拷貝所有文字,之後再貼到記事本最後再將你要的段落訊息拷貝出來。

      現在你只要啟動 console 的「快速編輯模式」你就可以透過按住滑鼠左鍵選取你要的文字後再按滑鼠右鍵就可以將該段落拷貝出來了。設定方式如下圖所示:

Step1:滑鼠右鍵->內容

Step2:選項頁面,將「快速編輯模式」勾選

       上面設定完後你就可以按住滑鼠左鍵選取你要的段落,然後滑鼠右鍵即可拷貝該文字段落。

2014年11月25日 星期二

Qt Displaying Windows


        今天在 Youtube 上面看到 Qt 的教學,跟著上面的影片實作 Dialog,但是在編譯時卻發生如下錯誤訊息:

LNK2019: unresolved external symbol *public: __thiscall MyDialog::MyDialog(class QWidget*)* (??0MyDialog@@QAE@PAVQWidget@@@Z) referenced in function *private: void __thiscall MainWindow::showDialog(void)* (?showDialog@MainWindow@@AAEXXZ)

       查看了該影片的討論串,發現 marcel rosen 遇到與我相同的問題且已經有解法,解決上面的問題請依照下列步驟執行即可:

  1. Build -> Clean all
  2. Build -> Run qmake
  3. Build -> Rebuild All

2014年11月24日 星期一

如何在 Windows 中建立 softlink

     在 Linux 中你可以透過 "ln -s ..." 來建立 symbolic link;在 Windows 中你可以透過 mklink 來建立 symbolic link。注意:如果你透過滑鼠右鍵執行 "建立捷徑(S)" 會在檔名後面加上 .lnk,ˇ但是透過 mklink 來建立捷徑並不會產生 .lnk 這樣的副檔名。所以對於應用程式來講可以跟操作一般的目錄是一樣的效果。

     另外,執行 mklink 必須有管理者的權限,否則執行時會出現 "您沒有足夠的權限可執行此操作。" 所以請 "以系統管理員身分執行 ... cmd " 如下圖所示:



Microsoft Windows [版本 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\Josh>mklink
建立符號連結。

MKLINK [[/D] | [/H] | [/J]] Link Target

        /D      建立目錄符號連結。預設是檔案符號連結。
        /H      建立永久連結而不是符號連結。
        /J      建立目錄連接。
        Link    指定新符號連結名稱。
        Target  指定新連結參照的路徑 (相對或絕對)。

C:\Users\Josh>


[Keyword]

  • Windows command line softlink

[參考鏈結]

無法啟動程式,因為您的電腦遺失 QtWidgetsd.dll...

        今天嘗試寫一個簡單的 Qt 應用程式編譯完後,透過 Qt Creator 執行程式並沒有發生任何問題,但是直接執行 exe 檔卻發生 "無法啟動程式,因為您的電腦遺失 QtWidgetsd.dll..." 如下圖所示:

        這個問題就如你開發 MFC 程式發布應用程式時是用 Dynamical Link 而非 Static Link,但是 Qt 要編譯成 static link 需要的步驟比較複雜且有 licensing 的問題 (請參考: Making the right licensing decision )。

        所以在開發階段解決這個問題最快的方式是將  DLL 所在的目錄加入到系統路徑中,以我的例子就是將 "C:\Qt\5.3\msvc2013\bin" 加入到 PATH 中即可。

        另外如果你想要查詢該程式所相依的 DLL 檔案有哪些,可以使用 Dependency Walker 工具來查看,如下所示:


        除了將 Qt DLL 檔案所在的目錄加入到 PATH 外,你可以自己手動拷貝所需的 DLL 檔案與執行檔相同的目錄下,透過 Dependency Walker 工具我只查到與 Qt 相關的 DLL 檔案有 Qt5Widgetsd.dll、libGLESv2d.dll、Qt5Cored.dll、Qt5Guid.dll、icuin52.dll、icuuc52.dll、icudt52.dll;但是當執行時卻出現下列錯誤訊息應用程式就被強迫關閉。


      經過實驗最後發現必須額外放入 libEGLd.dll 檔案才可以正常執行應用程式。

[參考鏈結]

2014年11月17日 星期一

"no JDK found – please set JAVA_HOME" while starting tomcat7


Solution 1 to make sure default-java exists underneath /usr/lib/jvm/ folder,if no, you can do something as follow:

ln -s /usr/lib/jvm/java-7-oracle /usr/lib/jvm/default-java

Solution 2 Add JAVA_HOME variable into /etc/default/tomcat7 file to specific JDK for tomcat7

sudo gedit /etc/default/tomcat7

Added JAVA_HOME variable

JAVA_HOME=/usr/lib/jvm/java-7-oracle

Reference:

2014年11月4日 星期二

Installing the APR based Apache Tomcat Native library on Ubuntu 12.04

05-Nov-2014 13:38:52.881 INFO [main] org.apache.catalina.core.AprLifecycleListener.init The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
05-Nov-2014 13:38:52.962 WARNING [main] org.apache.tomcat.util.digester.SetPropertiesRule.begin [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:colorado-webapp' did not find a matching property.


sudo apt-get install libtcnative-1


Due to Tomcat 7.0.55 requires libtcnative-1 1.1.30, you will see follow error message after restart the Tomcat server.

05-Nov-2014 14:02:03.109 SEVERE [main] org.apache.catalina.core.AprLifecycleListener.init An incompatible version 1.1.22 of the APR based Apache Tomcat Native library is installed, while Tomcat requires version 1.1.30


You can upgrade it with:

$ sudo add-apt-repository ppa:pharmgkb/trusty
$ sudo apt-get update
$ sudo apt-get upgrade libtcnative-1

References:
Tomcat APR native library not loaded *even* when present and configured
Tomcat native library update
Installing the APR-based Tomcat Native Library for Jira on Debian 7 (Updated)
Apache Tomcat Native Library Doc

Other Topics:
Specify JDK for tomcat7

Download
Apache Tomcat Native library

2014年11月3日 星期一

How to know which servlet and jsp version

Server info: <%= application.getServerInfo() %>
  
Servlet version: <%= application.getMajorVersion() %>.<%= application.getMinorVersion() %>
  
JSP version: <%= JspFactory.getDefaultFactory().getEngineInfo().getSpecificationVersion() %>
  
Java version: <%= System.getProperty("java.version") %>
  
Source from: how to know which servlet and jsp version

2014年10月4日 星期六

建立使用者自訂的 Android 裝置

        當透過 Android Virtual Device (AVD) Manager 建立 AVD 時,Device 只能選擇已內建好的裝置,如下圖所示:

        當這些內建裝置的解析度與硬體設定剛好符合你的需求時並沒有任何問題,但如果想要不一樣的設定;如解析度、記憶體大小、Keyboard...等等。這時你就必須自己制訂符合需求的 Android Device,建立的步驟如下:

  1. 開啟  Android Virtual Device (AVD) Manager 切換到 Device Definitions,選擇一個與你需求最接近的 Device後,按 Clone 按鈕,如下圖所示:(PS: 使用 ADT 23.0.4.1468518 按 Create Device... 按鈕並無法成功建立使用者自訂裝置)。

  2. 在 Clone Device 畫面,填入你所需的設定值,如下圖所示:

  3. 建立完成後,你會在 Device 清單畫面中看到你剛剛所定義的裝置,往後你就可以建立你剛剛所自訂的 Android 虛擬裝置。

        當你建立完自訂的 Android 裝置後,你可以在 ~/.android/devices.xml 檔案中找到你剛剛所建立的資訊。

自動產生Ant build script 檔案

假設你的專案存放在 C:\AndroidProject\Hello,在 console window 下,執行下列指令即可:

android update project –p .

另外如果你的專案含有 appcompat_v7 ,也必須到該目錄下執行上面的指令。

執行完指令後會在專案的資料夾內產生 build.xml 與 local.properties 兩個檔案。local.properties 的內容是設定 android SDK Home 的目錄,你可以自行修改指定到其他路徑下,如果你沒有特殊的需求,基本上都不需要去修改這些檔案。

之後你就可在C:\AndroidProject\Hello 目錄下,透過 ant 來編譯你的Android 專案了。範例如下:

ant clean release
ant clean debug

2014年9月28日 星期日

解決 Eclipse 執行時出現 "JVM terminated. Exit code=13" 的問題

   今天下載 Eclipse for J2EE 64 bit 版本後,在執行時卻出現下列畫面:


   最後發現原來我使用的 java 是 32 bits,而下載下來的 Eclipse 版本為 64 bits。Orz.

解決方法有二:
   1.重新下載 32 bits 的 Eclipse
   2.下載 64 bits JDK ,在 eclipse.ini 中設定 -vm 參數 (似乎只在你沒有設定 JAVA_HOME 才有用)

   因為在我的環境中不管怎麼設定 eclipse.ini 啟動時依舊是使用我 32 bits 的 JDK 版本,所以你可以再啟動 Eclipse 自己加上就可以順利啟動了,請參考下面指令:

~/bin/eclipse-j2ee-luna-64$ ./eclipse-j2ee -vm /home/joca/bin/jdk-8u20-linux-x64/bin

2014年9月22日 星期一

刪除目前目錄下所有檔案大小為 0 的檔案

根據情況來決定是否要加 sudo
    sudo find . -size 0 -delete

2014年8月28日 星期四

透過 Eclipse 設定 VM arguments

        之前在這篇文章中提到透過 Boloean.getBoolean("TRUE") 總是回傳 false, 是因為我們沒有設定額外的系統參數給 JVM,除了你可以在程式中透過 System.setProperty("TRUE", "TRUE"); 設定讓 getBoolean 方法回傳 true 外,你還可以自己透過在執行你的 Java 程式時設定,如下畫面:

        如果是使用 Eclipse IDE 來編譯/執行 你的 Java 程式,你可以透過 "Run Configurations..." 來設定你的 JVM 系統參數,設定方式如下圖示:

圖一

圖二
     範例程式如下:

 
package com.josh.demo;

public class GetBooleanDemo {
  public static void main(String[] args) {
   System.out.println("getBoolean(\"TRUE\") = " + Boolean.getBoolean("TRUE"));
   System.out.println("getBoolean(\"FALSE\") = " + Boolean.getBoolean("FALSE"));
   System.out.println("getBoolean(\"True\") = " + Boolean.getBoolean("True"));
   System.out.println("getBoolean(\"False\") = " + Boolean.getBoolean("False"));
 }
}

2014年7月20日 星期日

解決 Eclipse Graphical layout 無法顯示的問題

         建立一個簡單的 Android App 一開始 Graphical Layout 上面還有畫面,但是放了幾個 TextView與 EditText 後發現 Graphical Layout 竟然沒有畫面,而 Graphical Layout 提示執行 Eclipse 中的 Windows>Show View> Error Log,發現錯誤訊息為  "java.lang.NoSuchMethodError: java.lang.System.arraycopy([CI[CII)V ..." 上網查詢發現 "Android version to use when rendering layouts in Eclipse" 不可以選擇 Android 4.4W。
        剛剛稍微小試了一下,擺上  TextView 還可以正常顯示,一旦放上 EditText 就無法顯示了。下面圖示是設定的方式:

[參考文章]

[關鍵字]
  • java.lang.System.arraycopy([CI[CII)V

建立含有軌跡球(trackball) 的Android 模擬器

         在 Android Emulator 文章提到,我們可以透過按 F6 來啟動模擬器的 trackball mode,但如果你在建立模擬器時沒有將 input 設定為 trackball 則在按 F6 鍵後模擬器是不會出現 軌跡球讓你來操作。

         要建立含有軌跡球的 Android 模擬器,你可以先開啟 Android Virtual Device(AVD) Manager,在 Device Definitions 頁面中尋找已經有將 trackball 設定為 input 的 Device 或者你可以自己建立一個,這邊我找到 Nexus One by Google 已經有設定好了,請參考下面畫面:

     
          接下來切換到 Android Virtual Devices 頁面,按 "Create..." 按鈕,在Device 選項中選擇 "Nexus One by Google" 或者你自己建立的 Device。請參考下面圖示:


        其他選項依照之前建立的 Android 模擬器填入相關的資訊即可。當你啟動 Android 模擬器後,按 F6 便可進入 Trackball mode 再按一次 F6 便可離開 Trackball mode。當你在 Trackball mode 下你會發現 Android 模擬器的左上角會出現 Trackball,便可透過滑鼠來操作 Trackball。下面圖示顯示模擬器在 Trackball mode 的樣子。

2014年7月6日 星期日

android.support cannot be resolved ?

今天將 ApiDemos import 進來做編譯,發現 PrintBitmap.java 無法編譯,原來它使用了
"android.support.v4" 的 package。錯誤訊息如下圖所示:


要解決這個問題你可以先透過 "Android SDK Manager" 安裝  Extras >> Android Support Library。 如下圖所示:



之後 選擇該專案 >> 按右鍵 >> Properties >> Java Build Path >> Add External JARs...



 將 android-support-v4.jar 檔案加入即可,路徑如下: 
<Android SDK 安裝路徑>\extras\android\support\v4\android-support-v4.jar


在 support 資料夾下除了 v4 還有 v7 與 v13,如果又遇到相同的情況可以將其相對應使用到的 package 加入專案即可編譯。

[參考文章]

如何刪除 Eclipse 舊的 Workspace

     要移除舊的 Workspace 可以透過下面兩個方法:
  1. 手動修改 <Eclipse 安裝路徑>\configuration\.settings\org.eclipse.ui.ide.prefs 檔案,打開該檔案你會看到類似 RECENT_WORKSPACES = "...\workspace1\n\...\worspace2",將你不要的 WOrkspace 刪除即可。
  2. 透過 Eclipse 工具列 Preferences >> General >> Startup and Shutdown >> Workspaces,選擇你要移除的 Workspace,按 Remove 按鈕即可。如下圖所示:


     上面的第二個方法其實也是去修改 org.eclipse.ui.ide.prefs 檔案,所以建議透過第二個方式去移除比較省事,也不用去找檔案在哪之類的問題。: )

[參考文章]

2014年6月6日 星期五

Windows 7 在右鍵選單新增開啟到 DOS 視窗

        在 Windows 7 下要新增開起到 MS-DOS 視窗的方法,只需將在下面機碼路徑中的 Extended 機碼刪除或改名即可。

HKEY_CLASSES_ROOT->Directory->shell->cmd

        修改參考圖示如下:

        修改完後當你點選資料夾按滑鼠右鍵,會發現右鍵選單多了一個 "在此處開啟命令視窗(W)"的選項如下圖示所示:

        點選 "在此處開啟命令視窗(W)" 後就會開啟在該路徑資料夾的 MS-DOS 視窗,執行結果如下圖所示:

[參考鏈結]

Windows 7 內建的"問題步驟收錄程式"工具

      Windows 7 有一個內建的 "問題步驟收錄程式" 程式應用工具,可以記錄你點選了哪些視窗按了那些按鈕然後全螢幕的擷取畫面,還會將點選的地方 Highlight 起來;除了當你發生問題時,可以用這個方式來呈現你所執行每一個步驟以便讓電腦高手來了解到底哪裡出了錯誤外;似乎也可以用來當作電腦教學工具 : )

      但,我還是習慣自己擷取畫面、自己 Highlight :D。要執行該程式你只需要在 "搜尋程式及檔案" 的地方輸入 psr 即可。當你錄製完畢後程式會將結果壓縮成 zip 檔,該壓縮檔裡只有一個 *.mht 的檔案,然後可使用 IE 瀏覽器來檢視錄製的結果。
   
      下面圖示是該程式的執行畫面以及錄製結果的部分畫面:

[程式畫面]



[點選的地方會被 Highlight 起來]
   
[參考書籍]

  • 攻略一本通 Windows 7 

2014年6月1日 星期日

VituralBox 升級後 Client OS 只能瀏覽部分網站

       前些日子把 VituralBox 升級到 VirtualBox-4.3.12-93733-Win 版本後,原本安裝的 Windows XP 卻只能上 Google 網頁,而查詢出來的網站就是無法開啟,都是顯示 timeout 訊息;用 Host 電腦測試那些網站也都可以正常顯示。想說是不是 Client OS 出了啥問題,查了 Proxy 設定、試了 ipconfig/flushdns、連防毒軟體都移除了還是沒救。
       當下的想法是先重新安裝 新版VituralBox 如果不行在從新安裝舊版 VituralBox ,這樣還不行的話只好重新安裝新的 Client OS 試試看;好險重新安裝新版的 VituralBox 就解決問題了 ~ Lucky : )。


終於解決無法安裝公司 VPN 軟體的問題

        前些日子下定決心將家裡電腦從 Windows XP 升級到 Windows 7 後,想安裝公司的 VPN 軟體卻無法安裝成功;上禮拜想說問一下 IT 看看是甚麼問題? 結果得到一句「我裝都沒問題,一定是你們家電腦的問題」─ 當下真的超X的!! 起碼也問一下我裝的是哪一套作業系統、想一下有可能出了甚麼問題,丟了一句我也知道的事情,電腦就是有問題所以才會問你,IT 如果這麼好幹,冷北都想幹 IT 凸(-.-)凸。
       公司的 VPN 也做了太好,安裝時都不會有任何錯誤訊息,裝了老半天就是裝不起來,好險有看到安裝網頁有一個不顯眼的 "測試" 連結,重點手腳要袂,不然還點不到咧!!Orz...。點到測試的鏈結後終於跳出一個對話框 "應用程式已被安全設定值封鎖",終於有點眉目了;這不就是 Java 安全層次的問題嗎,所以只要把該網址加入到 "例外網站清單" 就可以解決這個問題了。
      不求 IT 人員一定要甚麼都知道也甚麼都能幫你解決任何問題,但基本的工作態度也應該要有吧,丟一句這麼不負責任的話,真是令人火大,如果電腦的問題都要員工自行解決,那公司何必請一個 IT 人員呢?

     Anyway, 如果你也遇到必須自行決解這樣的問題,可以查看 「Java 應用程式已被安全設定值封鎖如何解?」 與 「當不受信任的 Applet 或應用程式在我的 Web 瀏覽器中執行時,我該如何控制它?」 文章來了解如何把網站加入例外網站清單中。

2014年5月29日 星期四

Ubuntu 如何列出已安裝的 Pacakge

    Ubuntu 下要查詢已經安裝的套件可以透過下列指令

dpkg --get-selections | grep -v deinstal

    grep -v 主要過濾掉利用 dpkg 查詢時含有含有 deinstall ,你可以透過 grep --help 查詢參數用法

-v, --invert-match        select non-matching lines

[參考連結]

2014年5月26日 星期一

Windows 利用 Mklink 建立 Symbolic link

I:\>mklink
The syntax of the command is incorrect.
Creates a symbolic link.

MKLINK [[/D] | [/H] | [/J]] Link Target

        /D      Creates a directory symbolic link.  Default is a file
                symbolic link.
        /H      Creates a hard link instead of a symbolic link.
        /J      Creates a Directory Junction.
        Link    specifies the new symbolic link name.
        Target  specifies the path (relative or absolute) that the new link
                refers to.
mklink /D [target symbolic link name] [source target folder name]
ex:
I:\> mklink /D WindowsLink C:\Windows
Above example will create Windows Symbolic link underneath I:\> named by "WindowsLink".

2014年5月24日 星期六

移除系統設定中不用不啟動項目

          有些軟體安裝時會設定開機時順便載入,最常見的就是將自己加入"系統設定"中的 "啟動項目" 裡,但是今天移除軟體後,該軟體的項目卻還是存在那 "啟動項目" 清單裡面,如果想要移除它,可以到 "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig\" 下尋找要移除的項目,下面圖示是我移除 MyPC Backup 的範例:

  • 已經移除的軟體卻還是顯示在啟動項目的清單裡。


  •  執行 "regedit.exe" 啟動 登錄編輯程式,到 "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig\" 下,尋找要清除的項目名稱, MyPC BackUp 是在 startupfolder 底下,所以刪除它即可清除它顯示在啟動項目的清單。


2014年5月23日 星期五

如何停止 Asus AI Suite II 開機啟動

  裝了 Asus AI Suite II 軟體後,每次開機都會自動載入啟動,想要把它停掉但在該軟體內找不到可以設定的地方,也不在 "\AppData\Roaming\Microsoft\Windows\Start Menu\Programs" 裡,msconfig.exe 啟動系統設定,它也不在 "啟動" 頁面裡。結果發現它在 工作排程器裡,關閉  Asus AI Suite II 軟體開機啟動的方式如下:

  1. WIN+R 在開啟中輸入 taskschd.msc 開啟工作排程器 或者 在 "收尋程式或檔案中" 輸入 排程,便可找到 工作排程器如下圖所示。


  2. 在工作排程器程式庫 中找到 ASUS 然後點選 "ASUS AI Suite II Execute" 或 "Easy Update" 後,在右邊的 "動作" 欄內將其 "停用" 即可。

2014年5月22日 星期四

解決 Eclipse 執行時出現 "JVM terminated Exit code=2" 的問題

     昨天想要執行 Eclipse 時卻顯示下列畫面而無法正常的執行 Eclipse:


     除了這個以外,一些安裝的編譯器或者直譯器當執行時也出現下面錯誤訊息:


     想說是不是權限的問題,檢查了一下該有的權限都有應該沒又問題,而且之前明明都沒有任何問題,突然間怎麼變成這樣。

     關於 Eclipse 在 "Eclipse's error on startup in windows 7" 與 "What are the best JVM settings for Eclipse?" 文章中,你可以透過修改 eclipse.ini 檔案來解決執行 Eclipse 的問題。將下列參數加到 eclipse.ini 檔案內容的 openFile 之後即可。

-vm
C:/Program Files/Java/jre8/bin/server/jvm.dll

    雖然這樣可以解決 Eclipse 的問題,但其他的程式執行還是有問題,昨天似乎在個論壇有看到可能與防毒軟體或防火牆有關,今天試著先把 COMODO 防火牆移除,在執行其他程式,解果一切正常,把 eclipse.ini 修改回原來的內容,也可以正常執行了。結論,兇手是 COMODO 防火牆。如果有遇到相同情況可以試著先把防火牆或者防毒軟體先移除看看有沒有得解。


    

   

清除 Windows 7 通知區域圖示中無效的圖示

      今天發現 Windows 7 的通知區域圖示上出現之前已經移除的應用程式,感覺非常礙眼,上網 google 查詢解決方法,發現只要執行下列步驟就可以清除那些已經無效的圖示:

  1. 執行 regedit.exe 啟動 "登錄編輯程式"
  2. HKEY_CURRENT_USER\Software\Classes\ Local                           Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify 下刪除 IconStreamsPastIconsStream 機碼後,關閉登錄編輯程式。
  3. 按 CTRL+SHIFT+ESC 叫出 "Windows 工作管理員",到 "處理程序" 頁面,找到 explorer.exe 並且關閉它。
  4. 切到"應用程式" 頁面,按右下角的 "新工作(N)..." 按鈕,輸入 explorer.exe 即可。
     如果想要圖文並茂的解說請查看下列參考文章。


[參考文章]

2014年5月5日 星期一

解決 KMPlayer 播放 UTF-8 編碼字幕時出現亂碼

         明明是 UTF-8 的字幕為何透過 KMPlayer 播放時卻是顯示亂碼呢? 如下圖所示,上網查詢發現播放  UTF-8 字幕必須含有 BOM (位元組順序記號 byte-order mark,EF BB BF)。所以只要將你下載下來的字幕檔,透過一些文字編輯器就可以將其轉成含 BOM 的 UTF-8 字幕檔,之後播放就沒問題了。

        下面是透過 Notepad++ 來檢查以及存檔,開啟字幕檔你可以看到該字幕檔是不含 BOM 資訊的 UTF-8 編碼的字幕檔,然後你只要選擇下方的 "編譯成 UTF-8" 然後存檔就可以將 BOM 資訊塞到原本的字幕檔了。

[參考來源]

2014年4月21日 星期一

解決重新開機螢幕顯示 "Not Support"

     最近終於把電腦從 Windows XP 更新到 Windows 7,重新裝好作業系統之後就是趕快來安裝驅動程式,沒想到安裝 Intel HD Graphics 驅動程式後,重新開機螢幕便顯示 "Not Support",之前安裝 Windows XP 也是有遇到,但是只需要到安全模式調整螢幕解析度就可以了,但對 Windows 7 卻沒用。
      最後發現,透過 Windows  7 調整解析度是沒用的,你必須透過 Intel HD Graphics 驅動程式 所附管理的軟體來調整。
      下面是解決這個問題的步驟:

  1. 重新開機後按 F8,選擇 "啟用低解析度視訊 (640 x 480)"。
  2. 開啟  Intel HD 圖形 程式設定螢幕解析度,之後重新開機即可。 Intel HD 圖形 設定畫面如下:

[圖一 開啟 Intel HD 圖形程式]

[圖二 選擇基本模式]

[圖三 顯示->一般設定 解析度調整為適合的解析度即可]

PS: 我使用的硬體資訊如下:

  1. ASUS P8H61-M LE
  2. Intel(R) Pentium(R) CPU G840@2.80GHz

2014年3月27日 星期四

如何移除迅雷遊戲盒子

        今天嘗試移迅雷遊戲盒子時,當執行內建的移除程式一直跳出 "Error launching installer" 而無法順利地移除它,上網查詢了一下資料在巴哈姆特討論區發現有人提問相關問題,結果原因真的是路徑名稱的問題,解決方式你可到 Program 資料夾中發現 "游戏盒子",接著你把它改成英文或者數字名稱資料夾,然後在執行該資料夾內的反安裝程式,便可以順利移除了。:) 

[參考資料]
請問有人知道訊雷的遊戲盒子怎麼刪除嗎?

2014年3月4日 星期二

Field `x' has incomplete type?

       當你有兩個Class,CLASS_A與CLASS_B時,如果再主程式中並沒有用include將其header file include進來時,而使用forward reference 時會出現下列的錯誤訊息:

aggregate `CLASS_B bb' has incomplete type and cannot be defined
aggregate `CLASS_A aa' has incomplete type and cannot be defined

範例:
main.cpp
class CLASS_A;
class CLASS_B;

int main()
{
     CLASS_A a;
     CLASS_B b;
     return 0;
}

CLASS_A.h
class CLASS_A{
     public:
            CLASS_A(){}
};

CLASS_B.h
class CLASS_B{
     public:
            CLASS_B(){}
};

         另外,你也許用CLASS_B的物件當做 CLASS_A建構的參數,你也許會看到下面的錯誤訊息:
aggregate `CLASS_B bb' has incomplete type and cannot be defined 
variable `CLASS_A aa' has initializer but incomplete type

範例:
main.cpp
class CLASS_A;
class CLASS_B;

int main()
{
     CLASS_B b;
     CLASS_A a(&b);
     return 0;
}

CLASS_A.h
class CLASS_B; // Forward reference declare

class CLASS_A{
     public:
            CLASS_A( CLASS_B *pB){}
};

      這些是典型的忘記將 header file inlude進來的問題,只要將該檔案的header file include到 main.cpp中即可。會發生 incomplete type 是因為編譯器在編譯時需要知道物件的大小,但是我們 在還不知道class定義在何處,就將其拿來宣告物件使用。 其詳細的 incomplete type 的解釋請參考 下面相關鏈結。

[Keyword]
    incomplete type ; incomplete type + C++ + Class

[相關鏈結]
Incomplete class declarations (C++ only)
Incomplete Type
Forward declarations in C++
C++ Tip: Forward Declaration
forward declaration 唯一的好处只是可以让编译快一点

2014年3月1日 星期六

FileZilla Server 設定筆記

      網路上已經有很多文章教你如何利用 FileZilla Server 架設一般 FTP 或者 FTPS (FTP over SSL/TLS) 網站,請參考下面的鏈結:

    依照上面的設定應該就可以輕鬆架設好你的 FTP Server。但當我在新增兩個不同的目錄 Shared folders 時,使用者連線都只會看到設定為 Home directory,另外新增的 Folder 並不會出現在 FTP Client 的畫面上;如果要讓另外新增的 Folder 出現在FTP Client 的畫面上,你必須設定 Aliases 將它掛到 User 的 Home directory 中,這樣就可以看到你另外新增的 Folder。設定如下:

<1> 點選你新增的資料夾右鍵,選擇 Edit aliases 

<2> 將它設到 Home directory下,這邊名稱也是設定為跟新加入的 Folder 一樣名稱,你可以將它設定為其他名稱,不一定要跟你的實際加入的資料夾名稱一樣。EX: C:\CFTP\DDD ,這樣當使用者登入時看到的就會是 DDD 資料夾了。

<3> 下面是設定的結果,可以發現我們在 User 的 Home directory 多了一個 DFTP 的資料夾。
    

         另外,如果你忘記了 Admin  Interface 的密碼時,你可以到 FileZilla Server 安裝的目錄下,開啟 "FileZilla Server.xml" 檔案 查詢 "Admin Password" ,就可以找回你的密碼了,密碼是用明文顯示。
         基本上 Admin  Interface Settings 不需要設定密碼,因為 Admin  Interface Settings 預設只能透過本機設定 (127.0.0.1),無法透過遠端設定,除非你有設定 "Bind the admin interface to the following ip-adresses:" 與 "IP address which are allowed to connect to the admin interface:"。

        根據 FTPS using Explicit SSL/TLS howto (Server) 文章,如果你有勾選 allow Explicit SSL/TLS on normal connections,建議將下面兩項也勾選:
  1. Disallow plain unencrypted FTP
  2. Force PROT P to encrypt file transfers in SSL/TLS mode
      至於 Explicit 與 Implicit SSL/TLS 的不同你可以參考 FileZilla Wiki SSL/TLS 該篇文章,基本上 Explicit 預設使用 port 21 做連線然後切換到 secure (SSL/TLS) mode,而 Implicit 則預設使用 990。
如果你沒勾選 allow Explicit SSL/TLS on normal connections,則 Client 連線就不能選擇使用此方式做連線。

     此外,你可以在 User Account Setting 中勾選 Force SSL for user login,這樣 FTP Server 就會強制Client 一定要使用 SSL 連線,但是如果 Server 把 FTPS 取消掉時,當 Client 透過一般的 FTP 連線時會出現下列錯誤訊息:

回應: 530 SSL required
錯誤: 無法連線到伺服器

     如果 Client 選擇 Explicit SSL/TLS 方式連線,則顯示下面訊息:

指令: AUTH SSL
回應: 502 SSL/TLS authentication not allowed

    選擇  Implicit SSL/TLS 方式連,則出現下面的錯誤訊息:

狀態: 正在連線到 AAA.BBB.CCC.DDD:990 ...
狀態: 以 "ECONNREFUSED - Connection refused by server" 嘗試連線失敗. 

     如果你有勾選此選項,當 Server 取消 FTPS 設定時,記得把 User Account 中相對應的設定也一併移除,或者一開始就不要把 "Force SSL for user login" 選項給勾選 :P

    最後,架設 FTP Server 最好網路頻寬大一點,不然 Client 下載速度太慢不如直接拿硬碟來 Copy 哈!!!




2014年1月16日 星期四

Outlook 2010 透過 IMAP 存取 Gmail 郵件

   如果你不知道 POP3 與 IMAP 來存取電子郵件的差異,可以參考 Gmail 的說明文件 '開始使用 IMAP 和 POP3'。
   要讓 Outlook 2010 利用 IMAP 來存取 Gmail 電子郵件,你必須先將 Gmail 的 IMAP 功能啟用,啟用的方式如下:
<1> 登入Gmail 點選右上角的 齒輪圖示,選擇 設定


<2> 選擇 轉寄和 POP/IMAP頁面, 在 IMAP 存取 啟用IMAP


   設定好你的 Gmail 後,接下來設定 Outlook 2010,如下列步驟:
<1> 點選 「檔案」後在 帳戶資訊下點選 「新增帳戶」

 

<2> 選擇 「手動設定伺服器設定或其他伺服器類型(M)」


<3> 選擇 「網際網路電子郵件(I)」


<4> 設定使用者資訊,請參考下面的設定,主要要注意的是登入資訊的使用者名稱必須是與電子郵件地址一樣;內送郵件伺服器填入「imap.gamil.com」;外寄郵件伺服器 (SMTP) 填入「smtp.gamil.com」。



 <5> 上面填寫好之後,點選右下的 「其他設定(M)...」按鈕。選擇「外寄伺服器」頁面,勾選「我的外寄伺服器 (SMTP) 需要驗證」。


 <6> 點選 「進階」頁面,內送伺服器(IMAP) port 設定為 993,加密類型選擇 「SSL」;外寄伺服器 (SMTP) port 設定選擇 465 或 587,加密類型選擇 「SSL」,設定好按確定。


<7> 上面按確定後會回到 步驟 <4> 的畫面,點選下一步後,Outlook 2010會測試該帳號,如果一切正常的話,會顯示如下的畫面。



[參考資料]