xrp_coil

2012년 6월 1일 금요일

javascript 정규식 이용한 금액 콤마로 나누기

어디선가 퍼온 소스기는 하지만. 상당히 유용한.. ㅎ.


function commify(n){
 var reg = /(^[+-]?\d+)(\d{3})/;   // 정규식
 n += '';  // 숫자를 문자열로 변환

 while (reg.test(n))
  n = n.replace(reg, '$1' + ',' + '$2');

 return n;
}


jstl ${param} 동적으로 구현해보기.

jstl을 사용하면서 여태 동적으로 구현 할 일이 없었는데 ....

이번건 동적이라기보다 변수하나만을 할당해서 가져오는것이지만.

이 방법으로 동적구현까지도 충분히 될듯하다.

1. 목적 :
  - 세션을 가져올 때 세션명을 properties 또는 Constants 에서 지정한 명으로 받아오게 하기.





1-1. 일반적인 방법 :

 - java
 세션명을 직접 입력하여 저장한다.

HttpSession session = request.getSession();
session.setAttribute("SESSION_USER", userInfo);



 - jsp
위에서 입력한 세션명으로 바로 가져온다.

${sessionScope.SESSION_USER.name}





1-2. 세션명을 선언후 사용 :

 - Constants.java
  공통으로 사용할 세션명을 정한다.

public final class Constants {

 public static final String USER_SESSION_KEY = "_S_USER_KEY_";   //유저 세션 KEY

}



 - java
  Constants에 지정된 세션키로 세션을 저장한다.

HttpSession session = request.getSession();
session.setAttribute(Constants._S_USER_KEY_, userInfo);



 - jsp
  Constants를 import 하고 세션키를 변수에 담는다. 그리고 변수에 담겨있는 세션키명으로 세션을 가져온다.
  ( 대괄호 안에 있다고 배열로 착각한 내가 좀 챙피함. -_-;;)

2012년 5월 30일 수요일

스프링(spring) 3.0 Annotation 파일 다운로드(File Download) 구현하기.


그냥 파일다운로드는 다른 사람들의 포스팅에도 있어서 금방했는데...

프로퍼티에서 가져와서 구현을 하려고 했더니 클래스패스를 잡지 못해서

request.getClass().getResource("/").getPath() 를 사용하면 이상하게 자꾸 톰캣 라이브러리 쪽으로 패스를 가져온다.

그래서 바꾼것이 currentThread에서 클래스로더를 가져오고 거기에서 getResource로 프로퍼티의 위치를 가져오는식으로 바꿈. 그래도 이렇게 해서 되니까~ 다행~ .

그것때문에 좀 더 시간이 걸렸슴.


우선 첫번째로 해야할 부분. 파일다운로드용 ViewResolver를 선언.

- dispatcher-servlet.xml




두번째로, Controller 구현. 일반적으로 공통 controller를 만들고 bean으로 만드는데 저는 그냥 업무마다 각각의 controller에서 구현했슴. 원래 properties에서 가지고 오는 부분은 공통클래스로 되어있으나 포스팅을 위해 잠시...
- templeteFileController.java






세번째로. 파일다운로드 뷰 bean으로 넘긴 후, 처리해야할 로직 구현.
- FileDownloadView.java





네번째로 jsp에서 필요 파라메터를 넘긴 후, 다운로드 테스트.
- test.jsp





* 참고 프로퍼티 파일은 아래와 같습니다. 경로는 src 바로 아래에 있구요.
- test.properties





다운로드 부분은 얼마전 작성한 아래 포스팅을 참고하시면 됩니다.

ajax로 파일다운로드 구현.
http://leinger.blogspot.com/2012/05/ajax.html


다른 세팅에 비해 비교적 간단하게 보이기는 하지만. 이것도 몇 시간에 걸쳐서 한... 나는..

역시.. 배울게 많은 프로그래머이다...ㅠ_ㅠ


======================================
2012-05-31 내용추가

로컬서버에서 잘 돌아가던 다운로드가 linux서버로 올리고나니 돌아가지 않는다. 원인을 찾아보니.

local서버에서 돌릴때 controller의 properties 파일을 가져오는 부분에서 url은


url.toString()::::::file:/D:/project/Java/.metadata/.plugins/org.eclipse.wst.server.core/tmp3/wtpwebapps/Test/WEB-INF/classes/test.properties
url.toString().substring()::::::D:/project/Java/.metadata/.plugins/org.eclipse.wst.server.core/tmp3/wtpwebapps/Test/WEB-INF/classes/test.properties

테스트서버에서 url은


url.toString()::::::file:/usr/local/tomcat7.0.23/webapps/ROOT/Test/WEB-INF/classes/test.properties
url.toString().substring()::::::usr/local/tomcat7.0.23/webapps/ROOT/test/WEB-INF/classes/test.properties

즉. 절대경로이기 때문에 local서버에서는 substring 6자리가 맞지만. linux서버에서는 substring 5자리로 변경해 주어야 한다. 

편하게 만들려고 했는데.. 점점 불편해지고 있는...ㅠㅠ os체크라도 해야하나..ㅠㅠ


결론...;;; 아래 로직 추가.




