Unix 철학

from Info/Dev 2009/06/14 19:39 view 60356
  1. 모듈화의 규칙 : 깔끔한 인터페이스와 함께 간단한 부분을 작성하라.
    • 복잡한 소프트웨어를 작성해낼 수 있는 유일한 길은 전체적인 복잡도를 낮추는 방법뿐이다.
    • 깔끔한 인터페이스로 구성된 간단한 모듈로부터 프로그램을 만들어 간다면, 많은 부분은 지역적으로 이해할 수 있다.
    • 어떤 모듈을 수정하더라도 전체가 같이 망가지는 일은 없도록 한다.
  2. 명료함의 규칙 : 명료함은 영리함보다 중요하다.
    • 프로그램을 설계할 때는 프로그램을 실행하는 컴퓨터보다 소스 코드를 읽고 유지보수 할 사람이 더 중요하다.
    • 성능을 약간 개선하려고 복잡하고 난해한 코드를 택하는 것은 정말 멍청한 거래이다.
    • 복잡한 코드는 버그들이 은신하기 딱 알맞기도 하지만 나중에 유지보수를 해야 하는 사람들이 그 복잡함에 좌절하지도 모르기 때문이다.
  3. 조합의 규칙 : 다른 프로그램과 결합될 수 있도록 프로그램을 설계하라.
    • 프로그램이 다른 프로그램과 통신하지 못한다면 지나치게 복잡한 프로그램이 되는 것을 막을 수 없다.
    • 단순한 텍스트 기반의 데이터로 입/출력하는 프로그램을 작성하는 방법이 좋다. 이러한 포맷은 스트림 지향적이고 장치와 독립적이다.
    • 텍스트 스트림을 파싱해야 하는 오버헤드는 있겠지만, 그렇게만 된다면 일반적인 툴도 또한 연결해서 사용할 수 있으므로 활용도는 높아진다.
  4. 분리의 규칙 : 메커니즘과 정책을 분리하라. 인터페이스와 엔진을 분리하라.
    • 엔진과 인터페이스를 분리하는 방법을 찾아야 함을 뜻한다.
    • 프론트엔드와 백엔드 프로세스로 나누고, 이들 사이를 특별한 프로토콜을 사용해서 통신하게 하는 방법도 있다.
      • 프론트엔드는 정책을, 백엔드는 메커니즘을 담당하게 된다.
      • 전체적인 복잡도는 한 프로세스에서 모든 과정을 처리하는 방법보다 줄어든다.
      •  버그도 많이 줄일 수 있고, 비용도 줄일 수 있을 것이다.
  5. 단순함의 규칙 : 단순함을 최우선 가치로 두고 설계하라. 어쩔 수 없을 때에만 복잡함을 더하라.
    • 프로그램을 상호작용하는 작음 프로그램들로 쪼개는 것을 말한다.
    • 이러한 재귀적 방법을 통해 거추장스럽게 치장하거나 쓸데없이 요란하게 디자인된 것을 바로 잡을 수 있다.
  6. 절약의 규칙 : 다른 일들을 하지 않는다는 가정 하에서만 큰 프로그램을 작성하라.
    • 코드크기와 내부적 복잡도가 커지게 되면 그만큼 유지 보수가 어렵다.
  7. 투명성의 규칙 : 프로그램을 검사하고 디버깅하기 좋도록 투명하게 작성하라.
    • 투명하다고 하는 것은 프로그램을 보고 한눈에 무슨 일을 어떻게 하는지 파악할 수 있다는 뜻이다.
    • 발견가능성이란 프로그램이 모니터링 기능을 가지고 있어서 내부 상태를 보여 줄 수 있음을 뜻한다.
    • 프로그램이 생각대로 올바르게 돌아가는 것을 보여주고, 다른 프로그램에서 사용하기 쉽도록 인터페이스를 단순하게 만드는 것이다.
  8. 강건함의 규칙 : 강건함은 투명성과 단순함으로부터 나온다.
    • 보통의 상태뿐 아니라 설계자의 가정에 어긋나는 상황에서도 잘 수행된다는 것을 뜻한다.
    • 프로그램이 대책 없는 마구잡이식 입력을 견디게 만드는 것도 중요하다.
    • 소프트웨어가 '투명하다'면, 대강 프로그램이 어떻게 돌아가는지를 알 수 있다.
    • 프로그램의 돌아가는 모양이 인간의 머리로 충분히 납득할 수 있게 짜여졌다면 '단순하다'고 말할 수 있다.
  9. 표현의 규칙 : 모든 지식을 데이터로 감싸게 하라. 프로그램 로직은 그만큼 간결해진다.
    • 프로그램 복잡도와 자료구조 복잡도 사이에서 고민해야 한다면 후자를 선택해야 한다.
    • 디자인을 전개할 때 복잡함을 데이터로 미룰 수 없는지를 항상 찾아봐야 한다.
    • 데이터는 모든 것을 좌우한다. 적절한 자료구조를 선택하고 설계하면 알고리즘은 스스로 자명함을 보여준다.
    • 프로그램 중심에는 알고리즘이 아니라 자료 구조가 있다.
  10. 예외적 상황 최소화의 법칙 : 인터페이스 디자인에서는 뜻밖의 것을 최소화하라.
    • 사용하기 쉬운 프로그램이란 사용하려고 할 때 뭔가 새로운 것을 배우지 않아도 되는 프로그램이다.
    • 전통에 귀를 기울여서 전통을 배우는 시간을 절약할 수 있도록 도와줘야 한다.
  11. 무언의 법칙 : 프로그램은 중요한 메시지만 출력해야 한다.
    • 잘 설계된 프로그램은 사용자의 관심과 주의를 소중하게 여겨서 되도록 꼭 필요한 경우에만 시선을 끈다.
    • 중요한 정보들이 프로그램 내부의 동작을 장황하게 설명하는 메시지들 사이에 묻혀버리게 해선 안된다.
  12. 정정의 규칙 : 에러를 수습할 수 있으면 그렇게 하라. 하지만 실패할 수 밖에 없다면, 되도록 빨리 단념하라.
  13. 경제성의 규칙 : 프로그래머의 시간은 컴퓨터의 시간보다 소중하다.
    • 기계들에게 프로그래밍의 저수준 작업의 처리 방법을 알려준다.
  14. 자동화의 규칙 : 손으로 코딩하지 않도록 하라. 프로그램을 만드는 프로그램을 만들어라.
    • 코드 생성기는 에러를 발생하기 쉬운 부분을 자동화하기 위해 많이 사용된다.(파서와 랙서 생성기)
    • 작성해야 하는 프로그램의 명세가 간결해질수록, 그것을 올바르게 설계할 가능성이 높아진다.
  15. 최적화의 규칙 : 먼저 프로토타입을 만들어라. 최적화 이전에 돌아가는 버전을 만들어라.
    • "기능의 90%를 구현하고 잘 돌아가는 편이 100%를 구현했지만 동작하지 않는 것보다 낫다."
    • 프로토타입을 먼저 하는 것이 최적화 범위를 고민하는 데 시간을 뺏기지 않고 고통을 털 수 있다.
    • 병목지점을 찾지 않고 최적화를 감행하는 것은 설계를 망치는 길이다.
    • 힘든 디버깅에 필요한 시간보다 리소스들이 허락하는 범위 내에서의 최적화가 훨씬 이득이 된다.
    • "우선 돌아가도록 만들어라. 이후에 빨리 돌아가게 만들어라."
    • "실행되게 하라. 그리고 올바르게 돌아가도록 만들라. 그 다음에는 빨리 실행하도록 만들어라."
    • 원래의 설계에 충실하도록 최적화하지 않은 구현을 한 후 가장 높은 성능을 이끌어낼 수 있는 부분을 찾아야 한다.
  16. 다양성의 규칙 : "왕도"는 없다.
    • 가장 훌륭한 소프트웨어일지라도 원래 설계자가 고안했던 범위 안에서 돌아가게 마련이다.
  17. 확장성의 규칙 : 미래를 위한 설계를 하라. 그 때는 곧 들이닥칠 것이다.
    • 호환성을 위해 데이터 포맷과 코드에 여분을 두도록 해라.
    • 프로토콜이나 파일 포맷을 설계할 때에는 반드시 스스로 확장 가능하도록 만들어야 한다.
    • 새로운 기능을 쉽게 추가할 수 있는 구조로 만들어야 한다.

