Jump to content
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr ×
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr

RAD 11.2 알렉산드리아 새 기능 발표 웨비나 Q&A


Recommended Posts

[비디오] RAD 11.2 알렉산드리아 새 기능 발표 웨비나

[비디오] RAD 11.2 알렉산드리아 새 기능 발표 웨비나 뒷부분의 Q&A를 번역/정리했습니다.

알아둘 점! 

  • 실시간 질의 응답을 모두 기록한 것입니다. 미리 준비되거나, 공식 문서 답변이 아니므로 일부 잘못 이해되거나 부정확한 내용이 포함되었을 수도 있습니다.
  • 웨비나 당시 채팅창에 문의/건의 사항이 훨씬 더 많았지만, 실시간으로 진행되었기 때문에 언급되지 못한 것들은 여기에 기록되지 않았습니다.
  • 이미 많은 MVP들과 기술 파트너들이 11.2를 받았으며, 채팅 창에 품질 향상에 대해 만족한다는 글 역시 많이 남겨주었지만 여기에 기록하지 않았습니다.

Q. 로드맵 상 다음 버전은 12인가? 어떤 기능이 예상되는가?

마르코 칸투:
공식 로드맵은 공개하지 않지만, 시장 동향을 지속적으로 면밀히 살펴서 반영한다. 특히 플랫폼 변화에 주목하며 반영한다. 또한 C++ 컴파일러를 더 향상하는 것에 주력한다. 지속적인 노력은 RAD 스튜디오의 전반적인 품질과 기능 향상이다. 개발자를 위한 작은 것 하나라도 매우 중요하다. 사실 이런 것이 모여서 큰 차이를 만든다. 혹시 특별히 원하는 기능이 있으면 부담없이 알려주면 최선을 다해서 해법을 제공하겠다.

Q. C++빌더도 델파이처럼 파이썬과 서로 섞어서 사용할 수 있나?

마르코 칸투:
파이썬과 관련하여, C++빌더 부문 역시 향상과 도움말 작업이 많이 되고 있고, 그 속도도 상당히 빠르다. 따라서 C++에서 파이썬 지원과 관련하여 무슨 기능이 구현되었고 무엇이 아직 구현되지 않았는 지를 하나하나 알지 못한다. 하지만 우리의 방식을 말하자면, 델파이를 먼저 목표로 하여 진행하면서, C++에는 어떻게 반영할 수 있는 지를 찾고 반영하는 것이다.

Q. RAD 스튜디오는 이번 마크다운 파일 미리보기가 11.2버전에서 추가되었는데, 애플리케이션을 개발할 때에도 사용할 수 있도록 컴포넌트로 제공되나? 아니면 RAD 스튜디오 IDE 안에서 미리보기 용으로만 들어간건가?

데이비드 밀링턴:
IDE 안에서 미리보기 용으로만 제공된다. 우리는 써드-파티 컴포넌트인 "Delphi HTML Component 라이브러리"를 사용하여 마크다운 파일 미리보기를 구현했다. 우리처럼 앱에 마크다운을 지원하고 싶다면, 우리와 같이 이 컴포넌트를 써드-파티 컴포넌트를 사용하면 된다. 

짐 메키트:
"Delphi HTML Component"는 꽤 좋은 컴포넌트이다.

Q. 11.x 버전이 설치된 곳에 11.2를 설치하면, 겟잇(GetIt)으로 설치한 Parnassus 관련 에러가 난다고 들었다. 11.2로 올릴 때  가장 좋은 절차/방법은 무엇인가?

마르코 칸투:
겟잇(GetIt) 패키지의 경우, 우리가 기대한 것보다 설치가 자연스럽지 않았다. 해당 패키지를 제거(uninstall)하고 다시 설치(install)해야 한다. 11.2 설치자(Installer)는 RAD 스튜디오를 제거(uninstall) 할 때, 레지스트리(registry) 정보와 설치된 써드-파티 패키지를 남겨두어서 11.x에서 11.2로 마이그레이션 할 수 있도록 한다. 그런데 겟잇 패키지에 한해서는 지금 다음과 같은 이슈가 있다. RAD 스튜디오 11.2 설치자(Installer)가 11.x를 제거할 때 겟잇 패키지도 함께 제거하지만, 해당 레지스트리(registry) 정보는 여전히 남겨두기 때문에, IDE는 레지스트리 정보를 통해 해당 겟잇 패키지가 설치되어 있다고 생각하게 된다. 하지만, 실제로는 제거되고 없다. 그래서 에러가 발생한다. 마이그레이션 위저드(Migration Wizard)에서 자동으로 설치하면 좋겠지만, 이런 경우까지 처리하는 것은 간단하지 않으며 잘 되지 않는다. 따라서, 현재 겟잇을 통해 설치한 패키지의 경우 그냥 직접 해당 패키지를 제거(uninstall)하고 다시 설치(install)하는 편히 훨씬 빠를 것이다. 겟잇을 통해 설치한 컴포넌트가 무엇인지 알고 있다면 RAD 스튜디오 11.2 설치를 마친 후, 겟잇 패키지 매니저(GetIt Package Manager)로 가서, Konopka, Parnassus 등 컴포넌트를 다시 설치하라. 그러면 새로 다운로드되고 설치된다. 우리는 버전 업그레이드 시 써드-파티 컴포넌트까지 모든 것을 완전 자동으로 옮겨서 기존과 동일하게 바로 사용할 수 있도록 하는 계획을 가지고 있지만, 아쉽게도, 11.2에는 해당되지 않는다. 

