본문 바로가기

Programing

(392)
GitHub 클라이언트로 본 ClickOnce 윈도우에서 GitHub을 사용하기 위한 클라이언트 도구가 존재한다. Licenses 탭에 보면 이 프로그램이 사용한 많은 오픈소스 프로젝트 이름들이 있는데, 관심을 끄는 것은 ClickOnce 배포였다. 프로그램을 설치하거나 업데이트시에 아래와 같은 창이 보인다. 찾아보니 ClickOnce라는 배포 플랫폼이 있었다. 자세한 내용은 이미 정리해놓은 곳이 있어 링크로 대신한다. Unavailable :: ClickOnce를 이용한 윈도우 폼의 배포 - http://diehard98.tistory.com/192 ClickOnce 배포 전략 선택 - https://msdn.microsoft.com/ko-kr/library/71baz9ah(v=vs.85).aspx [ WPF ] ClickOnce로 배포하기 - h..
후벼파는 자바 - 어노테이션의 내부 원리 자바를 어느정도 해보신 분들은 알겠지만 @를 붙여서 사용하는 어노테이션을 써보았을 것이다.어노테이션이 어떤식으로 동작하는지 궁금해서 몇 가지 테스트를 해보았다. 실습을 했던 코드는 Ayoub El Abbassi 님의 블로그의 "How to add Annotations at Runtime to a java class method using Javassist?"글의 코드를 참고로 하였다. 우선 코드를 만들고package annotation; import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.T..
후벼파는 스프링 - AbstractApplicationContext.refresh 과정 애플리케이션 컨텍스트의 초기화 과정중에 항상 거치는 메소드가 refresh이다.org.springframework.context.support.AbstractApplicationContext의 코드를 옮겨보면 다음과 같다. (4.1. public void refresh() throws BeansException, IllegalStateException { synchronized (this.startupShutdownMonitor) { // 멤버 필드인 active를 true로 설정한다. (active의 플래그로 refresh가 되었는지를 판단) prepareRefresh(); // 내부에서 쓰이는 BeanFactory를 refresh ConfigurableListableBeanFactory beanFac..
후벼파는 스프링 - ApplicationContext의 디폴트 스프링 튜토리얼에 보면 ApplicationContext 인터페이스는 BeanFactory 인터페이스의 서브-인터페이스이며, 스프링의 AOP 기능 등과 통합을 더 쉽게 한다라고 적혀있다. 또한 웹 어플리케이션을 위하여 WebApplicationContext를 소개하고 있다. 그런데 HttpServletBean를 상속하고 있는 FrameworkServlet의 경우 WebApplicationContext 인터페이스의 구현체를 XmlWebApplicationContext를 사용하고 있었다.public abstract class FrameworkServlet extends HttpServletBean { /* ... */ public static final Class DEFAULT_CONTEXT_CLASS = ..
후벼파는 스프링 - @RequestMapping의 원리 예전에 "Spring 3.0 시작 - Hello World 동작원리"라는 글에서 Spring MVC 템플릿을 분석하여 정리한 적이 있다.그 당시에는 대강 org.springframework.web.servlet.DispatcherServlet에서 초기화를 해준다고 하는데, 어떤 원리로 동작하는지 내부 구현이 궁금해서 소스를 찾아보았다. 1) 시작은 web.xml 내용은 크게 리스너 클래스를 등록하는 부분과 애플리케이션 요청을 처리할 서블릿에 대한 것으로 구분할 수가 있는데, 내가 관심을 가지고 있는 @RequestMapping은 후자랑 관련이 있다. 결국 /라는 HTTP GET요청이 @RequestMapping(value = "/", method = RequestMethod.GET) 로 지정되어 있는 메..
[면접 문제] 1로 설정된 비트의 수를 반환하는 함수 작성 문제: 주어진 정수를 컴퓨터에서 내부적으로 표현할 때 1로 설정된 비트의 수를 반환하는 함수를 작성하라. 방법1. 이진 문자열로 바꾸어 1인 문자를 센다.친구에게 문제를 내보니 십진법을 이진법으로 변환하여 1의 갯수를 세려고 하고 있었다.코드로 짠다면 아래와 같은 형태가 될 것이다. (여기서 숫자를 이진 문자열로 바꾸는 것은 Integer 클래스의 toBinaryString유틸리를 이용했다. 면접 같았으면 이것을 직접짰어야 했을 것이다.)public static int countBit0(int value) { String strValue = Integer.toBinaryString(value); int count = 0; for (int i=0; i>를 쓰게 되면 음수의 경우 왼쪽의 비트가 1로 채워진다..
[후벼파는 자바] GC(가비지 컬렉션) 이 글을 읽기전에 괜찮은 글을 먼저 읽어보자. 하나는 영문이고 하나는 한글이다.영어 - Java SE 6 HotSpot[tm] Virtual Machine Garbage Collection Tuning: Java SE 6 HotSpot / Java 8 Understanding Java Garbage Collection and What You Can Do About It: Gil Tene (링크)한글 - Java Garbage Collection: 네이버개발자블로그 / Garbage Collection 모니터링 방법 / Garbage Collection 튜닝 OpenJDK를 받아보자. 여기는 openjdk-7u40-fcs-src-b43-26_aug_2013 기준이다.openjdk/hotspot/src/sh..
Gradle Project 사용해보기 STS(Spring Tool Suite) 3.6.3.RELEASE 기준기본적으로 빌드 관리는 메이븐(Maven)이 해주도록 되어 있다. Gradle 프로젝트를 하기 위해서는 추가 설치가 필요했다. https://github.com/spring-projects/eclipse-integration-gradle/blob/master/README.md#installation-instructions를 참고한다. 1. Dashboard를 띄운다. ([Help] 메뉴 > [Dashboard])2. Extensions 탭 선택(아래)3. Gradle" 또는 "Groovy"를 키워드로 검색(Find) 한다.4. Gradle Support를 체크하고 Install을 누른다.5. Install 창에서 Gradle IDE 창..