2015年2月15日 星期日

使用LaTeX撰寫期刊論文(MikTeX2.9+TexMaker4.4.1+JabRef2.10+GSview5.0+GPL Ghostscript 9.01)

這裡紀錄了使用LaTeX撰寫期刊論文時的一些注意事項,使用的組合為:

編譯器:MikTeX2.9
編輯器:TexMaker4.4.1
文獻管理工具:JabRef2.10
圖案轉檔工具:GSview5.0+GPL Ghostscript 9.01
  1. 如果在編譯PDF檔時有引入package不存在的問題,通常是沒有下載對應的package,解決方法是下載需要的package,以MikTeX2.9為例,依照程式集-->MikTeX2.9-->Maintenance (Admin)-->Package Manager (Admin)的路徑開啟Package Manager (Admin),在Name的方框中打上需要的package名稱,指到要下載的package按右鍵選擇Install就可以了。
  2. 如果使用MikTeX發現提供package下載的伺服器站點掛掉了,可以在Package Manager (Admin)的Repository--> -->Change Package Repository-->下一步 的路徑中選擇其他的伺服器站點。
  3. 在使用編輯器打好程式碼,要輸出成PDF檔時,可能會出現錯誤無法編譯過(例如有使用到eps的圖時),可以選擇其它的編譯方法試試看,例如XeLaTex。
  4. 使用JabRef2.10可以很好的管理及將文獻引入LaTeX中,通常在各大期刊的各文章頁面中,都會有提供各式的文獻輸出格式,連結通常為Download Citations或Export Citation等字樣,如下圖所示,LaTex使用的文獻為副檔名為bib的BibTex格式:
  5. OpticalInfoBase的BibTeX輸出
    Ieeexplore的BibTex輸出

  6. 使用JabRef2.10做好文獻存成副檔為bib的文獻檔之後,就可以開始在LaTex論文中引

2014年12月28日 星期日

JQuery的小日曆

在撰寫html的日期選擇時,常會要求使用者使鍵入正確的日期格式,這樣才會方便後續的處理,例如進行MySQL的查詢,這時如果只是使用html中單純的text是難以規範使用者的輸入內容的,所以通常我們都會採取不讓使用者直接輸入而是用選擇的方式輸入日期資料,通常有下例幾種方式:
  1. 直接把年、月、日拆開來,分別用不同的下拉式選單讓使用者選取正確的數字,不過這種方式使用者能選擇的值是有限的,你沒有提供的數字就無法選擇。
  2. 以直觀的方式使用日曆來讓使用者選擇日期,使用者會看到日曆並直接在上面選擇。
因為JQuery十分方便,只要引用進JSP中就可以直接使用,而且日曆外觀也不錯,所以在這裡就以JQuery的小日曆為例子,來說明如實現第2種的日曆方式:
  1. 首先要在html的head中把要使用的CSS樣式、JQuery和JQuery UI引用進來,如以下的前三行程式碼,第四行程式碼是中文化的功能,不加入這行時日曆是呈現英文的界面,加入後就能顯示中文介面的日曆:
  2. <!-- 使用 jQuery -->
    <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/themes/hot-sneaks/jquery-ui.css" rel="stylesheet">
    
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js"></script>
    
    <!-- 使用 jQuery Datepicker的中文化-->
    <script type="text/javascript" src="../jquery/jquery.ui.datepicker-zh-TW.js"></script>

2014年12月23日 星期二

&#32與&nbsp,換行空格與不換行空格

在html中常會遇到空白字符的編碼問題,而空白的常用編碼有兩個,一個是&#32,另一個是&nbsp,這兩個空白看起來一樣,卻有著不一樣的特性。

&#32是換行空格,也就是我們平常用的最普通的空白,它的特性是,如果空白後面接的字太長且超出邊界的話,後面接的文字就會強制被移動到下一行。

&nbsp是不換行空格,一般我們很少用到,或著是用到時也沒有意識到,其實它可以很簡單的一個例子來理解,例如:一公里我們會用"1 km"來表示,其中"1"和"km"有一個空格,如果我們希望不要"1"寫在一行、"km"寫在下一行,也就是希望"1 km"是一體的,一起在同一行,這時我們就會使用不換行格而不是換行空格,就像這樣:"1&nbspkm"

2014年9月25日 星期四

關於限制存取根目錄URL與welcome-file的問題記錄

