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

탁구치는 개발자

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

Ant style pattern 정리

웹 개발을 진행하다 보면 대부분 url mapping 설정을 ant pattern으로 한다. 스프링에서 mvc:resources mapping="/static/**" 또는 security:intercept-url pattern="/user/**" 이 그러하다. 설정에 대한 표현식으로 ant pattern을 사용하기 때문에 *, **, ? 의 의미를 확실히 알아둘 필요가 있다. ? : 1개의 문자와 매칭 (matches single character) * : 0개 이상의 문자와 매칭 (matches zero or more characters) ** : 0개 이상의 디렉토리와 파일 매칭 (matches all files / directories)

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

숫자섞기 알고리즘

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

  • 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
java 재귀함수 시퀀스 다이어그램

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

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

  • format_list_bulleted 프로그래밍
  • · 2013. 7. 5.
  • textsms
tomcat comet 정리

tomcat comet 정리

오픈 소스의 기술을 습득하기 위해 대게 클래스 다이어그램을 뽑거나 클래스 메소드를 이동하면서 분석하는 경우가 있다.하지만 난 위의 두 가지 방식보다는 시퀀스 다이어그램을 이용하여 각 클래스간의 call flow를 도식화 한 후 한 눈으로 보는 것을 선호한다. 다음은 tomcat 서블릿 컨테이너에서 롱폴링 기술을 어떻게 지원하는지에 대해서 분석 한 후 시퀀스 다이어그램으로 그려보았다.그림을 그리고 나니 한층 이해가 더 쉽게 되었고, 각 클래스의 기능이 한 눈에 보이니 객체지향적으로 개발을 했는지 확인도 할 수 있었다. 사람의 기억은 텍스트보다는 이미지를 더 잘 기억한다고 했다.귀찮더라도 그림을 그리면서 학습을 한다면 오랫 동안 그 기술을 기억할 수 있을 것이다. tomcat server.xml 아래와 같이..

  • format_list_bulleted 서버
  • · 2013. 7. 4.
  • 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

정규표현식 (Java)

정규표현식은 특정한 규칙을 가지는 문자를 표현하는데 사용하는 형식 언어이다.정규표현식을 잘 모를 때에는 validation 체크가 상당히 고단하고, 지루했지만 정규표현식을 자유 자재로 다룰 줄 알게 되면 상당한 시간을 단축할 수 있고, 유용하며 코드가 깔끔해 진다. 가끔 표현식을 까먹는 경우가 있어 이곳에 표로 정리를 하고, 각 표현식에 대한 테스트 케이스를 만들어 보았다. 표현식 설명 ^ 문자열의 시작 $ 문자열의 종료 . 임의의 한 문자 (문자의 종류 가리지 않음) 단, \ 는 넣을 수 없음 * 앞 문자가 없을 수도 무한정 많을 수도 있음 + 앞 문자가 하나 이상 ? 앞 문자가 없거나 하나있음 [] 문자의 집합이나 범위를 나타내며 두 문자 사이는 - 기호로 범위를 나타낸다. []내에서 ^가 선행하여 ..

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

enum 으로 생성한 클래스 객체가 싱글톤인 이유?

enum을 이용하여 클래스를 정의하면 어떤 원리에 의해서 싱글톤으로 제공하는지, 그리고 멤버 변수가 있는데도 thread-safe한지 그 이유에 대해서 알아봤다. public enum EnumClassTest { INSTANCE1("instance1"), INSTANCE2("instance2"); static {System.out.println("init!!");} private String objName; private EnumClassTest(String objName) {this.objName = objName;} public String getObjName() {return objName;} public static void main(String[] args) {EnumClassTest[] typ..

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

개방 폐쇄 원칙 OCP (Open-Closed Principle)

"클래스나 모듈은 확장에는 열려 있어야 하고 변경에는 닫혀 있어야 한다" 난 위의 OCP 정의를 처음 접했을 때 이해가 되지 않았다.헌데 토비의 스프링3.1 책을 읽게 되면서 그 의미를 이해하게 됐고, 내가 이해한 것을 토대로 예제 코드를 작성해 보고 싶었다. 아래 예제 코드는 실제 OCP 원칙을 지키지 않은 상태에서의 코드를 보여 줄 것이며 이로 인하여 발생되는 문제에 대해서 설명한다.그런 후 OCP 원칙을 잘 지키는 코드를 설계하여 개방 폐쇄 원칙이라는 것이 얼마나 코드를 유연하고, 확장성 있게 만드는지 알아볼 것이다. 예제는 컴퓨터와 키보드 이 두 가지를 이용하여 설명할 것이다.컴퓨터가 부팅을 하면서 키보드를 연결하는 상황이며, 실제 아래와 같이 컴퓨터 소프트웨어를 설계하고 납품을 하게 된다면 어떤..

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

캘린더

«   2025/09   »
일 월 화 수 목 금 토
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
태그
  • #Database
  • #ant
  • #fiddler
  • #JUnit
  • #Elasticsearch
  • #Jenkins
  • #java
  • #VirtualBox
  • #Docker
  • #tomcat
  • #리눅스
  • #SourceTree
  • #javascript
  • #SQL
  • #Wireshark
  • #HTTP
  • #개발주의사항
  • #maven
  • #shellscript
  • #Apache
  • #제너릭
  • #JPA
  • #vagrant
  • #Kubernetes
  • #JQuery
  • #git
  • #회고
  • #algorithm
  • #Spring
  • #Eclipse
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바