tstring 클래스는 std::basic_string<> 탬플릿 클리스를 상속받은 클래스이다.

지금까지 std::string이든 std::wstring이든 사용하면서 불편한 점이 바로 CString에는 있는 format()함수가 없다는 것이다.

이를 위해 wsprintf를 사용한다든지 했을텐데 필자 역시 불편하여 이를 위한 유틸리티 함수를 몇 개 만들어본다. 기본 개념은 _snprintf() 라는 함수의 첫번째와 두번째 인자에 NULL과 0을 넣으면 실제 완성된 문자열의 길이를 리턴해 준다.

이 길이를 이용해서 버퍼를 할당하고 완전한 _snprintf() 함수를 호출하여 마무리 한다.

#include "tstring.h"
...
...
void CMFCApplication1Dlg::OnBnClickedButton1()
{
	tstring a;
	std::format(a, _T("aaa : %.3f"), 0.2232487);
	std::append_format(a, _T("==> abc : %s"), _T("mjp") );
	MessageBox(a.c_str());
}

결과는 다음과 같다.



소스파일은 첨부파일에서 다운받으세요.

tstring.7z



액셀에서 매크로는 아주 편리한 기능을 합니다.

거기다 VB 언어로 되어있어 프로그래밍도 가능하죠.

매크로로 2개의 셀을 자동으로 병합해 주는 기능을 만들어볼까 합니다.


아래 그림과 같이 셀이 준비 되어있다고 할때,

기존에는 2개의 셀을 선택한 다음에 마우스 클릭으로 병합을 일일이 해 줘야 하는데요

한, 두개면 상관 없지만 이게 몇 십개 몇 백개라면 문제가 됩니다. 시간이 오래걸리죠.

이 작업을 매크로로 하게 되면 쉽게 처리할 수 있습니다.



우선 매크로를 기록해야 합니다.

보기 탭의 매크로를 눌러보면 메뉴가 나오는데 거기서 매크로 기록을 누르세요.



병합 작업을 쉽게 하기 위해서는 단축키가 필수인데요.

단축키는 알아서 편리한 단축키로 설정하세요.

저는 CTRL+Q로 지정하였습니다.



단축키 지정이 끝나고 확인을 눌렀으면 이제 그냥 매크로 기록 중지하세요.

매크로 내용은 직접 넣을테니까요.



매크로 기록이 중지 되었으니 이제 편집을 해야죠.

편집하기 전에 매크로 보기를 해야 합니다.



매크로 목록이 나오면 "편집" 버튼을 누릅니다.




매크로를 편집할 수 있는 비쥬얼베이직 창이 실행되는데요...

여기다가 아래 코드를 넣으면 끝입니다. 소스는 아래에 있으니 복사해서 붙여넣기 하세요.




소스를 모두 붙여 넣었으면 이제 테스트 해봐야겠죠.

A의 1번 셀을 선택하고 단축키(저는 CTRL+Q)를 눌러봅니다.

아주 잘 실행되서 병합이 한방에 되었습니다.

B번 셀도 해보고, C번 셀도 해봤습니다.

모두 병합되었네요.




아래의 소스코드를 적당하게 복사해서 비쥬얼 베이직프로그램 창(매크로 편집 창)에 붙여넣으세요.


Sub 매크로1()
'
' 매크로1 매크로
'
' 바로 가기 키: Ctrl+q
'
    
    On Error Resume Next
    
    CurRow = ActiveCell.Row
    CurCol = ActiveCell.Column
    
    ' 병합할 셀의 내용을 지워야 확인창이 안뜬다.
    ' 한 셀의 내용이 지워진다라는 내용의 확인창.
    Cells(CurRow + 1, CurCol).Value = ""
    
    ' 현재 셀과 다음 셀을 선택한다.
    Range(Cells(CurRow, CurCol), Cells(CurRow + 1, CurCol)).Select
    
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Selection.Merge
    
End Sub


이미지 뷰어 많이 사용하실텐데요...

오늘 소개해 드릴 이미지 뷰어 프로그램은 JPEGView라는 오픈소스 프로그램입니다.

UI가 정말 심플하고 이미지만 보입니다. 그리고 정말 빠릅니다. 프로그램 실행속도가 거의 즉각이라 할 수 있습니다.

많이들 사용하시는 알씨 프로그램이 광고도 있고 쓸데없는 기능들이 많아 실행되는 속도가 느리죠.

프로그램 실행속도가 거의 즉각이라 할 수 있습니다.