這裡記錄了一個我曾經發生但不太懂的開發情況:
以下是JSP的安全權限設定:
<security-constraint>
        <display-name>ManagerConstraint</display-name>
        <web-resource-collection>
            <web-resource-name>iBeaconServerPages</web-resource-name>
            <description>Pages of iBeacon Project Server</description>
            <url-pattern>/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <description/>
            <role-name>Manager</role-name>
        </auth-constraint>
    </security-constraint>
    <security-constraint>
        <display-name>TicketCheckerConstarint</display-name>
        <web-resource-collection>
           <web-resource-name>PagesAboutTicketChecker</web-resource-name>
            <description>Pages about Ticket Checker</description>
            <url-pattern>/welcomePage.jsp</url-pattern>
            <url-pattern>/ticketCheckUsers/*</url-pattern>
            <url-pattern>/guestFlowMonitor/*</url-pattern>
            <url-pattern>/logoutPage.jsp</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <description/>
            <role-name>TicketChecker</role-name>
            <role-name>Manager</role-name>
        </auth-constraint>
    </security-constraint>
可以看到,在根目錄下的所有頁面將限制由Manager存取,而/welcomePage.jsp、/ticketCheckUsers/*、/guestFlowMonitor/*和logoutPage.jsp限制由Manager和TicketChecker存取,以上四個頁面在url匹配時會先在TicketCheckerConstarint的權限設定中被匹配到,所以如果不設Manager的話,Manager將無法存取。

2014年9月8日 星期一

Linux的重要相關設定、指令、好用指令

重要路徑:
Tomcat:
(1)權限設置的位置(角色、使用者、密碼等):
/usr/share/tomcat6/conf/tomcat-users.xml

(2)部署war檔的地方:
/var/lib/tomcat6

Apache:
(1)部署網頁的地方(包括php):
/var/www/html

重要指令:
(1)重啟Apache:   /etc/init.d/httpd restart
(2)重啟MySQL:  /etc/init.d/mysqld restart
(3)重啟Tomcat:  /etc/init.d/tomcat6 restart
(4)進入MySQL: mysql -u root -p (root可改不同user名稱)
(5)新增使用者帳號:useradd 帳號名稱
(6)設定使用者的密碼:passwd 帳號名稱

重要設定:
(1)設定DNS(重開機後要重設)
進入 /etc/resolv.conf
vi /etc/resolv.conf
打入以下內容
nameserver 8.8.8.8
nameserver 8.8.4.4

(2) 第一次設定 root 密碼:
sudo passwd root

好用指令:
得到上次執行的命令或角本返回的狀態值 (0 為正常,非 0 為不正常,非 0 的狀態碼由角本作者自行決定意義)
echo $?

列出所有儲存裝置資訊,包括塊磁碟分區資訊等 (list block device):
lsblk
加上 -f 參數可列出一些其他資料,例如檔案格式 (FSTYPE),如值為空則代表還未格式化,尚不具有檔案系統。

格式化區塊成檔案系統
mkfs -t <檔案格式> <要被格式化的區塊>
範例:
mkfs -t xfs /dev/xvdf

備份檔案 rsync 指令,比 cp (複制) 更多功能的 rsync 指令,像是可以顯示多檔案進度、可判斷有異動的檔案才複制等功能
範例 (-P 等同於 --progress (可顯示進度)和 --partial (保留傳輸中斷的檔案以進行續傳)、
-a 等同於 --archive,為 archive mode,等同於使用了參數 -rlptgoD +  沒有 -H,-A,-X):
rsync -aP <來源路徑> <目標路徑>

在Centos 6下安裝phpMyAdmin及Tomcat

情境:
1.系統為Centos 6
2.已裝MySQL
3.已裝php
4.已裝php-mbstring

需求:
1.欲安裝phpMyAdmin
2.欲安裝Tomcat

解法過程:
一、欲安裝phpMyAdmin
        參考資料:CentOS 6.4 (64位元) 安裝 phpMyAdmin

(1).先下載 phpMyAdmin 的壓縮檔
wget http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/3.5.8.1/phpMyAdmin-3.5.8.1-all-languages.tar.gz

(2)對其進行解壓縮
tar -zxvf phpMyAdmin-3.5.8.1-all-languages.tar.gz

(3)將解壓縮後的 phpMyAdmin-3.5.8.1-all-languages 目錄移到 Apache 預設的網頁目錄下並重新命名為 phpMyAdmin
mv phpMyAdmin-3.5.8.1-all-languages /var/www/html/phpMyAdmin

(4)回到新放置的目綠位置
cd /var/www/html/phpMyAdmin
(5)複製範本設定檔 config.sample.inc.php 並重新命名為 config.inc.php
cp config.sample.inc.php config.inc.php
(6)進入 config.inc.php文件中修改認證操作方式
vi config.inc.php

將 $cfg['Servers'][$i]['auth_type'] = 'cookies'; 的 'cookies' 改成 'http' ,如下所示
$cfg['Servers'][$i]['auth_type'] = 'http';
(7)接著重新啟動Apache伺服器應該就能成功以localhost/phpMyAdmin為網址用瀏覽器登入phpMyAdmin了
service httpd restart

在Centos 6 下安裝遠端桌面

因為工作的關係,選用的VPS其系統改用Centos,因為在安裝遠端桌面時,跟Debian有一點不太一 樣,所以特做此紀錄,參考的資料來源為:CentOS 5/6 安裝 GNOME 與 KDE 桌面環境

在這裡,我選用KDE做為我的桌面,這裡要注意的是,Centos 6 與 Centos 5 在安裝KDE時用的包名稱上有些微的差異:

1.首先先使用以下指令安裝X windows
yum -y groupinstall 'X Window System'

2.再安裝KDE,在這邊為Centos 6版本,如果為Cemtos 5版本,指要把 'KDE Desktop' 改成 'KDE (K Desktop Environment)' 即可:
yum -y groupinstall 'KDE Desktop'  

3.安裝中文套件,不然用瀏覽器看中文網頁會變成亂碼
yum -y groupinstall "Chinese Support"

4.安裝vncserver,Centos6可安裝tigervnc-server
yum -y install tigervnc-server

5.配置KDE桌面,進入 /root/.vnc/xstartup 修改文件內容(補充:這裡如果找不到文件的話,要先打上 "vncserver" 再打上 "vncserver -kill :1" 來創建文件)
vi /root/.vnc/xstartup
並在最下面加上一行
exec /usr/bin/startkde &

這樣,遠端桌面就安裝成功了

補充:如果在使用yum安裝東西時發生了 Errno 14 Couldn't resolve host 的錯誤,表示DNS設定沒設好,可參考這篇yum 安裝時錯誤 Errno 14 Couldn't resolve host 解決辦法的解決辦法,在/etc/resolv.conf的文件中添加一行DNS的設定,如添加 8.8.8.8 (Google的DNS Server):
nameserver 8.8.8.8