[글쓴이:] 박지훈.임프

Delphi/C++Builder 컨설턴트, 볼랜드포럼 운영자, 데브퀘스트 대표

원본동일성 주요판례를 무력화한 항소심을 인용한 대법원

앞서 포스트에서, 검사측이 강사휴게실 PC들의 원본 동일성과 무결성을 크게 훼손했으며, 이는 증거능력 불인정으로 이어져야 할 문제라는 점을 설명했습니다. 또 이어서 이 원본 동일성 문제가 단순한 원칙론이나 추상적 의심의 차원이 아니라, 증거 변조에 대한 합리적 의심 정황들도 여럿 있다는 점도 설명했습니다.…

강사휴게실PC, 원본 동일성 훼손으로 증거능력 부정했어야

저는 항소심에서부터 강사휴게실 PC들에 대한 디지털 증거의 원본 동일성 문제를 강조해왔습니다. 원본 동일성과 무결성 문제는 디지털 증거의 변조 문제를 차단하기 위한 것으로, 기술 전문가의 입장에서 봤을 때 피고인의 참여권 문제보다 이쪽이 훨씬 심각합니다. 디지털 증거에 있어, 무결성이란 압수한 이후로 증거로…

변호인측 증거 무시로 일관한 대법원의 증거능력 판단

지난해 11월 18일, 대법원은 임의제출로 디지털 증거를 압수했을 경우에도 참여권을 보장해야 한다는 판례를 내놓았습니다. 이 판례가 정경심 교수의 강사휴게실 PC들에도 적용될 것이라는 예상이 많았습니다. 하지만, 얼마전 1월 27일, 대법원 제2부는 지난해 판례에 없던 새로운 전제조건을 달아 지난해 판례의 적용 대상…

법원의 표창장 유죄 핵심 근거는 경악할 허위

표창장 위조 관련 검사측의 공소사실의 가장 핵심적인 뼈대는, ‘정경심 교수가 2013년 6월 16일에 PC1을 이용하여 동양대 총장 명의의 표창장 파일을 제작하고 프린터로 출력함으로써 표창장을 위조하는 범행을 했다’ 라는 것입니다. 즉 표창장 혐의의 유무죄 판단에서 가장 결정적인 관건이 바로 당일 PC1의…

법원이 철저하게 묵살한 정경심 교수의 알리바이 증거

며칠전 2022년 1월 27일에 정경심 교수에 대한 대법원의 선고가 있었습니다. 상당부분 혐의들에서 파기환송 결정될 가능성이 지배적이라고 봤던 예상과 달리, 천대엽 주심의 대법원 2부는 항소심 판결을 모두 인용하며 징역 4년형을 확정했습니다. 파기환송 가능성을 매우 높게 봤던 가장 큰 이유는, 제가 2020년…

고속 압축 알고리즘 비교 테스트: LZO/Snappy/SynLZ/LZ4/QuickLZ/Zlib

통상적인 시각으로는 파일 압축이란 가급적 작은 크기로 줄이는 압축률을 우선으로 따지지만, 그런 용도 외에 아주 빠른 압축 알고리즘이 필요할 때가 있습니다. 그런 경우는 주로, 전체 프로세싱 작업 구간들중에서 메모리 속도보다 훨씬 느릴 수밖에 없는 네트워크 전송 구간이나 디스크 저장 구간의…

FireDAC: FDMemTable vs. ClientDataSet Android 성능 비교

Delphi 및 C++Builder의 새로운 데이터 액세스 컴포넌트로 추가된 FireDAC은, 다양한 데이터베이스 서버들을 지원할 뿐만 아니라 기능 면에서도 대단히 강력합니다. 또한 성능도 매우 뛰어난데요.그런데 성능 면에서의 장점 설명들은 보통 윈도우 플랫폼에 치중되어 있습니다. 최근 저는 Delphi 기반 Android 프로젝트를 진행하던 과정에서, 안드로이드에서 FDMemTable의…

FireDAC에서 DB2 AS/400 네이티브 연결 (수정)

IBM의 중형 컴퓨터 AS/400 (iSeries, System i)은 역시 IBM의 메인프레임(zSeries, System z)과 마찬가지로 매우 폐쇄적인 시스템으로, OS 자체적으로 데이터베이스 서버도 내장하고 있는 것이 한 특징입니다. AS/400의 OS 자체가 데이터베이스와 완전히 통합되어 있는 구조인데요. AS/400의 데이터베이스를 ‘DB2’라고 부르기는 하지만 유닉스나 윈도우, 리눅스…

ZXing.Delphi 바코드 스캔 예제 소스

앞서 바코드 스캔 라이브러리 ZXing.Delphi에 대한 소개와 버그 수정에 대한 포스트를 올렸는데요. 이번에는 이 라이브러리를 제대로 사용하기 위한 예제 프로젝트에 대해 설명해보겠습니다. 원론적으로 보면, ZXing.Delphi 라이브러리의 사용법 자체는 꽤 간단합니다. 먼저 TScanManager 객체를 생성해놓습니다. 카메라를 액티브시킨 후, TCameraComponent의 OnSampleBufferReady 이벤트가 발생되면 이벤트…

FMX: 바코드 스캔 라이브러리, ZXing.Delphi 소개 및 버그 수정

ZXing.Delphi

저는 현재 공장 자동화 목적의 안드로이드 앱을 개발중인데, 라인/공정별 각 단계마다 라벨에 찍혀있는 QR code를 스캔하는 기능이 필요합니다. (QR code도 바코드의 한 종류로서 2D barcode에 속합니다) 바코드를 스캔하는 방법에는 바코드 스캐너 전용 기기를 사용하는 경우와 스마트폰/태블릿 등의 범용 기기를 이용하는…

