'Programming'에 해당되는 글 91건

  1. 2011.05.24 리눅스 + 이클립스 트러블슈팅 2
  2. 2010.11.14 Trac NonType object 오류
  3. 2010.10.03 Makefile애서 플레그도 제대로 붙여야지....
  4. 2010.10.01 [MFC] Thread안에서는 CSocket 클래스를 사용하면 안된다?! 4
  5. 2010.09.24 Trac + Git 연동를 해서 사용해보자. 6

리눅스 + 이클립스 트러블슈팅


1. (특히) 자동완성시, 이클립스(helios)가 그냥 죽어 버릴때(SIGSEGV)

xulrunner를 1.9 버전을 쓰면 제대로 된다는 것은 익히 알고 있었지만,

이렇게 하면 FF4를 쓰지 못하기 때문에 어쩔수 없이 다른 방법을 찾다가 찾아낸 해결책.

(사실 이 방법이 더 깨끗하기도 하고)

아치의 경우 /usr/share/eclipse/eclipse.ini 파일에 다음 내용을 추가해 준다.

현재 내 eclipse.ini 파일, 강조 표시된 내용을 추가하면 된다.
-startup
plugins/org.eclipse.equinox.launcher_1.1.1.R36x_v20101122_1400.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_1.1.2.R36x_v20101019_1345
-showsplash
org.eclipse.platform
--launcher.defaultAction
openFile
-vmargs
-Xms40m
-Xmx768m
-XX:MaxPermSize=512m
-Dorg.eclipse.swt.browser.UseWebKitGTK=true
-Dorg.eclipse.swt.browser.XULRunnerPath==/usr/lib/xulrunner-2.0/

더 자세한 내용은 다음을 참조.

https://bbs.archlinux.org/viewtopic.php?id=115543

사실 이거 안지는 좀 되었는데,

(국내)인터넷에서도 간간히 안된다는 이야기는 있는데 해결책은 없고......

해서 걍 포스팅 해봄, 오랜만에 포스팅하는것이기도 하고,

ps; 매니패스트 파일 갱신할때 버그가 좀 있네요.

2 에러가 아닌데 에러라고 자꾸 우길때
- xml 파일에 공백 추가후 저장


3 레이아웃 파일을 만들었는데 R.java에 추가가 안될때
- 이클립스 재 시작


4 메뉴 -> 창 -> 환경 설정 -> 일반 -> 키 눌렀을때 다음과 같은 오류가 나온다면,
(또는 메뉴 -> 파일 -> 종료가 비활성화 되었을때
또는 메뉴 -> 창 -> 보기표시 의 하위 메뉴들이 비활성화 되었을때)

오류가 발생했습니다. 자세한 정보는 오류 로그를 참조하십시오.
No context available outside of the request service lifecycle.


WST를 Eclipse에서 Install시  경우 발생한다. (Eclipse Helios Repo를 잡고 설치하면 그러는것 같다? )

확실히 정확한 원인은 모르겠으나, 내가 추측하기전엔 아래 패키지를 설치해 주고 난 이후에 ADT를 설치 해야하는것 같다

(확실히 되는지 안되는지는 아직 확인해 보지 않았, 아치리눅스일 경우 다음과 같이 설치한다)
pacman -S eclipse-emf eclipse-gef eclipse-wtp-wst
5 실행(컴파일)시 다음 오류가 발생할때 (NoClassDefFoundError: 뒤에 프로젝트명이 없을떄)
Exception in thread "main" java.lang.NoClassDefFoundError:
Caused by: java.lang.ClassNotFoundException:
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: .  Program will exit.

1) 창 -> 환경설정 -> Ant -> 런타임 -> Ant 홈(H) 에서 eclipse plugin 디렉토리 선택,

또는 왼쪽 아래에 짱 박혀있는 "기본값 복원" 클릭

만약, 이렇게 해도 별 진전이 없으면, 2번과 같이 해보세요

2) 파일 -> 작업공간 전환 -> 기타

이러면 "작업공간 실행기" 라는 다이얼로그가 뜬다

여기서 "새로운 작업공간"을 만들고 나서 다시 프로젝트를 import해서 사용한다.

6. XML파일을 고치고 실행했는데 에러가 날때

[2011-06-13 18:09:00 - Chapter03Exam01] Error in an XML file: aborting build.

1. res 디렉토리에 생성된 *.out.xml 파일을 모두 지우고, refresh

