2014년 9월 29일 월요일

[미완] [개인][모임] 교회 모임

날짜: 2014년 09월 26일 (금) 19시 용강동

이정미, 오정은, 고경희, 오진욱, 박주오, 차호성, 나, 그 외 2명

1차: 마포본가: 128,000원
2차: 이박사의 신동막걸리: 132,000원
3차: 통큰후라이: 55,000원

총: 315,000원

2014년 9월 23일 화요일

[미완] [영화] 타짜 - 신의 손 (2014)

날짜: 2014년 09월 08일 (월)
상암 CGV 아이맥스

별: 3개

기억에 남는 장면: 신세경 엉덩이(?)

어떻게 보면 스토리가 화투가 중심이 아니고 주인공의 사랑이 중심이고 거기에 화투가 첨가 된 것 같은데...
그래서 이도 저도 아닌 그냥 오락 영화같다.

주인공의 러브스토리는 중심이기는 하나 별로 그렇게 공감도 안되고
타짜 1의 도박을 기대한 사람은 주인공이 기술이 없어서 맨날 걸린다;

막판에 복수를 하는데 그냥 쉽게 복수를 한다....

2014년 9월 19일 금요일

[미완] [C/C++] wcout 유니코드 출력

[미완] [C/C++] wcout 유니코드 출력

유니코드로 프로그램 작성 했으므로
당연히 cout 말고 wcout를 사용했다.

하지만 출력이 안된다;;
알고 보니 한글설정을 해야 한다.

그래서
std::locale::global( std::locale( "kor" ) );
이것을 추가했는데
안되는 경우가 있다.
왜냐하면 Grlobal Locale을 설정하는 것이라서
Stream에 미치지 않기때문이다.

그래서
 std::wcout.imbue( std::locale( "kor" ) ); // 이것을 추가하면 된다.
 std::wcin.imbue( std::locale( "kor" ) ); // cin은 이것을 추가

#include <iostream>
using namespace std;

int wmain ( int argc, wchar_t *argv[] )
{
 std::wcout.imbue( std::locale( "kor" ) ); // 이것을 추가하면 된다.
 std::wcin.imbue( std::locale( "kor" ) ); // cin은 이것을 추가

wcout << L"한글테스트" << endl;

wchar_t* str = L"wchar_t 한글테스트";
wcout << str << endl;

return 0;
}

2014년 9월 18일 목요일

[미완] [유틸] 무료 프로그램

 [미완] [유틸] 무료 프로그램

유료 프로그램을 대체 할 수 있는 무료 프로그램

네트워크 패킷 분석: Wireshark

알집 -> 7zip
알FTP -> FileZilla
EditPlus, UltraEdit -> Notepad++
MS 아웃룻 -> Thunderbird: Opera Mail도 있지만 우리회사 메일서버에 접속이 안되어서 직접써보지 못했음

포토샵 -> GIMP2: 두 프로그램의 사용법이 달라서 쉽게 변경이 힘들다.

MS Office -> LibreOffice or OpenOffice: 실제 사용해보니 문서호환이 안되는 부분이 있었서 아직 대체까지은 힘들듯 한다.




2014년 9월 17일 수요일

[미완] Code::Blocks에 GTK+ 설정

[미완] 코드블럭에 GTK+ 설정

코드블럭도 처음이고 GTK+도 처음이라
"Hello World!"에러를 노가다로 잡아서 설정법을 알아냈다.

