| Message |
|
|
simonsu兄經驗可真是豐富, 有您的加入對這個專案可謂如虎添翼阿!
目前對系統架構這方面, 我比較鍾意Spring Framework和Hibernate, 資料庫的部分基本上目前我用的是PostgreSQL, 當然如果可以支援其他資料庫也是不錯的.
另外, 有關您建議的Tag lib和Eclipse plugin我覺得也是夠大膽的想法, 希望有機會實現啦!
最後, 有關專案的Road Map和分工部分, 目前我的想法是比照Open Source的方式, 由大家自行在Trac上面去編輯, 對於新需求可以開設新的Ticket來管理.
|
 |
|
|
歡迎您的加入, 這個專案未來發展有什麼計畫需看大家想做出什麼東西來, 目前我想過幾件事可以做的:
1. Internalization: 將畫面上的字串抽離出來, 改用properties file來存放, 再用ResourceBundle或JSTL的fmt:message取回, 初期預計支援英文, 簡體中文及繁體中文三種語言.
2. 修改顯示信件列表的介面, 例如加入Ajax的Framework, 讓介面更生動, 例如排序功能.
3. 增加郵件過濾功能, 常收到一些日期在未來2038年之類的垃圾信, 這種應該可以直接予以過濾刪除掉.
4. 加上通訊錄功能(需要資料庫支援)
5. 增加設定存檔功能(需要資料庫或Cookie支援), 將登入畫面上填的參數記錄下來, 不用每次都重新輸入.
6. 加強郵件解碼模組的正確性.
其他各位如果有想到的歡迎再補充.
|
 |
|
|
在網路上找到一篇 【教學】修改IIS的Banner提到用微軟出的URLScan可以完成。
首先是安裝URLScan 2.5,可由此下載
http://microsoft.com/downloads/details.aspx?FamilyId=23D18937-DD7E-4613-9928-7F94EF1C902A&displaylang=en
執行Setup.exe後會安裝在%windir%\system32\inetsrv\urlscan目錄下
接著修改:%windir%\system32\inetsrv\urlscan\urlscan.ini,將RemoveServerHeader設為1:
RemoveServerHeader=1 ; if 1, remove "Server" header from response
改完存檔後,執行%windir%\system32\inetsrv\urlscan\urlscan.exe
重新啟動IIS即可
參考資料
http://support.microsoft.com/default.aspx?scid=307608
http://www.pczone.com.tw/vbb3/archive/t-115211.html
|
 |