int substrStartAt = 0;
      String osName = System.getProperty("os.name").toLowerCase();
      if(osName.indexOf("win")>=0){
       substrStartAt = 6;
      }else if(osName.indexOf("mac")>=0){
       substrStartAt = 5;
      }else if(osName.indexOf("nix")>=0 || osName.indexOf("nux")>=0){
       substrStartAt = 5;
      }else if(osName.indexOf("sunos")>=0){
       substrStartAt = 5;
      }

2012년 5월 24일 목요일

object/activex 위로 올라오는 ajaxloding만들기.


farpoint speard를 사용하다보니..

이런 포스팅만 하게되는군요..-_-;;;


전 포스팅에서도 사용했던 BlockUI 플러그인을 사용하여

ajaxStart / ajaxStop을 구현해봤습니다.

전포스팅 참조는
http://leinger.blogspot.com/2012/05/jquery-datepicker-blockui-activex.html


그럼 시작해보아요~

일단 위의 링크에서 BlockUI를 다운받고, 인클루드 하시고,





사용하실때는간단합니다.

페이지 스크립트 안에 showAjaxLoading(); 만 호출해 주시면 됩니다.

지금은 소스가... 좀 허접하긴 합니다만. ;;;

이미지 올리면 이쁘게 될 것으로 생각됩니다~ ㅋ


소스를 가져가시는 분들 모두~ 이쁘게 해보아요~


그럼 이만.!

ajax로 파일다운로드 구현.


아래의 블로그의 글을 베이스로 작성했습니다.

http://radworks.egloos.com/2510155


위의 소스에서 추가로 serialize() 로 폼을 던졌을때 convert 하는 부분을 추가했습니다.




실행 예 ::

실행예 ::

$.download('testExcelDownload.do','find=commoncode','post' );
또는
$.download('testExcelDownload.do',$('#frm').serialize(),"post" );


2012년 5월 23일 수요일

ClassCastException : cannot be cast to org.springframework.web.multipart.MultipartHttpServletRequest 해결.

업로드 파일을 처리하기 위해 request 를 MultipartHttpServletRequest 으로 캐스팅 하는 과정에서 Exception 이 난다.


(MultipartHttpServletRequest) request).getFile("returnFile")


java.lang.ClassCastException: org.apache.catalina.connector.RequestFacade cannot be cast to org.springframework.web.multipart.MultipartHttpServletRequest

해결방법은, dispatcher-servlet.xml에 bean 을 세팅해주면 된다.




이상.

2012년 5월 18일 금요일

현충일의 역사와 태극기 게양법


위키 백과사전과 네이버 백과사전과 다음 백과사전의 비교.



현충일

현충일(顯忠日)은 국가를 위해 목숨을 바친 순국선열(殉國先烈)과 전몰(戰歿) 장병들의 충렬을 기리고 얼을 위로하는 대한민국의 기념일이다. 매년 6월 6일로, 전국 각지에서 나라를 위하여 목숨을 바친 애국선열과 국군장병들의 넋을 위로하고 그 충절을 추모하는 행사를 거행한다.

현충일에는 관공서와 각 가정, 민간 기업, 각종 단체에서 조기(弔旗)를 게양한다. 대통령 이하 3부 요인 등과 국민들은 국립묘지를 참배하고, 오전 10시 정각에 전국민이 경건한 마음으로 명복을 비는 묵념을 1분 동안 행한다. 1970년 6월 15일 '관공서의 공휴일에 관한 규정'을 대통령령으로 공포하여 공휴일로 정하였다.



[위키 백과사전]

---------------------------------------------------------------------------------

현충일


나라를 위하여 목숨을 바친 애국 선열과 국군 장병들의 넋을 위로하고, 충절을 추모하기 위하여 정한 기념일.
국가 한국
주최시기및기간 6월 6일
개최장소 국립현충원 현충문
시작연도 1956년 04년 19일
행사내용 순국선열 및 호국영령에 대한 묵념, 헌화 및 분향, 헌시 낭송
본문
대통령 이하 정부요인들, 그리고 국민들도 국립현충원을 참배하고, 이날 오전 10시에는 전국민이 사이렌 소리와 함께 1분간 묵념을 올려 고인(故人)들의 명복을 빈다.
1956년 4월 19일 대통령령 1145호로 제정되어, 1970년 1월 9일 국립묘지령 4510호로 연1회 현충추념식을 거행하게 되었다. 1982년 5월 15일 대통령령으로 '관공서의 공휴일에 관한 규정'을 공포하여 공휴일로 정하였다.

국가보훈처 주관 아래 3부 요인과 각계 대표 공무원, 학생 등이 참석하여 현충일 추념식을 갖는다.

[네이버 백과사전]


------------------------------------------------------------------------------

현충일 [顯忠日]

애국선열과 국군장병들의 충절(忠節)을 추모하기 위해 국가가 정한 공휴일.

매년 6월 6일 각종 행사와 함께 대통령 이하 정부요인들, 그리고 국민들이 국립묘지에서 참배한다. 이날 오전 10시에 사이렌 소리와 함께 전국민은 1분간 경건히 묵념을 하며 고인들의 명복을 빈다. 1970년 6월 15일 대통령령으로 '관공서의 공휴일에 관한 규정'을 공포하여 이날을 공휴일로 정했다.

현충일

[다음 백과사전]


------------------------------------------------------------------------------

계양인줄 알았는데 게양이 맞는 말이네요. 


