탁구치는 개발자
close
프로필 배경
프로필 로고

탁구치는 개발자

  • 분류 전체보기 (424)
    • WebRTC (7)
    • 프로그래밍 (139)
    • AI 활용 (3)
    • 서버 (49)
    • 개발툴 (102)
    • 개발이야기 (10)
    • 장애 경험 (1)
    • 유용한 도구 (4)
    • 끄적끄적 (17)
    • 독서 (90)
    • 회고 (1)
    • 재테크 (1)
  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

spring mvc:resources를 이용한 정적 리소스 캐쉬 문제 해결 방안

라이브 운영 중인 사이트에 일부 javascript를 수정할 일이 발생하였다.기존에 만들어져 있는 purchase() 함수의 기능 중 일부를 주석 처리하는 간단한 일이었다.바로 주석 처리 후 테스트를 진행하였고 아무 문제가 없어 라이브에 배포하였다.헌데, 주석 처리했던 소스의 기능이 동작을 한다는 것이다.그 순간 떠오른 것이 캐쉬 문제였다.긴급한 건이기에 아래와 같이 파라미터에 버전을 추가하여 사용자 브라우저에서 javascript를 재 다운로드 받도록 처리하여 재 배포하였다. 배포가 완료된 후 고민을 하게 되었다.매번 기존에 있는 css, js 변경 시 파라미터 뒤에 버전을 붙여준 후 배포를 해야 하는 걸까?나의 이 고민을 이미 다른 분이 했었고, 그 분이 작성한 글을 읽은 후 해결 방법을 찾게 되었다..

  • format_list_bulleted 프로그래밍
  • · 2014. 1. 2.
  • textsms

logback if condition 사용 시 주의 사항

logback을 이용하여 개발, 스테이징, 라이브 환경에 따른 로그 레벨을 분기하기 위해서 다음과 같이 조건문을 추가하였다. spring.profiles.active의 값은 java 실행 시 -Dspring.profiles.active="dev" 아규먼트를 추가하여 각 서버를 구분지었다. 헌데 웹 애플리케이션을 구동하면 로그 레벨이 각 환경에 맞게 적용이 안 된다. 문제는 janino library가 추가되어 있어야 했다. pom.xml 파일에 아래 라이브러리를 추가하여 문제 해결org.codehaus.janino janino 2.6.1

  • format_list_bulleted 프로그래밍
  • · 2013. 12. 23.
  • textsms

jquery는 JSON.parse()를 사용한다.

다음의 코드는 서버로 HTTP request를 날린 후 response로 JSON데이터를 받아 alert를 찍어주는 부분이다.$.ajax({type : "GET",url : "${pageContext.request.contextPath}/json.do",dataType : "json",data : "adsId=" + adsId + "&cmd=" + cmd,success : function(json) { if (json.isSuccess) { alert(json.msg); } alert(json.info.adsName); alert(json.info.imp); alert(json.info.click);}, error : function(e) { alert("처리중 장애가 발생하였습니다."); } });서버..

  • format_list_bulleted 프로그래밍
  • · 2013. 10. 18.
  • textsms

숫자섞기 알고리즘

0에서 9까지의 값을 저장하고 있는 배열 데이터를 섞는 알고리즘 초간단, 심플

  • format_list_bulleted 프로그래밍
  • · 2013. 10. 17.
  • textsms

자바스크립트 inline? external?

자바스크립트는 HTML 코드 inline이 좋을까 external이 좋을까?기존 방식은 공통으로 자바스크립트 함수에 대해서 external로 빼고, 화면단마다 사용하는 자바스크립트는 jsp 안에 포함시키는 방식으로 개발을 진행하였다.헌데 이렇게 하면 jsp 내부에 포함되어 있는 자바스크립트 테스트가 쉽지 않다.크롬이나 파이어폭스에서 breakpoint를 이용하여 디버깅을 지원하고 있지만 내가 테스트 하고자 하는 function을 찾는 것도 힘들다.결국 alert나 console.log를 이용하여 구식의 방법으로 디버깅을 하곤 하는데 과연 이런 방법이 좋은 것일까?당연히 좋지 않은 방법이다.alert 코드를 삭제하지 않은 상태로 라이브 서버에 배포가 될 수도 있고, 노가다가 심하다. 내 생각에는 jsp 코..

  • format_list_bulleted 프로그래밍
  • · 2013. 10. 17.
  • textsms
sitemesh 설정

sitemesh 설정

SiteMesh는 오픈 소스이고 페이지 레이아웃 프레임워크이다.이와 비슷한 프레임워크는 Tiles, Velocity 등이 있는데 SiteMesh는 처음 써봐서 샘플 코드를 만들어 봤다.이미지 출처 전체 소스 코드 : https://github.com/namkyu/sitemesh_test sitemesh를 위한 설정은 어렵지 않다.1. pom.xml에 라이브러리 추가2. web.xml에 com.opensymphony.sitemesh.webapp.SiteMeshFilter 필터 추가3. WEB-INF/decorators.xml 파일 생성 후 설정 추가 (페이지 레이아웃 설정 및 URL 패턴 정의)/jsp/*4. 페이지 레이아웃 구성HeaderNavigationFooter 설정을 마치고 sitemesh의 작동..

  • format_list_bulleted 프로그래밍
  • · 2013. 9. 2.
  • textsms
