Tip & Tech2008. 8. 6. 00:50
사용자 삽입 이미지




바탕 화면 보기 새로 만드시려면,

메모장을 여신 후,

[Shell]
Command=2
IconFile=explorer.exe,3
[Taskbar]
Command=ToggleDesktop

위와 같은 내용을 작성해주십시오.

저장 버튼을 누르신 후, 파일 형식은 모든 파일을 선택하시고,

바탕 화면 보기.scf로 저장해 주십시오.

이제 빠른 실행(Quick Launch)로 가서 빈 영역을 누르신 후,

폴더 열기 선택하시면 빠른 실행 폴더가 나타납니다.

이제 그 만든 파일을 빠른 실행 폴더에 복사하십시오.

이상입니다.

참고로 빠른 실행 폴더는 일반적으로 아래 폴더와 같습니다.

C:\Documents and Settings\사용자 이름\Application Data\Microsoft\Internet Explorer\Quick Launch

사용자 이름은 현재 윈도에 로그인 한 사용자 이름입니다.



ToggleDesktop, 바탕 화면 보기
Posted by virgo81

댓글을 달아 주세요

Tip & Tech2008. 8. 4. 08:40
사용자 삽입 이미지
















UTP(unshielded twisted pair) 케이블(일반적인 랜선)은 일반적으로 2가지 용도로 쓰입니다.

PC를 HUB와 연결할 때와 PC와 PC를 연결할 때 사용합니다.

이 때 PC와 HUB를 연결할 때는 다이렉트 케이블을 쓰게 되고,

PC와 PC를 연결할 때는 크로스 케이블을 쓰게 됩니다.

다이렉트 케이블과 크로스 케이블의 차이점은 선의 연결 순서만 다릅니다.

다이렉트 케이블은

12345678
||||||||
12345678

로 연결 되고,

크로스 케이블은

12345678
||||||||
36145278

로 연결 됩니다.



UTP 케이블 크로스 다이렉트 PC HUB unshielded twisted pair 랜선
Posted by virgo81

댓글을 달아 주세요

Tip & Tech2008. 5. 25. 11:47

요즘 나들이 가기 좋은 계절이죠.
가족, 연인 또는 친구와 함께 과천에 있는 서울 경마 공원에 한번씩은 가보셨을 듯 합니다.

사용자 삽입 이미지

보통 재미삼아 게임을 하기 위해 마권을 구매하는데, 마권의 용어! 어렵기만 합니다.
오늘은 이에 대해 알아보도록 하겠습니다.


1. 단승식 : 경주에 참가한 말 중 1등으로 들어온 말을 맞추는 승식입니다. 마권에 단승식에 표시를 하고 마번은 상단에서 하나만 고르면 됩니다.

사용자 삽입 이미지

2. 연승식
: 출주한 말이 5~7두 일 경우는 1,2 등으로 들어온 말 중 한마리를 맞추고, 8두 이상일 경우에는 3등까지 들어온 말 중 한마리를 맞추는 방식입니다. 거의 그런 경우는 없지만 4두 이하일 경우에는 연승식을 시행할 수 없습니다. 마권에 연승식에 표시를 하고 마번은 상단에서 하나만 고르면 됩니다.

사용자 삽입 이미지

3. 복승식
: 순서에 상관없이 1등, 2등의 말을 맞추는 것입니다. 만약 1번 말과 2번 말이 차례로 들어왔을 경우 1,2번을 선택하거나 2,1번을 선택한 사람이 모두 적중자가 됩니다. 마권에 복승식에 표시를 하고 마번은 상단에서 하나, 하단에 하나를 고르면 됩니다.

사용자 삽입 이미지

4. 쌍승식
: 복승식과 달리 순서까지 정확하게 1, 2등을 맞추는 것입니다. 1번 말과 2번 말이 차례로 들어왔을 경우 1,2번으로 선택하여야 적중자가 됩니다. 마권에 쌍승식에 표시를 하고 마번은 상단에는 1등으로 예상되는 번호 하나, 하단에는 2등으로 예상되는 번호 하나를 고르면 됩니다.

사용자 삽입 이미지

5. 복연승식
: 가장 최근에 나온 승식으로 3등 안에 들어온 말을 순서에 상관없이 2마리 맞추는 방식입니다. 마권에 복연승식에 표시를 하고 마번은 상단에서 하나, 하단에 하나를 고르면 됩니다.