군더더기 없이 깔끔하고 간단한 이미지 조작 간단하고 최고의 이미지 뷰어라 말할 수 있을 것 같습니다.

물론 개인적으로 선호하는 것이 달라 각자 써 봐야 알겠죠.

이 JPEGView 프로그램을 사용하기 전에는 구글의 Picasa 프로그램의 이미지 뷰어를 사용했었습니다.

Picasa 프로그램의 VIewer 역시 좋은데 필요한 Viewer의 기능을 쓰기 위해 덩치 큰 프로그램을 사용하려고 하니 부담이 된게 사실이었습니다.

그리고 이 프로그램의 장점 중의 하나는 바로 설치가 필요없이 바로 사용할 수 있다는 점이겠죠.


아래와 같이 이미지만 보여주고 ZOOM 하면 오른쪽에 스크롤할 수 있도록 MAP이 보여집니다.

마우스를 움직이면 하단에 버튼들이 보이는데 마우스를 올리면 기능 설명이 나옵니다.




프로그램에서는 기본적인 화질 조절 기능이 지원됩니다. 밝기/대비/음영/Saturation 등등 마우스를 내리면 나옵니다.







우선 본 프로그램을 다운 받으세요.

http://sourceforge.net/projects/jpegview/

아래 사이트의 다운로드가 귀찮으시면 여기 제 블로그에서 바로 다운 받으세요.

JPEGView_1_0_32_1.zip






다운 받으셨으면 압축을 푸세요.





원하는 OS 타입에 따라 해당 폴더를 복사하세요. 32비트 OS의 경우 JPEGView32를 64비트 OS의 경우 JPEGView64를 복사하세요.

저는 32비트 OS라 JPEGView32를 복사합니다.

그리고 Program Files 폴더에 복사를 합니다.





이제 폴더에 들어가서 실행파일 단축 아이콘을 만듭니다.


단축 아이콘을 잘라내기 합니다.

왜냐면 이제 시작메뉴에 올려 놔야죠.

설치 프로그램이 없다보니 이런 작업을 수작업으로 해야하네요. ㅎ


C:\ProgramData\Microsoft\Windows\Start Menu\Programs 


폴더로 이동합니다.

그리고 여기에 붙여넣기를 합니다.



그러면 시작메뉴에 바로가기가 생성됩니다.





이제 이미지를 클릭하면 자동으로 실행되도록 하겟습니다.

우선 JPEGView.exe를 더블클릭해서 실행합니다.

그런 다음 실행되는 대화상자 닫기 하세요. 그러면 심플한 검은색 화면이 나오는데 오른 마우스 누르고 설정/관리 메뉴 들어간 다음 set as default viewer 선택하세요.







여기까지 하셨으면 원하는 확장자를 연결할 수 있도록 대화창이 실행됩니다.

원하는 확장자를 선택한 후 OK 누르면 끝!








빠르고 직감적이고 심플하고 편리하고...

좋네요.

그런데.... PRINT 기능 없네요.. ㅠㅠ 참고하세요.








































현재 웹페이지에 있는 이메일 주소를 모두 가져오는 소스(함수)




function extractEmails (text)
{
    return text.match(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi);
}



function t()
{
	var col = document.getElementsByTagName( 'SPAN' );
	var count = col.length;
	var i = 0, idx_at, idx_start, idx_end;
	var e, str, ret;

	ret = "";

	for( i =0; i < count; i ++ )
	{
		e = col.item(i);
		str = e.innerText;

		idx_at = str.indexOf( '@' );
		if( idx_at > 0 )
		{
			ret = ret + extractEmails(str) + "\n";
		}
	}

	return ret;
}


CScrollView의 윈도우의 ScrollBar는 윈도 개발 초기에 SHORT형 자료형을 기반으로 개발되었기 때문에 scrollbar의 thumb을 잡고 이동할때 32767을 넘는 순간 오동작을 하게 된다.

이 경우 아래와 같이 WM_HSCROLL과 WM_VSCROLL을 핸들링해서 아래 코드를 집어 넣으면 간단히 해결된다.


void CDemoView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
	SCROLLINFO si = { 0, }; 
    si.cbSize = sizeof(SCROLLINFO); 
    si.fMask = SIF_ALL; 
    GetScrollInfo(SB_HORZ, &si); 
    nPos = si.nTrackPos; 

	CScrollView::OnHScroll(nSBCode, nPos, pScrollBar);
}

