블로그 이미지
실무 개발을 하면서 겪게 되는 문제점들을 해결한 팁들을 올리는 개인공간입니다. PHP, JSP, Python, Ruby, Erlang,XML, XSLT... 너무 많나요..ㅎㅎ 이런거에 관심이 많다구요~ 참.. 웹표준에도 조금 경력이 있습니다.. 미니마니

Notice»

Recent Comment»

Recent Trackback»

Archive»

« 2009/07 »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

동적 Component 생성

MiPlatform | 2009/04/14 15:16 | Posted by 미니마니
Create(component Type, ID, Properties);

DIV내에서 생성
div.Create(component Type, ID, Properties);

FORM ID : form
DIV ID : div0
- form.div0 내에 button Component 생성

form.div0.Create("Button", "btnClose", "ImageID='btn_close' Top='5' Left='10' Width='50' Height='15' onClick='fn_divButtons_btnClose_OnClick'");

'MiPlatform' 카테고리의 다른 글

동적 Component 생성  (0) 2009/04/14
Component 찾기  (0) 2009/04/14

Component 찾기

MiPlatform | 2009/04/14 15:11 | Posted by 미니마니
for(i=0; i < Length(form.Components); i++)
{
comp = form.Components(i);
trace(comp.ID);
}

'MiPlatform' 카테고리의 다른 글

동적 Component 생성  (0) 2009/04/14
Component 찾기  (0) 2009/04/14

MiPlatform 교육을 받다

요즘엔 | 2009/03/07 09:59 | Posted by 미니마니

프로젝트가 업무 성격이 강하고 짧은 개발기간에 개발량도 상당해서 마이플랫폼을 도입하기로 결정이됬다.
이틀간의 교육을 받았는데.. 첨엔 웹에서 작동하니까 웹환경하고 비슷하겠지라고 생각을 했었는데 그게 아니다. 화면은 완전 C/S환경이다. 클라이언트 환경은 모두 C/S화면처럼 개발하고 운영되고 데이터는 서버에서 URL호출 방식으로 하면 끝나는 그야말로 간단하다고 할까.. 아직 실전 개발을 들어가진 않았지만 쉽게 느껴지긴 하지만 예외상황이라는게 항상 발생하는거니까.. 어떻게 응용처리를 할까가 고민인다..
일단 한번 개발해보면 다음 개발부터는 개발기간이 많이 단축될것 같다는 느낌...

'요즘엔' 카테고리의 다른 글

MiPlatform 교육을 받다  (0) 2009/03/07
리눅스 데탑 만들기  (0) 2008/10/16
요즘엔을 떠나다...  (0) 2008/10/13
iBatis를 이용하여 개발을 할때 종종 두개의 테이블을 조인하여 결과를 리턴하는 경우가 생긴다.
각각의 테이블의 모델들이 존재하는데 두개의 테이블을 합친 새로운 모델을 다시 만든다는게 여간 귀찮은게 아니다.. 특히 필드의 갯수가 장난이 아닐때는 정말 하기 싫은 일이다.
이럴때 두개의 모델을 인스턴스로 가지는 새로운 모델을 하나 만들기만 하면 의외로 간단하게 처리 할수가 있다.

A.java
class A {
private String a;
private String b;
....
}

B.java
class B {
private String g;
private String h;
....
}
위 두개의 모델을 다시 하나의 모델 C로 정의한다.
C.java
class C {
private A a;
private B b;
}

그리고 iBatis의 sql맵에서
<result id="result" class="C">
<result property="a.a" column="field1"/>
<result property="a.b" column="field2"/>
<result property="b.g" column="field3"/>
<result property="b.h" column="field4"/>
</result>
<select id="select" resultMap="result">
select A.field1 ,A.field2, B.field3, B.field4
from aaa A, bbb B
where ....
</select>


View처리부에서도 출력을 할때 a.a라고 해주면 될것이다.

'iBatis' 카테고리의 다른 글

ResultClass로 두개의 모델을 가진 새로운 모델로 바인딩하기  (0) 2009/02/05
iBatis  (0) 2009/01/23

log4j를 설정했는데 로그가 기록되지 않을때...

JSP/Spring | 2009/01/29 15:36 | Posted by 미니마니
log4j : WARN Please initialize the log4j system properly
이런 메시지가 나오면서 로그가 보이지 않을때에는 여러가지 문제가 있을수 있겠지만 그 중 한가지가
log4j.properties파일이 src폴더아래에 있지 않을때도 있다.
/WEB-INF/ 아래에 설정 파일이 있는데도 안되길래  src 폴더 안에 넣어봤더니 로그가 제대로 나온다..

