BLOG main image

분류 전체보기 (321)
free (36)
영화 (85)
드라마 (21)
게임 (28)
만화/책 (34)
개발 (46)
IT (68)
연예 (3)
Visitors up to today!
Today hit, Yesterday hit
TETRIS
rss
2014. 2. 12. 12:14

큰 맘 먹고 svn 에 있던 프로젝트들을 git 으로 모두 이전했다.


새로 받은 cocos2dx 프로젝트들을 빌드하려고 하니까, 오류가 아래와 같은 오류가 발생.



딱 보기에도 sh 스크립트의 개행 문자에 문제가 발생했음을 알 수 있다.


파일을 Notepad++ 에서 열어보니 Dos/Windows format 으로 되어 있어서 Unix 로 변경 후 실행하니 잘 된다.


그런데 문제는 모든 프로젝트가 이런 현상이 발생한다는 것.


원인은 git 에 있는데, git 의 autocrlf 가 기본이 true 로 되어 있어서, 

모든 텍스트 파일이 Windows 환경에서 받아올 때 Windows 형식으로 받는다는 것. 


.sh 파일을 Unix 형식으로 저장해도 git 에서는 파일이 변경되었다고 판단하지 않는다.

(개행 문자가 다른 것은 소스의 변경으로 처리하지 않는 듯)


그렇다고 억지로 뭔가 파일에 변경을 줘서 commit & push 해봤자 소용 없다. 

또 다시 Windows 형식으로 받아올테니까.


그래서, Windows/Unix 파일 형태를 동시에 사용해야 한다면 autocrlf 를 false 로 설정하는 것이 낫다.

git config --global core.autocrlf false


물론, global 설정을 바꾸지 않고, 프로젝트 단위로 바꿀 수도 있다.

내 경우에는 git 에 올라가 있는 프로젝트 중 cocos2dx 관련된 것이 절반이 넘어서 아예 global 로 설정.


그리고, 기본적으로 파일 포맷은 그냥 내가 직접 관리하고 싶기도 함.


2014. 2. 7. 13:15

회사에서 redmine 과 Microsoft 의 Exchange Server 를 연결할 일이 생겼다.


우선, config/configuration.yml 파일의 E-Mail 설정 기본 sample 은 아래와 같다.


production:

   email_delivery:

     delivery_method: :smtp

     smtp_settings:

       address: "example.com"

       port: 25

       authentication: :login

       domain: 'foo.com'

       user_name: 'myaccount'

       password: 'password'


특별할게 없는 일반적인 smtp 설정


하지만, 특별할게 없다고 설정하는대로 잘 작동되면 그건 redmine 이 아니지.


당연히 메일은 오지 않았다. SAD ~


log/production.log 를 살펴보니,


Email delivery error: 504 5.7.4 Unrecognized authentication type


인식할 수 없는 인증 방식이라는거다.


이게 참 미칠 노릇인게...

위에 sample 을 보면 알겠지만,


authentication: :login


이게 인증 방식을 설정하는 전부이다.

로그인 해야 되는데 login 말고 뭘 쓰란말야-_-;


그래서 혹시나 보안 설정의 문제인가 싶어서, configuration.yml 에다가 아래 문장을 추가해봤다.


tls: true


그랬더니!


오라는 메일은 안오고...

Email delivery error: SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: unknown protocol


에러가 더 길어졌다. -_-


혹시나 해서,

enable_starttls_auto: true 설정도 추가...!


Email delivery error: 535 5.7.3 Authentication unsuccessful


다시 짧아지긴 했지만...

역시나 fail -_-



메일 서버가 대체 무슨 일을 꾸미고 있는건가 싶어서 

telnet 으로 메일 서버 25 번 포트에 접속해서 EHLO 를 날려보니,


EHLO

250-SIZE

250-PIPELINING

250-DSN

250-ENHANCEDSTATUSCODES

250-X-ANONYMOUSTLS

250-AUTH NTLM

250-X-EXPS GSSAPI NTLM

250-8BITMIME

