반응형

equal to 작업에서의 "Korean_Wansung_CS_AS"과(와) "Korean_Wansung_CI_AS" 간의 데이터 정렬 충돌을 해결할 수 없습니다.


이 문제의 경우는 join에서 발생한다. 조인하려는 두 테이블의 각 컬럼 속성을 잘 보면 데이터 정렬란이 있는데 이 부분이 Korean_Wansung_CS_AS 이거나 CI_AS인데(물론 이 이외에도 많다) 각 컬럼이 다르기 때문에 발생하는 에러사항이다.


해결방법은 


A.컬럼명 collate Korean_Wansung_CI_AS = B.컬럼명 collate Korean_Wansung_CI_AS


와 같은 예시로 각 컬럼명을 대입해주는 방식으로 해결할 수 있으나, 나의 경우엔 실패했고...


귀찮아서 디비의 속성을 까보고 각 컬럼의 데이터 정렬 속성이 다르기에 확 그냥 바꿔주는 식으로 해결했다.


두번째 방법은 디비 정렬 속성을 바꾸는 것도 있겠다.

반응형
블로그 이미지

김생선

세상의 모든것을 어장관리

,
반응형

인포믹스(informix) 에서 현재날짜를 조건으로하여 쿼리할 일이 생겼다. 상황은 이러하다.

 

DB 컬럼에 글 쓴 날짜(컬럼명 : reg_dt | 속성 varchar)와 게시마감 날짜(컬럼명 : lim_dt | 속성 varchar)가 존재. 

가령 reg_dt에 2013년 6월 30일 00시 00분이 입력되고 lim_dt에 2014년 6월 30일 00시 00분이 입력되었다고 치자.

게시판 조건은 lim_dt가 현재날짜보다 과거일 경우 쿼리하지 않아야 한다는 조건이다.

 

그렇다면 사실 reg_dt는 신경쓰지 않아도 되며 lim_dt가 현재보다 과거인지만 체크를 하면 되는데 어떻게 해야하는지 informix는 잘 모르는 상황.

검색을 해보니 아래와 같은 방식으로 쿼리에 성공했다.

 

1
SELECT * FROM 테이블명 WHERE lim_dt >= to_char(current, "%Y%m%d%H%M%S")
cs

 

to_char(current, "%Y%m%d%H%M%S")란, 현재 시스템 시간을 포맷, YYYYMMDDHHMMSS(년월일시분초)로 가져오며, 이를 to_char 형식으로 변환하고 lim_dt와 비교를 한다는 것이다. 

 

내가 비교하려는 컬럼이 varchar 형식이기 때문에 to_char로 받은 듯 하다. 아직 data 형식의 컬럼과는 비교하지 않았다.

 

주의할 점은, 포맷변환을 할 때 %Y%m%d%H%M%S 에서와 같이 년/시/분/초 는 대문자로 쓰여지고 월/일은 소문자로 쓰여졌는데, 이거 대소문자 구분 안하면 월이 분으로 표시가 되는 불상사가 생기니 주의하시기 바란다.

 

 

 

반응형
블로그 이미지

김생선

세상의 모든것을 어장관리

,
반응형

MSSQL 에서 MAX 함수를 써서 값을 가져올 일이 생겼다.

게시판 댓글을 달 때 두 명 이상의 유저가 달라붙어서 동시다발적으로 댓글을 달 경우에 댓글의 MAX 값을 가져오고 이를 SELECT KEY로 이용하여 본래의 쿼리에 INSERT 하는 용도로 사용한다.

그런데 댓글이 아무것도 없을 때에는 MAX 값으로 가져온 댓글 번호가 0이 아닌 NULL로 가져오게 되는데, 이렇게 되면 쿼리 에러가 나타나게 된다.


이럴 때 MAX 값이 0이거나 NULL 일 때 1 로 치환해주는 것을 찾았다.

max ( reply_no ) reply_no


본래에서 이렇게 사용하였다면

isnull ( max ( reply_no ) , 0 )

와 같이 사용해주면 null이 0으로 변환이 되며

isnull ( nullif ( max ( reply_no ) , 0 ) , 1 )


와 같이 사용해주면 null이 1로 변환이 된다.

반응형
블로그 이미지

김생선

세상의 모든것을 어장관리

,
반응형

그룹 내의 여러 아이템들에 더블클릭 속성을 주기 위해서는 doubleclick이벤트를 주는 것 뿐만 아니라, doubleclick=true 속성도 주어야 한다.

반응형
블로그 이미지

김생선

세상의 모든것을 어장관리

,
반응형

The content of elements must consist of well-formed character data or markup.


위 에러는 ibatis, mybatis 에서 발생되어지는 오류인데 각종 특수문자를 ibatis, mybatis가 인식하지 못해서 생기는 에러사항이다.

