tnsnames.ora 파일을 확인
1. Id/pass가 잘못 된 경우
2. tnsnames.or 파일의 경로가 잘못 된 경우
Network - Admin 폴더 밑에 있어야 하는데 그 밑에 Sample폴더에 있알 수도 있음
Sample는 무시 또는 삭제하고 Admin폴더 밑으로
jstl에서 연산을 할 때(특히 나눗셈) 소수점이 제대로 안찍히고 자동으로 반올림이 되는 경우가 있다.
아무리 핸들링 하려고 해도 안됐지만 결국 해결
해결방법은 받아온 Data를 바로 쓰지 않고 포맷을 바꾼상태에서 사용해야 한다.
ex) result.SUM_ANSWER1이 70, result.SUM_ANSWER2가 1일 때
구성비율은
result.SUM_ANSWER1/(result.SUM_ANSWER1 + result.SUM_ANSWER2) 와
result.SUM_ANSWER2/(result.SUM_ANSWER1 + result.SUM_ANSWER2)
이다.
이것을 jstl로 표현하면
<c:set var="a" value="${result.SUM_ANSWER1/(result.SUM_ANSWER1 + result.SUM_ANSWER2)}"/>
<c:set var="b" value="${result.SUM_ANSWER2/(result.SUM_ANSWER1 + result.SUM_ANSWER2)}"/>
인데 결과는
a = 100, b=0 이 나온다.
해결방법은
<fmt:formatNumber var="sumAnswer1" value="${result.SUM_ANSWER1}" pattern="#.##"/>
<fmt:formatNumber var="sumAnswer2" value="${result.SUM_ANSWER2}" pattern="#.##"/>
<c:choose>
<c:when test="${sumAnswer1> 0}">
<fmt:formatNumber var="calAnswer1" value="${sumAnswer1/(sumAnswer1+sumAnswer2)}"/>
</c:when>
</c:choose>
받아 온 값이 int 형이면 연산을 해도 int 이기 때문에
포맷을 소수점있게 바꾼다음 연산해야 소수점연산이 제대로 된다.
태그 라이브러리 사용할 때
<c:if test="${not empty abcde|">
${fn:replace(abcde, '\r\n', '<br/>')}
</c:if>
를 짧게 한줄로 쓰려고
${not empty abcde ? fn:replace(abcde , '\r\n', '<br/>') : "empty" }
위와 같이 썼는데 에러난다...
? : 안에서는 역슬래쉬(\)가 제대로 먹지 않는다
SUBSTR을 사용하는 이유는 SYS_CONNECT_BY_PATH를 하면서 ','를 붙이기 때문에
Data의 시작이 , 로 시작한다. 그것을 잘라주기 위함임
SELECT SUBSTR(max(SYS_CONNECT_BY_PATH (COLUMN_NAME, ',')),2) AS ALIAS
FROM (
SELECT COLUMN_NAME, ROWNUM RNUM
FROM TABLE_NAME
WHERE ROWNUM <= 20
)
START WITH RNUM = 1
CONNECT BY PRIOR RNUM = RNUM - 1
출처 : http://nadachel.tistory.com/entry/oracle-%EC%A1%B0%ED%9A%8C%EB%90%9C-%EC%84%B8%EB%A1%9C%EA%B2%B0%EA%B3%BC%EB%A5%BC-%EA%B0%80%EB%A1%9C%EB%A1%9C-%ED%91%9C%ED%98%84-%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95
몇 번이나 검색하느라... 이번에 저장해 놓고 나중에 써먹어야지 ㅋㅋ
Tomcat에 jenkins를 webapps 폴더에 넣고 startup을 했을 때,
8080포트가 이미 사용중어어서 충돌 날 때가 있다.
이때, 아예 Tomcat의 기본포트를 바꿔주면 ㅎㅎㅎ
/apache-tomcat-7.0.52/conf/server.xml
before
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
after
<Connector port="9000" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8" />
<Connector executor="tomcatThreadPool"
port="9000" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
startup을 했을 때 오류가 없으면 OK.
http://localhost:9000/jenkins/
전자정부프레임워크에 회원가입도 했고
통합개발환경도 압축을 풀고 Eclipse를 실행하는데
1. Failed to load the JNI shared library "C:\Java\jre6\bin\client\jvm.dll"
이것은 64bit를 설치하려는데 설치된 JAVA가 32bit일 수 있다.
다시 32bit로 받아서 실행해야한다.
2. 설명서대로 처음프로젝트를 생성했는데
src 폴더와 target 폴더만 생성되고 아무것도 없을 때,
설정된 JVM이 8일 수 있다.
eclipse 실행시 JDK1.8 대신 JDK6 이나 7로 바꾸고 프로젝트를 생성해본다.
여러 요인이 있겠지만...
? 를 써야하는데 :변수를 써서 나는 경우도 있다.
하지만 테이블명@계정으로 별칭을 준 경우에
Merge INTO 절은 위 에러
(
지도 API를 사용호출시 브라우저에서 호출하면 정상인데
JAVA 소스에서 호출하면 다음과 같은 에러가 떴다.
(parameter : 서울특별시 강남구 강남대로)
[Fatal Error] :3:22: An invalid XML character (Unicode: 0x1c) was found in the CDATA section.
문제는 브라우저에서 호출할 때, UrlEncoding을 해서 보내는데
그것을 JAVA에서 Decoding을 하고 그대로 사용하니
결국 Encoding안된 parameter가 넘어가서 에러가 나는듯 하네
try{
String address = URLEncoder.encode(addr, "UTF-8");
String apiKey = "Naver 지도API";
String encoding = "utf-8";
String coord = "latlng";//latlng, tm128(navigation 용 : default)
String target = "http://openapi.map.naver.com/api/geocode.php";
String params = "?key=" + apiKey + "&encoding=" + encoding + "&coord=" + coord + "&query=" + address;
URL url = new URL(target+params);
URLConnection connection = url.openConnection();
try{
InputStream in = connection.getInputStream();
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(in);
NodeList itemNodes = doc.getElementsByTagName("item");
for(int i = 0; i < itemNodes.getLength(); i++){
Node item = itemNodes.item(i);
NodeList childNodes = item.getChildNodes();
//public static final short ELEMENT_NODE = 1;
//public static final short ATTRIBUTE_NODE = 2;
//public static final short TEXT_NODE = 3;
for( int j = 0 ; j < childNodes.getLength(); j++){
Element ele = null;
Node childNode = childNodes.item(j);
if (childNode.getNodeType() != Node.ELEMENT_NODE){
continue;
}
String eleTag = childNode.getNodeName();
if( "point".equals(eleTag)){
NodeList pointList = childNode.getChildNodes();
for(int m = 0; m < pointList.getLength(); m++){
Node aPoint = pointList.item(m);
String pointName = aPoint.getNodeName();
if("x".equals(pointName)){
//logger.debug(aPoint.getNodeName() + " : " + aPoint.getTextContent());
}else if("y".equals(pointName)){
//logger.debug(aPoint.getNodeName() + " : " + aPoint.getTextContent());
}
}
break;
}
if( "address".equals(eleTag)){
continue;
}
if( "addrdetail".equals(eleTag)){
continue;
}
}//end of for j
}//end of for i
}catch(Exception e){
e.printStackTrace();
}
}catch(Exception e){
e.printStackTrace();
}
ps -ef | grep java.*tomcat
한 뒤에 나타난 process 를 kill
kill xxxxx