250-BINARYMIME

250-CHUNKINGl

250-XEXCH50

250-XRDST

250 XSHADOW


뭔가 불길한 "AUTH NTLM" 이라는 단어가 보인다.


아아~ 좋지 않아...


ntlm 을 찾아보니, Microsoft 의 Exchange Server 의 인증을 위해 사용되는 방식인데...


redmine 의 인증 방식 기본 값은 login, plain, 그리고 md5 이렇게 밖에 없었다. 


구글링을 한참 해보니까, rubyntlm 이라는게 있는 것이 아닌가?


바로 설치!


# gem install rubyntlm


그리고, :authentication => :ntlm 으로 변경!!!!



기대감을 가지고 실행했지만... 


또 다시 fail 



이렇게 몇 시간 넘게 삽질을 한 후에야 이유를 알았다.


rubyntlm 말고, ruby-ntlm 이 있다 -_-;;;;;


그걸로 하니까 된다.


최종 설정은 아래와 같다.


설치

# gem install ruby-ntlm

# bundle install


설정

- config/environment.rb 

require File.expand_path('../application', __FILE__) 아래 쪽에 

require 'ntlm/smtp'  추가


- config/configuration.yml 

:authentication => :ntlm



아니 이런...


써놓고 보니까 간단하잖아 -_-;


2014. 1. 6. 19:49

exitgames 의 Photon Server 를 분석하고 있는데, 안드로이드 클라이언트를 빌드한 후, 실행하려고 하면 계속 에러를 쏟아내는 현상이 발생했다.


I/dalvikvm(323): Failed resolving Lde/exitgames/demo/realtime/DemoService; interface 42 'Lde/exitgames/client/photon/IPhotonPeerListener;'

W/dalvikvm(323): Link of class 'Lde/exitgames/demo/realtime/DemoService;' failed

W/dalvikvm(323): VFY: unable to find class referenced in signature (Lde/exitgames/demo/realtime/DemoService;)


- 중략 - 


E/AndroidRuntime(323): FATAL EXCEPTION: main

E/AndroidRuntime(323): java.lang.NoClassDefFoundError: de.exitgames.demo.realtime.DemoService

E/AndroidRuntime(323): at de.exitgames.demo.realtime.RealtimeDemo.setMainScreen(RealtimeDemo.java:42)

E/AndroidRuntime(323): at de.exitgames.demo.realtime.RealtimeDemo.onCreate(RealtimeDemo.java:35)


빌드는 되는데, 실행이 안되는 것으로 보아 "라이브러리" 의 참조 문제일 것으로 예상하고, 온갖 설정을 바꿔 봤으나 아무런 소용이 없었다.


가장 많이 언급되는 것은,


ADT 가 v22 가 되면서, Android Private Libraries 가 추가 됐고,




Java Build Path 설정에서, Private Libraries 에 제대로 등록되어 있는지...



그리고, Order and Export 에서 체크가 되어 있는지를 확인해 보라는 것이었다.



이렇게 하면,

프로젝트 폴더의 .classpath 파일 내용이 아래와 같이 된다.




그 후 clean 하고, 다시 build 하면 정상 작동된다고 했는데...


난 몇 시간 동안 계속 실패 -_-


이클립스가 Indigo 라서 반항하는 걸까 싶어서 Kepler 까지 설치해서 해봤으나 소용 없음.


AVD 도 2.2.3 버전의 문제일까 싶어서, 3.x 와 4.x 대로 실험을 해봤으나 소용 없음.


온갖 삽질을 다 한 끝에... 


cocos2d-x 의 빌드가 실패하는 문제로 Android 4.4 (API 19) 를 지워버렸다는 사실이 떠올랐다.

http://tetris.tistory.com/396


그래서 API 와 SDK Build-tools 를 다시 설치했더니... 잘 됨...


덤으로, API 도 4.4 에서 4.4.2 로 올라갔는데, cocos2d-x 빌드 오류 문제 (Unable to execute dex: java.nio.BufferOverflowException) 도 사라졌다.