사용자 삽입 이미지

이러한 방식으로 승식과 마번을 직접 선택하여 경주에 참여할 수 있습니다.
각각의 승식은 장단점이 있습니다.
연승식의 경우는 맞추기가 확률상 쉽지만 배당률이 낮은 면이 있고,
쌍승식의 경우는 맞추기는 어렵지만 배당률이 높아 고액 배당으로 이어질 수 있습니다.
참고로 아래 자료는 2008년 5월 24일 마지막 경주에 대한 각 승식의 배당률(단위:배(倍))입니다.

착순: ①⑤③ 6 4 2 7 8 11 10

단승식: ①8.2 - 게임전 최고 배당(②62.1)
연승식: ①2.6 ⑤1.6 ③4.8 - 게임전 최고 배당(②18.3)  
복승식(착순無): ①⑤23.8 - 게임전 최고 배당(②⑧1424.9)
쌍승식(착순有): ①⑤55.5 - 게임전 최고 배당(②⑪4088.7)
복연승식(착순無): ①⑤6.1 ①③22.5 ⑤③16.5 - 게임전 최고 배당(②⑧205.4)

이제 마권을 자신 있게 구매할 수 있겠죠?
가족, 연인 또는 친구와 함께 색다른 추억을 만들어보세요.^^
단, 경마에 빠지면 곤란합니다^^


References
한국마사회 블로그 http://blog.daum.net/happykra/1947774
한국마사회 홈페이지 http://www.kra.co.kr/DynamicCacheProcess.kra?param=SeoulDetailScoretable&meet=1&rcDate=20080524&rcNo=12


경마 경마장 경마공원 단승 연승 복승 쌍승 복연승 한국마사회 kra 경주 마권 배당 배당률

Posted by virgo81

댓글을 달아 주세요

Tip & Tech2008. 5. 25. 11:47
사적으로 기밀인 메시지를 메신져로 주고 받을 때,

특히 회사에서... 메시지를 중간에서 가로챌 수 있기에 아무래도 불안하다.

이럴 때를 대비해 Davinci Codeⓡ 을 만들어봤습니다.

사용자 삽입 이미지


2048비트 RSA 암호화 기법을 이용해서 메시지를 교환할 수 있습니다.

이를 통해 현재 인터넷 뱅킹 공인인증에서 사용되는 수준의 기밀성을 제공합니다.

1. 최초 사용시, 키 생성을 통해 개인키/공개키 쌍을 생성해야 합니다.
키 생성 버튼을 누르면 개인키/공개키 쌍이 생성됩니다.


2. 이후 사용을 위해 키 저장 버튼을 이용하여 생성된 개인키/공개키 쌍을 저장합니다. 이는 본인만 가지고 있어야 하고 이후에는 키 생성 없이 키 로드를 통하여 사용합니다.

RSA에 대해서 간략히 설명 드리면 다음과 같습니다.
A라는 개인은 모두에게 공개되고 배포할 수 있는 공개키와 자신만 알고 있어야 하는 개인키 쌍을 갖게 됩니다.
만약에 B라는 개인이 A에게 비밀 메시지를 보내고 싶으면, A의 공개키를 이용하여 자신이 보낼 메시지를 암호화하면 암호화된 메시지는 A의 개인키를 이용해서만 풀 수 있습니다.

3. 공개키 저장 버튼을 이용하여 상대방에게 전달 할 공개키를 저장합니다.

4. 이제 쌍방이 자신의 공개키를 공유합니다.

5. 공개키 로드를 통해서 상대방의 공개키를 로드 하면, 암호화 버튼이 활성화됩니다.

6. 자신의 키를 로드 하면, 복호화 버튼이 활성화됩니다.


A <-> B의 비밀 메시지 교환 단계를 간략하게 다시 설명 드리면 다음과 같습니다.

A와 B 서로의 공개키 교환 또는 공개된 장소에 게시

A

암호화

(B) 공개키 로드 -> 암호화


복호화

(A의) 키로드 -> 복호화


B

암호화

(A) 공개키 로드 -> 암호화


복호화

(B)키로드 -> 복호화



다운로드 받기


이 프로그램을 실행하시려면 .net framework 2.0이 필요합니다.

.net framework 2.0 다운로드 받기