< 옥외게양 >


 - 단독주택
  • 집 밖에서 보아 대문의 중앙이나 왼쪽에 게양한다.
 -  공동주택
  • 집 밖에서 보아 앞쪽 베란다의 중앙이나 왼쪽에 게양한다.
 -  건물
  • 전면지상의 중앙 또는 왼쪽에 게양, 옥상이나 차양시설 위의 중앙, 또는 주된 출입구 위 벽면의 중앙에 게양한다.
 -  옥외 정부행사장
  • 이미 설치되어 있는 주게양대에 대형 태극기를 게양하는 것을 원칙으로 한다

  • 다만, 공설운동장 등 대형 행사장의 경우 단상인사 등 참석인사들이 옥외 게양대의 국기를 볼 수 없거나 국기가 단상 또는 전면 주요 인사석에서 멀리 떨어져 있을 때에는 단상 또는 전면을 바라보아 왼쪽에 별도의 임시 국기게양대를 설치, 게양함으로써 참석인사 모두가 국기를 잘 볼 수 있도록 한다.


< 옥내게양 >
       깃대에 의한 게양을 원칙으로 하되, 교육목적이나 또는 실내 여건 등을 감안하여 필
       요할 경우 깃면만을 게시할 수 있다.

 - 사무실
  • 기관장 집무실 등 사무실의 경우에는 실내 환경에 맞는 국기 크기와 게양위치를 정한 후 실내용 깃대에 국기를 달아서 세워 놓는다. .
 - 회의장,강당 등
  • 회의장이나 강당 등에 국기를 깃대에 달아서 세워 놓을 때에는 단상 등 전면 왼쪽에 위치하도록 하고, 깃면만을 게시할 경우에는 전면 중앙에 위치하도록 한다.
 - 옥내 정부행사장
  • 중ㆍ대형 행사장의 경우 대형 태극기 깃면을 단상 뒷쪽 중앙 벽면에 설치하는 것을 원칙으로 한다. 다만, 원형 실내체육관 등은 참석인사 모두가 깃면을 잘 볼 수 있도록 시설 내부구조에 알맞은 위치를 선정토록 한다.
 - 차량용 국기게양
  • 차량의 본네트 앞에 서서 차량을 정면으로 바라볼 때 본네트의 왼쪽이나 왼쪽 유리창문에 단다



2012년 5월 16일 수요일

jquery datepicker 와 blockUI 를 사용하여 activex 및 object위에 달력 띄우기.


파포인트 스프레드(FarPoint Spread 8) 을 웹에서 띄우고는 검색을 하기위해

달력레이어를 올렸는데 아무리 올려도 올라가지 않는다...


얼마전에 포스팅했던 overLib 를 사용해보려 했지만.. 까다롭더군..

overLib 정보는 이곳으로 -> http://leinger.blogspot.com/2012/05/object-flash-layer.html



포기하지 않고 웹서핑 끝에 찾아낸 blockUI 플러그인!!!

대부분의 활용이 submit 중복방지나 ajaxStart / ajaxStop 을 하기 위해 사용을 했지만.

내가 필요한건 달력이기에~ 달력에 응용을 해보기로 했다.


우선, 필요한 두 플러그인을 다운받는다.

- 수정된 버전의 datepicker
http://goo.gl/DsnLd

- 원본 datepicker
http://jqueryui.com/demos/datepicker/
다운로드 : jquery.ui.datepicker.js

- BlockUI
http://jquery.malsup.com/block/
다운로드 : jquery.blockUI.js


초창기 버전은 blockUI.js. 까지 수정해야했지만. ㅎ.,ㅎ;;;;

datepicker.js 를 열심히 분석한 끝에 조금 편하게 바꿨음.




//TODO : 스프레드 위로 달력올리기, used blockUI jquery plugin - modify bbok 
   $(inst.dpDiv).block({ 
    message: null,
    baseZ:-1,
    bindEvents:false,
    overlayCSS:{backgroundColor:'',oapcity:0,cursor:'pointer'}
    });


위의 소스를 _showDatepicker 펑션 아래의

inst.dpDiv.zIndex($(input).zIndex()+1);

소스 아래와 _updateDatepicker 펑션의 맨 끝에 붙여넣으면.

spread 뿐만 아니라 모든 object 및 activeX 위에도 잘 올라온다.


끝.








spring에서 ibatis 트랜잭션(transaction) 처리.


기본적으로 사용하는 트랜잭션 처리가



 
try {
   sqlMap.startTransaction()
   Employee emp2 = new Employee();
   // ...set emp2 data
   Integer generatedKey = (Integer) sqlMap.insert ("insertEmployee", emp2);
   emp2.setFavouriteColour ("green");
   sqlMap.update("updateEmployee", emp2);
   sqlMap.commitTransaction();
}catch(Exception e){
    sqlMap.getCurrentConnection().rollback();
    e.printStackTrace();
    throw e;
} finally {
   sqlMap.endTransaction();
 }


위처런 startTransaction 과 endTransaction 을 사용하는 방식인데.

아무리 해도. 적용이 되지 않는다...
분명히 rollback 도 타는데 말이다.


검색질 중에 http://javastore.tistory.com/103 포스팅의 도움으로 해결.


applicationContext.xml 에 아래와 같이 추가한다.