|
|
OLAT學習管理系統可以跟 Openfire整合, 提供遵循 Jabber XMPP協定的即時訊息功能, 安裝文件及內附的方法主要是針對MySQL的安裝方法, 我在PostgreSQL上試著安裝看看,發現也可以看得到那顆黃色星星,底下是安裝的步驟
cd ~/download/olat3
sed -i -e "s/instantMessaging.enable=false/instantMessaging.enable=true/" build.properties
sed -i -e "s/instantMessaging.server.name=jabber.andowson.com/instantMessaging.server.name=www.andowson.com/" build.properties
sed -i -e "s/instantMessaging.generateTestUsers=false/instantMessaging.generateTestUsers=ture/" build.properties
sed -i -e "s/instantMessaging.db.name=wildfire/instantMessaging.db.name=openfire/" build.properties
sed -i -e "s/instantMessaging.db.user=wildfire/instantMessaging.db.user=olat/" build.properties
sed -i -e "s/instantMessaging.db.pass=wildfire/instantMessaging.db.pass=olat/" build.properties
ant config-all
cp -rf ~/download/olat3/webapp/WEB-INF/olat_config.xml ~/www/olat/WEB-INF
cd ~/download
wget http://www.igniterealtime.org/downloadServlet?filename=openfire/openfire_3_3_3.tar.gz -O openfire_3_3_3.tar.gz
tar zxvf openfire_3_3_3.tar.gz -C ~
sudo -u postgres psql -c "ALTER USER olat CREATEDB;" template1
sudo -u postgres psql -c "CREATE DATABASE openfire WITH ENCODING 'UNICODE';" -U olat template1
sudo -u postgres psql -c "ALTER USER olat NOCREATEDB;" template1
sudo -u postgres psql openfire olat -f ~/openfire/resources/database/openfire_postgresql.sql
cp ~/download/olat3/conf/openfire.xml ~/openfire/conf
sed -i -e "s/com.mysql.jdbc.Driver/org.postgresql.Driver/" ~/openfire/conf/openfire.xml
sed -i -e "s/mysql/postgresql/g" ~/openfire/conf/openfire.xml
cd ~/openfire/bin
./openfire start
接下來我們要先開放防火牆, 讓下面幾個通訊埠可以被存取到:
sudo setup
防火牆設定 -> 執行工具 -> 安全等級: (*) 啟用->自訂
其他連接埠=>9090:tcp 9091:tcp 5222:tcp 5269:tcp 7777:tcp 8080:tcp 8483:tcp 3478:tcp 3479:tcp
確定->確定
開啟瀏覽器連到 http://www.andowson.com:9090
用帳號admin密碼admin登入,修改以下幾項設定
Server Manager -> Server Setting -> Server Name : 127.0.0.1=>www.andowson.com
Registration & Login -> Inband Account Registration -> Disabled
Registration & Login -> Change Password -> Disabled
將~/openfire/bin/openfire中的啟動參數在-server之後加上-Xss256k
重新啟動一次openfire
./openfire stop
./openfire start
tail -5 ~/openfire/logs/info.log
如果可以看到下面的訊息時,就表示啟動完成,可以重新啟動OLAT了
2007.09.22 12:36:25 Publish-Subscribe domain: pubsub.www.andowson.com
2007.09.22 12:36:25 Started server (unencrypted) socket on port: 5269
2007.09.22 12:36:25 Started plain (unencrypted) socket on port: 5222
2007.09.22 12:36:36 Openfire 3.3.2 [Sep 22, 2007 12:36:36 PM]
2007.09.22 12:36:41 Admin console listening at http://www.andowson.com:9090
sudo /etc/init.d/tomcat restart
參考資料:
http://www.olat.org/docu/install/EnablingTheInstantMessagingComponent.html
|
 |
|
|
在原來的程式第16行下面加上這一行, 可以增加自動擋掉嘗試用ftp入侵的攻擊者:
grep failure messages | awk '{print $13}' | uniq | grep -v tty | cut -d"=" -f2 | sort | grep "\." | uniq | grep -v "192.168.1" >> /tmp/attack.log
|
 |
|
|
以下兩種方式都可以達成:
MS SQL Server DSNless connection
Driver={SQL Server};Server=servername;Database=dbname;Uid=username;Pwd=password;
MS SQL Server OLE DB connection
Provider=SQLOLEDB;Data Source=machineName;Initial Catalog=dbname;User ID=username;Password=password;
例如:資料庫伺服器的IP是192.168.1.68,資料庫是testdb,帳號是test,密碼是noOneKnows
MS SQL Server DSNless connection
Driver={SQL Server};Server=192.168.1.68;Database=testdb;Uid=test;Pwd=noOneKnows;
MS SQL Server OLE DB connection
Provider=SQLOLEDB;Data Source=192.168.1.68;Initial Catalog=testdb;User ID=test;Password=noOneKnows;
參考資料:
http://class2u.idv.tw/book/ultradev4/connection.htm
|
 |