더보기


'JSP > Spring' 카테고리의 다른 글

log4j를 설정했는데 로그가 기록되지 않을때...  (0) 2009/01/29
TAG JSP, log4j

iBatis

iBatis | 2009/01/23 17:32 | Posted by 미니마니

 Insert 쿼리 실행시 자동 증가값 리턴

  1. ORACLE SEQUENCE 사용 예제
  2. <insert id="Insert.Temp" parameterClass="">
  3. <selectKey keyProperty="insertID" resultClass="int">
  4. select TempSequence.nextval from dual
  5. </selectKey>
  6. insert into Temp(no,field1,field2...) values(#insertID#,#field1#,#field2#,...)
  7. </insert>

이 글은 스프링노트에서 작성되었습니다.

'iBatis' 카테고리의 다른 글

ResultClass로 두개의 모델을 가진 새로운 모델로 바인딩하기  (0) 2009/02/05
iBatis  (0) 2009/01/23

Context 루트 변경하기

JSP | 2009/01/22 09:01 | Posted by 미니마니
이클립스와 톰캣을 연동하여 웹 프로젝트를 개발할때 보통 프로젝트명이 Context가 되어 http://localhost:8080/ProjectName 이런식으로 되는게 보통이다.

이럴때 Context명을 입력하지 않고 http://localhost:8080/ 으로 바로 접속할 수 있게 하는 방법은 왼쪽 프로젝트 탐색창에서 프로젝트 속성을 열어 WebProject Settings 항목의 Context Root 부분을 'ProjectName/' 로 수정한다.

그 다음 Servers의 해당 프로젝트의 config아래 server.xml파일을 열어서 <Context docBase="ProjectName" path="/ProjectName" .......... />  이 부분에서 path=""로 변경해주고 톰캣서버를 재 시작하면 원하는 URL로 Context를 변경할 수 있다.

'JSP' 카테고리의 다른 글

Context 루트 변경하기  (0) 2009/01/22

메일링 프로그램 만들기

Python | 2009/01/15 18:29 | Posted by 미니마니

파이썬으로 작성되었으며 데이터베이스는 오라클을 이용

오라클을 이용하기 위해 cx_Oracle 이 설치 되어 있어야됨.

 

 

 

코드

#!/usr/bin/python
# -*-coding:utf-8-*-
import time
import cx_Oracle
import smtplib
import mimetypes
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText


__Author__ = "webprog.tistory.com"
__version__ = "0.1"


Db = ""  #데이터베이스 커넥터
mailFrom = "보내는 사람의 메일 주소"


class mailSend :

#생성자
    def __init__(self):
        global log
        self.setconfig()
        log = logger()
        log.info("Server Initialized Complete")

#소멸자
    def __del__(self):
    try :
        Db.close();
    except:
        print ""
    log.info("Server ShutDown ")

    ''' 시작 '''
    def start(self):
        while 1 :
            res = self.readyFetch()
            for row in res :
                self.mailInterface(row)
        log.info("Iddle Time")
            time.sleep(60)    #1분간 쉬어라
           
    ''' 데이터 베이스 환경 설정 '''
    def setconfig(self):
        global idfcDb
        cxO = cx_Oracle.makedsn("오라클 DBMS서버 IP", 1521, "ORCL")
        idfcDb = cx_Oracle.connect("데이터베이스아이디", "데이터베이스패스워드", cxO)
       
   
    ''' 전송할 메일이 있는지 쿼리 날려 보기 ~~ '''
    def readyFetch(self):
        qry = "SELECT * FROM MAILLING WHERE STATUS='READY' AND CREATETIME < SYSDATE"
        cur = Db.cursor()
        cur.execute(qry)
        res = cur.fetchall()
        cur.close()
        return res
   
    def getMailContent(self, contentsID):
        qry = "SELECT B.DESCHTML DESCHTML FROM CONTENTS C, BODY B WHERE C.CONTENTSID="+str(contentsID)+" AND B.CONTENTSID=C.CONTENTSID"
        cur = Db.cursor()
       
        cur.execute(qry)
       
        contents = ''
        ''' CLOB 타입처리를 위해 다음과 같이 처리 '''
        for val, in cur:
            contents += val.read().decode('cp949')
           
        cur.close()
        return contents
       
    ''' 메일 전송 결과에 따른 데이터베이스에 업데이트 하기 '''
    def resultUpdate(self,mailID, status):
        qry = "UPDATE MAILLING SET STATUS='"+status+"' WHERE MAILID="+str(mailID)
        cur = Db.cursor()
        cur.execute(qry)
        Db.commit()
        cur.close()
   
    def mailInterface(self, row):
        subject = row[6].decode('cp949')

       ''' 제목과 내용 부분에 #name#, #userid# 를 찾아서 회원의 이름과 아이디로 치환처리 '''
        if row[3] :
        subject = subject.replace('#name#',row[3].decode('cp949'))
        if row[2] :
        subject = subject.replace('#userid',row[2])

        contents = self.getMailContent(row[5])
      
        mailContents = contents
        if row[3] :
        mailContents = mailContents.replace('#name#',row[3].decode('cp949'))
        if row[2] :
        mailContents = mailContents.replace('#userid#', row[2])
        #log.info(mailContents.encode('cp949'))
        result = self.mailSend(row[4], subject, mailContents)
    if result :
        self.resultUpdate(row[0],'FAIL')
    else :
        self.resultUpdate(row[0],'SUCCESS')

  
    ''' 메일을 보낸다 '''
    def mailSend(self, mailTo, mailSubject, mailContents):
       log.info(mailTo)
       log.info(mailSubject.encode('cp949'))
        self.mailFrom = mailFrom
   
       self.mailMsg = MIMEMultipart('alternative')
       self.mailMsg['Subject'] = mailSubject
       self.mailMsg['From'] = self.mailFrom
       self.mailMsg['To'] = mailTo

       part = MIMEText(mailContents.encode('cp949'), 'html')
       self.mailMsg.attach(part)



    try :
            server = smtplib.SMTP('localhost')
            server.sendmail(self.mailFrom, mailTo, self.mailMsg.as_string()) #self.mailMsg.encode('cp949'))
            server.quit()
        except :
            logmsg = "SMTP failed"
            log.error(logmsg)
   
#디버깅을 하기위해 로그 클래스 정의  
class logger :
    def __init__(self):
        global fd
        fd = open(time.strftime("./log/%Y%m%d")+'.log','a+')
       
    def waring(self,msg):
        self.writing("WARNNING",msg)
   
    def info(self,msg):
        self.writing("INFO",msg)
   
    def debug(self,msg):
        self.writing("DEBUG",msg)

    def error(self,msg):
    self.writing("ERROR",msg)

    def writing(self,type,msg):
        fd.write(time.ctime() + " ["+type+"]: " + msg +'\n')
        fd.flush()
   
    def __del__(self):
        fd.close()

   
if __name__ == '__main__' :
    sender = mailSend()
    sender.start()

이 글은 스프링노트에서 작성되었습니다.

'Python' 카테고리의 다른 글

메일링 프로그램 만들기  (0) 2009/01/15
metaweblogApi이용 파이썬으로 이글루스에 원격블로깅  (0) 2008/10/13
exif 정보 추출  (0) 2008/10/13
파일 다루기  (0) 2008/10/13

이미지 리사이즈

Javascript/jQuery | 2009/01/14 00:38 | Posted by 미니마니

 <script>

$(document).ready(function(){
 imageResize();
});

function imageResize() {
 $('#bbsContents .bbsContentImg').each(function() {
     var oimg = new Image();
     oimg.src = this.src;
     if(oimg.width > 90) {
         $(this).attr({width:90});
     }
 });
}

</script>

<body>

<div id="bbsContents">

<img src=http://.....jpg class="bbsConentImg"/>

<img src=http://.....jpg class="bbsConentImg"/>

<img src=http://.....jpg class="bbsConentImg"/>

<img src=http://.....jpg class="bbsConentImg"/>

</div>

</dody>

이 글은 스프링노트에서 작성되었습니다.

'Javascript > jQuery' 카테고리의 다른 글

이미지 리사이즈  (0) 2009/01/14
jQuery를 공부하기 위한 참고 사이트  (0) 2008/11/29

jQuery를 공부하기 위한 참고 사이트

Javascript/jQuery | 2008/11/29 13:00 | Posted by 미니마니
http://jquery.com

http://visualjquery.com

'Javascript > jQuery' 카테고리의 다른 글

이미지 리사이즈  (0) 2009/01/14
jQuery를 공부하기 위한 참고 사이트  (0) 2008/11/29
TAG jQuery