본문 바로가기

전체보기

(1968)
EnCypher tool (AES256, BASE64) C++ library w/ Sample. EnCypher 라고 이름은 거창 하긴 합니다만, 단지 AES-256 과 BASE-64 를 이용하는 Front-end c++ class library 에 막 가져다 붙인 이름 입니다. 용도는 AES-256 으로 암호화 한 정보를 다시 BASE-64 로 인코딩 한 문자열을 만들거나, 반대로 처리 하는걸 만들수 있습니다. 사용하려는 C++ 코드 위에 #inlcude "endetool.h" 를 추가 해 준 다음, EnDeTool class 를 할당해서 쓰면 됩니다. 여러 기능을 제공하고 있는데 주된 기능은 다음과 같습니다.문자열을 AES-256 과 BASE-64 로 암호화 또는 복호화 단순 데이터를 AES-256 으로 암호화 또는 복호화 아래의 소스코드는 바이너리 데이터를 암호/복호화 하는 것만 들어 있긴 합..
Apple의 SSL 긴급 update 로 알려진 goto 를 사용하는 나쁜 예. 불과 몇일 전 Apple 은 긴급히 iOS 7.0.5 에서 7.0.6 은 물론, iOS 6.1.5 와 6.1.4 를 사용하던 기기들 에 대해 SSL 버그를 수정한 update 를 수행 하였습니다. 이는 iPhone3Gs 부터 iPhone5s 까지 모든 기기에 해당 하는 update 였습니다만, 이 문제는 다름아닌 goto 를 사용하는 나쁜 습관을 가진 프로그래머로 부터 발생된 문제라 할 수 있겠습니다. Apple 쪽에서 사용되었던 SSL code 를 보면 다음과 같습니다. (공개된 부분에 한해) static OSStatus SSLVerifySignedServerKeyExchange(SSLContext *ctx, bool isRsa, SSLBuffer signedParams, uint8_t *signatu..
개발 능력의 저능화를 이끄는 대한민국 언젠가 부터 Android 의 영향 덕분인지 일반 PC (노트북 포함) 의 Linux kernel 이 3.x 를 넘어섰습니다. 회사에서는 특정 컴파일러의 dependency 때문에 kernel 을 바꾸질 못하고 있는데 한참이나 후진 Centrino (Dothern) CPU 를 쓰는 노트북에서 요즘 가장 인기 좋은 Linux Mint 를 쓰게 된 것이 사실 좀 뭔가 아이러니 한 느낌이 듭니다. Linux kernel 역사에 2.3, 2.4 와 2.6 은 천지개벽 수준의 발전 이었는데 3.x 를 넘어서는 그 차이를 잘 모르게 된것 또한 시대의 흐름이 보이지 않게 된듯 한 착각이 들기도 합니다. 처음 대학에 입학하던 1996년을 되돌아 보면 그때 부터 이 좁은 대한민국이란 나라에서는 뭔가 항상 특정 조건대로 ..
기업의 블로그에 사원들의 노력이 필요한 이유와 그에 따른 딜레마. 얼마전 부터 회사에 사원들의 기업블로그 작성을 강요하는 듯한 메일이 돌기 시작 했다. 보통 이런 기업 블로그라 하는 것은 홍보를 담당하는 조직이 선도 하에 단순히 "홍보 목적"을 위해 존재 하기 마련이다. 그러다 보니 그 홍보 목적 이라는 글엔 진실과 거리가 먼 글들이 많이 존재 할 수 도 있으며, 이는 좋은 방면 보다는 나쁜 방향으로 많이 기울수도 있는 조건이 될 수 있다. 생각해 보라, 어느 회사가 내부의 진실의 창을 열고 속을 밖으로 다 보여 주겠는가? 단순한 뇌를 응용해서 이를 깊게 생각해 보려 해도 드는 생각은 몇가지 없지만 가장 큰 이유중 하나는 일단 '글을 쓸 필진이 회사에 없다' 이거나, '회사에 남는 잉여 사원을 활용해 보자' 라는 취지 일 수 있을 것이다. 그런데 후자는 분명 아주 큰 ..
Porcess ID 로 해당 윈도우의 HWND 를 얻고 BMP 로 저장. 윈도우 프로그래밍을 하다보면 가끔 다른 윈도우의 화면을 갈무리 해야 하는 경우가 생깁니다. (Capture 처럼) 이럴때 아래의 코드 중 HWND GetHandleFromPID(DWORD pid); 함수를 사용하면 간단히 해당 프로그램의 HWND 를 얻을 수 있습니다. #include #include "winproc.h" typedef struct _ProcessCallbackData { DWORD m_pid; HWND m_hwnd; } ProcessCallbackData; BOOL CALLBACK EnumProc(HWND hwnd, LPARAM lParam) { DWORD pid = 0; ProcessCallbackData *pcbd = (ProcessCallbackData *)lParam; if ( ..
FLTK 1.3.x 를 위한 smooth image scaler: fl_smimg FLTK 1.3.x 버젼을 쓰면서 부족한 부분이 있다면 바로 Fl_Image 의 copy() 함수를 통한 scale 기능이라 하겠습니다. 실제 내부에서 이 scale 엔진은 GraphicDriver의 resize 를 호출 하는데 이 부분은 실제 nearest resize 가 수행 되므로 뭔가 부드럽게 연산이 처리된 형태의 이미지를 얻을수가 없게 됩니다. 이를 해결하기 위해 만든 것이 fl_smimg 이며, 이 소슨는 FreeImage Library 3 의 resize 부분을 추출 해서 FLTK 에 맞게 변경 하였으며, 그 적용은 아래 처럼 됩니다. 이미지는 인터넷에 도는 것을 임의로 사용하였는 상태 입니다. (우주선 이미지는 Mass Effect 의 Normandy 호 입니다 ) 먼저 Fl_Window ..
MCU 를 위한 고정 소수점 간단 연산기 intfloat 이 소스는 100% free 이며 알아서 바꿔 쓰던지, 기능을 개선 하던지 마음대로 인 ALU 로 수행 되는 간단한 고정 소수점 처리기 입니다. 수행 할 수 있는 것은 고정소수점을 정수로 더하고, 빼고, 나누고, 곱하고 입니다. 정확히는 각도 계산을 위해 만들어진 것인지라 고정 소수점을 고정 소수점 자체로 나누는 기능은 없지만 어느정도 쓸모 있어 보입니다. 많은 버그를 내장하고 있을지 모르므로 가져다 쓰시는 분이 어느정도 검증 절차 밟아 쓰시는 것은 꼭 필수 입니다. 아래 파일의 압축을 풀면 intfloat.h 와 c 파일이 있으며, 왠만한 MCU 용 compiler 에서는 문제 없이 컴파일 됩니다.test.c 는 함수 확인용 이며, M-Sys 나 gcc(MinGW) 를 기본으로 시스템으로 쓰시는 분들에..
ALSA + mpg123 출력시 clicking noise 발생 대처 방안. 요즘 대부분의 Embedded Linux 환경이 좋아져서 개발 환경이 매우 용이해 졌습니다. 심지어 F*사 쪽은 Kernel 을 3.14 로 올리는 시대가 왔습니다만, 모든 환경이 그렇게 우아하게 좋을리가 없다는게 또 현실이 아닐까 합니다. 근래 하는 일 중에 ALSA 를 통해 mp3 를 재생 하는 일을 수행 하는 중, 다음과 같은 문제가 발생 하였습니다.사용된 mpg123 은 최신 버젼 (1.17.0 )mpg123 를 ALSA 와 붙이기 위해 mpg123 재생 예제를 응용하여 pthread로 play 부분을 처리.실제 Windows 환경에서는 문제가 발생 하지 않지만 Embedded Linux 상에서 mpg123 으로 decode 된 PCM buffer 를 재생시 최초 와 재생 종료시 clicking ..