隨筆-69  評論-0  文章-5  trackbacks-0
            2007年5月11日
          先占個地兒
          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>

          <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 
          ---< 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 -"$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 閱讀(8007) | 評論 (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 -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 -grep | gawk '{print $2}'`
          WID
          =`expr $WID + 1 - 1`

          if ! test -$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 -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 
          -$dest_dir $file_prefix'_'$today.zip
          tail 
          -/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)編輯 收藏
          主站蜘蛛池模板: 平度市| 刚察县| 乐都县| 平果县| 龙门县| 邯郸县| 弋阳县| 广安市| 凤台县| 连州市| 泰顺县| 东平县| 徐闻县| 北川| 城步| 蓝田县| 普洱| 甘孜县| 富川| 武冈市| 潼南县| 建阳市| 徐州市| 衡水市| 尼木县| 中牟县| 铁岭县| 乐山市| 磐安县| 渭南市| 新巴尔虎右旗| 安康市| 长岭县| 罗平县| 灵璧县| 新龙县| 梁河县| 清涧县| 元朗区| 汉沽区| 岢岚县|