이제 자유롭게 비밀 메시지를 주고 받아보세요.!!!^^
Posted by virgo81

댓글을 달아 주세요

  1. 익명

    비밀댓글입니다

    2008.04.16 13:16 [ ADDR : EDIT/ DEL : REPLY ]
    • 파일 암호화도 가능하지만, 지금 당장에 구현할 시간이 부족하네요. 이번 달 안에는 만들 수 있을거 같지만, 정확히 언제 배포할지에 대해서는 말씀드리기가 어려운 점 이해해주시기 바랍니다.

      2008.04.17 00:50 [ ADDR : EDIT/ DEL ]
  2. 감사합니다^^;; 프로젝트 작성에 도움이 되었습니다!

    2008.11.08 17:08 [ ADDR : EDIT/ DEL : REPLY ]
  3. 이동현

    공산권에서 일하는 선교사중에 탈북사역을 하는 분들이 있습니다.(식량지원등) 그들과 통신하기 위해서는 메일이 중요한데 이 프로그램이 좋아 사용하기전에 프로그래머님의 홈페이지 주소가 노출되기 때문에 문제가 되지 않을까 걱정이 되어 글을 남깁니다. c-4-u@hanmail.net 연락가능하시면 답변 부탁드립니다.

    2011.06.21 06:18 [ ADDR : EDIT/ DEL : REPLY ]
    • 문제가 되지 않으시게 사용하시길 바라며, 도구의 사용은 사용자에게 책임이 있습니다.

      2011.08.23 00:09 신고 [ ADDR : EDIT/ DEL ]
  4. 익명

    비밀댓글입니다

    2013.04.13 20:23 [ ADDR : EDIT/ DEL : REPLY ]
  5. Justice

    필요한 프로그램을 찾아서 웹서핑하다가 우연히 보게 되었습니다. 프로그램 하나 정말 끝내주내요. 고맙습니다.
    한가지 기능 추가를 요청드리자면, 파일과 폴더도 RSA 2048비트로 암호/복호화 할 수 있는 기능을, 많이 번거로우시겠지만 추가 해주시면 더더욱 더 감사하겠습니다.

    2013.04.21 11:25 [ ADDR : EDIT/ DEL : REPLY ]
  6. 익명

    비밀댓글입니다

    2022.02.28 17:07 [ ADDR : EDIT/ DEL : REPLY ]

Tip & Tech2008. 1. 22. 16:11





이상하게,

Windows Desktop Search (Windows 데스크탑 검색) 3.01은

지우고 싶어도 지울 수가 없다.

아래 프로그램을 이용하면 제거할 수 있다.




Windows Desktop Search 설치 제거 Uninstall 데스크탑 검색 데스크탑 서치 삭제 지우기

Posted by virgo81

댓글을 달아 주세요

  1. clrl

    그냥 지워 지던데..;

    2008.04.16 14:11 [ ADDR : EDIT/ DEL : REPLY ]

Tip & Tech2007. 9. 14. 00:49
컴퓨터로 음악을 들으면서 자고 싶을 때 많으시죠?

근데 자기 전에 일어나서 컴퓨터 끄기 귀찮으실거에요.

그 때는 이렇게 해보세요.^^


시작 -> 실행 -> shutdown -i 실행하세요.

추가 버튼을 누르시고, 127.0.0.1 를 입력하세요.

컴퓨터에서 수행될 작업에 시스템 종료를 고르시고,

경고 표시 시간에 종료하려는 시간을 초 단위로 적으세요.

그리고 마지막으로 설명 아무거나 적으세요.

이제 확인을 누르시면 됩니다.

사용자 삽입 이미지


위와 같이 하는게 귀찮으시다면 설정없이 바로~

shutdown -s -t 120 -f

위와 같이 입력해보세요~

위의 예는 120초 후에 종료가 된답니다^^

만약~~ 취소를 하시려면

shutdown -a 를 실행하세요.
Posted by virgo81

댓글을 달아 주세요

Tip & Tech2007. 9. 8. 21:54

다음 코드의 결과를 예측해보세요. ^^


#include <iostream>
#include <stdlib.h>
#include <string.h>

using namespace std;

class MyClass
{
public:
    char* name;

    MyClass(void);
    ~MyClass(void);
};

MyClass::MyClass(void)
{
    cout<<"My Class is constructed."<<endl;
    name = (char*)malloc(sizeof(char) * 10);
}

