본문 바로가기

2016/06

(9)
Windows API 를 이용해 Serial Port 찾기. Windows 에서 개발 하는 과정에서 COM port 를 찾는 방법은 여러가지가 있긴 합니다만, 명확히 USB 나 Bluetooth 와 같은 기기들이 연결 되었을 때 이것을 다 찾아 내는 방법은 애매한 경우가 더러 있습니다. 저의 경우는 기존에 SetupDiEnumDeviceInterfaces() 를 사용한 방법을 쓰다가, Windows 10 으로 올린 다음 부터 USB 장치로 인식한 COM port 가 검색이 되질 않아 좀 더 애를 먹었습니다만, 간단히 GUID 를 GUID_DEVINTERFACE_COMPORT 로 쓰던걸 GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR 로 변경하기만 해도 문제가 해결 되었습니다. 각 GUI 는 다음과 같은 값을 가집니다. (mingw-w64 ..
wget 1.18 win32 M-SYS 나 Cygwin 등을 쓰신다면 WGET 이 미리 설치 되어 있거나, 쉽게 빌드 할 수 있습니다. 하지만 일반적으로 모든 PC 에 이걸 빌드 환경을 만들고 빌드 하고 할 필요는 없으므로 아래 URL 에서 쉽게 내려 받을 수 있습니다. https://eternallybored.org/misc/wget/ 자신의 시스템에 맞는 바이너리를 내려 받으시고, 받은 파일을 Program Files 안에 만들어 넣으시거나, 별도의 tool 폴더 안에 넣으 신 다음 PATH 에 이를 등록 하고 쓰시면 cmd 나 Power shell 등에서 쉽게 호출 해서 쓸 수 있게 됩니다. WGET 으로 내려 받을 수 있는 것은 기본 HTTP 나 FTP 는 물론, HTTPS 도 함께 지원 하며, -p -k 등의 옵션으로 이미..
XML 을 통한 다국어 처리도 편리한 FLTK. XML 의 경우 여러 언어들을 처리 하기 위해 보통 UTF-8 인코딩을 사용합니다. 이 방식은 Windows 에서 사용하는 UNICODE 와 1:1 대응이 되지 않습니다, 그래서 보통 GUI 관련 쪽에서 바로 붙여 쓰기가 힘든 경우가 있는데, FLTK 의 경우 그대로 UTF-8 을 사용하고 있기 때문에 XML 에서 읽어온 다국어 코드를 별도의 변환 없이 사용이 가능 합니다. 그래서 올바른 Font 를 Load 한 상태 라면 (보통 FL_FREE_FONT 에 bind 해서 씁니다) 다국어 출력에 어려움이 없이 편리하게 구현이 가능하다는 장점이 있습니다. 또한 이런 부분은 타 OS로 소스를 그대로 사용할 경우 발생 할 수 있는 호환성도 매우 많이 해결 해 주기 때문에 자원 낭비를 많이 줄일 수 있는 장점이 ..
우분투/리눅스 민트 에서 apt-get update 중 key 오류 날 때. 저의 경우는 launchpad.net 쪽에서 나는 오류가 갑자기 발생 하기 시작 했는데, 아마 처음 이 PPA 주소를 추가 할 때 Public key 관련 작업을 하지 않았던 것 같습니다 (또는 그세 뭔가 바뀌었던가 ...) 그래서 이 문제를 해결 하기 위해 다음 URL 을 참고 하였습니다 만, 영문이 어려운 분들을 위해 조금 설명을 달아 보겠습니다. http://opensourceforgeeks.blogspot.kr/2013/04/w-gpg-error-httpppalaunchpadnet-precise.html 위 URL에 따르면 여러 방법이 존재 하기는 합니다만, 저의 경우 위 사진에 있는 오류 문구 중 NO_PUBKEY 다음에 오는 16진수 키 값을 복사 해서 다음 URL에서 검색 했습니다. 우분투 ..
Linux 에 SSD TRIM 적용 하기. Linux 는 항상 HDD 를 단 기기에 쓰다가 SSD 로 변경 하고 나니, TRIM 을 시스템에 적용해야 하는 이유가 생겼습니다. Windows 는 7 부터 지원 되는 TRIM 이 제가 사용하는 Linux Mint 17.3 에서는 수동으로 해야 하는 일이 있어 이를 적용 하고자 했습니다. 인터넷에서 여러 방법을 찾아 본 결과 다음 몇가지는 기본으로 해야 했는데, 먼저 /etc/fstab 을 수정 해서 지금 사용중인 장치에 discard가 기본으로 적용 되어야 합니다. 먼저 SSD 가 TRM 르 지원 하는지 확인 하기 먼저 현재 SSD가 TRIM 르 지원 하고, 리눅스가 이걸 인지 했는지 알아 보는 방법이 다음과 같습니다. sudo hdparm -I /dev/sda | grep TRIM 이렇게 했을 떄 ..
개발자 초년생들을 위한 조언 요즘은 개발자라 하면 다양한 직군들이 많이 존재 하는 시대 입니다만, 이전만 해도 C 나 C++ 로 개발 하는 것들이 많았고, 심지어 제 경우엔 그때 남들 다 쓰는 언어만 쓰면 재미 없다고 소시적 부터 쓰던 pascal 을 함께 병행 하기도 했습니다. 물론 inline assembler 를 즐겨 쓰는 이상한 취미 때문에 사용이 편이한 Borland 류를 더 쓴 것도 있습니다만.. 개발자로서 십수년 일을 해 오면서 무엇이 좋은것인가, 나쁜것 인가를 아직도 잣대를 대어 나누기는 힘들지만, 적어도 '이것은 최악이다' 를 격어 본 입장에서 '최소 이런 것들은 피하자' 라는걸 공유 하고자 글을 써 봅니다. 회사에 들어 가면 처음엔 당연 아무것도 모릅니다. 경력직이던 신입이던, 처음 회사 들어 가면 그 조직 또는 ..
맥북/노트북용 SDcard 어뎁터 한 반년 전 쯤 알리에서 초저렴하게 구매 했던 아이템이 있었는데 그게 바로 위 사진의 micro SDcard 를 일반 크기의 SDcard 로 변경 해 주는 어뎁터 입니다. 물론 이런 어뎁터들은 micro SDcard 사면 같이 들어 있긴 한데, 자세히 보면 크기가 약 반 만 합니다. 그래서 번들로 끼워 주는 그런 어뎁터와 활용도가 다른데, 이는 맥북이나 일부 노트북에 달려 있는 슬롯에 장착 하기 위함 입니다. 물론 제가 쓰는 Thinkpad Edge E120 하고 E320 에 쓰려고 산거긴 한데, 활용도가 높아진 것은 모든 노트북에 SSD 를 달고 나서 입니다. 경제적 사정이 크게 좋지 못하다 보니 중국에서 물 건너온 256GB 이하의 SSD 를 달아 쓰다 보니 저장용량 부족은 물론, 자주 쓰기를 하지 ..
ffmpeg 2.8.2 에서 3.0.2 로 옮기다. 처음 Anystreaming windows client 를 만들면서 사용했던 ffmpeg 이 2.8.1 이었던 걸로 기억 합니다. 안드로이드나 타 플랫폼에서도 사용에 지장이 없던 버젼이라 안전빵에 쓰다가 2.8.2 로 올리면서 RTSP 재생을 하고 나면 무려 50MB 씩 메모리에 남아 있는 이상한 문제에 시달리기 시작 했었습니다. client 자체에 워낙 다양한 기능을 누가 원해서 끼워 넣다 보니 메모리 누수가 생긴 것인가?! 하고 긴장을 하고 최대한 단순하게 만든 내 코드에 무슨 문제가 생긴 것 인가 를 무려 3일이나 고민을 했습니다. (불행히 ffmpeg 2.8.2 적용은 아주 오래 전에 했었는데 메모리 누수가 있는지 일주일 전에 알았습니다...) 도저히 왜 메모리 누수가 생기는지 못찾고, 단지 ff..