Search results for 'XE7'

  1. 2015.02.23 -- 파이어몽키 용 그리드 컴포넌트 안내 - FirePower
  2. 2015.02.12 -- [XE7] 안드로이드 블루투스 활성화 조회와 설정하기
  3. 2015.01.23 -- [XE7] 안드로이드 L 스타일팩 다운로드
  4. 2015.01.23 -- [hotfix]iOS 플랫폼에서 TForm.Quality를 HighQuality 설정이 적용되지 않는 문제에 대한 패치
  5. 2015.01.12 -- [hotfix] 안드로이드 5.0(롤리팝) 지원 핫픽스
  6. 2015.01.07 -- [XE7] 안드로이드 4.4 스타일의 대화상자 사용하기
  7. 2015.01.06 -- [앱 소개] 파생 플러스(KOSPI선물 / 해외선물 모의투자 HTS 시스템) - Delphi XE7/안드로이드
  8. 2014.12.30 -- TurboPack - XE7 지원하는 오픈소스 컴포넌트
  9. 2014.12.30 -- [XE7] XML DOM 벤더(MSXML, ADOM, OmniXML) 설정하기
  10. 2014.12.24 -- XE7을 지원하는 써드파티 컴포넌트와 툴 목록(엠바카데로 제공)
  11. 2014.12.10 -- [세미나] 마르코칸투 트레이닝 웨비나(The Ins and Outs of Delphi’s Object Pascal) 안내
  12. 2014.12.09 -- [XE7] Castalia로 델파이 코딩 생산성을 높일 수 있습니다.(XE7사용자 무료)
  13. 2014.12.05 -- 블루투스LE(Bluetooth Low Energy)의 이해
  14. 2014.12.04 -- [Hotfix] 파이어몽키 일부 컴포넌트 크기 조정 시 기본크기로 표시되는 이슈
  15. 2014.12.02 -- [XE7] "Color to gray" 변환 알고리즘을 병렬(Parallel)로 처리하기
  16. 2014.11.10 -- [앱테더링] VCL앱을 모바일앱으로 쉽게 확장할 수 있는 앱테더링 자세히 살펴보기! (7)
  17. 2014.11.03 -- [XE7] 안드로이드 브릿지 파일을 생성할 수 있는 Java2OP.exe을 다운로드 하세요.
  18. 2014.10.21 -- [XE7] OSX 요세미티 스타일 팩 다운로드 안내
  19. 2014.09.22 -- XE7으로 연동한 모토로라 모토360 (1)
  20. 2014.09.22 -- 병렬(패러럴) 컴퓨팅 라이브러리 소개

파이어몽키 용 그리드 컴포넌트 안내 - FirePower

2015.02.23 13:24

태블릿용 앱에서는 한 화면에 많은 정보(여러 컬럼과 레코드)를 표시해야하는 경우가 있는데요.

이때, 기본 컴포넌트를 이용한다면 리스트뷰에 컬럼을 추가해 구현할 수 있지만, 아무래도 전통적인 그리드 컴포넌트가 필요할 수 있습니다.


오늘은 이미 인포파워 그리드로 유명한 Woll2Woll사의 파이어몽키용 그리드 컴포넌트인 FirePower 컴포넌트를 소개합니다.


제가 트라이얼로 돌려본 주요 기능은 아래와 같습니다.

  • 기본 그리드 컴포넌트(TGrid, TStringGrid) 대비 스크롤 속도가 상당히 빠릅니다.(이 부분은 기본 컴포넌트의 성능도 꾸준히 개선되고 있습니다.)
  • 다양한 스타일(배경색상, 글자색, 글자 스타일 등)을 적용할 수 있습니다.
  • 셀에 버튼, 이미지 등 속성을 지정할 수 있습니다.
  • 컬럼별 색상을 지정할 수 있습니다.
  • 컬럼별 정렬이 가능합니다.

그 외의 기능들은 제품소개 또는 트라이얼로 테스트 할 수 있습니다.

엠바카데로 테크니컬 파트너 페이지에도 등록되어 있습니다.(최신버전을 지원하는 다른 컴포넌트도 알아보시기 바랍니다.)


참고 링크



관련 글


저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 파이어몽키 XE7, 그리드

[XE7] 안드로이드 블루투스 활성화 조회와 설정하기

2015.02.12 09:39

일본인 개발자인 山本隆(야마모토 타카시)의 글을 참고해 안드로이드에서 블루투스 활성여부 조회와 설정하는 내용을 공유합니다.

블루투스 활성여부 조회

uses
  Androidapi.JNI.Bluetooth;

procedure TForm2.Button1Click(Sender: TObject);
var
  Adapter: JBluetoothAdapter;
begin
  Adapter := TJBluetoothAdapter.JavaClass.getDefaultAdapter;
  if Adapter.isEnabled then
    ShowMessage('Bluetooth가 활성화 되어있습니다.')
  else
    ShowMessage('Bluetooth가 활성화 되지 않았습니다.');
end;

블루투스 활성화 설정

uses
  Androidapi.JNI.Bluetooth;

procedure TForm2.Button2Click(Sender: TObject);
var
  Adapter: JBluetoothAdapter;
begin
  Adapter := TJBluetoothAdapter.JavaClass.getDefaultAdapter;
  if Adapter.enable then
    ShowMessage('Bluetooth를 활성화합니다.')
  else
    ShowMessage('사용할 수 없습니다.');
end;

procedure TForm1.Button3Click(Sender: TObject);
var
  Adapter: JBluetoothAdapter;
begin
  Adapter := TJBluetoothAdapter.JavaClass.getDefaultAdapter;
  if Adapter.disable then
    ShowMessage('Bluetooth를 비활성화합니다.')
  else
    ShowMessage('사용할 수 없습니다.');
end;

블루투스 권한이 있는지 확인

uses
  Androidapi.Helpers,
  Androidapi.JNI.GraphicsContentViewText;

procedure TForm2.Button3Click(Sender: TObject);
  function HasPermission(const Permission: string): Boolean;
  begin
    Result := SharedActivityContext.checkCallingOrSelfPermission(StringToJString(Permission)) = TJPackageManager.JavaClass.PERMISSION_GRANTED
  end;