daoImpl.java 에는 아래와 같이 setter를 만들어준다.

@Autowired
 private TransactionTemplate transactionTemplate;
 
 public void setTransactionTemplate(TransactionTemplate transactionTemplate){
  this.transactionTemplate = transactionTemplate;
 }


메서드 부분은 아래와 같다.


private int saveCaseLowReal(HashMap hmap) throws Exception {
                        ghmap = hmap;
   
   
   boolean result = false;
   result = (Boolean)transactionTemplate.execute( new TransactionCallback() {
    public Object doInTransaction(TransactionStatus status) {
     try {

                                                      /*인서트 로직.*/      

      return true;
     }catch (Exception e){
      e.printStackTrace();
      status.setRollbackOnly();
      return false;
     }
    }
   });

}


대략의 로직으로 보아 excute 하기 전에 true인지 false 인지 판별해서 던져주는듯 하지만..

불편하다...-_-;;;;;


이거보다 좋은 방법 있으신분은 링크를 댓글로 Plzzzzzzz..... ㅠㅠ


2012년 5월 9일 수요일

request.getRemoteAddr() IP가 0:0:0:0:0:0:0:1 일때 해결.


아이피가 0:0:0:0:0:0:0:1 이라는건 ipv6의 주소를 가져온것으로 ipv4로 봤을때 127.0.0.1 이 맞다.

localhost로 서버에 접속했을 때 생기는 현상이며, 10.10.10.1 과 같은 아이피로 접근했을때는 정상적으로 가져온다.

윈도우7 에선 기본적으로 IPv6를 리턴하므로 WAS 세팅으로 바꾸어 주면된다.


WAS Arguments를 세팅해보자.


  1. eclipse에서 톰캣을 실행할경우
    메뉴의 Run -> Run Configurations -> Arguments 탭 -> -Djava.net.preferIPv4Stack=true 추가




2. 톰캣을 개별로 실행 할 경우
    톰캣설치경로/bin/catalina.bat 의 "set JAVA_OPTS" 라는 키워드로 검색하면 두개가 나오는데 두군데 다  -Djava.net.preferIPv4Stack=true 추가

@Autowired :: nested exception is org.springframework.beans.NotWritablePropertyException 해결.

아오.. 세팅하다가 이것때문에 무지 고생했네요.

다 허접한 실력때문이겠지만...ㅠㅠ

여튼 에러의 내용은 아래와 같습니다. 아래 색칠한 부분을 구글 번역기로 돌리면...

 클래스의 잘못된 부동산'loginDao'[com.kis.web.system.login.service.LoginService] :  재산'loginDao는'쓰기 아니거나 잘못된 세터 메소드를 가지고 있습니다.세터 매개 변수 타입은 게터의 반환 형식이 일치하는가?
라고 나옵니다..-_-;; 뭔소리야.. -_-^

짧은 영어실력으로 보자면 일단 getter와 setter 부분이 잘못되어서Bean을 만들수 없다는건데말이지요.. 해결을 하자면....

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'loginService' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'loginDao' of bean class [com.kis.web.system.login.service.LoginService]: Bean property 'loginDao' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter? at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1361) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1086) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425) at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4723) at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5226) at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5221) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:619) Caused by: org.springframework.beans.NotWritablePropertyException: Invalid property 'loginDao' of bean class [com.kis.web.system.login.service.LoginService]: Bean property 'loginDao' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter? at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:1024) at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:900) at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:76) at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:58) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1358) ... 21 more



applicationContext.xml 의 내용입니다.

<Bean id="loginDao"> 로 되어있습니다.

LoginService.java 의 내용입니다.

