728x90
반응형

전체 글 846

[삽질] stomp, sockjs를 이용하여 websocket 연결 시 info 가 404로 나오는 경우

WebSocket을 이용하여 특정 내용을 처리하는 로직을 개발 중에 삽질한 내용을 정리 차원에서 올린다. 클라이언트는 SockJS와 stompClient를 이용하였고, 서버는 Spring에서 기본적으로 정리한 내용을 크게 바꾸지 않은 상태로 코딩 하였다. 전반적으로 코드의 내용은 https://spring.io/guides/gs/messaging-stomp-websocket/ 에서 나오는 내용과 거의 다르지 않다. 다만 해당 내용을 코딩 중에 sockjs에서 websocket 서버의 "endpoint/info?timestamp" 와 같은 주소를 찾지 못하는 경우가 발생 했다. 이로 인해 서버의 특정 모듈 Dependency가 잘못 되던가, 알지 못하는 문제로 인해 발생 하는 것인줄 알고 프로젝트를 Spr..

Java/Spring 2018.03.13 (4)

Ajax form data를 Query String으로 전달 시 % 값이 사라지는 문제

특정 폼에 %가 들어가는 경우 DB에 저장이 안되는 이슈가 발생하여 수정하는 중에 삽질하게 된 내용을 정리 차원에서 기록한다. 대부분 %의 문제는 DB에 SQL Injection이나 XSS 등의 문제를 회피하기 위해 발생하는 현상이라서 DAO 처리 과정 중에 문제가 발생 한 것이 아닐까란 추측으로 디버깅을 해 보았으나 SQL Prepare가 잘 되어 있었다. 고로 DAO 상에서 발생하는 문제는 아니라는 결론... 그럼 서버 단의 Filter에서 파라미터를 잘라 먹는 것은 아닐까란 생각으로 이미 만들어진 보안 Filter를 찾아서 몇 시간 삽질 했으나 이미 Filter에 값이 들어오기 전 부터 없어진 다는 것을 확인. 그럼 스크립트의 문제인 것인가?란 의문을 가지고 개발자 도구에서 console.log 로..

Java8의 for, stream foreach, parallelStream foreach 간단 속도 테스트

