본문 바로가기

분류 전체보기

[개발환경] Git 설치와 저장소 구성(1) 깃(Git)은 컴퓨터 파일의 변경사항을 추적하고 여러명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템이다. - 위키백과 깃허브(Github)는 분산 버전관리 툴인 깃을 사용하는 프로젝트를 지원하는 웹호스팅 서비스입니다. - 위키백과 버전관리 시스템은 소스코드의 중요한 변화를 기록하는 작업으로 개인 및 팀 작업에 반드시 필요한 요소입니다. 깃허브는 주로 오픈소스등 공개된 저장소로 사용되지만, 개인용 저장소를 생성해 비공개 저장소로 이용가능합니다. 이 시리즈에서는 깃과 깃허브를 이용하는 기본적인 방법과 깃허브를 이용한 코드리뷰 방법을 설명합니다. [개발환경] Git 설치와 저장소 구성(1) [개발환경] RAD 스튜디오에서 Git 설정 및 불러오기(2) [개발환경] 깃허브에 저장소.. 더보기
[FMX] RAD 스튜디오 10.3.1에서 FCM 전송 설정하기 이 글은 Marco Cantu가 작성한 Firebase Android Push Notification Support with RAD Studio 10.3.1의 의역입니다. 구글은 다음과 같이 발표했습니다. "GCM 서버와 클라이언트 API는 지원중단하며, 2019년 5월 29일에 삭제될 예정입니다. 안정적이고 확장가능한 GCM 인프라 및 많은 새로운 기능을 계승한 Firebase Cloud Messaging(FCM)으로 GCM 애플리케이션을 전환하십시오." 앞으로 파이어몽키 안드로이드 앱에서 푸시 알림 지원을 사용하려면, 구글의 Firebase를 사용해야 합니다. 이 글에서는 Delphi, C++Builder 및 RAD 스튜디오 10.3.1을 사용해 파이어몽키 안드로이드 앱에서 Firebase 푸시 알림.. 더보기
델파이 코드 주석 추가 및 문서화 방안 주석은 코드를 더 읽기 쉽고, 유지보수하기 쉽게 할 수 있는 가장 기본적인 요소 중 하나입니다. 특히 팀단위로 개발하거나, 오랫동안 유지보수해야 하는 경우 진가를 발휘합니다. 이 글에서는 주석을 좀 더 효과적으로 달고, 내용을 문서화하는 방법을 소개합니다. XMLDoc과 JavaDoc 주석의 특징과 추가 방법, 문서화 하는 방법을 알아봅니다. XMLDoc과 JavaDoc 주석 추가 XMLDoc 주석 XMLDoc 주석의 특징 3 중 슬래시(///)로 시작 XML 태그로 작성 코드 에디터의 헬프 인사이트에 표시 XML 태그로 가독성이 다소 떨어짐 XML 주요 항목 함수 또는 클래스에 대한 설명 파라메터에 대한 설명 함수의 반환 값 설명 메소드에서 전달되는 예외 .. 더보기
[마이그레이션 사례] 워프비전(64-bit 애플리케이션) 수원 영통구에 위치한 워프비전은 반도체 및 디스플레이 필름등의 검사 장비를 제공하는 업체입니다. 최근 카메라의 발전으로 이미지 해상도가 높아지고, 윈도우 10 등의 최신 운영체제 지원을 위해 마이그레이션을 진행했습니다. 워프비전 - 마이그레이션 컨설팅 프로젝트 기간 : 2019년 4월(1개월) 지원 방법 : 마이그레이션 컨설팅 델파이 버전 : 델파이 2007 32-bit > 델파이 XE7 32/64-bit 업무 범위 메인 프로그램 : 2개 프로젝트(약 100여개 소스코드) 컴포넌트 : 자체제작 2개, 오픈소스 2개 워프비전은 반도체 및 디스플레이 필름등의 검사 장비를 제공하는 업체로, 설비를 제어하고 관리하는 소프트웨어가 델파이로 개발되었습니다. 마이그레이션 진행 워프비전은 최근 카메라의 발전으로 고해상.. 더보기
[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로 통합되어 상용으로 판매 .. 더보기
[FMX] 안드로이드 권한 모델 적용 방법 파이어몽키로 안드로이드 앱 개발 시 장치에 접근하는 기능(예, 카메라 이용, 블루투스 이용 등) 개발 시 권한 설정이 필요합니다. 기존에는 Project > Options > Uses Permissions에서 필요한 권한을 설정하는 방식이었지만, 안드로이드 API 최신버전은 런타임 시 권한을 요청하는 매커니즘으로 변경되었습니다. 기존의 권한 모델은 설치 시 전체 권한을 승인하는 방식이었습니다. 새로운 권한 모델은 기능 사용 시 개별 권한을 묻는 방식으로, 사용자는 기능 별 허용 및 거부가 가능해졌습니다. 기존 권한 요청 방식 새로운 권한 요청 방식 새로운 권한 요청 방식은 RAD 스튜디오 10.3 부터 적용되며, 기존에 작성했던 안드로이드 프로젝트는 권한 요청하는 로직을 추가하도록 업데이트 해야 합니다... 더보기
[FMX][팁] 파이어몽키 버튼의 배경색상 변경하기 파이어몽키 버튼(TButton)에 배경색을 입히는 작업을 안내합니다. 버튼은 배경색 관련 속성을 제공하지 않아 스타일을 변경 해 적용해야 합니다. 커스텀 스타일 변경버튼에 우측마우스 클릭 후 [Edit Custom Style...] 메뉴를 선택 해 Style Designer 화면으로 이동합니다. 관련 스타일 검토Structure 패널에서 추가된 스타일(Button2Style1) 선택 후 배경색 관련된 항목이 있는지 확인합니다.background 항목의 경우 TButtonStyleObject로 배경을 이미지에서 지정하는 방식으로 직접 배경색을 지정할 수 없습니다. 배경을 지정할 컴포넌트 추가 및 설정배경을 지정할 컴포넌트를 직접 추가합니다.background 항목의 자식으로 Rectangle 컴포넌트를 추.. 더보기
[FMX][팁] 파이어몽키 TComboBox 글자 크기 변경 파이어몽키의 TComboBox는 TextSetting과 같은 속성을 제공하지 않아 폰트 설정이 제한됩니다. 코드를 통해 콤보박스(TComboBox)의 폰트를 설정하는 방법을 안내합니다.다음 코드는 콤보박스의 글자크기를 20으로 변경한 예제입니다.procedure StyleComboBoxItems(ComboBox:TComboBox; Size:Single); var Item : TListBoxItem; i : Integer; begin for i := 0 to ComboBox.Count-1 do begin Item := ComboBox.ListItems[i]; // Item.Font.Family := Family; //'Arial'; Item.Font.Size := Size; //20; // Item.Fon.. 더보기
[개발환경설정] 윈도우즈 환경에 Git 설치하기 Git 설치다운로드다음 링크에서 윈도우즈 인스톨러를 다운로드합니다.https://git-scm.com/downloads git.exe 파일을 실행해 설치를 시작합니다. 라이선스 확인라이선스 확인 후 [Next] 버튼을 클릭합니다.설치할 컴포넌트 선택중요한 항목은 이미 선택되어 있으니 [Next] 버튼 클릭합니다. 기본 편집기 선택git에서 사용할 기본 편집기 선택, 가장 편한 에디터 선택 후 [Next] 버튼 클릭 PATH 환경설정Git 명령을 실행할 환경을 선택 아래 설명을 참고해 선택 후 [Next] 버튼 클릭(윈도우즈 명령 프롬프트에서도 Git 명령어 실행이 필요한 경우 2번째 옵션 선택) Use Git from Git Bash only: Git Bash(Git에서 제공하는 명령어 입력 및 실행 프.. 더보기
델파이 코드 작성 규칙 데브기어에서 진행 중인 프로젝트 과정에서 사용 중인 코드작성 규칙을 공유합니다.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.. 더보기
CEF4Delphi(크로미움 기반 웹브라우저) 컴포넌트 설치 및 실행하기 REST API 관련 컨설팅 중 학습한 내용을 공유합니다. 고객사의 요청으로 VendHQ 사의 REST 서비스와 연동을 진행했습니다.OAuth 2.0 연동 중 웹브라우저 이슈가 있어 해결방안을 공유합니다. OAuth 2.0 인증 시 크게 3가지 단계로 진행합니다.1) 서비스의 인증페이지에 로그인 해 인증코드를 받는다.2) 인증코드를 이용해 엑세스 토큰을 취득한다.3) 엑세스 토큰을 이용해 서비스에 접근한다. 이슈는 1)번 과정에서 발생했습니다.델파이 내장 웹브라우저 컴포넌트(TWebBrowser)가 vend사의 로그인 페이지를 정상 출력하지 않아 다음 단계로 진행되지 않습니다.(vend사에서 표준을 지키지 않고 페이지를 만든것으로 예상됩니다.) 다음과 같이 스타일이 적용되지 않고, 허용 버튼(Allow .. 더보기
[REST API] MAC(Message Authentication Code)/HMAC 델파이로 구현하기 REST API 관련 컨설팅 중 학습한 내용을 공유합니다. 한 고객사의 요청으로 Unleashed 사의 REST 서비스와 연동을 진행했습니다. 그 과정 중 HMAC(해시 기반 메시지 인증 코드) 구현 과정을 공유합니다. HMAC은 Unleashed 사 뿐아니라 AWS의 REST API 연동에도 사용되는 등 많은 REST 서비스에 구현되는 내용입니다. MAC과 HMAC먼저 MAC(Message Authenticate Code: 메시지 인증 코드)를 살펴봅니다. (출처: https://ko.wikipedia.org/wiki/메시지_인증_코드) MAC는 발신자(Sender)와 수신자(Receiver) 사이에 메시지 변조 여부를 확인하기 위한 메시지 인증 방식입니다. 위 그림을 통해 설명하면, Sender는 보.. 더보기
OAuth 2.0 연동 - 카카오 API(카카오톡 프로필) 업데이트 내역 2019-10-23 : [3. 엑세스 토큰 취득] 버튼 클릭 시 Accept 속성 추가 이 글에서는 OAuth 2.0을 이용해 카카오 API와 연동하는 방법을 델파이를 통해 알아봅니다.이 글을 통해 카카오톡 프로필 정보와 사진을 델파이 애플리케이션에서 불러오는 예제를 작성할 수 있습니다. OAuth 2.0API(또는 서비스) 이용 시 인증(Authentication)과 리소스(제공 서비스)에 대한 권한부여(Authorization)는 필수사항입니다. 인증과 권한부여의 대표적인 방법 중 하나가 OAuth입니다. OAuth는 서버와 클라이언트 사이에 인증을 완료 시 권한부여의 결과로 엑세스 토큰(Access Token)을 발급하고, 이 엑세스 토큰을 이용해 클라이언트는 API(또는 서비스)에 .. 더보기
RFID 리더(한미IT RF Prisma) 연동하기 - 델파이에서 JAR 이용 (아래 내용은 델파이 10.2 도쿄 릴리즈 1과 릴리즈 2에서 작성된 내용으로 다른 버전에서는 일부 내용이 다를 수 있습니다.) 개발 컨설팅을 통해 의뢰한 작업 중 RFID 리더 연동한 내용 공유합니다. (3일간의 개발 컨설팅으로 RFID 리더, TMAP 연동, 원격 데이터 연동 기술을 전파하는 작업을 진행했습니다.) RFID 리더와 연동은 제조사에서 제공하는 라이브러리(안드로이드 JAR)를 이용했습니다. 이 과정을 통해 델파이에서 JAR 파일 연동하는 내용을 확인할 수 있습니다. RFID 리더 연동 위 영상의 RFID 리더는 RFID 태그의 값을 읽고, 바코드의 값을 읽어 안드로이드 앱에 데이터를 전달합니다. 안드로이드 앱은 장비를 구동 및 설정하고, 장비가 읽은 데이터를 받아 화면에 표시합니다. 안드.. 더보기
WaitDialog 구현 - 재사용 가능한 프레임 구현하기 얼마전 진행한 모바일 개발 컨설팅에서 블루투스 장비와 연결 후 기다리는 동안 표시할 화면이 필요했습니다.WaitDialog라는 화면을 만들었는데 이 화면은 앞으로도 많이 사용하게 될 것 같아 TFrame을 이용해 재사용 가능하도록 구현해 봤습니다. WaitDialg 구현에 아래 기술을 사용했습니다.1) TFrame2) 클래스 메소드3) 싱글톤 패턴 이 내용을 학습하면1) 자주 사용하는 화면을 프레임으로 제작 해 재사용 할 수 있습니다.2) 클래스 메소드를 활용해 코드를 짧게 사용 할 수 있습니다.결과화면결과 화면은 아래와 같습니다. 구현한 내용화면구성파이어몽키 프레임을 이용해 WaitDialog 화면을 구성했습니다.파이어몽키에서 TFrame은 폼디자이너에서 화면을 구성할 수 있는 객체입니다. UI 컴포넌.. 더보기
[튜토리얼] 메일 전송(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.. 더보기
델파이/C++빌더에 TTcpClient, TTcpServer, TUdpSocket 등록하기 TTcpClient, TTcpServer, TUdpSocket 컴포넌트 들이 어느 버전에서 부터인지 모르지만, 기본 컴포넌트에서 빠져있습니다. 위 3개 소켓 컴포넌트를 등록하는 방법을 안내합니다.(이 글은 RAD Studio 10.2 도쿄 버전을 기준으로 안내합니다.) 1, 윈도우 탐색기로 열고 다음 경로(기본 샘플 경로)로 이동합니다.C:\Users\Public\Documents\Embarcadero\Studio\19.0\Samples\Object Pascal\VCL\InetWinSockets 2, RAD Studio에서 "inetwinsockets.dpk" 프로젝트를 엽니다. 3, 프로젝트 매니저의 팝업 메뉴에서 Install 메뉴를 선택 해 설치합니다. 4, 델파이 라이브러리 패스에 위 경로를 추가.. 더보기
안면인식(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/ 더보기