결론

UNIX는 KISS 이론을 위한 최상의 환경이다.

Keep It Simple, Stupid!

UNIX적 전통을 똑바로 실천하려면 마음을 가다듬고 조심스레 즐겨라. 기꺼이 탐구할 자세를 가져라.


참고자료

  • Art of UNIX Programming - 1장

이 글은 스프링노트에서 작성되었습니다.

프로그래머 수행능력 - 개발자되기

from Info/Dev 2009/02/11 16:28 view 26391

/* 5년후엔 Level 3!! 이라고 외칠 수 있는 내가 되자.! */


  1. 컴퓨터 공학
    1. 자료구조 - Level 1 / STL을 쓰지않고 배열, 링크드리스트 정도는 사용하니..이정도는 무난하다. B-트리 AVL, RB-Tree 는 알고 있어도 ...ㅠ_ㅠ
    2. 알고리즘 - Level 1 / 기본적인 정렬, 서칭 코드는 사용할 수 있지 않을까..
    3. 시스템 프로그래밍 - Level 1 / 어셈블리를 읽지 못하므로 레벨 급강하.. 커널과 유저영역 가상메모리, 페이징에 대한 개념은 있다..
  2. 소프트웨어 공학
    1. 원시 코드 버전 제어 - Level 1 / SVN 비기너~ 뉴비!!
    2. 빌드 자동화 - Level 1 / 빌드과정을 수동(?)으로 오브젝트파일,라이브러리 링크,실행파일 만들기~!
    3. 테스트 자동화 - Level 0 / Automated unit tests 란 개념이 없다.. 그냥 마구 클릭, 경우의 수 테스트...
  3. 프로그래밍
    1. 문제 분석 - Level 1 / 사실 0.5 정도 되는게 맞을지도.. 내가 만든 함수를 누가 쓴적이 있던가...
    2. 시스템 분석 - Level 1 / 멀티 플랫폼, OS 간의 호환성 같은건 고려 해본적 없다.
    3. 의사 소통 - Level 0 / 굳 스펠링, 그래머 이 얼마나 어려운가.
    4. 파일 내 코드 조직화 - Level1 / 코드에 대한 레퍼런스는 만들지 않는다..ㅋ;; 그냥 그때 만들고.. 검색..ㅜ_ㅜ
    5. 파일 외부 코드 조직화 - Level 1 / 코드를 작성한 파일의 위치를 역할으로 나누기는 하는 모양새는 낸다.
    6. 소스트리 조직화 - Level 2 / 소스는 유틸, 라리브러리, 문서, 빌드에 필요한 파일 이런식으로 나누는게 속이 편하다...확실히!!
    7. 코드 가독성 - Level 2 / 변수하나 파일 하나에 이름을 붙일 때 1분은 생각해주는 게 1개월후의 나에대한 예의....
    8. 코드 방어성 - Level 1 / 코드에 대한 결점을 시뮬레이션 하고 예외처리 해주는 건 기본인데 왜 안하게 될까..
    9. 오류 처리 - Level 0 / 에러에 대한 처리는 Exit -_ㅡ;; 에러처리 전략을 짜놓고 전체적인 시스템을 조율하는 레벨은 도대체 언제쯤...
    10. IDE 활용 - Level 2 / 매크로는 사용 안할지라도 단축키는 무조건 프린터 해놓고 보면서 하는게 편한듯..
    11. API 활용 - Level 1 / Vast..막대한 In-depth Knowledge 라니 그냥 자주 사용 해 본정도로..ㅜㅜ
    12. 프레임워크 - Level 1 / 개발을 하려면 언제나 프레임워크 상에서.. Autor 는 제작자인가-_ㅡ...아~;;
    13. 요구사항 분석 - Level 1 / Complete 이런 단어는 왠지 부담스럼움.. 그냥 이런 요구사항이 맞나 확인 하는건 할 수 있다. 정말?
    14. 스크립트 활용 - Level 0 / shell scirpts 라도 알아야는데 .. Perl 도 알아야 는데 으.... 뭐해데..ㅜ_ㅜ..
    15. 데이터베이스 - Level 1 / ACID!! Atomic, Consistency, Isolation, Durable DB에 기본!! 이걸 기반으로 정규화 어쩌고 저쩌고...
  4. 경험
    1. 프로그래밍 언어 - Level 1 / 객체지향(사물-want) 와 SQL 은 나름 고민 해보았다.
    2. 플랫폼 - Level 1 / 메이저업체의 2-3 개 정도의 플랫폼의 경험을 가짐..
    3. 경력 - Level 0 / 1년이하;;
    4. 전문 분야 지식 - Level 1 / 최근에 한 번정도 씩 프로젝트를 가지면서 런칭은 해내는듯..유지보수는 ? ;;;
  5. 지식
    1. 도구 - Level 1 / 툴 사용은 언제나 즐겁다. 참조가 나름 되기도 한다. Scott Hanselman's power tools list 유명한가?;;
    2. 언어 - Level 1 / Erlang, Prolog 이런 언어는 이해하기가 어렵나..
    3. 코드기반 - Level 1 / 좀 생소하지만 코드 레이아웃의 기본지식과 시스템 구성의 어떻게 되있는지는 알고 있다.
    4. 신기술 - Level 1 / RSS 등록해놓고 기술은 보고 있다. 가끔식 관심 가는건 깔아보기도 하고.. 실행도 해보고 툴인가;;;
    5. 플랫폼 내부 - Level 1 / 윈도우, 리눅스 시스템을 공부하면서 플랫폼이란 하드웨어 위에 올려놓는 일종의 가상화 작업이라고...
    6. 책 - Level 0 / 마스터링 정규식 끄악~! -> 디자인 패턴 ->>>>>>>>>> 아트오브프로그래밍 ..... 왠지 넘사벽??
    7. 블로그 - Level 2 / RSS 50여개 등록해놓고 관심있는 글과 기사 내가 공부하고 있는 것들은 꾸준히 포스팅 중..불펌도 많이.;;;

