레이블이 Go Language인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Go Language인 게시물을 표시합니다. 모든 게시물 표시

2014년 6월 21일 토요일

20140621SAT - Google Drive 클라이언트 프로젝트 작업을 하다가 쓰는 넋두리?

나중에 이 글을 보면 고치고 싶은 부분이 많을 것 같다. 조금 정신없는 상태로 일단 쭉 써내려가는 
글이기 때문에...
---


1.
Go 언어가 나온지 좀 되었고 꽤 괜찮은 언어지만, 의외로 이 언어를 만든 회사인 Google의 App Engine에 서비스용으로 쓰인 사례나, 사용하려는 시도 자체가 적었던 것 같다.

Google API Client 라이브러리도 나온지 3년 이상 되었음에도 여전히 considered as alpha 이고 도움말 역시 Python에 비하면 거의 가뭄 수준이다.

Go 언어나 관련 라이브러리들은 괜찮은데, Google에서 만든 언어임에도 불구하고 GAE에서 사용하기에는 불편했다.

아직은 Python이 수천 수만 배 나은 것 같다. (성능은 제외)

결국 내가 직접 만든 GDrive 써드파티 API는 Python으로 구동되는 것으로...




2.
만들고 있는 프로그램을 cURL을 가지고 테스트하다가, Content-length가 포함되지 않았다는 에러가 발생했다. GAE에서 운영되는 서비스에 HTTP 요청을 보낼 때, POST/PUT 등 Body를 포함하는 요청을 보낼 때는 *반드시* Content-length가 제대로 포함되어야한다고.

Content-length 에러와 관련해서 구글링을 하다 보니 cURL 라이브러리를 이용해서 프로그램을 구현할 때에도 같은 사례가 있었고, 옵션 설정을 해 주어야한다는 답변을 보았다.

cURL '프로그램'도 Content-length를 제대로 안 보낸다. 심지어 옵션 자체가 존재하지 않는 듯.

결론: Python + httplib 로 간단하게 클라이언트 더미를 만들어서 테스트했다.



3.
Google OAuth 인증 관련해서 더 간단하게 사용할 수 있는 라이브러리는 없나 싶다. 음... 그냥 그러하다.



4.
golang에 go get이 있다면 python에는 pip install이 있다



5.
python2와 python3는 문법 차이보다도 라이브러리들이 많이 바뀐 듯.



6.
GAE에서는 백그라운드 처리 작업 등을 위해 Thread보다는 Task Queue를 사용해야...






2014년 5월 6일 화요일

Go 언어로 작성한 프로그램 디버깅


먼저 요약부터:
Go 프로그램 코드를 디버깅하는 데는 GDB를 사용함.
명령 및 옵션은 go build -gcflags "-N -l" 파일이름




이제 본론.

Go 언어(이하 Go)로 작성한 프로그램은 일반적으로 go build 명령으로 컴파일하는데 go 컴파일러 패키지에는 전용 디버거가 없다. (...=_=???)

뭐... 괜찮다. 디버깅은 하는 방법이 따로 있다. GDB를 이용하는 것인데, 방법은 Go Documentation 웹 페이지에 잘 나와 있다. 내용을 핵심만 간단히 요약해서 -gcflags "-N -l" 옵션을 적용하여 go build를 한 후 gdb로 디버깅하면 된다는 것이다.

잘못 알고 쓴 내용을 좀 지웠더니 글이 많이 짧아졌다...


참조한 글:
http://golang.org/doc/gdb