struts2 Missing artifact com.sun:tools:jar:1.5.0 해결 방법

struts2 Missing artifact com.sun:tools:jar:1.5.0 해결 방법

스트럿츠2 샘플 코드 작성을 위해 메이븐 프로젝트로 생성 후 struts2-core dependency 라이브러리를 추가하니 pom.xml에서 Missing artifact com.sun:tools:jar:1.5.0 에러가 발생한다.한참을 삽질한 결과 아래 Dependency Hierarchy를 확인한 후 알게 되었는데 struts2-core 라이브러리에서 JDK 1.5 버전의 tool.jar 파일을 의존하고 있었다. 내 로컬 PC에는 JDK1.6 버전이 설치되어 있기 때문에 tools.jar 파일을 찾지 못한다. (JDK1.5 버전에 tools.jar 존재)이 문제를 해결하기 위해선 struts-core가 의존하는 tools를 exclusion 시키면 된다. org.apache.struts struts..

  • format_list_bulleted 프로그래밍
  • · 2013. 9. 2.
  • textsms

Collections.unmodifiableMap 메소드를 이용한 read-only 객체 만들기

웹 애플리케이션 기동 시 properties에 있는 설정 정보들을 컬렉션 객체에 저장하고 이를 가져다가 쓰는 경우가 많은데 이 객체에 변경을 막는 제약 조건을 걸고 싶을 때가 있다.즉, read-only 한 객체를 만들고 싶은 경우인데 이럴 때 다음의 메소드를 사용하면 좋을 것 같다. Collections.unmodifiableMapCollections.unmodifiableList해당 메소드는 파라미터로 전달 받은 컬렉션 객체에 어떠한 변경이라도 발생하면 예외를 return한다. 테스트 코드는 다음과 같다.package collection; import static org.hamcrest.CoreMatchers.*;import static org.junit.Assert.*; import java.uti..

  • format_list_bulleted 프로그래밍
  • · 2013. 8. 28.
  • textsms
리눅스에서 java 컴파일 및 실행 하기

리눅스에서 java 컴파일 및 실행 하기

상용 서비스가 되고 있는 상태에서 고객의 요구 사항으로 인하여 자바 데몬 형식의 프로그램을 개발해야 할 때가 있다.이런 프로그램들은 대게 상용 리눅스 장비에 class 파일을 올린 후 java 명령어를 통해 프로그램을 실행하게 되는데 이것이 생각보다 어렵다.예전에도 class 파일을 실행하기 위해 몇 번 삽질을 했었는데 어김없이 또 삽질을 하게 되었다.사실 자바를 처음할 때 배우는 것들인데 이런 삽질을 하는 내 모습을 보면 쪽팔리기도 하다.그래서 이참에 확실하게 정리를 하고자 한다. 두 가지 방법에 대해서 설명을 할 것이다.첫 번째는 "패키지 선언되어 있는 java 파일 컴파일 후 실행하기"두 번째는 "외부 jar 파일을 classpath에 추가한 후 컴파일하고 실행하기" 첫 번째의 경우는 JDK에서 기..

  • format_list_bulleted 프로그래밍
  • · 2013. 8. 9.
  • textsms

Mockito를 이용한 테스트

나는 주로 스프링이 제공하는 테스트 컨텍스트 프레임워크 JUnit 확장 기능을 이용하여 테스트 코드를 작성한다. service 로직 -> DAO 로직 -> myBatis query 또는 DAO 로직 -> myBatis query 와 같이 두 가지 케이스의 테스트 코드를 많이 작성하게 되는데 이번에 service layer에 해당하는 클래스만 테스트 코드를 작성하는 방법에 대해서 알아보게 되었고, 토비의 스프링 3.1 스터디 기간에 학습했던 mockito를 사용해 보기로 했다. Mock 객체를 쉽게 제공하고 사용할 수 있는 여러 프레임워크가 있는데 그 중 mockito가 인기가 좋다고 한다. 사실 다른 Mock 프레임워크를 사용해 보지 못해 잘 알지는 못하지만 다른 분들의 경험적 지식과 구글 트렌드 조사를..

  • format_list_bulleted 프로그래밍
  • · 2013. 8. 7.
  • textsms

Serializable 객체직렬화

기존에 개발되어 있는 소스 코드를 보다 보니 implements java.io.Serializable과 같이 Serializable 인터페이스를 구현하는 VO(Value Object) 클래스들이 많이 보인다. 혹시 RMI(Remote Method Invocation) 통신이나 네트웍 통신을 할 때 직렬화를 사용하여 연동을 하나? 싶었지만 아니였다. 원인을 알고 싶었지만 개발된지 이미 5년이 넘은 시스템이고, 개발자는 5대째 계승되고 있는 시점이다. 결국 Serializable interface가 왜 구현되어 있는지는 모르겠지만 아마 습관적으로 붙이지 않았나 싶다. 이런 코드를 보니 나 조차도 Serializable에 대해 자세히 알고 있나라는 생각을 가지게 되었고, 한번쯤은 정리를 해봄으로써 확실히 알아..

  • format_list_bulleted 프로그래밍
  • · 2013. 7. 30.
  • textsms
