2010年8月25日 星期三

Jquery tooltip


最近做了一個功能,如圖
利用Jquery的Plugin(qTip),應用在系統上,功能是按下交易類別的欄位會去取資料(利用ajax),透過小div顯示(術語叫tooltip),一般都是用滑鼠滑過就會出現,但我這次是要按下才會顯示,避免不經意的滑過也會去撈資料。

step 1 :
< script type="text/javascript" src="${scripts}/jquery.js" >< /script >
< script type="text/javascript" src="${scripts}/jquery.qtip-1.0.0-rc3.js" >< /script >

step 2 :
$(document).ready(function(){

$("a[href$='ABC']").each(function(){

$(this).qtip({
content: { url: 'ajax.do', data: { id: $(this).attr("rel")}, method: 'get' },
show: { when: { event: 'click' } },
hide: 'mouseout',
style: {
width: 70,
padding: 0,
background: '#A2D959',
color: 'black',
textAlign: 'left',
border: {
width: 7,
radius: 5,
color: '#A2D959'
},
tip: 'topLeft'
}

})


})
});
</script>

step 3 :
table部份,只要是a href的值是以ABC結尾都套用這個tooltip
...
<c :when test="${s.bonusCatVO == '88888888' }">
< a href="#ABC" rel="${s.cateDetail}" >包月消費< /a >
</ c:when>
...

step 4 : ajax.do

String appId = request.getParameter("id");
AppVO app = pointFacade.getApp(appId);
if(app!=null){
String appName = app.getAppname();
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
out.println(appName);
out.close();
}

2010年8月10日 星期二

Dell 1950 Riser card

在裝換Dell PowerEdge 1950的PCI-X的Riser card後,無法開機,連電源都開不了,並顯示錯誤代碼 E1A11。搞了半天才查到server上的Riser card必須一致,也就是說換了短的PCI-X的,也必須把另一個長的換成PCI-X的Riser card,不可以一邊用PCI-E一邊用PCI-X,或一邊有插一邊沒插。

這個特別的規定是接觸這麼久以來第一次遇過,一整個無言。

網路上也發現有人遇到這種情況

2010年8月5日 星期四

Tomcat

安裝Tomcat的Administration Web Application
這個admin webapp只是方便你去編輯xml(server.xml、tomcat-users.xml及各webapps內的web.xml)罷了,老實說如果對tomcat夠了解,這根本用處不大。
在CATALINA_HOME/conf/tomcat-users.xml內加一個admin 角色
<role rolename="admin"/>
<user username="admin" password="joseph" roles="admin"/>
把下載下來的解壓到${catalina.home}/server/webapps/ 或 ${catalina.home}/webapps/
當然你放到哪就要告訴tomcat你放在哪,${catalina.home}/conf/Catalina/localhost內的admin.xml要把路徑設好

把tomcat-users.xml內的password加密,${catalina.home}/conf內的server.xml
<Realm ... resourceName="UserDatabase" digest="MD5"/>
利用tomcat內的工具進行加密,在${catalina.home}\bin打
digest.bat -a MD5 joseph
就會得到joseph進行MD5加密後的結果
joseph:cb07901c53218323c4ceacdea4b23c98
完成如下:
<user username="admin" password="cb07901c53218323c4ceacdea4b23c98" roles="admin"/>


如果要讓限制來源IP進入tomcat manager webapp 內去reload或stop webapp可以在tomcat_home/conf/Catalina/manager.xml內加入

<Context antiResourceLocking="false" privileged="true" >
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127.0.0.1,192.168.11.101,192.168.11.122"/>

</Context>
以上是限制只有本機和192.168.11.101及192.168.11.122的user進入。

2010年7月8日 星期四

JSP EL 顯示成功與否

如果web.xml內的version是2.5

web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5"

就要在jsp前加上
.... pageEncoding="UTF-8" isELIgnored="false"

2.4版的就不用因為EL預設就是ingore為false
web-app id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"

Mysql在Linux從安裝到啟動和開機時自動啟動服務的設定