|
|
在安裝一些webapp時通常需要root身分和資料庫管理者postgres身分來執行一些動作, 雖然是自己架站知道root的密碼, 可以先切換成root再切換成postgres,不過底下的這些指令似乎還是滿辛苦的:
su - root
su - postgres
psql olat olat -f /tmp/alter_5_1_0_to_5_2_0.sql
exit
exit
這時候sudo這個指令就滿好用的了,只要一行就搞定了:
sudo -u postgres psql olat olat -f /tmp/alter_5_1_0_to_5_2_0.sql
安裝sudo
yum install sudo
設定sudo也滿簡單的:
1.visudo (沒錯, 就是全部連在一起的指令, 不是vi sudo)
2.將底下這一行前面的#刪除
# %wheel ALL=(ALL) NOPASSWD: ALL
3.將自己的帳號加到wheel group去
usermod -a -G wheel andowson
參考資料:
http://linux.vbird.org/linux_basic/0410accountmanager.php#sudo
http://www.andowson.com/posts/list/35.page
|
 |
|
|
原本JForum的設計是依某個主題最後一篇文章是否有附件來決定要不要顯示附件圖示, 但是通常容易讓網友錯過有檔案可以下載的文章,我們可以透過修改SQL語法來修正, 由於我的網站是用PostgreSQL作為後端資料庫, 故我需要修改WEB-INF/config/database/postgresql/postgresql.sql:
TopicModel.selectAllByForumByLimit = SELECT t.*, p.user_id AS last_user_id, p.post_time, (SELECT SUM(p.attach) \
FROM jforum_posts p \
WHERE p.topic_id = t.topic_id \
AND p.need_moderate = 0) AS attach \
FROM jforum_topics t, jforum_posts p \
WHERE (t.forum_id = ? OR t.topic_moved_id = ?) \
AND p.post_id = t.topic_last_post_id \
AND p.need_moderate = 0 \
ORDER BY t.topic_type DESC, t.topic_last_post_id DESC \
OFFSET ? LIMIT ?
TopicModel.selectByUserByLimit = SELECT t.*, p.user_id AS last_user_id, p.post_time, (SELECT SUM(p.attach) \
FROM jforum_posts p \
WHERE p.topic_id = t.topic_id \
AND p.need_moderate = 0) AS attach \
FROM jforum_topics t, jforum_posts p \
WHERE p.post_id = t.topic_last_post_id \
AND t.user_id = ? \
AND p.need_moderate = 0 \
AND t.forum_id IN(:fids:) \
ORDER BY t.topic_last_post_id DESC \
OFFSET ? LIMIT ?
登入管理介面後清除主題的Cache即可
|
 |