대부분 사용자가 쿼리구문을 쓰는 데 있어 실수에서 발생되어지며, 특수한 부등호를 쓸 경우 <![CDATA[ ROWNUM <= 11 ]]> 과 같이 <![CDATA[ **** ]]> 로 감싸주면 문제가 없다.


반응형
블로그 이미지

김생선

세상의 모든것을 어장관리

,
반응형

플렉스에서 레이아웃의 할당된 크기 자체를 숨겨야 하는 경우가 있다.

안드로이드에서는 레이아웃의 visible 속성에 visible/invisible/gone 속성을 줌으로 인해서 [보이고/숨기고/할당크기까지 숨기고] 가 가능하지만, 플렉스에서는 해당 기능이 없는지 많이 고민했다.


검색해보니 includeinlayout 이라는 것이 있었고 실제로 사용해보았다.

일단 개념정리부터.


화면 컴포넌트 중에 일부를 보였다, 안 보였다 하게 제어해야 할 경우가 있다.

이것을 위해서 visible 속성에 true, false를 주면 안 보이긴 하는데 그 자리가 비어 있어서 영 보기가 안 좋다.

이럴 경우에는 includeInLayout 속성에 true, false를 주면 그 컴포넌트가 원래 코드에 포함되지 않은 것처럼 빈자리 없이 보인다.

단, 절대좌표를 가진 컴포넌트는 당연히 visible을 사용할 때와 똑같이 보일 것이고, Grid, HBox, VBox 등의 Layout Componet에 올라가 있을 경우에만 제대로 동작을 한다.

Flex 하다 보면 다들 느끼겠지만 화면크기가 모든 사용자에게 똑같으면 상관없지만 그렇지 않은 관계로 대부분의 화면 컴포넌트들을 HBox, VBox에 올려 놓고 왼쪽정렬이나 오른쪽정렬을 하는 것이 가장 편하다.


해당레이아웃.includeinlayout = false 를 주면 할당 크기까지 숨기겠다는 뜻이며, true 값은 할당 크기를 숨기지 않겠다는 뜻이 된다.

아쉽게도 안드로이드의 gone 처럼 사용하기 위해서는 해당 레이아웃.visible=false; 까지 해주어야 해당레이아웃 값 안보이고/해당레이아웃 할당크기 숨기고 가 된다.



반응형
블로그 이미지

김생선

세상의 모든것을 어장관리

,
반응형

Flex를 설치할 때, flash builder 4.6 을 이용하여 설치를 한다.

필자가 플래쉬 빌더를 설치한 후, 플러그인 형식으로 플래쉬 빌더의 utilities의 Adobe Flash Builder 4.6 Plug-in Utility 를 사용하여 설치를 완료했고, 이클립스에서 Flash 를 활성화 하려는데 에러 16(Error 16)의 에러메시지를 내뱉더라.


삭제 후 재설치를 하여도 되지 않는 현상, 검색을 해보니 아래와 같은 글이 있었다.


http://forums.adobe.com/thread/604540




그냥 뭐 간단히 말해주자면 해당 경로의 cache.db 파일 권한을 재설정해주라는 말이 전부다.


그럼 이쯤에서 윈도우 7 기준으로 해당 경로가 어떻게 되는지 알아보자.


C:\Program Files\Common Files\Adobe\Adobe PCD\cache

 

for 32-bit Windows

 

 

and

 

C:\Program Files (x86)\Common Files\Adobe\Adobe PCD\cache

for 64-bit Windows.


라고 ChrisPaduan 이라는 사람이 친절히 설명해놓았다.


해당 디렉토리의 cache.db를 읽기전용 해제해주면 잘 된다. 여러분, 즐 플렉 하시길 ^_^

반응형
블로그 이미지

김생선

세상의 모든것을 어장관리

,
반응형
Starting Tomcat v5.5 Server at localhost' has encounterd a problem.

 

Server ports (8080, 8009) required by Tomcat v5.5 Server at localhost are already in use. The server may already be running in another process, or a system process may be using the port. To start this server you will need to stop the other process or change the port number(s).

 

어떠한 프로세스가 8080포트가 이미 사용중이기에 새로운 프로세스로 구동할 수 없다는 메시지이다.

 

이 메시지는 OS 상관없이 동일하며, 해당 포트를 사용중인 프로세스를 강제종료하거나 또는 위의 포트를 수정해서 구동하는 방법 등이 있다. 이는 현재 상태가 운영서버인지, 개발서버인지 또는 로컬개발환경인지에 따라 해결방법이 무궁무진하다.

 

대부분의 위의 오류메시지는 로컬개발환경임을 감안하고, 아래의 절차대로 수행한다.

 

1. Windows 기준 - 8080 포트를 사용중인 프로세스 확인

1-1. CMD 켜고 아래의 명령어 입력

> netstat -ano | findstr :8080
해당 명령어의 결과 중, 로컬 주소가 0.0.0.0:8080 인 항목의 PID를 확인한다

> taskkill /pid 1111 /f