2. JAVA파일로 포커스를 이동후, 다시 컴파일

Trac NonType object 오류

Trac에서 다음과 같은 Oops 오류가 검출되면....

trac.ini 파일에 설정값이 제대로 안들어간 경우일수도 있으므로 확인해 보자

사용자 삽입 이미지

나 같은 경우에는 다음과 같이 설정되어 있었다

[trac]
repository_sync_per_request = (default)

알고 보니깐 저 값이 잘못되어서 에러가 났던것,

해결방법은 그냥 간단하게 default를 없애면 된다

[trac]
repository_sync_per_request =

이렇게 하면 일단 메인 위키페이지는 정상적으로 뜨는데,

Error with navigation contributor "BrowserModule"

메세지가 위에 뜬다... (스크린샷은 못찍었다......)

그리구 (git) 소스둘러보기 메뉴가 아예 뜨지 않고 타임라인(시간이력) 으로 들어가면 또 웁스 오류가 난다

아놔 다 고친줄 알았더니만 또 이 오류냐 !!!

이 오류 해결법은 다음과 같다....... 그냥 "trac-gitplugin"을 전부 지우고

(아치라면 AUR에 있는 패키지는 쓰지말자 컴파일도 안되는데다가 설치한다 해도 작동도 잘 안된다.)


다음과 같이 재 설치하면 된다

(아치가 아닐경우에는 그냥 easy_install 만 쓰면된다 - 그리고 나는 trac 0.12 임)
# easy_install-2.7 http://github.com/hvr/trac-git-plugin/tarball/master

이제 tracd를 재시작하면 에러 없이 잘 쓸수가 있게 된다. ㅋ

역시 문제가 생기면 다 지우고 재설치가 답인가......씁......

처음에 아치에서 파이썬버전이 막 바뀌면서 생긴 문제인줄 알았는데 그것이 아니라,

어떻게 하다가 설정값이 바껴서 생긴 문제인걸로 파악되었다.

나는 바꾼적이 없었는데... 패키지 깔면서 어떻게 설정값을 건들였거나, 아니면 설정값 정책이 변경된것 같다

이걸 몰라서 방치하다가 한달만에 고쳤다 ㅜ

그런데 trac사용법또 까먹었다는... 다시 좀더 봐야할듯....

Makefile애서 플레그도 제대로 붙여야지....

오랜만에 프로파일링 기능함 써볼라구  Makefile.in 에 -pg 옵션을 추가..

그리고 막 소스를 고치고.... 컴파일해서 실행을.....

그런데! 잘 돌아가는 게.. 라이브러리내부에서 (그러니깐 제가 만든게 아니라는) 에러가..

"state not found" 라니, "connection time out" 이라니...

어째서 제대로 이벤트시그널을 Detect해내지를 못하니... 줘도 못먹냐 ㅠㅠ

뭔가 잘못 고쳤을거야... 라고 생각

그래서 소스를 열심히 살펴봄.. 별 바꾼것도 없는데 안됨....

혹시 몰라서 모듈을 따로 분리한다음에 컴파일 해봤음 - "어 이건 되넹" 뭐가 문제야 하다가..

Makefile.in을 차자보니깐 이게 왠걸.. CFLAG에 옵션이 추가된게 아니라 LIB에 -pg가 추가되어 있음

아놔...... 대체 왜 에러가 안난거야? 링크할때나 에러 안나나....

그래서 CFLAG에 추가하니깐 잘 돌아가네염,

아놔 이게 무슨짓이야 이거때문에 어젯밤이랑 오늘 오전 날렸음


3줄 요약

Makefile에도 신경좀 씁시다.


프로그램이 이상하게 돌아가는게 링킹/컴파일이 제대로 안되서(에러가 안나도!)

그럴수두 있다는

[MFC] Thread안에서는 CSocket 클래스를 사용하면 안된다?!

이메일 보낼일이 있어서 코드 프로젝트에서 SMTP 코드를 배껴서 사용중이 었음

(원래 소스가 그렇게 되어 있었다오 -_- 쓰고 싶어서 쓴게 아님 ㅠㅠ

회사에서는 보통 c&p 디버깅 / 테스트가 일이라... 아 정말 싫다.)

그런데 이넘이 쓰레드 안아서 돌아가야할 필요가 있어서 않에 넣어서 사용하고 있는데

갑자기 뻑뻑 죽어버리는거임 - 아마도 MFC assertion? 에러 였던거 같은데...