Mysql 在 Linux 系統中開啟服務的方式
如果是以binary檔,也就是下載mysql-5.1.48-linux-i686-glibc23.tar.gz
以下是設定流程:
1.解壓到/usr/local/mysql下
#tar -xz -f mysql-5.1.48-linux-i686-glibc23.tar.gz -C /usr/local/mysql
此時mysql的主目錄(以下用mysql_home稱之)會是:/usr/local/mysql/mysql-5.1.48-linux-i686-glibc23

2.新增mysql group , 並建立一個mysql user於該group內
# groupadd mysql
# useradd mysql -g mysql
3.在mysql_home的support-files內複製檔案到/etc
# cp mysql_home/support-files/my-medium.cnf /etc/my.cnf

4. 到mysql_home,然後執行初始化DB的工作(內容請參閱手冊
# ./scripts/mysql_install_db --user=mysql

5.設定一些權限(mysql_home內)
# chown -R root .
# chown -R mysql data

# chown -R mysql data/.
# chgrp -R mysql .

6.啟動看看
# /usr/local/mysql/bin/mysqld_safe --user=mysql &
如果看到mysql ended 等的字就是失敗,快去看一下log
7.如果成功用命令修改root預設為空的密碼
# mysql_home/bin/mysqladmin -u root password yourpassword

8.接下來設定開機啟動mysql服務
# cp mysql_home/support-files/mysql.server /etc/rc.d/init.d/mysqld
# chmod 700 /etc/init.d/mysqld
# chkconfig --add mysqld
# chkconfig --level 345 mysqld on

9.修改/etc/rc.d/init.d/mysqld的內容(斜體部份是要填入的)
basedir=/usr/local/mysql/mysql-5.1.48-linux-i686-glibc23
datadir=/usr/local/mysql/mysql-5.1.48-linux-i686-glibc23/data

10.之後就可以用
service mysqld start 來啟動
service mysqld stop 來關閉或
mysql_home/bin/./mysqladmin -u root -p shutdown

另一種方式,附加在rc.local內
[root @hostname /root]# vi /etc/rc.d/rc.local
/usr/local/apache/bin/apachectl start
/mysql_home/mysql.server start

2010年6月14日 星期一

oracle backup

backup control file :
SQL> alter database backup controlfile to trace;
it will generate sid_ora_XXXX.trc at "C:\oracle\product\10.2.0\admin\orcl\udump"

backup tablespace and datafile file:
SQL> spool c:\work_dump/spoolback.txt
SQL> select * from dba_tablespaces;
SQL> select * from dba_data_files;
SQL> spool off;
SQL> exit

DB dump :
C:\Documents and Settings\Administrator>exp system/oracle full=y file="c:/work_d
ump/joseph_'yourDate'.dump" statistics=none inctype=complete
in Linux 'yourDate' can be "date+%Y%m%d%H%M%S"

So we have three file and backup it up to another disk !

LockMode in DAO of Hibernate

public ProfileVO getProfilebyLoginIdLockMode(final String loginId){
ProfileVO vo = null;
List list = (List)this.getHibernateTemplate().execute(new HibernateCallback(){
public Object doInHibernate(org.hibernate.Session session) throws HibernateException, SQLException {
Criteria cri=session.createCriteria(ProfileVO.class,"p");
cri.add(Restrictions.eq("p.loginId", loginId)).setLockMode(LockMode.FORCE);
return cri.list();
}
});

if(list.size()>0){
vo = (ProfileVO)list.get(0);
}
return vo;
}

do not use the following method , because it will get a new persistent context and lock will be failure !

...
Session session = this.getHibernateTemplate().getSessionFactory().openSession();
Transaction tx = session.beginTransaction();
Query query = session.createQuery("from ProfileVO p where p.loginId='"+loginId+"'").setLockMode("p", LockMode.FORCE);
List list1 = query.list();

if(list1.size()>0){
vo = (ProfileVO)list1.get(0);
}
tx.commit();
session.close();

COVID-19 確診經歷紀實

原本以為真的是天選之人,就算先前家裡兩個小孩都確診都逃過了(可能有中獎但無症狀吧),不過就在2023年六月18日破解自認為天選之人的"心態",為什麼可以確認就是這天中獎的呢?因為在前都是居家上班,到人多的室內場所都會戴口罩,就剛好這天傍晚原本只想說要去附近的國...