개발2014. 3. 1. 20:01

프로그래밍을 하다보면 캐릭터셋때문에 고생하는 경우가 종종생긴다.

이전에 하던 유지보수때도 그랬고..금요일에 다른 직원 잠깐 도와줄때도 그랬다.

금요일에 겪은 현상은..데이터 베이스에 문자열이 깨져서 저장이 되어 있는상황.

이 문자열을 원래 프로그래밍 한곳에서 쿼리를 날리면 제대로 나오고 우리가 쿼리를 하면 제대로 나오지 않는상황.

처음에는 이 문자열이 암호화 되어서 들어가서 그런건가 싶어서 문자열을 그대로 가져와 복호화도 해보고..

mysql에서 쿼리문 자체에서 복호화 하는 방법으로 해봐도 문자열이 제대로 나오지 않는 현상..

일단 암호화 돼서 저장되던 데이터는 쿼리문을 이용하고 데이터 불러올때 캐릭터셋 설정으로 해결을 해지만 다른 컬럼들이 문제였다. 그래서 데이터 베이스의 캐릭터 셋이 뭐로 설정 되어 있는지를 확인했고, 데이터를 넣을때(PHP나 JSP페이지)의 케릭터셋을 알아봤다.

데이터 베이스의 캐릭터 셋은 latin1..페이지의 케릭터 셋은 EUC-KR..

처음엔 데이터베이스 캐릭터 셋을 왜 latin1으로 설정했나 하고 검색해봤다.

한국에 살고 있는데 왠 latin1일까..난 라틴 사람도 아닌데??

ISO-8859-1가 latin1의 캐릭터셋..ㅋ

집어 넣을때 EUC-KR로 넣으니 latin1인 데이터 베이스에서는 데이터가 깨져서 들어갔을것이다.

왜냐..캐릭터 셋이 맞지 않으니까..아마도 데이터 베이스에서 깨져 보이지 않으려면 ISO-8859-1로 인코딩을 해서 넣으면 데이터 베이스에는 깨져 들어가지 않겠지..

일단은 우리가 설정 되어 있는 상황에서 깨지지 않는 데이터를 가져오는게 우선..

데이터 베이스에서 가져올때 ISO-8859-1로 데이터를 가져오고 그뒤 그 데이터를 EUC-KR로 인코딩 하는 방법으로 문제 해결..

직원과 함께 와 이렇게 왜 혼란스럽게 짰을까 하고 욕을했다.

아마도 이렇게 짜놓으면 뭐 회사에서 짤리지 않나??

보통 데이터 베이스와 페이지 인코딩 셋은 UTF-8이 일반적일텐데..

Posted by Z700zZz
개발2013. 11. 27. 14:34

개발 하던도중 파라미터에 값을 던질때 파라미터 명이 대소문자로 구분되어 있을경우에 대소문자를 가릴까 궁금해져서 테스트 해보니..대소문자 가린다.


파라미터 명을 Aaa인경우 aaa로 바꿔 보낼경우 못받는다.


너무 기초적인건가..


이제라도 알았으니 다행이다.

Posted by Z700zZz
개발2013. 11. 25. 13:29

개발을 하다보면 테스트 서버나 테스트 코드로 테스트를 한 뒤에 실제 운영되고 있는 상용서버에 업로드 하는 작업들을 많이 하게 된다. 이때 흔히들 하는 실수는 상용서버에서 적용 되는 서버 정보나 소스 코드들을 바꾸지 못하고 올리게 되는 상황이 종종 발생된다. 서버 작업은 다해놓고 제대로 돌아가는것 다 확인해서 서비스를 시작했는데 정작 데이터는 테스트 서버의 데이터가 나와 작업을 다시해야 하거나 잘못된 작업으로 인해 욕을 먹게 되는 경우가 발생하게 된다.


이럴때 어떻게 작업을 해야할까..

100% 확실한 방법은 아니지만 주석으로 자신만이 알아볼수 있는 문자를 넣어놓고 상용서버에 업로드전 그 문구를 찾아 다 수정한다음 서버에 업로드 하는 방법이다. 이 방법을 제대로 쓰려면 코드를 작성하는 습관을 들여야 한다.


