|
카테고리
전체
제갈장비-Linux 제갈장비-TOMCAT 제갈장비-JAVA -------------------- 문서-Linux 문서-Powerbuilder 문서-JAVA 문서-ASP 문서-하드웨어 문서-EDPS 문서-MSSQL -------------------- TIP-JAVA TIP-Perl TIP-ASP TIP-Powerbuilder 01 TIP-Javascript TIP-Excel TIP-XML TIP-MSAccess TIP-PostgreSql TIP-Windows TIP-Linux TIP-HTML TIP-TOMCAT -------------------- ETC Secret Util-Japan 미분류 최근 등록된 덧글
좋은글 퍼가겠습니다.
by 정의진 at 09/29 이제야 봤습니다. iText.. by 제갈장비 at 08/09 정말 캄솨 합니다. 이렇.. by 윤상봉 at 07/21 내 라이브러리에 150편의.. by 서광열 at 05/01 올려주신 iTextAsian.ja.. by 김병건 at 04/01 소중한글 잘 보았습니다... by datadirect at 03/12 많은 도움이 되었습니다,.. by 서영아빠 at 02/21 좋은 정보 참고 하고자,.. by 雨中傘步 at 11/30 좋은 정보 감사합니다. by 최환석 at 11/07 좋은 정보 감사드립니다... by yru at 11/02 이글루 파인더
|
2008년 08월 08일
지금 일본어 버전 Windows2000 에서
Firefox 3.0.1로 이 글을 작성하고 있는데 Opera 9.51에선 한글입력에 문제가 있다. Opera에선 한글입력 후 띄어쓰기를 하려고 스페이스바를 누르면 직전에 입력했던 한글이 다시 나타나는 문제가 있다. 한글버전에선 문제가 없는지....
2006년 11월 10일
ASP, VBScript에서 자신만의 클래스(Class) 만드는 방법
http://korea.internet.com/channel/content.asp?nid=14820&cid=185#start ASP,ASP.NET & Script http://www.egocube.pe.kr/asp_main.asp ASP 공부하지 않으련 http://ven.kangnam.ac.kr/software/asp/ http://www.superuser.co.kr/asp/index.htm
2006년 10월 27일
2006년 10월 23일
출처 : http://cafe.naver.com/devmaster.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=30
일반적으로 웹 문서를 찾아보면 log4j-1.2.13.jar를 클래스 패스에 추가 시킨 후 /WEB-INF/classes아래 log4j.properties파일을 넣으면 간단하게 실행이 된다고 써 있다.
그러나 톰캣을 실행 시킬 경우 아래와 같은 문구가 뜨면서 로깅이 안되는 경우가 자주 발생한다.
log4j:WARN No appenders could be found for logger (org.apache.commons.digester.Digester).
이것은 log4j.properties를 찾지 못해서 초기화가 안되어 나는 메시지이다. 물론 아래와 같이 콘솔에만 출력하는 경우에는 별로 문제 될 것이 없다.
---------------------------------------------------------------------------------------------------- import org.apache.log4j.Logger; import org.apache.log4j.BasicConfigurator; public class SimpleLog { // Logger 클래스의 인스턴스를 받아온다. static Logger logger = Logger.getLogger(SimpleLog.class); public SimpleLog() {} public static void main(String[] args) { /* 콘솔로 로그 출력 위한 간단한 설정, 이 설정이 없다면 경고 메세지가 출력되면서 실행이 중단된다.*/ BasicConfigurator.configure(); logger.debug("Hello log4j."); logger.info("Hello log4j."); logger.warn("Hello log4j."); logger.error("Hello log4j."); logger.fatal("Hello log4j."); //loger.log( Level.DEBUG , "debug") 와 동일하다. } }
---------------------------------------------------------------------------------------------------------------- 그러나 파일에 출력하면 서 콘솔에 출력하려면 문제가 발생한다. 간단하게 해결하는 방법은 properties파일을 톰캣이 실행되는 /bin 아래 두는 것이다.
그러나 좀더 우아하게 해결하려면 초기화 서블릿을 만들면 된다.
=================================================================================================================
package com.foo;
import org.apache.log4j.PropertyConfigurator;
public class Log4jInit extends HttpServlet {
public void init() {
public void doGet(HttpServletRequest req, HttpServletResponse res) {
=========================================================================================================== 그리고 아래 내용을 web.xml에 추가 시킨다. =============================================================================================================
<servlet>
그리고 다음과 같이 간단하 해 주면 파일과 콘솔에 떨어지는 로그를 볼 수 있다. =======================================================================================================
import org.apache.log4j.Logger; public class CBselectordertot {
private static Logger logger = Logger.getLogger(ip001Impl.class);
public ipcdOut[] getSelectIpcd(String kind,String wherecond){ ...... ...... logger.info("getSelect_ipcd query = "+query); ........
........... } }
==================================================================================================
또 하나의 경우... 코바 서버 같은 것을 구동 시킬경우 로깅을 하기 위해서는 다음과 같이 JVM args를 넣어줘야 한다.(톰캣과는 별개로)
**vizibroker에서 코바 서버구동 예제 vbj -Dlog4j.configuration=file:d:\ipams\WEB-INF\classes\log4j.properties ip002Server
properties예제는 파일에 첨부 했다. 첨부파일 : log4j.properties 원하는 디렉토리에 떨어뜨리는 것인데 이대로 사용해도 훌륭하다.
2006년 10월 19일
2006년 10월 19일
vi Editor's Command Collection
2006년 10월 18일
- 끝 -
2006년 10월 11일
The PostgreSQL formatting functions provide a powerful set of tools for converting various data types (date/time, integer, floating point, numeric) to formatted strings and for converting from formatted strings to specific data types. Table 9.20, “Formatting Functions” lists them. These functions all follow a common calling convention: the first argument is the value to be formatted and the second argument is a template that defines the output or input format. The Table 9.20. Formatting Functions
In an output template string (for Table 9.21, “Template Patterns for Date/Time Formatting” shows the template patterns available for formatting date and time values. Table 9.21. Template Patterns for Date/Time Formatting
Certain modifiers may be applied to any template pattern to alter its behavior. For example, Table 9.22. Template Pattern Modifiers for Date/Time Formatting
Usage notes for date/time formatting:
Table 9.23, “Template Patterns for Numeric Formatting” shows the template patterns available for formatting numeric values. Table 9.23. Template Patterns for Numeric Formatting
Usage notes for numeric formatting:
Table 9.24, “ Table 9.24.
2006년 10월 11일
평균구하고, 소숫점 자리수 지정하기
Select round(avg(숫자형 필드),2)
2006년 10월 11일
문자열을 일자형을 바꾸기
Select to_timestamp('20060902','yyyymmdd') 문자열을 일자형을 바꾼다음 10초 더하기 Select to_timestamp('20060902','yyyymmdd') + '10' 혹은 Select to_timestamp('20060902','yyyymmdd') + '10 sec' 문자열을 일자형을 바꾼다음 10분 더하기 Select to_timestamp('20060902','yyyymmdd') + '10 minute' 문자열을 일자형을 바꾼다음 10시간 더하기 Select to_timestamp('20060902','yyyymmdd') + '10 hour' 문자열을 일자형을 바꾼다음 10일 더하기 Select to_timestamp('20060902','yyyymmdd') + '10 day' 문자열을 일자형을 바꾼다음 10개월 더하기 Select to_timestamp('20060902','yyyymmdd') + '10 month' 문자열을 일자형을 바꾼다음 10년 더하기 Select to_timestamp('20060902','yyyymmdd') + '10 year' 더 많은 예 참조 ------------------------------------------------------ 일자형 필드를 문자열로 바꾸기(24시간형식으로 표시) Select to_char(일자형 필드명,'yyyymmddhh24') 일자형의 각 요소 표시하기 Select current_timestamp ,to_char(current_timestamp, 'HH') ,to_char(current_timestamp, 'HH12') ,to_char(current_timestamp, 'HH24') ,to_char(current_timestamp, 'MI') ,to_char(current_timestamp, 'SS') ,to_char(current_timestamp, 'MS') ,to_char(current_timestamp, 'US') ,to_char(current_timestamp, 'SSSS') - 끝 -
2006년 09월 29일
Highlighting Selected Text in PowerBuilder DataWindow 사용자가 찾고자 하는 문자열을 검색할 수 있는 윈도우가 있고, 그 윈도우 안에는 사용자가 찾고자 하는 문자와 일치하는 텍스트가 있다고 가정하자. 검색되어진 문자의 위치는 밝게 처리가 되어야 사용자가 쉽게 확인할 수 있을 것이다. 예를 들면 이것은 아래 그림1처럼 보여야 할 것이다. ![]() <그림 1> 파워빌더는 데이터검색과 정보를 보여주는 강력한 기능을 가지고 있는데 이것이 바로 DataWindow이다. 그렇다면 Datawindow 컬럼 내에서 이것들을 어떻게 처리해야 할 것인가? 안타깝게도 DataWindow 오브젝트에는 위와 같은 일을 할 수 있는 방법이 없다. 이 기사에서는 이것을 확인할 수 있는 기술에 대해 설명하고 있다. A Sample DataWindow 테스트를 위해 Tabular 형태로 Datawindow를 하나 만들고 String 타입으로 text라는 이름을 가진 컬럼을 생성한다. 여기서는 데이터를 필터링하는 것이 아니라, 단지 텍스트의 패턴 매칭으로 찾는 방식을 알아볼 것이다. 예제 데이터윈도우는 External Data Source를 이용하여 만든다. 그림 2에서 보는 것처럼 간단하게 DataWindow를 생성할 수 있다. ![]() <그림 2> 데이터윈도우 페이터에 있는 Data 부분에서 간단하게 데이터를 추가할 수 있다. 아니면, 스트립트 안에서 External Source로부터 데이터를 읽어들일 수도 있다. Selecting Part of the Text 이제 데이터윈도우에는 우리가 문자열 패턴 매치로 찾고자 하는 텍스트를 포함 하고 있다. 그 다음 데이터윈도우에서 우리가 원하는 패턴과 일치하는 문자열이 있으면 글자 색을 빨간색으로 처리할 것이다. 해당 데이터윈도우에 아래의 세 문장이 있다고 가정하고, PowerBuilder rules the world. It is a rule with us. This is the rule of the game. 이들 중 찾고자 하는 단어가 ‘rule’이라고 하더라도, 찾아진 결과는 변함이 없을 것이다. 데이터윈도우 컬럼의 일부만을 강조할 수 없기 때문이다. 이를 표현하기 위해 다음의 세 부분으로 (선택되기 전, 선택, 선택되어진 후)컬럼을 나누어 생각해 볼 수 있다. 생성한 데이터윈도우의 Result Set에 컬럼 “search” 를 추가하자. 기존의 text 컬럼 대신에 세 개의 Computed Filed를 추가한다. 첫번째 Computed Filed의 Expression에 아래의 표현을 적는다. if( isNull(search), text, if( pos(text, search, 1) = 0, text, left(text, pos(text, search, 1) - 1) )) 생성한 Computed Filed를 “prefix”라 부르자. 두 번째 Computed Filed에는 아래의 표현식을 적는다. if(pos(text, search, 1) = 0, '', search) 두번째로 생성한 Computed Filed는 “Matched”라 명하자. 세 번째 Computed Filed에는 아래의 표현식을 적는다. if( isNull(search), '', if( pos(text, search, 1) = 0, '', mid(text, pos(text, search, 1) + len(search) ) ) ) 세 번째로 생성한 것을 “suffix”라 명하자. 이 세가지 Computed Filed들을 기존의 text 컬럼의 길이에 맞게 위치시킨다. “matched” Computed Filed의 폰트 색은 빨간색으로 설정 후 text 컬럼을 지운다. 결과적으로 그림 3에서 보이는 것과 같은 결과를 얻을 것이다. 우리가 원하는 부분이 빨간색으로 바뀌었다. 하지만 데이터윈도우가 하나의 컬럼처럼 보이지 않고 Computed Field들 사이에 불필요한 공간이 들어가 있는 것을 볼 수 있다. 적당한 크기로 조절하기 위해 “matched”와 “suffix” Computed Filed의 Position 프로퍼티 중 Slide Left를 체크해준다. ![]() <그림 3>
![]()
<그림 4> Selecting Several Parts 만약 사용자가 하나의 단어를 찾으려 하는 것이 아니라 여러 단어를 찾으려 한다면 어떻게 해야 할까? 이를 만족시키기 위해선 원본 컬럼을 나누기 위해 더 많은 Computed filed들을 만들어야 할 것이다. 캐릭터들을 더 작은 단위의 컬럼을 나누어 보자. 즉 모든 Computed Filed는 해당 컬럼 텍스트에 하나의 케릭터만을 포함하게 만든다. 첫 번째 Computed Filed는 첫 번째 캐릭터를, 두 번째 Computed Filed는 두 번째 캐릭터를… 이런 방식으로 하나의 캐릭터를 갖도록 한다. 각 Computed Filed의 Expression에는 아래의 스크립트로 작성한다. mid( text, , 1) 그 다음 Computed Filed들에 원하는 문자 색을 설정해줌으로써 각각의 문자들을 선택할 수 있게 된다. Computed filed에 폰트 색상을 설정해주는 프로퍼티를 설정하는 방식은 Buck Woolley가 작성한 “Not Your Father’s DataWindow” (PBDJ volumn 8 issue7)내용을 이용하였다. 이 기술문서의 기본내용은 String 타입의 컬럼들이 포함되어 있는 많은 데이터윈도우 오브젝트들의 파라미터를 가져오는 것이다. 예제 데이터윈도우의 텍스트 컬럼 길이는 50이기 때문에 50개의 Computed Filed를 생성해야 할 것이다. DataWindow의 Result Set에서 “select” 이름으로 String 컬럼을 하나 추가하고 이 컬럼 역시 길이를 50으로 정한다. 다양한 색상의 텍스트를 표현해보기 위해, “select” 컬럼은 아래 값을 입력한다. "0101010101010010100101001010000000<...>" 50개의 케릭터이기 때문에 Computed Filed들을 50개 생성해야 한다면, 아니면 그 이상의 Computed Fileld를 손수 생성해야 한다면 그것은 무척 골치 아픈 일이 될 것이다. 이 방법을 해결하기 위해 코딩을 이용하자. Selection Service Object 사용자가 직접 작업해야 하는 지루한 일들을 대신 해주는 오브젝트를 만들도록 하자. 먼저 많은 원본 컬럼의 길이와 같은 Computed Filed들이 생성되어 질 데이터윈도우를 생성해 놓아야 한다. 그리고 원본 컬럼의 이름을 데이터윈도우가 정확하게 알고 있어야 한다. 아래 List 1은 of_init() 함수 코드이다. 생성된 Computed field들을 위해 보이는 모든 파라미터들은 원본 컬럼으로부터 가져오게 된다. Instance 변수 함수의 마지막은 스트링값 0 을 가지고 초기화 되어진다. LISTING 1 n_select variables protected: datawindow idw_dw string is_notselected public function boolean of_init (datawindow adw_dw, string as_col); string ls_prop[] int li, li_cnt int li_x int li_w = 55 string ls_color string ls_name string ls_rest_syn string ls_coltype string ls_syn idw_dw = adw_dw ls_rest_syn = 'create compute(band=detail alignment="0" border="0" format="[general]" ' & + 'width="' + string(li_w) + '" slideleft=yes 'ls_prop = { 'y', 'height', 'font.face', 'font.height', 'font.family', & 'font.pitch', 'font.charset', 'background.mode', 'background.color' } for li = 1 to upperBound( ls_prop) ls_rest_syn += ls_prop[li] + '="' + idw_dw.describe(as_col + '.' + ls_prop[li]) + '" ' next ls_color = idw_dw.describe( as_col + '.color') li_x = Integer( idw_dw.describe( as_col + '.x')) ls_coltype = idw_dw.describe( as_col + '.coltype') // expected char(xx) li_cnt = Integer( Mid( ls_coltype, 6, pos(ls_coltype, ')', 1) - 6 ) ) for li = 1 to li_cnt ls_syn = ls_rest_syn & + ' x="' + String(li_x + li_w*(li - 1)) + '" ' & + ' expression="mid( ' + as_col + ', ' + String(li) + ', 1)" ' & + ' color="' + ls_color + '~tif(mid(select,' + string(li) + ',1)=~'1~',rgb(255,0,0),' + ls_color +')" ' & + 'name = c$' + string(li) ')' idw_dw.modify(ls_syn) next idw_dw.modify('destroy ' + as_col) is_notSelected = Fill('0', li_cnt) return true 그 다음으로, 선택된 텍스트의 위치를 알려주는 함수가 필요하다. 이 함수에서 사용되는 아귀먼트는 선택된 문자, 선택된 문자의 길이 그리고 데이터윈도우에 있는 줄의 개수다. 이 함수를 of_select()라 부르고, 이 함수를 구성하고 있는 스크립트는 아래 List 2나와있다. LISTING 2 public subroutine of_select (integer ai_start, integer ai_len, long al_row); string ls_data ls_data = idw_dw.getItemString(al_row, 'se _lect') if isNull(ls_data) then ls_data = is_notSelected idw_dw.setItem(al_row, 'select', Replace(ls_data, ai_start, ai_len, Fill('1', ai_len) ) ) 마지막으로 우리는 각 줄에서 선택된 내용을 지우는 함수가 필요하다. 이 함수를 of_clear()라 부르고 이 함수를 구성하는 스크립트는 아래 List 3에 나와있다. LISTING 3 public subroutine of_clear (long al_row); idw_dw.setItem( al_row, 'select', is_notSelected ) Conclusion 파워빌더에서는 데이터윈도우 컬럼에 있는 text를 직접적으로 찾아낼 수 있는 방법이 없다. 하지만, 위에서 살펴본 기술을 이용하면 데이터윈도우 컬럼 안에 있는 텍스트의 일부분을 찾아 매칭을 시킬 수 있었다. 우리는 글자 색을 변경하거나, 뒷 배경색을 변경하거나, 글씨를 굵게 아니면 기울리는 등의 우리가 원하는 모든 종류의 텍스트 형태를 이용할 수 있다. 첨부문서 : Highlighting Selected Text in PowerBuilder DataWindow.mht
2006년 09월 29일
Little Known, But Incredibly Useful, PowerBuilder Tips and Tricks 이 문서는 TechWave 2006에서 발표한 자료 중 Tip & Trick 일부를 정리한 것으로 파워빌더를 사용해본 경험자나 처음 시작하는 사람들에게 조금이나마 도움이 되었으면 한다.
이하는 첨부문서참조
첨부문서 : Little Know-But Incredibly UseFul-PowerBuilder Tip and Tricks.mht
2006년 09월 21일
JFreeChart - 애플릿 봉그래프 그리기, 그리고 예쁘게 다듬기 작성자 : 제갈장비 작성일 : 2006년 9월 21일(목) 개요 : JFreeChart를 이용하여 웹어플리키에션에서 애플릿을 이용하여 봉그래프를 나타내고 좀 더 예쁘장하게 다듬어 보기 참고 : 이 문서는 http://www.thinkit.co.jp/free/tech/4/6/1.html 를 참조하여 작성한 것입니다. [ 일러두기 ] - . 이 문서에서는 JFreeChart 설치방법은 설명하지 않습니다. - . 이 문서에서는 JFreeChart의 문법에 대한 설명은 하지 않습니다. - . 그림파일은 마우스로 클릭하면 글자가 잘 보입니다. [ 실행환경 ] 이 문서를 작성했을 때의 환경입니다. 운영체제 : MS Windows XP Professional 웹서버 : TOMCAT v5.0.28 JAVA : 1.4.2_12 JfreeChart : 1.0.2 [ 봉그래프의 구조 ] ![]() A. 기본적인 봉그래프 나타내기 ![]() 아래의 소스를 컴파일했을 때 보이는 그래프입니다. [소스] import java.awt.Dimension; import javax.swing.JApplet; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.plot.PlotOrientation; import org.jfree.data.category.DefaultCategoryDataset; public class BarChartDemo_t01 extends JApplet{ public BarChartDemo_t01(){ // row keys... final String series1 = "First"; final String series2 = "Second"; final String series3 = "Third"; // column keys... final String category1 = "Category 1"; final String category2 = "Category 2"; final String category3 = "Category 3"; final String category4 = "Category 4"; final String category5 = "Category 5"; // create the dataset... final DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(1.0, series1, category1); dataset.addValue(4.0, series1, category2); dataset.addValue(3.0, series1, category3); dataset.addValue(5.0, series1, category4); dataset.addValue(5.0, series1, category5); dataset.addValue(5.0, series2, category1); dataset.addValue(7.0, series2, category2); dataset.addValue(6.0, series2, category3); dataset.addValue(8.0, series2, category4); dataset.addValue(4.0, series2, c | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||