
2007年4月12日
先占個地兒
http://blog.csdn.net/boat1980/archive/2008/07/23/2698318.aspx
posted @
2008-09-22 11:36 liunix 閱讀(243) |
評論 (0) |
編輯 收藏
<html>
<head>
<script>
function overlay() {
el = document.getElementById("overlay");
el.style.visibility = (el.style.visibility == "visible") ? "hidden" : "visible";
}
</script>
<style>
body {
height:100%;
margin:0;
padding:0;
}
/*外層全部*/
#overlay{
visibility: hidden;
position: absolute;
left: 0px;
top: 0px;
width:100%;
height:100%;
text-align:center;
z-index: 1000;
background-color:#000;
filter: alpha(opacity=70); /*ie支持的半透明,下面兩名為ff支持的*/
-moz-opacity: 0.7;
opacity:.70;
}
/*外層的顯示區*/
#overlay div {
width:300px;
margin: 100px auto;
background-color: #FFFFFF;
border:1px solid #000;
padding:15px;
text-align:center;
}
</style>
</head>
<body id="body">
<div id="overlay">
<div>
用戶名:<input type="text" name="" /><br/>
密 碼:<input type="text" name="" /><br/>
<input type="button" value="關閉" onclick="overlay()" />
</div>
</div>
<a href='#' onclick='overlay()'>Click here to show the overlay</a>
</body>
</html>
posted @
2008-08-29 16:23 liunix 閱讀(652) |
評論 (0) |
編輯 收藏
一、DESede加密(對應SunJCE不提供模式和填充的情況)
declare
result raw(2000);
l_mod number := dbms_crypto.ENCRYPT_3DES+dbms_crypto.CHAIN_ECB+dbms_crypto.PAD_PKCS5;
begin
result := dbms_crypto.Encrypt(src => utl_i18n.string_to_raw('wwww'),typ => l_mod,key => hextoraw('123456789012345678901234567890123456')
);
dbms_output.put_line(result);
end;
/
二,摘要
dbms_crypto.Hash(utl_i18n.string_to_raw('input'),dbms_crypto.MD5))
posted @
2008-07-21 14:54 liunix 閱讀(679) |
評論 (0) |
編輯 收藏
用了幾天jira管理對它的權限模式有了初步理解:
project和permission schema多對一,從而形成了permission schema的重用
而permission schema本身則代表了group/user和pemission之前的映射關系
另外,jira還有一個Project Role的概念更增加了jira權限管理的靈活性
其實它實質上就是一個角色(RBAC中的R),可以和group/user多對多關聯,
(當然也可和Permission通過schema進行關聯)
使jira的權限配置更新靈活的同時,也增加了相當的復雜性
posted @
2008-07-17 16:06 liunix 閱讀(1309) |
評論 (0) |
編輯 收藏
一,造libmysql.def文件
1, ${mysql_home}/include/libmySQL.def文件如果有直接用
2, 否則下載pexports工具,執行pexprots libmySQL.dll> libmySQL.def(libmySQL.dll在${mysql_home}/bin目錄下一般會有)
二,轉換成靜態庫
dlltool --input-def libmySQL.def --dllname libmySQL.dll --output-lib libmysql.a -k
三,配置Eclipse(靜態庫和動態庫加法都是-L${DIR} -l${libname},但誰的優先級高呢?)
1, 加上庫目錄,如"${workspace_loc:/hello_mysql/libs}"
2, 加上libmysql.a的庫名: mysql
3, 構建,報錯: #ff0000 reference to `mysql_real_connect@32'之類的錯
4, 修改def文件,將mysql_real_connect改成mysql_real_connect@32,其它錯誤同理,并重新生成靜態庫
5, 重新構建完成
四,示例程序(只須修改連接信息及表名)
#include <stdio.h>
/*下面這一行一定要加上*/
#include <my_global.h>
#include <mysql.h>
int main() {
MYSQL mysql;
MYSQL_RES *result;
MYSQL_ROW row;
int numrows, numcols, c;
mysql_init(&mysql);
if (!mysql_real_connect(&mysql, "localhost", "opencart", "opencart", "opencart", 0, NULL, 0)) {
fprintf(stderr,"Failed to connect to database: Error %d:%s\n", mysql_errno(&mysql), mysql_error(&mysql));
}
char query[] = "SELECT * FROM product";
if (mysql_query(&mysql, query))
{
fprintf(stderr,"Error executing query: Error %d: %s\n", mysql_errno(&mysql), mysql_error(&mysql));
}
result = mysql_use_result(&mysql);
if (!result) {
fprintf(stderr,"Error executing query: Error %d: %s\n", mysql_errno(&mysql), mysql_error(&mysql));
}
numcols = mysql_num_fields(result);
while (row = mysql_fetch_row(result)) {
for (c = 0; c < numcols; c++) {
printf("%s\t", row[c]);
}
printf("\n");
}
}
posted @
2008-07-14 15:36 liunix 閱讀(1039) |
評論 (0) |
編輯 收藏
一、安裝
1, 安裝xampp
2, 安裝zend studio[6]
二、配置調式
1,在http.conf中指定php.ini的位置
PhpIniDir "D:/xampp/php"
2, 在php.ini中的zend的部分指定以下內容(ZendDebugger.dll是從zend studio中搜出來的)
[Zend]
zend_extension_ts = "D:\xampp\php\zendOptimizer\lib\ZendDebugger_5.2.12.dll"
;下面部分可選
zend_debugger.allow_hosts=127.0.0.1/32,127.0.0.1/24
zend_debugger.expose_remotely=allowed_hosts
posted @
2008-07-07 11:38 liunix 閱讀(291) |
評論 (0) |
編輯 收藏
放在/usr/local/bin下,挺好用
#!/bin/sh
# this script converts an rpm into a plain tarball
mkdir $$.cpio
rpm2cpio $@ > $$.cpio/foo
cd $$.cpio
cpio -i -m -d < foo
rm -f foo
find . -type d -perm 700 -exec chmod 755 {} \;
tar cvzf ../`basename $@ .rpm`.tar.gz .
cd ../
rm -rf $$.cpio
posted @
2008-06-18 11:37 liunix 閱讀(347) |
評論 (0) |
編輯 收藏
1,去http://rpm.pbone.net/下載下列rpm包并安裝
libnasl-2.2.9-1.fc5.i386.rpm
nessus-core-2.2.9-1.fc5.i386.rpm
nessus-core-debuginfo-2.2.9-1.fc5.i386.rpm(可選)
nessus-libraries-2.2.9-1.fc5.i386.rpm
nessus-server-2.2.9-1.fc5.i386.rpm
nessus-gui-2.2.9-1.fc5.i386.rpm
2, 找個能用的郵箱去http://www.nessus.org/plugins/index.php?view=register注冊一下
3, 按郵件中的方式運行nessus-fetch --register ****
4, 運行nessus-adduser增加一個沒有rule的用戶
5, 運行nessus-mkcert造個證書
6, 運行nessus-fetch --check檢查一下狀態
7, 如果前面沒啥問題,運行service nessusd start
如果這一步除了成功沒啥別的輸出就ok啦
posted @
2008-06-18 10:44 liunix 閱讀(277) |
評論 (0) |
編輯 收藏
限制本機的對外訪問(例如不讓測試環境訪問生產庫):
iptables -t filter -A OUTPUT -d 192.168.2.2 -p tcp --dport 1521 -j REJECT
#端口轉發到另一臺機器上
-A PREROUTING -d $ip1 -i eth0 -p tcp -m tcp --dport $port1 -j DNAT --to-destination $ip2:$port2
-A POSTROUTING -d $ip2 -p tcp -m tcp --dport $port2 -j SNAT --to-source $ip1
#本機端口相互映射
-A PREROUTING -p tcp --dport $port1 -j REDIRECT --to-port $port2
posted @
2008-06-02 11:07 liunix 閱讀(224) |
評論 (0) |
編輯 收藏
pre-commit.tmpl,然后更名pre-commit并加上執行權限:
#!/bin/sh
REPOS="$1"
TXN="$2"
RES="OK"
# Make sure that the log message contains some text.
SVNLOOK=/app/subversion/bin/svnlook
$SVNLOOK log -t "$TXN" "$REPOS" | egrep "[^[:space:]]+" >/dev/null || unset RES
if [ "$RES" != "OK" ]
then
echo "You must input some comments for you commit" >&2
exit 1
fi
# All checks passed, so allow the commit.
exit 0
posted @
2008-05-28 14:18 liunix 閱讀(1495) |
評論 (0) |
編輯 收藏
fisheye(1.4.3):
cenqua_com_licensing.atlassian.license.DefaultLicense
isExpired(),getExpiryDate()
cenqua_com_licensing.atlassian.license.DefaultLicenseType(重點)
isEvaluationLicenseType(),expires().....
posted @
2008-05-28 11:13 liunix 閱讀(518) |
評論 (0) |
編輯 收藏
一,將pem格式的key文件導入keystore
摘抄備用:http://www.agentbob.info/agentbob/79-AB.html
說明: 經試驗證書的pem文件可能通過keytool直接導入keystore中的
Apache Tomcat and many other Java applications expect to retrieve SSL/TLS
certificates from a Java Key Store (JKS). Jave Virtual Machines usually come
with
keytool
to help you create a new key store.
Keytool helps you to:
- create a new JKS with a new private key
- generate a Certificate Signung Request (CSR) for the private key in this JKS
- import a certificate that you received for this CSR into your JKS
Keytool does not let you import an existing private key for
which you already have a certificate. So you need to do this yourself, here's
how:
Let's assume you have a private key (key.pem) and a
certificate (cert.pem), both in PEM format as the file names
suggest.
PEM format is 'kind-of-human-readable' and looks like e.g.
-----BEGIN CERTIFICATE-----
Ulv6GtdFbjzLeqlkelqwewlq822OrEPdH+zxKUkKGX/eN
.
. (snip)
.
9801asds3BCfu52dm7JHzPAOqWKaEwIgymlk=
----END CERTIFICATE-----
Convert both, the key and the certificate into DER format using
openssl
:
openssl pkcs8 -topk8 -nocrypt -in key.pem -inform PEM -out key.der -outform DER
openssl x509 -in cert.pem -inform PEM -out cert.der -outform DER
Now comes the tricky bit, you need something to import these files into the
JKS. ImportKey will do this for you, get the
ImportKey.java (text/x-java-source, 6.6 kB, info) source or the compiled (Java 1.5 !)
ImportKey.class (application/octet-stream, 3.3 kB, info) and run it like
user@host:~$ java ImportKey key.der cert.der
Using keystore-file : /home/user/keystore.ImportKey
One certificate, no chain.
Key and certificate stored.
Alias:importkey Password:importkey
Now we have a proper JKS containing our private key and certificate in a file
called keystore.ImportKey, using 'importkey' as alias and also as password. For
any further changes, like changing the password we can use keytool.
二、將私鑰導出成pem文件(默認keytool是不能導出私鑰的)
import sun.misc.BASE64Encoder;
import java.security.cert.Certificate;
import java.security.*;
import java.io.File;
import java.io.FileInputStream;
class ExportPriv {
public static void main(String args[]) throws Exception{
ExportPriv myep = new ExportPriv();
myep.doit();
}
public void doit() throws Exception{
KeyStore ks = KeyStore.getInstance("JKS");
String fileName = "store.jks";
char[] passPhrase = "password".toCharArray();
BASE64Encoder myB64 = new BASE64Encoder();
File certificateFile = new File(fileName);
ks.load(new FileInputStream(certificateFile), passPhrase);
KeyPair kp = getPrivateKey(ks, "alias", passPhrase);
PrivateKey privKey = kp.getPrivate();
String b64 = myB64.encode(privKey.getEncoded());
System.out.println("-----BEGIN PRIVATE KEY-----");
System.out.println(b64);
System.out.println("-----END PRIVATE KEY-----");
}
// From http://javaalmanac.com/egs/java.security/GetKeyFromKs.html
public KeyPair getPrivateKey(KeyStore keystore, String alias, char[] password) {
try {
// Get private key
Key key = keystore.getKey(alias, password);
if (key instanceof PrivateKey) {
// Get certificate of public key
Certificate cert = keystore.getCertificate(alias);
// Get public key
PublicKey publicKey = cert.getPublicKey();
// Return a key pair
return new KeyPair(publicKey, (PrivateKey)key);
}
} catch (UnrecoverableKeyException e) {
} catch (NoSuchAlgorithmException e) {
} catch (KeyStoreException e) {
}
return null;
}
}
posted @
2008-04-17 16:27 liunix 閱讀(8006) |
評論 (0) |
編輯 收藏
去年rails正火的時候,仿active record用hibernate實現了一個BasePo,當時用的是一個
靜態sessionfactory注入的方式,感覺很不好,當明也沒想到好的方案,后來發現有人通過
threadlocal實現了下面這個,可以看看:
1 public class Persistent implements Lifecycle, Validatable, Serializable {
2
3 protected Serializable _id;
4 protected int _version;
5
6 public Serializable getIdentifier() {
7 return _id;
8 }
9 public void setIdentifier(Serializable id) {
10 _id = id;
11 }
12 public int getVersion() {
13 return _version;
14 }
15 public void setVersion(int version) {
16 _version = version;
17 }
18
19 public Long persist() throws HibernateException, SQLException {
20 HibernateSession.currentSession().saveOrUpdate(this);
21 return _id;
22 }
23 public void delete() throws HibernateException, SQLException {
24 HibernateSession.currentSession().delete(this);
25 }
26 public void refresh() throws HibernateException, SQLException {
27 HibernateSession.currentSession().load(this, _id);
28 }
29 public void lock() throws HibernateException, SQLException {
30 HibernateSession.currentSession().lock(this, LockMode.UPGRADE);
31 }
32
33 public boolean onSave(Session s) throws CallbackException {
34 return NO_VETO;
35 }
36 public boolean onDelete(Session s) throws CallbackException {
37 return NO_VETO;
38 }
39 public boolean onUpdate(Session s) throws CallbackException {
40 return NO_VETO;
41 }
42 public void onLoad(Session s, Serializable id) {
43 _id = id;
44 }
45
46 public void validate() throws ValidationFailure {
47 }
48 }
原文:http://hibernate.bluemars.net/46.html?cmd=prntdoc
下面是hibernatesession的源碼,應該考濾一下如何與spring事務結合的問題(還是加一個doInTransaction 的callback?)
1 import java.util.Collection;
2
3 import net.sf.hibernate.HibernateException;
4 import net.sf.hibernate.Session;
5 import net.sf.hibernate.Transaction;
6
7 import org.apache.commons.logging.Log;
8 import org.apache.commons.logging.LogFactory;
9
10 /**
11 * @author Ralph Schaer
12 * @version $Revision: 1.6 $ $Date: 2004/05/22 12:24:32 $
13 */
14 public class HibernateSession {
15
16 private static final Log LOG = LogFactory.getLog(HibernateSession.class);
17 public static final ThreadLocal SESSION = new ThreadLocal();
18
19 public static Session currentSession() throws HibernateException {
20
21 Session s = (Session) SESSION.get();
22 if (s == null) {
23 s = HibernateFactoryManager.getSessionFactory().openSession();
24 SESSION.set(s);
25 }
26 return s;
27 }
28
29 public static Session getSession() throws HibernateException {
30 return HibernateFactoryManager.getSessionFactory().openSession();
31 }
32
33 public static void closeSession() {
34 try {
35 Session s = (Session) SESSION.get();
36 SESSION.set(null);
37 if (s != null) {
38 s.close();
39 }
40
41 } catch (HibernateException e) {
42 LOG.error("HibernateSession: closeSession", e);
43 }
44
45 }
46
47 public static void rollback(Transaction tx) {
48 if (tx != null) {
49 try {
50 tx.rollback();
51 closeSession();
52 } catch (HibernateException he) {
53 LOG.error("HibernateSession: rollback", he);
54 }
55 }
56 }
57
58 //Utility methods
59 public static int collectionSize(Collection coll) throws HibernateException {
60 return ((Integer) currentSession().createFilter(coll, "select count(*)").iterate().next()).intValue();
61 }
62
63 }
還有一種考慮泛型的方式可以參考:
http://privacyneed.info/index.php?hl=f5&q=uggc%3A%2F%2Fcrgreonpxyhaq.oybtfcbg.pbz%2F2007%2F07%2Fvzcyrzragvat-npgvirerpbeq-va-wnin.ugzy
posted @
2008-03-28 11:30 liunix 閱讀(483) |
評論 (0) |
編輯 收藏
從網上找了一段,寫得挺麻煩,但可以借一下思路
cat watch.sh
#!/bin/sh
cd /root/bin
PID=`ps -aef | grep Xms500M | grep -v grep | gawk '{print $2}'`
PID=`expr $PID + 1 - 1`
date
free
echo $PID
echo "------------------"
if [ $PID -eq 0 ]
then
sleep 10
/usr/java/tomcat/bin/startup.sh
sleep 160
fi
while [ 1 ]
do
date
free
echo "Tomcat process ID is $PID"
wget http://192.168.1.101/jsp/w_blog/blog.jsp -O working.jpg 2>> /dev/null &
sleep 120
touch working.jpg
SIZE=`du working.jpg | gawk '{print $1}'`
if [ $SIZE -le 20 ]
then
WID=`ps -aef | grep 192.168.1.101 | grep -v grep | gawk '{print $2}'`
WID=`expr $WID + 1 - 1`
if ! test -z $WID
then
killall wget
fi
echo "Tomcat restart checking
"
free
vmstat
FREEMEM=`free | grep Mem | gawk '{print $4}'`
if [ $FREEMEM -le 15000 ]
then
if [ $PID -ne 0 ]
then
kill -9 $PID
ls -l
/usr/java/tomcat/bin/shutdown.sh
fi
/usr/java/tomcat/bin/shutdown.sh
sleep 10
/usr/java/tomcat/bin/startup.sh
sleep 30
fi
date
ps -aef | grep -v httpd
ls -l
PID=`ps -aef | grep Xms500M | grep -v grep | gawk '{print $2}'`
PID=`expr $PID + 1 - 1`
fi
rm -f working.jpg
done
posted @
2008-03-24 19:25 liunix 閱讀(1300) |
評論 (0) |
編輯 收藏
1,設置好WEB-INF/classes/xplanner-customer.properties中的數據連接,建mysql庫[xplanner]
2, 運行會自動創建數據庫表和sysadmin/admin用戶
3, 中文亂碼,先導出數據庫[主要保存用戶維護數據]
mysqldump --opt --database xplanner > xplanner.sql
4, 將sql中的create database語句改成default charset utf8;
5, souce xplanner.sql
6, 將server-config.wsdd[WEB-INF]下的附件上傳位置改成合適目錄
7, 重啟xplanner即可
posted @
2008-03-20 20:22 liunix 閱讀(257) |
評論 (0) |
編輯 收藏
概念:
唯一的就是一個候選鍵(數據庫理論基礎)
所以要增加唯一性就是增加一個Alternate key
操作:
單擊表模型,選中keys簽,增加一個key,不選primary即可
信息來源sybooks online:
http://infocenter.sybase.com/help/index.jsp
查找unique constraint找出和PDM相關的內容
posted @
2008-03-19 15:36 liunix 閱讀(179) |
評論 (0) |
編輯 收藏
網上說的比較多
不過一定要記住
看服務進程的log:
view /var/log/mysql.log
在我這里問題是:
/usr/libexec/mysqld: Can't create/write to file '/tmp/'
說明mysql用戶無權使用/tmp目錄,改一下目錄權限就好了
chmow -R 777 /tmp
posted @
2008-03-18 14:29 liunix 閱讀(176) |
評論 (0) |
編輯 收藏
一,JIRA安裝
1, 下載最新的JIRA(要注冊才能得到測試liense)
2, 創建數據庫用戶[注意:jira用的utf8],create database jira default charset utf8; (mysql)
3, 按官網WIKI配置數據庫,所有表會自動創建
二,SUBVERSION-PLUGIN
1, 下載插件
2, 拷完lib到指定位置即可(不要拷properties)
3, 在管理端增加倉庫位置
三,svnwebclient
1, enscript不是語法加亮,只是加彩而已(而且大部分linux版本自帶)
posted @
2008-03-18 14:04 liunix 閱讀(221) |
評論 (0) |
編輯 收藏
1, 下載http://www.allwiki.com/wiki/Mediawiki
2, 解壓放到/var/www/html下,將config目錄權限改為777
3, 給apache增加一個配置文件mediawiki.conf,內容如下:
<Directory "/var/www/html/mediawiki">
AllowOverride None
Options +ExecCGI
Order allow,deny
Allow from all
</Directory>
4,瀏覽器中輸入:http://hostname/mediawiki/index.php
5,安裝看是否缺php-mysql,如果缺到fc5的cd-rom中安裝
6, 創建數據庫
mysql -u root
create database mediawiki;
grant all on mediawiki.* to mediawiki@'localhost' identified by 'mediawiki';
6, 輸入各項配置
7, mysql5創建表有問題,尚未解決,實在不行只能換個wiki看看了
posted @
2008-03-15 15:59 liunix 閱讀(156) |
評論 (0) |
編輯 收藏
1, 下載bugzilla
運行./checksetup.pl
2, 根據提示安裝perl模塊
位置:http://search.cpan.org/search?query=IO%3A%3AScalarArray&mode=all
下載后:
perl Makefile.pl
make
make test
make install
(過程如果有依整性錯誤,請安裝相應模塊)
3,配置mysql
mysql -u root
create database bugs
grant all on bugs.* to bugzilla@'localhost' identified by 'bugs'
4,配置vi ./localconfig設置數據庫
5, 再次運行./checksetup.pl會創建數據庫和設置bugzilla管理員(以mail作為登錄名)
6, 將bugzilla目錄拷到/www/html/下
7, 在/etc/httpd/conf.d/下增加bugzilla.conf內容如下:
AddHandler cgi-script .cgi .pl
<Directory "/var/www/html/bugzilla">
AllowOverride None
Options +ExecCGI
Order allow,deny
Allow from all
</Directory>
8,運行apachectl restart
9,訪問:http://hostname/bugzilla/index.cgi
posted @
2008-03-15 14:41 liunix 閱讀(166) |
評論 (0) |
編輯 收藏
常用操作:
-- job 權限
grant create job to somebody;
-- job 創建
begin
dbms_scheduler.create_job (
job_name => 'AGENT_LIQUIDATION_JOB',
job_type => 'STORED_PROCEDURE',
job_action => 'AGENT_LIQUIDATION.LIQUIDATION', --存儲過程名
start_date => sysdate,
repeat_interval => 'FREQ=MONTHLY; INTERVAL=1; BYMONTHDAY=1;BYHOUR=1;BYMINUTE=0;BYSECOND=0', -- 按月,間隔為1個(月),每月1號,凌晨1點
comments => '執行代理商清分程序'
);
end;
/
-- job 執行時間測試
DECLARE
start_date date;
return_date_after date;
next_run_date date;
BEGIN
start_date := sysdate;--to_timestamp_tz('10-OCT-2004 10:00:00','DD-MM-YYYY HH24:MI:SS');
return_date_after := start_date;
FOR i IN 1..10 LOOP
DBMS_SCHEDULER.EVALUATE_CALENDAR_STRING('FREQ=MONTHLY; INTERVAL=1; BYMONTHDAY=1;BYHOUR=1;BYMINUTE=0;BYSECOND=0',start_date, return_date_after, next_run_date);
DBMS_OUTPUT.PUT_LINE('next_run_date: ' || to_char(next_run_date,'yyyy-mm-dd HH24:MI:SS'));
return_date_after := next_run_date;
END LOOP;
END;
/
-- job 查詢
select owner, job_name, state from dba_scheduler_jobs;
select job_name, state from user_scheduler_jobs;
-- job 啟用
begin
dbms_scheduler.enable('BACKUP_JOB');
end;
/
-- job 運行
begin
dbms_scheduler.run_job('COLA_JOB',TRUE); -- true代表同步執行
end;
/
-- job 停止(不太好用)
begin
dbms_scheduler.stop_job(job_name => 'COLA_JOB',force => TRUE);
end;
/
-- job 刪除(對停job來說好用)
begin
dbms_scheduler.drop_job(job_name => 'COLA_JOB',force => TRUE);)
end;
/
posted @
2008-03-14 10:36 liunix 閱讀(624) |
評論 (0) |
編輯 收藏
位置:
http://xfire.codehaus.org/HTTP+Transport
posted @
2008-03-13 14:58 liunix 閱讀(533) |
評論 (0) |
編輯 收藏
1,一定不要下載.zip,而用tar.gz或bz2
2, 安裝到/usr/local/subverion時再啟apache
出現: /usr/local/subverion/lib/libaprutil-0.so.0: undefined symbol: gdbm_errno
解決:export LD_PRELOAD=/usr/lib/libgdbm.so.2 再執行 apachectl start(或 service httpd start)
可以將export這一行放入apachectl腳本中
3, 安裝可以自動更新apache中的moudle, 不用換rpm安裝剩下的svn等命令,這些只不過是服務器上的客戶端
只要以后執行/usr/local/subverion/bin下的命令即可(可以在profile中修改PATH)
posted @
2008-03-11 13:40 liunix 閱讀(228) |
評論 (0) |
編輯 收藏
1, 準備相關JAVA包
2, jce_policy-1_4_2.zip中的兩個jar到D:\jdk14\jre\lib\security
3, bcprov-jdk14-138.jar到D:\jdk14\jre\lib\ext并修改D:\jdk14\jre\lib\security\java.security加入
security.provider.6=org.bouncycastle.jce.provider.BouncyCastleProvider
posted @
2008-03-07 20:13 liunix 閱讀(208) |
評論 (0) |
編輯 收藏
posted @
2008-03-03 16:21 liunix 閱讀(926) |
評論 (0) |
編輯 收藏
一,基本安裝
如果不能獲得額外的IP
vmware-tool的安裝:
0, 將fc5安裝CD中的kernel-devel安裝上
1,將CD-ROM置為默認狀態
2, 在菜單中選取安裝vmware-tool
3,將cd mount上
4, install
5, 運行vmware-any-any-update101.tar.gz中的runme.pl(改其中的路徑/etc/vmware --> /etc/vmware-tools /usr/bin/vmware-config.pl -->/usr/bin/vmware-tool-config.pl)
-- 下面這個可能依賴前一項的成功
vm:網卡配置選nat
vm的linux中:netconfig 指定與"VMware Network Adapter VMnet8"相同的IP網段地址和子網
vm的linux中:子網默認網關和edit->virtual network setting->nat 中的網關地址一樣(還可以在neat中加上路由)
vm的dns: 和主機相同
vm的linux中:service network restart
二、添加硬盤
基本知識:
硬盤命名規則-----hda代表硬盤名,hda1則代表hda上的第1個分區
過程如下:
0, 在vmware中用新增硬盤向導添加一塊硬盤,下面就是操作linux的fdisk的事情了
1, fdisk -l ----------查看當前硬盤的分區情況
2, fdisk /dev/hdb --為指定硬盤分區
3, m -----------查看幫助
4, n -----------新建分區(要選主分區,不知何為)
5 w -----------寫入磁盤的分區表
6, mkfs -t ex2 /dev/hdb1 --為新建分區創建文件系統(或mkfs.ex2 /dev/hdb1,都是mkfs.$type 命令系列)
##7, mount /hdb1 /dev/hdb1 加載新建文件系統
若使用了邏輯卷管理器:則用system-config-lvm調整,可以將新建的分區邏輯地加到原來的
mount點下,等于動態擴展了原來的磁盤(比較好用)
posted @
2008-02-27 09:19 liunix 閱讀(184) |
評論 (0) |
編輯 收藏
xplanner 進度
bugzilla(--jira) bug
eclipse mylyn 任務
emma 覆蓋
cs 集成
SVN 版本
ant 構建
selenium 黑盒測試
--wiki 文檔
junit 白盒測試
ant 構建
--powerdesigner 數據庫設計
--rose/vision UML/流程圖工具
--word 文檔工具
人個schedule qorganizer
說明: --為收費工具
posted @
2008-02-26 11:07 liunix 閱讀(128) |
評論 (0) |
編輯 收藏
ant
<?xml version="1.0"?>
<project name="PGAgent" basedir="." default="default">
<target name="default" depends="deploy" description="代理商平臺構建" />
<property name="build.path" value="build" />
<tstamp>
<format property="date.MMdd" pattern="MMdd"/>
</tstamp>
<filterset id="filter.test">
<filter token="dataSource.url" value="jdbc:oracle:thin:@1.2.3.4:1521:p5dbb1"/>
<filter token="dataSource.username" value="gagent"/>
<filter token="dataSource.password" value="gagent"/>
<filter token="log4j.path" value="/home/xuzhijin/logs/pgagent/pgagent.log"/>
</filterset>
<filterset id="filter.deploy">
<filter token="dataSource.url" value="null"/>
<filter token="dataSource.username" value="null"/>
<filter token="dataSource.password" value="null"/>
<filter token="log4j.path" value="null"/>
</filterset>
<target name="deploy" depends="test_tidy,deploy_tidy">
<antcall target="clean_before" />
<zip destfile="${build.path}/${ant.project.name}_test_${date.MMdd}.zip" basedir="${build.path}/test" />
<zip destfile="${build.path}/${ant.project.name}_deploy_${date.MMdd}.zip" basedir="${build.path}/deploy" />
<antcall target="clean_after" />
</target>
<target name="deploy_tidy">
<copy todir="${build.path}/deploy/${ant.project.name}/">
<fileset dir="${basedir}/WebRoot/">
<exclude name="**/.svn"/>
<exclude name="**/.svn/*.*"/>
</fileset>
</copy>
<copy todir="${build.path}/deploy/${ant.project.name}/WEB-INF/classes" overwrite="true" >
<fileset dir="${basedir}/buildFilter/">
<include name="*.properties"/>
</fileset>
<filterset refid="filter.deploy" />
</copy>
</target>
<target name="test_tidy">
<copy todir="${build.path}/test/${ant.project.name}/">
<fileset dir="${basedir}/WebRoot/">
<exclude name="**/.svn"/>
<exclude name="**/.svn/*.*"/>
</fileset>
</copy>
<copy todir="${build.path}/test/${ant.project.name}/WEB-INF/classes/" overwrite="true" >
<fileset dir="${basedir}/buildFilter/">
<include name="*.properties"/>
</fileset>
<filterset refid="filter.test" />
</copy>
</target>
<target name="clean_after">
<delete dir="${build.path}/test" />
<delete dir="${build.path}/deploy" />
</target>
<target name="clean_before">
<delete file="${build.path}/${ant.project.name}_test_${date.MMdd}.zip" />
<delete file="${build.path}/${ant.project.name}_deploy_${date.MMdd}.zip" />
</target>
</project>
bash:
#!/bin/bash
file_prefix=PGAgent_test
dest_dir=/usr/local/ciecc/webapps/
today=`date +%m%d`
rm -rf $dest_dir${file_prefix%_*}
unzip -d $dest_dir $file_prefix'_'$today.zip
tail -f /home/xuzhijin/logs/pgagent/pgagent.log
posted @
2008-02-22 20:28 liunix 閱讀(155) |
評論 (0) |
編輯 收藏
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.isBlank = function() {
return this == null || this == "";
}
function validate_required(form){
for(var i=0;i<form.elements.length;i++){
var element = form.elements[i];
if(null != element.getAttribute('required') && 'TRUE' == element.getAttribute('required').toUpperCase()){
if(element.value.trim().isBlank()){
alert('所有必填項都不能為空');
return false;
}
}
}
return true;
}
function validate_pattern(form){
for(var i=0;i<form.elements.length;i++){
var element = form.elements[i];
if(null != element.getAttribute('pattern')){
if( !element.value.trim().isBlank() && !new RegExp(element.getAttribute('pattern').split("/")[0]).test(element.value.trim())){
alert(element.getAttribute('pattern').split("/")[1]);
return false;
}
}
}
return true;
}
-- 校驗不必填的傳真只填一半的特殊情況
function validate_other(form){
if(form.cpFaxPart1.value.isBlank() != form.cpFaxPart2.value.isBlank()){
alert('公司傳真未填寫完整(也可完全不填)');
return false;
}
return true;
}
function validate(form){
return validate_required(form) && validate_pattern(form) && validate_other(form);
}
posted @
2008-02-15 15:52 liunix 閱讀(165) |
評論 (0) |
編輯 收藏
alter session set max_dump_file_size=unlimited;
alter session set timed_statistics=true;
alter session set events '10046 trace name context forever, level 12';
select 'Hello, world; today is '||sysdate from dual;
exit;
tkprof card_ora_13226.trc trace.txt print=100 record=sql.txt sys=no
然后查年trace.txt就是分析內容了
posted @
2007-11-06 09:52 liunix 閱讀(378) |
評論 (0) |
編輯 收藏
#少了一步安裝 fcgi本身的
#將public下面的所有ruby路徑改正確
#詳細說明如何啟用fcgi而不是cgi(改.htpaccess)
#將ruby-fcgi按README安裝完全
#啟用SYBASE要設置/etc/ld.so.conf加上sybase的lib路徑(APACHE以NOBODY啟動,LD_LIBRARY_PATH似乎沒用)
1,為編譯fastcgi,安裝httpd-dev包
rpm -ivh httpd-dev***.rpm #會要求安裝其它依賴包
2,構建mod_fastcgi.so,正常構建會報缺少文件(對fc4自動安裝apache而言),會自動加入/usr/lib/httpd/module中,/etc/httpd/conf/httpd.conf也會自動加載(但語法不對)
apxs -n mod_fastcgi -i -a -c mod_fastcgi.c fcgi_buf.c fcgi_config.c fcgi_pm.c fcgi_protocol.c fcgi_util.c #在解壓后的mod_fast2.4.2包中執行,構建mod_fast.so
chmod 755 /usr/lib/httpd/modules/mod_fastcgi.so #修改訪問權限
3,ruby的fcgi模塊正確安裝方法
1,下載ruby-fcgi-0.8.7.tar.gz
2,ruby install.rb config -- --with-fcgi-include=/usr/local/include --with-fcgi-lib=/usr/local/lib (指向正確的fcgi安裝路徑)
3,其余按readme
4,為apache配置虛擬主機(客戶機的host要配合指向)---還要加上一條時間選項
<Directory /var/www/>
AllowOverride all
</Directory>
LoadModule fastcgi_module modules/mod_fastcgi.so
FastCgiConfig -singleThreshold 100 -killInterval 300 -autoUpdate -idle-timeout 240 -pass-header HTTP_AUTHORIZATION
AddHandler fastcgi-script .fcgi
<VirtualHost *:80>
ServerAdmin webmaster@example.com
DocumentRoot /var/www/rails/testapp/public #testapp即為你rails程序的根目錄
ServerName www.example.com
ErrorLog /var/log/httpd/testapp-error_log
CustomLog /var/log/httpd/testapp-access_log common
Options Indexes ExecCGI FollowSymLinks
RewriteEngine On
</VirtualHost>
6,啟動apache,看歡迎頁面
apachectl start #用這種方式可以在控制臺查看錯誤消息(應該會報一條無效的加截so的行190?)
7,根據需要修改rails應用(producation環境,facgi的dispatch,數據庫支持)
8,后續修改如下
chown -R apache.apache ${railsapp}
mkdir /tmp/fcgi_ipc
httpd.conf-->FastCgiIpcDir "/tmp/fcgi_ipc/"
chown -R apache.apache /tmp/fcgi_ipc
錯誤情況分析:
1,apache的error.log或app的error.log會報:(權限問題)
[Sun Nov 19 14:05:29 2006] [crit] (13)Permission denied:
FastCGI: can't create (dynamic) server "/var/www/rails/testapp/public/dispatch.fcgi":
bind() failed [/etc/httpd/logs/fastcgi/dynamic/3c713fbde3044b67e240a7bf3791f36b]
2,測試dispatch.fcgi的方法ruby -d dispatch.fcgi
3,app下面的fastcgi.crash.log中產生----注意,說方法丟失可能是c的動態庫沒有找到
Dispatcher failed to catch: undefined method `is_cgi?' for FCGI:Class (NoMethodError)
fcgi的問題
posted @
2007-08-10 11:46 liunix 閱讀(967) |
評論 (0) |
編輯 收藏
1, 安裝系統時盡量不要選擇ruby,如果已安裝
rpm -qa | grep ruby
rpm -e ${已安裝上ruby包名}
2, 檢查系統,確定已安裝gcc,make
gcc -v
make -v
3, 安裝ruby 1.8.5
wget ftp://ftp.ruby-lang.org/pub/ruby/ruby-1.8.5.tar.gz
tar xzvf ruby-1.8.5.tar.gz
cd ruby-1.8.5
./configure --prefix=/usr/local/ruby
make && make install
export PATH=$PATH:/usr/local/ruby/bin/
4, 安裝rubygems
wget http://rubyforge.org/frs/download.php/20990/rubygems-0.9.4.zip
unzip rubygems-0.9.4.zip && cd rubygems-0.9.4
ruby setup.rb
5, 安裝rails
gem install rails -v=1.2.3
各種依賴庫均選Y
6, 安裝mongrel(有平臺選項的均選ruby)
gem install mongrel
各種依賴庫均Y
7, 安裝sybase-ruby庫
wget http://enjoy1.bb-east.ne.jp/~tetsu/sybct-ruby-0.2.9.tar.gz
tar xzvf sybct-ruby-0.2.9.tar.gz
cd sybct-ruby-0.2.9
編緝extconf.rb文件,指向正確sybase路徑
ruby extconf.rb
make
cp sybct.o sybct.so sybct.rb sybsql.rb /usr/local/ruby/lib/ruby/site_ruby/1.8/i686-linux
export LD_LIBRARY_PATH=${SYBASE_HOME}/OCS-12_5/lib
8, 結合apache與mongrel (APP_ROOT為應用程序根目錄)
參見文章: http://mongrel.rubyforge.org/docs/apache.html
9, 安裝ImageMagick和RMagic(不要安裝RMagic的gem包)
先檢查依賴庫:libpng,libjpeg,libtiff,gd-devel
unzip ImageMagick-6.3.4-4.zip
cd ImageMagick-6.3.4-4
./configure --prefix=/usr/local/ImageMagick
make && make install
export PATH=$PATH:/usr/local/ImageMagic/bin
編輯:/etc/ld.so.conf,加入
/usr/local/ImageMagick/lib
執行:ldconfig
tar xzvf RMagick-1.15.6.tar.gz
cd RMagick-1.15.6
./configure
make && make install
posted @
2007-07-11 12:44 liunix 閱讀(629) |
評論 (0) |
編輯 收藏
cygwin清屏:
1, ctrl+l
2, alias cls='echo -e "\E[2J"'
復制,粘帖:
控制臺的編輯選項選上"快帶編輯"
就可以左鍵直接選取,右鍵粘帖了
posted @
2007-06-11 20:19 liunix 閱讀(2540) |
評論 (0) |
編輯 收藏
為了rails的圖形開發
參照 robbin說法:
http://robbin.javaeye.com/blog/post/296400
補充一下:
下ImageMagick的源碼版(即便安裝了rpm,也再下一版)
configure時一定指定路徑
RMagick也最好是源碼版
posted @
2007-05-31 20:33 liunix 閱讀(146) |
評論 (0) |
編輯 收藏
目的:為了用老的gcc進行sybase的c開發
-,fc6 上安裝 VMware
1, 下載VMware-server-1.0.1-29996.tar.gz,vmware-any-any-update109.tar.gz,yum install xined
2, 安裝vmware(一路default),config.pl報錯,運行update109,搜一個注冊碼填上
3,啟動xinted,vmware的xined腳本
4, 啟動客戶端vmare
二,vmware安裝rh7
圖形界面,不說了
安裝 sshd_server,setup 配置開啟sshd服務, 然后service sshd start
執行ipchains -A input -p tcp -s 192.168.1.6 -d 192.168.1.8 22 -j ACCEPT
打開防火墻端口:ipchains(7.1就變成真的iptable了)
三,openclient 12.5
先裝common rpm再openclient.rpm
posted @
2007-05-25 23:48 liunix 閱讀(327) |
評論 (0) |
編輯 收藏
一,3.12版
1, 慢
3.12版真的很慢,那就用ibm的jre吧,聽說4.0就好了
2, 類庫的引入
project properties--->c/c++builder-->Tools setting選項中
3, 2中的warning選項最好別改,否則build項目會有問題
4, 剛上手的話,最好使用managed c project
5, 問題binaries要變沒,那就換瀏覽視圖找到二進制文件右鍵debug吧
二,4,0 m版
總得來說,快了,功能多了,復雜了,可以直接用sun的jdk了,run/debug沒前一版方便了
1, 配eclipse 3.3 m版
2, 項目的配置界面變化不小
3, 項目默認不啟用自動構建
4, 問題:加入線程庫的L和l后,編譯還會報找不到,一個鐘頭過去了
直接鏈接的字串中手工加上lpthread即可,這個應該算是個偏方了。。。
posted @
2007-05-17 14:39 liunix 閱讀(1365) |
評論 (0) |
編輯 收藏
顯示行號:
第一步:安裝setnu.el到/usr/share/emacs/site-lisp目錄下;
第二步:在.emacs中添加
(require 'setnu)
(setnu-mode t)
第三步:在啟動emacs后M-x setnu-mode即可以!
posted @
2007-05-14 10:07 liunix 閱讀(158) |
評論 (0) |
編輯 收藏
出現check sum metadata error 的時候:
yum clean all
posted @
2007-05-14 10:05 liunix 閱讀(122) |
評論 (0) |
編輯 收藏
1, 手工清除后,數據庫中還會存有記錄:
select * from v$flash_recovery_area_usage;
2, 然后:
rman target /
crosscheck archivelog all;
delete expired archivelog all;
說明:2是修復1的辦法,也應該是正常清除歸檔日志的辦法吧
posted @
2007-05-11 18:16 liunix 閱讀(2068) |
評論 (0) |
編輯 收藏
1, 編譯通過helloworld
cc hello.c -o b.out `pkg-config --cflags --libs gtk+-2.0`
后面的``內容主要是類庫和頭文件的引入,看來要仔細看看gcc的東西了
posted @
2007-04-30 11:22 liunix 閱讀(306) |
評論 (0) |
編輯 收藏
1,啟用審計記錄
alter system set audit_trail=DB SCOPE=SPFILE //audit_trail的可選值為:OS或者NONE
startup force
2, 啟/禁用審計
audit table by scott
noaudit table by scott
3, 查詢審計
先從字典中找出audit的相關視圖
dba_stmt_audit_opts 關于已定義的審計
dba_trail 已有審計的記錄
....這里是stmt審計,其它種類審計待續...................
posted @
2007-04-27 10:06 liunix 閱讀(233) |
評論 (0) |
編輯 收藏
一個月前裝ralis
gem install rails --include-dependencies
版本為1.2.1
現在升級
gem update rails --include-dependencies
版本為1.2.3
(反安裝gem uninstall ? -v=?, 要一個包一個包的來)
但原的程序是在1.1.4上做的
出現問題,只好建了一個1.2.3的工程,將程序手工復制過來,
我是在fc上開發,出現編碼錯誤,在環境文件中加上
$KCODE="none"
即可
附:gem 使用說明
gem --help 列出用法
gem help commands 列出所有子命令
gem help ${subcommand} 列出子命令用法
posted @
2007-04-23 19:05 liunix 閱讀(450) |
評論 (0) |
編輯 收藏
1, realplayer直接下載安裝.bin即可
可能會輸入法有沖突,那么將realplay文件頭中加上export GTK_IM_MODULE=xim
2, mplayer
裝yum擴展庫
rpm -ivh http://rpm.livna.org/livna-release-6.rpm
rpm -import http://rpm.livna.org/RPM-LIVNA-GPG-KEY
(
rpm -ivh http://ftp.freshrpms.net/pub/freshrpms/fedora/linux/6/freshrpms-release/freshrpms-release-1.1-1.fc.noarch.rpm 可選)
yum -y install mplayer
裝maplayer菜單項
yum install mplayer-gui
yum install mplayerplug-in
讓firefox正確打開mms媒體
地址欄:about:config
在顯示網頁的區域單擊右鍵,選擇新建字符串,串名是
network.protocol-handler.app.mms
串值是:
/usr/bin/mplayer
posted @
2007-04-19 20:35 liunix 閱讀(185) |
評論 (0) |
編輯 收藏
一,聯機日志文件1,查看概要信息
select l.group#,l.bytes/1024/1024 M,f.member from v$log l,v$logfile f
where l.group#=f.group# order by 1
2,增/刪一個新組
alter database add logfile
group 4
('/oracle/oradata/orcl/redo04.log')
size 50M
/
系統會自動創建文件
alter database drop logfile group 4
/
rm logfile redo04.log
在fc6不知為何還要手工刪除
3,為一個組增刪日志成員
先建一個多文件的測試組,(前面的建的單文件的測試組增加成員時會報文件名字錯誤), 可見日志組的成員數并不要求一致
alter database add logfile
group 4
('/oracle/oradata/orcl/redo0401.log',
'/oracle/oradata/orcl/redo0402.log')
size 50m
增加文件(不用指定文件大小)
alter database add logfile member
'/oracle/oradata/orcl/redo0403.log'
to group 4
/
刪除文件
alter database drop logfile member '/oracle/oradata/orcl/redo0403.log'
rm redo0403.log
4, 重命名日志文件會用到 alter database rename file 'old' to 'new' ,過程麻煩,還不如刪了重建
5, 清理日志組(刪除并重建)
alter database clear logfile group 4
/
二,歸檔日志文件
1,查看歸檔日志是否啟用的方法
achive log list
select log_mode from v$database
2, db_recovery_file_dest == USE_DB_RECOVERY_FILE_DEST (地址)
3, shutdown immediate
4, startup mount
5, alter database archivelog
6, alter database open
7, alter database switch logfile 生成一個新的
posted @
2007-04-12 17:55 liunix 閱讀(1842) |
評論 (0) |
編輯 收藏
1, 數據文件
dba_data_files
2,日志文件
v$log 大小
v$logfile 路徑
3, 控制文件
show parameter control
posted @
2007-04-12 17:49 liunix 閱讀(204) |
評論 (0) |
編輯 收藏
1, 找到glogin.sql
設置:
-- custom setup
REM Number of lines of SELECT statement output before reprinting headers
SET PAGESIZE 999
REM Width of displayed page, expressed in characters
SET LINESIZE 132
REM Enable display of DBMS_OUTPUT messages. Use 1000000 rather than
REM "UNLIMITED" for databases earlier than Oracle Database 10g Release 2
SET SERVEROUTPUT ON SIZE UNLIMITED FORMAT WRAPPED
REM Change default to "vi improved" editor
DEFINE _EDITOR = /usr/bin/vim
REM Format misc columns commonly retrieved from data dictionary
COLUMN segment_name FORMAT A30 WORD_WRAP
COLUMN object_name FORMAT A30 WORD_WRAP
REM set the prompt (works in SQL*Plus from Oracle9i Database or later)
SET SQLPROMPT "_USER'@'_CONNECT_IDENTIFIER > "
2, c /a/b/g 替換
3, a [_][_] asdf 追加,注意兩個空格
4, column ${列名} format aNN 格式化字符
column ${列名} format 99999.99 格式化數字,一個9代表1位
posted @
2007-04-12 17:44 liunix 閱讀(176) |
評論 (0) |
編輯 收藏
declare
my_exception EXCEPTION;
pragma EXCEPTION_INIT(my_exception,-20000);
begin
raise_application_error(-20000,'自定義錯語');
exception when my_exception then
dbms_output.put_line('捕到了:'||sqlcode||sqlerrm);
end;
/
posted @
2007-04-12 16:48 liunix 閱讀(427) |
評論 (0) |
編輯 收藏