Java8에 들어간 stream, parallelStream이 좋다는 이야기만 듣고 대충 개념만 이해한 상태에서... "그냥 좋겠지"란생각으로 쓰려다... 간단하게 테스트 해보고 정리 ^^ 참고로 로컬 PC에서 돌렸으며, 로컬 PC의 물리 cpu 코어 개수는 4개이다. import java.util.ArrayList; import java.util.List; public class StreamTest { public static void main(String[] args) throws InterruptedException { List intList = new ArrayList(); // 테스트할 loop의 개수... for (int i = 0; i { if(integer % 1000 == 0) { Sys..

Java 2017.02.14

원격지의 이미지 파일을 읽어서 원하는 곳에 업로드 하기

보통 개발 시에 파일 업로드를 하려 하면 html form에서 multipart/form-data로 파일을 선택해서 업로드 하고, 이를 서버 단에서 받아 처리를 하게 된다. 하지만 이런 방법이 아니라 원격지의 이미지 파일을 읽어온 후 필요 시 리사이지, 그리고 나서 다시 다른 곳에 있는 서버로 파일을 업로드 하는 기능이 필요해 개발을 하다 보니, 많이 사용되는 방법이 아니기에 정리해 둔다. import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.net.URL; import java.nio.file.Files; impor..

Java 2017.02.09

코딩 하면서 유용한 Tool Site

코딩하면서 유용하게 사용하고 있는 사이트들이 몇 개 있는데... 자주 사용하다 보니... 그냥 이렇게 정리해 두고 필요할 때 끄집어 내서 사용하면 좋겠다 싶어 정리 ^^ 순서는 중요도랑 아무 상관 없이... 그냥... 1. Json online Editor http://www.jsoneditoronline.org/ JSON Editor Online - view, edit and format JSON online Ooops! Looks like you opened the website of jsoneditoronline having the url prefixed with www, whilst the official url doesn't have this prefix. You will be redirecte..

Develop!/etc 2017.01.24

잡설...

요즘 주변에서 일어나는 일들을 보면서 드는 생각들을 적어본다.정리된 생각이 아니니... 주저리 주저리 잡설이 될 듯 싶다. * 개발을 잘 한다는 의미는 무엇일까? 한 쪽 사람은 다른 사람을 개발 못한다고 욕하고, 다른 쪽에서는 이 사람을 개발 못한다고 욕한다.요즘 드는 생각으로는 뭐가 개발을 잘하는 것이고, 뭐가 못하는 것인지... 이제 잘 모르겠다는...예전에는 뭔가 명확한 원칙, 기똥찬 코딩 실력...여러가지 어려운 전문용어...새로운 개념 도입... 깔끔한 정리 등등뭔가 개발 잘하는 것에 따라오는 수식어들이 있었는데...상황에 따라, 권력을 쥐고 있는 사람에 따라 관점이 달라지듯... 개발을 잘 하는 지의 여부도 달라지는 현상을 본다. 그냥 정확하게 알게 된 결론은...서로 잘난척을 할 뿐...뭐가..

바이크의 꿈은 날라가고...

야마하 mt-03 타고 싶은데...배기량 때문에 2종 소형이 필요해서... 학원을 알아 봤는데...마나님이 안된다고 하셔서 야마하 mt-03은 꿈을 버리게 되었습니다. 그래서 좀 배기량 작은 스쿠터는 어떨까 하고 검색하다가 우연찮게... 이뻐 보이는 스쿠터가 있어서... http://storefarm.naver.com/lsl19690/products/485629786 요놈 ㅎㅎ사고 싶어 마나님에게 링크를 보냈더니...단박에 거절 ㅠㅠ ( 저 죽으면 어떻게 가족이 먹고 사냐고... 바퀴 2개 짜리는 안된다네요 ㅠㅠ) 그냥 오래된 구아방이나 몰고 다녀야 겠네요 ㅠㅠ

인생이야기 2016.11.16

사회 생활 잘 한다는 말의 의미는...

얍삽하다는 의미인 것 같다...그런 사람들이 알아서 먼저 살길 찾아가는 것 같고... 그러다 보면 가만히 있는 사람이 쓰레기 청소 다 하고... 피해 보는 것 같다. 알아서 살길 찾아 가는 것 까지야 뭐라 안하는데...가기 전까지 왜 이리 잘난척 다하면서, 조직에 혼신을 다 바칠 것처럼 하면서...이제와서 나 몰라라 하는거냐 -.-;; 그렇게 살지마라...

HTML5 Canvas를 이용한 브라우저에서 이미지 용량 줄이기

이 역시 티몬 구매후기에서 이미지 업로드와 관련된 기능을 적용하면서 나온 내용을 정리 차원에서 적어 둡니다. 구매후기 작성 시 이미지를 선택해서 업로드를 하게 되는데, 기존에는 이미지의 사이즈를 제한하는 기능이 있었고 이로 인해 이미지 제한에 걸려 이미지를 업로드 하지 못하거나, 업로드 된 원본 이미지도 용량이 너무 큰 문제가 있었습니다. (장당 3MB) 아무런 제약 없이 이용자는 이미지를 마음껏 올릴 수 있으려면 이미지 리사이즈가 필요한데, 서버단에서 용량 리사이징을 하게 되면 아까운 네트웍 비용이 들어가게 되므로 클라이언트 단에서 용량을 줄일 필요가 있었습니다. 그래서 사용하게 된 것이 HTML5의 Canvas 기능이죠. 물론 이전에 HTML5를 제대로 사용해 본 적이 없어서... 모든 기능은 최고의..

Develop!/script, Ajax 2016.11.09 (4)

이미지 파일 업로드 오류 수정 기록...

구매후기 이미지 업로드에서 오류가 나고 있어서 해당 내용을 검토 중에 알게 된 내용을 정리합니다. 기본적으로 아래와 같은 방식으로 업로드가 되고 있습니다. 브라우저 -> php -> Java 그런데 문제는 어느 한쪽의 문제가 아니라 php, Java 둘다 문제가 발생... 그리고 문제의 원인은 둘다 Version Up이였습니다. 1. 먼저 Java Error Message가 "Required MultipartFile parameter 'file' is not present" 라고 발생. 구글링 하니 http://stackoverflow.com/questions/25830503/spring-mvc-http-status-400-required-multipartfile-parameter-file-is-not-..

Java/Spring 2016.11.08

Spring Batch(스프링 배치)에서 작업 시간이 길어지는 경우

Spring Batch를 그닦 많이 써본 경험이 없지만, 특정 요구 사항이 있어서 개발하게 되었습니다.작업을 하면서 겪은 오류를 어떻게 해결 했는지 History 및 Backup을 위해 적어 둡니다. 보통 배치는 Reader와 Writer로 구분합니다.특정 정보를 Reader에서 읽어 들여서 필요한 내용을 가공하고 Writer에서 필요한 행동을 합니다. 그런데 Reader에서 정보를 읽어 들이고 가공하는 시간이 오래 걸리면서 Writer에서 DB Connection을 못 찾게 되고, Writer 작업을 수행하지 못하게 되는 경우가 발생했습니다. 구글링을 한 결과 "autoReconnect 값을 true로 해라", "validationQuery를 날려라" 등등이 나왔지만 유효하지 않은 해결책이였습니다. 결..

Java/Spring 2016.10.27

PHP curl로 파일 전송할 때 mime type 같이 전송하기

필요에 의해 html -> php -> java api로 파일을 전송해야 할 일이 생겼다. Java Api는 UI에서 바로 사용하면 안되는 상태라서 php를 거쳐 가야 하는데 html에서 올린 파일을 Java API로 전달 하는 과정이 생각보다 쉽지 않아 정리 차원에서 글을 남긴다. Html에서 php로 파일을 올리게 되면 $_FILES 라는 전역변수 안에 정보가 담기고, 실제 파일은 php.ini에서 지정한 임시 디렉토리에 저장된다. 해당 경로는 $_FILES['업로드한 html form name']['tmp_name'] 에 저장되어 있으며, 해당 파일을 다시 Java API 쪽으로 넘겨 주면 된다. 넘겨주는 방법은 curl을 사용하면 된다. 다음과 같은 방법으로 하면 된다. $headers = arr..

Develop!/php 2016.05.23

List에서 특정 요소 제거하기

List에서 불필요한 item을 제거하기 위해 loop를 돌리게 되면 제거 후 size가 맞지 않는 일로 인해 null point exception을 만나기가 쉽다. 이럴 경우 제대로 된 방법이 무엇인지는 모르지만... 실제로 돌려보고 Exception이 나지 않은 방법을 찾아 정리 차원에서 남겨 둔다. 검색해서 참고한 URL은 https://stackoverflow.com/questions/17279519/removing-items-from-list-in-java/17279565#17279565?newreg=0dee1db24aaa4154a0cebdc173ed5aeb List toRemove = new ArrayList(); for(Object a: list){ if(a.getXXX().equalsIgn..

Java/Etc 2016.02.11

php의 람다식, 가변 함수

오랜만에 php 코드를 들여다 볼 일이 생겼는데, 알지 못할만한 소스코드들이 있어 헤메다가 정리 차원에서 적어둔다. 1. php의 람다식. http://php.net/manual/kr/function.array-walk.php array_walk($data, function(&$value, $key, $joinUsing) { $value = $key . $joinUsing . $value; }, $glue); array_walk의 2번째 인자값을 function 변수로 넘길 수도 있지만 위에처럼 람다식으로 그냥 적어버릴 수 있다. 안드로이드에서 Callback 함수로 람다식으로 적는 경우가 많은데, 그런식으로 작성하나 보다. 오랜만에 php 하니 새롭다 ^^;; 2. 가변함수 이런말 첨 들어보는데, 위의..

Develop!/php 2015.08.20

MySQL의 Float, Double에서 Length와 Decimal이 의미하는 것...

위도와 경도를 표기하기 위해서 DB Column을 만드는 중 알게 된 내용을 정리해 본다.정확한 내용이 아닐 수도 있으니 참고 사항으로만 보길... MySQL에서 float, double 타입을 Create할 때 float(length, decimals) 와 같은 형식으로 만든다.여기서 length와 decimal이 의미하는 내용이 정확히 무엇인지 알기 위해 구글링을 했지만, 매뉴얼에나 나올법한 알아듣지 못할 소리를 번역기로 돌린 듯한 글만 있... 그래서 좀더 검색해 보니 얻어 걸린 글에서 아래와 같은 내용이 보였다. https://dev.mysql.com/doc/refman/5.0/en/floating-point-types.html M(length)는 전체 길이 즉 정수 부분과 소수 부분을 합친 길이..

Develop!/MySQL 2015.06.02

바코드 인식기 만들기

급하게 바코드 인식 관련 프로그램을 만들다 보니 오픈소스를 검색하게 되었고 Google에서 제작한 zxing 이란 것을 발견하게 되었습니다. (GitHub : https://github.com/zxing/zxing) 해당 코드와 관련된 포스팅들이 여럿 나왔지만 다 조금 씩 부족한 부분들이 있어서 정리 차원에서 올립니다. 물론 제가 올린 내용도 부족한 부분이 많습니다. 1. 외부 앱을 이용한 방법 이미 외부 앱을 이용해서 구동하는 방법은 잘 정리된 곳이 있습니다. 관련 포스팅은 http://code.tutsplus.com/tutorials/android-sdk-create-a-barcode-reader--mobile-17162 를 참고하시면 됩니다. 간단하게 정리하자면 Github에서 다운로드 받은 소스 ..

Java/Android 2015.05.13 (1)

체리 웨스트 게이트 터보차져 수리 및 eni 0W-30 오일 교환

오일전문 커뮤니티(http://cafe.naver.com/redzonekr) 에서 복돌님이 주구장창 이야기 하셨던 엄청난 반응을 보여준다는 eni 0W-30으로 오일을 교환하고 왔습니다.언제나 그렇듯이 오일은 '오일스마트 수원점'에서 했구요. (평가 봐 보세요 ㅎㅎ 장난 아닙니다 ^^)오일 교환 전에 스포텁 4년차 정기 정검 받으러 '기아자동차 수원 서비스센터' 가야 했기에 먼저 서비스 센터에 입고했습니다.접수 받아 주시는 분이 정기 정검 말고 특이점 이야기 하라고 하길래, 와이프가 주행 중 기어를 R로 놓는 순간 시동이 2번 꺼진 적이 있어서 그 이야기를 했습니다.접수 완료 후 미케닉이 시동 꺼질 당시의 상황을 물어보았지만... 제가 있을 때 꺼진게 아니라 와이프가 있을 때 꺼진거라서 정확한 설명을 하..

MySQL의 zero date("0000-00-00 00:00:00") 값이 Date 값으로 넘어오지 않는 경우

MySQL에 DateTime 필드에 값이 없을 경우 기본 값으로 "0000-00-00 00:00:00" 들어가는 경우가 있다. 이럴 경우 쿼리해 온 값이 Java의 Model 객체에 Setter로 값을 넣는 과정에서 에러가 발생한다. 에러 메시지는 다음과 같다. "Cannot convert value '0000-00-00 00:00:00' from column 4 to TIMESTAMP" 뭐 '0000-00-00 00:00:00' 값은 timestamp 값으로 바꿀 수 없다는 메시지 같은데... 이럴 경우 어떻게 해결해야 하나 고민하다가 구글링을 통해 알게 된 내용을 정리한다. 보통 Model 객체의 Setter를 아래와 같이 작성하게 된다. setter에서 Date 객체로 받아야 하는데 값을 넘겨줄 수..

Java 2015.04.06

이클립스에서 jquery.min.js 파일의 오류 제거하기

이클립스 사용하다 보면 jquery.min 파일에서 "Missing semicolon" 이라는 오류가 뜨게 된다.이럴 경우 다음과 같은 방법으로 예외 처리를 하게 되면 된다. 출처 : http://metalbird.tistory.com/59 ============================================================================================= query min.js 의 경우 이상없이 작동하나 에러가 표시되게 된다. 이게 싫어서 일반 jquery*.js로 쓰기도 했으나 간단하게 해결할수 있는 방법이 있어서 메모한다. 에러 예외처리에 추가하는것이다. Project > Properties > JavaScript > Include Path > 아래..

Spring에서 MessageUtil 사용하기

다국어 사용을 위해서 그동안 Struts2 기반 MessageUtil만 사용하다가 Spring 기반으로 변경하기 위해 구글링, 작업한 내용을 정리 차원에서 올립니다. 1. applicationContext.xml에 다음 내용을 추가 /WEB-INF/messages/messages 2. MessageUtil import java.util.Locale; import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang.StringUtils; import org.springframework.context.support.MessageSourceAccessor; import org.springframework.web.context.reques..

Java/Spring 2015.02.24

메소드 파라미터(parameter) 및 어노테이션(Annotation) 정리

출처 : http://warmz.tistory.com/727 1. HttpServletRequest, HttpServletResponse 2. HttpSession 3. Local - java.util.Locale 지역 정보 4. InputStream, Reader - HttpServletRequest의 getInputStream(), Reader 5. OutputStream, Writer - HttpServletResponse의 getOutputStream(), Writer - 서블릿 형태로 만들때 사용한다. 6. @PathVariable - @RequestMapping의 URL {} 부분의 패스 변수를 받는다. 만약 타입이 틀린 값이 들어오면 HTTP 400 - Bad Request 가 전달 된다.?..

Java/Spring 2015.02.24

[Redis] redis 정리

1. overcommit_memory 값 변경 https://charsyam.wordpress.com/2013/01/24/%EC%9E%85-%EA%B0%9C%EB%B0%9C-redis-vm-overcommit_memory-%EC%9D%84-%EC%95%84%EC%8B%9C%EB%82%98%EC%9A%94/#comment-1256 위 포스트를 보다가 overcommit_memory 값은 어디에 셋팅되어 있고, 어떻게 변경하는 것인지 궁금해서 구글링.아래와 같은 포스트 찾음. http://redis.io/topics/faq 현재 셋팅 된 값은 /proc/sys/vm/overcommit_memory 에 있음. http://redis.io/topics/admin 값 셋팅은 /etc/sysctl.conf 안에 v..

Server/Etc 2014.12.01

콘솔에서 특정 파일명 또는 특정 단어가 들어간 파일 찾기

오랜 기간 콘솔 작업을 안하다가 다시 콘솔에서 작업할 일이 생겼는데...그동안 잘 사용해 오던 명령어들이 생각이 안나서 구글링... 이왕 찾게 된 김에 정리해 둘 겸 적어 둡니다.필요하신 분들은 사용해 보세요 ㅎㅎ 1. 해당 파일 안에 특정 문구가 들어간 파일 찾기 (하위 디렉토리 포함) grep -rl "원하는 단어" pathex) [user@server redis]$ grep -rl "sysctl.conf" ././src/redis-server./src/redis.c./src/redis-sentinel./src/redis.o 요즘 redis를 보고 있는데 sysctl.conf라는 단어가 들어간 파일을 찾을 경우 위와 같이 하면 된다.위 내용은 src/redis-server 라는 파일 안에 sysctl..

Server/Shell 2014.12.01

시승기 관련 전문 사이트를 개설하였습니다.

제 블로그에 차량 시승 관련 내용들이 간간히 올라오는데요.관련해서 아예 별도 사이트로 개설하였습니다.그래서 자동차 시승 관련된 내용은 한쪽으로 몰아서 운영하려구요. 관리자 모드에서 리퍼러로 살펴보면 자동차 검색으로 들어오시는 분들이 꽤 되는데...앞으로 http://testdrive.reviews 를 즐겨 찾기 해 두시고 들어오시면 좋은 내용을 많이 보실 수 있을 것입니다. ^^ (과연 좋은 내용일지 ^^;;;)도메인은 생소한 최상위 도메인인데... 한국말로 하면 '시승 ' + '리뷰' 입니다. 간단히 말해서 '시승.기' ㅎㅎㅎ저 단에는 좋다고 생각해서 잡은건데... 다른 분들에게도 좋을지 모르겠네요 ㅎㅎ 그리고 간단한 회원 가입 이후에 자동차 관련해서 질 높은 토론, 논의 등이 있으면 좋을거 같습니다...

비오기 전 체리 세차 하기...

토요일 오후에... 세차를 힘들게 하고나서 사진 몇방 찍었습니다.일요일날 비올 것을 알았기에... 세차 후 얼른 지하 주차장으로 고고씽 하고...출퇴근 용으로 사용하는 구아방이만 끌고 다녔다는 ㅎㅎㅎ 엔진 오일 간지 6,000km가 넘어 가고 있는데... 엔진 오일은 아직까지 괜찮아 보이네요.그래도 7,000km에는 꼭 오일 갈기 ^^ 그리고 문에 생긴 수 많은 문콕들을 보며... 맘이 아픈... ㅠㅠ제발 상식적인 사람들이라면... 옆 차량들 문콕 좀 하지 말자구요 ㅠㅠ하긴 비 상식적인 사람들이 넘쳐나는 시대에... 바랄껄 바래야겠죠? -.-;;

운전대만 잡으면 격투기 선수로 변하는 분들에게...

오늘 이 영상 보고 너무 웃겨 죽는 줄 알았습니다.도로 위에 올라 운전하다 보면 이런 경우 많거든요. 온라인 상에는 키보드 워리가 많듯이, 도로 위에도 워리어들이 많습니다.물론 자기보다 강한 사람이 나타나면 깨갱하지만... 그리고 차와 자신을 동일시 하는 이상한 습성이 있어서, 차량이 작은 차량을 보면 무시하기 일수이지요. 도로에, 아니 우리 사회에 개념 충만한 사람들이 많아져서, 조금더 합리적이고 양보하며 융통성 있는 교통 문화가 이루어 졌으면 좋겠습니다. "세상엔 나보다 더 강한 사람이 많다." 라고 한 마지막이 와닿네요 ^^

LaFerrari vs Ferrari Enzo Driving Fast in the Hills!

현 시대의 최고의 하이퍼카인 LaFerrari와 한시대의 최고 하이퍼카였던 Enzo Ferrari가 같이 와인딩에 나섰네요. 길 가다가 한번만 보기도 힘든 두대의 차량이 같이 와인딩을 하는 진귀한 풍경입니다. ^^ 영상 내내 들리는 LaFerrai의 업, 다운 쉬프트 소리는 아드레날린을 자극하네요 ^^ 덧. 언제 한번 스포텁으로라도 와인딩을... ^^ 그 전에 전복 될려나 ^^;;;

약장사가 먹고 사는 방법...

저는 원래 차량에 첨가제가 필요 없다고 믿는 사람입니다.효과가 없을 뿐더러, 있더라도 아주 미세한 만큼의 효과가 있어서 가격대비 효과가 그리 크지 않다고 생각했기 때문이죠. 그래서 그동안 첨가제를 사용하지 않았었는데... 이번에 카드 포인트가 좀 남아서... 포인트로 쇼핑을 하던 도중... 아래 첨가제가 눈에 딱 들어오더군요. 흠... 속는 셈 치고 한번 사 볼까? 라는 생각도 들었고...출퇴근 용도로 쓰는 구아방이 매우 오래된 차라서, 연식이 오래된 차일 수록 왠지 이런 첨가제가 잘 먹힐거 같다는 생각에 1+1으로 두통을 구매했습니다.그리고 스포텁(체리)과 구아방이에 한통씩 넣어 줬죠. 뭐 별 기대는 안하고... 그런데...그런데... 차량 반응이 좀 다르네요 ^^;;엔진 rpm도 조금 더 부드럽고 나..

728x90
반응형