바카라 고정 배팅 – Dreaming for the Future 영원한 개발자를 향해서. 월, 13 1월 2025 13:44:09 +0000 ko-KR hourly 1 https://wordpress.org/?v=4.7 108384747 @VisibleForTesting을 활용에 대한 단상 /index.php/2023/08/25/thinking-about-visible-for-testing-annotation/ Thu, 24 Aug 2023 22:23:28 +0000 /?p=1101

Continue reading ‘@VisibleForTesting을 활용에 대한 단상’ »]]>

간만에 개발에 대한 글을 써본다.

코드를 잠깐 봐볼까 싶다가 @VisibleForTesting이라는 Annotation을 봤다. 사실 처음보는 Annotation이라 뭐바카라 고정 배팅 놈인가 싶은 생각이 들어서 찾아봤다.

Package 

Annotation Type VisibleForTesting

  •  
    @GwtCompatiblepublic @interface
    Annotates a program element that exists, or is more widely visible than otherwise necessary, only for use in test code.Do not use this interfacefor public or protected declarations: it is a fig leaf for bad design, and it does not prevent anyone from using the declaration—and experience has shown that they will. If the method breaks the encapsulation of its class, then its internal representation will be hard to change. Instead, use , which enforces fine-grained visibility poli바카라 고정 배팅es.
    Author:
    Johannes Henkel

대강 내용을 보니 private method를 테스트 코드바카라 고정 배팅 참조할 수 있게 해준다.!!! 오 이런 신박한게 있었네. 자바 코드를 짤 때는 저런게 없었던 것 같은데. 나도 쓰는 것에 무던히도 안주했던 모양이다. ㅠㅠ;; 다시 코드짜러 돌아갈 시점에는 보충 공부를 꼭 해야만 적응할 수 있을 것 같다. (읽을 줄 아는걸 짤줄 아는 것으로 이야기하지 말아야겠다라는 생각도 ㅎㅎ)

당연히 해당 Annotation이 적용된 private method에 대해 테스트가 잘 적용되어 있었다. 그런데 이 구조를 보다보니 굳이 이 Annotation을 사용해야 했을까 싶은 생각이 들었다.

단상 1. 주목받으니 더 주목받게 하자!

해당 Method를 별도의 상세한 테스트 코드를 작성할만큼 주목도가 있다면 해당 로직을 method 수준으로 두는게 맞을까? 주목할만한 역할이 있다면 이를 별도의 객체(클래스)로 분리해서 관리바카라 고정 배팅게 맞지 않을까?

바카라 고정 배팅

이 경우에 해당 클래스를 별도로 정의하고, 정의된 클래스를@Service혹은@ComponentAnnotation으로 DI를 활용하면 오히려 관심사를 분리시키고 주목도 있는 로직을 드러내는 과정이 더 올바른 접근이 아닐까 싶다.

단상 2. 굳이?

아무리 테스트라고 하더라도 Private method를 노출바카라 고정 배팅게 맞을까? Private method는 언제든 변경될 수 있는 자유도가 있어야 한다. 그런데 private method를 아무리 테스트라고 하지만 외부에 노출한다면 이 후에 변경할 때 이를 신경써야 한다. 물론 IDE가 지원해주는 refactoring 기능을 쓰면 된다고 이야기할 수 있다. 그럼에도 PR을 날리면 상당히 덩치 큰 변경점이 생긴다. PR Reviewer 입장에서 두루 살펴야 바카라 고정 배팅데 읽는데 방해가 되는 건 분명하다.

Private method에 있는 코드(로직)을 테스트할 필요가 있다면 이를 이용바카라 고정 배팅 Public method의 호출 조건을 조정해서 테스트 커버리지(Coverage)를 가져가는게 맞지 않을까? 만약 호출 조건으로 커버리지 달성이 어렵다면 전반적인 코드 구조를 다시 한번 돌아볼 기회도 될 수 있을 것이다.

단상 3. 그럼에도 불구하고!

개인적으로 이걸 쓰는 걸 추천할 만한 상황은 Public 대상을 테스트가 통합 테스트(Integration Test) 수준의 테스트 비용이 발생바카라 고정 배팅 경우다. 테스트 대상 코드에 주의할 점을 명확하게 하고 싶은데, Public 대상을 테스트할려고 할 때 1~3초가 수행된다면? 이런 상황에서 특정 상황에 대한 테스트를 추가바카라 고정 배팅 건 시간이라는 과한 비용을 수반한다.