public void setUserDao(LoginDao loginDao) { 로 만들어져 있네요.

위 부분을 아래와 같이 맞춰줍니다.

public void setLoginDao(LoginDao loginDao) {

그리고 서버를 재시작..

잘돌아 갑니다.. 왜 이름을 다르게 했을까요..ㅠㅠ 버린시간이 너무 아깝네요.ㅠ


2012년 5월 8일 화요일

스승의날 노래. 스승의 은혜 듣기.




스승의 은혜는 하늘 같아서 

우러러 볼 수록 높아만 지네 

참되거라 바르거라 가르쳐 주신 
스승은 마음의 어버이시다 

아아 고마워라 스승의 사랑 
아아 보답하리 스승의 은혜 

태산같이 무거운 스승의 사랑 
떠나면은 잊기 쉬운 스승의 은혜 
어디간들 언제있든 잊사오리까 
마음을 길러주신 스승의 은혜 

아아 고마워라 스승의 사랑 
아아 보답하리 스승의 은혜 

바다보다 더 깊은 스승의 사랑 
갚을길은 오직하나 살아 생전에 
가르치신 그 교훈 마음에 새겨 
나라 위해 겨레 위해 일하오리다. 

아아 고마워라 스승의 사랑 
아아 보답하리 스승의 은혜

어버이날 노래. 어머니 마음 듣기.




어머니 마음  [양동주 작사/이흥렬 작곡]


나실 제 괴로움 다 잊으시고
기르실때 밤낮으로 애쓰는 마음
진자리 마른자리 갈아 뉘시고
손 발이 다 닳도록 고생 하시네

나실 제 괴로움 다 잊으시고
기르실제 밤낮으로 애쓰는 마음
진자리 마른자리 갈아 뉘시며
손 발이 다 닳도록 고생 하시네

하늘 아래 그 무엇이 높다 하리요
어머님의 은혜는 가이 없어라
가이 없어

아리랑 아리랑 아라리요
아리랑 고개를 넘어간다
나를 버리고 가시는 님은
십리도 못가서 발병 난다
발병 난다 워

하늘 아래 그 무엇이 높다 하리요
어머님의 은혜는 가이 없어라
우 가이 없어라

ajaxplorer 한글화 오류 바꾸기.

굳이 필요없는것이긴 하지만.

보기 불편하니 바꾸어 봅시다.


bit.ly 플러그인을 설치하고 공유를 눌렀을때 만료일자로 나와야 하는데

비밀번호라고 나옵니다. 이것을 바꾸어봅니다.

파일의 위치는

C:\APM_Setup\htdocs\ajaxplorer-core-4.0.4\plugins\core.ajaxplorer\i18n

일반적으로 c:\에 설치를 했다면 이곳입니다.

kr.php 파일을 열어봅니다.


295번에 보면 비밀번호라고 되어있는데 이것을 아래와같이 만료일자로 바꾸어줍니다.



"293" => "이 파일에 공개 링크 생성",
"294" => "링크 만료 일자 (일 단위)",
"295" => "만료일자",
"296" => "아래 링크를 복사하여 주십시오:",
"297" => "새 사용자(U)",
"298" => "새 사용자 추가",
"299" => "새 저장소(R)",


이렇게 하면 정상적으로 만료일자로 바뀌게 됩니다~ ^^




2012년 5월 4일 금요일

블로그에 소스코드를 이쁘게 syntex highlighting 하기.


블로거를 기준으로 소스코드를 이쁘게 하는 방법을 알아봅니다


참조 사이트는 http://www.craftyfella.com/2010/01/syntax-highlighting-with-blogger-engine.html


syntexHighlight 를 하기 위해서는 <head> 와 </head> 사이에 스크립트 삽입을 해야합니다.


1. 내 블로그의 템플릿에 보시면 사용중인 디자인의 아래쪽에 HTML 편집이 있습니다.


2. 클릭하게 되면 아래와 같이 템플릿 소스코드가 나열되며

3. 아래의 코드를 헤더 사이에 삽입합니다.



4. 사용할때는 아래와 같이 HTML 편집기능을 이용해서 html 태그가 들어간 애들은 스크립트로 그냥 코드는 pre태그로 하면 됩니다. ㅎ

Method 1: Using the script Tag



Method 2: Using the pre Tag



5. 그러면 이렇게 보입니다~ ^^*

// Comment
public class Testing {
public Testing() {
}
 
public void Method() {
/* Another Comment
on multiple lines */
int x = 9;
}
}







이걸 해보면서... 느낀게.. 이쁘게 보이는게 쉽지는 않구나.. ㅎ 

여러 블로거 분들이 이렇게 힘들게 올리는 줄을 몰랐네요. 



앞으로 저도 분발해야겠습니다.

ajaxplorer bitly plugin :: URL file-access is disabled


ajaxplorer에서 bitly plugin을 사용하려고 받아서 공개링크를 만들려고 하니. 아래와 같은 

에러가 발생한다.


 file_get_contents() [<a href='function.file-get-contents'>function.file-get-contents</a>]: URL file-access is disabled in the server configuration
 




무슨일인가 인터넷검색을해도 php를 모르는 나로써는 한번도 못본에러..ㅠㅠ

어쨋든 file-access 가 disabled 되어 있는건알았는데 대책이 없었으니..

여기저기 검색끝에 설정파일을 뒤져보기로 했다. 

그러던중에 뭔가 연관이 있을만한 config 발견. ㅋ

apm_setup/php.ini 파일에서

;;;;;;;;;;;;;;;;;;
; Fopen wrappers ;
;;;;;;;;;;;;;;;;;;
; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
allow_url_fopen = Off

; Whether to allow include/require to open URLs (like http:// or ftp://) as files.
allow_url_include = Off



이부분을 전부 On 으로 바꾸어주고 서버를 재시작하면 바로 적용된다. ㅎ

은근 편한 bitly 공개링크~ ^^



1. admin이나 user계정으로 로그인해서 오른쪽버튼을 누르면 파일을 공개링크로 정할수 있다.



2. 공개링크에 사용할 패스워드를 입력한다. 비밀번호의 권장 자리수는 5자리 이상.


3. 입력하고 생성을 누르면 bitly의 url이 잘 나온다~ 후훗~
   아래의 옵션에 비밀번호 0 비밀번호 ***** 로 나오는게 이상하게 느끼실텐데. 한글화 상의 오타로 보여집니다. 앞의 비밀번호는 원래 만기일자가 맞는듯 합니다. 바꾸시려면 http://leinger.blogspot.com/2012/05/ajaxplorer.html 이곳의 글을 참고 바랍니다.




4. url로 들어가보면 아래와같이 간단한 화면이 나온다. 화면이 너무 단순해서 이미지가 전부 로드가 된건지 안된건지 솔찍히 좀 미심적기는함.

하지만 패스워드를 입력하고 엔터키를 누르면 다운은 잘됨.




위의 과정에서 궁금하신 부분이있으면 댓글 부탁드립니다~ ^^


그럼.

2012년 5월 3일 목요일

블록지 Blogsy 사용법

Blogsy에 오신 것을 환영합니다!

시작해볼까요?

  1. 설정 → 서비스 설정 으로 가셔서 추가하실 블로그 종류를 선택하고 로그인 정보를 입력하세요.
  2. 포스트 정보 버튼을 눌러서 현재 포스트의 모든 정보를 확인하세요.
    1. 현재 포스트 정보
    2. 로컬 저장된 초안
    3. 온라인 포스트와 페이지
HTML을 편집하거나 임베드 코드를 붙여넣기 하려면, 세 손가락으로 좌우로 드래그하여 HTML모드로 넘기세요.
어떤 부분이 어떤 기능을 수행하는지 나와있는 아래 그림을 참고하세요.

사용법 비디오와 가이드

Blogsy 사용법에 대한 더 많은 정보를 알고싶으시면 "설정" → "사용법 비디오" 또는 "사용법 가이드"를 참고하세요.



raspberryPI 킨텍스 KEPES2012 전시회.



전자부품 박람회가 5.15일부터 킨텍스에서 개최된다고 하군요. ㅎ

라즈베리파이가 국내에서 처음으로 소개된다고 하니. 방문해보시는것도 나쁘지 않을듯 싶네요.

평일이라 저는 힘들듯 싶지만.ㅠㅠ

2012년 5월 2일 수요일

object flash activex 위에 layer 띄우기.

http://www.macridesweb.com/oltest/


  Example and Test Files for the overlibmws DHTML Popup Library  
  1. Getting Started
  2. return value for onclick links
  3. use of STICKY & SCROLL
  4. use of NOCLOSE / MOUSEOFF
  5. use of REF positioning
  6. use of WRAP & WRAPMAX
  7. use of SHADOW
  8. use of Secondary Popups
  9. use of DRAGGABLE
  10. use of MODAL & Confirm Dialogs
  11. use of ?GBACKGROUND
  12. hide form or flash (incl. frames)
  13. use of FUNCTION
  14. use of Debug Function
  1. use of BUBBLE (incl. image map)
  2. use of FILTER
  3. use of font-size settings
  4. set up scrollbars within popups
  5. loading HTML files into popups
  6. use of AJAX with popups
  7. php/mysql db content & quoting
  8. add print link or button in stickies
  9. select dates via calendar popups
  10. test across frames support
  11. test keyboard-invoked popups
  12. translate words or documents
  13. I love my Harley (sound)
  14. link color swapping via popups


직접 코딩으로 하는게 아닌 라이브러리를 이용하는 방식이긴 하지만. 샘플종류도 다양하고.


뭐.. 35kb 정도야. 로딩하는데 그리 시간을 많이 잡아먹는다던가 하지 않으니... 추가하기로 맘먹었다.


위에 샘플을 보면 알겠지만 어떤방식으로던 div 레이어를 띄운다. ㅎ 고민할필요 없이 선택.



2012년 4월 30일 월요일

정말 쓸데없는 물건 (동영상)

ㅋㅋ

쓸데없는 머신이라니.ㅋㅋ

근데 진짜 동영상보니까 별 쓸데없는기능이기는 하다.ㅋㅋ

한두번은 재밌겠다. ㅋ


2012년 4월 27일 금요일

farpoint spread 8 money currency 표시 방법

cbSpread.js 를 사용.


$sprd.CellType = 12;
$sprd.TypeCurrencyMax = 999999999999999.99;
$sprd.TypeCurrencyShowSymbol = false;
$sprd.TypeCurrencyDecPlaces = 0;
$sprd.TypeCurrencyShowSep = true;
$sprd.TypeHAlign = 1;
$sprd.TypeVAlign = 2;


2012년 4월 24일 화요일

[펌] 기드온 선드백(Gideon Sundback) 과 지퍼의 YKK

[구글 두들 2012.04.24]

구글에서 기념적인 두들을 선보였다.
현대적인 지퍼를 만든 기드온 선드백의 생일을 기념하기 위한 두들.

처음에 열릴까 하고 마우스를 대니 커서의 모양이 바뀐다. 아래로 잡아끌어 내려보니 기드온 선드백에 대한 기사가 나온다.

역시 검색 아이디어 하나는 기발한 구글~ 다른 방면에서도 기발함이 좀더 발휘대길 기대해본다.




- 지퍼의 YKK에 대하여.

옷에서 신발, 가방에 이르기까지 패션의 끝을 ‘꼭 닫아’ 마무리해 주는 전 세계 지퍼 절반에는 어김없이 ‘YKK’란 영어 이니셜이 새겨져 있다. 사람 이름의 약자 같기도 하고 암호 같기도 한 YKK는 무슨 뜻일까.

원래 지퍼는 1893년 미국 시카고의 직공인 위트콤 저드슨이 고안해 특허를 받은 상품이다. 몸이 비대했던 저드슨은 외출할 때마다 허리를 굽혀 군화 끈을 묶는 것이 어려워 지퍼를 발명해 냈다는 후문이다. 초기 지퍼는 후크 고리를 슬라이드 클램프로 연결시키는 방식으로 당시 이름도 ‘걸쇠 잠금장치’란 뜻의 ‘클래스프 락커’(Clasp-Locker)였다. 그러나 입에 딱 붙지 않는 어려운 이름이다 보니 그리 많이 불리지 않았다.

그러다가 1913년 기드온 선드백이 오늘 날과 같은 형태의 지퍼를 고안해 냈고, 그로부터 10년 후인 1923년 BF 굿리치(Goodrich Co.) 사가 선드백의 특허로 신발을 만들면서 부츠 이름에 ‘지퍼’(Zippers)란 이름을 처음으로 붙였다. 이후 지퍼가 널리 모급되면서 신발이 아닌 잠금장치만 따로 지퍼로 불리게 됐다. 1937년에는 지퍼가 달린 남성복 바지가 최초로 선을 보이면서 패션 전문지인 에스콰이어로부터 ‘남성을 위한 최신의 재단 아이디어’란 극찬을 듣기도 했다.




그렇다면 지퍼에 새겨진 YKK는 무슨 뜻일까. 이는 세계 최고의 지퍼 제조회사인 일본 요시다 공업(Yoshida Kougyou Kabusikigaisya)의 약자다. 미국에서 발명된 지퍼에 일본 제조회사의 이름이 새겨져 전 세계로 퍼져 나간 데에는 요시다 제품의 절대 우위의 품질이 작용했다. 1만 번 이상 열고 닫아도 끄덕없는 내구성 덕분에 내구성 수준이 1000회에 불과한 중국 제품의 초저가 공세를 버티며 전 세계 시장의 50%를 점유하고 있는 것.

현재 나이키, 아디다스, 루이비통, 페라가모, 리바이스 등 전 세계 명품들은 대부분 요시다 제품을 쓴다. 요시다는 생산기계에서 천과, 실 등 모든 부품과 재료를 일본에서 조달, 철저히 품질을 관리한다. 또한 지퍼에 ‘열고 닫음을 가능하게 하는 것’이라는 가치를 부여해 ‘방수지퍼’나 고리를 들어올려야만 내릴 수 있는 ‘안전지퍼’ 등 혁신적인 제품을 끊임없이 개발해 왔다. 이것이 전 세계 지퍼의 절반에 YKK란 약자가 새겨지게 된 원동력이다.

요시다 공업은 1934년 요시다 다다오가 설립한 이후 현재 10만 개가 넘는 고객사를 보유하며 연 매출 43억달러(4조8600억원), 영업이익률 10%대를 기록하며 신화를 일궈 나가고 있다.

유지현 기자/prodigy@heraldm.com


2012년 4월 19일 목요일

No mapping found for http request with uri 해결.

흠.... 우선 이 에러는 기본적인 지식이 없어서 발생한듯하다...

처음부터 세탕을 해봤다면 생기지 않았겠지만 어쨋은 해결을 해보자..



우선 에러의 원인은 에러 그대로 리퀘스트 매핑을 찾지 못해서임.

 세팅을 살펴보면 나의 경우,

web.xml 에 다음과 같이 세팅이 되어있다.


<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/test/*</url-pattern>
  </servlet-mapping>


컨트롤러에는 이렇게 되어있다. 

@Controller 
@RequestMapping("Abcd_01") 
Public Class 어쩌구.... 

 그리고 실제 컨트롤러의 패키지는 이렇다.

 com.test.web.abcd.controller.Abcd_01.class 

 흠... 그래서 보니... 예전에는 컨트롤러 매핑에 저렇게만 써도 됬었는데 무슨 세팅을 잘못한건지....

컨트롤러에서 이렇게 바꾸어야 서블릿을 잘 찾아온다.

 @Controller 
@RequestMapping("abcd/Abcd_01") 
Public Class 어쩌구.... 

 매핑 클래스 앞에 패키지명을 써줘야 찾아온다...

왜일까나 ㅠㅠ 해결은 했고 잘 돌아가지만 원인을 몰라 디게 찝짭한 해결..



 원인 아시는분 댓글 부탁드려요~~~^^

2012년 4월 14일 토요일

실시간 방문자 및 나라 통계 표시하기. realtime traffic,visitor statistics

블로그를 하면서 어느나라에서 내 블로그에 방문을 하는지 얼마나 방문을 했는지 궁금하신 분은 이글을 참조 하시기를~.

통계프로그램이 많이 있는듯한데. 일단 지금 써본게 하나기때문에 feedjit 이라는 위젯을 기준으로 설명합니다.


가입방법과 적용절차는 쉽습니다.

1. http://feedjit.com/ 으로 갑니다.

 2. Choose Your Feedjit 을 클릭합니다.


3. 우리는 돈이없기에 굳이 돈주고 쓰지 않습니다. 첫번째 free 에 sign up을 합니다.


4. 그러고 나면 간단한 회원가입 창이 나옵니다. 간단한 정보를 입력하고 나면.

5. 색상 및 코드를 삽입할 블로그를 선택하라고 나옵니다.
5-1. 굳이 블로그를 선택하지 않고 맨 아래의 other blog를 선택합니다. 그래야 스크립트 소스가 나와서 편집하기도 붙여 넣기도 편하기에~

6. 위의 스크립트 코드를 복사해서 원하는 곳에 원하는 스타일로 붙여 놓습니다.


7. Tip하나를 알려드리자면 블로그에 소스를 붙여 넣으시면 사이즈가 맞지 않는 경우가 있습니다. 소스중에 ww=200 을 원하는 사이즈로 늘려주시면 height 값은 맞춰집니다.

그리고 feedjit 은 두가지 형태의 realtime stat을 제공하는걸로 보입니다. 다른 형태가 있으면 댓글로 알려주세요~ ㅎ

  - list Type : http://feedjit.com/serve/
  - map Type : http://feedjit.com/map/

스크립트 소스를 위와 같이 세팅해주시면 맵과 리스트 형식으로 자유롭게 세팅이 가능합니다.


2012년 4월 13일 금요일

request.getRemoteAddr() 인증오류: 접속IP가 변경됨 0 0:0:0:0:0:0:0:1 원인 해결.

 request.getRemoteAddr();

인증오류: 접속IP가 변경됨 0 0:0:0:0:0:0:0:1

AbstractAuthCheckInterceptor.java

무슨 소리인가 했네..

해결방법은 간단.


localhost 대신 자신의 IP 를 적어주면 잘 됩니다.

ajaxplorer Cannot find base path for your repository 또는 Cannot create root path for repository (

Cannot find base path for your repository! Please check the configuration!

Cannot create root path for repository ( 이 이후 부분은 안나온다...


원래는 위의 에러가 안나와야 정상인듯 하다. 외국에서 사용하는거니까..

저 두개의 에러때문에 한참을 헤맷다.

문제는..



레파지토리를 잡을 때 한글폴더를 잡아서라는거....

영문으로 바꾸어주니 아무이상없이 돌아간다.


소스를 바꿔서 돌아가게 만들면 좋겠지만. php는 아직 안해본데다가..

저 소스를 보고 분석할만한 시간이 없다.-_-;;


여튼 문제점은 찾았으니 끝~

2012년 4월 12일 목요일

linux 시간 설정하기.


linux 시간 설정

확인.
[root@##### ~]# date

Wed Apr 11 01:44:44 KST 2012


변경.

월/일/시/분/년.00 순으로 입력하면 된다.

[root@##### ~]# date 0412163612.00
Thu Apr 12 16:36:00 KST 2012

CPO clock 에 동기화.
[root@##### ~]# hwclock -w
[root@##### ~]#

한영키 안될때 윈도우 키보드 레지스트리로 바꾸기. (winXp, windows7, windows8)


윈도우 8 을 깔고나서 제일 불편한게 한영키... 

그래서 이래저래 검색을 하다가 찾았네요. 대부분의 사용자들이

101키 유형1 번으로 하면 잘된다고 하더군요. 참고하세요.

오옷.. 바꾸고 나니.. 무지 잘되네요!! ㅋ ㅋ

참고로 OS는 Windows8 RC1 Build 8102 입니다.




regedit를 하시고 아래 경로의 값을 수정하시면 됩니다.

\Hkey_Local_Machine\System\CurrentControlSet\Services\i8042prt\Parameters



영어 및 한국어 키보드 레지스트리 항목

미국 영어 101/102 키 키보드

다음 표에 나와 있는
레지스트리에서
레지스트리 항목은 영어 미국 101/102 키 USB 키보드를 합니다.
값 이름값 형식값 데이터
LayerDriver 일본어REG_SZkbd101.dll
OverrideKeyboardIdentifierREG_SZPCAT_101KEY
OverrideKeyboardSubtypeDWORD0
OverrideKeyboardTypeDWORD7

한국어 101 키 유형 1 USB 키보드

다음 표에 나와 있는
레지스트리에서
한국어 101 키 유형 1 USB 키보드에 대 한 레지스트리 항목이 있습니다.
값 이름값 형식값 데이터
KOR LayerDriverREG_SZkbd101a.dll
OverrideKeyboardIdentifierREG_SZPCAT_101AKEY
OverrideKeyboardSubtypeDWORD3
OverrideKeyboardTypeDWORD8

한국어 101 키 유형 2 USB 키보드

다음 표에 나와 있는
레지스트리에서
한국어 101 키 유형 2 USB 키보드에 대 한 레지스트리 항목이 있습니다.
값 이름값 형식값 데이터
KOR LayerDriverREG_SZkbd101b.dll
OverrideKeyboardIdentifierREG_SZPCAT_101BKEY
OverrideKeyboardSubtypeDWORD4
OverrideKeyboardTypeDWORD8

한국어 101 키 종류 3 USB 키보드

다음 표에 나와 있는
레지스트리에서
한국어 101 키 종류 3 USB 키보드에 대 한 레지스트리 항목이 있습니다.
값 이름값 형식값 데이터
KOR LayerDriverREG_SZkbd101c.dll
OverrideKeyboardIdentifierREG_SZPCAT_101CKEY
OverrideKeyboardSubtypeDWORD5
OverrideKeyboardTypeDWORD8

한국어 103/106 키 USB 키보드

다음 표에 나와 있는
레지스트리에서
한국어 103/106 키 USB 키보드에 대 한 레지스트리 항목이 있습니다.
값 이름값 형식값 데이터
KOR LayerDriverREG_SZkbd103.dll
OverrideKeyboardIdentifierREG_SZPCAT_103KEY
OverrideKeyboardSubtypeDWORD6
OverrideKeyboardTypeDWORD8