GitHub에서 오픈소스 불러오기

C++ Builder 및 RAD Studio에는 SVN(Subversion) Control 기능이 내장되어 있습니다.


이를 통해 프로젝트 소스의 버전을 관리할 수 있고, 기타 다양한 오픈 소스 프로젝트를 IDE 상에서 바로 활용할 수 있습니다. 특히, 대표적인 오픈 소스 허브인 GitHub의 경우 SVN 인터페이스를 제공하기 때문에 RAD Studio에서도 연계가 가능합니다. 


RAD Studio의 메뉴에서 File>Open From Version Control... 선택하면 아래와 같이 Version Control System으로 부터 소스를 받아올 수 있습니다.



다만, GitHub를 사용할 때는 주의가 필요합니다. Version Control System이 디폴트로 "Git"으로 되어 있기 때문에 그대로 두면 될 것 같지만, 동작하지 않습니다. 대신 GitHub에서도 SVN 인터페이스를 제공하므로 아래와 같이 "Subversion"을 선택하고 OK를 누릅니다.  



그러면 아래와 같은 Checkout 창이 나타나는데, 이곳의 "URL of Repository"에 GitHub에서 제공하는 Subversion Checkout URL을 넣어주면 됩니다.



이후의 절차 및 GitHub에 대한 보다 자세한 내용은 아래 참고 자료에 소개한 델파이 에반젤리스트이신 김현수님의 자료를 참고하시면 큰 도움이 될 것입니다.


참고 자료 1 : Embarcadero Docwiki : Checking Out Copy of Repository


참고 자료 2 : DeveGear 테크 게시판 : RAD Studio IDE 상에서 GitHub 소스코드 이용하기 (김현수님)


'IDE > SVN' 카테고리의 다른 글

GitHub에서 오픈소스 불러오기  (0) 2014.09.17
C++ Builder의 Samples을 최신 버전으로 유지하기  (0) 2014.07.30

새 맥으로 교체 후 아이폰 개발자 인증서 업데이트

개발용 맥을 교체할 경우 개발자 인증서도 업데이트 해야 합니다. 왜냐하면 기존 인증서로는 바뀐 맥을 통해 개발 중인 프로그램을 배포할 수 없기 때문입니다. 


Xcode Organizer로 확인해보면 Provisioning 항목들이 노란색으로 변해있고, 유효한 인증서를 찾을 수 없다는 경고 문구가 보이게 됩니다. 


이를 해결하기 위해서는 지금 현재의 맥을 사용하는 유저가 등록된 개발자라는 정보를 애플 개발자 사이트에서 업데이트 해줘야 합니다.


이때, 단순히 개발자 사이트에서 바로 새 인증서를 만드는 것으로는 부족합니다. 왜냐면, 웹에서 직접 인증서를 업데이트하면 기존에 저장된 내용을 바탕으로 인증서를 만들게 되므로 새로 만든 인증서를 다운받아 설치해봤자 배포가 안되는 것은 마찬가지입니다.


이것은 키체인에서 인증서에서 개발자 정보가 포함되어 있는지를 확인해 보면 알 수 있습니다. 제대로된 인증서가 아니면 인증서에 개발자 정보가 나타나지 않습니다. 개발자 정보가 포함되어 있으면 옆에 하위 항목이 있을 때 생기는 화살표가 보이게 됩니다.


이 문제를 해결하기 위해서는 먼저 바뀐 맥의 키체인에서 인증서를 요청하는 작업을 해야 합니다. 즉, 기존에 개발자로 등록된 사람이 맥을 바꿨음을 먼저 확인받아야 하는 것입니다. 이렇게 받은 인증서는 컴퓨터에 저장되는데 디폴트로 주로 바탕화면 등에 저장됩니다. 


이제 요청받는 인증서를 활용하여 기존 인증서를 업데이트 할 차례입니다. 애플 개발자 사이트에서 아이폰 개발 인증서를 만들면 개발자 인증서를 업로드하라는 창이 나타납니다. 


여기서 방금전 받은 인증서를 업로드 하면, 새 맥에서 개발 및 배포 가능한 인증서를 만들게 됩니다. 이제 키체인을 보면 개발자 정보가 포함된 인증서를 확인할 수 있습니다. 


이제 인증서가 업데이트 되었으므로 개발자 사이트에서 Provisioning 파일을 생성하여 사용하면 되고, Xcode의 Organizer에서 녹색으로 인증된 Provisioning 임을 확인할 수 있습니다.


 

'ETC > Issues' 카테고리의 다른 글

새 맥으로 교체 후 아이폰 개발자 인증서 업데이트  (0) 2014.09.11

