목차

반응형

사실 질문부터가 잘못됐다.

DB에 삽입한 줄바꿈 문자가 띄어쓰기로만 처리가 되는 것이 아니라 DB에는 잘 들어가지만 css의 문제로 인하여 두칸 이상의 띄어쓰기가 한칸의 띄어쓰기로 바뀌어버리는 것이다.


ㄹㅇ 디비쪽에 잘못들어간다고 확신을 해버려서


텍스트를 이스케이프해서

StringEscapeUtils.escapeJava

https://stackoverflow.com/questions/2406121/how-do-i-escape-a-string-in-java


jsp에서 jstl로 이스케이프된 \r\n을 <br>태그로 바꿔주려고 했다.

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<% pageContext.setAttribute("newLineChar", "\n"); %>

${fn:replace(item.comments, newLineChar, "; ")}

https://stackoverflow.com/questions/58054/how-can-i-replace-newline-characters-using-jsp-and-jstl

근데 위에방식으로하면 한글문자도 escape처리가 되버려서 한글문자가 안나옴


위의 내용을 하느라 한시간 이상을 날려버렸는데 다른분이 10초만에 해결해주고 가셨다.

표출해주는 태그쪽에다가 아래의 스타일을 걸어주면 잘된다.

style="white-space: pre-line;"



스타일을 걸어주면 된다.

개뻘짓.

반응형
반응형

스프링에서 다운로드 요청을 하면 크롬이나 기타 브라우저는 잘 작동하지만 파이어폭스, 사파리에서는 다운로드가 안되는 경우가 있다.


그럴때는 파일 다운로드에 대한 결과 response에 헤더값을 파일로 지정을 해주면 된다.

response.setHeader("Pragma", "public");

response.setHeader("Expires", "0");

response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");

response.setHeader("Content-type", "application-download");

response.setHeader("Content-Disposition", "attachment; filename=" + fvo.getStreFileNm());

response.setHeader("Content-Transfer-Encoding", "binary");

https://stackoverflow.com/questions/8876924/how-to-download-xml-file-from-server-in-ie-using-java/8877983#8877983

반응형
반응형

아파치단

http://nahosung.tistory.com/107


톰캣단

https://sarc.io/index.php/tomcat/240-tomcat-response-header-server


나같은경우는 아파치단에서 해결해야했음

반응형
반응형

장편으로 연재할 프로그램이다.

옛날에 어떤학교 외주로 만든 프로그램인데 오래되기도 해서 한번 올려본다.



laser maze에 대한 이미지 검색결과


Laser Maze라고 원래는 특정 조건을 제시해주면 해당 퍼즐을 풀어나가는 혼자 할 수 있는 보드게임이다.

이 보드게임을 프로그램으로 바꾸는 것이 목적이었다.



해당 프로그램을 만드는 과정에 대하여 설명하겠다.

반응형
반응형

bizsiren 휴대폰 인증, IPIN 인증 모듈 사용시

PccIpinSecu 또는 PccHpSecu 함수에서 java.lang.StringIndexOutOfBoundsException 에러가 발생한다.



근데 아직도 모르겠는게 일단은 원인 해결해서 넘어갔는데 분명 저런문제가 없었는데 갑자기 어느날부터 저런 에러가 발생했다.



에러 메시지는 아래와 같다.

java.lang.StringIndexOutOfBoundsException: String index out of range: -1

at java.lang.String.substring(String.java:1911) ~[?:1.7.0_151]

at CommonUtil.PccIpinSecu(Util.java:547) ~[classes/:?]


까보니까


retInfo  = sciSecuMg.getDec(retInfo, ReqNum);


int inf1 = retInfo.indexOf("/",0); <===== 요기에서 에러가 난다.

retInfo는 뭐하는놈이냐면 인증 모듈에서 서버측으로 전송하는 암호화된 인증 결과값이다.

getDec는 인증사에서 암호화되어 넘어온 retInfo를 유저 브라우저의 세션에서 저장되어 키값역할을 하는 ReqNum로 복호화를 해야하는데 (SciSecuManager 자바파일이 없어서 자세한건 모름)



서버쪽하고 클라이언트쪽에 얼러트와 sysout을 마구 심어서 살펴본 결과 문제를 찾았다.

세션에서 잘 유지되고 있어야하는 ReqNum이 null이어서 복호화하고나서(애초에 복호화하면 결과값이 ""임 복호화부터 실패한거지만 에러가 안날뿐임) 복호화된 정보를 split할때 인덱스 에러가 나는것이다.