환경
Windows 7 SP1 64bit(밑에 주소는 64bit용임)
Code::Blocks 13.12 다운 및 설치
(http://www.codeblocks.org/downloads/26)
GTK+ 3.6.4 다운 및 압축해제(나는 C드라이브에 해제)
(http://www.gtk.org/download/win64.php)

준비끝 이제 설정
1. Code::Blocks 실행 > File > New > Project... > Console application로 프로젝트 생성

2. main.cpp에서 GTK+기본("Hello World!") 입력
#include <gtk/gtk.h>

int main (int argc, char *argv[])
{
    GtkWidget *window;
    GtkWidget *label;

    gtk_init(&argc, &argv);

    /* Create the main, top level window */
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

    /* Give it the title */
    gtk_window_set_title(GTK_WINDOW(window), "Hello, world!");

    /* Center the window */
    gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);

    /* Set the window's default size */
    gtk_window_set_default_size(GTK_WINDOW(window), 200, 100);

    /*
    ** Map the destroy signal of the window to gtk_main_quit;
    ** When the window is about to be destroyed, we get a notification and
    ** stop the main GTK+ loop by returning 0
    */
    g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);

    /*
    ** Assign the variable "label" to a new GTK label,
    ** with the text "Hello, world!"
    */
    label = gtk_label_new("Hello, world!");

    /* Plot the label onto the main window */
    gtk_container_add(GTK_CONTAINER(window), label);

    /* Make sure that everything, window and label, are visible */
    gtk_widget_show_all(window);

    /*
    ** Start the main loop, and do nothing (block) until
    ** the application is closed
    */
    gtk_main();

    return 0;
}
컴파일 하면 에러발생

3. include 
위 메뉴에서 Settings > Compiler > Search directories탭 > Complier 탭에 include 폴더 추가
C:\gtk+-bundle_3.6.4-20130921_win32\include\gtk-3.0
C:\gtk+-bundle_3.6.4-20130921_win32\include\glib-2.0
C:\gtk+-bundle_3.6.4-20130921_win32\lib\glib-2.0\include -> lib에 있음
C:\gtk+-bundle_3.6.4-20130921_win32\include\cairo
C:\gtk+-bundle_3.6.4-20130921_win32\include\gdk-pixbuf-2.0
C:\gtk+-bundle_3.6.4-20130921_win32\include\atk-1.0
C:\gtk+-bundle_3.6.4-20130921_win32\include\pango-1.0

4. lib
위 메뉴에서 Settings > Compiler > Search directories탭 > Linker에 lib 폴더 추가
C:\gtk+-bundle_3.6.4-20130921_win32\lib

5. link livraries 추가
위 메뉴에서 Settings > Compiler > Linker settings 탭에서 
lib 폴더(C:\gtk+-bundle_3.6.4-20130921_win32\lib)에 있는 .a파일(33개) Add
6. dll 복사
bin폴더(C:\gtk+-bundle_3.6.4-20130921_win32\bin)에 있는 dll 33개를
Code::Blocks 프로젝트 파일이 있는 폴더에 복사
7 실행

GTK+ 공부할려고 하는데 자료가 많이 없다; 이 기본창 출력 설정하는데도 하루를 보넨것 같다;; 그냥 QT 공부할까...

프로젝트 파일 -> 그렇게 의미는 없다 설정이 중요하기 때문에
https://drive.google.com/file/d/0B1lR2TK2hWZeUUNyUVpMODlGM2s/edit?usp=sharing

2014년 9월 16일 화요일

[미완] [Win32/MFC] CxImage

CxImage 설정

오픈소스로 zlib라이센스로 상용으로 써도 상관이 없다.

이미지 출력 라이브러리다.