Embarcadero Docwiki 안에 있는 유용한 자료들 모음

Docwiki를 사용하다가 분야별로 C++ Builder로 프로그래밍을 하기에 좋은 자료를 모아서 소개합니다.


Docwiki의 경우, 방대한 자료와 친절한 설명으로 MS의 MSDN이 부럽지 않을 정도로 좋은 내용이 많습니다. 다만 평소 자주 활용하면서도, 일종의 도움말 처럼 문제 해결시에는 좋지만 처음부터 프로그래밍을 차근차근 접근해 들어가려고 할 때 활용하기는 좋은 곳이 아니라는 편견을 가지고 있었습니다. 


그러다가 우연히 링크를 타고 이러저리 이동하다가 의외로 전체 자료가 잘 묶여져 있는 진입점을 찾게 되었는데, 이런 자료들은 평소 시간이 있을 때 정독하면 상당히 유용하리라 생각합니다. 아래에 몇 가지 제가 찾은 진입점들을 정리합니다. 


C++Builder Developer's Guide


예전에 C++ Builder 6.0 시절 있었던 자료와 비슷한 형태의 자료인 듯 합니다. C++ Builder로 개발할 수 있는 방대한 분야의 기술들에 대한 소개를 하고 있습니다. 목록만 보아도 굉장하다는 느낌이 들 겁니다. 게다가 옵션에서 C++ Builder 뿐만 아니라 Dephi도 선택할 수 있는 등, 마치 Docwiki 안에 C++ Builder/Delphi 바이블 책이 한 권 들어있는 느낌이라고 볼 수 있겠습니다.


Developing DataSnap Applications


DataSnap 기술 및 모바일 기기를 위한 응용 방법 등 DataSnap과 관련한 자료를 묶어놓은 자료입니다. DataSnap 기술과 관련하여 JSON, REST 등에 대한 자료도 링크되어 있습니다. 뿐만 아니라 링크 맨 밑에는 예제들만 따로 모아 놓은 곳이 있어 실제 개발에 적용하기에도 상당히 좋게 정리되어 있습니다.


RAD Studio API Documentation


RAD Studio를 설치하면 제공하는 Help와 같은 문서를 Embarcadero Docwiki에서 검색할 수 있게하는 Search 창입니다. 여기를 Docwiki를 탐색하면서 찾아 들어가는 방법은 아직 모르겠는데, 데브기어 관리자분께서 친절하게 알려 주셨습니다. 여기서 컴포넌트나 클래스를 검색해서어 나오는 내용들은 RAD Studio Help와 같은 내용이긴 하지만, Help에 없는 내용들도 같이 검색해 주고, 또 같은 도움말이라도 인터페이스가 좀 더 좋은 것 같아서 상황에 따라서는 유용하게 사용할 수 있을 것 같습니다.  


향후, 더 좋은 정보를 찾게 될 때마다 이 포스팅을 업데이트할 수 있도록 하겠습니다.


참고 자료 1 : Embarcadero Product Documentation Wikis


참고 자료 2 : 데브기어 테크 게시판 


'ETC > Link' 카테고리의 다른 글

Embarcadero Docwiki 안에 있는 유용한 자료들 모음  (0) 2014.07.31

처음으로 벤처 회사라는 곳에서 일했던 기억

예전에 부산에 있는 벤처 회사에서 부산 지하철에서 사용하는 문안 편집기를 만들었던 내용입니다.


이 당시가 우리나라로써는 거의 벤처 1세대~1.5세대 시기였던 거 같습니다. 사실 회사도 저희 학교 선배님들께서 창업하신 회사였고, 어떻게 일을 시작하게 되었는지도 지금은 기억이 가물가물하네요. 


지금 기준으로 보자면, 뭐 제대로 아는게 없어서 꼼수로 점철된 돌아가는게 신기한 그런 프로그램이었습니다. 그래도 지금 이런거 하라면 못할 거 같습니다. ㅜㅜ







'Works > Software' 카테고리의 다른 글

처음으로 벤처 회사라는 곳에서 일했던 기억  (0) 2014.07.31

끝내 완성되지 못한 비운의 작품 : Field Robot

석사 시절 연구했던 로봇입니다. 당시에 Field Robot이라고 했었는데, 우리말로는 주로 "견마 로봇" 이라는 말로 번역을 하더군요. 


300kg 무게의 몸체를 견디기 위해 모터 토크 계산과 동력 전달 축의 지름을 계산해야 했었는데, 연구실 사람들이 머리를 싸맸으나 결국 그 당시 연구실에 있던 러시아 친구(Oleg Dmitrochenco)가 계산했던 대로 하니까 잘 동작했었습니다.


