C# 의 자료구조 Queue !!

C#… 즉.. 닷넷… 이놈 참 대단한놈이다.. 왠만한 자료구조형이 다있다.. 큐!~ 도 있다 –^ 예전에 이걸 구현해서.. 사용했던 내가.. ㄷㄷㄷ….

CShop자료구조02_자료구조_큐.cs


/*
 C#자료구조02 : 자료구조_큐(Queue).
 .NET Class의 Stack 클래스 사용.
 2005년 12월 07일
 Choi Young Gyu

*/

using System;
using System.Collections;

public class 큐
{

 public static void Main()
 {

  //[1]큐 인스턴스 생성
  Queue queue = new Queue();
  //[2]큐에 데이터 입력
  Console.WriteLine(“Enqueue : VC++”);
  queue.Enqueue(“VC++”);
  Console.WriteLine(“Enqueue : VB.NET”);
  queue.Enqueue(“VB.NET”);
  //[3]큐에서 대이터 꺼내기
  Console.WriteLine(“Dequeue : {0}”,queue.Dequeue());
  Console.WriteLine(“Dequeue : {0}”,queue.Dequeue());
 }
}



결과

사용자 삽입 이미지

윈도우XP에서 램4기가 이상 활용하기 [램디스크]

32비트 운영체제의 경우에는 최대로 인식되는 램용량이 시스템에 따라 다르지만 대부분 3~3.5기가 정도로 인식이 되어진다. 여기서 문제가 발생하는데 램을 4기가 이상사용하게 되면 나머지는 그냥 버려지게 된다. 64비트 비스타를 사용하게 되면 문제없겠지만은 이 팁은 비스타를 꺼려하시는분을 위해 작성된것이며 실제적으로 인식안되는 부분의 용량을 인식시켜서 총 4기가 이상의 메모리를 다활용 하게 하는것이 아니고 램디스크를 이용하여 윈도우에서 할당되지 않는 나머지 용량부분을 설정하는것이다. 이 팁을 적용하지 않고 그냥 램디스크를 사용하게 되면 윈도우에서 사용되는 램 용량에서 할당되게 되지만 이 팁의 경우에는 그외 인식되지 않는 용량을 할당하게 된다. 쉽게 말해서 램을 4기가 사용하고 있는데 윈도우에선 3.5기가만 인식이 되어진다고 가정하였을때 인식이 안되는 나머지 500을 램디스크로 할당이 가능하다는 것이다. 램디스크에 활용은 인터넷 임시폴더나 윈드우 TEMP폴더,압축프로그램에 임시폴더등을 지정해 주면 체감차이가 많이 날것이다.


1. 가장 먼저 할일은 boot.ini를 수정하는것인데 실행에서 c:\boot.ini를 실행해주면 창이 열린다
아래처럼 끝부분에 /PAE만 추가로 입력해준후에 저장후에 윈도우 재부팅

사용자 삽입 이미지