이 글은 스프링노트에서 작성되었습니다.

Windows 컨텍스트 메뉴 수정하기.

from Info/Dev 2007/10/18 09:24 view 37985
Windows Registry Editor Version 5.00

; ----- 각종 우클릭 메뉴 추가

; -----  

;내 컴퓨터 우클릭 메뉴에서 네트워크 드라이브 제거

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]

"NoNetConnectDisconnect"=dword:00000001

 

;내 컴퓨터 우클릭 메뉴에서 '관리' 항목 제거

;"NoManageMyComputerVerb"=dword:00000001  

 

;내 컴퓨터 우클릭 메뉴에 제어판 추가

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\005.제어판]

@="제어판"

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\005.제어판\command]

@="rundll32.exe shell32.dll,Control_RunDLL"

 

;내 컴퓨터 우클릭 메뉴에 서비스 추가

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\010.서비스]

@=hex(2):1c,c1,44,be,a4,c2,00,00

"SuppressionPolicy"=dword:4000003c

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\010.서비스\command]

@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\

00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,6d,00,6d,00,\

63,00,2e,00,65,00,78,00,65,00,20,00,2f,00,73,00,20,00,25,00,53,00,79,00,73,\

00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,00,5c,00,73,00,79,00,73,00,\

74,00,65,00,6d,00,33,00,32,00,5c,00,73,00,65,00,72,00,76,00,69,00,63,00,65,\