역시 수학은 러시아입니다.



'Works > Robot' 카테고리의 다른 글

끝내 완성되지 못한 비운의 작품 : Field Robot  (0) 2014.07.31

C++ Builder의 문자열에 포맷 지정된 실수 문자열 추가하기

C++에는 sprintf()라는 문자열을 만들어주는 함수가 존재했습니다. 보통의 경우 다음과 같이 여러 문자열을 조합해서 하나의 문자열로 만들어 줍니다. 


 char * myString = sprintf("Float Value Formatted : %f", floatValue);


하지만, C++ Builder에서는 거의 쓸 일이 없었습니다. C++에 있는 String 및 C++ Builder에 있는 AnsiString은 기본적으로 operator+ 연산자를 오버로딩해서 문자열을 편리하게 만들어 주기 때문입니다.(Deployment 설정 추가)


 String myString = "Float Value Formatted : " + IntToStr(floatValue);


하지만 프로그래밍을 하다보면, 문자열에 가끔씩 실수의 포맷('서식'이 나은지 생각)을 지정해 주어야 할 때가 생깁니다. 이럴 경우 기존에 있었던 sprintf의 기능이 아쉬울 때가 있었습니다.


예전의 C++ Builder에서는 Delphi에서 유래했을 것으로 보이는 Format() 함수를 사용해서 문제를 해결했었는데(해당 관련 소스는 추후 입력), 최근에 C++ Builder에서 Format() 함수를 쓸려면 Format() 함수 내부에 ARRAYOFCONST라는 요상한 구조체 비스무리한 것을 만들어서 넣어줘야 합니다. 신기한 것은 이 ARRAYOFCONST는 Delphi에서는 필요없고, 오직 C++ Builder에서만 필요합니다.


문제는 기존의 sprintf()라는 녀석을 다시 쓰고 싶지만, 단순히 첫번째 문장처럼 하면 wchar_t 등등의 에러 메시지만 출력합니다. (에러 메시지도 추후 입력)


다행히, C++ Builder(C++ Builder인지, C++인지는 추후 확인)에서는 String 객체 안에 자체적으로 sprintf() 멤버 함수를 가지고 있습니다. 따라서 다음과 같이 하면 약간 어색하긴해도, 이전부터 친숙하게 사용했던 C++ 문법을 그대로 사용하면서 String에 포맷이 지정된 실수를 문자열로 만들어 넣을 수 있습니다.


 String myString = myString.sprintf(L"Float Value Formatted : %2.5f", floatValue);


참고로 위와 같은 경우 C 스타일 문자열 앞에 대문자 'L'을 넣어줘야 합니다. 이것은 기존 C 스타일 문자열을 Unicode String으로 인식되도록 합니다.


<전체적으로 내용 수정 및 검토 필요 함 - 모든 문자열 앞에 L 테스트>


참고자료 : Mobile Tutorial: Using Location Sensors (iOS and Android) 문서 중 Read Location Information (Latitude, Longitude) from the LocationSensor Component 부분


C++ Builder의 Samples을 최신 버전으로 유지하기

C++ Builder를 사용하면서 여러 곳에서 관련 정보를 구할 수 있지만, 그래도 개발자들에게 가장 필요한 것은 결국 C++ Builder를 설치하게 되면 같이 설치되는 다양한 관련 예제들일 것입니다. 이 예제들은 C++ Builder가 설치된 곳에 Samples 라는 폴더에서 찾을 수 있으며, 윈도우 시작 메뉴에서도 접근이 가능합니다.


문제는, 가끔씩 이 예제들이 바로바로 컴파일되지 않고 조금씩 손을 봐줘야 하는 경우도 있고 아무래도 사람들이 작업한 거라 소소한 버그들도 존재한다는 것입니다. 하지만 이러한 예제들의 경우 Embarcadero에서도 문제를 해결하려고 노력하는 모양입니다. 그래서 제공되는 예제들의 최신 버전을 지속적으로 관리하는 것 같습니다.Dockwiki를 찾아보던 중 이러한 예제들을 업데이트하는 방법에 대한 글을 보고 정리합니다. 


예제를 업데이트 하는 방법에는 총 3가지가 있는데, 여기서는 그 중에서 제일 간단한 방법에 대해서만 정리합니다. 나머지 방법들은 아래 참고자료로 가셔서 확인해보시면 되겠습니다.


우선 C++ Builder에서 아무 예제 프로젝트를 엽니다. 

이 상태에서 프로젝트 매니저(Project manager) 창을 보시면 프로젝트명이 나오는데, 이 프로젝트명이 나중에 프로그램명이 됩니다.