테스트 코드를 작성바카라 고정 배팅 기본이 된 개발자

이러나 저러나 테스트를 작성하겠다는 개발자의 자세는 훌륭하다.

다만 전체 테스트들은 5분 이내로 완료될 수 있어야 한다. 단위 테스트와 통합 테스트를 모두 포함해서. 특히나 통합 테스트는 배포할 코드가 안전함을 개발자 관점에서 보장하기 위해 수행되야 한다. 떄문에 반드시 바카라 고정 배팅 과정에서 필수적으로 수행되어야 한다. 그런데 이 단계에서 십수분이 소요되면 안된다.

커피한잔하고 왔는데도, 밥먹고 왔는데도 끝나지 않은 바카라 고정 배팅를, 특히 통합 테스트가 여전히 돌고 있는 걸 경험하면 정말 테스트 코드 관리를 잘 해야 한다.

– 끝 –

]]> 1101
SonarQube 이용해서 만드는 바카라 고정 배팅 /index.php/2016/03/21/sonarqube-for-바카라 고정 배팅/ /index.php/2016/03/21/sonarqube-for-바카라 고정 배팅/#comments Mon, 21 Mar 2016 02:18:48 +0000 /?p=66

Continue reading ‘SonarQube 이용해서 만드는 바카라 고정 배팅’ »]]> 바카라 고정 배팅 들어봤나?

Continuous Integration의 약자이다. 해석하자면 “지속적으로 통합하라” 라는 이야기다.  뭘? 코드를.  누가 작성한 코드를?  여러분과 여러분들의 동료들이 작성한 코드를 말바카라 고정 배팅.

왜 통합을 해야할까?

이유는 간단하다. 통합을 위해서.

바카라 고정 배팅

뭔 소리냐구?

통합을 지속적으로 시도바카라 고정 배팅 이유는 바로 필요한 시점에 사고 터지는 걸 막기 위해서다.  누구나 익히 알고 있듯이 모든 개발은 팀 작업이다.  혼자 잘해서 되는 개발은 더 이상은 없다.

사람들이 하나의 목표로 달린다지만 속된말로 꿍꿍이는 다 다르다.  이런 불일치가 지속된다고 가정해보자.  계속 내 일은 내가 알아서 바카라 고정 배팅 상태로, 너와 나의 일은 깔끔한 문서로 정리되어 있다면?

여러분들은 이들의 작업이 성공적인 결합으로 결론지어질 수 있을거라고 생각하나? 절대 불가능하다.

어떻게해야 할까?

가장 현실적이고 최선인 대답은 가능한 빠른 시간에 합쳐보라는 것이다.  “가능한 빨른 시간”라는 말은 여기서 두 가지 의미를 내포한다.  첫 번째는 현재를 기점으로 가장 이른 시간에 합쳐보는 시도를 해야한다.  두 번째 의미는 이전에 해 본 이후그 다음 번 합칠 때까지 시간을 늦추지 말라는 것이다.  나뉘어져 개발되는 결과를 합쳐보는 시도는 당연히 빨리 해야한다. 아마도 모두가 동의바카라 고정 배팅 사실일 것이다.

두번째 그럼 얼마나 빨리?  은 종종(?)을 이야기했다. 하지만 최근 바카라 고정 배팅를 열창(!)하는 에자일이나 XP쪽에서는 가능한 많이 하루를 넘기면 죄악(?)이라고 이야기한다.  개인적으로 동감하는 바이다. 하지만 죄악은 일상의 연속이며 실행하기는 참 어렵다. 그래서 회개는 반드시 해야하는 모양이다.

Best Practices

그럼 바카라 고정 배팅를 실행하는 최선의 방법은 뭘까?  위키에서 언급된 부분을 번역 수준에서 읊어보자면…

  • 코드 저장소(Code Repostiory)
  • 자동화된 빌드
  • 자동화된 테스팅
  • 일관된 커밋 규칙을 갖기 – 이건 전체 참여자들이 다들 지키는 규칙을 만드는게 어려운 것 같다.
  • 동작 가능한 커밋하기
  • 빨랑 빌드되기
  • Stage 환경 갖추기
  • Nightly build 환경 갖추기
  • 개방된 바카라 고정 배팅 결과 – 쪽팔린다고 테스트 결과를 숨기거나 빌드 오류를 숨기지 않는다.
  • 자동화된 배포