begin
  if HasPermission('android.permission.BLUETOOTH') then
    ShowMessage('Bluetooth 통신 권한이 있습니다.')
  else
    ShowMessage('Bluetooth 통신 권한이 없습니다');

  if HasPermission('android.permission.BLUETOOTH_ADMIN') then
    ShowMessage('Bluetooth 설정 수정 권한이 있습니다.')
  else
    ShowMessage('Bluetooth 설정 수정 권한이 없습니다.');
end;

  • 블루투스 관련 권한(Project Options > Uses Permissions)이 필요합니다.
    • Bluetooth
    • Bluetooth admin

샘플프로그램 다운로드

ProjectSetBluetooth.zip

참고 글


저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 파이어몽키 XE7, 블루투스, 안드로이드

[XE7] 안드로이드 L 스타일팩 다운로드

2015.01.23 11:07

최근 안드로이드 L(롤리팝: 5.0)을 적용한 스마트폰이 나오고 있습니다.


엠바카데로에서도 안드로이드 5.0 지원을 위해 핫픽스를 배포하고 안드로이드 L에 맞는 스타일팩을 배포합니다.


안드로이드 L 스타일팩 활용방법은 Sarina DuPont의 글을 참고하기 바랍니다.

관련 글



저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 파이어몽키 XE7, 롤리팝, 스타일, 안드로이드, 안드로이드 L

[hotfix]iOS 플랫폼에서 TForm.Quality를 HighQuality 설정이 적용되지 않는 문제에 대한 패치

2015.01.23 10:39

FMX에서 타겟플랫폼이 iOS인 경우 TForm.Quality를 HighQuality로 설정시 반영되지 않는 버그에 대한 패치를 배포합니다.


설치방법

패치파일에 포함된 FMX.Platform.iOS.pas 파일을 소스경로(C:\Program Files (x86)\Embarcadero\Studio\15.0\source\fmx)에 복사합니다.




저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 RAD Studio 정보 hotfix, XE7

[hotfix] 안드로이드 5.0(롤리팝) 지원 핫픽스

2015.01.12 09:39

엠바카데로에서 새로운 RAD Studio XE7에서 안드로이드 5.0(롤리팝)문제를 해결하는 핫픽스를 내놓았습니다.


그간, 안드로이드에서는 앱을 구동 시키기 위해 Dalvik VM을 사용했습니다. 하지만 안드로이드의 성능 향상을 위해 안드로이드 4.4 버전 부터 ART라는 새로운 앱 구동 라이브러리를 도입 했고, 안드로이드 5.0에서는 ART가 기본 구동 방식으로 채택되었습니다.(안드로이드 4.4에서는 개발자 옵션으로 ART 적용)


엠바카데로에서는 발빠르게 이에 대응(롤리팝 사용자 0.1 %)했고, 아래 핫픽스를 통해 안드로이드 5.0을 (베타)지원합니다.



저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 RAD Studio 정보 hotfix, XE7, 롤리팝

[XE7] 안드로이드 4.4 스타일의 대화상자 사용하기

2015.01.07 10:04

델파이를 이용해 안드로이드 앱개발 시 기본 대화상자(Dialog)는 안드로이드 2.3 버전으로 표시됩니다.

이 이슈는 엠바카데로 커뮤니티 3.0 사이트에 등록되었으며 David I가 직접 답변을 달고 해결방안을 소개했습니다.


결과 적으로 FMX.Helper.Android.pas 유닛의 GetNativeTheme 함수를 수정해 해결할 수 있습니다.

(변경된 소스 적용은 프로젝트에 수정한 파일을 추가해서 간단히 해결할 수 있네요.)



저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 파이어몽키 XE7, 델파이, 안드로이드

[앱 소개] 파생 플러스(KOSPI선물 / 해외선물 모의투자 HTS 시스템) - Delphi XE7/안드로이드

2015.01.06 16:23


(2015년 첫번째 글입니다. 제가 부끄러움이 많아 블로그에서 정보만 전달했는데요. 은근슬쩍 신년인사드립니다. 블로그에 오시는 분들과 델파이, C++빌더, 앱메소드 개발자 분들 모두모두 새해 복 많이 받으세요.^^)


이번 글에서는 피터주혁(데브기어 테크게시판 별칭)님이 개발하신 파생플러스(KOSPI선물 / 해외선물 모의투자 HTS 시스템) 앱을 소개합니다.


이 앱은 델파이 XE7으로 개발되어 안드로이드 마켓에 공개되었습니다. 아래 링크 방문하셔서 다들 다운로드 한번 받아주세요.(이런말은 본인이하기 어려우니 제가 대신 해드립니다.^^)


HTS 시스템의 경우 이미 PC 기반에서 델파이의 강세를 나타내는 영역인데요. 모바일에서도 다시 강세를 나타내는 신호탄이 되길 바라겠습니다.(기회가 되신다면 iOS 앱 스토어도 올려주시면 더 좋겠습니다^^)


앱에 대한 소개를 좀 더 해드리면(사실, 제가 주식을 할줄 모릅니다...)

국내 선물 및 해외선물(호주달러, 캐나다달러, 유로FX, 파운드선물, 크루드오일, S&P 500)을 거래할수 있는 무료 모의 투자 서비스입니다. 모의투자에서 연습 매매후 실전 매매에서 성공투자 하세요.

이라고 합니다.^^


그리고, 사용자 의견을 보니 아직 많지는 않지만 전반적으로 편리하고, 좋다는 의견이 다수입니다.(평점 4.8)


마지막으로, 앱을 설치하며 보인 사소한 의견 몇가지 드립니다^^

  • 사용권한은 꼭 필요한 항목만 선택하기 바랍니다. - 통화, 카메라등의 권한을 선택하면 해당 기능이 없는 디바이스는 해당 앱을 다운로드 받을 수 없습니다. 꼭 필요한 권한만 선택하시기 바랍니다.
  • 앱의 아이콘은 PNG-투명이미지으로 사용하면 원형아이콘의 흰바탕 없이 더 깔끔하게 표현할 수 있을 것 같습니다.
PS - 
개발한 앱을 마켓에 등록하시거나, 홍보가 필요하시면 제 블로그 또는 데브기어 테크게시판으로 알려주시면 소개해 드리겠습니다. 많이 올려주세요.

관련 글



저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 기타정보 XE7, 델파이, 안드로이드

TurboPack - XE7 지원하는 오픈소스 컴포넌트

