'2008/03'에 해당되는 글 7건
- 2008/03/29 C++용 replace all
- 2008/03/15 윈도우 XP 테마 로얄 느와르 (Royal Noir)
- 2008/03/13 URL 상대 경로, 절대 경로 변환 클래스 (C#)
- 2008/03/12 포토샵 없이 만드는 이미지 패러디
- 2008/03/02 프로그래머를 위한, 프로그래머의 Consolas 폰트 (2)
- 2008/03/02 타이머에서 메시지 박스를 띄울때는 타이머를 중지 시키고 띄우자
- 2008/03/02 Multi Wallpaper Manager 오픈 소스 프로젝트로 런칭 (1)
C++ STL의 string을 이용해서 구현한 replace all 함수입니다.
마지막 두줄의 assert를 보면 알 수 있듯이, 이 함수엔 문자열이 재귀적으로 치환되는 문제가 없습니다.
마지막 두줄의 assert를 보면 알 수 있듯이, 이 함수엔 문자열이 재귀적으로 치환되는 문제가 없습니다.
#include#include #include using namespace std; string replaceAll(const string &str, const string &pattern, const string &replace) { string result = str; string::size_type pos = 0; string::size_type offset = 0; while((pos = result.find(pattern, offset)) != string::npos) { result.replace(result.begin() + pos, result.begin() + pos + pattern.size(), replace); offset = pos + replace.size(); } return result; } int main() { assert(replaceAll("abcdefg", "bc", "de") == "adedefg"); assert(replaceAll("abc\nabc\nabc", "\n", "") == "abcabcabc"); assert(replaceAll("aaabbbaaa", "aaa", "1") == "1bbb1"); assert(replaceAll("ababab ababab", "ab", "1") == "111 111"); assert(replaceAll("abcdefg", "gf", "de") == "abcdefg"); assert(replaceAll("aaa", "a", "aa") == "aaaaaa"); assert(replaceAll("11aa11aa", "1", "11") == "1111aa1111aa"); return 0; }
'Programming > Misc' 카테고리의 다른 글
| Visual Studio 찾기 버그 'Find was stopped in progress.' 해결법 (0) | 2008/04/01 |
|---|---|
| C++용 replace all (0) | 2008/03/29 |
| 프로그래머를 위한, 프로그래머의 Consolas 폰트 (2) | 2008/03/02 |
| 타이머에서 메시지 박스를 띄울때는 타이머를 중지 시키고 띄우자 (0) | 2008/03/02 |
| 파일 이름 바꾸기 - 파이썬 (0) | 2008/01/21 |
| 정규식 쓸때는 Regular Expression Workbench (2) | 2007/09/17 |
MS에서 만든 윈도우 XP 테마인 로얄 느와르 (Royal Noir)입니다.
원래 Royal (윈도우 미디어 센터 에디션의 테마 프로젝트) 개발 중에 같이 만들어졌는데, 디자이너가 보기에 색감이 적절하지 않아서 나오지 않았다가, 누군가에 의해 유출된 테마입니다.
사용법:
다음 경로에 압축을 풉니다. “C:\windows\resources\themes\royale noir”
luna.msstyles를 더블 클릭합니다.
화면 배색에서 Noir를 선택합니다.
원래 Royal (윈도우 미디어 센터 에디션의 테마 프로젝트) 개발 중에 같이 만들어졌는데, 디자이너가 보기에 색감이 적절하지 않아서 나오지 않았다가, 누군가에 의해 유출된 테마입니다.
사용법:
다음 경로에 압축을 풉니다. “C:\windows\resources\themes\royale noir”
luna.msstyles를 더블 클릭합니다.
화면 배색에서 Noir를 선택합니다.
'Computer > Misc' 카테고리의 다른 글
| 네이트온 누가 차단했는지 알아내는 방법 (0) | 2008/05/09 |
|---|---|
| 탐색기 '새 창 열기' 하는 방법 (0) | 2008/04/16 |
| 윈도우 XP 테마 로얄 느와르 (Royal Noir) (0) | 2008/03/15 |
| ThinkPad 드디어 짱깨 노트북이 되는건가 (0) | 2007/09/21 |
| 카스퍼스키 10주년 한정 판매 및 7.0 무료 업그레이드 (0) | 2007/09/17 |
| 레이저 프린터의 토너를 조심하세요! (0) | 2007/08/12 |
Url Resolver클래스는 아래와 같은 기능들을 가지고 있습니다.
상대경로를 절대경로로 변환
상위 경로로 이동
Base URL 구하기
상대경로를 절대경로로 변환하는 기능에 북마크, 쿼리는 고려하지 않았으며, 일반적인 경우에 모두 정상적으로 동작합니다.
참고자료:
URL Relative Syntax and Base URLs - http://www.tcpipguide.com/free/t_URLRelativeSyntaxandBaseURLs-3.htm
URL 상대경로의 처리 - http://ljh131.tistory.com/6
public class UrlResolver
{
public static string GetBaseUrl(string url)
{
string baseUrl = url.Substring(0, url.LastIndexOf('/') + 1);
return baseUrl;
}
// return false if base url is root reached
public static bool GoUpOnePath(string baseUrl, out string newBaseUrl)
{
// 루트인지 체크 ('/' 개수가 3개이하면 중단)
int searchIndex = 0;
int count = 0;
int currentIndex = 0;
while (true)
{
currentIndex = baseUrl.IndexOf('/', searchIndex);
if (currentIndex != -1)
count++;
else
break;
searchIndex = currentIndex + 1;
}
if (count <= 3)
{
newBaseUrl = baseUrl;
return false;
}
// go up one
int secondOfLastSlashIndex = baseUrl.LastIndexOf('/', baseUrl.Length - 2);
newBaseUrl = baseUrl.Substring(0, secondOfLastSlashIndex + 1);
return true;
}
/*
* based on http://www.tcpipguide.com/free/t_URLRelativeSyntaxandBaseURLs-3.htm
* this function NOT include bookmark, query and new scheme url
*/
public static string GetAbsoluteUrl(string baseUrl, string relativeUrl)
{
// baseurl의 마지막은 반드시 /임
Debug.Assert(baseUrl.LastIndexOf('/') == baseUrl.Length - 1);
string[] relativePaths = { "//", "/", "./", "../", ".." };
bool resolveRelativePath = false;
do
{
resolveRelativePath = false;
foreach (string relativePath in relativePaths)
{
if (relativeUrl.IndexOf(relativePath) == 0)
{
resolveRelativePath = true;
switch (relativePath)
{
case "//": // 호스트 네임 지정
baseUrl = "http://";
break;
case "/": // 루트 지정
while (GoUpOnePath(baseUrl, out baseUrl))
;
break;
case "./": // 현재 디렉토리. 무시
break;
case "../": // 한단계 아래 디렉토리로 감. (더 이상 갈 수 없을때는 진행하지 않음.)
GoUpOnePath(baseUrl, out baseUrl);
break;
case "..": // 한단계 아래 디렉토리로 감. (../와 같음)
GoUpOnePath(baseUrl, out baseUrl);
break;
}
// remove relative path from url
relativeUrl = relativeUrl.Substring(relativePath.Length);
// reset loop
break;
}
}
} while (resolveRelativePath);
return baseUrl + relativeUrl;
}
}
'Programming > .NET' 카테고리의 다른 글
| URL 상대 경로, 절대 경로 변환 클래스 (C#) (0) | 2008/03/13 |
|---|---|
| C#으로 익스플로러 툴바 및 BHO만들기 (10) | 2007/11/07 |
| C#에서 unmanaged 함수 호출하기. (0) | 2007/08/31 |
| .NET 2.0 C#의 Configuration Manager (0) | 2007/08/30 |
| C# on multicore processor (or multi processor) - 멀티 프로세싱을 위한 C# (0) | 2007/07/30 |
이미지에 글자를 자동으로 합성해주는 상당히 재미있는 사이트이다.
아래 이미지는 모두 이미지 패러디 사이트에서 만든것들.
http://imageparody.com/
'Computer > Internet' 카테고리의 다른 글
| 포토샵 없이 만드는 이미지 패러디 (0) | 2008/03/12 |
|---|---|
| BELIEVE (0) | 2008/01/20 |
| 구글 애드센스 핀 도착 (2) | 2007/10/11 |
| 티스토리로 초대합니다. (16) | 2007/10/06 |
| 익스플로러에서 파이어폭스처럼 검색하려면? Inline Search (0) | 2007/09/25 |
| 와이브로 모뎀이 도착했습니다. (0) | 2007/08/31 |
프로그래머를 위한, 프로그래머의 폰트.
이름도 무려
Consolas Font Pack for Microsoft Visual Studio 2005
입니다.
Consolas, 11 point.
이렇게나 깔끔하고 미려한 Consolas폰트를 보자면 그동안 돋움체의 압박을 어떻게 감당해왔는지 의문입니다.
위의 사진에서는 11pt이지만 10pt가 가장 적절하더군요. 그럼 Consolas를 달고 즐겁게 코딩 해봅시다.
http://www.microsoft.com/downloads/details.aspx?familyid=22e69ae4-7e40-4807-8a86-b3d36fab68d3&displaylang=en
이름도 무려
Consolas Font Pack for Microsoft Visual Studio 2005
입니다.
Consolas, 11 point.
이렇게나 깔끔하고 미려한 Consolas폰트를 보자면 그동안 돋움체의 압박을 어떻게 감당해왔는지 의문입니다.
위의 사진에서는 11pt이지만 10pt가 가장 적절하더군요. 그럼 Consolas를 달고 즐겁게 코딩 해봅시다.
http://www.microsoft.com/downloads/details.aspx?familyid=22e69ae4-7e40-4807-8a86-b3d36fab68d3&displaylang=en
'Programming > Misc' 카테고리의 다른 글
| Visual Studio 찾기 버그 'Find was stopped in progress.' 해결법 (0) | 2008/04/01 |
|---|---|
| C++용 replace all (0) | 2008/03/29 |
| 프로그래머를 위한, 프로그래머의 Consolas 폰트 (2) | 2008/03/02 |
| 타이머에서 메시지 박스를 띄울때는 타이머를 중지 시키고 띄우자 (0) | 2008/03/02 |
| 파일 이름 바꾸기 - 파이썬 (0) | 2008/01/21 |
| 정규식 쓸때는 Regular Expression Workbench (2) | 2007/09/17 |
아마 Win32API를 배울때 두번째로 배우는 가장 기본적인 MessageBox함수는 모달 다이얼로그이긴 하지만 타이머와 함께 사용하면 더 이상 모달이 아닌게 됩니다.
타이머 내에서 MessageBox를 호출하면 이전 메시지박스가 있던지 없던지에 상관없이 무조건 뜹니다. 즉 메시지박스가 수도없이 뜨게 되죠. 이를 막는 가장 간단한 방법은, 타이머를 일시 중지 시키는 겁니다. 물론 프로그램 로직에 영향을 미치지 않는 타이머일때만 사용가능하겠죠. 그게 아니라면 프로그램의 요구사항에 맞춰서 적절한 방법을 고안해야죠.
private DialogResult SafeMessageBox(string text, string caption, MessageBoxButtons buttons)
{
DialogResult result;
if(changeCycleTimer.Enabled)
{
changeCycleTimer.Stop();
result = MessageBox.Show(text, caption, buttons);
changeCycleTimer.Start();
}
else
{
result = MessageBox.Show(text, caption, buttons);
}
return result;
}
'Programming > Misc' 카테고리의 다른 글
| C++용 replace all (0) | 2008/03/29 |
|---|---|
| 프로그래머를 위한, 프로그래머의 Consolas 폰트 (2) | 2008/03/02 |
| 타이머에서 메시지 박스를 띄울때는 타이머를 중지 시키고 띄우자 (0) | 2008/03/02 |
| 파일 이름 바꾸기 - 파이썬 (0) | 2008/01/21 |
| 정규식 쓸때는 Regular Expression Workbench (2) | 2007/09/17 |
| HTML Gallery Python Script (0) | 2007/08/20 |
2008/03/02 12:42
Multi Wallpaper Manager 오픈 소스 프로젝트로 런칭
2008/03/02 12:42 in Project/Multi Wallpaper Manager

듀얼 및 멀티 모니터를 위한 다중 바탕화면 관리 프로그램 Multi Wallpaper Manager를 오픈 소스 프로젝트로 전환하였습니다.
라이센스는 GPLv3이며 구글 코드에서 호스팅합니다.
http://code.google.com/p/multiwallpapermanager/
라이센스는 GPLv3이며 구글 코드에서 호스팅합니다.
http://code.google.com/p/multiwallpapermanager/
'Project > Multi Wallpaper Manager' 카테고리의 다른 글
| Multi Wallpaper Manager 오픈 소스 프로젝트로 런칭 (1) | 2008/03/02 |
|---|


royale_noir.zip
Prev
Rss Feed