예제)

 [boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=”Microsoft Windows XP
Professional” /noexecute=optin /fastdetect /PAE

32비트 비스타의 경우에는 검색에서 cmd를 찾아서 마우스 우클릭후에 관리자 권한으로 실행후

bcdedit /set PAE forceenable

2. 첨부된 파일에 레지스트리를 추가
* 첨부 1144591517.zip



사용자 삽입 이미지
3. 레지추가후에 램디스크를 실행해서 인스톨을 클릭한후에 다른부분 건드리지 말고 확인을 눌러주면 된다. 16M로 되어있어도 최정적으로 램디스크가 할당된 용량을 보면 윈도우에서 사용되지 않는 용량전부가 잡힌것을 볼수 있을것이다.
사용자 삽입 이미지
이제 설정은 전부 끝난상태이므로 윈도우 임시폴더, 익스플로러 임시폴더, 압축프로그램 임시폴더 등을 R드라이브로 지정해 주시거나 기타 방법으로 램디스크를 활용하면 된다.


[출처] http://blog.naver.com/rishion/30035089791


P.S : 실재 램디스크 잡고, 여기에 각종 캐쉬폴더랑 스왑 잡아주니… 체감속도 향상이 꽤 있당!~
 


파워포인트(PPT) 2007 다중창(각각) 실행하기.

파워포인트 문서를 여러개 열어도… 작업표시줄에는 여러개가 나오나,… 결국 하나의 창으로 실행하여 매우 불편하였다!!~

아래 첨부된 실행파일을 받아서 실행하면~~~ 파워포인트 창이 여러개 뜬다~~ ㅎㅎㅎㅎㅎ
최고다!

1170214171.xxx

P.S : 실험은 2007 밖에 안해봤다.. 2003에서도 될려나???
 

DateTime 클래스 활용 C샵 – 문법

// 프로그램 시작시간
DateTime startTime = DateTime.Now;

// 1. 현재시간
DateTime now;
now = DateTime.Now;

Console.WriteLine(now); // 현재시간 전체
Console.WriteLine(now.Year); // 현재 년도
Console.WriteLine(now.Month); // 현재 달
Console.WriteLine(now.Day); // 현재 일
Console.WriteLine(now.DayOfWeek); // 현재 주
Console.WriteLine(now.DayOfYear); // 1년중 몇일째인지
Console.WriteLine(now.TimeOfDay); // 금일 자정부터 몇시간
Console.WriteLine(now.Hour); // 시간
Console.WriteLine(now.Minute); // 분
Console.WriteLine(now.Second); // 초
Console.WriteLine(now.Millisecond); // 1000분의 1초

Console.WriteLine(now.Ticks); // 1000분의 1초

// 2. 임의시간 설정
DateTime birthday;
birthday = DateTime.Parse(“2009년8월9일”); // 시분초 미지정시 자정으로
birthday = DateTime.Parse(“2009/08/09”);

Console.WriteLine(birthday);

DateTime xmas;
xmas = new DateTime(2008, 12, 25, 0, 0, 0);

Console.WriteLine(xmas);

// 3. 연산

// 3.1 오늘 + 100일
now = DateTime.Now;
DateTime result = now.AddDays(100); // 각 단위별 add메소드가 존재 MSDN참고

Console.WriteLine(result);

// 3.2 크리스마스까지 남은 날
TimeSpan result2 = xmas – now;
Console.WriteLine(result2);
Console.WriteLine(result2.Days); // NNN일 (내림표현)
Console.WriteLine(result2.TotalDays); // NNN.NNNNNNN일 (더정확)

// 3.3 오늘 – 100일
Console.WriteLine(now – TimeSpan.FromDays(100));
Console.WriteLine(now.AddDays(-100));

// 4. 날짜시간 출력형식 지정
Console.WriteLine(now.ToLocalTime()); // 2008-08-08 오전 10:31:25

Console.WriteLine(now.ToLongDateString()); // 2008년 8월 8일 금요일
Console.WriteLine(now.ToShortDateString()); // 2008-08-08

Console.WriteLine(now.ToLongTimeString()); // 오전 10:31:25
Console.WriteLine(now.ToShortTimeString());   // 오전 10:31

// 프로그램 종료시간
DateTime endTime = DateTime.Now;

Console.WriteLine(“프로그램 수행시간 : {0}/ms”, (double)(endTime – startTime).Ticks / 1000000.0F);

컴퓨터의 메인하드 C,D 드라이브를 더블클릭하면 연결프로그램을 찾으라는 창이나올때~

위와 같이 하드디스크 메뉴에 AUTO가 추가되어 바로 열기가 안될때가 있다.
원인은 아래 그림의 2파일 때문이다.(해킹프로그램이라고 한다)

사용자 삽입 이미지

악성코드/바이러스 프로그램으로 전혀 치료되지 않으며, 방법은 컴퓨터 부팅 후 메모리 테스트가 끝난 후 F8키를 1초 간격으로 눌러준다.
그러면 XP멀티 부팅 메뉴가 나타나는데 이때 맨위의 “안전모드”를 선택 하여 안전모드로 부팅하자.
CTRL+ALT+DEL키를 눌러 작업관리자를 실행 후 프로세서란의 SVOHOST.exe를 선택 후 프로세서 끝내기를 한다.(SVOHOST.exe파일이 없으면 작업관리자를 끝내도록 하자.)

안전모드 상에서 C,D드라이브에 위그림의 2개 파일을 삭제해준다.

(안보일시 도구-폴더옵션의 시스템파일 숨김 체크 해제/숨김또는 파일폴더 보기 체크)

이후 시작-실행의 regedit를 입력하고 확인을 눌러 아래 경로로 찾아간다

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

오른쪽 메뉴에서 기본값을 제외한 모두를 삭제해주자.(RUN폴더 아래 -RUN이란 폴더가 있다면 같이 삭제 해준다.) 이후 WINDOWS\SYSTEM32폴더에 아래의 3개 파일이 남아 있다면 삭제 하도록 한다.

winscok.dll 
sxs.exe
autorun.inf

이후 재부팅하여 윈도우 모드로 접속하면 auto가 사라진것을 확인 할 수 있다.
재부팅 후 윈도우 화면에서 아래와 같은 창이 나타난다면,
사용자 삽입 이미지
다시 안전모드 부팅 후 아래 그림과 같이 C:\windows\Prefetch LAJQHF.EXE파일을 삭제 하고 레지스트리 편집기를 열어

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run의

오른쪽 메뉴 기본값을 제외한 모두를 삭제한다. (-RUN폴더는 폴더체로 삭제)
이 증상은 USB메모리를 통해 감염되기 쉬우므로 각 드라이브와 USB메모리의 SXS.EXE , AUTORUN.INF파일을 안전모드상에서 전부 삭제 해주도록 하자.

윈도우 부팅 후 꼭 SXS.EXE와 AUTORUN.INF파일이 없어진것을 확인할것!

네트워크 공유 폴더를 다른 아이디와 암호로 로그인 하고 싶을때

윈도우에서 네트워크 공유폴더를 이용시 아이디와 암호를 저장할 경우 다시 접근시 저장된 암호와 아이디로 접근 합니다.
이 아이디와 암호를 변경하는 방법은 두가지가 있습니다. (둘중 아무방법을 하셔도 상관없습니다.)

1. 첫번째 방법  (윈도우 툴을 이용한 방법)


[#M_ more.. | less.. |

1. 내 네트워크 환경 > 오른쪽 마우스 > 네트워크 드라이브 연결 끊기
2. 연결 되어 있는 드라이브를 끊은세요

3. 시작 > 제어판 > 사용자 계정 > 본인계정선택
4. 관련 작업의 내 네트워크 암호 관리
5. 변경하고자 하는 네트워크를 제거

_M#]

2. 두번째 방법 (커맨드 창에서 net use 명령어를 사용하는 경우)

[#M_ more.. | less.. |net use 명령을 쓰면 됩니다.

C:\>net use
새 연결 정보가 저장됩니다.

상태 로컬 원격 네트워크
——————————————————————————-
OK Z: \\192.168.0.40\sjlee Microsoft Windows Network
OK \\147.46.11x.13x\IPC$ Microsoft Windows Network
OK \\147.46.12x.12x\IPC$ Microsoft Windows Network
명령을 잘 실행했습니다.

현재 연결된 공유폴더 목록을 볼 수 있습니다. 여기서, 로그인 계정을 변경하고자 하는 머신으로의 모든 연결을 수동으로 끊어 줘야 합니다.

C:\>net use \\147.46.12x.12x\IPC$ /delete
\\147.46.12x.12x\IPC$이(가) 제거되었습니다.

이제 다시 목록을 확인해 봅시다.

C:\>net use
새 연결 정보가 저장됩니다.

상태 로컬 원격 네트워크
——————————————————————————-
OK Z: \\192.168.0.40\sjlee Microsoft Windows Network
OK \\147.46.114.135\IPC$ Microsoft Windows Network
명령을 잘 실행했습니다.

확실히 끊어졌지요. 이제 다시 연결해 봅시다.

C:\>net use \\147.46.12x.12x * /user:sjlee
\\147.46.12x.12x에 대한 암호를 입력하십시오:
명령을 잘 실행했습니다.

C:\>net use
새 연결 정보가 저장됩니다.

상태 로컬 원격 네트워크
——————————————————————————-
OK Z: \\192.168.0.40\sjlee Microsoft Windows Network
OK \\147.46.11x.13x\IPC$ Microsoft Windows Network
OK \\147.46.12x.12x\IPC$ Microsoft Windows Network
명령을 잘 실행했습니다.

C:\>
_M#]

Windows Server 2008에 Exchange 2007 SP1 선행 조건을 설치하는 방법

출처 : http://technet.microsoft.com/ko-kr/library/bb691354(EXCHG.80).aspx




Exchange 2007

Windows Server 2008에 Exchange 2007 SP1 선행 조건을 설치하는 방법


[#M_ more.. | less.. |

적용 대상: Exchange Server 2007 SP1 최근 수정된 항목: 2007-08-30


이 항목에서는 모든 Microsoft Exchange Server 2007 SP1(서비스 팩 1) 서버 역할에 대한 필수 구성 요소를 Windows Server 2008 또는 Windows Vista 에 설치하는 방법을 설명합니다.


새 Exchange 조직을 배포하고 Windows Server 2008 을 실행하는 컴퓨터를 사용하여 Active Directory 스키마 및 도메인을 준비하는 경우에는 스키마 또는 도메인을 준비하기 전에 다음 명령을 사용하여 Active Directory 도메인 서비스 원격 관리 도구를 Windows Server 2008 에 먼저 설치해야 합니다.









ServerManagerCmd -i RSAT-ADDS







참고:
Active Directory 도메인 서비스 원격 관리 도구를 설치한 후에는 컴퓨터를 다시 시작해야 할 수 있습니다. 시스템을 다시 시작해야 하는 경우에는 설치 프로세스가 끝날 때 해당 알림이 표시됩니다.

Active Directory 스키마 및 도메인 준비에 대한 자세한 내용은 Active Directory 및 도메인을 준비하는 방법을 참조하십시오.






이러한 절차를 수행하려면 사용하는 계정이 로컬 관리자 그룹 구성원을 위임받아야 합니다. 사용 권한, 역할 위임 및 Exchange 2007 관리에 필요한 권한에 대한 자세한 내용은 사용 권한 고려 사항을 참조하십시오.


Windows Server 2008 의 전체 설치 옵션은 모든 Exchange 2007 SP1 서버 및 관리 워크스테이션에 사용해야 합니다. Windows Server 2008 의 서버 핵심 설치 옵션은 Exchange 2007 SP1에서 사용하도록 지원되지 않습니다.


Edge 전송 서버 역할을 제외한 다른 모든 서버 역할에 대해 먼저 컴퓨터를 내부 Active Directory 포리스트 및 도메인에 가입시켜야 합니다.


클라이언트 액세스 서버에 대한 필수 구성 요소를 설치할 때는 작업 환경에서 외부에서 Outlook 사용을 사용하도록 설정하려는 경우에만 RPC over HTTP 프록시 구성 요소를 설치하면 됩니다.


아래 나와 있는 각 절차의 단계는 해당 순서대로 수행해야 합니다. 특히 Active Directory 도메인 서비스 원격 관리 도구는 IIS(인터넷 정보 서비스) 필수 구성 요소를 설치하기 전에 설치해야 합니다.


서버 역할을 설치할 때는 Exchange 관리 도구 역할도 설치됩니다. Exchange 관리 도구(Exchange 관리 콘솔 또는 Exchange 관리 셸)를 사용하여 모든 내부 서버 역할(클라이언트 액세스, 사서함, 허브 전송 및 통합 메시징)을 관리하려면 Exchange 관리 도구용 필수 구성 요소도 설치해야 합니다. 예를 들어, 허브 전송 서버 역할만 설치되어 있는 서버에는 관리 도구 설치에 필요한 다음 IIS 구성 요소도 설치해야 합니다.









ServerManagerCmd -i Web-Metabase
ServerManagerCmd -i Web-Lgcy-Mgmt-Console

이러한 IIS 구성 요소가 없으면 허브 전송 서버 역할만 설치되어 있는 서버에서 클라이언트 액세스 서버 역할을 관리할 수 없습니다.


Windows Server 2008 에 Exchange 2007 SP1을 설치하고 클러스터된 사서함 서버를 만들려면 Windows Server 2008 장애 조치(failover) 클러스터링 기능도 설치해야 합니다. 사서함 서버 역할 및 장애 조치(failover) 클러스터링 기능에 대한 필수 구성 요소를 설치하는 방법에 대한 자세한 단계는 이 항목 뒤에 이어지는 “사서함 서버에 대한 Windows Server 2008 운영 체제 선행 조건을 설치하려면 다음을 수행합니다.”를 참조하십시오.











  1. 명령 프롬프트 창을 엽니다.

  2. Windows Server 2008 에 포함된(그러나 기본적으로 설치되어 있지는 않음) Windows PowerShell을 설치하려면 다음 명령을 실행합니다.








    ServerManagerCmd -i PowerShell

  3. IIS 필수 구성 요소를 설치하려면 아래 나열된 순서에 따라 다음 명령을 실행합니다.








    ServerManagerCmd -i Web-Server
    ServerManagerCmd -i Web-ISAPI-Ext
    ServerManagerCmd -i Web-Metabase
    ServerManagerCmd -i Web-Lgcy-Mgmt-Console
    ServerManagerCmd -i Web-Basic-Auth
    ServerManagerCmd -i Web-Digest-Auth
    ServerManagerCmd -i Web-Windows-Auth
    ServerManagerCmd -i Web-Dyn-Compression

  4. 서버가 외부에서 Outlook 사용 클라이언트를 지원하도록 하려면 다음 명령을 실행하여 RPC over HTTP 프록시 기능을 설치합니다.








    ServerManagerCmd -i RPC-over-HTTP-proxy






  1. 명령 프롬프트 창을 엽니다.

  2. Windows Server 2008 에 포함된(그러나 기본적으로 설치되어 있지는 않음) Windows PowerShell을 설치하려면 다음 명령을 실행합니다.








    ServerManagerCmd -i PowerShell

  3. 이전에는 ADAM(Active Directory Application Mode)으로 알려진 AD LDS(Active Directory Lightweight Directory Services)를 설치하려면 다음 명령을 실행합니다.








    ServerManagerCmd -i ADLDS






  1. 명령 프롬프트 창을 엽니다.

  2. Windows Server 2008 에 포함된(그러나 기본적으로 설치되어 있지는 않음) Windows PowerShell을 설치하려면 다음 명령을 실행합니다.








    ServerManagerCmd -i PowerShell






  1. 명령 프롬프트 창을 엽니다.

  2. Windows Server 2008 에 포함된(그러나 기본적으로 설치되어 있지는 않음) Windows PowerShell을 설치하려면 다음 명령을 실행합니다.








    ServerManagerCmd -i PowerShell

  3. 필요한 IIS 선행 조건을 설치하려면 아래 나열된 순서에 따라 다음 명령을 실행합니다.








    ServerManagerCmd -i Web-Server
    ServerManagerCmd -i Web-ISAPI-Ext
    ServerManagerCmd -i Web-Metabase
    ServerManagerCmd -i Web-Lgcy-Mgmt-Console
    ServerManagerCmd -i Web-Basic-Auth
    ServerManagerCmd -i Web-Windows-Auth

  4. 사서함 서버가 클러스터되면 다음 명령을 사용하여 장애 조치(failover) 클러스터링 기능도 설치해야 합니다.








    ServerManagerCmd -i Failover-Clustering






  1. 명령 프롬프트 창을 엽니다.

  2. Windows Server 2008 에 포함된(그러나 기본적으로 설치되어 있지는 않음) Windows PowerShell을 설치하려면 다음 명령을 실행합니다.








    ServerManagerCmd -i PowerShell

  3. 통합 메시징 서버에서 필요로 하는 Microsoft Windows Media Player 오디오/비디오 코덱을 설치하려면 다음 명령을 수행합니다.








    ServerManagerCmd -i Desktop-Experience






  1. 명령 프롬프트 창을 엽니다.

  2. Windows Server 2008 에 포함된(그러나 기본적으로 설치되어 있지는 않음) Windows PowerShell을 설치하려면 다음 명령을 실행합니다.








    ServerManagerCmd -i PowerShell

  3. IIS 필수 구성 요소를 설치하려면 아래 나열된 순서에 따라 다음 명령을 실행합니다.








    ServerManagerCmd -i Web-Server
    ServerManagerCmd -i Web-ISAPI-Ext
    ServerManagerCmd -i Web-Metabase
    ServerManagerCmd -i Web-Lgcy-Mgmt-Console
    ServerManagerCmd -i Web-Basic-Auth
    ServerManagerCmd -i Web-Digest-Auth
    ServerManagerCmd -i Web-Windows-Auth
    ServerManagerCmd -i Web-Dyn-Compression

  4. 서버가 외부에서 Outlook 사용 클라이언트를 지원하도록 하려면 다음 명령을 실행하여 RPC over HTTP 프록시 기능을 설치합니다.








    ServerManagerCmd -i RPC-over-HTTP-proxy






  1. 명령 프롬프트 창을 엽니다.

  2. Windows Server 2008 에 포함된(그러나 기본적으로 설치되어 있지는 않음) Windows PowerShell을 설치하려면 다음 명령을 실행합니다.








    ServerManagerCmd -i PowerShell

  3. IIS 필수 구성 요소를 설치하려면 아래 나열된 순서에 따라 다음 명령을 실행합니다.








    ServerManagerCmd -i Web-Metabase
    ServerManagerCmd -i Web-Lgcy-Mgmt-Console






  1. Windows PowerShell 1.0 다운로드 방법(영문)에서 Windows Vista 용 Windows PowerShell을 다운로드합니다.

  2. 설치 패키지를 실행하여 Windows PowerShell을 설치합니다.

  3. 시작 메뉴에서 Windows Vista 제어판을 열고 프로그램 및 기능 애플릿을 엽니다.

  4. 작업 영역에서 Windows 기능 사용/사용 안 함을 클릭합니다.

  5. 인터넷 정보 서비스웹 관리 도구를 차례로 확장한 다음 IIS 6 관리 호환성을 확장합니다.

  6. IIS 6 관리 콘솔IIS 6 메타베이스 및 IIS 6 구성 호환성 확인란을 선택하고 확인을 클릭합니다.





Windows Server 2008 에는 향상되거나 이름이 바뀐 여러 기능이 포함되어 있습니다. Windows Server 2003 및 Windows Server 2008 간의 기능 이름 변경에 대한 자세한 내용은 용어 변경 사항을 참조하십시오.

_M#]

윈도우 업데이트 오류 해결 방법

오류메시지도 뜨지 않고 업데이트가 되지 않을경우..

업데이트를 진행하는 서비스에 필요한 DLL이 등록되지 않아서인데…
업데이트(처음진행시) 다른프로그램이 설치중이거나, 실행중일때 발생할 수 있다.


윈도우 업데이트 오류 해결 방법

시작, 실행 → cmd 입력, 엔터.
cmd 명령 프롬프트 창이 뜨면 cd\ 엔터합니다.


C:\>
이렇게 표시가 되면 net stop wuauserv 를 입력, 엔터.
C:\>net stop wuauserv


C:\>
regsvr32 %windir%\system32\wups2.dll 입력, 엔터.
C:\>regsvr32 %windir%\system32\wups2.dll

※ 여기서 Windows XP Professional x64 Edition 의 경우는 다음과 같이 입력합니다.
C:\>regsvr32 %windir%\syswow64\wups2.dll


C:\>
net start wuauserv 입력, 엔터.
C:\>net start wuauserv


모든 작업을 마쳤으면 cmd 창을 닫고 부팅 후 인터넷 도구 → Windows Update(U),
혹은 자동 업데이트를 통해 업데이트를 설치합니다.

출처 :
http://support.microsoft.com/kb/943144/ko

아파치 SeLinux 권한 관련 오류

Apache 와 PHP를 설치후,.. 아파치를 실행하면,

Syntax error on line 232 of /usr/local/apache/conf/httpd.conf:
Cannot load /usr/local/apache/modules/libphp5.so into server: /usr/local/apache/modules/libphp5.so: cannot restore segment prot after reloc: Permission denied


Fedora에서는 Selinux기술을 사용하는데, 서버환경에서 Selinux환경이 활성화 되어 있는 상태이면 위와 같은 오류가 발생한다.
Selinux활성화 상태에서 apache를 구동하는 방법은 조금 복잡함으로, 그냥 비활성화 시키고 재부팅하면 된다.


/etc/sysconfig/selinux   파일은 열어서

SELINUX=enforcing  부분을 아래와 같이 변경후 재부팅한다.

SELINUX=disabled

헝가리언 표기법

헝가리언 표기법


 


유래


10,15년 전 Microsoft의 개발자중 헝가리 사람의 프로그래머가 쓰던 변수 명명법.


MS 내부에서 따라 쓰기 시작하던 것이 점차 전세계의 프로그래머들에게 널리 퍼져 프로그램 코딩시 변수 명명의 표준적인 관례가 되었다. 그러나 실제로 현장에서 일하다 보면 헝가리안 표기법을 제대로 지키는 개발자는 그리 많지 않다. 어느 정도 개발 경험을 가지고 있는 프로그래머는 물론 심지어 시중의 프로그래밍 서적에서 조차 저자 마다 변수 명을 개인에 따라 가지 각색으로 짓고 있어서 처음프로그램을 배우는 입문자들이 변수 명명에 대한 기준을 제대로 잡지 못하고 있는 실정이다.


변수 명명에 관한 표준화된 관례를 지켜주면 코드의 가독성을 높여 줄뿐 아니라 어떤 변수 명을 지을지 고민하지 않아도 되는 편리함을 누릴 수 있다.


                         


 :Prefix     :Type                  :Description                                   :Example


:b          :bool                   :any boolean type                           :bool bTrue;


:c          :char                    :character type                              :char cLetter;


:i           :int                      :integer                                         :int iCars;


:l           :long                    :long type                                      :long lDistance;


:u          :unsigned             :unsigned type                            


:f           :float                   :floating point                                :float fPercent;


:d          :double                :double floating point                      :double dPercent;


:s           :static                  :a static variable                           :static short ssChoice;


:rg         :array                   :stands for range                            :float rgfTemp[16];


:p          :*                        :any pointer                                   :int *piAddr;


:sz         :*                       :null terminated string of characters   :char szText[16];


:pfn        :*                        :function pointer                            :int (*pifnFunc1)(int x, int y);


:t           :struct                 :a user defined type


:e          :enum                  :variable which takes enumerated values


:E          :enum                  :Enumerated type


:g_         :Global                 :Global Variable                               :String *g_psBuffer


:m_        :Member               :class private member variable           :


:k           :constant formal parameter                                        :void vFunc(const long klGalaxies)


:r           :reference formal parameter                                       :void vFunc(long&rlGalaxies)


:str        :String                  :string class(C )                          :String strName;


:prg       :dynamically allocated array                                       :char *prgGrades;


:h          :handle                :handle to something                     :hMenu


 


:n          :                           :number, quantity                          :int nNum;


:x/y        :                           :used as size                                 :int xWitdth, yHeight;


 


 


Example of type specific variable naming


unsigned char ucByte;              :한 바이트 데이타


         char cChar;               :한 문자


unsigned char rgucByte[10];           :바이트 데이타10개


         char rgcChar[10];                        :문자 데이터10개


         char szChar[16 1];     :문자16개를 저장할 수 있는 문자열 공간


 


:Data Type           :Description


BYTE               unsigned char type


WORD              unsigned short type


DWORD            unsigned long type



































































접두어


의미


a


배열


b 또는 f


BOOL형 변수(b는 bool, f는 flag의 약자


by


BYTE(unsigned char)형 변수


c


카운터로 사용되는 변수


ch


Char 형 변수


cx, cy


X, Y 길이를 나타내기 위해 사용되는 변수


d


날짜형 변수


dbl


Double형 변수


h


핸들(HANDLE)형 변수


n는 i


Int형 변수


l


Long형 변수


p


포인터변수


lp


Long(far)포인터 변수(32비트 프로그래밍에서는 일반 포인터와 같음)


s


문자열


sz


(NULL)문자로 끝나는 문자열


u


Unsigned int형 변수


w


WORD(unsigned short)형 변수


dw


DWORD(unsigned long)형 변수


str


Cstring 형 변수