2014.12.30 11:32

델파이는 기본 컴포넌트 외에도 외부(써드파트) 컴포넌트를 통해 기능을 손쉽게 확장할 수 있다는 장점이 있습니다.

오늘은 외부 컴포넌트 중 오픈소스로 진행되는 컴포넌트 몇가지를 소개합니다.


오늘 소개할 컴포넌트들은 로마의 델파이 개발자 Kassebaum가 엠바카데로의 (약간의)지원을 받아 최신버전(XE7)으로 업그레이드된 오프소스 컴포넌트 들입니다.(버전정보와 새로운 RTL을 적용했다고 합니다.)

❑ Orpheus

120여개 이상의 VCL 비주얼 컨트롤을 제공합니다. 특수 목정의 에디트, 그리드와 시계등을 제공합니다.

(이미지참조: http://blog.marcocantu.com/blog/2014-december-turbopack-short-video.html)

❑ Virtual Tree

이미 델파이에서 유명한 컴포넌트인데요. 매우 성능이 뛰어난 가상트리뷰 컴포넌트입니다. RAD Studio IDE에도 사용하고 있습니다.

(이미지참조: http://blog.marcocantu.com/blog/2014-december-turbopack-short-video.html)

❑ SynEdit

다양한 언어를 지원하는 구문강조(Syntax Highlight) 컴포넌트입니다. 소스코드 편집을 위한 컴포넌트입니다.

❑ Async professional

많은 것을 포함하고 있는 시리얼 포트 통신 라이브러리입니다.

❑ PowerPDF

시각적인 PDF 문서를 생성하기 위한 컴포넌트입니다.

❑ Abbrevia

압축라이브러리(PKZIP, Microsoft CAB, tar, gzip, bzip2, ...)입니다. 멀티-플랫폼(Win32, Win64, MaxOSX, iOS, Android)를 지원합니다.

❑ LockBox

암호화 라이브러리(AES, DES, 3DES, Blowfish, Twofish, SHA, MD5, ...)입니다. 멀티-플랫폼(Win32, Win64, MaxOSX, iOS, Android)를 지원합니다.

❑ 비디오로 알아보기(마르코칸투)

❑ 다운로드 및 더 알아보기

원작자의 글을 통해 더 자세히 알아보고 다운로드 할 수 있습니다.

1. Orpheus (Win32 and Win64)
2. Abbrevia (Win32, Win64, MacOSX, iOS and Android)
3. Virtual Tree (Win32 and Win64)
4. SynEdit (Win32 and Win64)
5. LockBox (Win32, Win64, MacOSX, iOS and Android)
6. Async Professional (Win32)
7. PowerPDF (Win32 and Win64)


참고 글



저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 Delphi/C++Builder Open Source, Orpheus, SynEdit, Virtual Tree, XE7, 써드파트 컴포넌트, 컴포넌트

[XE7] XML DOM 벤더(MSXML, ADOM, OmniXML) 설정하기

2014.12.30 10:32

RAD Studio XE7에서는 새로운 XML DOM(Document Object Model)인 OmniXML이 추가되어 현재 총 3가지의 XML DOM을 사용할 수 있습니다.

  • MSXML
  • ADOM
  • OmniXML
XML DOM은 문자열로된 XML 데이터를 분석해 프로그래밍에서 사용할 수 있도록 구조화하는 역할을 합니다.
각 XML DOM을 비교하면 아래와 같습니다.(docwiki.embarcadero.com 참고)
구현단위전역 변수 값설명

MSXML

Xml.Win.msxmldom

SMSXML

Windows 전용, RAD Studio의 내장 XML 공급 업체 중 가장 빠름.

크로스 플랫폼에서 XML DOM 벤더를 선택하지 않으면 실행 시 런타임오류 발생.

OmniXML

Xml.omnixmldom

sOmniXmlVendor

크로스 플랫폼. ADOM보다 훨씬 빠르지 만 MSXML보다 약간 느림.

ADOM

Xml.adomxmldom

sAdom4XmlVendor

크로스 플랫폼. RAD Studio의 다른 임베디드 XML 벤더보다 느림.

결과적으로로 보면 윈도우 환경의 VCL 프로젝트에서는 MSXML을 크로스플랫폼용 FMX 프로젝트에서는 OmniXML으로 설정하는 것이 유리합니다.


XML DOM을 설정하는 방법은 TXMLDocument.DomVender를 설정하는 방법과 DefaultDOMVender로 프로젝트 전반적으로 설정하는 방법 두가지가 있습니다. 

❑ TXMLDocument.DOMVender 설정

TXMLDocument 컴포넌트의 DOMVender 속성을 설정해 해당 XML DOM 벤더의 기술을 사용합니다.

❑ DefaultDOMVender로 프로젝트 전반적으로 설정

program Project1;

uses
 System.StartUpCopy,
 FMX.Forms,
 Unit1 in 'Unit1.pas' {Form1},
 Xml.xmldom, XML.OmniXMLDom;
{$R *.res}
begin
 DefaultDOMVendor := sOmniXmlVendor;
 Application.Initialize;
 Application.CreateForm(TForm1, Form1);
 Application.Run;
end.

Xml.xmldom 유닛을 추가하고, DefaultDOMVender에 DOM Vender 전역변수를 설정하면 이후 사용되는 컴포넌트의 DOMVender가 모두 전역으로 설정한 DOMVender로 설정됩니다.

❑ 결론

  • 윈도우 VCL 프로젝트는 MSXML을 선택, 멀티(크로스)플랫폼 FMX 프로젝트에서는 OmniXML을 선택하는 것이 유리
  • XML DOM 벤더 선택은 컴포넌트 속성을 이용하거나, DefaultDOMVender 전역변수로 프로젝트 전반에 설정 가능
    • 활용) XML 분석하는 소스코드를 VCL/FMX에서 재사용할 경우 프로젝트 소스에서 설정하면 플랫폼 별 최적의 성능으로 구현 가능

참고자료



저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 Delphi/C++Builder Delphi, Omni XML, Rad Studio, XE7, XML DOM

XE7을 지원하는 써드파티 컴포넌트와 툴 목록(엠바카데로 제공)

2014.12.24 09:31

RAD Studio(델파이, C++빌더)은 컴포넌트 기반으로 쉽고 빠르게 개발할 수 있다는 장점이 있습니다.

기본 컴포넌트도 막강하지만 외부 컴포넌트(써드파티 컴포넌트)로 더 막강한 컴포넌트 구성할 수 있습니다.


사용가능한 컴포넌트를 세어보지 않았지만 수백가지의 컴포넌트/플러그인/보조툴이 존재하고 이를 공급하는 벤더사들도 60여개 이상입니다.


엠바카데로에서는 RAD Studio XE7을 지원하는 써드파티 파트너의 컴포넌트와 툴을 잘 정리한 페이지가 있어 소개해 드립니다. 

해당 페이지에서 필요한 컴포넌트를 찾아보시고 적용해 보시기 바랍니다.



써드파티 컴포넌트와 툴 목록


저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 Delphi/C++Builder C++빌더, Rad Studio, XE7, 델파이, 써드파티, 컴포넌트

[세미나] 마르코칸투 트레이닝 웨비나(The Ins and Outs of Delphi’s Object Pascal) 안내

2014.12.10 09:18

델파이 구루이자 제품 관리자인 마르코 칸투가 직접 진행하는 오브젝트 파스칼 트레이닝 웨비나가 열립니다.

이 웨비나는 2014년 12월 18일(현지시간 12월 17일) 오전 7시부터 3시간 진행합니다.


웨비나의 주제는 최근 몇년간 델파이 오브젝트 파스칼 언어에 추가된 새로운 기능에 대한 심층적인 내용으로 진행합니다.

세션에서는 2007 이후 도입된 큰 변화부터 모바일 관련 언어확장까지 폭 넓은 주제를 다룹니다.


아젠다

  • The Status of Object Pascal 
  • Classic Features: Interfaces and Class Operations 
  • Records on Steroids with Methods and Operators 
  • Generics and Anonymous Methods 
  • 30-minute Break 
  • Reflection and Attributes 
  • Class and Record Helpers (including Intrinsic Type Helpers) 
  • Memory Management and ARC 
  • Q&A

참가신청

관련 글


저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 교육, 세미나 XE7, 마르코칸투

[XE7] Castalia로 델파이 코딩 생산성을 높일 수 있습니다.(XE7사용자 무료)

2014.12.09 14:27

Castalia 소개

Castalia는 델파이 IDE 기능을 확장할 수 있는 플러그인입니다.

(델파이 XE7 사용자는 http://cc.embarcadero.com/item/29995에서 다운로드 받을 수 있는 프로모션 진행 중입니다.)


Castalia를 설치하면 델파이 메인메뉴에 Castalia 메뉴가 추가됩니다. 그 중 몇가지 기능을 소개해 드립니다.

❑ 코드 템플릿 - 반복 코딩을 줄여줍니다.

매번 반복해서 입력하는 코드를 짧은 문자열로 대치할 수 있습니다.

아래 그림과 같이 "trycf" 입력 후 스페이스바를 누르면 객체를 생성하고 try finally로 객체를 해제하는 코드가 자동으로 입력됩니다. 코드 입력이 아주 간편해 집니다.


Castalia > Template Editor 메뉴를 통해 기존 템플릿을 확인하고 추가할 수 있습니다.

❑ 코드 분석 지원 - 클래스, 메소드 선택하기

수많은 코드에서 클래스와 메소드를 찾기 위해 소스코드를 왔다갔다 하지 않고 상단의 콤보박스를 통해 원하는 클래스와 메소드로 이동할 수 있는 기능을 제공합니다. 이 기능을 이용하면 코드 분석이 더 쉬워집니다.



❑ 기타 - 코드의 통계와 코드리펙토링 기능 제공



추가적인 기능은 제품사이트의 가이드 투어를 통해 추가 확인해 보세요.


참고 글



저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 RAD Studio 정보 Castalia, XE7, 플러그인

블루투스LE(Bluetooth Low Energy)의 이해

2014.12.05 09:42

RAD Studio XE7에서는 블루투스 라이브러와 컴포넌트를 통해 클래식 블루투스와 블루투스LE(BLE) 통신이 편리해 졌습니다.


컴포넌트가 있더라고 기술의 이해가 있어야 사용하고, 프로젝트에 적용을 할 수 있는데요.

마침 델파이 개발자인 곰순이(장정환)님이 블루투스 LE 관련해 이해하기 쉽게 작성한 글이 있어 공유합니다.

앞으로도 좋은 글 많이 기대하겠습니다.

저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 Delphi/C++Builder ble, XE7, 블루투스, 블루투스LE

[Hotfix] 파이어몽키 일부 컴포넌트 크기 조정 시 기본크기로 표시되는 이슈

2014.12.04 18:04

파이어몽키의 일부 컴포넌트 크기 조정 후 실행 시 기본크기로 변경되어 표시되는 이슈

(TViewport3D등이 영향을 받습니다.)



다운로드

* 다운로드 후 IDE 종료 후 실행하면 1분 이내에 완료됩니다.

저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 RAD Studio 정보 hotfix, XE7, XE7 Update1

[XE7] "Color to gray" 변환 알고리즘을 병렬(Parallel)로 처리하기

2014.12.02 11:56

RAD Studio XE7에 새롭게 추가된 주요 기능 중 하나인 병렬(패러럴) 컴퓨팅 라이브러리는 코드를 멀티코어 CPU를 모두 활용해 동작할 수 있도록 구현하는 기술입니다.(오브젝트 파스칼과 C++에서 데스크탑과 모바일에서 사용할 수 있습니다.)


이번 글에서는 병렬 컴퓨팅 라이브러리를 활용하는 예제를 소개합니다.

예제는 컬러이미지를 회색톤으로 변환하는 그래픽 작업에서 병렬 컴퓨팅 라이브러리를 이용해 성능을 개선합니다.

(그래픽 작업과 같이 연산이 많은 작업을 비동기로 멀티코어를 활용한다면 크게 성능개선을 할 수 있습니다.)



아래 코드와 같이 기존 코드를 손쉽게 비동기 작업으로 변환 할 수 있습니다.

기존 코드(No Parallel)

procedure ToGrayPixelsNoParallel(aBitmap: Graphics.TBitmap; cg: TColor2Grayscale = c2gLuminosity);
var w, h: integer;
begin
  if aBitmap <> nil then
    for h := 0 to aBitmap.Height - 1 do
      for w := 0 to aBitmap.Width - 1 do
        aBitmap.Canvas.Pixels[w,h] :=
          ColorToGray(aBitmap.Canvas.Pixels[w,h], cg);
end;

개선된 코드(Parallel 사용)

procedure ToGrayPixelsParallel(aBitmap: Graphics.TBitmap; cg: TColor2Grayscale = c2gLuminosity);
var h: integer;
begin
  if aBitmap <> nil then
    TParallel.For(0, aBitmap.Height-1,
      procedure(h: integer)
      var w: integer;
      begin
        for w := 0 to aBitmap.Width - 1 do
          aBitmap.Canvas.Pixels[w,h] :=
            ColorToGray(aBitmap.Canvas.Pixels[w,h], cg);
      end
    );
end;

관련 글



저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 Delphi/C++Builder vcl, XE7, 병렬 컴퓨팅 라이브러리

[앱테더링] VCL앱을 모바일앱으로 쉽게 확장할 수 있는 앱테더링 자세히 살펴보기!

2014.11.10 18:35

앱테더링(App Tethering)?

앱 테더링은 2개의 개별적인 앱을 서로 연결(테더링)해서 데이터를 주고 받을 수 있는 기술입니다.

앱테더링 기술을 이용해 VCL어플리케이션에서 모바일로 데이터를 제공하면 모바일에서 뷰어만 빠르게 만들어 아주 빠르고 쉽게 모바일앱을 개발할 수 있습니다.

(모바일 앱의 동작을 다시 VCL 앱으로 전송해 사용자의 액션과 모바일 이미지등을 VCL 앱에서 사용하면 더 강력한 시스템으로 탈바꿈할 수 있습니다.)

❑ 앱테더링 컴포넌트

앱 테더링은 TTetheringManager, TTetheringAppProfile 두개의 컴포넌트를 통해 구현할 수 있습니다. 이번글에서는 각 컴포넌트의 자세한 속성과 이벤트에 대해서는 다루지 않습니다. 하지만 아래의 "앱테더링 데모를 통해 기능 살펴보기" 단계를 보시면 주요한 대부분의 속성과 이벤트를 다루고 있기 때문에 충분히 기능을 익힐 수 있습니다.

더 자세히 알고 싶은 기능(속성, 이벤트)는 엠바카데로 기술 도움말(영문)을 통해서 익혀보시기 바랍니다.

아래는 앱테더링 기술이 제공하는 대표적인 속성입니다.

앱테더링의 대표 기능

  • 동일한 서브넷에서 동반자앱 자동탐색 기능(P2P기반으로 별도의 서버 구성이 필요하지 않습니다.)
  • 지정한 IP / 지정한 서브넷(192.168.1.0: 192.168.1.1 ~ 192.168.1.255)에서 탐색 시도
  • 블루투스 기반 앱테더링
  • String / Stream 기반 데이터 전송 기능 제공(Stream이므로 사실상 모든 데이터 전송 가능)
  • 동반자앱에 공개된 Action(명령)을 원격에서 호출하는 Remote Action 기능제공
  • VCL / FMX 2개의 프레임워크 지원
    • VCL 앱을 모바일과 연결해 쉽게 모바일로 전환/확장 할 수 있는 가능성 제공
    • 모바일에서 센서를 연결하면 VCL앱을 IoT로 바로 확장 가능
아래 데모영상을 통해 여러분들의 가능성을 만들어 보시기 바랍니다.

앱테더링 데모를 통해 기능 살펴보기

아래 데모영상은 VCL 어플리케이션을 모바일 앱으로 확장하기 위해 앱테더링 기술의 가장 기본적인 부분을 설명합니다. 

데모영상을 보시고 기능을 익히신 후 앱테더링 기능을 여러분의 프로젝트에 도입하면 어떤 기능을 확장할 수 있을지 생각해 보시고 여러분의 제품에 적용해보시기 바랍니다.


위 데모는 총 9개의 (최소한의 기능의)단계를 통해 진행합니다.

  • 탐색과 접속
    • 1단계, 동일 서브넷에서 접속대상 탐색시도
    • 2단계, 탐색된 테더링 매니저 표시
    • 3단계, 선택 매니저와 연결(페어링), 비밀번호 인증
    • 4단계, 탐색된 테더링 프로필 표시
    • 5단계, 선택 페어링과 연결(페어링)
  • 데이터 송수신
    • 6단계, 문자열 데이터 전송
    • 7단계, 데이터 수신하기(문자열, 스트림)
    • 8단계, 이미지(스트림) 데이터 전송
    • 9단계, 원격지에 정의된 액션(명령) 호출

1, 동일 서브넷에서 접속대상 탐색시도하기

테더링매니저의 DiscoverManagers 메소드를 통해 주변(동일 서브넷)의 동반자 앱을 탐색합니다.

procedure TForm2.btnDiscoverManagerClick(Sender: TObject);
begin
  InitControls;

  LogAndInfo('동일 서브넷에서 접속대상을 찾습니다.');
  // (#1) 주변에서 TetheringManager 발견명령
  TetheringManager.DiscoverManagers;

  // (#2) TetheringAppProfile의 Group 기반으로 자동 연결
//  TetheringManager.AutoConnect(3000);

  //  (#3) 대상을 지정해 접속할 수 있습니다.
//  TetheringManager.DiscoverManagers(3000, 127.0.0.1);
end;

AutoConnect(#2, TetheringAppProfile의 Group이 동일한 대상으로 자동 접속), 접속 대상을 지정(#3)등 다양한 접속 방식을 제공합니다.

2, 발견된 테더링 매니저 정보표시

탐색(DiscoverManagers)이 완료되면 TetheringManager의 OnEndManagersDiscovery 이벤트가 발생하고, ARemoteManagers 파라메터를 통해 탐색된 매니저정보를 제공합니다.

procedure TForm2.TetheringManagerEndManagersDiscovery(const Sender: TObject;
  const ARemoteManagers: TTetheringManagerInfoList);
var
  Info: TTetheringManagerInfo;
begin
  cbxRemoteManagers.Items.Clear;
  for Info in ARemoteManagers do
  begin
    Log(Format('[검색된 매니저]'#13#10#9'%s'#13#10#9'%s'#13#10#9'%s'#13#10#9'%s', [
      Info.ManagerIdentifier,
      Info.ManagerName,
      Info.ManagerText,
      Info.ConnectionString
    ]));
    cbxRemoteManagers.Items.Add(Format('%s(%s)', [Info.ManagerText, Info.ConnectionString]));
  end;
  if cbxRemoteManagers.Items.Count > 0 then
  begin
    cbxRemoteManagers.ItemIndex := 0;
    btnPairManager.Enabled := True;
  end;
  LogAndInfo(Format('접속 대상이 [%d]건 발견되었습니다.', [ARemoteManagers.Count]));
end;

3, 선택한 매니저와 연결(페어링)

접속할 대상 매니저를 선택 후 페어링(PairManager)을 시도합니다.

// 선택한 매니저와 연결
procedure TForm2.btnPairManagerClick(Sender: TObject);
var
  N: Integer;
begin
  if cbxRemoteManagers.ItemIndex < 0 then
    Exit;

  N := cbxRemoteManagers.ItemIndex;
  LogAndInfo(TetheringManager.RemoteManagers[N].ManagerText + ' - 매니저와 페어링 시도');
  TetheringManager.PairManager(TetheringManager.RemoteManagers[N]);
end;

// 매니저 비밀번호 설정
procedure TForm2.TetheringManagerRequestManagerPassword(const Sender: TObject;
  const ARemoteIdentifier: string; var Password: string);
begin
  Password := edtPassword.Text;

  TThread.Synchronize(TThread.CurrentThread,
    procedure begin
      LogAndInfo('[비밀번호 요청] - ' + edtPassword.Text);
    end);
end;

매니저간 페어링 시도 시 서로의 비밀번호를 통해 연결을 허용합니다. 만약 매니저간의 비밀번호가 맞지 않다면, TetheringManager 컴포넌트에서 인증오류(OnAuthErrorFromLocal, OnAuthErrorFromRemote) 이벤트가 발생하고 페어링은 실패합니다.

비밀번호는 TetheringManager.Password 속성을 통해서도 설정할 수 있습니다.

4, 발견된 테더링 프로필 정보표시

매니저간 연결(페어링)되면 TetheringManager의 OnEndProfilesDiscovery 이벤트가 발생되며 ARemoteprofiles 파라메터를 통해 탐색된 프로필 정보를 제공합니다.

// 프로필 발견완료 이벤트
procedure TForm2.TetheringManagerEndProfilesDiscovery(const Sender: TObject;
  const ARemoteProfiles: TTetheringProfileInfoList);
var
  Info: TTetheringProfileInfo;
begin
//  Log('TetheringManagerEndProfilesDiscovery');
  cbxRemoteProfiles.Items.Clear;
  for Info in ARemoteProfiles do
  begin
    Log(Format('[앱 프로필]'#13#10#9'%s'#13#10#9'%s'#13#10#9'%s'#13#10#9'%s'#13#10#9'%s', [
      Info.ManagerIdentifier,
      Info.ProfileIdentifier,
      info.ProfileText,
      Info.ProfileGroup,
      Info.ProfileType

    ]));
    cbxRemoteProfiles.Items.Add(Format('%s(%s)', [Info.ProfileText, Info.ProfileType]));
  end;
  if cbxRemoteProfiles.Items.Count > 0 then
  begin
    cbxRemoteProfiles.ItemIndex := 0;
    btnPairProfile.Enabled := True;
  end;
  LogAndInfo(Format('대상 프로필 [%d]건 발견되었습니다.', [ARemoteProfiles.Count]));
end;

5, 선택한 프로필과 연결

접속할 대상 프로필을 선택(TetheringAppProfile.Connect)하여 페어링 시도합니다.

// 선택한 프로필과 연결
procedure TForm2.btnPairProfileClick(Sender: TObject);
var
  N: Integer;
begin
  if cbxRemoteProfiles.ItemIndex < 0 then
    Exit;

  N := cbxRemoteProfiles.ItemIndex;
  LogAndInfo(TetheringManager.RemoteProfiles[N].ProfileText + ' - 프로필과 페어링 시도');
  if TetheringAppProfile.Connect(TetheringManager.RemoteProfiles[N]) then
  begin
    LogAndInfo('페어링 성공!!');
    InitControls;
  end;
end;

페어링이 완료되면 데이터 전송, 데이터 수신, 원격 액션 호출등의 작업이 가능해 집니다.

6, 문자열 전달

TetheringAppProfile.SendString 메소드를 통해 명령어, 데이터등의 문자열 데이터를 전달할 수 있습니다.

procedure TForm2.btnSendStrHelloClick(Sender: TObject);
begin
  LogAndInfo('문자열 전달 - 동반자 모바일앱에 Hello 전달');
  TetheringAppProfile.SendString(
    TetheringAppProfile.ConnectedProfiles.First,
    'HELLO',
    '안녕? App Tethering!!!');
end;

procedure TForm2.btnSendStrRSClick(Sender: TObject);
begin
  LogAndInfo('문자열 전달 - 동반자 모바일앱에 ReverseString 전달');
  TetheringAppProfile.SendString(
    TetheringAppProfile.ConnectedProfiles.First,
    'ReverseString',
    '반갑습니다.');
end;

SendString 메소드는 3개의 파라메터를 전달합니다.

  1. 전송할 앱 프로필 객체
  2. 수신 시 리소스의 힌트로 받을 수 있는 설명(Description)
  3. 문자열 데이터 값
ReverseString 문자열 데이터는 상대방(모바일 앱)에서 수신 시 글자를 뒤집어(반갑습니다. > .다니습갑반) 다시 전송하도록 구현되었습니다.

7, 데이터 수신

상대방 동반자앱에서 데이터를 보내면 TetheringAppProfile의 OnResourceReceived 이벤트를 통해 데이터를 수신할 수 있습니다. 문자열 데이터, 이미지 데이터(Stream)등이 모두 OnResourceReceived 이벤트를 통해 수신합니다.

procedure TForm2.TetheringAppProfileResourceReceived(const Sender: TObject; const AResource: TRemoteResource); begin case AResource.ResType of // 데이터(SendString) TRemoteResourceType.Data: begin // ReverseString을 받은 모바일에서 전송한 응답 if AResource.Hint = 'EchoString' then LogAndInfo('EchoString : ' + AResource.Value.AsString) end; // 스트림(SendStream) TRemoteResourceType.Stream: begin // 모바일에서 전송한 이미지 if AResource.Hint = 'FMXIMG' then begin LogAndInfo('이미지 수신'); LoadImage(AResource.Value.AsStream); end; end; end; end;

AResource 파라메터 주요 속성

  • AResource.ResType
    • SendString으로 전송 시 TRemoteResourceType.Data로 SendStream으로 전송 시 TRemoteResourceType.Stream으로 수신
  • AResource.Hint
    • SendString과 SendStream의 Description 파라메터에 입력한 값을 담고 있습니다.
  • AResource.Value
    • SendString과 SendStream의 Value(AString, AStream)에 입력한 값을 담고 있습니다.

8, 데이터 전달 - 이미지전송

이미지, 파일 등의 데이터를 TStream으로 변환해 동반자 앱으로 전달 할 수있습니다.(TStream은 TMemoryStream, TFileStream, TStringStream 등의 부모클래스이므로  다양한 데이터를 전달할 수 있습니다.)

procedure TForm2.btnSendStreamImageClick(Sender: TObject);
var
  Stream: TMemoryStream;
begin
  LogAndInfo('데이터 전달 - 이미지 데이터를 TStream으로 동반자 모바일앱에 전달');
  Stream := TMemoryStream.Create;
  try
    Image1.Picture.Graphic.SaveToStream(Stream);
      TetheringAppProfile.SendStream(TetheringManager.RemoteProfiles.First,
      'VCLIMG',
      Stream
    );
  finally
    Stream.Free;
  end;
  PageControl1.TabIndex := 2;
//  TetheringAppProfile.SendStream()
end;

9, 원격지의 명령 호출(이미지 전송 요청) 

TetheringAppProfile.RunRemoteAction 메소드를 통해 원격지에 공개된 Action을 실행 할 수 있습니다.

// 원격지의 액션 호출
procedure TForm2.btnRunRemoteActionClick(Sender: TObject);
begin
  LogAndInfo('원격 명령 호출 - 원격지(동방자 모바일 앱)의 ActionSendImg 액션 호출');
  TetheringAppProfile.RunRemoteAction(
    TetheringManager.RemoteProfiles.First,
    'ActionSendImg'
  );
  PageControl1.TabIndex := 3;
end;

모바일 앱의 TetheringAppProfile에는 Actions 속성에 아래와 같이 Action이 등록되어 있습니다.

TetheringAppProfile의 Actions에 등록된 Action(명령)은 외부로 공개(IsPublic)할 수 있어 외부에서 RunRemoteAction 메소드를 통해 호출할 수 있습니다.

❑ 위 데모 소스코드 받기

앱테더링 데모 더 살펴보기...

RAD Studio XE7의 샘플 프로젝트에는 아래의 다양한 앱테더링 데모가 있습니다.

  • 앱테더링 샘플 프로젝트 경로

    • C:\Users\Public\Documents\Embarcadero\Studio\15.0\Samples\Object Pascal\RTL\Tethering

❑ BDShoppingList

  • 앱테더링 기술을 이용해 데스크탑의 쇼핑 데이터를 모바일에 제공합니다.

  • 모바일 화면에서 쇼핑항목의 구매를 선택하면 구매명령을 데스크탑으로 전달해 구매처리를 완료합니다.

  • 데스크탑과 모바일은 변경된 데이터를 수시로 동기화합니다.

  • http://docwiki.embarcadero.com/CodeExamples/XE7/en/RTL.BDShoppingList_Sample

❑ DesktopCast

❑ MediaPlayer

❑ PhotoWall


참고 글




    저작자 표시 비영리 동일 조건 변경 허락
    신고
    크리에이티브 커먼즈 라이선스
    Creative Commons License

    험프리.김현수 험프리.김현수 파이어몽키 app tethering, Rad Studio, XE7, 앱테더링

    1. Blog Icon
      좋은남자

      이건 다른 질문인데요.. VCL 폼의 디자인이 깔끔한데.. 어디서 바꾸신 건가요? 데모 소스를 받아서 보니 Project - Option - Application - Appearance 에서 바꾸신 것 같지 않은데요..궁금합니다.

    2. VCL 스타일을 바꾼 것입니다. 해당 스타일은 프리미엄 스타일로 XE7 사용자들은 무료로 다운로드 및 사용할 수 있습니다.
      http://blog.hjf.pe.kr/253

    3. Blog Icon
      황영일

      안녕하세요. 반갑습니다. 앱테더링 데모에서 블루투스 아답터 설정하고 하면 접속대상를 찾지못합니다. 어떻게 하는지 알려주시면 감사 감사

    4. 혹시 페어링 하셨나요? 블루투스틑 페어링 된 상태에서 데이터를 주고 받을 수 있습니다.

    5. Blog Icon
      황영일

      블루투스 페어링도 해보았습니다. 안됩니다.
      network 테더링 하면 잘됩니다.
      아래것이 대한 것이 더궁금해서 몇자적습니다.
      클래식 블루투스및 블루투스 샘플을 테스트 하는데 페어링도 되고 서비스도 맞추었는데 소켓에 send하고 read할때 8바이트 보내면 read시 8바이트 길이가 나오는데 실제 데이터는 null입니다. xe7 샘플소스 그대로라 잘되야 될것 같은데 제가 뭘잘못했는지 이해가 되지 않습니다. 환경적인 요인인지 맨붕입니다. 도와주세요 ㅠㅠ

    6. Blog Icon
      푸름

      안녕하세요?
      항상 좋은 글 감사드립니다
      다름이 아니오라 앱테더링이라는게
      예제에서는 모바일과 윈도우인데
      모바일(안드로이드)-모바일(안드로이드)도 가능한가요?
      기본적으로 하고 싶은것은 다른 모바일의 특정폴더에서 이미지나 동영상을 가져오는걸 하고 싶습니다.

    7. 네 모바일과 모바일간에도 사용 가능합니다.

    [XE7] 안드로이드 브릿지 파일을 생성할 수 있는 Java2OP.exe을 다운로드 하세요.

    2014.11.03 14:20

    RAD Studio XE7(델파이, C++빌더) 구입 하신 분들은 Java2OP 커맨드라인 유틸리티를 다운로드 할 수 있습니다.

    Java2OP(Java to Object Pascal) 커맨드라인 툴은 델파이 안드로이드 어플리케이션에서 자바 라이브러리를 사용할 수 있도록 자바 클래스 파일을 이용해 오브젝트 파스칼(델파이)용 브릿지 파일을 생성할 수 있는 도구입니다.

    이 툴을 이용하면 JAR 파일 또는 자바 클래스 파일을 연동할 수 있는 Object Pascal 브릿지 파일을 생성해 델파이에서 이용할 수 있습니다.


    자세한 사용법은 다음 글의 동영상으로 익힐 수 있습니다.


    참고





    저작자 표시 비영리 동일 조건 변경 허락
    신고
    크리에이티브 커먼즈 라이선스
    Creative Commons License

    험프리.김현수 험프리.김현수 파이어몽키 Delphi, Java2OP, RAD Studio XE7, XE7

    [XE7] OSX 요세미티 스타일 팩 다운로드 안내

    2014.10.21 02:16

    얼마전 진행된 맥에서 새로운 OS인 요세미티 업데이트가 있었습니다.


    엠바카데로에서도 발빠르게 아래와 같이 2가지의 요세미티 스타일을 지원합니다.



    XE7 사용자는 아래 링크에서 다운로드 받으세요.

    요세미티 사용자에게만 요세미티 스타일로 보이고 싶으면 아래의 코드를 사용하세요.

    procedure TForm1.FormCreate(Sender: TObject);
    begin
      {$IFDEF MACOS}
      if (TOSVersion.Major = 10) and (TOSVersion.Minor = 10) then
         Form1.StyleBook := YosemiteStyleBook;
      {$ENDIF}
    end;


    참고




    저작자 표시 비영리 동일 조건 변경 허락
    신고
    크리에이티브 커먼즈 라이선스
    Creative Commons License

    험프리.김현수 험프리.김현수 RAD Studio 정보 Rad Studio, XE7, 요세미티 스타일

    XE7으로 연동한 모토로라 모토360

    2014.09.22 10:29

    엠바카데로 에반젤리스트 팀장인 짐 매키트(Jim McKeeth)가 이번에는 모토로라 모토 360과 연동을 시도해 봤습니다.

    모토 360은 아주 멋진 디자인으로 많은 분들의 관심을 받았는데요. 


    아래와 같이 델파이 IDE에 있는 모습이 아주 멋집니다.

    IDE에서 모토360 개발을 위해서는 멀티 디바이스 디자이너커스텀 뷰를 추가하면 가능합니다.


    자세한 내용은 짐 매키트의 글을 통해 확인해 주세요.



    저작자 표시 비영리 동일 조건 변경 허락
    신고
    크리에이티브 커먼즈 라이선스
    Creative Commons License

    험프리.김현수 험프리.김현수 파이어몽키 XE7, 모토 360

    1. https://github.com/jimmckeeth/FireUI-Devices
      위 깃허브 소스를 통해 모토360과 갤럭시 기어 뷰를 추가하는 패키지를 다운로드 받을 수 있습니다.
      설치 방법은 ReadMe.txt파일과 http://delphi.org/2014/09/hello-moto-360-from-delphi-xe7/를 참고하세요.

    병렬(패러럴) 컴퓨팅 라이브러리 소개

    2014.09.22 10:09

    최근들어 PC는 물론이고 스마트폰에서도 멀티코어 CPU를 이용해 성능을 극대화 시키고 있습니다. RAD Studio는 XE7에서 이러한 멀티코어 CPU를 최대한 활용할 수 있는 패러럴 컴퓨팅 라이브러리를 추가해 멀티코어 CPU를 최대한 활용할 수 있도록 지원하고 있습니다.


    패러럴 컴퓨팅 라이브러리에 대해 알아봅니다.

    병렬(패러럴) 컴퓨팅 러이브러리

    패러럴 컴퓨팅 라이브러리(Parallel Computing Library)란?

    • 멀티코어 CPU를 이용해 최적의 성능을 낼 수 있도록 다수의 CPU에서 병렬(패러럴)로 작업
    • 비동기 연산작업에 사용되어 멀티코어 컴퓨터와 장비 최대한 활용 가능 
    • 기존 코드에 손쉽게 통합하도록 라이브러리 형태로 지원 
    • VCL과 FMX, 델파이와 C++빌더에서 모두 사용 가능


    패러럴 라이브러리를 이용해 고성능이 필요한 작업을 병렬로 처리해 최적의 성능을 발휘하는 코드로 변경할 수 있습니다.

    ❑ 참고자료

    동영상

    패러럴 라이브러리 관련 글

    ❑ 샘플코드

    RAD Studio XE7의 샘플경로에 위의 동영상에서 진행된 "Conways Game of Life"샘플코드가 포함되어 있습니다.

    샘플경로

    • Delphi : C:\Users\Public\Documents\Embarcadero\Studio\15.0\Samples\Object Pascal\RTL\Parallel Library
    • C++ : C:\Users\Public\Documents\Embarcadero\Studio\15.0\Samples\CPP\RTL\Parallel Library


    샘플을 테스트 방법
    1. 샘플 프로젝트 컴파일 및 실행
    2. [Load] 버튼으로 "*.LIF" 파일 선택
    3. [Re-center] 버튼으로 중앙으로 이동(변경을 확인할 수 있도록)
    4. [Start] 버튼으로 실행
    5. Parallel 체크박스로 패러럴이 적용된 성능과 적용되지 않은 성능 비교

    인터넷 상에서는 아래의 경로를 통해 샘플코드 확인 할 수 있습니다.


    ❑ 마무리

    패러럴 라이브러리는 델파이(Object Pascal)과 C++ 빌더를 사용해 VCL과 FMX(멀티 디바이스) 모두에서 병렬 프로그램을 지원하고, 윈도우, 맥, 안드로이드, iOS에서 사용할 수 있습니다.

    단, 무분별하게 사용하면 다른 프로세스에 영향을 주거나 배터리 소모가 빠를 수 있으니 필요한 곳에 적절히 사용하시기 바랍니다.

    관련글



    저작자 표시 비영리 동일 조건 변경 허락
    신고
    크리에이티브 커먼즈 라이선스
    Creative Commons License

    험프리.김현수 험프리.김현수 파이어몽키 XE7, 페러럴