00,73,00,2e,00,6d,00,73,00,63,00,20,00,2f,00,73,00,00,00

 

; 내 컴퓨터 우클릭 메뉴에 장치 관리자 추가

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\015.장치관리자]

@="장치관리자(&D)"

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\015.장치관리자\command]

@="mmc.exe C:\\WINDOWS\\SYSTEM32\\devmgmt.msc"

 

;내 컴퓨터 우클릭 메뉴에 이벤트 뷰어 추가

;[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\020.이벤트 뷰어]

;@="이벤트 뷰어"

;[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\020.이벤트 뷰어\command]

;@="eventvwr"

 

;내 컴퓨터 우클릭 메뉴에 프로그램 추가/제거 추가

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\025.프로그램 추가/제거]

@="프로그램 추가/제거"

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\025.프로그램 추가/제거\command]

@="control appwiz.cpl"

 

;내 컴퓨터 우클릭 메뉴에 "User Profile" 추가

;[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\030.User Profile]

;@="User Profile"

;[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\030.User Profile\Command]

;@="C:\\WINDOWS\\EXPLORER.EXE /e,C:\\Documents and Settings"

 

;내 컴퓨터 우클릭 메뉴에 "Program Files" 추가

;[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\035.Program Files]

;@="Program Files"

;[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\035.Program Files\Command]

