본문 바로가기

Delphi/C++Builder

[튜토리얼] RAD 서버를 활용해 데이터를 REST API로 서비스하기 제가 진행한 온라인 세미나-WHAT’S NEW! RAD스튜디오 11 중 세션 2-1의 다시보기, 자료, 따라하기입니다. 샘플 데이터베이스(InterBase-FishFacts)의 데이터를 REST API로 서비스하는 과정을 익히고, 여러분의 데이터에도 적용할 수 있습니다. TEMSDataSetResource 컴포넌트(몇가지 속성 설정만으로): 데이터베이스 데이터를 REST API로 서비스하는 리소스 추가 커스텀 엔드포인트 작성: 이미지 제공과 같은 로직이 포함된 엔드포인트 1. 준비하기 RAD 서버 환경설정(최초 사용 시) 이 따라하기는 RAD 서버를 이용해 REST API를 제공합니다. RAD 서버를 처음 사용하는 경우 "RAD 서버 개발환경 설정하기(준비 중)"를 참고해 설정합니다. 샘플 데이터 파일 .. 더보기
[RX.11] REST 클라이언트 Post 전송 시 Get으로 파라미터 전송 이슈 해결방안 데브기어 포럼에 등록된 이슈 공유합니다. https://welcome.devgear.co.kr/topic/227-delphi-11-rest-client-동작-오류-문의드립니다/ 11.0에서 REST 클라이언트로 post로 요청시, 서버단에서 post로 못받고 get으로 인지를 하는 문제입니다. 개요 : 10.4.2 에서 잘 되던 앱이 11 버전 RestClient POST 방식에서 문제가 되어 여러가지 테스트 해본 결과 POST로 파라미터를 요청을 하면 서버쪽에서 POST로 파라미터 값을 못 받는 현상입니다. 질문하신 내용을 요약하면 "델파이 11에서 POST로 요청 시 GET으로 메소드를 호출되는 이슈가 있다.로 이해됩니다. 질문의 답변에 앞서, 요구사항을 확인하면 "이미지 데이터를 서버로 전달"하는 .. 더보기
[REST API] REST 기반 파일 업로드와 다운로드 구현하기 이 글에서는 REST API 기반 파일 업로드와 다운로드 구현방안을 설명합니다.REST 서버와 REST 클라이언트를 이용해 기능을 구현했습니다. REST 기반 파일 업로드와 다운로드 구현 REST API 구현 시 파일을 제공해야하는 경우가 있습니다. 파일 업로드 시 기존의 데이터와 함께 파일을 업로드할 수도 있고, 별도의 파일 전용 엔드포인트를 추가해 구현할 수 있습니다. 이 두가지 방법 모두에 대해 설명합니다. 이 글에 앞서 다음 내용을 이해하고 있어야 합니다. 미리 선행 학습이 필요합니다.[REST API] REST API 이해하기[REST API][실습] REST API 서버 개발하기(엔드포인트 구현, RAD 서버 이용)[REST API][실습] REST API 클라이언트 개발하기(REST Clie.. 더보기
[오픈소스] TGPuttyLib 소개 - PuTTY 기반 SFTP 클라이언트 오픈소스 기반 SFTP 클라이언트 라이브러리를 소개합니다.TGPuttyLibTGPuttyLib는 독일 델파이 개발자 Tobias Giesen이 운영하는 오픈소스로, PuTTY 기반 SFTP 클라이언트 라이브러리를 제공합니다. 주요 특징으로 알려진 다른 라이브러리 보다 높은 전송속도를 제공한다고 합니다.https://github.com/superflexible/TGPuttyLib 설명에 따르면 다음의 특징이 있습니다.PuTTY 제품군에서 psftp 프로그램을 DLL로 변환한 것개발자는 가장 높은 전송 속도(100 MB/Sec 이상)로 파일 전송 가능(알려진 다른 라이브러리 보다 높은 속도)C++, Delphi, Free Pascal 에서 즉시 사용 가능한 클래스 제공PuTTY Release 0.73 기반2.. 더보기
델파이에서 아이콘 폰트 사용하기 아이콘 폰트는 폰트파일에 문자 대신 아이콘을 추가해 아이콘을 사용할 수 있는 폰트파일입니다. 아이콘 폰트를 사용하면 다양한 아이콘을 손쉽게 그리고 통일되게 사용할 수 있습니다. 대표적인 아이콘 폰트는 다음과 같습니다.Font AwesomeGoogle Meterial IconsBootstrap GlyphiconsXEICONIonicons 위 링크에서 아이콘 폰트 설치 후 문자표(Characters map) 프로그램등으로 다음과 같이 글꼴을 확인할 수 있습니다. 문자 선택 시 하단에 코드(U+F087)가 표시됩니다. 이 글에서는 아이콘 폰트를 델파이에서 사용할 수 있도록하는 오픈소스들 소개합니다.(소개하는 3가지 방식 모두 VCL 기반으로만 동작합니다.)IconFontsImageListFontIconEdit.. 더보기
델파이 컴포넌트/소스 마이그레이션 자동화 도구 마이그레이션 자동화 도구 마이그레이션 자동화 도구는 델파이 소스파일을 분석해 컴포넌트를 변경하고, 컴포넌트를 사용한 소스코드를 일괄 변경하는 도구입니다. 이 도구를 이용해 다수의 소스파일과 다수의 컴포넌트 그리고 소스코드를 일관되게 전환할 수 있습니다. 마이그레이션 자동화 도구 제작 계기 이미 엠바카데로에서는 reFind라는 마이그레이션 자동화 도구를 제공합니다. reFind는 소스코드를 분석해 컴포넌트를 변경하고, 속성을 변경하고, 유즈절을 정리하는 등의 기능을 제공합니다. 하지만, reFind는 일대일로 매칭되는 컴포넌트와 속성만을 변경할 수 있습니다. 이 도구를 제작한 계기는 리얼그리드(TRealGrid)를 퀀텀그리드(TcxGrid)로 전환이 필요한 컨설팅 프로젝트였습니다. 퀀텀그리드는 기본적으로 .. 더보기
엔터프라이즈 커넥터로 VCL 애플리케이션에서 '구글 시트' 데이터 조회 및 편집하기 엔터프라이즈 커넥터(Enterprise Connectors)는 약 130여종의 기업용 데이터에 표준 SQL을 통해 접근 및 연동할 수 있는 솔루션 입니다. 이 글에서는 구글 드라이브의 스프래드 시트인 구글 시트(Google Sheets)와 양방향 엑세스하는 기능을 직접 구현해보겠습니다. 구글 시트는? 구글 드라이브에서 제공하는 웹 기반 스프래드 시트 프로그램입니다. 엑셀과 같은 스프래드 시트를 온라인에서 사용할 수 있습니다. 문서를 그룹 또는 사용자와 공유하고, 권한 설정 가능합니다. 이 글에서는 다음 내용을 설명합니다. 엔터프라이즈 커넥터 설치 구글 API 콘솔 설정 엔터프라이즈 커넥터 문서 확인 구글 시트 연동 TFDConnection으로 구글 시트 연결 TFDQuery로 정보 조회, 입력, 수정, .. 더보기
[개발환경] 깃허브 PR을 이용한 코드리뷰 환경 구성(4) 이전 글에서는 깃허브에 여러분의 저장소를 만들고 연동하는 내용을 살펴봤습니다. [개발환경] 깃허브에 저장소 생성 및 연동하기(3) 이 글에서는마스터 저장소와 개발용 저장소를 나누고, 깃허브 Pull Request을 이용 코드리뷰 환경을 구성합니다. 이 글에서 다음 내용을 설명합니다. 코드리뷰를 위한 깃허브 저장소 구성 전략 Fork로 개발용 저장소 복사하기 변경내역 적용 요청(PR) 및 코드리뷰 이 시리즈에서는 깃과 깃허브를 이용하는 기본적인 방법과 깃허브를 이용한 코드리뷰 방법을 설명합니다. [개발환경] Git 설치와 저장소 구성(1) [개발환경] RAD 스튜디오에서 Git 설정 및 불러오기(2) [개발환경] 깃허브에 저장소 생성 및 연동하기(3) [개발환경] 깃허브 PR을 이용한 코드리뷰 환경 구성.. 더보기
[개발환경] 깃허브에 저장소 생성 및 연동하기(3) 이전 글에서 RAD 스튜디오에서 Git 설정 및 불러오기를 진행했습니다. [개발환경] RAD 스튜디오에서 Git 설정 및 불러오기(2) 이 글에서는 깃허브에 여러분의 저장소를 생성하고, RAD 스튜디오로 열고, 변경사항을 저장소에 반영하는 내용을 진행합니다. 이 글에서는 다음 내용을 설명합니다. 깃허브에 저장소 생성 RAD 스튜디오에서 생성한 저장소 열기 소스코드 변경 후 커밋 및 저장소에 반영 이 시리즈에서는 깃과 깃허브를 이용하는 기본적인 방법과 깃허브를 이용한 코드리뷰 방법을 설명합니다. [개발환경] Git 설치와 저장소 구성(1) [개발환경] RAD 스튜디오에서 Git 설정 및 불러오기(2) [개발환경] 깃허브에 저장소 생성 및 연동하기(3) [개발환경] 깃허브 PR을 이용한 코드리뷰 환경 구성(.. 더보기
[개발환경] RAD 스튜디오에서 Git 설정 및 불러오기(2) 이전 글에서 깃을 설치하고, 저장소의 구성을 살펴봤습니다. [개발환경] Git 설치와 저장소 구성(1) 이 글에서는 RAD 스튜디오에서 깃을 설정하고 깃허브 소스코드를 RAD 스튜디오에서 여는 방법을 설명합니다. 이 글에서는 다음 내용을 설명합니다. RAD 스튜디오에서 깃 설정 RAD 스튜디오에서 깃허브 저장소의 소스코드 열기 써드파티 깃 클라이언트 소개 이 시리즈에서는 깃과 깃허브를 이용하는 기본적인 방법과 깃허브를 이용한 코드리뷰 방법을 설명합니다. [개발환경] Git 설치와 저장소 구성(1) [개발환경] RAD 스튜디오에서 Git 설정 및 불러오기(2) [개발환경] 깃허브에 저장소 생성 및 연동하기(3) [개발환경] 깃허브 PR을 이용한 코드리뷰 환경 구성(4) RAD 스튜디오에서 깃 설정 RAD .. 더보기
[개발환경] Git 설치와 저장소 구성(1) 깃(Git)은 컴퓨터 파일의 변경사항을 추적하고 여러명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템이다. - 위키백과 깃허브(Github)는 분산 버전관리 툴인 깃을 사용하는 프로젝트를 지원하는 웹호스팅 서비스입니다. - 위키백과 버전관리 시스템은 소스코드의 중요한 변화를 기록하는 작업으로 개인 및 팀 작업에 반드시 필요한 요소입니다. 깃허브는 주로 오픈소스등 공개된 저장소로 사용되지만, 개인용 저장소를 생성해 비공개 저장소로 이용가능합니다. 이 시리즈에서는 깃과 깃허브를 이용하는 기본적인 방법과 깃허브를 이용한 코드리뷰 방법을 설명합니다. [개발환경] Git 설치와 저장소 구성(1) [개발환경] RAD 스튜디오에서 Git 설정 및 불러오기(2) [개발환경] 깃허브에 저장소.. 더보기
델파이 코드 주석 추가 및 문서화 방안 주석은 코드를 더 읽기 쉽고, 유지보수하기 쉽게 할 수 있는 가장 기본적인 요소 중 하나입니다. 특히 팀단위로 개발하거나, 오랫동안 유지보수해야 하는 경우 진가를 발휘합니다. 이 글에서는 주석을 좀 더 효과적으로 달고, 내용을 문서화하는 방법을 소개합니다. XMLDoc과 JavaDoc 주석의 특징과 추가 방법, 문서화 하는 방법을 알아봅니다. XMLDoc과 JavaDoc 주석 추가 XMLDoc 주석 XMLDoc 주석의 특징 3 중 슬래시(///)로 시작 XML 태그로 작성 코드 에디터의 헬프 인사이트에 표시 XML 태그로 가독성이 다소 떨어짐 XML 주요 항목 함수 또는 클래스에 대한 설명 파라메터에 대한 설명 함수의 반환 값 설명 < exception cref="예외 유형"> 메소드에서 전달되는 예외 .. 더보기
[VCL] 용량이 큰 JPEG 파일 다루기 - JPEG 라이브러리 조사 프로젝트 중 큰 용량의 JPEG 파일을 다룰 필요가 있어, 64-bit를 지원하는 JPEG 라이브러리를 조사한 내용 공유합니다. 고객사에서는 카메라에서 제공하는 이미지의 해상도가 높아짐(16384 x 29300)에 따라 64-bit 애플리케이션으로 마이그레이션을 계획했고, 성공적으로 완료했습니다. JPEG 라이브러리 그 과정 중 검토한 JPEG 라이브러리는 다음과 같습니다. TJPEGImage(VCL 내장 JPEG 라이브러리) libJPEG-Turbo Intel IJL / IPP(IJL 64-bit 미지원, IPP 상용) 고객사의 기존 프로젝트에서는 IJL을 이용해 JPEG을 다뤘지만, IJL은 개발이 중단되었고 64-bit를 지원하지 않아 검토 대상에서 제외되었습니다.(IPP로 통합되어 상용으로 판매 .. 더보기
델파이 코드 작성 규칙 데브기어에서 진행 중인 프로젝트 과정에서 사용 중인 코드작성 규칙을 공유합니다.https://docs.google.com/document/d/1eYWWv_YJRl-FYw3FkcIaBRSzaHsL0V-zRjA2rzJsPZM 더보기
이더넷 어댑터 정보((MacAddress, IP 등) 목록 알아오기 윈도우에 설치된 네트워크(이더넷 어댑터) 정보를 알아오는 방법입니다.(10.3 리오에서 구현했습니다.) uses 절에 Winapi.IPTypes, Winapi.IPHlpAPi 추가해야 합니다.var I: integer; NumInterfaces: DWORD; AdapterInfo: array of TIpAdapterInfo; // uses Winapi.IpTypes OutBufLen: ULONG; begin GetNumberOfInterfaces(NumInterfaces); // uses Winapi.IpHlpApi SetLength(AdapterInfo, NumInterfaces); OutBufLen := NumInterfaces * SizeOf(TIpAdapterInfo); GetAdaptersInf.. 더보기
[튜토리얼] 메일 전송(IdSMTP 이용) IdSMTP, IdMessage를 이용 메일 전송 예제 참고코드procedure TForm2.Button1Click(Sender: TObject); begin SMTP.Host := ''; // host address SMTP.Port := 25; MailMessage.From.Address := ''; // From email address MailMessage.Recipients.EMailAddresses := Edit2.Text;//'hskim@embarcadero.kr'; MailMessage.Subject := Edit1.Text; MailMessage.Body.Text := Memo1.Lines.Text; MailMessage.CharSet := 'UTF-8'; SMTP.Connect; SMT.. 더보기
[튜토리얼] FTP 업로드(TIdFTP 이용) IdFTP를 이용 로컬 파일을 서버로 업로드하는 예제로컬파일 선택업로드 시 프로그레스바로 진행률 표시참고 코드procedure TForm2.Button1Click(Sender: TObject); begin if OpenDialog1.Execute then Edit1.Text := OpenDialog1.FileName; end; procedure TForm2.Button2Click(Sender: TObject); var LocalPath, RemotePath: string; begin LocalPath := Edit1.Text; RemotePath := 'test/' + ExtractFileName(LocalPath); IdFTP1.Host := 'hjf.pe.kr'; IdFTP1.Port := 21; I.. 더보기
안면인식(Face Detection) 라이브러리(안드로이드, iOS) 델파이 개발 그룹인 grijjy 팀(블로그: https://blog.grijjy.com/)에서 안면인식(Face Detection) 라이브러리를 공개했습니다. 이 라이브러리리는 안드로이드와 iOS에 내장된 사진에서 얼굴을 감지하는 기능을 이용해, 하나의 라이브러리로 제공합니다. 안면인식 기술 개발이 필요하거나, 여러 플랫폼 기능을 하나의 라이브러리로 개발하고자 하는 경우 참고하면 아주 좋습니다. 안면인식(안드로이드, iOS)https://blog.grijjy.com/2017/09/11/face-detection-on-android-and-ios/ 더보기
TTS(Text-to-Speech) 라이브러리(윈도우, 맥OS, iOS, 안드로이드) 델파이 개발 그룹인 grijjy 팀(블로그: https://blog.grijjy.com/)에서 문자를 읽어주는 TTS(Text-to-speech) 라이브러리를 공개했습니다. 이 라이브러리는 윈도우, 맥OS, iOS, 안드로이드를 지원합니다.(grijjy 팀에서 크로스 플랫폼 추상화 레이어 설계를 연습하기 위해 제작했으며, 각 플랫폼 API TTS 기능을 하나의 라이브러리(컴포넌트)로 제공합니다.) 해당 기능이 필요하거나, 공통된 여러 플랫폼의 API를 하나의 라이브러리(컴포넌트)로 제작하는 방법을 참고하면 아주 좋겠습니다. Cross Platform Text-to-Speechhttps://github.com/grijjy/JustAddCode/tree/master/TextToSpeech 참고크로스 플랫폼 .. 더보기
델파이로 빅데이터 데이터베이스 연동하기(Cassandra, Couchbase, MongoDB) 델파이 개발 그룹인 grijjy 팀(블로그: https://blog.grijjy.com/)에서 빅데이터 데이터베이스에 직접 연동해 작업할 수 있는 델파이 라이브러리를 오픈소스로 공개하였습니다. 카산드라(Cassandra), 카우치베이스(Couchbase), 몽고DB(MongoDB) 총 3개의 빅데이터 데이터베이스 접근용 라이브러리이며, 해당 글에서는 친절하게 설치방법과 샘플 코드등을 자세히 설명합니다. 빅데이터 연동에 이슈가 있거나 관심이 있는 분들에게 큰 도움이 될 것으로 보입니다.자세한 내용은 아래 링크를 통해 (영문으로)자세히 볼수 있습니다. 참고로, 몽고DB의 경우 델파이에 기본 내장된 FireDAC을 이용해 직접 접속할 수도 있습니다.(하단에 관련 링크를 추가합니다.) 카산드라(Cassandra.. 더보기