MyClass::~MyClass(void)
{
    free(name);
    name = NULL;
    cout<<"My Class is destroyed."<<endl;
}

int main(void)
{
    MyClass* myClass = (MyClass*)malloc(sizeof(MyClass));
 
    strcpy(myClass->name, "virgo81");

    free(myClass);
    myClass = NULL;

    return 0;
}


.
.
.
.
.
.


C를 먼저 배우시고 C++을 배우신 분들이 쉽게할 수 있는 실수가 위 코드에 있어요.

위 코드의 실행결과는 애석하게도 볼 수 없어요.

왜냐하면 "런타임 오류"가 발생하기 때문이죠.

어느 코드에서 "런타임 오류"가 발생할까요?

범인은 바로! 코드 안에 있습니다.(썰렁;;;)

strcpy(myClass->name, "virgo81");

바로 이 라인에서 발생해요. 할당되지 않은 공간에 복사를 하려하기 때문이죠.

"엥? 생성자에서 분명히 할당하였는데 할당되지 않았다니!!! 거짓말 쟁이!" 라고 하시는 분이 계실거에요.

하지만, 위 코드에서 생성자와 소멸자는 불려지지 않습니다.

malloc 과 free는 생성자를 부르지 않고 단지, 메모리만 할당합니다.

따라서

name = (char*)malloc(sizeof(char) * 10);

위 라인이 실행되었을거 같지만, 실행되지 않았습니다.

그러면 어떻게 하면 좋을까요?

C++로 왔으면 new 와 delete 를 이용하세요.!

아래 코드는 수정된 코드입니다.



#include <iostream>
#include <stdlib.h>
#include <string.h>

using namespace std;

class MyClass
{
public:
    char* name;

    MyClass(void);
    ~MyClass(void);
};

MyClass::MyClass(void)
{
    cout<<"My Class is constructed."<<endl;
    name = new char[10];
}

MyClass::~MyClass(void)
{
    delete [] name;
    name = NULL;
    cout<<"My Class is destroyed."<<endl;
}

int main(void)
{
    MyClass* myClass = new MyClass();
 
    strcpy(myClass->name, "virgo81");

    delete myClass;
    myClass = NULL;

    return 0;
}


어때요? 잘 작동하죠?^^

Posted by virgo81

댓글을 달아 주세요

Tip & Tech2007. 9. 3. 23:17
조건문에서 사람들은 보통 상수를 오른쪽에 놓는다.

C 코드로 예를 들면 아래와 같다.

if(Age == 17) {
// 수행될 문장.
}

==을 =으로 쓰지 않는 한 아무 문제 없는 식이다.

아래와 같은 경우를 생각해보자.

if(Age = 17) {
// 수행될 문장
}

이 역시, 멍청한 컴파일러에게는 아무 문제 없는 식이다.(똑똑한 최신 컴파일러 if 문 안이 무언가 잘못 되었다고 생각하고 자기 의견을 알려준다.)

문제는 우리가 항상 똑똑한 컴파일러를 쓴다는게 아니다.

이런 실수를 줄일려면, 간단한 습관하나만 바꾸면 된다.

상수를 왼쪽에 써보아라.

if(17 == Age) {
// 수행될 문장.
}

아무 문제 없이 잘 작동한다.

if(17 = Age) {
// 수행될 문장.
}

아주 멍청한 컴파일러라도 저정도 문장은 이해하고 에러를 안겨줄 것이다.

당신도 습관을 바꿔보겠는가?? 근데 습관 바꾸는게 생각보다 쉽지 않다~ㅡㅜ




In condition statement, People generally set a constant right side.

For example, C code.

if(Age == 17) {
// Some lines to be executed.
}

If you didn't use = instead of ==, There is no problem.

You can see the other case.

if(Age = 17) {
// Some lines to be executed.
}

Stupid compiler thinks there is no problem. (State of the art compiler might say there is a problem.)

Problem is that you always use state of the art compiler is not true..

Just change your coding style.

Set a constant left side.

if(17 == Age) {
// Some lines to be executed.
}

There is no problem.

if(17 = Age) {
// Some lines to be executed.
}

Even stupid compiler will say there is a problem.

Can you change your coding style?? But, It is hard to change...T.T
Posted by virgo81

댓글을 달아 주세요

