300x250
반응형

 

 

 

SQLLite 라는 프로그램 기준으로 작성하였습니다.

 

 

[ 기본 테이블 구조 ]

 

쿼리를 날리기전 테이블 구조는 아래와 같습니다.

테이블 생성 쿼리

create table back_data(volume_sq integer primary key, data_dt datetime, value float, flow float, type integer )

 

 

 

인덱스 추가

 

data_dt, type 2개 항목을 인덱스 추가 하겠습니다. 추가되는 인덱스 명은 index1 입니다.

 

create index index1 ON back_data(data_dt, type)

                   [ 인덱스명]      [테이블명(컬럼, 컬럼 ...)]

 

 

인덱스를 추가하게 되면 인덱스 명 Index1 이라는 항목에 data_dt, type 2항목이 추가된걸 볼 수 있습니다.

 

 

 

 

 

 

300x250
반응형
300x250
반응형

 

 

 

 

걸으면 메디블록이 적립

 

오늘은 좋은 앱이 있어서 앱을 소개 해 드립니다.

건강하게 하루 최대 1만보 걷고 메디블록 코인을 받아보아요

2000, 5000, 10000 걸음 당 받을 수 있습니다.

현재 코인 가격이 저점이라 이기회에 많이 모아보아요

하루 7메디 블록 적립 가능

( 현재 시세로 약 원화 : 190원)

 

메디블록은 업비트에 상장된 코인입니다

 

 


 

 

 

저는 현재 22 코인을 벌었습니다.

(약 598 원 ㅋ)

 

 

 

 

 


 

 

 

사진 설명을 입력하세요.

 

 

 

 

 

[ 초대코드로 가입하기 ]

초대 코드 : AU9H01

가입 시 초대코드를 입력하면 3개의 코인을

더 받을 수 있습니다.

감사합니다 ^^

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

300x250
반응형
300x250
반응형

 

 

[ 프로그램 UI ]

프린트 버튼을 누르면

 

위와 같이 프린트 다이얼로그가 뜨면서 인쇄할 수 있습니다.

(프린트 다이얼로그가 안뜨게 하는 코드도 첨부)

 

 