;@="C:\\WINDOWS\\EXPLORER.EXE /e,C:\\Program Files"

 

;내 컴퓨터 우클릭 메뉴에 "Windows" 추가

;[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\040.Windows]

;@="Windows"

;[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\040.Windows\Command]

;@="C:\\WINDOWS\\EXPLORER.EXE /e,C:\\WINDOWS"

 

;내 컴퓨터 우클릭 메뉴에 "system32" 추가

;[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\045.System32]

;@="system32"

;[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\045.System32\Command]

;@="C:\\WINDOWS\\EXPLORER.EXE /e,C:\\WINDOWS\\system32"

 

;내 컴퓨터 우클릭 메뉴에 재부팅 추가

;[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\050.재부팅]

;@="재부팅(&R)"

;[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\050.재부팅\command]

;@="shutdown -r -f -t 0"

 

;내 컴퓨터 우클릭 메뉴에 로그오프 추가

;[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\055.로그오프]

;@="로그오프(&L)"

;[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\055.로그오프\command]

;@="shutdown -l -f -t 0"

 

;내 컴퓨터 우클릭 메뉴에 끄기 추가

;[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\060.시스템 끄기]

;@="시스템 끄기(&U)"

;[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\060.시스템 끄기\command]

;@="shutdown -s -f -t 0"

 

;내 컴퓨터 우클릭 메뉴에 레지스트리 편집기 추가

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}]

"LocalizedString"=hex(2)& #58;25,55,53,45,52,4e,41,4d,45,25,27,73,20,43,6f,6

d,70,75,74,65,72,00

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\065.RegEdit]

@="RegEdit"

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\065.RegEdit\command]

@="C:\\Windows\\Regedit.exe"

 

 

 

;--------------------------------------------------------------------------

; ----- 폴더 우클릭 메뉴 추가

; -----  

; 파일 우클릭 메뉴에 "폴더에 복사/폴더로 이동" 추가

;[HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\Copy To]

;@="{C2FBB630-2971-11d1-A18C-00C04FD75D13}"

;[HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\Move To]

;@="{C2FBB631-2971-11d1-A18C-00C04FD75D13}"

;[HKEY_CLASSES_ROOT\Directory\shellex\ContextMenuHandlers\Copy To]

;@="{C2FBB630-2971-11d1-A18C-00C04FD75D13}"

;[HKEY_CLASSES_ROOT\Directory\shellex\ContextMenuHandlers\Move To]

;@="{C2FBB631-2971-11d1-A18C-00C04FD75D13}"

 

; 폴더 우클릭 메뉴에 명령 프롬프트(Dos here) 추가

[HKEY_CLASSES_ROOT\Folder\shell\002.cmd]

@="Do&s here"

[HKEY_CLASSES_ROOT\Folder\shell\002.cmd\command]

@="cmd.exe /k title 명령 프롬프트 && ver && cd \"%L\""

 

; 폴더 우클릭 메뉴에 윈도우즈 메모장 추가 (좌측 폴더 창의 폴더 위에 메뉴 추가)

;[HKEY_CLASSES_ROOT\Folder\shell\005.Notepad]

;@="메모장"

;[HKEY_CLASSES_ROOT\Folder\shell\005.Notepad\Command]

;@="C:\\Windows\\notepad.exe"

 

; 폴더 우클릭 메뉴에 윈도우즈 메모장 추가 (좌우측 폴더 위에 메뉴 추가)

[HKEY_CLASSES_ROOT\Directory\shell\005.Notepad]

@="메모장"

[HKEY_CLASSES_ROOT\Directory\shell\005.Notepad\Command]

@="C:\\Windows\\notepad.exe"

 

; 윈도우즈 기본 메모장으로 열기 (파일 우클릭 메뉴)

[HKEY_CLASSES_ROOT\*\Shell\Edit.Notepad]

@="메모장"

[HKEY_CLASSES_ROOT\*\Shell\Edit.Notepad\command]

@="C:\\Windows\\notepad.exe %1"

 

;폴더 우클릭 메뉴에 "User Profile" 추가

;[HKEY_CLASSES_ROOT\Folder\shell\010.User Profile]

;@="User Profile"

;[HKEY_CLASSES_ROOT\Folder\shell\010.User Profile\Command]

;@="C:\\WINDOWS\\EXPLORER.EXE /e,C:\\Documents and Settings"

 