방법은 다음과 같다.


맥에서 실행하는 이클립스의 경우 : ^ + H

윈도우에서 실행하는 이클립스의 경우에는 : Control + H


단축키가 아닌 메뉴로 들어가는 경우 Search - Search… 로 들어가면 된다.





단축키나 메뉴를 통하게 되면 위와 같은 창이 나타나게 된다.

File Search 탭 선택후 내가 찾고 싶은 내용을 Containing text:에 입력하고 Search를 누르면 검색을 시작하게 된다.





검색이 완료된 화면..

검색후 Test라고 들어가있는 항목을 찾아서 지우거나 수정해주면 상용서버에서 테스트 코드가 돌아가는 실수는 줄어들게 될것이다.

뭐 이런것들도 좋은 방법이기는 하지만 제대로 정신차리고 작업을 하는게 더 중요한것 같다.

설명을 상용 서버에 올릴경우 테스트 코드를 찾아 고치는것으로 설명 했지만, 개발시 유용한게 Find나 Search아닐까..

앞으로 유용하게 잘 사용하자.

Posted by Z700zZz
개발2013. 11. 20. 14:55

현재 하고 있는 프로젝트에서 테스트로 로컬에서 서버를 돌릴시 Out Of Memory에러가 발생했다.

서버가 가동하면서 메타 데이터 4기가를 서버에 한번에 올려야 하는데 위와 같은 문제는 웹서버의 메모리를 적게 설정해 줘서 생기는 문제.


서버 탭에서 현재 테스트로 사용하는 서버를 더블 클릭 후 Open launch Comfiguration을 누르면 새로운 창이 열릴것이다.





새창이 열리면 화면에 보이는것과 같이 입력 해주고 서버를 다시 동작을 시킨다면 에러는 발생하지 않을것이다.


이와 같은 내용을 검색해 보면 위와 같은 내용이 대부분이다.


-XX:MaxPermSize=128M       // 이클립스 클래스 로딩 최대 메모리
-Xms256m                            // 이클립스 실행시 잡는 최소 메모리
-Xmx256m                            // 이클립스 실행시 잡는 최대 메모리

각 항목에 대한 설명이니 상용상의 용량에 맞게 설정하여 쓰면 된다.

Posted by Z700zZz
개발2013. 10. 25. 15:33

Eclipse에서 Apache Tomcat을 돌리다보면 서버를 올렸다가 내렸다가를 자주 한다.

그러다보면 갑자기 8080포트가 사용중이라는 그런 메세지를 나타내면 서버가 시작되지 않는 경우가 있다.

분명 로컬에서는 8080포트를 Apache Tomcat에서만 사용중인데 이게 어떻게 된 일일까.

아마도 이문제는 톰캣이 제대로 종료 되지 않으면서 발생하는 문제인것 같다.

그러면 문제를 어떻게 해결해야 할까.

컴퓨터를 재시작하면 된다..하지만 이런 문제가 있을경우 매번 재시작을 할수는 없겠지.

해결책은 톰캣 프로세스를 종료하면 된다.

톰캣 프로세스를 확인하고 종료하는 방법을 안다면 밑에 방법은 안봐도 된다.

방법은 아래와 같다.


1. 8080포트 사용 확인 명령어


netstat -an | grep 8080


2. 톰캣 사용중 확인 명령어


ps -ef | grep tomcat


3. 톰캣 프로세스 종료 명령어


kill -9 [프로세스번호]


위를 실행하고 Apache Tomcat을 재시작해보면 정상적으로 작동이 된다.

Posted by Z700zZz
개발2013. 7. 16. 14:24
얼마만의 개발 관련 포스팅인가..

지난 주 수요일 새벽에 서버작업으로 인해서 성수에 갔다가 새벽 내내 삽질을 했다.

삽질의 내용은 분명 이전에 운영 되던 상용 서버에서는 정상적으로 작동 되는 소스인데 새로 구축한 서버에서는 정상적으로 작동이 되질 않는 문제였다. 처음에는 인증서 문제로 페이지가 뜨지 않았었고, 두번째로는 휴대폰 인증 관련부분에서 그대로 멈춰 버리는것. 이 문제는 방화벽 문제인것을 확인하여 방화벽 문제를 해결한 아이피로 휴대폰 인증을 해서 해결하였다. 