Q. 인텔 안드로이드 지원 계획은?

짐 메키트:
안드로이드용 모바일 인텔 장비는 단종된 것으로 알고 있다. 하지만, 일부 사용자들은 인텔 데스크탑에서 안드로이드를 실행하는 등 여전히 인텔 장비에서 안드로이드를 실행하는 것으로 안다. RAD 스튜디오로 만든 앱이 이런 환경에서 실행하도록 하는 에뮬레이터가 외부에 있다고 알고 있다. 장비 지원과 관련하여 안드로이드 인텔 이외에도 라즈베리파이나 ARM 리눅스에 대한 요청도 있다. 

마르코 칸투:
플랫폼 추가 지원 계획에 대해서는 공식적으로 장담하지 못한다. 하지만, 발표 중에 언급했듯이 현재 우리는 ARM 데스트탑 등 ARM 플랫폼에 대한 추가 지원 지원에 신경쓰고 있다. 현재 우리가 지원하지 않는 ARM 플랫폼은 윈도우 ARM과 리눅스 ARM 이다. 이 두 플랫폼은, 제공한다고 약속 하지는 못하지만, 우리가 적극적으로 고려하고 있는 플랫폼이다. 데스크탑 장비 면에서 애플이 인텔에서 ARM으로 옮겨간 속도는 매우 빨랐다. 그래서 우리에게도 우선 순위가 매우 높았다. 마이크로소프트 역시 ARM 데스스탑을 이미 약속했으므로, 우리의 계획 역시 이 방향에 맞춰져 있다. 인텔 안드로이드의 경우 내 생각에 최근 몇년 동안 거의 사라졌다. 몇년 전까지만 해도 꽤 의미있을 수 있었고, 우리도 예전에 고려한 적이 있긴 하지만, 지금은 상황이 다르다. 또한, 윈도우의 안드로이드 서브시스템(Android Subsystem)에서 ARM 애플리케이션이 상당히 잘 작동하는 것으로 보인다. 인텔에서 제공하는 ARM 에뮬레이션 계층인 인텔 후디니(Houdini) 라이브러리가 있기 때문이다. 따라서 안드로이드 애플리케이션을 직접 데스트탑에서 실행할 수 있다. 데스크탑이 인텔 장비인 경우에도 실행된다. 우리가 공식적으로 지원하지는 않지만, 리눅스 시스템 역시 윈도우에서 모든 것이 잘 작동하는 것 역시 많은 테스트를 통해 확인했다. 짐 매키트가 관련 웨비나를 이미 꽤 많이 진행하기도 했다.  

Q. 클래스의 구조를 트리뷰 형태로 보여주는 스트럭처 창(Structure Window)에서 모든 노드(node)를 한번에 접을 수 있는 단축키가 있나?

데이비드 밀링턴:
단축키가 있는 지는 잘 모르겠다. (만약 아직 없다면) 있으면 좋겠다고 생각된다. 이 기능 요청을 퀄리티 포탈(quality.embarcadero.com)에 남겨주면 좋겠다(퀄리티 포탈 사용법 보기). 좋은 생각이다. 그 단축키가 있는 지는 단축키를 모두 나열한 DocWiki 도움말을 참고하기 바란다.

짐 메키트:
퀄리티 포탈(quality.embarcadero.com)에서 기능 요청을 하는 것이 가장 확실한 방법이다(퀄리티 포탈 사용법 보기).  우리는 아이디어를 공유하는 사용자에게 감사한다.

Q. C++에서 안드로이드 64-bit 플랫폼 지원 계획은?

데이비드 밀링턴:
안타깝지만, 현재는 공유할 만한 뉴스가 없다.

Q. 맥북 프로 M2에서 윈도우를 실행할 수 있나?

짐 메키트:
나는 맥 M1에서 Paralles를 사용하여 그 안에서 윈도우를 잘 실행했다. 마이크로소프트 또는 애플에서 공식 지원을 언급하고 있지는 않는다. 사실 그 회사들 입장에서는 상대 플랫폼에 대한 공식 지원을 언급하기가 애매하기도 하다. 어쨌는 내 경우에는 잘 작동했다. 애플의 M1 맥 컴퓨터에서 실행하는 윈도우 안에서 델파이를 포함하여 적어도 90% 윈도우 애플리케이션이 잘 작동하는 것 같다. 하지만 공식 지원되는 것이 아니라는 점을 알아두기 바란다. 어쩌면 일부 작동이 되지 않는 문제가 있을 가능성도 있다.    

Q. 안드로이드 시뮬레이터는 없나? 마르코 칸투가 안드로이드용 윈도우 서브시스템에 대해 앞에서 언급하긴 했지만, 그 방법 대신, 이번에 추가된 iOS 시뮬레이터와 같이 델파이에서 직접 안드로이드 시뮬레이터를 실행하면 더 좋지 않을까?

마르코 칸투:
우리는 안드로이드 시뮬레이터를 지원하지 않는다. 처음부터 안드로이드 시뮬레이터는 애플에서 제공하는 iOS 시뮬레이터에 비해 사용성이 그다지 좋지 않았다. 구글에서 안드로이드 시뮬레이터를 향상시키려고 몇번에 걸쳐 노력했고 여러가지 다른 결과들이 있었다. 예전에 나는 블루스택스(BlueStacks)나 윈도우 서브시스템 등 몇가지 플랫폼 에뮬레이터도 사용해 보기도 했다. 이와 같이 뭔가를 윈도우 인텔 컴퓨터 안에서 직접 로컬로 실행하려고 해 봤지만, 애플에서 제공하는 iOS 시뮬레이터 만큼 잘 잘동하지 않았다. 솔직히 나는 애플 추종자가 아니지만, 개발자 생산성과 사용성을 고려할 때 시뮬레이터에서는 애플이 현격하게 더 뛰어나다고 본다. 