근데 이게또 웃긴게 어떤컴퓨터는 세션에 남고 어떤 컴퓨터는 세션에 안남는게 문제다.

그래서 회사에 전화해봤다.

처음 전화했을때는 친절한 남자분이 받으셨는데 증상을 말씀드리고 서비스 등록정보 말씀드리고 우리꺼를 살펴보시다가

한번 인증 해보라고 하셔서 인증 해봤다.

"음 우리쪽에서는 문제가 없이 잘 처리가 되는 것 같은데요... 좀더 알아보고 연락드리겠습니다..."

예외상황을 처리한다는건 매우 귀찮고 삽질인것을 알기때문에 며칠기다리다가 다시 전화를 드렸다.

아마 연구원? 이신것같은데 어떤 까칠한 여성분께 상담을 받았다.

똑같이 증상을 말씀드렸다. 그러자 "음 근데 그 세션에 reqnum(키값)이 남는건 우리측 문제가 아닌것같음. 님쪽에서 처리해야함" 이러셨다.

흠 그래서 속으로 '조졌네' 이러고 끊으려는데 저쪽에서 reqnum을 랜덤으로 생성해서 세션유지하지말고 그냥 하드코딩해서 박아버리라는것이었다.

유레카 바로 그리했더니 처리됐다 ㅇㅇ 개똑똑하다.


기존 인증 모듈로 넘어가기전 클라이언트 측에서 랜덤 암호키를 생성하는 코드

String randomStrIpin = "";

