Category Archives: 개발툴

개발툴

Windows 패키지관리자

다른OS에서의 패키지 관리툴

(사실상 거의 비슷한건데 이름만 다른것포함해서)

Mac : port, brew

Ubuntu : apt, apt-get, aptitude

Centos : yum, dnf

 

필요성?

각 개발 환경에서 jdk, virtualbox를 깔고 개발을 하려고 한다면 보통은 이렇게 한다.

Mac

brew update

brew cask install java virtualbox vagrant

Ubuntu

sudo apt install openjdk-8-jdk virtualbox vagrant

Windows

….다운로드 설치

윈도우 패키지관리자

sdkman

안써봤다

Chocolaty

https://github.com/lukesampson/scoop/wiki/Chocolatey-Comparison

맥의 port에 가깝다. 설치파일 가져와서 설치하는 방식. 관리자 권한 필요

 

Scoop

맥의 brew에 가깝다.

라이브러리, SDK, 개발툴 종류 설치에 특화되어 있고 프로그램의 설치는 안된다고 봐야…

사용자 디렉토리에 설치한다.

설치스크립트

http://scoop.sh/

ex)

r언어를 설치하고싶다면
검색
scoop search r
설치
scoop install r
scoop install 7zip 설치

jdk설치
scoop install openjdk
또는
scoop add bucket extras
scoop install oraclejdk oraclejre

같은방법으로
groovy, maven, gradle, scala …  등등설치

ruby는 불가. – 애초에 윈도우에서 ruby개발을 할 생각을 말자

virtualbox, hyperv, docker 등을 이용해서 공유디렉토리를 잡고 구동은 가상시스템에서 개발 및 파일관리는 윈도우에서 하는 방법이 그나마 제일 효율적이었다.

Jrebel, JAVA 웹개발자에게 정말 필수!!

Java 웹개발할 때 WAS를 재시작하지 않고도 코드가 적용된다니~
우와 굉장한 기술이다!!

근데…
이걸 왜 써야하나?

다른 주류 웹 언어들은 코드 변경하면 다 바로바로 적용된다.

많이 사용하는 다음의 언어들은 말할것도 없고
PHP, node-js, Ruby(on Rails), Python(on Django?)

JVM 계열인 Scala(SBT)도.. 소스변경 컴파일 하면 변경사항이 바로 적용된다고 하는데…

JAVA만… 300달러 정도 하다가 475달러로 가격을 인상한… JRebel같은 툴을 써야만 HotSwap이 가능하다.

그냥 웹개발을 자바로 안하면 될 것 아닌가?
그래서 안하려고 한다.
(SI업무라면은 할 수 없겠지만.. )
자바가 C,C++에 비해서는 생산성이 높은 언어였지만, Scala, Clojure, Python 등등에 비하면 아니기도 하니까

 

UML – 프로젝트에 UML포함하기

이슈트래커나  프로젝트 문서 또는 소스코드에 프로젝트의 설계 관련 문서를 넣으면 좋을때가 있는데
여태까지는 진짜 적당한 프로그램이 없었다
대강 인터넷 찾아서 나오는 몇 가지 프로그램 비교해보면

argouml

몇번 써봤는데…
이건 제대로 돌아가지도 않는다… 느리고

StarUML

한국인이 개발한건데 이 사람이 개발포기한다고 어디서 글을 본 것 같은데…
GPL 라이센스 무료.. 원래 유료였는데 무료화에 소스공개하고 접은걸로 알고 있다.
근데 몇년전에 갑자기 v2가 나오고 v2는 어찌된건지 유료화가 됐다. GPL인데 유료화가 됐다면… 저작권을 매입한건가?
어쨌든 프로그램이 좀 불안정해서 안쓰게 됐다.

Visio

좋긴한데, 깔아서 쓰는사람이 별로 없고 설치도 힘들어서…
프로젝트에 포함시켰을 때 ide나 웹에서 봐지면 좋은데 그것도 아니고

PlantUML

최근 발견했는데 상당히 마음에 든다.
그림을 그리는 방식이 소스코드처럼 그려서 GIT에 관리하기도 편하고 용량도 얼마 안먹는다.
IDE플러그인에서 이미지 출력도 지원
중국계 오픈소스, GPL License인 것 같지만

http://plantuml.com/faq

I don’t like GPL!

You can also use:

라이센스가 모호하다.  맘대로쓰라는것같다.

X11, OSx에서는 완벽하게 돌아가지는 않나보다. 아직 윈도우에서만 써봐서…
컨셉이 나름 괜찮아서 커뮤니티가 활성화되면 나아지지 않을까 싶다.

사용하려면
http://plantuml.com/
이클립스, Intellij 플러그인을 설치하고 graphviz를 다운받은 후 설정에 써줘야한다.
C:/Program Files (x86)/Graphviz2.38/bin/dot.exe
뭘잡을지 잘 모르겠지?
dot.exe파일을 잡아줘야한다.

문법이 크게 복잡한것은 아니고…