Q. 소스 코드 컨트롤과 IDE 통합 관련 질문이다. 팀 파운데이션 서버(TFS), 깃허브(Github) 등 IDE에서 통합할 수 있는 옵션은 무엇인가?

데이비드 밀링턴:
현재 깃(Git), 서브버전(Subversion), 머큐리얼(Mercurial)이 RAD 스튜디오 IDE 안에서 바로 지원하는 소스 코드 컨트롤 시스템이다. 깃(Git)으로 연결하면 깃허브(Github), 깃랩(Gitlab)에 접근할 수 있다. 팀 파운데이션 서버(TFS)는 IDE 안에서 바로 지원하지 않는다. 하지만, RAD 스튜디오의 소스 컨트롤 API 역시 툴스API(Tools API) 중 하나이므로, 툴스 API를 통해 사용자는 원하는 소스 컨트롤 시스템을 IDE 안에 끼워 넣을 수 있다.

Q. JDK 옵션 별 차이에 대한 질문이다. 이클립스 어돕티움(Adoptium), AdoptOpenJDK 중 무엇을 설치하는 것이 가장 좋고 어떻게 작동하나?

마르코 칸투:
모두 다 좋다. 우리는 예전 이름인 어돕티움(Adoptium)으로 더 잘 알려져있는 테무린(Temurin)을 지원하기로 결정했다. 이름이 많아서 때문에 다소 혼란스럽기는 하지만, 기본적으로 Adoptium은 오픈 JDK 컨소시엄이며 마이크로소프트와 구글이 메인 스폰서로 참여하고 있고 기타 큰 회사들이 후원한다. 어돕티움은 모든 것을 이크립스(Eclipse) 안에 넣기로 결정했기 때문에 이제 이클립스의 한 부분이다. 이제 이클립스에 들어가고 나서 이름이 테무린으로 바뀌었다. 하지만, 코드 베이스와 옵션 모두 여전히 동일하다. RAD 스튜디오 11.2에서 지원하는 JDK의 이름이 11.1에 있던 지원 JDK의 이름과 전혀 다르지만, 실제로 동일한 JDK의 새 버전일 뿐이다. 참고로, RAD 스튜디오를 만들 때에는 JDK가 전혀 사용되지 않는다. 따라서 JDK가 있어야 RAD 스튜디오가 실행되는 것은 전혀 아니다. 즉 안드로이드 개발을 하지 않는다면 JDK는 없어도 된다. 하지만, 안드로이드 개발을 한다면, 다음 사항을 이해해야 한다. 안드로이드 SDK 등 자바(Java)로 만들어진 많은 도구들은 JDK가 필요하다. RAD 스튜디오에서 안드로이드 개발을 하면, 코드 사인(Code Signing), 장비로 배포 등의 동작 등을 하기 위해 RAD 스튜디오 IDE는 안드로이드 SDK를 기동한다. 따라서RAD 스튜디오가 설치된 컴퓨터에 JDK가 필요하다. 요컨데, 안드로이드 개발을 한다면, JDK가 필요하고, 그 JDK는 사용하려는 안드로이드 SDK와 호환되는 것이어야 한다. 아쉽지만, 구글은 JDK와 안드로이드 SDK 호환 목록을 공개하지 않는다. 구글은 "뭐든 원하는 것을 사용하면 되는데 우리는 어돕티움(Adoptium) 추천한다"라고 말한다. 구글에서 밀고 있기 때문이다. 어쨌든 우리는 구글의 추천을 따르고 있다.

Q. 멀티-티어 시스템을 개발할 때 델파이 클라이언트와 RAD 서버를 동시에 디버깅하거나 서버와 클라이언트를 오가면서 추적할 수 있나?

마르코 칸투:
RAD 스튜디오 IDE 인스턴스 2개를 따로 실행해야 한다고 생각한다.

데이비드 밀링턴:
각 계층(Tier) 별로 구동하는 IDE를 따로 동시에 실행하여, 두 IDE를 오가면서 동시에 디버깅할 수 있다. 현재 IDE 하나 안에서 RAD 서버와 델파이 클라이언트 즉 서로 다른 별개의 프로세스를 오가면서 추적할 수는 없다. 

Q. RAD 서버 라이트(Lite)의 제한은 무엇인가?