FMX: CameraComponent의 Quality 속성 버그

안드로이드 기반 단말기를 위한 앱을 개발하던 중, Firemonkey 카메라 컴포넌트의 해상도 설정 기능에서 작은(?) 버그를 발견했습니다. 기기의 최고 해상도보다 해상도를 낮춰 설정한 후 카메라를 재구동하면 해상도가 최고 해상도로 강제 설정되어버리는 것입니다. 더 골치아픈 것은, 이것을 막기 위해 카메라 재구동 전에 해상도를…

지정 시간 후 자동으로 닫히는 Modal 폼

잘 아시다시피 델파이/C++빌더에서 폼을 여는 방식에는 Show와 ShowModal 두 가지 방법이 있습니다. 각각 modeless, modal이라고 하는데요. modal로 폼을 연다는 것은 해당 폼을 닫기 전에는 다른 폼으로 입력 포커스를 이동할 수 없도록 강제하는 것입니다. 그런데 가끔은, modal 방식으로 폼을 열었으면서도 일정…

with 구문의 위험성 – cxGrid 및 TRect의 사례

델파이(오브젝트 파스칼) 언어에서 with 구문이 종종 위험할 수 있다는 말은 델파이 개발자라면 한번쯤은 들어보셨을 겁니다. with 구문은 그 블럭 안의 식별자가 어느 객체에 속한 것인지를 모호하게 만들 수 있기 때문인데요, 주로 self에 속한 멤버와 with에 속한 멤버 사이에서 문제가 발생하기…

DBGrid에서 체크박스로 멀티셀렉트 하기

저 개인적으로는 그리드 컴포넌트로는 서드파티인 DevExpress의 cxGrid를 주로 사용하기 때문에, 간단한 로직 검증 테스트 목적 외에는 TDBGrid를 잘 사용하지 않습니다. 하지만 제가 지원하는 여러 사이트들 중에는 업무용 기본 그리드 컴포넌트로 TDBGrid를 사용하고 있는 경우가 종종 있습니다. 지난주 제가 기술지원을 하고 있는…

초중고 SW 교육 의무화 반대, 두번째 이야기

며칠전에 쓴 초중고 SW 교육 의무화 추진을 중단하라 글에 제가 예상치도 못했던 엄청난 반응이 쏟아졌습니다. 페이스북과 블로그 본문을 통해 반박 의견도 일부 있었지만 공감한다는 의견과 페이스북 좋아요가 줄을 이었네요. 사실 저는 이런 일로 주목받는 것을 즐기는 사람은 아닌, 가평 시골에 묻혀…

초중고 SW 교육 의무화 추진을 중단하라

지난 6월 26일, 모 언론에 SW 교육 정규과정화가 무산될 위기에 처했다는 기사가 실렸었습니다. SW 정규교과 도입 결국 무산? 저는 그 기사를 보고 정말 다행이다라고 가슴을 쓸어내렸었습니다. 그런데 어제 난데없이 SW 정규과정화를 내년부터 중학교에 강제하고 2017년부터는 초등학교에도 실시겠다는 기사가 나왔고, 곧이어…

파일 진행 상황을 보여주기 – TImpFileStream

Delphi, C++Builder 개발자들에게 TStream 클래스는 아주 친숙하죠. TStream은 TFileStream, TMemoryStream, TBlobStream, TWinSocketStream 등으로 상속되어 TStream의 인터페이스로 여러 컴포넌트 및 루틴들에서 사용됩니다. 특히 TFileStream은 Delphi와 C++Builder에서 로컬의 파일을 읽어들이고 쓰는 데 가장 일반적인 방법으로 많이 쓰이고 있습니다. 그런데, 대용량의 파일을 읽고 쓰는 작업을 하거나 혹은 네트워크를 통해…

Windows Server 2008에서 “Could not load file or assembly Microsoft.Build.Framework…” 에러

윈도우 서버 2008 OS에 델파이/C++빌더의 최근 버전들(2010~XE5)을 설치한 경우, 기본 상태에서는 컴파일하려고 할 때 컴파일러 에러가 뜨면서 컴파일이 되지 않습니다. 정확한 에러 메시지는 다음과 같습니다.

이 에러가 발생하는 원인은, 델파이/C++빌더(이하 RAD Studio)의 최근 버전들이 컴파일에 이용하는 빌드엔진인 MSBuild가 없어서입니다. MSBuild는 .NET 프레임워크에…

TClientDataSet+TDBNavigator가 극도로 느려지는 문제에 대한 해결책

개인적으로 저는 잘 사용하지 않지만, DBNavigator 컴포넌트는 데이터베이스 애플리케이션에서 정말 유용한 컴포넌트입니다. TDBNavigator의 역할은 현재 연결되어 있는 데이터셋의 레코드 단위 운영을 위한 컴포넌트로서, 아시다시피 데이터셋의 앞으로/뒤로, 최초/최종 등의 작업을 위한 UI를 간단히 구성해줍니다. 그런데, 델파이/C++빌더의 XE2 이후 버전들부터는, 이 TDBNavigator가 TClientDataSet과 연결해서…

RichEdit 컨트롤의 특이한 버그

이 버그는 아주 특이한 조건에서만 발생하기 때문에 대부분의 개발자들에게는 별 상관이 없겠습니다만… 기록삼아 적어둡니다. 폼에 TRichEdit를 놓고, 아래와 같이 몇가지 속성들을 조정합니다.

이 상태로 컴파일하고 실행해보면, 분명히 디자인시에 리치에디트에 아무런 내용을 넣지 않았음에도 실행된 프로그램에서는 다음과 같이 깨진 문자열이…