Tip & Tech2007. 9. 3. 22:44
오늘은 작은 실수가 프로그램에 큰 오류를 가져오는 경우를 얘기해볼게요.

여러분은 int와 long의 차이점을 아는지요?
아직 int 와 long의 차이점을 모르고 코딩을 하고 있다면,
어쩌면 당신은 아주 위험한 상황에 이르거나,
심각한 오류를 경험하게 될지도 모릅니다.
먼저 int와 long이 어떤 차이를 가지고 있는지
알아본 후, 이 글을 읽어 보세요.

저는 지금 32bit 상위 머신에 32bit 상위 운영체제에
32bit 상위 컴파일러를 쓰고 있습니다.
위와 같은 환경은 저뿐만 아니라 부주의한 프로그래머에게
잠재적인 위험을 가지게 만들었습니다.
어떤 위험인지는 예를 들어서 설명해보겠습니다.

32bit 상위 머신에서 32bit 상위 운영체제에서
32bit 상위 컴파일러에서 만들어진 프로그램이 있습니다.
이 프로그램은 Windows 2000, XP, 2003, Vista에서
아주 정상적으로 작동합니다.
Windows 98에서 동작상의 문제를 발견하기 전까지의
특정한 경우 잘 작동하였습니다.
그러던 어느날.. 비정상적인 작동을 하는
Windows 98이 설치 된 머신을 발견하게 됩니다.
처음에는 그 머신의 개별적인 문제라고 생각 되었습니다.
그러나 어느덧 비정상적인 작동을 하는 Windows 98이 설치된
머신이 많다는 사실을 알게 되었고,
그 버그 수정을 제가 맡게 되었습니다.

그 프로그램은 많은 Windows API를 사용하고 있었습니다.
그 API 중 하나를 예를 들어보겠습니다.

SetViewportExtEx

The SetViewportExtEx function sets the horizontal and vertical extents of the viewport for a device context by using the specified values.

BOOL SetViewportExtEx(

HDC hdc, // handle of device context
int nXExtent, // new horizontal viewport extent
int nYExtent, // new vertical viewport extent
LPSIZE lpSize // original viewport extent
);

이런 기능의 함수 입니다.

처음에는 이 함수가 버그의 원인이라고는 생각하지도 못했습니다.
반환 값도 정상적으로 true 를 반환했기 때문이지요.

저 함수를 쓴 예를 보이죠.
SetViewportExtEx(Hwnd, 50000, 50000, size);

위 함수에 문제가 있나요?
32bit 상위 머신에서 32bit 상위 운영체제에서
32bit 상위 컴파일러를 사용하시는 당신은
아무 문제를 경험하지 못할 것입니다.
이는 잠재적으로 버그를 잡기 힘들게 만들죠.

무엇이 문제인가요?
50000! 50000이란 값이 문제입니다.
32bit 상위 머신에서 32bit 상위 운영체제에서
32bit 상위 컴파일러를 이용하는 우리는
아주 아주 자연스럽게 당연하게
int 를 long 으로 생각하는 경향을 가지게 되었습니다.
이것은 우리만의 작은 소망일 뿐이죠.
32bit 상위 머신에서 32bit 상위 운영체제에서
32bit 상위 컴파일러를 이용하는 우리에게
그 작은 소망은 대체로 이루어 지고 있고요.

그러나 Windows 98 API는 우리의 작은 소망을 철저히 무시하고
int ? short 이네.. 하고.. -17232(맞나요?)를 가지게 되었던 것이죠.

수많은 시행착오와 산수(?)를 한 결과, 위의 버그는 고쳐졌습니다.
그러나 많은 시간이 소요 되었고, 시간적 인적 낭비가 아닐 수 없습니다.

여러분도
int 대신

unsigned long
unsigned short
signed long
signed short

를 쓰길 바라겠습니다.

아마 위 내용들은 각 언어를 배우면서 앞부분에 배웠을겁니다.
이런 기초적인 내용은 그냥 잊고 지나치기 쉽습니다.
그러나 이런 기초적인 내용에서 나오는 오류를
해결하는 것은 기초적이지 않습니다.

여러분 모두를 버그 없는 세상에서 보길 바랍니다.

P.S. 아직도 int 를 쓰고 있습니다; 쉽게 고쳐지지는 않네요.^^;
Posted by virgo81

댓글을 달아 주세요