마르코 칸투:
RAD 서버 중 라이트(Lite) 에디션의 주된 제한은 웹서버로 임베디드용 인디(Indy) HTTP 서버가 사용되고, 엔진용 데이터베이스로는 임베디드용 인터베이스가 사용된다는 점이다. 기능 제한을 위한 코드는 따로 없다. 즉, RAD 서버의 뒤를 받쳐주는 데이터베이스가 단일 쓰레드로만 작동한다는 점 그리고 IOCP 등 HTTP 동작의 성능을 빠르게 하는 기능들이 있는 아파치(Apache) 모듈이나 IIS 모듈에 비해 인디(Indy) HTTP 서버는 꽤 쓸 만 하긴 하지만 상대적으로 약하다. 우리 경험 상 사용자 100명에 동시 접속자 10여명 정도가 사용하고, 처리하는 네트워크 트래픽이 엄청나게 크지 않은 상황에서, Lite 에디션은 잘 처리할 것이다. 다시 말하지만 제한하는 코드가 따로 심어져 있지 않으며, 단지 아키텍처로 인해 RAD 서버 라이트는 일반 RAD 서버에 비해 약하다. 일반 RAD 서버의 경우, 사용하는 인터베이스는 모든 기능을 갖춘 버전이라서 다중 연결(connection)과 다중 동작(operation)을 동시에 수행할 수 있고, 여러 장비에 배포, 예를 들어 같은 RAD 서버 모듈을 앞쪽에서 여러 Apache 서버로 배포할 수 있고, 여러 인터베이스 데이터베이스를 뒤쪽에 두어서 부하 분산 (Load Balancing,로드 발란싱)을 구현 할 수 있다. 정리하자면, RAD 서버 Lite 에디션은 dll 등 필요한 모든 것을 실행 파일 하나에서 처리하기 때문에 상대적으로 처리 능력은 일반 에디션에 비해 약하지만, 대신 배포가 너무나 간단하다. 따라서 처리량이 과도하게 많지 않은 경우 RAD 서버 Lite는 매우 좋은 해법이다. (역자주: RAD 서버 라이트에 대한 기고 보기)에 더 잘 정리되어 있음)

Q. 발표 중에 언급되었는데, 다시 확인하자면, DCU 간의 바이너리 호환성(Binary compatibility) 측면에서 11.2와 11.x 사이는 호환되는가? 

마르코 칸투:
매우 매우 특별한 경우가 아니라면, DCU 호환성 문제가 없을 것이다. 우리는 DCU 호환성에 대한 광범위한 테스트를 거쳐 확인했다. DCP, DPL, 런타임 패키지 모두 11.x 끼리 호환된다.

Q. 다음 버전도 11.x인가? 아니면 이 11.2이 마지막 11이고, 앞으로 12가 나오게 되는가?

마르코 칸투:
구체적으로 정해진 바가 없다.

Q. 커뮤니티 에디션(Community Edition) 질문이다. 현재 이 무료 에디션은 10.4 버전이 제공되고 있다. 계속 10.4가 제공되는가?

마르코 칸투:
지금 우리 중에는 그 대답을 할 수 있는 사람이 없다. 12 버전으로 가기 전에 커뮤니티 에디션에 11 버전을 제공한다는 생각인데, 약속하지는 못한다. 제품 개발팀으로서 우리는 커뮤니티 에디션에도 11 버전이 제공되기를 바라지만, 사업 측면 역시 충분히 고려되어야 하기 때문이다.

Q. 도움말(Documentation)이나 헬프(Help) 관련 질문이다. 버그 픽스나 향상된 기능에 대한 내용이 도움말 시스템에 반영되어 있나?

데이비드 밀링턴:
도움말(Documentation)과 헬프(Help)는 같은 시스템이다. 질문의 구체적인 내용을 말해줄 수 있나?

Q. 폼 디자이너(Form Designer)의 High DPI 지원이 이번에 더 향상되었는데, 이와 관련하여 더 이야기 해줄 수 있나?

데이비드 밀링턴:
이 웨비나에서 새 기능들에 대해 많이 이야기를 하고 있긴 하지만, 11.2는 품질에 집중한 버전이며 VCL 폼 디자이너의 품질 향상 작업 역시 많이 반영되었다. 폼 디자이너 관련한 여러 질문이 있는데 상당히 많은 품질 향상이 반영되었다는 답변을 하고 싶다. 이와 별개로 여전히 96 dpi에서 디자인 하는 경우에 대한 질문이 있어서 답변하겠다. 어떻게 하면 이것이 가능한지를 알아보고 있는 중이다. 아직 구현되지는 않았다. VCL은 윈도우 API과 밀접하게 묶여 있다. 윈도우는 특정 자식 창(Child window)의 확대 배율을 부모 창과 다르게 하는 것을 허용하지 않기 때문이다. 현재 상황에서 우리의 권장 사항은 Options 메뉴에서 Form Designer 페이지로 가서 특정 dpi에서 디자인하겠다는 것을 지정하는 것이다. 사용중인 스크린의 dpi와 이 설정이 서로 일치하지 않아도 된다. 사람에 따라 사용하는 스크린은 낮은 dpi, 매우 높은 dpi 등 다양하다. 스크린 배율 설정도 저마다 150%, 200% 등 다를 것이다. 이런 비율 중에서 개발 팀 전체에 적용하기에 가장 좋은 값을 골라서 팀 전체가 똑 같은 설정을 IDE에서 적용하면, 모두 같은 dpi에서 디자인하게 된다. 이렇게 추천하는 이유는 가능한 dpi 변경을 피할 수 있는 환경을 권장하기 때문이다.

Q. RAD 스튜디오의 IDE가 64-bit인가에 대한 질문이다. 사실 32-bit라는 점을 알고 있다. 하지만, 메모리를 더 사용할 수 있는 등 64-bit의 장점을 활용할 수 있도록 변경할 수 있는 영역이 있지 않을까?

데이비드 밀링턴:
이에 대한 질문을 꽤 자주 받는다. 우리가 구체적인 계획을 공유할 수는 없지만. 몇년 전에 4GB 메모리를 모두 사용할 수 있도록 했고, 구성요소 일부 예를 들어 코드 완성(Code Completion) 등을 실행하는 프로세스를 IDE가 실행되는 프로세스의 밖으로 옮겼다. 따라서 코드 완성이 IDE 프로세스 안에서 수백MB 메모리를 가져가지 않게 되었다. 이 구성요소를 델파이 LSP로 옮겨서 얻은 효과이다. 이런 식으로 IDE의 메모리 부담을 줄이는 작업들은 이미 반영되어서 성능이 크게 좋아 졌다. 다른 한편으로, IDE 자체가 어느 시점이 되면 64-bit로 가야한다는 점 역시 우리는 잘 알고 있다. 지금 공개할 수는 없지만, 우리가 시작하고 있는 것은 맞다.