이걸 종합해보면 아래와 같은 순환적 코드 관리가 이뤄지면 된다.

바카라 고정 배팅

개발자들은 개발된 결과를 코드 저장소에 저장하고, 저장된 결과는 자동화된 빌드 및 테스트를 통해 결과가 올바른지 확인하고 그 피드백을 통해 신규 코드를 추가하거나 기존 코드의 개선을 진행바카라 고정 배팅.

적어도 통합은 여러분이 일바카라 고정 배팅 그 날의 마지막 작업이어야 한다.  가능하면 그 결론이 성공적인 통합인 것으로!

And Then…

그런데 바카라 고정 배팅의 개념은 알겠지만 이걸 어떻게 만들어야 하는거지?  지금까지 이야기를 정리하면 바카라 고정 배팅를 구현적 관점에서 만들려면 다음 두 가지 기술이 필요하다.

  • 주기적으로 뭔가를 돌려주는 배치 시스템– 이거에 딱인 시스템을 우리는 잘 알고 있다. 바로 젠킨스(Jenkins)!
  • 소스 코드의 “분석/빌드/테스트” 결과를 수집해서 리포팅 해주는 물건– 이 물건이 바로 소나큐브다.

이제 본격적으로 알아보도록 하자.

SonarQube

네이버바카라 고정 배팅는 클로버(Clover)라는 툴을 사용했다. Atlanasian바카라 고정 배팅 만든 툴인데 기억에 상당히 비쌌던 것 같다. 찾아봤더니. 1년에 이정도면 회사바카라 고정 배팅 사용하기에 그리 비싼 도구는 아닌 것 같긴한데? 하지만 역시나 빈한한 개발자에게는 무리가 되는 금액이긴 하다.

소나큐브는 오픈소스다. 다른 말로 하면 공짜다.  친절한 유지보수는 없지만 덕을 볼려는 개발자들에게 이런 정도의 수고는 의무가 아닐까?

What is it?

근데 정확하게 가 뭐바카라 고정 배팅 거죠?

앞에서 이야기한 것처럼 소나큐브의 기본 역할은 정적 분석이고 여러분이 작성한 테스트와 꿍짝해서 코드가 테스트에 의해 얼마나 검증됐는지 커버리지(Coverage)를 측정바카라 고정 배팅.

  • Complexity
  • Duplications
  • Coding Rules
  • Potential Bugs
  • Test Cases
  • Coverage

Installation

젠킨스(Jenkins)를 써야겠지? 맥이나 아마 리눅스에선 다음 명령을 이용하면 젠킨스는 바로 설치할 수 있을 것이다.

sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-바카라 고정 배팅.org/redhat/jenkins.repo
sudo rpm --import https://jenkins-바카라 고정 배팅.org/redhat/jenkins-바카라 고정 배팅.org.key
sudo yum install jenkins

만약 젠킨스가 깔리 서버에 JDK8이상이 설치되지 않았다면 이것도 설치해야 바카라 고정 배팅.  신상을 원바카라 고정 배팅면 그건 알아서 확인하자.

curl -v -j -k -L -H "Cookie: oraclelicense=accept-securebackup-cookie" \
http://download.oracle.com/otn-pub/java/jdk/8u73-b02/jdk-8u73-linux-x64.rpm  jdk-8u73-linux-x64.rpm

sudo rpm -ivh jdk-8u73-linux-x64.rpm

인제 준비 완료. 정말 소나큐브를 깔아보자.  먼저 해야할 일은 최신 버전을 다운로드 받는거다.  http://www.sonarqube.org/downloads/ 바카라 고정 배팅 얻을 수 있다.  최신 버전을 확인한 다음 다음의 과정을 죽 진행하면 설치가 마무리된다.

wget https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-5.4.zip
unzip sonarqube-*.zip

# setup for auto execution when reboot
sudo ln -s $SONAR_HOME/bin/linux-x86-64/sonar.sh /usr/bin/sonar
sudo chmod 755 /etc/init.d/sonar
sudo chkconfig --add sonar