jquery를 이용한 jsonp 처리 방법

jquery를 이용한 jsonp 처리 방법

test.co.kr 이라는 사이트에서 dev.co.kr 이라는 사이트에 있는 정보를 Ajax 기술을 이용하여 요청을 보낼 때 cross domain policy에 의해 브라우저가 요청을 막는다.즉, 도메인이 다르면 요청을 보낼 수 없다. 위와 같은 상황을 우회하여 해결할 수 있는 방법은 jquery에서 jsonp를 이용하는 것이다.한 가지 주의해야 할점은 jsonp는 HTTP GET 방식만 지원한다. jsp 파일 $(document).ready(function() { }); function getJsonTest1() { $.getJSON("http://jsonp.localhost:8081/jsonpTest?id=user&callback=?", function(data) { alert(data.id + "..

  • format_list_bulleted 프로그래밍
  • · 2013. 7. 11.
  • textsms
java 재귀함수 시퀀스 다이어그램

java 재귀함수 시퀀스 다이어그램

이번에 인턴 사원 멘토링을 맡게 되면서 교육을 진행하고 있는데 재귀함수에 대해서는 잘 이해를 못하는 것 같아 시퀀스 다이어그램을 그려보았다.재귀함수를 어떻게 그리면 좋을까 생각한 끝에 아래와 같은 결과물이 나왔는데 인턴 사원이 잘 이해할 수 있을랑가 모르겠다. [시퀀스 다이어그램]

  • format_list_bulleted 프로그래밍
  • · 2013. 7. 5.
  • textsms

369 게임 알고리즘

369 게임 알고리즘을 작성해 보았다. 문제는 우리가 아는 게임과 동일하다. 3 이라는 숫자를 부르면 박수 한 번.6 이라는 숫자를 부르면 박수 한 번.9 이라는 숫자를 부르면 박수 한 번.33 이라는 숫자를 부르면 박수 두 번.369 라는 숫자를 부르면 박수 세 번. 위의 문제에 대한 알고리즘은 무엇일까? 주어진 숫자의 자릿수마다 3, 6, 9라는 값이 포함되어 있는지 확인 후 count를 하면 된다. String의 indexOf를 이용하여 값의 포함 여부를 확인하려고 했지만 너무 쉬운 것 같아 다르게 문제를 풀어보았다.

  • format_list_bulleted 프로그래밍
  • · 2013. 6. 26.
  • textsms

java default 접근 제어자 활용 범위?

자바의 접근 제어자는 다른 클래스로부터 정보와 데이터의 접근을 제어한다.public : 어떤 클래스에서도 접근이 가능private : 외부의 어떤 클래스에서도 접근이 불가능protected : 같은 패키지 및 상속 받은 클래스에서 접근 가능.default : 같은 패키지에 있는 클래스에서만 접근 가능 여기서 protected, default 접근제어자를 사용할 때 주의해야 할 점은 꼭! 같은 패키지여야만 한다는 것이다.예를 들어 A 패키지에 존재하는 Board 클래스에 default 접근제어자로 선언되어 있는 add 메소드가 존재하고, A 패키지 하위에 B 패키지가 존재한다면. B 패키지 안에 있는 NoticeBoard 클래스에서 A 패키지에 있는 Board 클래스의 add 메소드에 접근할 수 없다. 즉..

  • format_list_bulleted 프로그래밍
  • · 2013. 6. 13.
  • textsms
  • navigate_before
  • 1
  • ···
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • navigate_next
전체 방문자
오늘
어제
전체
전체 카테고리
  • 분류 전체보기 (424)
    • WebRTC (7)
    • 프로그래밍 (139)
    • AI 활용 (3)
    • 서버 (49)
    • 개발툴 (102)
    • 개발이야기 (10)
    • 장애 경험 (1)
    • 유용한 도구 (4)
    • 끄적끄적 (17)
    • 독서 (90)
    • 회고 (1)
    • 재테크 (1)
최근 글
최근 댓글

캘린더

«   2025/08   »
일 월 화 수 목 금 토
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
태그
  • #개발주의사항
  • #JPA
  • #Elasticsearch
  • #java
  • #ant
  • #vagrant
  • #shellscript
  • #fiddler
  • #HTTP
  • #javascript
  • #git
  • #Database
  • #Apache
  • #제너릭
  • #tomcat
  • #회고
  • #Spring
  • #JUnit
  • #SourceTree
  • #Docker
  • #Kubernetes
  • #Eclipse
  • #Wireshark
  • #maven
  • #리눅스
  • #JQuery
  • #Jenkins
  • #algorithm
  • #VirtualBox
  • #SQL
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.