Q. RAD 스튜디오 11.2에 구현된 마크다운(Markdown) 지원은 써드-파티인 Delphi HTML Component를 사용했다고 했는데, RAD 스튜디오를 사용하는 개발자가 자신의 11.2에 Delphi HTML Component를 직접 설치하여 사용하는 것이 기술적으로 가능한가?

데이비드 밀링턴:
물론 가능하다. 우리는 RAD 스튜디오를 만들 때 특별한 RAD 스튜디오 IDE를 사용한다. 따라서 우리가 제공하는 RAD 스튜디오 IDE 즉 사용자가 사용하는 RAD 스튜디오와는 완전히 단절되어 있으므로, 전혀 별개의 IDE에 컴포넌트를 설치하는 것이므로 전혀 관계가 없다. "Delphi HTML Component" 역시 다른 일반 써드-파티와 마찬가지로 늘 하던데로 설치하여 사용하면 된다.

Q. 11.2 IDE의 웰컴 페이지 레이아웃을 보여주었는데, 모듈화된 대시보드 형태인 것으로 보인다. 그 레이아웃(Layout)을 VCL 컴포넌트로도 제공하나?

데이비드 밀링턴:
우리는 VCL을 가지고 웰컴 페이지를 만들었다. 실제로 웰컴 페이지의 레이아웃은 그저 표준 그리드 레이아웃이다. RAD 스튜디오에 꽤 오래 전부터 들어있던 그리드 컨트롤인데, 이름이 정확히 기억나지 않지만, 아마 TGridLayout 비슷한 이름이다. 그리고 웰컴 페이지 안에 있는 창(pane)들은 그저 프레임(frame)이다. 그래서 기본 룩앤필(Look and feel)과 동작이 같다. 상당히 간단하게 구현되었기 때문에, 특별한 컴포넌트가 필요하지 않으며, 이미 있는 기본 VCL만으로 구현할 수 있다.  

Q. 11.2에서 픽스된 버그인지 아닌지가 퀄리티 포탈에 업데이트 되나?

짐 메키트:
DocWiki에 해당 목록이 있다.

마르코 칸투:
퀄리티 포탈에는 내가 직접 반영해야 하는데, 아직 업데이트하지 않았고 내일 업데이트 될 것이다. 800개가 넘는 항목이 이번에 반영되었기 때문이다. 퀄리티포탈은 거의 자동화되어 있지만, 다시 한번 모두 확인하는 절차가 있다. (역자 주: 이 번역을 읽는 시점에는 퀄리티 포탈에도 버그 픽스 정보가 모두 반영됨)

Q. 우리가 제공하는 C++ RTL 소스와 재컴파일 관련 질문에 답변 바란다. 

데이비드 밀링턴:
ReadMe 파일에 소스가 제공된다고 되어 있다. C++ RTL은 상당히 복잡하기 때문에 다시 컴파일하기가 엄청 쉬운 건 아니다. 만약 이슈가 있으면 나(David Millington)에게 이메일(화면에 있다)을 보내면, 언제나 그렇듯이 기쁘게 도와주겠다. 

Q. 애플리케이션을 32-bit에서 64-bit로 옮기기 관련 질문에 답변 바란다.

짐 메키트:
DocWiki에 설명이 있다. 유튜브에 웨비나도 꽤 있다. 마이그레이션 센터에도 자료가 있다.

Q. VCL과 파이어몽키(FMX)를 같은 프로젝트 안에서 섞어 쓸 수 있나? 또는 그렇게 할 계획이 있나?

마르코 칸투:
다소 까다롭다. VCL과 파이어몽키는 사용하는 운영체제 메시지 루프(message loop)가 서로 다르기 때문이다. 기술적으로는 가능하지만, 많은 부분에서 원활하지 않을 수 있다. 두가지를 함께 사용할 수 있도록 하는 것에 대해 우리가 좀 더 알아볼 수는 있지만, 현재 권장 사항은 DLL 바이너리를 사용하는 것이다. 프로젝트 안에 그냥 넣고 싶다면 넣을 수 있다. 작동할 것이다. 하지만 애플리케이션 오브젝트 수준에서 잘못된 동작이 상당히 많을 것이다. 따라서 애플리케이션 로직 수준에서 처리되는 것들 즉 힌트(hint), 단축키(shortcut) 등이 안정적이지 않을 수 있다.

Q. 자신만의 메시지를 직접 만들어서 VCL과 파이어몽키 사이에 주고받을 수 있게 하고 싶다면 그렇게 할 수 있는가? 

마르코 칸투:
물론이다. 모든 것이 가능하다. 하지만 메시지 루프(message loop)를 들여다 보면 상당히 복잡하다는 것을 알 것이다. 표준이 없고, 특별한 사용 사례(use case)가 매우 많다. 모달(modal) 창 등 각각 자신들의 고유한 메시지 루프를 가지고 있기 때문에, 해당 메시지를 각각 고려해야 한다. 몇년 전에 시도가 있었는데, 작동하기는 하지만 품질 몇에서 너무나 문제가 많았기 때문에 중단되었다. 

Q. 특정 버그들 관련 질문에 답변 바란다. 

