본문 바로가기

프로그래밍

설계 준비 - 바람직한 설계의 특징 바람직한 설계의 특징.. 1. 복잡성 최소화 : 재치있는 설계는 피하며, 복잡성을 최소화. 간단하고 이해하기 쉬운 설계.2. 유지관리의 편리함 : 유지 보수 프로그래머를 위한 설계를 의미. 유지보수 프로그래머가 코드에 대해 물어볼 질문들을 상상해볼것.3. 느슨한 결합 : 프로그램의 서로 다른 부분들 간의 연결을 최소화하도록 설계하는것을 의미. 클래스간의 연결이 최대한 적도록 설계하여 추상화, 캡슐화, 정보은닉과 같은 방법을 사용. 연결이 최소화되면 통합/테스트/유지보수 시 작업을 줄일 수 있다.4. 확장성 : 내부구조를 해치지않고, 시스템의 가능성을 높일 수 있도록한다. 다른 부분에 영향을 미치지않고 시스템 일부분을 변경하도록, 예측 가능한 변경사항일수록 시스템에 더 적은 충격을 준다.5. 재사용성 : .. 더보기
cbd.. CBD (Component - Based Development) 컴포넌트..? 독립적인 서비스를 제공하는 소프트웨어 모듈. 하나의 덩어리로 구축된 소프트웨어 시스템 X소프트웨어 시스템 == 모듈들로 구성됨 O 소프트웨어 시스템상의 모듈 : 각각 독립적인 서비스를 제공하는 컴포넌트 하드웨어 컴포넌트 : 부품 = 소프트웨어 컴포넌트 : 클래스 컴포넌트 사용시 이점? 컴포넌트 재사용으로 손쉽게 SW시스템 구축 및 손쉽게 유지보수. page 21 더보기
atan2를 사용하여 각도를 구하기 atan, atan2의 차이는 그냥 매개변수의 갯수차이라고 한다. atan2는 특정한 x,y 좌표에 각도를 계산하도록 한다. degree로 뽑아내여 나오는 결과는 -180~180의 값이다.. degree to rad => pi / 180rad to degree => 180 / pi 230도의 예상결과는 -130가 나오고, 이럴경우 +360정도해주면될테고,130도의 예상결과는 130도를 뽑아낼수있다. 더보기
windows api Dialog Z Order 순서알기 참조 : http://hyacinth.byus.net/moniwiki/wiki.php/C%2B%2B/%28Windows%29Z-Order%20%EC%83%81%EC%9C%84%20%EC%9C%88%EB%8F%84%20%EB%B9%84%EA%B5%90 view plaincopy to clipboardprint?int GetZIndex(HWND hTarget) { int index = 0; HWND hNext = ::GetTopWindow(NULL); do { hNext = ::GetNextWindow(hNext, GW_HWNDNEXT); if (hNext == hTarget) break; ++index; } while (hNext); return index; } // 예 HWND hWnd1 = ::Find.. 더보기
qt 설치!! qt 5.3기반으로 설치한다. 내 PC환경은 64비트였음으로 파일명이 다를수있으니 직접 받는걸 추천한다. 참조영상 : http://www.youtube.com/watch?v=_nkhlhBwkjk 1. http://qt-project.org/downloads 에서 qt를받아 실행하고 설치햇다. 2. android sdk를 검색해서 나온 사이트에서 adt-bundle-windows-x86_64-20140702.zip 를 다운받음 sdk, android ndk를 검색해서 나온 사이트 ndk android-ndk32-r10-windows-x86_64 , jdk를 검색해서 나온 사이트 jdk jdk-8u11-windows-x64를 받음 apache를 검색해서? apache ant apache-ant-1.9.4-b.. 더보기
리서치 Qt 5.2를 사용한 소개 http://www.youtube.com/watch?v=-NdvLGbPAbc Qt 5.2에 대해서 간단하게나마 기기들간의 간단한 퍼포먼스정도? 확인할 수 있다. 과거 일을하며 Qt 4.xx 버전을 사용하면서 UI라이브러리의 개념으로보면 편리하다, 직관적이다라는 느낌도 많이받았다. 오히려 MFC보다 잘 정돈된 도큐먼트가 참 인터넷검색질을 많이 할필요가 없어서 좋았다. 요즘은 안드로이드뿐만아니라 각종 서로 다른 OS 그리고 장비들을 사용하는데 Qt를 사용하면서 항상 부곽됐던 멀티플랫폼의 장점이 드디어 활용할 기회가 커진다는데에 의 의를 두어 나도 열심히 자료를 모으면서 뭔가 작업해나가야 겠다. 어플을 만들기위해 java 혹은 objective c를 알아두면서 스타트한다는게 참 부담되는 일이었 는데 기존 내가.. 더보기
private 변수접근해서 값 바꾸기 TestDlg* pDlg = (TestDlg* )toolbarDlgPtr; int addressToolbar1 = reinterpret_cast(pDlg); int addressToolbar2 = addressToolbar1 + 22656; CEdit* pEdit = reinterpret_cast(addressToolbar2); pEdit->SetWindowTextA("바뀐다!!"); 더보기
GPL, LGPL 라이센스 차이 여기까지 오느라 고생많으셨습니다^^GPL 라이센스는 QT를 이용하여 프로그램을 만들었을때는 그 프로그램도 GPL 라이센스를 따라야됩니다. 즉, 만든 프로그램의 소스를 공개해야합니다. 그러므모, 상업용 프로그램을 만들 수는 없습니다. [본문으로]LGPL 라이센스는 Qt 라이브러리를 이용하여 프로그램을 만들었을때, 프로그램의 소스를 공개하지 않아도 됩니다. 즉, 상용 프로그램을 제작해도 문제가 없습니다. 다만, QT 라이브러리 소스를 수정하였을 경우는 공개를 해야합니다. 퍼온곳 :http://kiaak.tistory.com/entry/Visual-Studio%EC%97%90%EC%84%9C-QT%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0#footnote_link_42_2 더보기
32bit memory address 위키사전에서는 다음과같이 32비트를 정의한다. 컴퓨터 구조에서 32비트 정수, 메모리 주소, 다른 데이터 장치들은 32 비트 너비의 영역을 갖는다. 또, 32비트 CPU, ALU 구조는 이러한 크기의 레지스터, 주소 버스, 데이터 버스에 기반을 두고 있다.32비트는 또한 중앙 처리 장치의 버스(BUS)가 32비트 단위로 자료를 전송하는 컴퓨터 세대를 가리키기도 하며 이를 32비트 컴퓨터라고도 부른다. 32비트에 저장할 수 있는 정수 값의 범위는 0부터 4,294,967,295, 또는 −2,147,483,648부터 2,147,483,647까지이다. (2의 보수 변환 사용시) 그러므로 32비트 메모리 주소를 갖는 프로세서는 바이트 어드레싱을 할 수 있는 4 GB 메모리에 접근할 수 있다.외부 주소와 데이터 .. 더보기
c++ 사용 cast (캐스트 연산자) 긴설명보다 이정도? 다만, 실제적으로 일하면서 쓸경우는 c++의 캐스트연산자는 안쓰고, 아직도 c의 캐스트 연산자 즉 평소 아무생각없이 사용하는 형태로만 주로 써왔다. static_cast가 아마 비슷하겠지만, 좀 더 컴파일러 단에서 오류를 뱉어내서 좀 더 실수를 줄여주는 정도일 것이다. const, reinterpret는 잘은 사용안하지만, 그나마 프로페셔널한 코드에서 주로 보이는 것은 dynamic_cast이다. 상속관계에서 업캐스트와 다운캐스트를 자주 변환하고 한다. 업캐스트는 항상 캐스팅이 가능할지몰라도, 다운캐스트는 상황에 따라 다르다. 만약 올바른 상황에서 c의 캐스트연산 혹은 static_cast를 쓴다면 문제는 없겠지만, 그렇지 않을경우 잘못된 캐스트가 발생되어 런타임에 오류가 발생할 것이.. 더보기