for (int i = 0; i < numLengthIpin; i++) { //0 ~ 9 랜덤 숫자 생성 randomStrIpin += ranIpin.nextInt(10); } String reqNum = randomStrIpin;

위 라인을 그냥 요렇게 바꿔버리고

String reqNum = "jtowpjgrjgpjephprejohtpoej4towy43t";




서버측에서 세션에 저장된 랜덤으로 생성된 암호키를 불러오는 코드

//쿠키값 가져 오기
Cookie[] cookies = request.getCookies();
String tranjectionName = "";
String tranjectionReqNum = "";
/*if(cookies!=null){
for (int i = 0; i < cookies.length; i++){
Cookie c = cookies[i];
tranjectionName = c.getName();
tranjectionReqNum = c.getValue();
System.out.println("tranjectionName>>>>>"+tranjectionName);
System.out.println("tranjectionReqNum>>>>>"+tranjectionReqNum);
if(tranjectionName.compareTo("reqNumIpin")==0) break;

//tranjectionReqNum = "";
}
}*/
tranjectionReqNum = (String) session.getAttribute("reqNum");


에러나고나서 어떻게든 reqNum값 받아올려고 쿠키도 건들고 세션도 건들고 엄청 노력했음.

근데 그냥

String cookiereqNum = "jtowpjgrjgpjephprejohtpoej4towy43t"; 이러면 인증업체에 보낸 reqNum값과 서버측에서 복호화는 키값이 일치하여서 잘 작동함.

반응형
반응형
  
  //하루치 폴더를 미리 생성함
   	public void mkdirPre(String Year,String Month, String Day) throws IOException
       {
   		String storePathString = propertyService.getString("Globals.fileStorePath")+"/data";
       	
       	Calendar cal = Calendar.getInstance();
   	    cal.clear();

   	    cal.set(Calendar.YEAR, Integer.parseInt(Year));
   	    cal.set(Calendar.MONTH, Integer.parseInt(Month)-1);
   	    cal.set(Calendar.DATE, Integer.parseInt(Day));
   	    cal.add(Calendar.DATE, 1);
   	    String mm = String.format("%02d", cal.get(Calendar.MONTH)+1);   
   	    String dd = String.format("%02d", cal.get(Calendar.DATE));
   	    String storePathStringfull = storePathString+"/"+cal.get(Calendar.YEAR)+"/"+mm+"/"+dd;
   	    String storePathStringmm = storePathString+"/"+cal.get(Calendar.YEAR)+"/"+mm;
   	    String storePathStringyyyy = storePathString+"/"+cal.get(Calendar.YEAR);
   		File saveFolder = new File(storePathStringfull);
       	if (!saveFolder.exists() || saveFolder.isFile()) {
       		saveFolder.mkdirs();
       		Runtime.getRuntime().exec("chmod -R 777 " + storePathStringfull);
       		Runtime.getRuntime().exec("chmod -R 777 " + storePathStringmm);
       		Runtime.getRuntime().exec("chmod -R 777 " + storePathStringyyyy);
       	}
   }

mkdirPre("2018","3","22"); 이렇게하면 data 경로 아래에 2018/03/23 그리고 권한은 777로 폴더 생성됨.

원래 리눅스에서 chmod -R 777 경로 이렇게 하면 해당 경로 아래에 있는 파일 폴더까지 다 권한부여 되는걸로 아는데 근데 자바에서 실행하면 그렇게 안돼서 하나하나씩 다 해줬음.

반응형

'Java > Java' 카테고리의 다른 글

intellj gradle 프로젝트 생성, dependency 추가하는 방법  (0) 2023.07.11
자바 보드게임 Laser Maze - 1  (0) 2018.04.10
반응형

퀵서치라는건데 보통 텍스트 검색할때 Ctrl + H 눌러서 검색할 파일 확장자 적고 검색해서 나온 결과에서 또 뒤지고 답답했는데 이거 쓰면 엄청편하다.

하지만 여윽시 intellij Ctrl + Shift + F 가 최고인듯 ㄹㅇ

eclipse quick search에 대한 이미지 검색결과

설치 참고 http://javadeveloper.tistory.com/9







j레벨

이거는 ㄹㅇ 갓갓이다 외쳐 갓용호!

https://zeroturnaround.com/software/jrebel/

웹앱에서 서버단 java파일 수정 하자마자 바로바로 클래스파일에 반영이되고 돌아가는 로컬에서도 반영이 된다.

java말고 xml jsp 등 전부다 잘된다.

회사 주임님이 알려준건데 이거 쓰다보면 나중에는 디버깅모드도 귀찮아서 그냥 sysout(">>>>>>>>>>ovehear!!!!"+something); 이런식으로 디버깅모드를 안쓰게되고 야매처리하게된다고 초급개발자는 어찌보면 좀 피해야할수도 있다고 하셨다.


jrebel 설정후 서버 시작하면 처음에 이런 메시지가 나온다.

크 약 93시간이나 절약해준다고한다 무슨 원리인지는 모르겠지만 근데 자바파일을 엄청 자주 바꿨는데 그럴지도 모른다.

설정하기는 매우 귀찮은데 한번 설정하고나면 ㄹㅇ 없이 작업 못할꺼다 아마



크롬 툴이다.

폼 필러라고 현재 열려있는 페이지에서 모든 폼을 dummy data로 자동으로 채워준다

https://chrome.google.com/webstore/detail/form-filler/bnjjngeaknajbdcgpfkgnonkmififhfo

회사에서 일하다가 테스트용으로 이거쓰고있었는데 외국어가 들어가서 그런지

담당자분이 '님이거 누가 매크로써서 스패밍하는것같음 처리좀' 이랬다 ㅋㅋㅋ




크롬툴이다 TouchEn이다. 가끔씩 어쩔수없이 깔아야할때가 있는데 그럴때마다 설치하러가서 이 프로그램 사용자 리뷰를 본다. 꿀잼이다

https://chrome.google.com/webstore/detail/touchen-pc%EB%B3%B4%EC%95%88-%ED%99%95%EC%9E%A5/dncepekefegjiljlfbihljgogephdhph/reviews

이 프로그램을 만드는 라온시큐어라는 회사는 분명 팀의 내부 화합이 엄청 좋을것이다.

반응형
반응형

Sprite의 이미지에서 노가다 형태로 긁어오는 수밖에 없는 것 같음.

반응형
반응형

https://software.intel.com/en-us/android/articles/intel-hardware-accelerated-execution-manager-end-user-license-agreement

안드로이드 에뮬레이터를 빠르게 해주는 hax kernel이 안깔려있음

this computer does not have vt-x 에러떠서 설치가 안된다면

https://www.youtube.com/watch?v=3irpIFya_lk 5:26초

발음 좋다 ㅋㅋ

반응형
반응형

가상 에뮬레이터로 테스트하면 너무 느리기 때문에 개인 핸드폰을 연결해서 테스트하는게 훠얼씬 낫다.

삼성 폰이므로....

http://local.sec.samsung.com/comLocal/support/down/kies_main.do?kind=usb

에서 통합 USB드라이버 설치후 안드로이드 스튜디오에서 컴파일한뒤 핸드폰 찾아서 실행 ㄱㄱ

반응형