디버깅 돌려보니깐 무슨 이름도 모르는 생판첨보는 MFC함수에 브포가 찍혀있고 -_-.....

함수스택타고 위로 올라가보니깐 CSocket.Create() 메소드 - 를 쓴 부분까지 올라오게 되더군여

이거 뭔소린가... 걍 싱글스레드 쓸땐 잘 작동하던 놈이 왜 이짓거리나...

분명히 그냥 socket은 thread-safe하다고 봤었는데 - 이상하다 -

그래서 구글링해 본결과 MFC버그라는 이야기도 있어서... 혹시해어 Create메소드만 고쳤는데

이렇게 하니깐 주소를 잘못참조했네 어쩌구 에러가.... 

그냥 그래서 (하라는대로?) 클래스에서 CSocket 멤버를 빼버리고

죄다  socket, send, recv, close 함수로 대체해버렸음 -_-...

-> MFC에서 Thread안에서 돌아가는 프로그램에서는 CSocket클래스를 쓰지말자??
(라고는 해도 아무리 봐도 그냥 땜질용 처방 같다 ;;; 원래문제는 따로 있을듯)

ps :  이부분에 대해서 좀 아시는 분은 댓글을. 뭐 자원을 더 할당하라 그런이야기는 있던...

Trac + Git 연동를 해서 사용해보자.

미리 알림>
컴퓨터에는 python, sqlite, git가 먼저 설치되어 있고,
git도 해당 경로에 init 해둔 상태 (.git경로가 존재) 이다.

먼저 배포판 버전으로 trac을 설치한다. 나는 아치니깐

(설마 trac설치하려는 사람이 패키지 설치 하나 못하시진 않겠져? 배포판 마다 알아서 설치하십시다~)

yaourt -S trac

그다음 trac에서 git사용이 가능한 플러그인을 설치한다.

아치의 경우는 AUR에 있는 패키지가 문제가 있어서 작동안되므로

(이거때문에 몇시간 삽질한지 모른다! 다른 패키지를 사용하시는 분도 어느정도 참조하시길 ),


메녈 페이지에 있는데로  다음과 같이 패키지를 설치했다.
그다음 trac을 초기화하기 위해서 다음과 같은 명령어를 실행한다

생성할 경로는... "존재하지 않는 새로운" 경로이다. 나같은 경우 걍 귀차나서 프로젝트 경로밑에

trac을 생성하게 만들어 버렸다 귀찮아..

$ trac-admin /생성할/Trac/Path initenv

그럼 다음과 같은 메세지가 출력되면서 먼저 프로젝트 이름일 입력하라고 기다리고,

이후 DB어떤거 할건가 물어본다. 일단 기본적으로 다음과 같이 입력하면 어느정도 알아서 된다.

Trac은 프로젝트 데이타베이스를 초기화하고 준비하기 위해서
당신의 환경에 대해서 몇가지 질문을 할 것입니다.

 프로젝트 이름을 입력해 주십시오.
 이 이름은 페이지의 제목과 설명에서 사용될 것 입니다.

프로젝트 이름 [My Project]> minicube <-프로젝트명을 입력하고 Enter를 누른다.

 사용하고 있는 데이타베이스에 대한 연결 스트링을 지정하십시오.
 기본적으로, 지역 SQLite 데이타베이스가 저장소 디렉토리에 생성됩니다.
 이미 존재하는 PostgreSQL 데이타베이스를 사용하는 것도 가능합니다.
 (정확한 연결 스트링 구문에 대해서는 Trac 문서를 체크하십시오.)

데이타베이스 연결 스트링 [sqlite:db/trac.db]> <-이미 sqlite를 설치했으므로 그냥 Enter

프로젝트 생성 및 초기화
기본 위키 페이지 설치

..... (파이썬 파일 초기화, 기본 위키 설치)

---------------------------------------------------------------------
'minicube' 프로젝트 저장소 생성됨.

이하 생략

여기까지 나왔으면 일단 초기화 설정은 다 된것이다.

이제 git플러그인 설정을 시작해 보자.

trac/conf.d/trac.ini 파일을 열고 다음항목을 수정~!

[trac]
repository_dir = /Your/Git/Path    #ex> /home/lowid/work/src/.git/
repository_sync_per_request = (default)
repository_type = git
[git]
cached_repository = true
persistent_cache = true
shortrev_len = 6
git_bin = /usr/bin/git                   #ex> 절대경로로 적어야 제대로 되는것 같다   