void CDemoView::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
	SCROLLINFO si = { 0, }; 
    si.cbSize = sizeof(SCROLLINFO); 
    si.fMask = SIF_ALL; 
    GetScrollInfo(SB_VERT, &si); 
    nPos = si.nTrackPos; 

	CScrollView::OnVScroll(nSBCode, nPos, pScrollBar);
}


위 방법은 CScrollview를 사용할 때의 이야기고, CScrollBarCtrl 클래스르 직접 사용하거나

혹은, CScrollView가 아닌 다른 View에서 문제를 봉착하였을 경우 GetScrollInfo()함수를 이용하여 적당히 처리하면 해결할 수 있다.


출처 : 아키버드의 블로그 (http://rrss.tistory.com/3)




  0. 구글 드라이브의 장단점
 


장점

- 단일파일 업로드 용량이 자유롭다. 

- 스트리밍이 안정적이다.

- 무료이다.

 구글 드라이브

 M사

 무료 기본 용량 15GB 5GB

  5GB 1개월 이용료 (44,000원)


단점

5GB 라는 용량제한
이용자에 따라 다르게 느껴지겠지만 고화질 영상을 주로 업로드하는 이용자에겐 부족한 용량일 수도 있다. 
하지만 구글은 국내포털에 비해 가입이 자유로워 여러 아이디를 이용하는 방법도 있을 수 있다.

현재는 15GB로 상향조정 되었습니다.


 1. 구글 드라이브 사용법 


구글 드라이브 접속 후 로그인


공유폴더 만들기


1. 좌측 상단에 만들기 버튼을 누르고 폴더를 만든다.


2. 생성된 폴더 좌측 체크박스를 누르고 상단에 공유버튼을 누른다.


3. 비공개로 되어있는 액세스 권한을 수정한다.



업로드 후 링크주소 따기


4. 업로드 버튼을 누르고 jpg로 확장자 변경한 파일을 선택 후 업로드 한다.

(jpg로 확장자를 바꾸지 않은 동영상 파일을 그대로 올릴 경우 일시적으로는 나오지만 시간이 지나면 나오지 않는다.)



5. 파일제목을 Ctrl+클릭하여 새창에 띄운다.

6. 새 창 주소에서 /d/ 부터 /edit 사이에 있는 문자를 복사한다.



7-1. 복사한 문자를 이용해 직접링크를 만든다.

https://www.googledrive.com/host/복사한문자


7-2. 혹은 태그 생성기에 붙여넣기. http://rrss.tistory.com/10

이 경우에는 아래 과정은 볼 필요 없음.


 

 2. 플레이어로 재생하기

 


JW Player (mp4, flv)


티스토리 스킨이나 어디에 올려도 위에서 만든 링크를 가지고 재생할 수 있다.
다만 업로드 확장자를 jpg로 했기 때문에 flashvars에 type=video 혹은 provider=video를 넣어줘야 재생된다.
단점은 태그가 길어 지고 동영상 주소가 태그에 노출된다는 것.

태그 구조

<embed src='JW Player주소' type='application/x-shockwave-flash' width='가로' height='세로' flashvars='file=영상주소&type=video'>

태그 예제
<embed src="http://smarturl.it/jwplayer59" type="application/x-shockwave-flash" width="512" height="384" flashvars="file=https://www.googledrive.com/host/0B3945kzVIO7hb2hrUmJjX250QUE&type=video">

태그 적용


쓰플 커스텀 (flv)


쓰플은 JW Player와 달라서 플레이어 파일도 구글 드라이브에 업로드 해야 재생할 수 있다.

이 경우도 마찬가지로 jpg로 확장자 변경을 해줘야 한다.

쓰플은 단일파일을 위한 플레이어라기보다 티스토리에 10MB로 분할 된 영상을 끊김없이 재생하기 위해 만들어졌기 때문에 단일파일을 재생하는데 알맞지 않을 수 있다. XML을 작성해야하는 번거로움이 있기 때문이다.

쓰플은 소스파일이 공개되어 있으므로 직접 수정해서 단일파일에 적합하게 만들 수도 있지만 능력이 안되거나 귀찮은 분들을 위해서 구글드라이브 재생하는데 적합하게 만들어 놓은 플레이어를 공유한다.

f=복사한문자 명령어를 제외하면 기본 쓰플과 같다. 

완전한 주소를 넣는게 아니라 /host/ 뒤에 문자만 넣으면 된다.


태그 구조 

<embed src='http://smarturl.it/gdplayer' wmode='direct' allowfullscreen='true' type='application/x-shockwave-flash' width='가로' height='세로' flashvars='f=복사한문자'>

태그 예제 

<embed src='http://smarturl.it/gdplayer' wmode='direct' allowfullscreen='true' type='application/x-shockwave-flash' width='512' height='384' flashvars='f=0B3945kzVIO7hb2hrUmJjX250QUE'>


태그 적용



 

 자주 묻는 질문, 추가 정보

 


동영상 확장자를 JPG로 어떻게 바꾸죠?

따로 변환 프로그램을 이용하는게 아니라 이름 바꾸기하면 됩니다.
확장자가 나오지 않으면 탐색기에서 보기 - 폴더옵션 들어가서 보기 탭 누르고 알려진 파일형식의 확장자 숨기기 체크해제하면 됩니다.


SWF 파일 직접링크 가능

swf파일 업로드 시에 jpg로 변경 할 필요가 없음.


동영상이 나오다가 안나와요

두가지 경우가 있습니다.

1. JPG로 변경하지 않고 동영상을 올렸을 때.
2. 트래픽문제로 24시간 다운로드 제한이 걸렸을 때.
과도한 비트레이트의 영상이나 고용량의 영상을 조회수가 높은 곳에 올리면 얄짤 없습니다.
대형 커뮤니티는 유튜브를 이용하세요.

로딩이 너무 길어요

팟 인코더로 MP4 인코딩 했을 경우에 다운로드가 끝까지 다 되고 나서 재생 되기 때문에 발생하는 문제입니다.
ffmpeg을 이용해서 flv로 컨테이너를 바꾸거나 yamb같은 툴을 이용해서 리먹스 해주면 됩니다.




출처 : 아키버드의 블로그 (http://rrss.tistory.com/3)

CPoint/POINT 의 double형 변형체 CdblPoint / dblPOINT

CSize / SIZE 의 double 형 변형체 CdblSize / dblSIZE

CRect / RECT의 double형 변형체 CdblRect / dblRECT



첨부파일 참조




dblPoint.cpp


dblPoint.h


dblRect.cpp


dblRect.h


dblSize.cpp


dblSize.h


출처 : http://xarfox.tistory.com/120


Visual Studio 2008 Professional Trial 버전 날짜제한 우회방법

| 

1. 프로그램 추가/삭제 에 가서...
2. Visual Studio 2008 Professional 에서 제거/변경 클릭하면,
3. CD-KEY 넣는곳이 나온다. 거기에 아래 키중 하나 집어넣고 업그레이드...

Windows7 사용자의 경우,
CD-KEY 넣는 곳을 찾을 수 없다.
이건 버그인데, MS에서 제공하는 아래 패치를 설치한 후에 다시 시도하면 CD-KEY를 넣을 수 있다.

https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=27638

KB979576.zip





CD-KEYs

1.Visual Studio 2008 Professional Edition:
XMQ2Y-4T3V6-XJ48Y-D3K2V-6C4WT 

2.Visual Studio 2008 Team Test Load Agent:
WPX3J-BXC3W-BPYWP-PJ8CM-F7M8T 

3.Visual Studio 2008 Team System:
PYHYP-WXB3B-B2CCM-V9DX9-VDY8T

4.Visual Studio 2008 Team Foundation Server:
WPDW8-M962C-VJX9M-HQB4Q-JVTDM



출처 : http://xarfox.tistory.com/120


멋지다~~!













Meade114EQAR.pdf


아름다운 입술을 갖고 싶으면 친절한 말을 하라
사랑스런 눈을 갖고 싶으면 사람들에게서 좋은 점을 보아라
날씬한 몸매를 갖고 싶으면 너의 음식을 배고픈 사람과 나누라
아름다운 머리카락을 갖고 싶으면 하루의 한번 어린이가 손가락으로 너의 머리를 쓰다듬게 하라
아름다운 자세를 갖고 싶으면 너 자신이 혼자 결코 걷고 있지 않음을 명심해서 걸어라
사람들은 상처로부터 복구되어져야 하며 낡은 것으로부터 새로워져야하고 병으로부터 회복되어야 하고 무지함으로부터 교화 되어야 하며 고통으로부터 구원 받고 또 구원받아야 한다
결코 누구도 버려서는 안된다
기억하라, 만약 내가 도움을 주는 손이 필요하다면 너의 팔 끝에 있는 손을 이용하면 된다
당신이 더 나이가 들면 손이 두개라는 것을 발견하게 될 것이다
한 손은 자신을 돕는 손이고 다른 한 손은 다른 사람을 돕는 손이다

+ Recent posts