그러다 마지막으로 정말 내선에서는 원인을 모르는 그런 문제가 발생했다. 제대로 된 이름을 휴대폰 인증 서버로 보내는데 계속해서 정상적인 문자가 입력 되지 않은 오류를 뱉어 내는것.

서버 설정문제인듯 하여 여러가지 이전에 잘 돌아가던 상용서버와 설정을 똑같이 해줘도 문제는 해결 되지 않았다. 그러다 뒤에서 한분이 상황을 지켜 보시고는 서버 로케일(언어)설정을 보라해서 봤더니 이전에 돌아가던 상용 서버와는 다르게 되어 있었다.

서버 언어 설정문제로 문자가 깨질수도 있다는걸 그날 알았다.


요즘 캐릭터셋 인코딩 문제로 골치가 아프다. 난 이부분이 왜이리도 이해가 안가는지 모르겠다. 

그리고 알아야할 것들이 너무나도 많다.

게을러지고 있는데 좀더 맘을 추스리고 공부를 더 해야겠다.

Posted by Z700zZz
개발2012. 8. 29. 00:03

평생 개발자로 일하기 위해서 가져야 할 좋은 습관들을 알아보자. 추가로 의견이 있으면 댓글로 달아서 같이 공유를 하면 어떨까?


1. 프로그래밍에 열정이 있어야 한다. 열정이 없고 즐기지 못하면 평생 지속하기 어려운 일이다. 지금 환경이 있는 열정도 꺾어버릴 만큼 열악하다면 심각하게 변화를 생각해야 한다.


2. 프로그래밍 기초 원리를 이해해야 한다. 원리를 모르면 근본적인 해결능력이 떨어지고 수준 높은 개발을 하기 어렵다.


3. 문제 해결 능력을 키워야 한다. 개발자의 가장 중요한 핵심 역량이다.


4. 창의적인 사람이 되라. 대부분의 좋은 해결책은 창의력에서 나온다.


5. 다른 사람의 소스코드를 이해할 수 있는 능력을 키워야 한다. 다른 사람의 소스코드에서 많은 것을 배울 수 있다.


6. 수학을 잘 해야 한다. 수학을 못하면 값싼 쉬운 개발 밖에 못한다. 수학에 관심을 가지고 재미를 느껴보는 것도 한 방법이다.


7. 좋은 커뮤니케이션 스킬을 갖도록 노력해야 한다. 프로그래밍은 컴퓨터와 얘기하는 것이 아니고 사람들과 얘기하는 것이다.


8. 협업 능력을 키워라. 다른 사람과 일을 나눠서 할 수 있어야 내 몸값이 비싸진다. 혼자 일하는 것만 잘하면 평생 혼자 일해야 한다.


9. 논쟁(debate) 능력을 키워야 한다. 고급 개발자가 될 수록 토론하는 일이 늘어날 것이며, 좋은 토론이 좋은 소프트웨어를 만든다.


10. OOP를 완전히 이해해야 한다. OOP는 좋은 Architecture의 핵심이고, 협업능력을 키울 수 있게 해준다.


11. 남이 이해할 수 있는 문서를 작성할 수 있어야 한다. 문서 작성은 평생 따라다니는 중요한 업무이다. 문서작성을 못하는 개발자는 값싼 개발밖에 못한다.


12. 적어도 한가지의 개발언어는 완전히 마스터를 해야 한다. 마스터한 개발언어로는 어떠한 문제도 풀 수 있어야 한다. 모든 개발언어는 원리가 비슷하므로 다른 개발언어도 쉽게 배울 수 있다.


13. 적어도 한가지의 스크립트 언어를 구사할 수 있어야 한다. 간단한 툴은 쉽게 만들어 쓸 수 있다. 스크립트 언어로 쉽게 할 수 있는 일을 C언어로 작성하고 있다면 당장 Python을 공부해라.


14. 비즈니스를 이해해야 한다. 훌륭한 아키텍트가 될 것이다. 좋은 Architect는 비즈니스 전략에서 나온다. 비즈니스에 관심이 없다면 당장 돌아가는 Software는 만들 수 있어도 좋은 Architecture는 못 만든다.