;폴더 우클릭 메뉴에 "Program Files" 추가

;[HKEY_CLASSES_ROOT\Folder\shell\015.Program Files]

;@="Program Files"

;[HKEY_CLASSES_ROOT\Folder\shell\015.Program Files\Command]

;@="C:\\WINDOWS\\EXPLORER.EXE /e,C:\\Program Files"

 

;폴더 우클릭 메뉴에 "Windows" 추가

;[HKEY_CLASSES_ROOT\Folder\shell\020.Windows]

;@="Windows"

;[HKEY_CLASSES_ROOT\Folder\shell\020.Windows\Command]

;@="C:\\WINDOWS\\EXPLORER.EXE /e,C:\\WINDOWS"

 

;폴더 우클릭 메뉴에 "system32" 추가

;[HKEY_CLASSES_ROOT\Folder\shell\025.System32]

;@="system32"

;[HKEY_CLASSES_ROOT\Folder\shell\025.System32\Command]

;@="C:\\WINDOWS\\EXPLORER.EXE /e,C:\\WINDOWS\\system32"

 

;폴더 우클릭 메뉴에 "music" 추가

;[HKEY_CLASSES_ROOT\Folder\shell\030.Music]

;@="music"

;[HKEY_CLASSES_ROOT\Folder\shell\030.Music\Command]

;@="C:\\WINDOWS\\EXPLORER.EXE /e,E:\\Music"

 

; 폴더 우클릭 메뉴에 제어판 추가

;[HKEY_CLASSES_ROOT\Folder\shell\035.제어판]

;@="제어판"

;[HKEY_CLASSES_ROOT\Folder\shell\035.제어판\Command]

;@="rundll32.exe shell32.dll,Control_RunDLL"

 

; 폴더 우클릭 메뉴에 서비스 추가

;[HKEY_CLASSES_ROOT\Folder\shell\040.서비스]

;@=hex(2):1c,c1,44,be,a4,c2,00,00

;"SuppressionPolicy"=dword:4000003c

;[HKEY_CLASSES_ROOT\Folder\shell\040.서비스\Command]

;@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\

00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,6d,00,6d,00,\

63,00,2e,00,65,00,78,00,65,00,20,00,2f,00,73,00,20,00,25,00,53,00,79,00,73,\

00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,00,5c,00,73,00,79,00,73,00,\

74,00,65,00,6d,00,33,00,32,00,5c,00,73,00,65,00,72,00,76,00,69,00,63,00,65,\

00,73,00,2e,00,6d,00,73,00,63,00,20,00,2f,00,73,00,00,00

 

; 폴더 우클릭 메뉴에 장치관리자 추가

;[HKEY_CLASSES_ROOT\Folder\shell\045.장치관리자]

;@="장치관리자"

;[HKEY_CLASSES_ROOT\Folder\shell\045.장치관리자\Command]

;@="mmc.exe C:\\WINDOWS\\SYSTEM32\\devmgmt.msc"

 

; 폴더 우클릭 메뉴에 이벤트 뷰어 추가

;[HKEY_CLASSES_ROOT\Folder\shell\050.이벤트 뷰어]

;@="이벤트 뷰어"

;[HKEY_CLASSES_ROOT\Folder\shell\050.이벤트 뷰어\Command]

;@="eventvwr"

 

; 폴더 우클릭 메뉴에 프로그램 추가/제거 추가

;[HKEY_CLASSES_ROOT\Folder\shell\055.프로그램 추가/제거]

;@="프로그램 추가/제거"

;[HKEY_CLASSES_ROOT\Folder\shell\055.프로그램 추가/제거\Command]

;@="control appwiz.cpl"

 

; 폴더 우클릭 메뉴에 재부팅 추가

;[HKEY_CLASSES_ROOT\Folder\shell\060.재부팅]

;@="재부팅(&R)"

;[HKEY_CLASSES_ROOT\Folder\shell\060.재부팅\Command]

;@="shutdown -r -f -t 0"

 

; 폴더 우클릭 메뉴에 로그오프 추가

;[HKEY_CLASSES_ROOT\Folder\shell\065.로그오프]

;@="로그오프(&L)"

;[HKEY_CLASSES_ROOT\Folder\shell\065.로그오프\Command]

;@="shutdown -l -f -t 0"

 