|
|
今天花了一整天終於把現有的OLAT由5.1.3升級至5.2.2, 步驟如下:
cd ~/download
mv olat3 olat-5.1.3
wget http://www.olat.org/downloads/stable/OLAT-5.2.2.zip
unzip OLAT-5.2.2.zip
mv OLAT-5.2.2-PUBLIC-* olat3
cd olat3
sed -e "s/\/usr\/local\/opt\/olat\/olat3/\/home\/andowson\/download\/olat3/g" \
-e "s/\/usr\/local\/opt\/olat\/olatdata/\/home\/andowson\/www\/olatdata/g" \
-e "1,$$s/myolat/andowson/g" \
-e "s/smtp.host=smtp.andowson.com/smtp.host=mail.andowson.com/" \
-e "s/\/usr\/local\/opt\/tomcat5/\/var\/tomcat5/g" \
-e "1,$$s/net.sf.hibernate/org.hibernate/g" \
-e "48c\server.modjk.enabled=true" \
-e "86,108d" \
-e "1,$$s/#db/db/g" build.properties.default > build.properties
ant install
ant jsmath
sudo /etc/init.d/tomcat stop
tomcatpid=`ps -ef|grep tomcat|grep java|awk '{print $2}'`
sudo kill -9 $tomcatpid
mv ~/www/olat /tmp/olat-5.1.3
cp -rf ~/download/olat3/webapp ~/www/olat
cp -rf ~/download/olat3/htdocs/* ~/www/olat
sed -i -e "13c\ <\!-- default session timeout -->" ~/www/olat/WEB-INF/web.xml
rm -rf ~/www/olat/WEB-INF/src
rm -rf ~/www/olat/WEB-INF/patchesSrc
chgrp -R tomcat ~/www/olat
chgrp -R tomcat ~/www/olatdata
chmod 775 ~/www/olat/static
cp ~/download/olat3/database/postgresql/alter_5_1_0_to_5_2_0.sql /tmp
sudo psql -U olat olat -f /tmp/alter_5_1_0_to_5_2_0.sql
sudo /etc/init.d/tomcat start
參考資料:
http://www.olat.org/docu/install/Upgrading-from-5.1.x-to-5.2.x.html
|
 |
|
|
今天在執行trac-admin command line指令時出現下面的錯誤訊息
Command failed: 嚴重錯誤: 非特權使用者連線數已達限制量
上網找了半天找不到解決方案,最後只好重開Apache解決。
|
 |
|
|
用$1可以取得命令列輸入的第一個參數,但是要如何取得第一個字元呢?方法很簡單可以透過下列的指令取得:
printf %c $varname
例如我們要依FTP使用者帳號的開頭第一個字母作目錄分類,以便有效分散磁碟存取,則我們可以寫成以下的shell script來開設
#!/bin/bash
# Name: newftpuser.sh
# Author: Andowson Chang (andowson [at] gmail [dot] com)
# Version: 1.0
# Last Modified: 2007-09-10
ftpuser=$1
ftppwd=$2
index=`printf %c $ftpuser`
/usr/sbin/useradd -s /sbin/nologin -d /home/$index/${ftpuser} ${ftpuser}
echo "${ftpuser}:${ftppwd}" | chpasswd
chmod 755 /home/$index/${ftpuser}
使用方式:
./newftpuser.sh user1 user1pwd
參考資料:
http://joeyta.blogspot.com/2007/06/shell-script.html
|
 |
|
|
|
|
 |
|
|
修正
Report execution failed: 錯誤: 欄位"modified"不存在
用具有TRAC_ADMIN權限的帳號如admin登入,點選View Tickets->點選{6} All Tickets By Milestone (Including closed)
點選Edit Report按鈕,替換為下方的程式碼:
SELECT p.value AS __color__,
t.milestone AS __group__,
(CASE status
WHEN 'closed' THEN 'color: #777; background: #ddd; border-color: #ccc;'
ELSE
(CASE owner WHEN $USER THEN 'font-weight: bold' END)
END) AS __style__,
id AS ticket, summary, component, status,
resolution,version, t.type AS type, priority, owner,
changetime AS modified,
time AS _time,reporter AS _reporter
FROM ticket t
LEFT JOIN enum p ON p.name = t.priority AND p.type = 'priority'
ORDER BY (milestone IS NULL), milestone DESC, (status = 'closed'),
(CASE status WHEN 'closed' THEN changetime ELSE (-1)* CAST(p.value AS numeric) END) DESC
|
 |
|
|
|
|
 |
|
|
如果每個月底要計算該月的總使用量,在日期範圍上,我們通常需要找出該月的最後一天。在Linux上用shell script來進行運算時可以參考底下的方法:
#! /bin/bash
export LANG=en_US
YEAR=`date +%Y`
MONTH=`date +%m`
DAYS=`cal $MONTH $YEAR | grep -v "$YEAR" | grep -v "Tu"`
for day in $DAYS
do
LAST=$day
done
echo $LAST
這個程式的邏輯主要是靠 cal這個指令印出系統月曆的小程式吐出來的結果再用grep -v過濾掉結果的最上面兩行,剩來的就是一個月的每一天了,然後很笨的跑迴圈,跑到最後一圈就是該月的最後一天了。
參考資料:
http://www.sun.com/bigadmin/scripts/submittedScripts/last-day.sh.txt
|
 |
|
|