[ 주요 메인 코드 ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
void CPrintTestDlg::OnBnClickedButton1()
{
    CTime t = CTime::GetCurrentTime();
    CString str_time;
 
    int temp_year = (int)(t.GetYear() / 100* 100;
    temp_year = t.GetYear() - temp_year;
 
    str_time.Format(_T("Capture_%02d%02d%02d_%02d%02d%02d.png"), temp_year, t.GetMonth(),
        t.GetDay(), t.GetHour(), t.GetMinute(), t.GetSecond());
    save_path_png_ = GetExecutedPath() + str_time;
 
    //1. 이미지 저장
    Capture(save_path_png_);
 
    //2. 이미지 프린트
    PrintOutImage(save_path_png_);
 
    //3. 파일 삭제
    DeleteFile(save_path_png_);
}
 
cs

버튼을 누르면 현재 시간으로 파일 경로를 만듭니다.  그 이 후

 

1. Capture() : 이미지 캡쳐 및 저장 함수 ( 듀얼 모니터 인식 )

2. PrintOutImage() : 이미지 출력 함수 ( 출력 다이얼로그 ON / OFF 가능)

3. DeleteFile() : 파일 삭제 함수

 

와 같은 순으로 함수가 호출 됩니다.

 

 

[ 나머지 함수 코드 ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
 
CString CPrintTestDlg::GetExecutedPath()
{
    //실행파일 경로 구하는 함수
    CString strResult;
    CString strPath;
 
    if (GetModuleFileName(nullptr, strPath.GetBuffer(_MAX_PATH + 1), MAX_PATH) != FALSE)
    {
        strPath.ReleaseBuffer();
        strResult = strPath.Left(strPath.ReverseFind('\\'+ 1);
    }
 
    return strResult;
}
 
 
CPoint CPrintTestDlg::GetPopupOffset()
{
    CPoint point;
 
    CRect rect;
    this->GetWindowRect(rect); // 메인 다이얼로그 Rect를 받아야 함
    point.x = rect.left;
    point.y = rect.top;
 
    return point;
}
 
 
void CPrintTestDlg::Capture(CString file_name)
{
    CRect rect;
    GetClientRect(rect);
 
    CWnd* pWndDesktop = GetDesktopWindow();
    CWindowDC ScrDC(pWndDesktop);
 
 
    int sx = rect.left;
    int sy = rect.top;
 
    const CPoint offset = GetPopupOffset();
    sx += offset.x;
    sy += offset.y;
 
    int cx = rect.Width();
    int cy = rect.Height();
 
    CImage Image;
    (void)Image.Create(cx, cy, ScrDC.GetDeviceCaps(BITSPIXEL));
    CDC* pDC = CDC::FromHandle(Image.GetDC());
    (void)pDC->BitBlt(00, cx, cy, &ScrDC, sx, sy, SRCCOPY);
    Image.ReleaseDC();
 
    CString str_save;
    str_save = file_name;
    long result = Image.Save(str_save, Gdiplus::ImageFormatPNG);
 
    if (result < 0)
    {
        (void)AfxMessageBox(_T("캡쳐 오류"));
    }
}
 
 
void CPrintTestDlg::PrintOutImage(CString file_name)
{
    int nWidth, nHeight;
    CClientDC dc(this);//this->pImgWnd
    CDC MemDC;
    MemDC.CreateCompatibleDC(&dc);
 
    CRect rect;
    GetClientRect(rect);
    nWidth = rect.Width();
    nHeight = rect.Height();
 
    CBitmap BMP;
 
    CImage image;
    image.Load(file_name);
    if (image.IsNull() == false)
    {
        int si = image.GetWidth();
        int sih = image.GetHeight();
        BMP.Attach(image.Detach());
 
        HANDLE hDib;
        LPSTR pDib;
        LPBITMAPINFO lpBitInfo;
        HANDLE hlpBitInfo;
 
        hDib = GlobalAlloc(GHND, nWidth*nHeight * 3);
        pDib = (LPSTR)GlobalLock(hDib);
        hlpBitInfo = GlobalAlloc(GHND, sizeof(BITMAPINFOHEADER) + sizeof(BITMAPINFO));
        lpBitInfo = (LPBITMAPINFO)GlobalLock(hlpBitInfo);
 
        lpBitInfo->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
        lpBitInfo->bmiHeader.biWidth = nWidth;
        lpBitInfo->bmiHeader.biHeight = nHeight;
        lpBitInfo->bmiHeader.biPlanes = 1;
        lpBitInfo->bmiHeader.biBitCount = 24;
        lpBitInfo->bmiHeader.biCompression = BI_RGB;
        lpBitInfo->bmiHeader.biSizeImage = nWidth * nHeight * 3;
        lpBitInfo->bmiHeader.biXPelsPerMeter = 0;
        lpBitInfo->bmiHeader.biYPelsPerMeter = 0;
        lpBitInfo->bmiHeader.biClrUsed = 0;
        lpBitInfo->bmiHeader.biClrImportant = 0;
 
        HDC hdc = ::GetDC(this->m_hWnd);
        GetDIBits(hdc, (HBITMAP)BMP, 0, nHeight, pDib, lpBitInfo, DIB_RGB_COLORS);
        ::ReleaseDC(this->m_hWnd, hdc);
 
        static DOCINFO docinfo = { sizeof(DOCINFO), _T("프린트"), NULL };
 
 
        //팝업창 안띠우고 기본 설정 프린터로 인쇄
        //CPrintDialog dlg(TRUE, PD_RETURNDEFAULT);
        //dlg.DoModal();
 
        //팝업창 뛰우고 프린터 선택해서 인쇄
        CPrintDialog dlg(FALSE);
        if (dlg.DoModal() == IDCANCEL)
        {
 
        GlobalUnlock(hDib);
        GlobalFree(hDib);
        GlobalUnlock(hlpBitInfo);
        GlobalFree(hDib);
 
        DeleteObject(BMP.m_hObject);
 
        DeleteDC(MemDC.m_hDC);
        DeleteDC(dc.m_hDC);
 
        return;
        }
 
 
        DEVMODE *pDevmode = (DEVMODE*)dlg.GetDevMode();
        pDevmode->dmOrientation = 2;
        
        HDC hpdc = dlg.CreatePrinterDC();
 
        int cy = GetDeviceCaps(hpdc, VERTRES);
        int cx = GetDeviceCaps(hpdc, HORZRES);
 
        if (StartDoc(hpdc, &docinfo))
        {
            if (StartPage(hpdc))
            {
                StretchDIBits(hpdc,
                    00, cx, cy, 0, nHeight - sih, si, sih, pDib, lpBitInfo, DIB_RGB_COLORS, SRCCOPY);
                //image.StretchBlt(image.GetDC(), 0, 0, nWidth, nHeight, SRCCOPY);
                EndPage(hpdc);
            }
            EndDoc(hpdc);
        }
 
        GlobalUnlock(hDib);
        GlobalFree(hDib);
        GlobalUnlock(hlpBitInfo);
        GlobalFree(hlpBitInfo);
 
        DeleteObject(BMP.m_hObject);
 
        DeleteDC(dc.m_hDC);
        DeleteDC(MemDC.m_hDC);
        ::RestoreDC(hpdc, -1);
    }
}
cs

GetExecutedPath(); // 실행 파일 경로 확인
GetPopupOffset(); // 듀얼 모니터 좌표인식
Capture(CString file_name); : 화며 캡쳐 및 이미지 저장
PrintOutImage(CString file_name); : 출력

 

 

[소스파일 다운로드] 아래

PrintTest.zip
3.48MB

300x250
반응형
300x250
반응형

 

 

 

 조합원 가입

새마을금고, 농협 수협, 신협 

 

2금융에서 세금 혜택을 받으려면 조합원(준조합원, 간주조합원)에 꼭 가입을 해야 합니다. 

조합원(준조합원, 간주조합원)에 가입해서 예금이나 적금을 개설하면 세금 혜택을 받을 수 있습니다.

 

Q. 2금융에서의 세금 혜택이란?

2금융에서의 세금 혜택이란 성인 1인당 예적금 가입금액 3천만 원 한도로 이자소득에 대해 1.4%의 낮은 과세가 적용되는데요. 세금우대로 예적금 가입 시 세금이 적게 떨어지는 효과가 있습니다. 

 

 

 

 

2금융에서 세금혜택 받으려면? 2금융의 세금혜택이란?

Q. 세금우대 3천만 원 한도는 각 금융기관마다 3천만 원씩인가요?

아니오. 예적금 가입금액 3천만 원 한도는 2 금융 전체 합산 한도입니다. 예를 들자면, 만약 새마을금고에서 세금우대한도를 써서 예금으로 2천만 원을 가입하고, 수협에서 세금우대한도를 써서 적금으로 1천만 원에 가입했다면 3천만원 한도를 모두 채운것입니다. 따라서 세금우대로 가입한 예적금을 해지하기 이전까지는 일반과세로만 가입이 가능합니다. 

 

Q. 세금우대와 일반과세 실 수령 이자 비교 예시

1천만원 2프로 예금을 한다면 세금이 떨어지기 전 20만 원의 이자금액이 발생합니다. 이때, 일반과세의 경우 세전 이자 20만 원에 대해 15.4%의 세금이 떨어지지지만, 세금우대의 경우 1.4%의 농특세만 떨어집니다. 세후 수령액을 보시면 일반과세 169,200원과 세금우대 197,200원. 이자금액에서 28,000원이 차이 나는 것을 보실 수 있습니다. 같은 금액 이율이지만 실수령이 자금액이 크다는 것을 알 수 있습니다.

 

 

 

 

300x250
반응형
300x250
반응형

 

 

https://happybono.wordpress.com/2017/07/25/visual-studio-%EC%9D%98-%EC%88%A8%EA%B2%A8%EC%A7%84-%EA%B8%B0%EB%8A%A5-1-toolbox-%EB%8F%84%EA%B5%AC-%EC%83%81%EC%9E%90-%EC%97%90-%EC%86%8C%EC%8A%A4-%EC%BD%94%EB%93%9C-%EC%A1%B0%EA%B0%81-%EB%B3%B4/

 

Visual Studio 의 숨겨진 기능 1 : Toolbox (도구 상자) 에 소스 코드 조각 보관하기

[도구 상자의 소스 코드 조각 보관 기능 활용하기] Visual Studio 의 Toolbox (도구 상자) 에 특정 소스 코드를 보관하고, 해당 코드를 선택하여 코딩 시 필요한 곳에 삽입하실 수 있습니다. 해당 기능은

happybono.wordpress.com

 

300x250
반응형
300x250
반응형

 

 

 

현재는 Mstick 2가  나왔습니다

Mstick 1은 가격이 네이버 최저가 기준으로 89,000 원 하네요 많이 떨어졌습니다.

 

그냥 USB 꼽으면 엠스틱이 휘어서 파손 될 수 있으니 꼭 케이블로 연결 하시기 바랍니다.

 

 

 

차에서 설정에 들어가서 Android Auto를 선택해 줍니다.

 

 

 

연결되면 이런 기본 화면이 나옵니다.

테더링 키셔서 WIFI 연결 해주시고 Play 스토어에서 앱을 다운받고 사용해 주시면 됩니다.

 

 

 

 

 

후기 영상 입니다. 짧지만 소리와 영상 화질을 확인해보시기 바랍니다.

소리가 밀린다는 애기가 있는데 저는 잘 모르겠네요

이거만 보고있는게 아니라 운전도 해야 하니...

 

저는 별5개로 만족하고 잘 쓰고 있습니다.

단 한달 휴대폰 공유 데이터 용량이 제한되어 있으니 많이 사용 하신다면 영상은 설정에서

저화질로 쓰시기 바랍니다.

 

 

 

 

 

300x250
반응형
300x250
반응형

https://coding-factory.tistory.com/

 

코딩팩토리

My life depends on my efforts

coding-factory.tistory.com

 

300x250
반응형
300x250
반응형

https://wikidocs.net/

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

300x250
반응형

+ Recent posts