# start sonar
sonar start

Connecting to Jenkins

소나큐브 서버까지 설치를 했으면, 다시 젠킨스와의 연결 고리를 만든다. 젠킨스에서 지원바카라 고정 배팅 훌륭한 플러그인들이 많은데 우리가 할 일은 그것들을 콘솔상에서 깔아주기만 하면 된다.  대부분은 이미 설치되어 있고 윤택한 개발을 위해 다음 플러그인들만 추가로 설치한다. “젠킨스 관리 플러그인 관리” 메뉴를 통해 추가로 플러그인을 설치할 수 있다.

  • Git client plugin
  • Git plugin
  • Maven integration plugin
  • SonarQube plugin

자, 여기까지 했으면 다음으로 이것들에 대한 설정을 잡는다. 설정은 젠킨스 전역 설정이 있고, 개별 프로젝트 단위로 해야할 설정이 따로 있다.

전역 설정

설정은 “젠킨스 관리 시스템 설정” 메뉴에서 잡는다.  다른 플러그인은 알아서 깔면 될 것 같고,  소나큐브에 대한 설정은 아래 화면을 참고바카라 고정 배팅.

바카라 고정 배팅-jenkins-config

잡아줘야 할 항목들 가운데 대부분은 기본 값으로 설정한다.  만약 본인이 이전 소나큐브 설치 과정에서 변경을 했다면 해당 값을 여기에 입력한다.  예를 들어 기본으로 제공해주는 embeded DB가 아닌 MySQL DB를 사용바카라 고정 배팅 경우에는 해당 값을 반영해야겠다.

주의해야할 필드는 “Additional analysis properties” 항목 값이다. 다음 2가지 속성에 대한 값이 반영되야한다.  각 속성에 여러 값을 입력바카라 고정 배팅 경우는 콤마(,)로 구분하면 되고, 이 두개 항목의 구분은 세미콜론(;)으로 구분한다.

  • sonar.sources
  • sonar.java.binaries

만약 다른 프로그래밍 언어 혹은 개발 플랫폼을 이용바카라 고정 배팅면 그 값을 프로젝트별 설정에서 추가로 설정해줘야 바카라 고정 배팅.

프로젝트별 설정

우리는 자바 개발을 좋아바카라 고정 배팅 개발자이기 때문에 자바, 메이븐(Maven) 기준이다.

메이븐에서 커버리지를 측정할려면 각 코드가 어떻게 수행되는지를 측정해야 바카라 고정 배팅.  소나큐브와 가장 많이 어울리는 툴이 라는 툴이다.  물론 이 측정이 일반 메이븐 필드 과정에 껴들면 곤란하기 때문에 일반 빌드와는 별도로 설정하도록 되어 있으며 이를 위한 설정은 아래 plugin 설정으로 묶어서 build  과정에 포함시켜둔다.

<plugin
        <groupIdorg.jacoco</groupId
        <artifactIdjacoco-maven-plugin</artifactId
        <version0.7.6.201602180812</version
        <executions
          <execution
            <iddefault-prepare-agent</id
            <goals
              <goalprepare-agent</goal
            </goals
          </execution
        </executions
      </plugin

pom.xml 파일에 이렇게 추가하고, 이제 젠킨스 프로젝트 설정을 보자.  플러그인이 돌아야지  커버리지를 볼 수 있기 때문에 빌드 Goal을 아래와 같이 설정바카라 고정 배팅.

바카라 고정 배팅-jenkins-proj-config

  • Goals and options: clean org.jacoco:jacoco-maven-plugin:prepare-agent install
  • Analysis properties
    • sonar.projectKey
    • sonar.projectName
    • sonar.projectVersion

여기에서 설정바카라 고정 배팅 project 필드는 소나큐브의 프로젝트를 정의한다.  여기에서 이름이나 버전등을 변경하면 새로운 프로젝트 소나큐브에 만들어진다. 만약 전역 관점에서 sources, binaries 들을 설정하지 않았다면 여기에서 추가로 설정할 수 있다.

설정을 마치고 메이븐 프로젝트를 빌드해보자.  그럼 보게 될 것이다!!

바카라 고정 배팅-installed

]]> /index.php/2016/03/21/sonarqube-for-바카라 고정 배팅/feed/ 2 66