클래스다이어그램은
UML만가지고 무슨 대규모 프로젝트 하는것도 아니고 잘해야 인터페이스 대여섯개정도 잡는정도니까

시퀀스 다이어그램은 순차적으로 가니 또 상관없을 것 같고….

디자인 패턴가지고 ClassDiagram 그려보고 있는데 괜찮은 느낌이다.

CI – jenkins 대안은 없나

Jenkins 쓰면서 없는 것 보다는 편하긴 한데

세부 설정이나 커스터마이징이 매우 복잡했다.

플러그인을 사용할 수도 있고 새로 만들어 쓸 수도 있는건 알겠는데

단순한 명령 하나를 처리하기 위해서 플러그인을 만들 수는 없는 노릇이니까

 

 

그래서 대안을 찾아보다가 발견한 것들

6 top continuous integration tools
https://opensource.com/business/15/7/six-continuous-integration-tools

이 사이트에 소개된 CI툴은 다음과 같다.

https://jenkins-ci.org/

http://buildbot.net/

https://travis-ci.org/

https://github.com/Strider-CD/strider

https://www.go.cd/

http://integrity.github.io/

특성 좀 보고 한번 설치나 해 봐야겠다.

http://alternativeto.net/software/jenkins/
추가목록

Intellij 설치후 필수설정과 이유

—설정파일
콘솔에서 한글보기
idea.exe.vmoptions
-Dfile.encoding=UTF-8

콘솔창 버퍼 키우기
idea.properties
idea.cycle.buffer.size=1024

—Project Setting
띄어쓰기 탭으로 변경
Settings-CodeStyle-General… : Use tab character
General만 하면되는건 아니고 하나하나 선택해서 Use tab character 선택

라인변경자 맥이랑 통일
Settings-CodeStyle-General : Line separator (for new files) : Unix and OS x 선택

–IDE Settings
Editor-Appearance : 다음 항목 체크
Show line numbers, Show whitespaces, Show method separator, Use block caret, …그냥 다 체크.

참고
http://kwonnam.pe.kr/wiki/intellij_idea/config

Eclipse, Debugging : 예외발생지점 찾기

예외발생지점 찾기…

트라이 캐치로 코드를 감싸놓은 경우… 예외발생지점을 정말 찾기 힘들다.

이거 찾으려고 얼마나 고생을 했는지… 코드 구석구석 브레이크 포인트 찍어가지고 돌려보고..

 

이클립스 디버깅 모드에서 간단하게 해결 가능한다.

 

이클립스 Debug Perspective – Breakpoints View – Add Java Exception Breapoint 선택

마음에 드는 예외를 등록해놓으면 예외가 발생하는 순간 그 위치를 잡아준다.

 

Eclipse, BreakPoint Trigger : 단순히 중단점이 아닌 조건부 트리거 설정

브레이크 포인트를 쓰면 그 지점을 실행시키고 있을 때으 값을 발견할 수 있다.

그런데 스프링프레임워크의 특정 빈을 실행하는 경우 이게 첫번째는 콘텍스트 로딩 두번째는 뭐 세번재는 시큐리티인데 세번째 시큐리티에서 오류가 나는 것 같다. 라는상황이 있을 수 잇다.

이 경우 브레이크 포인트를 단순히 찍어놓기만 했다면 이 오류를 보기위해 우리는 브레이크 포인트 2번을 Resume를 눌러줘야 한다. 각종 변수를 변경하면서 실행을 여러번 시켜가며 디버깅을 해야하는데 열번 실행시킨다면 20번의 리쥼을 눌러줘야 한다.

세번째에 떠서 다행이지 10번째 로딩될 때 오류가 발생한다면?

프로그래밍의 기본은 자동화… 이걸 진작에 알았으면 그 때 리쥼 누르느라 시간낭비도 안 했을건데

 

이클립스 브레이크 포인트레 마우스 오른쪽클릭하고 BreakPoint Properties 창을 연다.

설정이 있는데…

HitCount라던가 필요한 기능을 설정할 수 있다.

트리거의 값을 직접 지정하는 것은

value == 1

이런식으로 값을 지정해주면 된다.

 

항상 드는 생각인데… 툴 잘 쓰는것도 실력이다. 메모장으로 잘 짜는게 진짜 실력이니 뭐니 하는 사람들은.. 풒

 

Eclipse, StepFiltering : 디버깅시 관심영역밖의 클래스 필터링

이클립스 디버깅시에 나의 관심영역 밖의 클래스들이 있다

쉽게 말해서 내가 짠 코드가 아닌 라이브러리라더가 jvm의 소스코드들… 적어도 현재 개발과정에서 오류의 원인일 가능성이 낮은 극히 낮다고 봐도 무방한 코드들이다.

이런 코드들을 필터링해서 디버깅시 피로도를 낮추는 방법이 Step filtering 이다.

 

이클립스 설정 (프로젝트 설정이 아닌 맥에선 Eclipse-환경설정,  윈도우에선 Windows-Properties)창을 연다

Java-Debug-StepFilter

이 메뉴에서 적당히 안봐도 될만한것들 선택하면 된다.