15. 주변에 나보다 훨씬 뛰어난 프로그래머를 둬라. 끊임 없이 배울 수 있다. 주위의 뛰어난 개발자를 경쟁상대라고 생각하지 말고 스승으로 생각해라. 그도 나를 스승으로 생각할 것이다.


16. 끊임 없이 새로운 기술을 익혀라. 전쟁에서 쓸 무기가 많아질 것이다. 몇 가지 소수의 익숙한 기술만 고집하면 도태될 수 있다.


17. 습관적으로 주석을 달아야 한다. 주석은 남을 위해서 다는 것이 아니고 프로그래밍의 일부이다. 주석이 없어도 이해가 가능한 코드를 작성하는 것이 좋지만 그래도 주석은 꼭 필요하고 Doxygen등의 주석을 꼭 이용해라.


18. 남이 이해하기 쉬운 코드를 작성해야 한다. 나중에 내 발목을 잡지 않을 것이다. 내가 좀더 위로 올라가기 위해서는 아래가 자유로워야 한다.


19. 리뷰와 친해져야 한다. 평생 리뷰를 하며 사는 것이 프로그래머의 인생이다. 리뷰를 하지 않으면 발전하기 어렵다. 리뷰는 지금 프로젝트의 문제도 해결해줄 뿐만 아니라 내 프로그래머 인생의 가장 좋은 스승이다.


20. 건강을 유지해라. 건강을 잃으면 실력이고 뭐고 다 필요 없다. 야근도 좋지만 좋은 음식을 먹고 꾸준히 운동도 하자.


21. 좋은 의자를 사라. 건강을 지켜주고 효율을 높여준다. 프로그래머에게 의자는 침대보다 오래 머무르는 곳이다. 비싸고 좋은 의자일수록 좋다.


22. 인생을 즐길 줄 알아야 한다. 프로그래머로 오래 지속하고 싶으면 인생 자체를 즐기는 다양한 방법을 익혀야 한다.


23. 소프트웨어 공학을 익혀라. 주먹구구식 개발에서 벗어나게 해주고 프로그래밍이 더 이상 노동이 아니고 즐겁게 개발을 하게 해준다. 스펙과 설계문서를 작성하고 좋은 개발시스템하에서 적절한 프로세스를 적용해서 개발하는 것이 가장 빠르게 소프트웨어를 개발할 수 있는 방법이라는 것을 경험하고 깨달아야 한다.


24. 높은 연봉을 받을 수 있도록 꾸준히 노력하라. 위의 23가지 방법들을 따라 한다면 저절로 연봉이 높아질 것이다.


개발자의 길을 선택했다.

남들 다 하는 그런 개발, 그저 그런 개발 이런건 정말 하기 싫다.

좋은 개발자, 유능한 개발자가 되기 위해서는 위에서 적은 24개의 습관을 생각 또 생각하자.


출처는 검색해보니 원출처를 모르겠다.


Posted by Z700zZz
개발2012. 6. 21. 17:15

개발시 FireBug를 사용하기 위해 아니면 개발시 좀더 편한 개발을 위해 FireFox를 사용한다.


코딩을 하고 HTML페이지나 JSP같은 웹페이지를 호출해 보면 추가된 사항이나 수정된 사항이 제대로 적용이 안되어 보일때가 많다.


왜 이런 문제점이 발생 되는걸까.


바로 이번 페이지가 캐쉬되어 있기 때문이다.


파이어 폭스 환결설정 아무리 들어가 봐야 캐쉬에 대한 목록은 보이지 않는다.


자 주소창에 about:config를 쳐보자.


먼저 고급 환경설정을 할것이냐 물어보면 당연히 YES!!


들어가보면 무수히 많은 항목이 나타나는데 여기서 우리가 필요한 항목은


network.http.use-cache


이 학목을 보면 값이 true로 되어있다.


true의 값을 false로 바꿔주면 캐쉬 기능이 작동하지 않아 이제부터는 수정하는 즉시 리프레쉬 하면 바로바로 적용 되는것을 확인 할 수 있다.

Posted by Z700zZz