; 폴더 우클릭 메뉴에 끄기 추가

;[HKEY_CLASSES_ROOT\Folder\shell\070.시스템 끄기]

;@="시스템 끄기(&U)"

;[HKEY_CLASSES_ROOT\Folder\shell\070.시스템 끄기\Command]

;@="shutdown -s -f -t 0"

 

; 폴더 우클릭 메뉴에 레지스트리 편집기 추가

;[HKEY_CLASSES_ROOT\Folder\shell\075.RegEdit]

;@="RegEdit"

;[HKEY_CLASSES_ROOT\Folder\shell\075.RegEdit\Command]

;@="C:\\Windows\\Regedit.exe"

 

; 폴더 우클릭 메뉴에 RegEditer 추가

;[HKEY_CLASSES_ROOT\Folder\shell\080.RegEditer]

;@="RegEditer"

;[HKEY_CLASSES_ROOT\Folder\shell\080.RegEditer\Command]

;@="C:\\Program Files\\KugleSoft\\RegEditer\\RegEditer.exe"

 

;폴더 우클릭 메뉴에 휴지통 추가

[HKEY_CLASSES_ROOT\Folder\shellex\ContextMenuHandlers\휴지통]

@="{645FF040-5081-101B-9F08-00AA002F954E}"

VC++ 6.0 디버거 사용하기

from Info/Dev 2007/05/16 23:18 view 24903
VC++ 6.0 디버거 사용하기

more..

Tag |

VC++ 6.0 설정 가져오기...

from Info/Dev 2007/05/10 03:29 view 23907

레지스트리의 HKEY_CURRENT_USER\Software\Microsoft\DevStudio\6.0 보면HKEY_CURRENT_USER\Software\Microsoft\DevStudio\6.0\Keyboard (단축키 ) HKEY_CURRENT_USER\Software\Microsoft\DevStudio\6.0\Layout (화면설정)
등의 정보가 있다.

 선택된 상태에서 메뉴 >> 레지스트리 >> 레지스트리 파일 내보내기로 .reg형태로 저장한뒤에 새로 설치한 컴퓨터에서 파일(*.reg)  더블클릭해주면 등록이 됩니다.
 
그러면 저장되었던 환경을  그대로 사용할 있는거죠.  Keyboard, Layout 외에 저장된 정보가 많이 있습니다. 많이 저장해서 사용할 도 있다.

 아나 이 정보 얻을려고 2시간 가량 구글신에게 매달렸네.ㅜ_ㅜ..엉엉..

Tag |

VC에 Add-in 하면 좋은 것들!!

from Info/Dev 2007/05/07 18:04 view 30204

VC++ 에 있으면 손과 머리가 편해지는 것들을 링크!!

1. danga80님의 글!!

2. Doxygen  2005 - http://www.codeproject.com/macro/KingsTools.asp

3. Subversion
   - SubVersion Manager

Tag |

단축키(윈도우APP) 모음쓰레드.

from Info/Dev 2007/05/02 21:40 view 24687
VC++ 2005 단축키 모음

more..


VC++ 6.0 단축키

more..


Visual Assist

more..

Tag |

Visual Assist X 사용하기.

from Info/Dev 2007/04/08 00:00 view 47278
07.5.12(토) 1555 버젼을 쓰고 있다. 6.0 와 2005를 동시에 지원한다.

ps.처음 인스톨후 안되면 리부팅이나 또 인스톨 하면 되기도 한다....(경험담)

참고로 사용방법은 이러하다..

more..



사용자 삽입 이미지

C코드 최적화 하기.

from Info/Dev 2007/04/07 15:46 view 25960
KLDP에 있는 글.

http://kldp.org/node/79109

http://www.azillionmonkeys.com/qed/optimize.html

근데 막상 실천은 어렵 다는 거..ㅠ_ㅠ

코딩 할 때 쓰는 폰트

from Info/Dev 2007/03/19 19:54 view 27040
 요즘 프로그래밍을 자주 하다 보니 글꼴이 자꾸 거슬려서 0과 O의 차이랄까..

다른 폰트를 물색하던중에 괜찮다고 소문난 Dina 폰트를 사용하기로 했다.

 처음엔 좀 어색했는데 쓰면 쓸수록 좋다고 할까.. 암튼 맘에드는 폰트다.
사용자 삽입 이미지


Tag |