홈페이지(http://www.xdp.it/cximage/)에서 cximage701_full 다운
소스포지에 가면(http://sourceforge.net/projects/cximage/) Cximage702_full가 있다.
701은 VS2005 702는 VS2010을 지원한다.

압축해제후 CxImgLib.sin 실행
CxImage, jpeg, png, zlib 프로젝트 설정을 변경 해야 한다.
1. 구성 속성 > 일반 > MFC사용 -> 표준 Windows라이브러리 사용

2. 구성 속성 > C/C++ > 코드 생성 > 런타임 멤버 맞춤 Debug(Unicode Debug)는 다중 쓰레드 디버그(/MTd), Release(Unicode Release)는 다중 쓰레드(/MT)

소스 수정
CxImage 프로젝트의 ximacfg.h을 열고 원하는 formats의 define값을 1로 변경
나는 BMP, GIF, JPG, PNG, ICO 5개의 이미지만 쓰기때문에 이것만 1이고 나머지는 0으로 셋팅

프로젝트에서 CxImage, jpeg, png, zlib 4개 프로젝트만 컴파일한다.
jpeg와 png프로젝트는 format값을 1로 해서 해야하고
zlib프로젝트는 png프로젝트가 zlib를 사용하기때문에 png format지원시 꼭 zlib프로젝트도 해야한다.

컴파일 후 각 프로젝트의 생성폴더에 가보면 lib파일이 있다.

그리고 cxImage의 헤더파일이 필요하다.
cximage701_full\CxImage\ 폴더에 가서 헤더파일 25개를 복사하면 된다.

이렇게 4개의 lib파일과 25개의 헤더파일면 준비 끝
나는 밑에 이미지처럼 CxImage폴더를 만들고 그 안에 include에 헤더파일 25개를 넣고
lib폴더에 각 컴파일별로 lib파일을 넣어놓았다.


실제사용 예
win32로 기본창 출력 프로그램을 만들고 나서
아까 만든 CxImage폴더를 테스트 프로젝트에 복사후(나는 .sln이 있는 폴더에 복사를 했다.)
1. include 추가
속성 > C/C++ > 일반 > 추가 포함 디렉터리 -> ..\Cximage\include

2. lib 추가
속성 > 링커 > 입력 > 추가 종속성 ->
..\CxImage\Lib\Unicode_Debug\CxImage.lib
..\CxImage\Lib\Unicode_Debug\Jpeg.lib
..\CxImage\Lib\Unicode_Debug\png.lib
..\CxImage\Lib\Unicode_Debug\zlib.lib

설정은 다 끝났다.
소스에서는 ximage.h 헤더파일 추가 후
CxImage를 생성해서 사용하면 된다.

CxImage 사용법은 CxImage 문서나 인터넷을 참조하면 되고
(나도 출력만 암)

현재 테스트 프로젝트 컴파일시
1>LINK : warning LNK4098: 'LIBCMT' defaultlib가 다른 라이브러리와 충돌합니다. /NODEFAULTLIB:library를 사용하십시오
Warning가 발생중;;

나는 BMP, JPG, PNG만 출력하면 되기때문에 이 3개의 포맷만 설정했지만 자신이 필요한 포맷을 설정하면 된다.
그리고 dll도 만들려고 했는데 에러가 나와서 dll은 포기 (담에 시간될때 해봐야 겠다.)

테스트 파일 첨부합니다.밑에 주소(구글드라이브) 클릭설정을 모르겠네;;
그리고 구글아이디도 필요하네.. 다른 방법을 생각해봐야겠다.(일단 업)
구글은 압축이 깨져서 다음에 업로드 함
http://cfile211.uf.daum.net/attach/2170674A559A0450252A13

* 나는 이미지처리는 CxImage만 있으면 될 줄 알았는데
libjpeg가 있다.
libjpeg  > libjpeg 6b-SIMD > libjpeg-turbo 파생이 되었는데
CxImage는 libjpeg 6b를 사용중이라고 한다. (현재는 8b이상 나왔다고 함)
속도가 느리다고 함 libjpeg-turbo는 속도가 빠르고 크롬에서 사용한다고 한다.
그래서 담에 .jpg는 libjpeg-turbo를 쓰고 나머지는 CxImage로 쓰는게 좋을 듯

2014년 9월 15일 월요일

[미완] [C/C++] STL 종류

STL 종류

이번에 STL을 심도있게 공부를 해 볼려고 구글에서 STL를 쳤는데...
나는 STL은 컴파일러가 지원하주는 건줄  알았는데 별도로 존재를 한다.(몰랐네;;)

--- STL 종류별
SGI STL: SGI사가 만든 STL로 2000년 6월 8일에 v3.3이 마지막으로 리릴즈 되었다.
(https://www.sgi.com/tech/stl)

STLport: SGI STL을 여러 플랫폼에 맞게 사용할 수 있게 포팅해 놓은 STL이다. 입출력같은 경우는 시스템에 종속적이다. 그래서 STLPort가 나왔다.
오픈소스이고 상업적으로 사용해도 제한이 없다.
(http://www.stlport.org)

Dinkumware STL: 상용 STL로 최신 STL을 가장 잘 적용(성능과 별개)한다 부터 size()가 느리다, std::string는 사용하면 안된다등등 많은 논쟁이 있다.

GNU libstdc++: GNU에서 만든 STL(한글자료가 거의 없어서...;)

--- 컴파일별
MS 컴파일: Dinkumware STL을 사용중이고 VS6.0은 C++ 표준이 나오기 전에 나와서 VS 6.0에서는 내장 STL(Dinkumware)을 사용하면 안되고 STLport를 사용해야 하고 이때 많은 사람들의 신뢰를 잃었다.
그래서 일까 그 이후 많이 안정화가 되어서 이제는 굳이 외부 STL을 쓸 필요가 없다고 얘기하는 사람과 안좋다고 얘기하는 등등 의견이 나뉜다.

GCC: 초기에 SGI STL을 사용하다가 이제는 GNU libstdc++를 사용한다.

볼랜드 C++: 6부터 로그웨이브의 라이브러리를 버리고 STLport사용

--- 주의할 점
내가 성능쪽 개선이나 그쪽 전문가가 아니라 어떤 STL을 써야 한다고 딱 얘기는 못하겠지만 STL를 쓸때 한가지 STL만 사용해야 한다.

2014년 9월 5일 금요일

[미완] 주식 이익금 계산 오류

주식은 매수할때 매수값의 증권사 수수료(키움기준0.015%)가 붙고
주식을 매도할때는 매도값의 증권사 수수료 + 세금(0.3%)가 붙는다.

예를 들면 100,000원짜리 주식을 매수하면 수수료로 15원을 낸다.
반대로 100,000원에 주식을 매도하면 세금+수수료인 315원을 낸다.

얼마 이익(%)이면 수수료를 제하고 이익일까가 궁금해졌다.

당연히 이익이 0.34%가 나면 그때부터 이익이다.
예) 100,000원에 주식을 매수하면 수수료로 15원
0.34% 이익이 난 100,340원에 매도를 하면 수수료와 세금을 포함해서 316.071원
이익금은 340원인데 각종 수수료 및 세금의 합계는 331.071원(15원+316.071원)이다.
즉 8.929원(0.008%) 이익이다.

증권사마다 수수료가 다르다.
그래서 증권사 수수료가 얼마일때 수익률이 몇%이면 수익구간인지를 공식으로 구현할려고 한다.

---
증권사 수수료: X
수익율: Y
주식가격: a
세금: b 일때

이익금 = a * Y
매수시 세금 = a * X
매도시 세금 = (원금+이익금)*(세금+수수료) = [a+(a*Y)] * (b+X)

최종계산은
이익금 - 매수시 세금 - 매도시 세금 = 0인 경우를 찾으면 된다.
(a*Y) - (a*X) - { [a+(a*Y)] * (b+X) } = 0
주식가격 a=1입력 우리는 %를 구하는것이니
(Y) - (X) - { [1+(Y)] * (b+X) } = 0
세금 B=0.3%임
(Y) - (X) - { [1+(Y)] * (0.3+X) } = 0
정리 시작
Y - X - [ (1+Y)*0.3X ]= 0
Y - X - [ 0.3X + 0.3XY ] = 0
Y - X - 0.3X - 0.3XY = 0
Y - 1.3X - 0.3XY = 0
Y - 0.3XY - 1.3X = 0
(1 - 0.3X)Y - 1.3X = 0
(1 - 0.3X)Y = 1.3X
Y = 1.3X/1-0.3X

키움기준 X=0.015 대입
Y = (1.3*0.015)/(1 - 0.3*0.015)
Y = 0.0195 / 1 - 0.0045
Y = 0.0195/ 0.9955
Y = 0.019......

대략 0.34가 나와야 하는데 나의 계산은 어디서 잘못 된것인가;;