짐 메키트:
퀄리티 포탈 번호를 알면, DocWiki에 있는 11.2에서 픽스된 버그 목록에서 찾아 보기 바란다. 마르코 칸투 또는 데이비드 밀링턴이 800개가 넘는 버그 픽스를 하나하나 모두 알 수는 없을 거라서 그렇다. (역자 주: 이 번역을 읽는 시점에는 퀄리티 포탈에도 버그 픽스 정보가 모두 반영됨)

Q. 11.x에서 11.2로 IDE를 마이그레이션 하는 가장 좋은 방법은 무엇인가?

짐 메키트:
마이그레이션 도구를 사용하면, IDE의 기존 설정을 확보할 수 있다. 마이그레이션 도구를 실행하면, 2가지 다른 작동 모드(mode)를 선택하는 화면이 나온다. 거기에서 "마이그레이션(Migration)"을 선택해야 한다. 다른 컴퓨터에 있는 RAD 스튜디오 다른 버전으로 기존 설정을 옮기고 싶은 경우인지 아니면 같은 버전 업데이트의 경우인지에 따라 기본 동작이 다르기 때문이다. RAD 스튜디오의 메이저 버전이 같다면 반드시 "마이그레이션(Migration)"을 선택해야 한다. 각 레지스트리 카테고리도 검토할 수도 있다. 또한 레지스트리 뿐만 아니라 구성 파일(configuration file)에 있는 해당 버전에서 공유하는 설정에 대한 추가 정보도 마이그레이션 도구를 통해 세밀하게 다룰 수 있다. 하지만, 사용이 간단하지 않기 때문에 조심해서 진행해야 하고 도움말을 잘 읽고 각 단계를 따라야 한다. 앞에서 언급한 것 처럼 기존에 사용하던 겟잇(GetIt) 패키지들의 경우에는 다시 설치해야 한다. 마이그레이션 도구는 아쉽게도 완전히 믿을 수 있는 도구가 아니다. 하지만, 주요 구성 마이그레이션 정도는 잘 작동한다.

Q. RAD 서버를 사용하고 싶은데 우리 회사에서 사용하는 데이터베이스는 MS-SQL 서버이다. RAD 서버는 데이터베이스롤 인터베이스를 쓴다고 되어 있는데, RAD 서버에서 MS-SQL에 있는 데이터를 연결해서 쓸 방법이 있나? 

마르코 칸투:
업무 데이터를 담은 데이터베이스는 오라클, MS-SQL 등 FireDAC에서 연결할 수 있는 데이터베이스라면 RAD 서버에서 모두 연결하여 사용할 수 있다. RAD 서버의 주된 사용 사례 역시 이런 회사의 데이터베이스를 HTTP 웹 서버를 통해 연결하는 것이다. 웬만한 주요 데이터베이스는 모두 FireDAD에서 지원한다.참고로, RAD 서버에서 반드시 인터베이스 데이터베이스가 필요한 이유는 RAD 서버 자체 관리 (RAD서버 자체의 계정, 권한, 사용 분석 등)을 위한 데이터가 인터베이스에 저장되기 때문이다(사용하는 인터베이스 데이터베이스는 서버 버전일 수도 있고 임베디드 버전일 수도 있다). 이 RAD 자체 기능용 데이터베이스까지도 오라클 등 사용자의 DBMS를 사용하도록 만들 수도 있겠지만, 트리거(trigger)나 로우-레벨 매커니즘 등을 굳이 인터베이스가 아닌 다른 DBMS에 적용하면서까지 RAD 서버 자체 데이터 관리해야 할 필요는 없다고 생각된다. 다시 말하지만, 업무 데이터를 담은 회사의 데이터베이스는 RAD 서버에 연결하여 사용하면 된다. 

Q. 웰컴페이지 안의 창 구성과 배치를 어떻게 변경하나?

데이비드 밀링턴:
웰컴페이지 맨 아래 왼쪽에 편집 버튼이 있다. 이 버튼을 누르면 레이아웃 에디터가 열린다. 이 에디터에는 각 프레임과 배치가 표시되는 데, 위치 이동, 최대화, 최소화, 전체 열과 행의 갯수 변경 등을 편집할 수 있다. 

Q. FireDAC에서 MS-SQL2019를 지원하나?

마르코 칸투:
그렇다. 그 외에도, 이번 버전에서는 이외에 새 ODBC 드라이버 지원 등이 반영되었다.

Q. 직접 만든 라이브러리를 겟잇(GetIt)에 넣는 방법은?

마르코 칸투:
겟잇나우 사이트의 안내 페이지에 패키지를 제출하는 방법이 설명되어 있다. 이제 로컬 패키지 메타데이터 관련 도움말을 제공할 것이다. 이 도움말에 따라 자신에게 맞게 로컬 패키지를 구성할 수 있다. 메타데이터 형식은 서버와 로컬에서 서로 다른 점이 조금 있기 때문에 온라인용 설정 파일을 받고 나서 일부를 변경해야 하긴 하지만 설치와 제거를 위한 동작은 같기 때문에 이 도움말이 공개되면, 자신 만의 로컬 패키지를 생성할 수 있다. 그리고 그 패키지가 다른 사용자들에게도 가치가 있다고 생각한다면 원한다면 우리에게 제출할 수도 있다. 우리는 검토 후에 겟잇(GetIt)에 공개할 것이다. 이와 관련하여, 11.2 만을 위한 것은 아니지만, 우리는 겟잇과 관련된 전체 인프라를 구축했고, 이제 오픈하기 시작했다. 겟잇에 있는 오픈 소스 라이브러리의 경우, 새 업데이트를 바로 반영할 수 있도록 구성 파일을 업데이트하는 매커니즘이다. 즉, 귀하의 패키지가 깃허브에 있고, 그 패키지의 새 버전이 만들어 졌다다면, 해당 JSON 파일을 변경하여, 새 버전이 있고, 해당 다운로드 링크가 어디인지를 지정할 수 있다. 그러면, 겟잇 서버는 자동으로 서버에 있는 패키지 버전을 새 버전에 맞게 바꾸고 업데이트 목록에 추가하여, 사용자들이 알 수 있고, 바로 새 버전으로 옮길 수 있도록 업데이트 절차를 자동화 하였다. 별도로 시간을 조금 들여야 하겠지만, 이제 인프라가 갖추어졌으므로, 몇가지 실험을 거친 후에, 겟잇에 라이브러리를 제공한 사용자들에게 오픈하려고 한다.

