"Developement" 검색결과 (142)
  • 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 ..

    Developement/C/C++
    2016.06.22 11:29
  • XML 을 통한 다국어 처리도 편리한 FLTK.

    XML 의 경우 여러 언어들을 처리 하기 위해 보통 UTF-8 인코딩을 사용합니다. 이 방식은 Windows 에서 사용하는 UNICODE 와 1:1 대응이 되지 않습니다, 그래서 보통 GUI 관련 쪽에서 바로 붙여 쓰기가 힘든 경우가 있는데, FLTK 의 경우 그대로 UTF-8 을 사용하고 있기 때문에 XML 에서 읽어온 다국어 코드를 별도의 변환 없이 사용이 가능 합니다. 그래서 올바른 Font 를 Load 한 상태 라면 (보통 FL_FREE_FONT 에 bind 해서 씁니다) 다국어 출력에 어려움이 없이 편리하게 구현이 가능하다는 장점이 있습니다. 또한 이런 부분은 타 OS로 소스를 그대로 사용할 경우 발생 할 수 있는 호환성도 매우 많이 해결 해 주기 때문에 자원 낭비를 많이 줄일 수 있는 장점이 ..

    Developement/C/C++
    2016.06.14 14:19
  • 개발자 초년생들을 위한 조언

    요즘은 개발자라 하면 다양한 직군들이 많이 존재 하는 시대 입니다만, 이전만 해도 C 나 C++ 로 개발 하는 것들이 많았고, 심지어 제 경우엔 그때 남들 다 쓰는 언어만 쓰면 재미 없다고 소시적 부터 쓰던 pascal 을 함께 병행 하기도 했습니다. 물론 inline assembler 를 즐겨 쓰는 이상한 취미 때문에 사용이 편이한 Borland 류를 더 쓴 것도 있습니다만.. 개발자로서 십수년 일을 해 오면서 무엇이 좋은것인가, 나쁜것 인가를 아직도 잣대를 대어 나누기는 힘들지만, 적어도 '이것은 최악이다' 를 격어 본 입장에서 '최소 이런 것들은 피하자' 라는걸 공유 하고자 글을 써 봅니다. 회사에 들어 가면 처음엔 당연 아무것도 모릅니다. 경력직이던 신입이던, 처음 회사 들어 가면 그 조직 또는 ..

    Developement
    2016.06.07 15:07
  • 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..

    Developement/C/C++
    2016.06.03 14:00
  • 리눅스에서 빠르게 TCP socket 서버 찾기.

    리눅스에서 자신의 IP 영역대에서 (A.B.C.n, n = 1~자기자신~255) 다른 서버가 있는지 찾기 위해서는 여러 방법이 있긴 하겠지만, 대부분 이 방법으로 찾는게 아닐까 합니다. 아래 코드는 해당 ip 에 TCP socket 이 열려 있는지 찾는 간단한 방법 으로 실제 AnyStreaming Client 에서도 아래와 같은 방법으로 (물론 Windows용으로 바꾼 코드) AnyStreaming 을 찾습니다. 실제론 FD_ISSET() 이후에 socket 을 다시 blocked 로 바꾼 다음 send() 를 통해 특정 명령이 전달 되는지 까지 검사하면 더 좋을 듯 합니다. 이 방법은 TCP socket 의 connect() 함수가 blocking 으로 동작 하는것을 감안해서 만든 날림 코드지만 꽤 ..

    Developement/C/C++
    2016.01.25 17:33
  • 리눅스내 현재 접속 ip 알기.

    리눅스나, 임베디드 리눅스 내에서 현재 연결된 장치에 따라 ip 를 알고 싶을 때가 있다, 이럴때 아래 코드를 사용할 수 있다. #include #include #include #include #include #include #include #include #include #include #include #include #include #include bool getmyip( const char* devname, struct in_addr* addr ) { struct ifreq ifr; int fdSockTest = -1; fdSockTest = socket( AF_INET, SOCK_DGRAM, IPPROTO_IP ); if ( fdSockTest >= 0 ) { strcpy( ifr.ifr_name..

    Developement/C/C++
    2016.01.25 17:23
  • 서비스 데몬을 만드려다 노가다 하다 ...

    시스템을 이제 다 만들어 가는지라, 기존에 일일히 실행 해서 쓰던 서버들을 이제 데몬으로 올리려 임베디드 리눅스 파일 시스템 /etc/rc.local 뒤에 뙇 넣어 놨더니 ... 하 ... rcS.d 세션이 끝나니 다들 죽으신다 ... 대체 언제적 문제인가 해서 back to the past. 현재 개발 하는 시스템은 squashfs 를 이용한 NAND writing 을 하기 때문에 미리 sqfs 를 만들 위치에서 부터 ARM ELF 로 만들어진 바이너리를 각각 /usr/sbin 안에 넣어 준다. 예를 들어 서비스 서버로 만들었던 것 중 하나가 asctrld 이라면 /usr/sbin/ 안에 asctrld 를 넣어 주는 것. 그런 다음, 아래 스크립트를 복붙 으로 /etc/init.d 안에 asctrld ..

    Developement/eLinux
    2015.12.29 15:04
  • AnyStreaming Win32 Client ...

    이제 CES 까지 한주 좀 더 남았습니다. 미국 까지 가서 데모 신나게 돌려야 하는 관계로 (나중에 source code 공개로 해야 하는 이유도 있지만) 급하게 2주가량 만에 만든 Windows 용 DirectX 가속 클라이언트를 완성 하긴 했습니다. 공개는 어차피 libffmpeg 쓴거라 공개 해야 하므로 나중에 github 나 bitbucket 에 올라가게 될지라 따로 올릴 필요는 없어 보입니다. DirectX 의 D2D 와 DSound 를 쓰는데, 이게 DirectX 10 부터 2D 지원이라고 하는군요. 일단 D2D 사용 하고 있어서 Windows7 부터나 구동 될 듯 합니다만, 100% MinGW-W64 로만 빌드 한 거라 MFC 처럼 지저분한 뭔가는 없을 듯 합니다. 소스가 오픈 되면 ffmp..

    Developement/C/C++
    2015.12.22 17:54
  • MinGW-W64 용 DirectInput 소스 (키보드,마우스,조이스틱)

    MinGW-w64 프로젝트 부터 DirectX 관련 SDK 가 포함 되어 있으므로 윈도우 어플 개발에 매우 편리함을 얻을 수 있습니다만, MFC 처럼 뭔가 꽁꽁 묶여져 있는거 찾기가 사실 어렵다 보니 직접 만들어 써야 하는게 많은건 사실 입니다. 대신 쾌적함을 얻을 수 있는건 덤 이지만 ... 그래서 제가 진행 중인 프로젝트 중에 DirectX 의 2D, input 을 가져다 쓰면서 좀 더 편리하게 써 보고자 만들었던 것을 공유 하고자 합니다. 사용은 간단 합니다. 먼저 현재 사용되는 윈도우에 생성 부분 쪽에 InitDirectInput() 를 사용하여 Dinput 을 초기화 합니다. 이떄 반환되는 값은 HRESULT 가 아니라 DXINPUT_INIT_RESULT_KEYBOARD, DXINPUT_INIT..

    Developement/C/C++
    2015.12.15 13:53
  • Win32 개발을 위한 Resource Editor 1.6.6

    현재 이 프로그램 홈페이지에서 설치본을 내려 받으면 100% 악독한 iStartWeb 뭐시기 malware 에 걸립니다. 참고 URL = http://www.resedit.net/ 몇일 전 이걸 내려 받았다가 저 malware 설치 된걸 지우느라 개고생 한걸 생각 해서 단순 압축본을 올립니다. 저작권은 resedit.net 에 있으며, 리패키징 금지 등을 개시 하지 않았으므로 일단 올려 두도록 합니다. 절대 해당 홈페이지에서 설치본을 받지 마시기 바랍니다. 개발자가 설치본에 악성 malware 를 넣은듯 한데, 아무리 돈이 궁해도 그렇지 내려 받는 사람들에게 독을 파는건 아닌 듯 합니다. 그래서 문제가 없는 바이너리를 설치 후 그대로 압축 해서 아래에 올립니다. 원래 설치본에 있는 malware 는 감염..

    Developement/C/C++
    2015.12.03 10:15
  • DirectX/Dsound 용 mp3 to wave 디코더, MinGW용 소스 & 라이브러리

    * 기존 v2 소스에 버그가 있어서 업데이트 되었습니다. 현재 v3, 큰 파일을 모두 디코딩 가능. 이 소스는 MinGW (gcc) 에서 DirectX sound (Dsound) 를 사용할 때, MP3 를 음원으로 사용할 경우 유용하게 쓸 수 있는 라이브러리 입니다. 원래 소스는 ffmpeg 에 있는 것을 사용한 상태 이며, 원본 소스가 C 용으로 만들어 져 있었기 때문에 변경 없이 쓰도록 만든 상태 입니다. ( libmp3wav 라이브러리 소스는 g++ 로 컴파일 불가 ) 사용 가능한 컴파일러 제한: i686-posix-dwarf-rev3, Built by MinGW-W64 project) 4.9.2 mp3towave 만 사용할 경우, libmp3wave.a 와 mp3wave.h 파일 압축 C++ 에서..

    Developement/C/C++
    2015.11.27 16:03
  • DirectX 2D 창 메뉴가 안뜨면 창을 옮기리.

    부제: DirectX 2D 와 DSound 함께 쓰기 @ Windows7, 8.x 저번 주 에 있었던 DirectX 2D 를 좀 더 개선 하여 다음과 같이 구현 하였습니다.PNG 이미지를 가져와서 D2D 이미지(텍스쳐)로 사용 하도록 함.Dsound 로 WAV 파일을 가져와 출력 하도록함, 백그라운드와 클릭 시 나오는 소리 2가지. 상단 30px 안에서 마우스 왼쪽 클릭 해서 끌면 창 전체가 이동 하도록 함. 렌더링을 thread 로 하도록 함.약간의 UI 적인 요소. 별 대단한 기법이 들어 간 것은 아닙니다만, DirectX 2D 와 Dsound 겹쳐서 쓰는 예제들이 너무 없어서 직접 병합 해 보았습니다. 소스는 MinGW-W64 에서 빌드 되도록 되어 있으며, Code::Blocks 의 프로젝트를 사..

    Developement/C/C++
    2015.11.23 17:38
  • DirectX 2D 창모드는 안되는 건가...

    H/W 가속을 통한 각 Frame 영상을 화면에다가 그리려고 하니 어찌 DirectDraw 는 너무 오래된 API set 이라 DirectX 2D 를 쓰려고 노력 중 입니다. 다만, 대부분 2D 가속을 쓰는 게임들이 창모드로 실행 되는 방법을 알기가 어렵다는 난해한 점에 허우적 거리고 있습니다만 ... 이 방법을 찾기 위해 좀 노가다를 해야 할 듯 하네요. GDI+ 를 쓰느니 이걸 써야 겠는데 ... GDI 에 2K 이상으로 크기가 리사이즈 된 이미지를 그리려니 이 방법 말고는 답이 없어 보입니다. 아... DirectX ... 손도 대기 싫었는데 ... 빌드 가능 환경 = Code::Blocks + MinGW-W64 (DirectX API 포함된 상태)

    Developement/C/C++
    2015.11.20 16:59
  • [FLTK] Win32 에서 HWND 를 제대로 못 얻어 올때

    일단 조이스틱, 마우스, 키보드의 일정 값들을 산술화 하는 테스트 프로그램을 FLTK 로 제작 중 이었습니다만, 이게 왠걸 ... DriectX 의 DInput 에 SetCooperativeLevel() 에서 계속 실패가 나는 것 이었습니다. 대체 왜 이러나 하고 보니, ( Process Hacker 사용 ) 엄? FLTK 에서 fl_xid( window ); 로 가져 온 HWND 와 실제 FLTK 에서 사용하고 있는 HWND 가 다릅니다.... 대체 저건 어디서 나온 값이지 ... 그래서 이전에 만든 FLTK 조이스틱 테스트 하는걸 보면, 이건 또 fl_xid() 로 정상인 HWND 를 넘겨 줍니다 ... 대체 왜 ?? 왜 ?? 왜 ?? 아마 FLTK 에서 2개 이상의 window를 생성 하고 있는 상..

    Developement/C/C++
    2015.08.07 11:32
  • [FLTK] + DirectX8 + MinGW, Direct Input 으로 조이스틱 쓰기 예제.

    바로 전에 올린 post 에 이어서 몇가지 작업을 더 해 보고 예제를 올려 볼까 합니다.이번에 적용한 것들은 다음과 같습니다.joystick.h/cpp(c 로 컴파일 가능) 으로 별도 API 처리.FLTK ( 주의: fltk-1.3.3-ts 사용해야 flushing 계속 해도 죽지 않음 ) 를 사용한 시각적 표현.pthread 로 polling 을 통한 update 부터 화면 표시 까지 구현.단, 이 예제에서는 Xinput 이나, Analog 부분 ( Z axis, Z rotate ) 부분 처리는 빠져 있습니다.polling 은 thread 내에서 sleep 을 30ms 하므로, 이론상으로 1초에 30 번 가량일 듯 합니다만, 이정도면 손가락이 신의 속도가 아니면 문제는 없어 보입니다. 예제는 Code:..

    Developement/C/C++
    2015.08.06 14:21