[components] tracext.git.* = enabled

설정파일을 여기 올려두었으므로 편집하기 귀찮으신분은

trac/conf.d/trac.ini로 덮어쓰기하고 프로젝트 경로만 수정해서 사용하시면 되겠다.
(티스토리가 확장명을 변경하는것 같네요.)



이제 마지막으로 tracd를 설정해 보기루 하겠다

원래 아파치랑 연동하는 것이 정석인데....

뭐 어떤가 난 로컬에서 혼자 쓸거라서 그냥 tracd로 할려구 한다....

(아파치랑 연동하는것은 구글에서도 많으므로 따로 여기서 써야할 필요성도 못느끼겠고......)

일단 먼저 암호파일을 만들어야하는데....

1 htpassw를 사용한다. (생략)

2 htdigestd를 사용한다.  (아치의 경우는  AUR에 "apache-tools"라는 패키지를 설치하면 되긴한다.)
3 이도 저도 없다는 분은, 다음 파이썬 스크립트를 사용하세여.

$python trac-digest.py -u username -p passwd
예) python trac-digest.py -u lowid -p ab

이제 /etc/conf.d/tracd.conf 파일을 열자 볼거 별루 없다.

워낙 간단하기도 하고.... 주석도 친절하게 다 써져 있어서....

# configuration for trac standalone daemon
# see http://projects.edgewall.com/trac/wiki/TracStandalone
#

# PORT : port to be used by tracd ( option -p )
# 8080포트말고 다른 포트로 설정하시고 싶은분은 변경하시길
PORT=8080

# AUTH : file to use for authentication
# format :  project,digestfile,realm
# 앞서 작성한 패스워드파일의 경로를 꼭 맞게 적어주셔야 합니다.
# AUTH의 앞, 뒤는 "trac"이 들어가는지 꼭 확인해 주세요.
AUTH=trac,/home/lowid/work/trac/trac_login,trac

# PROJECT : list of project to serve, you can place more than one project.
# PROJECT="/path/to/project1 /path/to/project2"
# trac이 설치된 디렉토리를 정해야한다! 프로젝트경로(소스)가 아님을 유의하세요!
PROJECT="/home/lowid/work/trac"

그다음 시작데몬 리스트에 tracd를 올려놓고 재부팅을하거나, 데몬을 start하면 모든 설정과정이  끝.

이제 http://127.0.0.1:8080 으로 들어가서 프로젝트를 선택하면!

산듯한(?) 메인페이지가 뜨고, 타임라인(시간이력) 에 들어가면 git commit한것도 잘 보일것이다.

사용자 삽입 이미지

마지막 으로 관리자 사용자 계정에 관리자 권한을 부여하자

trac-admin TRAC_PATH permission add UserID TRAC_ADMIN

ex> trac-admin ~/work/trac permission add lowid TRAC_ADMIN

또, 관리자 모드에서 티켓을 삭제하고 싶다면, trac.ini에 다음 항목을 추가하면 된다
[components]
tracopt.ticket.deleter = enabled

ps:
문제가 발생하면 메녈페이지를 찬찬히 몇번 읽어보는것이 굉장한 도움이 되므로 한번씩 보도록 하자.

http://trac.edgewall.org/wiki/TracStandalone
http://trac-hacks.org/wiki/GitPlugin

ps2;
체인지 뷰 업데이트 할때 버그가 있다.
사용자 삽입 이미지
"View changes from" 항목에서 디폴트 값은 "2010년 9월 24일" 이런식으로 되어있는데,

저런식으로 데이터 포멧이 (YYYY년 MM월 DD일)쓰면 에러나므로

"2010-9-24" 이런 포멧으로 써야 정상적으로 업데이트가 잘 된다.

ps3;
git 커밋을 보면 이상하게 한글은 다 깨진다 우와아아앙 ㅠㅠ

ps4;
사실 이거 설정한내용은 별거아닌데 (메뉴얼 페이지에 다 있음)....
워낙 어문데서 삽질을 많이해서 포스팅을 할수밖에 없었다... 왠지 또 삽질할까봐서....씁..
특히 내가 삽질한 부분을 약간 보강

ps5;
로그인이 안되는것, 관리자 권한 설정 추가, 포스팅 수정 완료
prev 1 2 3 4 5 ··· 19 next