/f 옵션은 강제종료를 의미한다.

 

2. Linux 기준 - 8080 포트를 사용중인 프로세스 확인

> netstat -ntlp | grep :8080
해당 명령어의 결과 중, PID 항목을 확인한다

> kill -9 PID

-9 옵션은 강제종료를 의미한다.

 

추가.

과거에 작성한 내용은 불확실한 정보가 너무나도 많아 아예 새로 작성하였다.

특히 SpringBoot를 주력으로 개발하다보니 Windows 상에서 포트충돌나는 일이 많아, 아예 cmd 명령어를 외우고 다닐 지경에 이르렀다. 부디 많은 개발자들에게 도움되었길 바란다.

반응형
블로그 이미지

김생선

세상의 모든것을 어장관리

,
반응형

JSTL 

Jsp표준 태그 라이브러리(Jsp Standard Tag Library)의 약어

 

jstl을 가지고 할수 있는일

간단한 프로그램 로직의 구사(자바의 변수선언,if문for문 등에 해당하는 로직)

다른JSP페이지 호출(<c:redirect>,<c:import>)

날짜,시간,숫자의포맷

JSP페이지 하나를 가지고 여러 가지 언어의 웹 페이지 생성

데이터베이스로의 입력,수정,삭제,조회

XML문서의 처리

문자열을 처리하는 함수 호출

 

위에 있는 여러 가지 기능들 중 제일 마지막에 있는 '문자열을 처리하는 함수 호출'을 제외한 나머지 기능들은 모두 커스텀 액션 형태로 제공된다.

(*커스텀액션 : xml문법을 따르면서 특정한 동작을 수행하는 태그)
 

jstl을 살펴보면 커스텀액션이나 함수의 이름앞에 c,fmt,fn등이 접두어가 붙어 있는것을 볼수 있다 

표준 액션의 태그 이름 앞에는 모두 jsp라 는 한 종류의 접두어가 사용되는데 Jstl의 커스텀 액션과 함수에는 왜 이렇게 다양한 접두어가 붙는걸까?

그 이유는 Jstl이 다시 5개의 작은 라이브러리로 나뉘어지고 커스텀 액션과 EL 함수는 각각 다른 라이브러리에 속하기 때문이다. 

 라이브러리

기능 

URL식별자 

접두어 

 코어

일반프로그래밍 언어에서 제공하는 것과 유사한 변수 선언,실행흐름의 제어기능을 제공하고, 다른 JSP페이지로 제어를 이동하는 기능도 제공 

http://java.sun.com/jsp/jstl/core

 c

 포매팅

숫자,날짜,시간을 포매팅하는 기능과 국제화,다국어 지원 기능을 제공 

http://java.sun.com/jsp/jstl/fmt 

fmt 

 데이터베이스

데이터베이스의 데이터를 입력,수정,삭제,조회하는 기능을 제공 

http://java.sun.com/jsp/jstl/sql 

sql 

 XML처리

XML문서를 처리할때 필요한 기능을 제공

http://java.sun.com/jsp/jstl/xml 

xml 

 함수

문자열을 처리하는 함수를 제공 

http://java/sun/com/jsp/jstl/functions

fn 

 

위 표를 보면 c.fmt,fn이라는 접두어가 있다. 그리고 이것은 각각 코어라이브러리,포매팅 라이브러리,함수라이브러리의 접두어라 표시되어 있다. 하지만 라이브러리를 구분하는 것은 사실상 접두어가 아니라 위표에 나와있는 URI실별자이다. 접두어는 단지 코딩을 간편하게 하기 위해 사용되는 수단일 뿐이다. 그러므로 Jsp페이지에서 이 접두어를 사용하기 위해서는 먼저 라이브러리의 UTI식별자와 접두어를 연결해야한다. 그런 일은 taglib 지시자를 통해 할수 있다.

 

taglib지시자는 다른 지시자와 마찬가지로 <%@ ~ %>로 종료된다. 이 지시자에는 uri와 prefix라는 두 개의 애트리뷰트를 써야하고 이 두 애트리뷰트에 각각 URI 식별자와 접두어를 값으로 주어야 한다.

 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

                               ↑                                        

                           접두어                         라이브러리를 식별하는 URI

 

taglib는 jsp페이지의 맨 위쪽에 기술한다. 하지만 어디에 써도 상관은 없다.



출처 : http://blog.naver.com/kalmia888/177110388

[출처] JSTL|작성자 시아

반응형
블로그 이미지

김생선

세상의 모든것을 어장관리

,
반응형

에러:Choose unique values for the 'webAppRootKey' context-param in your web.xml files


해당 에러는 패키지 파일 이름 변경 후 web.xml 등에서 context-param의 param-value 값을 바꿔주지 않아서 생기는 문제.


패키지 파일 이름과 param-value를 일치시켜주면 해결된다.

반응형
블로그 이미지

김생선

세상의 모든것을 어장관리

,