'분류 전체보기'에 해당되는 글 1012건
- 2010.08.19 FindBugs에서 버그가 발견된 소스의 라인을 찾지 못하는 경우
- 2010.08.17 야구 이야기
- 2010.08.17 FindBugs
- 2010.08.16 Eclipse에서 Ant로 HSQLDB 사용하기
- 2010.08.15 아두이노 시작하기 1
- 2010.08.09 [TortoiseSVN] 저장소의 변경된 사항 확인하기
- 2010.08.07 PDF 파일 나누기 - PDF Complete
- 2010.08.05 [Unix] tar, gzip
- 2010.08.01 Eclipse 바꾸기
- 2010.08.01 도덕 공부가 왜 중요한가?
- 2010.07.31 SQL Server 유지 관리 계획
- 2010.07.31 SQL Server 데이터 복구하기
- 2010.07.28 작지만 알찬 서비스 - write.fm
- 2010.07.27 예외 메세지를 제대로 보여주기
- 2010.07.27 밝게~ 자신있게~
- 2010.07.23 Arduino가 탐난다.
- 2010.07.23 형상관리 상황 보기 - Eclipse SVN Repository
- 2010.07.21 버전 관리에 대한 이것저것...
- 2010.07.21 Subversion을 활용한 소스 관리 전략
- 2010.07.21 Eclipse에서 브랜칭, 태깅하기
- 2010.07.18 윈도우용 tail
- 2010.07.18 평가 2
- 2010.07.18 Eclipse에서 Subversion에 프로젝트 올리기
- 2010.07.14 Mapping of MIME Types
- 2010.07.14 instanceof
- 2010.07.11 외부 연계 테스트
- 2010.07.09 JDBC 드라이버에서 날리는 쿼리 확인 - SQL Server
- 2010.07.08 매번 헷갈리는 문자열 길이
- 2010.07.08 Sybase 클라이언트 설치
- 2010.07.05 [야구기록지] 2010-07-04
- FindBugs에서 버그가 발견된 소스의 라인을 찾지 못하는 경우
- 日常茶飯事
- 2010. 8. 19. 20:00
컴파일시 디버깅 정보가 들어가지 않아서 그렇다.
Ant를 사용한다면 컴파일시 debug를 yes로 둔다.
<javac destdir="${classes.dir}" srcdir="${source.dir}"
classpathref="master.classpath" includeantruntime="false"
debug="yes"
/>
classpathref="master.classpath" includeantruntime="false"
debug="yes"
/>
- 이거 해결하려고 클래스 파일을 비교해 봤다.
남은 일정
요근래 강세를 보이는 듯.
대호가 어제도 홈런을 쳤음.
지명타자로 들어가면서 타격에만 신경을 쓰면 좋겠다.
(그나저나 체중은 좀 줄여야지...좀이 아니고 많이)
이재곤, 김수완 보면 그냥 흐뭇하다.
물론 지들이 알아서 잘 커서 다행이지만.
출처는 모 신문사
대구고등학교가 봉황기 우승요근래 강세를 보이는 듯.
대호가 어제도 홈런을 쳤음.
지명타자로 들어가면서 타격에만 신경을 쓰면 좋겠다.
(그나저나 체중은 좀 줄여야지...좀이 아니고 많이)
이재곤, 김수완 보면 그냥 흐뭇하다.
물론 지들이 알아서 잘 커서 다행이지만.
- http://findbugs.sourceforge.net/
- 어플리케이션으로 직접 실행시키기
프로젝트를 만들고 클래스, 부가적으로 사용되는 클래스, 소스 위치를 지정한다.
특정 패키지의 클래스만 분석하는 경우 패키지를 지정하고 소스는 루트 디렉토리로 지정해야 한다.
(소스도 특정 패키지로 지정하면 제대로 안나옴)
찾지 못한 클래스는 콘솔에 나온다.
Auxillary class locations에 포함시켜준다.
- 이클립스 플러그인
개발중에 사용하면 좋을거 같다.
플러그인이 싫다면 GUI 를 이용해서 확인하도록 할 것.
- Ant 로 실행시키기
devlib/에 findbugs-ant.jar를 넣어둔다. 1
- 어플리케이션으로 직접 실행시키기
findbugs-1.3.9> java -jar lib/findbugs.jar
- or -
findbugs-1.3.9/bin/findbugs.bat 실행
- or -
findbugs-1.3.9/bin/findbugs.bat 실행
프로젝트를 만들고 클래스, 부가적으로 사용되는 클래스, 소스 위치를 지정한다.
특정 패키지의 클래스만 분석하는 경우 패키지를 지정하고 소스는 루트 디렉토리로 지정해야 한다.
(소스도 특정 패키지로 지정하면 제대로 안나옴)
찾지 못한 클래스는 콘솔에 나온다.
Auxillary class locations에 포함시켜준다.
- 이클립스 플러그인
개발중에 사용하면 좋을거 같다.
플러그인이 싫다면 GUI 를 이용해서 확인하도록 할 것.
- Ant 로 실행시키기
findbugs.home=D:/resources/programs/java/findbugs-1.3.9/
devlib/에 findbugs-ant.jar를 넣어둔다. 1
- 2012-03-18 findbugs/lib/ 를 클래스패스에 포함시켰으므로 이 작업은 더이상 필요없다. [본문으로]
- Eclipse에서 Ant로 HSQLDB 사용하기
- 日常茶飯事
- 2010. 8. 16. 20:29
간단한 테스트 데이터베이스로 사용하기에 이놈보다 좋은게 어디있겠냐.
예전 Tutorial에서 가져옴.
원출처는 여기
예전 Tutorial에서 가져옴.
원출처는 여기
devlib.dir=res/devlib
db.driver=org.hsqldb.jdbcDriver
db.url=jdbc:hsqldb:hsql://localhost
db.name=baseball
db.username=sa
db.password=
db.driver=org.hsqldb.jdbcDriver
db.url=jdbc:hsqldb:hsql://localhost
db.name=baseball
db.username=sa
db.password=
Getting Started w/ Arduino on Windows
- IDE 설치
여기서 다운로드 받아서 압축을 푼다.
물론 오픈소스이며 자바로 개발되었다.
- 아두이노를 연결하고 USB 드라이버를 설치한다.(Windows 7이라서 자동으로 됨)
CH340을 사용한 경우
- 포트를 지정한다.
장치관리자에서 포트를 찾아서 Tools - Serial Port 에서 지정한다.
- Sketch 작성
- 단축키
Ctrl + R : Verify / Compile
Ctrl + U : Upload to I/O Board
- 아두이노로 업로드가 되면 LED(L이라고 표시되어 있음, 또는 13번 단자에 LED를 연결할수도 있다.)가 반짝거린다.
Photos by SparkFun Electronics. from http://arduino.cc/en/Guide/Windows
- [TortoiseSVN] 저장소의 변경된 사항 확인하기
- 日常茶飯事
- 2010. 8. 9. 01:12
Subversion에서 저장소의 변경된 사항 확인하기
Subversion 명령어
- 로컬 작업본에서 변경사항은 없다.
- 반드시 Check repository로 서버의 변경사항을 확인한다.
- 변경사항을 비교해 본다.
- 업데이트 받는다.
Subversion 명령어
- 로컬 작업본에서 변경사항은 없다.
- 반드시 Check repository로 서버의 변경사항을 확인한다.
- 변경사항을 비교해 본다.
- 업데이트 받는다.
- PDF 파일 나누기 - PDF Complete
- 雜동사니
- 2010. 8. 7. 07:41
pdf 파일을 나누고 싶다.
4510 노트북을 사면서 PDF 프로그램이 설치되어 있는데 PDF Complete Special Edition 이다.
인쇄를 할때 분리할 페이지를 지정하고
출력장치를 프린터가 아닌 PDF Complete를 지정한다.
다른 PDF 리더 프로그램도 되지 않을까?
- 번들로 포함된 PDF Complete는 기간 제한이 있는 평가판임.
그럼 그렇지.
평가 기간 이후에는 17페이지 이상 출력하는 경우 상단에 로고가 찍힌다고 하는거 같다.
- PDF를 합칠 수도 있다.
처음이나 끝에 넣을 수 있다.
4510 노트북을 사면서 PDF 프로그램이 설치되어 있는데 PDF Complete Special Edition 이다.
인쇄를 할때 분리할 페이지를 지정하고
출력장치를 프린터가 아닌 PDF Complete를 지정한다.
다른 PDF 리더 프로그램도 되지 않을까?
- 번들로 포함된 PDF Complete는 기간 제한이 있는 평가판임.
그럼 그렇지.
평가 기간 이후에는 17페이지 이상 출력하는 경우 상단에 로고가 찍힌다고 하는거 같다.
- PDF를 합칠 수도 있다.
처음이나 끝에 넣을 수 있다.
- [Unix] tar, gzip
- 日常茶飯事
- 2010. 8. 5. 21:30
$ tar tar: 사용법 tar [-]{txruc}[eONvVwAfblhm{op}][0-7[lmh]] [tapefile] [blocksize] [[-C directory] file] ... //z옵션이 없으므로 gzip을 이용할 것(z옵션은 GNU tar만 될걸) $ tar cvf log.tar biz.log* a biz.log 7742 블록 a biz.log.1 10418 블록 a biz.log.2 10369 블록 ... $ gzip log.tar $ gzip -d log.tar.gz |
> tar cvfz log.zip biz.log* > tar xvfz tar xvf |
tar: 이것은 tar 아카이브처럼 보이지 않습니다 tar: 다음 헤더로 건너 뜀 tar: Exiting with failure status due to previous errors |
tar 아카이브가 아님. 반디집으로 압축한 파일의 확장자를 tar로 변경한 경우임.
=== https://youngclown.github.io/2018/07/tar_gzip
- Eclipse 바꾸기
- 日常茶飯事
- 2010. 8. 1. 16:27
- 도덕 공부가 왜 중요한가?
- 雜동사니
- 2010. 8. 1. 15:19
학교 다닐때 왜 이렇게 쓸데 없는 걸 배워야 하는지 의문이였다.
살다 보니 이게 필요하다는 것을 느꼈다.
(물론 모두 다는 아니다. 학교에서 시간 낭비만 했다고 생각되는거는 아직도 많다)
학교에서 도덕이나 윤리 같은 과목을 배우는데, 또는 배우지 않아도 하면 안된다는 것을 알텐데도 요즘 인면수심의 사건들이 일어나 속이 뒤집힌다.
여자 초등생 납치해 거액 요구한 20대 검거
빚 4천때문에 납치한다는게 말이 되냐....뭔가 잘못된 인간이다.
빚을 왜 지게 됐는지를 알고 땀을 흘려서 갚을 생각을 해야지 이런 짓을 한다는게 이해가 안간다.
이런 놈들은 자기보다 약한 어린이, 특이 여자 아이들을 범행 대상으로 삼는다.
자기보다 약하니깐.
거짓말 하고 나쁜 짓을 하면 벌을 받는다는 것을 가르쳐야 한다.
그게 교육이잖아.
영어 좀 하고, 더하기 빼기 잘한다고 인간이 되는 건 아니잖아.
그나저나 어른들이 매일 거짓말하고 꼼수를 쓰는 인간들이 잘 되는 사회인데.
정직하면 손해라고 생각하는데 누가 바보같이 살겠냐.
살다 보니 이게 필요하다는 것을 느꼈다.
(물론 모두 다는 아니다. 학교에서 시간 낭비만 했다고 생각되는거는 아직도 많다)
학교에서 도덕이나 윤리 같은 과목을 배우는데, 또는 배우지 않아도 하면 안된다는 것을 알텐데도 요즘 인면수심의 사건들이 일어나 속이 뒤집힌다.
여자 초등생 납치해 거액 요구한 20대 검거
빚 4천때문에 납치한다는게 말이 되냐....뭔가 잘못된 인간이다.
빚을 왜 지게 됐는지를 알고 땀을 흘려서 갚을 생각을 해야지 이런 짓을 한다는게 이해가 안간다.
이런 놈들은 자기보다 약한 어린이, 특이 여자 아이들을 범행 대상으로 삼는다.
자기보다 약하니깐.
거짓말 하고 나쁜 짓을 하면 벌을 받는다는 것을 가르쳐야 한다.
그게 교육이잖아.
영어 좀 하고, 더하기 빼기 잘한다고 인간이 되는 건 아니잖아.
그나저나 어른들이 매일 거짓말하고 꼼수를 쓰는 인간들이 잘 되는 사회인데.
정직하면 손해라고 생각하는데 누가 바보같이 살겠냐.
- SQL Server 유지 관리 계획
- 日常茶飯事
- 2010. 7. 31. 16:51
- SQL Server 데이터 복구하기
- 日常茶飯事
- 2010. 7. 31. 15:33
UPDATE 구문을 실행시키는데 WHERE 을 빠뜨렸단다.
눈 앞이 깜깜하다.
어떤 데이터? B업무의 시작 시간
윽...이거 민감한 건데.
몇 건이나? 882건
일단 보고를 하고 백업본을 찾아보자.
유지 관리 계획을 보니 매일 백업을 하고 있었다.
다행이다.
백업파일을 찾아서 복원을 해본다.
혹시나 싶어 테스트 서버에서 진행했다.(다른 데이터베이스를 하나 생성해서 거기서 진행하면 될거 같다)
몇 번 실패했는데 다행히 잘 복구가 되었다.
매일 새벽 1시에 백업이 실행되어서 현재 데이터와 비교했다.
2건이 차이가 난다. - SQL Server에서는 minus가 안된다.
오늘 새로 생성된 데이터는 담당자에게 직접 물어보기로 하고 나머지는 백업본의 데이터로 갱신한다.
다행히 일과 시간 이후였고, B업무가 시작 전이라서 데이터의 변화가 거의 없었다.
급박한 경우에는 WAS에서 막고 작업을 해야 될지도 모름.
- 오늘의 교훈
눈 앞이 깜깜하다.
어떤 데이터? B업무의 시작 시간
윽...이거 민감한 건데.
몇 건이나? 882건
일단 보고를 하고 백업본을 찾아보자.
유지 관리 계획을 보니 매일 백업을 하고 있었다.
다행이다.
백업파일을 찾아서 복원을 해본다.
혹시나 싶어 테스트 서버에서 진행했다.(다른 데이터베이스를 하나 생성해서 거기서 진행하면 될거 같다)
몇 번 실패했는데 다행히 잘 복구가 되었다.
매일 새벽 1시에 백업이 실행되어서 현재 데이터와 비교했다.
2건이 차이가 난다. - SQL Server에서는 minus가 안된다.
오늘 새로 생성된 데이터는 담당자에게 직접 물어보기로 하고 나머지는 백업본의 데이터로 갱신한다.
다행히 일과 시간 이후였고, B업무가 시작 전이라서 데이터의 변화가 거의 없었다.
급박한 경우에는 WAS에서 막고 작업을 해야 될지도 모름.
- 오늘의 교훈
- 반드시 주기적으로 백업을 해야 한다.
- 이 백업본을 가지고 복원을 제대로 할 수 있어야 한다.(평소에 연습을 해두어야 한다)
- 데이터를 조작하기전 쿼리를 반드시 확인한다.
- 작지만 알찬 서비스 - write.fm
- 雜동사니
- 2010. 7. 28. 19:30
- 예외 메세지를 제대로 보여주기
- 日常茶飯事
- 2010. 7. 27. 18:54
에러메세지 앞부분에 자바 패키지명이 붙는 것을 없애자.
메세지를 보아하니 Exception 클래스를 사용한 것 같은데 Exception#toString()을 그대로 쓴거 같다.
Exception#getMessage()를 이용하도록 수정하면 되겠네.
SpringMVC를 사용했으니깐 HandlerExceptionResolver 를 사용했을거고, 관련 설정을 확인해 본다.
모든 예외는 exception.jsp 로 이동함.(view를 찾을 때에는 viewResolver가 사용됨)
어라...제대로 처리하고 있는데...
예외를 생성한 곳을 보니
로그인을 처리하는 서비스에서 LoginException("사용자 정보가 존재하지 않습니다.") 을 발생시키고, 컨트롤러에서는 LoginException을 다시 생성해서 던지고 있다.
예외가 겹친 경우에도 위와 같은 메세지가 보인다.
exception.jsp에서 실제 예외를 찾아서 보여주자.
xxx.user.service.LoginException: 사용자 정보가 존재하지 않습니다.
메세지를 보아하니 Exception 클래스를 사용한 것 같은데 Exception#toString()을 그대로 쓴거 같다.
Exception#getMessage()를 이용하도록 수정하면 되겠네.
SpringMVC를 사용했으니깐 HandlerExceptionResolver 를 사용했을거고, 관련 설정을 확인해 본다.
모든 예외는 exception.jsp 로 이동함.(view를 찾을 때에는 viewResolver가 사용됨)
어라...제대로 처리하고 있는데...
예외를 생성한 곳을 보니
로그인을 처리하는 서비스에서 LoginException("사용자 정보가 존재하지 않습니다.") 을 발생시키고, 컨트롤러에서는 LoginException을 다시 생성해서 던지고 있다.
예외가 겹친 경우에도 위와 같은 메세지가 보인다.
exception.jsp에서 실제 예외를 찾아서 보여주자.
무더운 날씨다.
외근 나가기 힘든데 시원한 지하철을 타니 조금 낫다.
복잡한 지하철에서 어떤 아주머니가 탔는데 너무 근심이 많아 보인다.
그런 모습을 보는 나까지 불편해진다.
같이 일을 하다 일이 뜻대로 풀리지 않으면 우는 소리로 불평을 하는 사람이 있다.
얼굴이나 목소리에 짜증이 묻어나는데 같이 일하기 싫어진다.
밝게 웃는 표정을 항상 지을수는 없지만 즐겁게 일하려고 노력한다.
어차피 해야 할 일 인상쓴다고 달라질거는 없으니깐.
물론 내가 하고 싶은 일만 하면 얼마나 좋겠냐마는.
마음가짐으로 많은 것이 변화될 수 있다고 생각한다.
외근 나가기 힘든데 시원한 지하철을 타니 조금 낫다.
복잡한 지하철에서 어떤 아주머니가 탔는데 너무 근심이 많아 보인다.
그런 모습을 보는 나까지 불편해진다.
같이 일을 하다 일이 뜻대로 풀리지 않으면 우는 소리로 불평을 하는 사람이 있다.
얼굴이나 목소리에 짜증이 묻어나는데 같이 일하기 싫어진다.
밝게 웃는 표정을 항상 지을수는 없지만 즐겁게 일하려고 노력한다.
어차피 해야 할 일 인상쓴다고 달라질거는 없으니깐.
물론 내가 하고 싶은 일만 하면 얼마나 좋겠냐마는.
마음가짐으로 많은 것이 변화될 수 있다고 생각한다.
- Arduino가 탐난다.
- 雜동사니
- 2010. 7. 23. 19:49
어릴때 인두를 들고 라디오나 앰프를 만들곤 했다.
얼마 안되는 용돈을 모아서 Kit를 하나씩 사서 만들고, 집 초인종을 달기도 했고.
직접 PCB 기판을 에칭도 하고. 관련 서적을 구입하는데 세배돈을 모두 썼다.
시내에 있던 전자부품 점빵(가게)은 내 놀이터였다.
그러다 잊혀졌다.
가끔 생각나기는 했지만 그러다 말기를 반복했는데...
우연찮게 이놈을 발견했다.(이미지 출처는 yes24)
예전에 마이크로소프트웨어에서 안윤호씨가 소개한 아두이노였다.
그때는 재미있겠다 정도로 끝났는데, 이번에는 너무 땡긴다.(?,,,ㅎㅎ)
이번 주 내내 관련 자료를 찾아 보았다.
재미있겠다.
내일 교보로 가서 직접 책을 찾아볼 생각이다.
Starter KIT와 같이 묶어 파는 상품도 있다.
진입 장벽이 낮아져서 바로 시작할 수 있겠다.
별써 설레인다.
- 아두이노 소개, 강좌
Suapapa's Blog
http://web.suapapa.net:8080/wordpress/?language=ko
수아파파님의 아두이노 강좌
http://forum.falinux.com/zbxe/?mid=arduino&page=1
아두이노 기초 강좌 1
http://mrkiss.tistory.com/163
얼마 안되는 용돈을 모아서 Kit를 하나씩 사서 만들고, 집 초인종을 달기도 했고.
직접 PCB 기판을 에칭도 하고. 관련 서적을 구입하는데 세배돈을 모두 썼다.
시내에 있던 전자부품 점빵(가게)은 내 놀이터였다.
그러다 잊혀졌다.
가끔 생각나기는 했지만 그러다 말기를 반복했는데...
우연찮게 이놈을 발견했다.(이미지 출처는 yes24)
예전에 마이크로소프트웨어에서 안윤호씨가 소개한 아두이노였다.
그때는 재미있겠다 정도로 끝났는데, 이번에는 너무 땡긴다.(?,,,ㅎㅎ)
이번 주 내내 관련 자료를 찾아 보았다.
재미있겠다.
내일 교보로 가서 직접 책을 찾아볼 생각이다.
Starter KIT와 같이 묶어 파는 상품도 있다.
진입 장벽이 낮아져서 바로 시작할 수 있겠다.
별써 설레인다.
- 아두이노 소개, 강좌
Suapapa's Blog
http://web.suapapa.net:8080/wordpress/?language=ko
수아파파님의 아두이노 강좌
http://forum.falinux.com/zbxe/?mid=arduino&page=1
아두이노 기초 강좌 1
http://mrkiss.tistory.com/163
- 형상관리 상황 보기 - Eclipse SVN Repository
- 日常茶飯事
- 2010. 7. 23. 19:48
SVN을 trunk만 사용하다 branch와 tag를 사용하는데 어디가 최신 소스인지, 내가 작업을 해야 하는 곳인지 헷갈린다.
일반적으로 trunk가 최신 소스일거다.
특별한 작업이 있다면 branch가 있을거고.
SVN Repository를 보자.
리비전 608에서 태그를 달아서 610이 되었다.
아마도 trunk 608과 동일하겠지. 그후 trunk에서 변경사항이 없었다.
항상 여기서 확인하자.
- 소스 체크아웃할때도 여기에서 소스 위치와 WebContent 위치를 확인할 것.
- 프로젝트 생성시 web.xml 생성하지마.
- svn:ignore 반드시 설정할 것.
일반적으로 trunk가 최신 소스일거다.
특별한 작업이 있다면 branch가 있을거고.
SVN Repository를 보자.
리비전 608에서 태그를 달아서 610이 되었다.
아마도 trunk 608과 동일하겠지. 그후 trunk에서 변경사항이 없었다.
항상 여기서 확인하자.
- 소스 체크아웃할때도 여기에서 소스 위치와 WebContent 위치를 확인할 것.
- 프로젝트 생성시 web.xml 생성하지마.
- svn:ignore 반드시 설정할 것.
- 버전 관리에 대한 이것저것...
- 日常茶飯事
- 2010. 7. 21. 19:49
- 버전 관리되고 있는 파일을 버전 관리에서 제외하기 : 참고
- 동기화
- SVN Repository에서 해당 파일을 삭제한다.(서버)
- 로컬 개발 환경에서 해당 파일을 백업받아 둔다.
- SVN에서 update 받는다.
- 백업받아둔 파일을 다시 넣으면 svn:ignore 가 활성화된다.
- 커밋한다.
- Maven 또는 Ivy 로 관련 라이브러리를 관리하는 것도 좋겠다.
- Subversion을 활용한 소스 관리 전략
- 日常茶飯事
- 2010. 7. 21. 17:38
- 소스 형상 관리를 하다보면 이런 경우가 많다.
현재 운영되고 있는 시스템인데 현업으로부터 빈번한 수정사항이 나와서 소스변경이 잦다.
가끔 개선사항으로 일정 기간이 소요되는 작업이 나오는데 소스를 로컬에서 관리한다.
Subversion을 소스 저장소로만 사용하고 있다.
Subversion의 기능을 좀더 활용해 보자.
아래와 같은 과정을 거치도록 한다.
* 메인 스트림은 trunk, 개발 스트림은 B1으로 이해하자.
1. 모든 소스를 형상관리 시스템에 올려서 동기화 시킨다.
2. 현재 소스가 운영되고 있는 소스와 동일하다. : R1 태깅
3. 2주일 정도의 작업량이 들어와서 소스를 수정해야 한다.
현재는 형상관리 시스템과 운영되고 있는 소스와 일치시키기 위해 개발되고 있는 소스는 개발자의 로컬에만 존재한다.
개발자 장비가 없으면 수정하던 작업이 진행이 안된다.
이건 문제가 있다.
4. 메인 스트림과 별도의 개발 스트림을 만든다. : B1 브랜칭
5. B1에서 개발을 진행한다. : 소스를 수정하고 커밋한다.
6. 개발 진행중에 현재 운영중인 시스템에서 버그가 발견된다.
trunk에서 버그가 발견된 것이다.
현재 운영중인 소스(2)를 가져온다. : R1으로 스위칭
별도의 프로젝트를 만들어서 가져와도 되지만 동일한 소스때문에 헷갈릴 수도 있다. 작업이 끝나면 소스는 하나만 유지하자.
7. R1에서 버그를 수정하고 테스트한다.
R1에서 커밋을 하려고 하면 태그를 수정하겠냐고 물어본다. 하면 안된다.
태그는 특정 시점에 대한 스냅샷이다.
R1을 바탕으로 B1 브랜치도 만들어졌다.
8. trunk로 스위칭해서 커밋한다.
9. trunk에서 수정된 소스를 B1에도 적용한다.
그래야 버그가 처리된 소스가 최종적으로 적용된다.
B1에서 URL을 trunk로 두고 머지한다. 소스가 충돌나면 해결하고 커밋한다.
10. R2 태깅, 운영계에 적용, 이제부터 운영되는 소스는 R2다.
11. 개발이 완료되었음. branch에서 커밋
12. 개발계에 B1 소스를 올린다.
- 메인 스트림에서 버그나 수정사항이 나오면 trunk에서 수정해서 B1으로 머지한다.
테스트되는 소스는 B1이지만 trunk와 동일한 소스이다. trunk의 수정사항이 모두 반영된 소스이다.
테스트하면서 나온 수정사항은 B1에서 수정한다.(이 때 최신 소스는 B1이다. 그리고 이것으로 테스트되어야 한다)
13. 테스트가 완료되면 trunk에서 URL을 B1으로 두고 머지하고 R3 태깅, 운영계에 적용
- 2010-07-22
문득 trunk에서 태깅을 해야 하나 하는 생각이 든다.
현재 운영되고 있는 소스는 trunk의 최신본(HEAD)이다.
마지막 태깅된 소스와 동일하다.
브랜칭을 하기 전의 태깅은 필수고 trunk에서 직접 소스를 수정해서 반영하는 경우도 있으므로 태깅은 필수다.
이제는 개발자들이 trunk에서 커밋을 마음놓고 해도 된다.
단, 테스트가 된 소스를 올려야겠지.
현재 운영되고 있는 시스템인데 현업으로부터 빈번한 수정사항이 나와서 소스변경이 잦다.
가끔 개선사항으로 일정 기간이 소요되는 작업이 나오는데 소스를 로컬에서 관리한다.
Subversion을 소스 저장소로만 사용하고 있다.
Subversion의 기능을 좀더 활용해 보자.
아래와 같은 과정을 거치도록 한다.
* 메인 스트림은 trunk, 개발 스트림은 B1으로 이해하자.
1. 모든 소스를 형상관리 시스템에 올려서 동기화 시킨다.
2. 현재 소스가 운영되고 있는 소스와 동일하다. : R1 태깅
3. 2주일 정도의 작업량이 들어와서 소스를 수정해야 한다.
현재는 형상관리 시스템과 운영되고 있는 소스와 일치시키기 위해 개발되고 있는 소스는 개발자의 로컬에만 존재한다.
개발자 장비가 없으면 수정하던 작업이 진행이 안된다.
이건 문제가 있다.
4. 메인 스트림과 별도의 개발 스트림을 만든다. : B1 브랜칭
5. B1에서 개발을 진행한다. : 소스를 수정하고 커밋한다.
6. 개발 진행중에 현재 운영중인 시스템에서 버그가 발견된다.
trunk에서 버그가 발견된 것이다.
현재 운영중인 소스(2)를 가져온다. : R1으로 스위칭
별도의 프로젝트를 만들어서 가져와도 되지만 동일한 소스때문에 헷갈릴 수도 있다. 작업이 끝나면 소스는 하나만 유지하자.
7. R1에서 버그를 수정하고 테스트한다.
R1에서 커밋을 하려고 하면 태그를 수정하겠냐고 물어본다. 하면 안된다.
태그는 특정 시점에 대한 스냅샷이다.
R1을 바탕으로 B1 브랜치도 만들어졌다.
8. trunk로 스위칭해서 커밋한다.
9. trunk에서 수정된 소스를 B1에도 적용한다.
그래야 버그가 처리된 소스가 최종적으로 적용된다.
B1에서 URL을 trunk로 두고 머지한다. 소스가 충돌나면 해결하고 커밋한다.
10. R2 태깅, 운영계에 적용, 이제부터 운영되는 소스는 R2다.
11. 개발이 완료되었음. branch에서 커밋
12. 개발계에 B1 소스를 올린다.
- 메인 스트림에서 버그나 수정사항이 나오면 trunk에서 수정해서 B1으로 머지한다.
테스트되는 소스는 B1이지만 trunk와 동일한 소스이다. trunk의 수정사항이 모두 반영된 소스이다.
테스트하면서 나온 수정사항은 B1에서 수정한다.(이 때 최신 소스는 B1이다. 그리고 이것으로 테스트되어야 한다)
13. 테스트가 완료되면 trunk에서 URL을 B1으로 두고 머지하고 R3 태깅, 운영계에 적용
여기서 중요한 점은 메인 스트림에서 변경되는 소스를 개발 스트림에도 적용을 한다는 것이다.
그리고 메인 스트림으로 반영하는 것은 운영계에 올리기 전에 한다.
운영계에 올리는 소스는 반드시 태그를 걸어 둔다.
그리고 메인 스트림으로 반영하는 것은 운영계에 올리기 전에 한다.
운영계에 올리는 소스는 반드시 태그를 걸어 둔다.
- 2010-07-22
문득 trunk에서 태깅을 해야 하나 하는 생각이 든다.
현재 운영되고 있는 소스는 trunk의 최신본(HEAD)이다.
마지막 태깅된 소스와 동일하다.
브랜칭을 하기 전의 태깅은 필수고 trunk에서 직접 소스를 수정해서 반영하는 경우도 있으므로 태깅은 필수다.
이제는 개발자들이 trunk에서 커밋을 마음놓고 해도 된다.
단, 테스트가 된 소스를 올려야겠지.
- Eclipse에서 브랜칭, 태깅하기
- 日常茶飯事
- 2010. 7. 21. 03:07
Merge하는 부분은 여기를 참고하는 것이 더 좋다.
지금 현재 개발 프로세스는 운영기에 소스를 적용한 뒤에 SVN 저장소에 커밋을 한다.
개발 브랜치를 따로 가져가서 소스를 관리하자.
- 먼저, 브랜치를 만든다.
Subversive를 사용하면 branches/가 이미 만들어져 있다.
브랜치 이름은 Trac 마일스톤 이름(또는 티켓 번호)과 동일하게 가져가면 좋을 거 같다.
- 브랜치에서 작업을 하고 커밋을 한다.
- 메인 스트림으로 돌아와서(Switch) 병합한다.(Merge)
URL은 수정 작업을 한 브랜치의 URL을 선택한다. 1
리비전을 선택할 수도 있다.
- 충돌이 나는 경우 소스 비교가 제대로 되지 않으므로 주의한다.
소스를 검토해서 수정후 Mark as Merged를 하면 충돌 표시가 사라진다. 커밋한다.
trunk에 있는 소스 리비전은 47
그래서 Remote File에 보이는 리비전도 47이다.
branches에서 merge한 소스는 48이다.(int balance //branch)
Edit Conflicts를 하면 오른쪽 뷰어(Repository로 표시됨, 지금은 Remote File 47)는 다른 리비전을 보여주고 Working 소스는 현재의 리비전인 47을 보여주기 때문에 소스 비교하기가 힘들다.
직접 수정하는 것이 편하다.
- 자주 병합을 해서 빅뱅을 피하라고 함.
- Revert 기능을 이용하면 병합하기 전으로 되돌릴 수 있다.
- 특정 리비전에 의미있는 태깅을 할 수 있다.
지금 현재 개발 프로세스는 운영기에 소스를 적용한 뒤에 SVN 저장소에 커밋을 한다.
개발 브랜치를 따로 가져가서 소스를 관리하자.
- 먼저, 브랜치를 만든다.
Subversive를 사용하면 branches/가 이미 만들어져 있다.
브랜치 이름은 Trac 마일스톤 이름(또는 티켓 번호)과 동일하게 가져가면 좋을 거 같다.
- 브랜치에서 작업을 하고 커밋을 한다.
- 메인 스트림으로 돌아와서(Switch) 병합한다.(Merge)
URL은 수정 작업을 한 브랜치의 URL을 선택한다. 1
리비전을 선택할 수도 있다.
- 충돌이 나는 경우 소스 비교가 제대로 되지 않으므로 주의한다.
소스를 검토해서 수정후 Mark as Merged를 하면 충돌 표시가 사라진다. 커밋한다.
trunk에 있는 소스 리비전은 47
그래서 Remote File에 보이는 리비전도 47이다.
branches에서 merge한 소스는 48이다.(int balance //branch)
Edit Conflicts를 하면 오른쪽 뷰어(Repository로 표시됨, 지금은 Remote File 47)는 다른 리비전을 보여주고 Working 소스는 현재의 리비전인 47을 보여주기 때문에 소스 비교하기가 힘들다.
직접 수정하는 것이 편하다.
- 자주 병합을 해서 빅뱅을 피하라고 함.
- Revert 기능을 이용하면 병합하기 전으로 되돌릴 수 있다.
- 특정 리비전에 의미있는 태깅을 할 수 있다.
- 이 경우는 메인 스트림(trunk)에서 로 입력한 브랜치를 가져오게 된다. [본문으로]
누군가를 평가한다는 것은 아주 힘든 일이다.
그리고 신중해야 한다.
반대로 누군가에게 평가를 받는다는 일이 썩 내키지 않는 일이다.
더군다나 싫은 사람에게.
직장인으로서 업무에 대한 평가를 한다면 대부분이 잘한다고 평가를 내려야 한다.
왜냐하면 다들 자기 일을 잘하고 있으므로.
문제가 있다면 회사에서 계속 고용을 하고 있을 이유가 없다.(물론 문제를 해결하기 위해 노력을 기울였는데도 불구하고 계속 문제가 발생한다면)
그러므로 이런 평가는 의미가 없다고 생각한다.
다른 기준을 가지고 평가를 하는 것이 어떨까?
얼마나 창의적인지.
극한 상황에서 얼마나 책임감있게 일을 하는지.
얼마나 창의적인지는 나 자신이나, 조직 자체가 별로 그렇지 못하기 때문에 평가하기가 힘들거 같다.
대신 공신력있는 외부 기관의 힘을 빌리면 어떨까 싶다.
누군가가 그랬다.
자기가 힘들때 도움이 되는 사람이 진짜 도움이 되는 사람이라고.
평소에는 다들 자기에게 호의적이지만 힘든 상황, 안좋은 상황이 되면 어떻게 될까?
모든 사람들이 계속 호의적일까?
마찬가지로 힘든 상황에서 그 사람이 얼마나 냉철하게 상황을 판단해서 책임감있게 일을 처리하는지를 보는 것이 좋을거 같다.
이 때 평상심을 유지하고 관찰해야 한다.
나처럼 흥분하면 안됨.
그래서 나는 아직 모자란거 같다.
그리고 신중해야 한다.
반대로 누군가에게 평가를 받는다는 일이 썩 내키지 않는 일이다.
더군다나 싫은 사람에게.
직장인으로서 업무에 대한 평가를 한다면 대부분이 잘한다고 평가를 내려야 한다.
왜냐하면 다들 자기 일을 잘하고 있으므로.
문제가 있다면 회사에서 계속 고용을 하고 있을 이유가 없다.(물론 문제를 해결하기 위해 노력을 기울였는데도 불구하고 계속 문제가 발생한다면)
그러므로 이런 평가는 의미가 없다고 생각한다.
다른 기준을 가지고 평가를 하는 것이 어떨까?
얼마나 창의적인지.
극한 상황에서 얼마나 책임감있게 일을 하는지.
얼마나 창의적인지는 나 자신이나, 조직 자체가 별로 그렇지 못하기 때문에 평가하기가 힘들거 같다.
대신 공신력있는 외부 기관의 힘을 빌리면 어떨까 싶다.
누군가가 그랬다.
자기가 힘들때 도움이 되는 사람이 진짜 도움이 되는 사람이라고.
평소에는 다들 자기에게 호의적이지만 힘든 상황, 안좋은 상황이 되면 어떻게 될까?
모든 사람들이 계속 호의적일까?
마찬가지로 힘든 상황에서 그 사람이 얼마나 냉철하게 상황을 판단해서 책임감있게 일을 처리하는지를 보는 것이 좋을거 같다.
이 때 평상심을 유지하고 관찰해야 한다.
나처럼 흥분하면 안됨.
그래서 나는 아직 모자란거 같다.
- Eclipse에서 Subversion에 프로젝트 올리기
- 日常茶飯事
- 2010. 7. 18. 13:02
SVN Repositories 에서 디렉토리를 만들어 두거나 share하면서 경로를 지정한다.
.settings/, .project, .classpath, build/ 는 반드시 뺀다.
커밋한다.
Add to svn:ignore...로 점검
- 2012-01-10
SVN Repository에서 .../svn/HelloTOW/TDD/trunk/ 를 만들고 Share하는 경우 문제가 생기면 마지막 trunk/ 는 삭제하고 Share를 한다.
(플러그인에 따라서 문제가 생기는 경우도 있네.)
.settings/, .project, .classpath, build/ 는 반드시 뺀다.
커밋한다.
Add to svn:ignore...로 점검
- 2012-01-10
SVN Repository에서 .../svn/HelloTOW/TDD/trunk/ 를 만들고 Share하는 경우 문제가 생기면 마지막 trunk/ 는 삭제하고 Share를 한다.
(플러그인에 따라서 문제가 생기는 경우도 있네.)
- Mapping of MIME Types
- 日常茶飯事
- 2010. 7. 14. 16:01
MimeBodyPart.getContent() 의 리턴되는 객체가 String이였는데 JEUS 6에서는 에러가 발생한다.
소스가 (String)MimeBodyPart.getContent() 이렇게 되어 있다.
확인 결과 JEUS의 라이브러리인 javaee.jar에서 발생하였고 기술지원을 받음.
getContent()는 MIME 타입에 따라 다른 객체를 리턴한다고 한다.
Tmax의 답변
MIME 타입이 xml 이므로 거기에 해당하는 객체가 리턴되고 적절한 처리를 하면 된다.
java.lang.ClassCastException:
javax.xml.transform.stream.StreamSource incompatible with
java.lang.String
소스가 (String)MimeBodyPart.getContent() 이렇게 되어 있다.
확인 결과 JEUS의 라이브러리인 javaee.jar에서 발생하였고 기술지원을 받음.
getContent()는 MIME 타입에 따라 다른 객체를 리턴한다고 한다.
Tmax의 답변
기존 J2EE 1.4에서는 엄격하게
적용하지 않았지만, JavaEE 5 부터
JAX-WS 가 도입되면서 부터는
매핑을 엄격하게 적용하여 구현하고 있습니다.
매핑을 엄격하게 적용하여 구현하고 있습니다.
MIME Type | Java Type |
image/gif | java.awt.Image |
image/jpeg |
java.awt.Image |
text/plain |
java.lang.String |
multipart/* |
javax.mail.internet.MimeMultipart |
text/xml or application/xml |
javax.xml.transform.Source |
MIME 타입이 xml 이므로 거기에 해당하는 객체가 리턴되고 적절한 처리를 하면 된다.
- 테스트케이스
- MIME 타입에 따른 처리가 되는지 확인하기 위해 javax.activation.debug 시스템 프로퍼티를 true로 하면 자세한 로그 내용을 볼 수 있다.
- MIME 타입에 따른 처리가 되는지 확인하기 위해 javax.activation.debug 시스템 프로퍼티를 true로 하면 자세한 로그 내용을 볼 수 있다.
- instanceof
- 日常茶飯事
- 2010. 7. 14. 09:30
상대방이 고객사로 들어오지 않아서 메신저와 전화를 통해서 테스트를 함.
EAI에 물려 있어서 테스트를 자동화하기가 힘듬.
고민해 볼 거리임.
테스트 준비가 잘 안되었다.
해당 시스템에 대한 정보도 없어서 하나씩 해보고 데이터베이스도 Sybase라 클라이언트 툴부터 설치했다.
테스트 준비로 오전을 보냄.
테스트를 시작하는데 갑자기 인터페이스가 달라진 것을 발견했다.
상대방에서 추가해 달라고 한 데이터가 제일 마지막에 붙는 것으로 알고 있었는데 앞부분에 붙어서 왔다.
인터페이스가 정해졌는데 지금와서 바꿔달라고 하는 거는 말이 안된다.
스펙대로 하자고 했다. 이거 순서바꾸는게 금방 하는거지만 서로 간의 약속인데 이렇게 바꾸면 안된다.
로그를 많이 남기지 않아서 버벅대네.
역시 WAS에 종속적이어서 로컬에서 테스트가 불가능하다 보니 테스트가 힘들다.
WebLogic을 내리고 올리는데 시간도 꽤 걸리고 쉘을 4번 실행시켜야 하는데 자동으로 될거 같은데.
앞의 쉘이 다 실행된 후에 다음 쉘 실행하기, 아니면 로그를 보고 있다가. 실행하면 되잖아.
MQ를 사용한 코드를 다 뜯어 고치고 싶은데 시간이 없어서 그러지를 못했다.
disconnect 부분과 commit만 수정했다.
이 두 부분은 예외가 발생하지도 않는데 try, catch로 감싸져 있다.
그냥 두려다 가독성이 떨어져서 도저히 안되겠다 싶어 리팩토링을 했다.
에러 발생시 보내는 전문이 지금까지 잘못 되어 있었다.
한글이 섞여서 2바이트로 계산되어야 하는 부분이 고려되어 있지 않았다.
이때까지 연계한 수많은 인터페이스는 뭐야?
상대방에서 원한 일련번호가 15자리인데 10자리는 숫자로 채워 오는데 나머지 5자리는 공백으로 들어온다.
이쪽 시스템에서는 trim 처리를 해서 10자리만 넘어온다.
응답시 이 일련번호를 그대로 넘겨줘야 하는데 5바이트가 모자랐다.
5자리 공백이 떨어져 나가서 그런거다.
응답시 5자리 공백을 더해 준다.(그냥 아무 생각없이)
나중에 15자리 숫자로 들어오면?
파싱할때 trim 처리를 하지 않고 받은 그대로 넘겨 주기로 한다.
1, 2 업무를 테스트한후 3번 업무를 하는데 우리 쪽에서 준비가 되어 있지 않았다.
준비가 소홀한 표시가 많이 난다. 음....
비동기식으로 MQ 통신시 commit 관련한 부분을 수정했다.
오랜만에 외부 테스트 했음.
짜증도 약간 냈지만 상대방이 괜찮은 사람이라...내가 인덕은 좀 있지. ㅎㅎㅎ
5시에 완료
- 총 소요 기간
EAI에 물려 있어서 테스트를 자동화하기가 힘듬.
고민해 볼 거리임.
테스트 준비가 잘 안되었다.
해당 시스템에 대한 정보도 없어서 하나씩 해보고 데이터베이스도 Sybase라 클라이언트 툴부터 설치했다.
테스트 준비로 오전을 보냄.
테스트를 시작하는데 갑자기 인터페이스가 달라진 것을 발견했다.
상대방에서 추가해 달라고 한 데이터가 제일 마지막에 붙는 것으로 알고 있었는데 앞부분에 붙어서 왔다.
인터페이스가 정해졌는데 지금와서 바꿔달라고 하는 거는 말이 안된다.
스펙대로 하자고 했다. 이거 순서바꾸는게 금방 하는거지만 서로 간의 약속인데 이렇게 바꾸면 안된다.
로그를 많이 남기지 않아서 버벅대네.
역시 WAS에 종속적이어서 로컬에서 테스트가 불가능하다 보니 테스트가 힘들다.
WebLogic을 내리고 올리는데 시간도 꽤 걸리고 쉘을 4번 실행시켜야 하는데 자동으로 될거 같은데.
앞의 쉘이 다 실행된 후에 다음 쉘 실행하기, 아니면 로그를 보고 있다가. 실행하면 되잖아.
MQ를 사용한 코드를 다 뜯어 고치고 싶은데 시간이 없어서 그러지를 못했다.
disconnect 부분과 commit만 수정했다.
이 두 부분은 예외가 발생하지도 않는데 try, catch로 감싸져 있다.
그냥 두려다 가독성이 떨어져서 도저히 안되겠다 싶어 리팩토링을 했다.
에러 발생시 보내는 전문이 지금까지 잘못 되어 있었다.
한글이 섞여서 2바이트로 계산되어야 하는 부분이 고려되어 있지 않았다.
이때까지 연계한 수많은 인터페이스는 뭐야?
상대방에서 원한 일련번호가 15자리인데 10자리는 숫자로 채워 오는데 나머지 5자리는 공백으로 들어온다.
이쪽 시스템에서는 trim 처리를 해서 10자리만 넘어온다.
응답시 이 일련번호를 그대로 넘겨줘야 하는데 5바이트가 모자랐다.
5자리 공백이 떨어져 나가서 그런거다.
응답시 5자리 공백을 더해 준다.(그냥 아무 생각없이)
나중에 15자리 숫자로 들어오면?
파싱할때 trim 처리를 하지 않고 받은 그대로 넘겨 주기로 한다.
1, 2 업무를 테스트한후 3번 업무를 하는데 우리 쪽에서 준비가 되어 있지 않았다.
준비가 소홀한 표시가 많이 난다. 음....
비동기식으로 MQ 통신시 commit 관련한 부분을 수정했다.
오랜만에 외부 테스트 했음.
짜증도 약간 냈지만 상대방이 괜찮은 사람이라...내가 인덕은 좀 있지. ㅎㅎㅎ
5시에 완료
- 총 소요 기간
- 회의(이동, 담당자 기다림, 회의는 1시간도 안했음)
- 소스 받고 간단한 설명 들음
- 팀원에게 소스 분석 시킴, 수정할 곳을 체크해 두라고 함. 그걸 보고 내가 조금 다듬었다.(거의 날로 먹는군)
- 운영자에게 소스 전달, 테스트 일정 잡음.
- 테스트...준비로 오전 소비, 처음 보는 시스템에 적응(의외로 빨리 적응한게 도움이 됨), 응답시 원인 모를 에러로 지체됨.
- 하루 더 테스트를 함.
- JDBC 드라이버에서 날리는 쿼리 확인 - SQL Server
- 日常茶飯事
- 2010. 7. 9. 05:24
JDBC 프로그램에서 쿼리를 날렸을 때 DBCC INPUTBUFFER spid 의 결과
- Profiler를 이용하면 쿼리와 매개변수까지 확인 가능함.
- sqljdbc.jar - 569KB (583,286 바이트) 사용, SQL Server 2005
DriverManager.getConnection()
Connection#setAutoCommit(false)
Statement#executeQuery()
PreparedStatement#executeQuery()
CallableStatement#executeQuery()
SYSPROCESSES에서 program_name을 확인할 수 없음.
- jtds-1.2.2 사용, SQL Server 2005
DriverManager.getConnection()
Connection#setAutoCommit(false)
Statement#executeQuery()
PreparedStatement#executeQuery()
CallableStatement#executeQuery()
SYSPROCESSES에서 program_name이 jTDS로 확인됨.
- 연결된 서버를 통한 4파트 쿼리나 Openquery도 위와 동일함.
모두 Language Event 이다.
- auto commit이 false면 opentran 1, 그러나 락은 안보임
- sqljdbc.jar - 569KB (583,286 바이트) 사용, SQL Server 2000
커넥션 붙는 부분 위와 동일
CallableStatement, PreparedStatement#executeQuery()
- jtds-1.2.2 사용, SQL Server 2000
CallableStatement#executeQuery()
PreparedStatement#executeQuery()
- 2005에서 실행된 쿼리를 볼 때 이 쿼리를 이용한다.
- 연결된 서버
처음 접속한 서버(2005)는 일반적인 커넥션과 동일하고, 연결된 원격의 서버(2000)에서 확인해보면 다음과 같은 특징을 가진다.
sp_who
sysprocesses에서 hostname이 DBS2005 이고 program_name이 Microsoft SQL Server 이다.
dbcc inputbuffer (58)
- Profiler를 이용하면 쿼리와 매개변수까지 확인 가능함.
- sqljdbc.jar - 569KB (583,286 바이트) 사용, SQL Server 2005
DriverManager.getConnection()
Language Event 0 set transaction isolation level read committed set implicit_transactions off
Connection#setAutoCommit(false)
Language Event 0 set implicit_transactions on
Statement#executeQuery()
Language Event 0 SELECT top 2 * FROM TB_SAMPLE
PreparedStatement#executeQuery()
Language Event 0 set transaction isolation level read committed set implicit_transactions off //실행시킨 쿼리문을 확인할 수 없음, getConnection() 호출시 남아 있던 문장
CallableStatement#executeQuery()
//상동
SYSPROCESSES에서 program_name을 확인할 수 없음.
- jtds-1.2.2 사용, SQL Server 2005
DriverManager.getConnection()
Language Event 0 SELECT @@MAX_PRECISION SET TRANSACTION ISOLATION LEVEL READ COMMITTED SET IMPLICIT_TRANSACTIONS OFF SET QUOTED_IDENTIFIER ON SET TEXTSIZE 2147483647
Connection#setAutoCommit(false)
Language Event 0 SET IMPLICIT_TRANSACTIONS ON
Statement#executeQuery()
Language Event 0 SELECT top 2 * FROM TB_SAMPLE
PreparedStatement#executeQuery()
Language Event 0 (@P0 nvarchar(4000))SELECT top 2 * FROM TB_SAMPLE WHERE key = @P0
CallableStatement#executeQuery()
RPC Event 0 DB123.dbo.pr_test;1
SYSPROCESSES에서 program_name이 jTDS로 확인됨.
- 연결된 서버를 통한 4파트 쿼리나 Openquery도 위와 동일함.
모두 Language Event 이다.
- auto commit이 false면 opentran 1, 그러나 락은 안보임
- sqljdbc.jar - 569KB (583,286 바이트) 사용, SQL Server 2000
커넥션 붙는 부분 위와 동일
CallableStatement, PreparedStatement#executeQuery()
RPC Event 0 sp_prepexec;1
- jtds-1.2.2 사용, SQL Server 2000
CallableStatement#executeQuery()
RPC Event 0 PR_test;1
PreparedStatement#executeQuery()
RPC Event 0 sp_execute;1
- 2005에서 실행된 쿼리를 볼 때 이 쿼리를 이용한다.
- 연결된 서버
처음 접속한 서버(2005)는 일반적인 커넥션과 동일하고, 연결된 원격의 서버(2000)에서 확인해보면 다음과 같은 특징을 가진다.
sp_who
spid ecid status loginame hostname blk dbname
58 0 dormant test_user DBS2005 0 NULL
58 0 dormant test_user DBS2005 0 NULL
sysprocesses에서 hostname이 DBS2005 이고 program_name이 Microsoft SQL Server 이다.
dbcc inputbuffer (58)
RPC Event 0 sp_reset_connection;1
- 매번 헷갈리는 문자열 길이
- 日常茶飯事
- 2010. 7. 8. 11:43
- Sybase 클라이언트 설치
- 日常茶飯事
- 2010. 7. 8. 06:53
Typical 또는 Custom 으로 설치
F5, F9, Shift + F9, Ctrl + H
Auto Commit
대소문자 구별
SQL엔진을 MS에서 기술이전했기 때문에 전반적으로 SQL Server와 비슷
Product Name: Sybase Adaptive Server Enterprise Suite
Install Folder: C:\Sybase
Product Features:
Adaptive Server Enterprise
Open Client
DB-Library
jConnect 6.0 for JDBC
jConnect 7.0 for JDBC
ASE ODBC Driver
ADO.NET
Interactive SQL
QPTune
Sybase Central
Adaptive Server Plug-in
SySAM Plug-in
Agent Management Console
SySAM License Utilities
Unified Agent
ASE Agent Plug-in
Disk Space Information (for Installation Target): Required: 671,399,558 bytes Available: 209,855,209,472 bytes
설정한다고 나오는 화면이 있는데 안하고 설치 마침.Install Folder: C:\Sybase
Product Features:
Adaptive Server Enterprise
Open Client
DB-Library
jConnect 6.0 for JDBC
jConnect 7.0 for JDBC
ASE ODBC Driver
ADO.NET
Interactive SQL
QPTune
Sybase Central
Adaptive Server Plug-in
SySAM Plug-in
Agent Management Console
SySAM License Utilities
Unified Agent
ASE Agent Plug-in
Disk Space Information (for Installation Target): Required: 671,399,558 bytes Available: 209,855,209,472 bytes
F5, F9, Shift + F9, Ctrl + H
Auto Commit
대소문자 구별
SQL엔진을 MS에서 기술이전했기 때문에 전반적으로 SQL Server와 비슷
- [야구기록지] 2010-07-04
- 野生野死
- 2010. 7. 5. 17:03
2회말 좌익수 앞 안타, 김주찬 무리한 수비로 공 빠뜨림. 조인성 3루까지 진루하다 3루에서 태그 아웃(7-5T, 3루의 상황을 보여주고 있음)
8회초 강우 콜드게임이 선언되면서 장원준 완투승
Recent comment