Q. C# 어셈블리를 델파이 안으로 임포트할 수 있나?

마르코 칸투:
COM 오브젝트 인터페이스를 통해서만 임포트할 수 있다. 제약이 있는 방식이긴 하지만 그렇게 하면 된다.
그렇지 않으면 RAM Object 등 써드-파티에서 제공하는 델파이와 C#, 닷넷과 호환성 제공 도구를 사용해야 한다.

Q. RAD 스튜디오 IDE는 VCL과 파이어몽키 중 무엇으로 만들었나?

짐 메키트:
RAD 스튜디오 IDE를 만들 때는 VCL이 사용되었다. 파이어몽키는 전혀 사용되지 않았다.

Q. TFileOpenDialog, TFileSaveDialog를 파이어몽키에 구현할 계획이 있나?

짐 메키트:
안드로이드에서 이 기능이 필요하지는 않다고 생각되는데 생각해보겠다. 필요하다면, 퀄리티 포탈에 의견을 올리기 바란다. 사진첩(Camera Roll Picker) 데모가 RAD 스튜디오를 설치할 때 제공되는데, 여기를 보면 안드로이드에서 사진을 가져오는 것을 볼 수 있다. 

마르코 칸투:
최근 발표된 안드로이드 13 버전을 보고 있는데, 장비 안에 있는 파일 읽기 등을 매우 심하게 제약하고 있다. 보안 때문이다.

짐 메키트:
안드로이드를 보면 새 버전으로 갈수록 예전 버전에서 구현한 것들이 새 버전에서 작동하도록 만들기가 점점 더 어려워지는 것 같다.

마르코 칸투:
그건 윈도우에서도 마찬가지이다. 

짐 메키트:
맥OS는 벌써 그렇게 했다. 새 맥OS 버전을 설치할 때 마다, 프로그램을 열면, 그 프로그램에서 읽고 싶은 모든 폴더를 직접 수락하는 과정을 거쳐야 한다.

Q. 게임 개발 관련 질문 몇가지가 올라왔는데 답변 바란다.

짐 메키트:
게임 만을 위해 특별히 무언가를 할 계획은 없다. 게임 개발용으로 훌륭한 라이브러리를 제공하는 써드-파티들이 있다.

Q. 코드 블록 접기 기능을 코드 에디터에 넣을 계획이 있나? 예를 들면, begin-end try-except 등을 접는 기능 등

데이비드 밀링턴:
접기 기능을 더 확장할 계획도 있다.  좋은 질문이다. 추가로 어떤 구문을 접을 수 있게 할 것인가에 대해서 몇주 전에도 토의가 있었는데, 특별히 추가할 것을 정하지 않았다. 어떤 형태의 코드에서 무엇을 어떻게 접고 싶은 지를 이메일로 알려주기 바란다. 우리 계획에 반영할 수 있도록 고려하겠다.

Q. 새 버전을 받는 가장 쉬운 방법은?

데이비드 밀링턴:
설치 파일 다운로드를 제공하는 포털인 my.embarcadero.com을 이용할 수 있다. 평가판은 엠바카데로 웹사이트 www.embarcadero.com에서 받을 수 있다.

Q. 레거시 프로세스 지원 관련 질문이다. SSE2 인스트럭션(instruction) 보다 더 오래된 명령 세트를 지원할 수 있나?

데이비드 밀링턴:
안타깝지만, 오래된 하드웨어를 위한 특별한 작업은 하지는 않는다. 우리가 가는 방향은 새 명령 세트, 현대식 명령 세트를 지원하는 것이다. 지금 받을 질문을 반대로 해서 AVX 또는 AVX2와 같은 새 명령 세트를 지원할 계획인가라고 바꿔본다면, 우리 계획을 공개하지는 않겠지만, 분명히 우리가 가는 방향과 일치한다. 

Q. 디버깅할 때 IDE가 메인 모니터에 묶여 있나?

데이비드 밀링턴:
이제는 그렇지 않다. 10.4 버전 정도 부터는 Options의 Desktop과 Layout 페이지에서 IDE가 언제 이동할 수 있도록 할 것인지 설정할 수 있다. 이미 익숙하겠지만, IDE에는 여러가지 데스크탑 레이아웃이 있다. 일반 작업용과 디버깅용 데스크탑 배치가 다르다. 이 옵션 페이지에서는 어느 창에 IDE가 배치될 것인지, 어떻게 동작할 것인지를 보다 세밀하게 지정할 수 있다. 

짐 메키트:
예전에 IDE 창을 이동할 일이 있었는데, 데이비드가 해준 말이 기억나서 옵션에서 체크를 풀었더니 이동할 수 있었다.

