프로그램 개발 기교 소결

1.백분율 을 사용 하 는 DIV 레이아웃 에서 IFRAME 사용
이때 IFRAME 내의 너비 백분율 은 100%로 설정 하면 안 되 고 98%로 설정 할 수 있 으 며 스크롤 바 에 약간의 폭 을 남 겨 두 면 레이아웃 이 흐 트 러 지기 쉽다.
2.Ext 탭 패 널 숨 기기 방식
Ext 의 tabPanel 에 있 는 item 의 숨 김 은 hideTabStripItem 방법 을 사용 할 수 있 습 니 다.또한 렌 더 링 전에 이 방법 을 사용 하여 필요 하지 않 은 item 을 숨 길 수 있 습 니 다.
3.Ext 의 DataView 데이터 업데이트 방식
DataView 의 store.insert(record)또는 store.loadData(data,true/false)를 사용 할 수 있 습 니 다.
4.자바 웹 프로그램 에서 request.getRealPath(")로 가 져 온 경로
linux 서버 에서 받 은 경 로 는:/.../,
window 서버 에서 받 은 것 은:/...
두 가지 차 이 는 Liux 경로 뒤에 평행봉 이 하나 더 생 겼 다 는 것 이다.
5.Ext 구성 요소(예 를 들 어 panel)의 html 속성 과 items,layot:'border'의 충돌

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
<title>test</title>
<link href="ext/resources/css/ext-all.css" type="text/css" rel="stylesheet"/>
<script language="javascript" src="ext/adapter/ext/ext-base.js"></script>
<script language="javascript" src="ext/ext-all.js"></script>
<script type="text/javascript">
Ext.onReady(function() {

			Ext.QuickTips.init();

			var tabs = new Ext.TabPanel({
						region : 'center',
						margins : '3 3 3 0',
						activeTab : 0,
						defaults : {
							autoScroll : true
						},

						items : [{
									title : 'Bogus Tab',
									html : ''
								}, {
									title : 'Another Tab',
									html :''
								}, {
									title : 'Closable Tab',
									html : '',
									closable : true
								}]
					});

			// Panel for the west
			var nav = new Ext.Panel({
						title : 'Navigation',
						region : 'west',
						split : true,
						width : 200,
						collapsible : true,
						margins : '3 0 3 3',
						cmargins : '3 3 3 3'
					});

			var panel = new Ext.Panel({
						//html:'       !',
						collapsible : true,
						height : 795,
						width : 1050,
						layout :'border',
						items:[nav,tabs]

					})
			panel.render('panel');

		}); 

</script>
</head>

<body>
<div id="panel"></div>
</body>
</html>

6.Oracle 함수 decode 와 sign 의 사용
단점 ACT 통계 필요STOP 의 개수 와(미)열 린 개수:이벤트 ACTIVE 에 정지점 이 있 는 지 먼저 판단 한 다음 에 정지점 에 시간 이 설정 되 어 있 는 지,설정 되 어 있 지 않 으 면'9999-12-31 23:59'로 시간 을 줍 니 다.그 다음 에 정지점 이 열 렸 는 지 여 부 를 판단 합 니 다(시스템 현재 시간 과 비교).정지점(1 또는 0)에 정지점 이 열 린 상태(decode 와 sign 이 얻 은 값 의 1 또는 0)의 값 을 곱 하여 정지점 이 열 린 개 수 를 판단 합 니 다(1 이면 열 리 고 0 이면 열 리 지 않 음).마지막 으로 프로그램 에서 정지점 개수 와 정지점 개수 의 차 이 를 계산 하여 열 리 지 않 은 정지점 개 수 를 얻 을 수 있 습 니 다.

select res.COS_PLAN_LES_ID,(res.PLAN_DATE||' '||res.LESSON_STAR) LESSON_STAR,(res.PLAN_DATE||' '||res.LESSON_END) LESSON_END,res.LESSON_SEQ,res.DESIGN_ID,res.DESIGN_NAME,res.SCHOOL_CODE,res.GRADE_CODE,res.SUBJECT_CODE,res.BOOK_ID,res.CATALOG_ID,nvl(res.PLAN_ID,0) PLAN_ID,res.OPEN_STOP,res.ISSUE_DATE,res.DES_STATUS,

--      :       ,ACT_STOP 1,    0,  sum            --
sum(res.ACT_STOP) ACT_STOP_COUNT,
--          :        (1)      (1)  1 ,      ,  sum           --
sum(res.ACT_STOP*decode(sign(sysdate-res.ACT_STOP_TIME), 0, 1, 1, 1,-1,0)) SET_ACT_STOP_COUNT 

from (select ntd.COS_PLAN_LES_ID,ntd.LESSON_STAR,ntd.LESSON_END,ntd.LESSON_SEQ,ntd.PLAN_DATE,ntd.DESIGN_ID,ntd.DESIGN_NAME,ntd.SCHOOL_CODE,ntd.GRADE_CODE,ntd.SUBJECT_CODE,ntd.BOOK_ID,ntd.CATALOG_ID,ntd.PLAN_ID,ntd.OPEN_STOP,ntd.ISSUE_DATE,ntd.DES_STATUS,nvl(ta.ACT_STOP,0) ACT_STOP,

--       ACT_STOP_TIME  (null) ,  9999 12 31  23 59  --
nvl(ta.ACT_STOP_TIME,to_date('9999-12-31 23:59','YYYY-MM-DD HH24:MI')) ACT_STOP_TIME 

from TD_ACTIVE ta,(select cp.COS_PLAN_LES_ID,cp.WEEK_DAY_ID,cp.SUBJECT_ID,cp.TEACHER_ID,cp.LESSON_SEQ,cp.LESSON_TYPE,cp.LESSON_STAR,cp.LESSON_END,cp.LESSON_NAME,cp.PLAN_DATE,td.* from TD_DESIGN td,(select cpl.*,cpd.PLAN_DATE from COS_PLAN_LES cpl,(select cpd2.COS_PLAN_DAY_ID,cpd2.PLAN_DATE from COS_PLAN_DAY cpd2 where cpd2.COS_PLAN_WEEK_ID =(select cpd1.COS_PLAN_WEEK_ID from COS_PLAN_DAY cpd1 where cpd1.PLAN_DATE = to_char(sysdate, 'yyyy-mm-dd'))) cpd where cpl.TEACHER_ID = 563 and cpl.DESIGN_ID > 0 and cpd.COS_PLAN_DAY_ID = cpl.WEEK_DAY_ID(+)) cp where cp.DESIGN_ID = td.DESIGN_ID) ntd where ntd.DESIGN_ID = ta.DESIGN_ID(+)) res group by res.COS_PLAN_LES_ID,res.LESSON_STAR,res.LESSON_END,res.LESSON_SEQ,res.PLAN_DATE,res.DESIGN_ID,res.DESIGN_NAME,res.SCHOOL_CODE,res.GRADE_CODE,res.SUBJECT_CODE,res.BOOK_ID,res.CATALOG_ID,res.PLAN_ID,res.OPEN_STOP,res.ISSUE_DATE,res.DES_STATUS order by res.ISSUE_DATE asc,res.LESSON_STAR asc,res.COS_PLAN_LES_ID asc;

--   --
select decode(sign(sysdate-to_date('9999-12-31 23:59','YYYY-MM-DD HH24:MI')), 0, 1, 1, 1,-1,0),sysdate from dual;

7.EXT 구성 요소 에서 mouseover 이벤트 의 스타일 변경 방법 설정
주로 설정 대상 에서 작 동 합 니 다.서로 다른 구성 요소 의 설정 대상 의 속성 이름 이 다 를 수 있 습 니 다.현재 두 개가 있 습 니 다.(구성 요소 중 하나 만 포함 되 어 있 습 니 다)
(1).overCls 속성
구성 요소 의 설정 대상 에 overCls 를 설명 할 수 있 습 니 다.값 은 css 의 class 이름 입 니 다.
(2).css 속성
css 스타일 을 직접 씁 니 다.css:'{cursor:move}'와 같이 설정 합 니 다.
예시:
//표 열

var columns = new Ext.grid.ColumnModel([
                {header: '  ', width:50, css:'{cursor:move}', dataIndex: 'operation',renderer: setResImg},
                {header: '  (      )',css:'{cursor:move}', width:200, dataIndex: 'operation',renderer: setResName}
    ]);

8.Ext grid ,                  
(                 )
     grid  store                            。    store load  。
//                    ,                       
var cResLoadedHandler = function(cResStore,records,optionsObj){
                var cResPt = Ext.getCmp('_cResPt');//     
                var cResPageSize = cResPt.initialConfig.pageSize;//             
                if(cResStore.getTotalCount() <= cResPageSize)//              ,   1     1     
                {
                        cResPt.hide();//     ,    cResPt.show();          
                }
        };
                
cResGrid.getStore().on('load',cResLoadedHandler);//  grid store load  , (  )          

9.FF 아래 outerHTML
화 호 는 이 속성 을 지원 하지 않 습 니 다.인터넷 의 일부 방식 을 참고 하여 다음 과 같은 방법 으로 HTML Element 원형 을 호 환 할 수 있 습 니 다.

<script type="text/javascript">
if(typeof(HTMLElement)!="undefined" && !window.opera) 
{ 
    HTMLElement.prototype.__defineGetter__("outerHTML",function() 
    { 
        var a=this.attributes, str="<"+this.tagName, i=0;for(;i<a.length;i++) 
        if(a[i].specified) 
            str+=" "+a[i].name+'="'+a[i].value+'"'; 
        if(!this.canHaveChildren) 
            return str+" />"; 
        return str+">"+this.innerHTML+"</"+this.tagName+">"; 
    }); 
    HTMLElement.prototype.__defineSetter__("outerHTML",function(s) 
    { 
        var r = this.ownerDocument.createRange(); 
        r.setStartBefore(this); 
        var df = r.createContextualFragment(s); 
        this.parentNode.replaceChild(df, this); 
        return s; 
    }); 
    HTMLElement.prototype.__defineGetter__("canHaveChildren",function() 
    { 
        return !/^(area|base|basefont|col|frame|hr|img|br|input|isindex|link|meta|param)$/.test(this.tagName.toLowerCase()); 
    }); 
} 
</script>

10.ORACLE decode 는 몇 개의 필드 로 구 성 된 상 태 를 판단 합 니 다.
방법:몇 가지 상태의 값(decode)을 1 또는 0(또는 기타...)으로 판단 한 다음 에 1 로 곱 하면 진실 이 고 0 이면 가짜(또는 기타..)
11.ORACLE SQL 에서 작은 따옴표 바 꾸 기(여기 서 중국어 작은 따옴표 로 바 꾸 기)
translate('Your'd'Column Text',q'<'>',''')
12.ORACLE SQL 의 행렬 변환 함수(그룹 을 나 눌 때 문자열 을 추가 하 는 함수)
다음 SQL 문장:

select decode(sign(rst.GS_ID-0),1,1,0) GS_FLAG,(',' || wmsys.wm_concat(rst.DS_STATUS) || ',') DS_STATUS from (select to_char(jdv.DS_STATUS) DS_STATUS,nvl(cgs.GS_ID,(to_number(to_char(systimestamp,'-yyyymmddhh24miss'))+rownum)) GS_ID from JXJY_DESIGN_VIEW jdv,CT_GRADES_SUBJECT cgs where jdv.SCHOOL_CODE = '440103001201' and jdv.SCHOOL_CODE = cgs.SCHOOL_CODE(+) and jdv.SUBJECT_CODE = cgs.SUBJECT_CODE(+)) rst group by rst.GS_ID;

이 문 구 는 rst.GSID 를 그룹 으로 나 눈 다음 결 과 를 집합 하여 연결 합 니 다(중간 에 쉼표 로 연결 합 니 다).여기 빨간색 부분 은 연 결 된 문자열 에||연산 자 헤더 와 끝 에 각각 쉼표 를 추가 합 니 다.
13.데이터베이스 메타 데이터 정보 가 져 오기
연결 을 가 져 온 후 메타 데 이 터 를 가 져 오 는 방법 은 다음 과 같 습 니 다.

System.out.println("DB Url = "+jdbc.getConnection().getMetaData().getURL());
System.out.println("DB User = "+jdbc.getConnection().getMetaData().getUserName());

출력 결 과 는 다음 과 같 습 니 다.

DB Url = jdbc:oracle:thin:@172.16.172.180:1521:develop
DBUser = DIGI_SCHOOL

13.웹.xml 파일 의이 규범 에 맞지 않 습 니 다.
은설명자 의 규범 을<웹-app version="2.5"xmlns="로 변경 합 니 다.http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">그리고을 사용 하지 않 습 니 다.

좋은 웹페이지 즐겨찾기