이곳을 마우스 오른클릭하면 메뉴가 나타나는데, 여기에서 Subversion>Update>From Repository Root를 선택하면 아래처럼 SVN으로부터 업데이트된 예제 파일을 받게됩니다.



다른 방법을 보면 Subversion Client 프로그램을 이용한 방법도 있는데, 아무래도 이 방법이 C++ Builder IDE 상에서 하는 방식이라 제일 편하고 또 무난한 것 같습니다.


참고자료 : docwiki.embarcadero.com/CodeExamples/XE6/en/Category:Sample 문서 중 Updating Your Samples 부분


'IDE > SVN' 카테고리의 다른 글

GitHub에서 오픈소스 불러오기  (0) 2014.09.17
C++ Builder의 Samples을 최신 버전으로 유지하기  (0) 2014.07.30

모바일 앱에서 '사용자 배포 파일'에 접근하기

C++ Builder로 모바일 앱(App)을 만들 때, 누구나 자신만의 그림이나 노래와 같은 '사용자 배포 파일'들을 앱에 따로 추가하고 싶을 것 입니다. 이렇게 따로 사용자만의 파일을 배포하기 위해서는 반드시 모바일 기기의 샌드박스(SandBox) 영역에 배포해야 합니다. 


샌드박스의 위치는 Android는 ".\assets\internal" 라는 폴더이고, iOS는 "StartUp\Documents" 라는 폴더입니다. 폴더 경로의 경우 대소문자도 구별하기 때문에 C++ Builder IDE 메뉴의 Project>Deployment 설정에서 입력할 때 상당히 신경써줘야 합니다. Deployment 설정과 관련한 부분은 나중에 따로 정리할 수 있도록 하겠습니다. (Deployment 설정 추가)


문제는 이렇게 배포한 파일에 접근하기 위해서는 프로그램 내에서 파일이 존재하는 경로를 찾아와야 하는데, C++ Builder에서는 이 방법이 꽤나 난해합니다. 일단 폴더 경로를 구하기 위해서는 GetDocumentsPath()라는 함수를 호출해야 하는데, 이 함수는 System.Ioutils 헤더 파일의 TPath라는 레코드(record)에 존재합니다. 


따라서, 이 함수를 호출하기 위해서는 먼저 System.IOUtils.hpp라는 이름의 헤더 파일을 include하고, 아래와 같이 상당히 긴 문장의 함수명을 입력해야 합니다. 그나마 다행인 것은 헤더 파일을 include하면 코드 인사이트(Code Insight)가 알아서 함수를 찾아주기 때문에 입력 오류는 줄일 수 있습니다. (그래도 길이가 길어서 한눈에 잘 안들어오는 감이 있습니다. ㅜㅜ)


 #include <System.IOUtils.hpp>


 ----


 String fileName = System::Ioutils::TPath::Combine(System::Ioutils::TPath::GetDcumentsPath(), L"filename");


namespace를 지정하면 그냥 함수만 호출할 수 있을 것 같아서 시도해 봤으나, 그냥 위의 방식으로 하는게 제일 속편합니다. (참고 자료를 보면 Delphi는 좀 더 편하게 호출할 수 있는데, C++ Builder는 왜 그런 식으로 안되는 것일까요?)  


또, 위 문장을 보면 GetDocumentsPath와 함께 Combine 함수도 사용하는데 파일 경로를 구하는 방식이 단순히 String을 더하는 것으로는 동작하지 않기 때문입니다. 실제 모바일 앱을 실행할 때 파일 주소를 확인해보면 약간 암호처럼 숫자로 된 폴더 경로가 나오는데 (추후 경로 결과 추가), 이처럼 단순히 텍스트가 합해지는 형태는 아니기 때문에 String 객체의 operator+ 함수를 사용할 수가 없으므로 Combine이라는 함수를 사용해서 경로와 파일 이름을 취합하게 됩니다. 아무래도, 이 부분은 모바일의 샌드박스 정책과 관련한 부분이라 Embarcadero에서도 어쩔 수 없는 것 같습니다. 


어쨌든 Embarcadero의 공식 문서에서도 계속해서 위와 같은 방법을 사용하고 있는 것으로 보아 당분간은 모바일에서 사용자 배포 파일에 접근하는 방법에는 위 방법보다 더 편한 방법은 없을 듯 합니다. 


참고 자료 : docwiki.embarcadero.com/RADStudio/XE6/en/Creating_an_Android_App 문서 중 Loading and Deploying Files 부분


'FireMonkey' 카테고리의 다른 글

모바일 앱에서 '사용자 배포 파일'에 접근하기  (0) 2014.07.29