데이비드 밀링턴:
우리는 멀티-모니터 지원을 잘 할 수 있도록 많은 노력을 했다. 지난 몇년 동안 이런 옵션이 많이 늘어났다. 편집 창을 여러 개 띄울 수 있고, 폼 디자이너를 다른 모니터로 빼낼 수 있으며, 이런 것들을 지원하기 위한 많은 품질 향상이 이번을 포함하여 최근 버전들에서 있었다. 우리는 멀티-모니터 지원을 중요하게 생각한다.

짐 메키트:
나는 IDE를 가상 머신에서 실행하는 것을 아주 좋아했었다. 하지만, 이제는 대부분의 경우에서 그렇게 하지 않는다. IDE의 멀티 모니터 지원이 훨씬 좋아져서 모니터 사이를 이동하기가 훨씬 더 쉽기 때문이다. 가상 머신을 여러 모니터에서 사용할 수도 있겠지만, 내 경우에는 그렇다.

Q. 폼(Form) 코드 안에 조건부 컴파일(Conditional Compile)을 넣을 수 있게 할 계획이 있나? 사용자 별로 가끔 화면 배치를 다르게 해야 할 수도 있는데 프레임(Frame)으로는 적합하지 않기 때문이다.

데이비드 밀링턴:
현재 계획 안에 없다. 내 생각에는 IFDEF 코드를 사용하기 보다는 다른 방법이 더 적합할 수도 있다. 무엇을 하려는 것인지를 잘 이해할 수 있도록 이메일을 보내주기 바란다. VCL에서 IFDEV를 코드 안에서 켜거나 끄는 방식을 테스트해 볼 수 있다. 이와 달리, 파이어몽키에서는 마스터 레이아웃과 하위 레이아웃이 있어서 장비에 맞추어서 설정하고 변경할 수 있다. VCL에서는 그렇지 않으므로 이 질문이 나에게는 꽤 흥미롭다. 

마르코 칸투:
일반적인 답변을 하자면, 폼(Form) 상속을 사용하고 프레임을 사용하면 좋다. 이와 같이 상속(inheritance)과 조합(composition)을 시각적인 요소에 적용하는 방식은 VCL 설계 구조에도 적용된 방식이다. 만약 이 방식이 충분하지 않아서 뭔가 다른 것이 필요하다면, 원하는 것을 자세히 알려주기 바란다. 내가 아는 많은 개발자들은 주요 애플리케이션에서 이와 같은 시각적 상속 방식을 사용하여 자신들의 고객 별로 다른 레이아웃을 사용할 수 있도록 하고 있다. 이 방식은 IFDEF보다 훨씬 더  좋을 수 있다. 상속의 힘을 활용할 수 있고, 가상 메소드를 사용할 수도 있고, 심지어 조금 까다롭지만 가상 프로퍼티를 사용할 수도 있다. 주로 이 방식을 사용한다. 하지만, 현재 기능만으로 부족하여 뭔가 다른 것이 필요하다면 알려주기 바란다. 뭔가 새로운 것을 제공할 수 있는 지도 알아보겠다.

Q. 컴포넌트 대부분이 CLang 컴파일러와 호환되지 않아서 질문하는데, 클래식 C++ 컴파일러를 업데이트할 계획이 있나? 

데이비드 밀링턴:
클래식 C++ 컴파일러는 업데이트하고 있지 않으며 CLang에만 집중하고 있다. CLang으로 컴파일을 해도 호환이 되도록 소스 코드 차원에서 많은 작업을 했다. 하지만, 컴포넌트는 특별한 요구사항이 있다. 델파이식 RTTI가 생성되어야 하는데, CLang으로 컴포넌트를 컴파일해서 IDE 안에 넣을 때 중요한 점이 있다. 폼 디자이너에서 이벤트를 만들려고 하면 IDE는 이벤트 헨들러를 생성하는데, 그 동작은 해당 RTTI를 읽어서 직동한다. 최근까지만 해도 CLang은 RTTI를 생성하지 않았다. 따라서 클래식 C++ 컴파일러에 견줄 만한 호환성이 없었다. 아마 그에 대한 질문이라고 생각되는데, 우리는 이와 관련한 품질에 매우 많은 작업을 했다. 아마 11.0 버전 이었을 것이다. 이제 컴포넌트를 CLang 컴파일러에서 사용하는 것은 클래식 C++ 컴파일러와 같은 수준으로 잘 작동한다. 만약 예전에 호환성 문제를 경험했었다면, 11.x 버전에서 다시 해보기를 권한다.

[마무리]
화면에 우리의 이메일 주소가 있다. 이메일을 받으면 후속 조치 하도록 노력하겠다.
또한 더 많은 정보는 아래 링크를 참고하기 바란다.

 

[비디오] RAD 11.2 알렉산드리아 새 기능 발표 웨비나

이 댓글 링크
다른 사이트에 공유하기

이 토의에 참여하세요

지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.

Guest
이 토픽(기고/질문)에 답하기

×   서식있는 텍스트로 붙여넣기.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   이전에 작성한 콘텐츠가 복원되었습니다..   편집창 비우기

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

중요한 정보

이용약관 개인정보보호정책 이용규칙 이 사이트가 더 잘 작동하기 위해 방문자의 컴퓨터에 쿠키가 배치됩니다. 쿠키 설정 변경에서 원하는 설정을 할 수 있습니다. 변경하지 않으면 쿠키를 허용하는 것으로 이해합니다.