codeheart 위치로그  |  태그  |  미디어로그  |  방명록
icon 개발/VC++ (윈도우) 에 해당하는 글5 개
2013.09.10   windows 계의 apt-get > chocolatey
2013.05.23   MinGW MSYS ls 컬러링/한글안깨지게
2010.03.24   Windows SDK 각종 문자열 API
2009.10.20   컴파일/링크/런 타임 최적화 전략
2009.07.04   ATL/WTL


icon windows 계의 apt-get > chocolatey
개발/VC++ (윈도우) | 2013. 9. 10. 21:39




비록 리눅스를 주로 사용하는 개발자가 아니더라도

debian 계열의 apt-get, redhat 계열의 yum 같은 것이 있었으면 싶다.


심지어 mac os x 도 homebrew macports 같은 것이 있다.

몇년전에도 찾아본적이 있었는데, 윈도우에도 win-get 이라는 것이 있었다.

하지만 win-get 은 (사이트만 봐도 알 수 있지만) 어플리케이션 수도 적고 버젼 갱신도

잘 되고 있지 않다.


나는 리눅스를 주로 사용하는 개발자는 아니지만, 최근에 리눅스를 쓰면서

이런 생각을 다시 한번 하게 되었는데,

우연히 외국 포럼에서 관련 글을 보게 되었다.


chocolatey 라는 프로젝트인데,

사이트 구조를 보면 nuget 과 흡사하다. nuget 은 .net 라이브러리 관련 패키지 매니저로

이를 어플리케이션 수준으로 확대시킨 것이라고 보면 될 듯 하다.

(nuget 개발쪽에서 개발한 것인지는 잘 모르겠지만, 언급이 계속 되는 것을 봐선 맞는 것 같다)

(일단, 설치 폴더 안에 nuget.exe 가 있는 것을 봐서 nuget 을 내부적으로 이용하는 듯 하다)


http://chocolatey.org/ - 공식 사이트

http://chocolatey.org/packages - 현재 지원하는 어플리케이션 패키지 목록

 

1. chocolatey 설치 방법

@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%systemdrive%\chocolatey\bin


사실 chocolatey 설치부터 스크립트다

이 부분은 오해할 필요가 없다. chocolatey 설치만 이렇고

이 이후 다른 어플리케이션 설치는 간단하니까.

powershell 스크립트를 통해 설치를 한다.

부언하자면, powershell 은 고전적인 cmd shell 을 탈피하고자 microsoft 가 밀고 있는 스크립트다.

루비를 설치하고 싶으면, ( apt-get install ruby / yum install ruby )

chocolatey install ruby

( 혹은 cinst ruby )


* 특정 버젼을 명시하여 설치하고 싶으면,

chocolatey install ruby -version 2.0.0.24700


* 루비를 삭제하고 싶으면, ( apt-get remove ruby / yum remove ruby )

chocolatey uninstall ruby

( 혹은 cuninst ruby )


* chocolatey 리스트 중 루비를 찾고 싶으면, ( apt-cache search ruby / yum search ruby )

chocolatey list ruby

( 혹은 clist ruby )


기타 다른 커맨드 기능을 보고 싶다면,

https://github.com/chocolatey/chocolatey/wiki/CommandsReference

에서 보면 된다.


파이썬 라이브러리 패키지 설치나 루비 젬을 이용한 패키지 설치 등도

chocolatey command 로

도 할 수있게 통합된 듯 싶다.

 

잠깐 써봤지만 생각보다 괜찮은 것 같다.

무엇보다 어플리케이션 버젼 갱신이 잘되고 있는 듯하다.

(ruby 는 2.0.x, intellij 도 12.1.4, 많은 어플리케이션이 최신 버젼가까이 유지된다.)

apt-get 이나 yum 처럼 console 창에서 진행과정을 보여주는 것도 잘된다.

프로그램들은 c:\chocolate\lib 나 c:\chocolate\bin 에 설치가 되면, path 설정도 알아서 해준다. 다만 일부 .msi, .exe 등의 설치프로그램에 강하게 의존되는 프로그램들은

별도의 디폴트 폴더에 설치된다. 이는 다소 아쉽지만, 이 역시 설치가 거의 자동화되어있기 때문에 큰 문제는 없어보인다.

 

'개발 > VC++ (윈도우)' 카테고리의 다른 글

MinGW MSYS ls 컬러링/한글안깨지게  (0) 2013.05.23
Windows SDK 각종 문자열 API  (0) 2010.03.24
컴파일/링크/런 타임 최적화 전략  (0) 2009.10.20
ATL/WTL  (0) 2009.07.04

arrow 트랙백 | 댓글



icon MinGW MSYS ls 컬러링/한글안깨지게
개발/VC++ (윈도우) | 2013. 5. 23. 15:51

[MSYS.bat 에서 사용할 때]

vim .inputrc 에서 (홈디렉토리. 없으면 추가)

set input-meta on

set convert-meta off

로 수정


vim /etc/profile 에서

alias ls='ls -F --color=auto --show-control-char'

alias ll='ls -l --color=auto --show-control-char'

로 수정


참고 : http://blog.naver.com/PostView.nhn?blogId=waky80&logNo=62359409&redirect=Dlog&widgetTypeCall=true



[cmd에서 사용할때. 단 MSYS bin 이 PATH 에 지정되어있어야 함]

notepad c:\windows\system32\ls.bat 에

@ls.exe -F --color=auto --show-control-char %1 %2 %3 %4

notepad c:\windows\system32\ll.bat 에

@ls.exe -l --color=auto --show-control-char %1 %2 %3 %4





'개발 > VC++ (윈도우)' 카테고리의 다른 글

windows 계의 apt-get > chocolatey  (0) 2013.09.10
Windows SDK 각종 문자열 API  (0) 2010.03.24
컴파일/링크/런 타임 최적화 전략  (0) 2009.10.20
ATL/WTL  (0) 2009.07.04

arrow 트랙백 | 댓글



icon Windows SDK 각종 문자열 API
개발/VC++ (윈도우) | 2010. 3. 24. 11:19

shlwapi 에 수많은 문자열 API 및 path 관련 API 가 있음
path 관련 API 는 매우 유용할 듯 싶음

'개발 > VC++ (윈도우)' 카테고리의 다른 글

windows 계의 apt-get > chocolatey  (0) 2013.09.10
MinGW MSYS ls 컬러링/한글안깨지게  (0) 2013.05.23
컴파일/링크/런 타임 최적화 전략  (0) 2009.10.20
ATL/WTL  (0) 2009.07.04

arrow 트랙백 | 댓글



icon 컴파일/링크/런 타임 최적화 전략
개발/VC++ (윈도우) | 2009. 10. 20. 21:39

컴파일 타임

링크 타임
1. Incremental Link 을 켜자
- /OPT:REF 와 /OPT:ICF 를 꺼야 한다.
- /OPT:REF ; 참조되지 않는 함수를 제거한다. 여기서 OBJ 생성시 오래걸린다. 물론 대신 런타임 성능은 코드 간소화로 인해 개선될 수 있다.
- /OPT:ICF ;
- 요약1 ; 런타임 성능이 중요한 배포버전에는 적용하면 안되며, 개발용 버전(디버그/개발용 릴리즈)에 적용할 만 하다.
- 요약2 ; 물론 디버그 버전에서 기존 것보다 너무 느려진다면 테스트에 지장이 생기므로 고려해야 한다.

런 타임
1. /C7 이 있다면 없애고 PDB 파일 형식으로 디버깅 심볼을 저장하도록 수정한다. 이는 실행파일 크기를 줄여주며 성능 향상으로 이어진다. 물론 릴리즈 버전 실행파일에 디버깅 정보가 전혀 없다면 효과가 없을 수도 있다.

2. WST(Platform SDK 에 있음) 나 SWS(이 것이 더 최신 정보) 와 같은 도구를 이용한다면 자주 사용되는 함수를 바이너리 앞으로 놓게되어 성능향상을 가져다 줄 수 있다.

'개발 > VC++ (윈도우)' 카테고리의 다른 글

windows 계의 apt-get > chocolatey  (0) 2013.09.10
MinGW MSYS ls 컬러링/한글안깨지게  (0) 2013.05.23
Windows SDK 각종 문자열 API  (0) 2010.03.24
ATL/WTL  (0) 2009.07.04

arrow 트랙백 | 댓글



icon ATL/WTL
개발/VC++ (윈도우) | 2009. 7. 4. 06:08

WTL 은 Windows Template Library 로,
STL 과 같이 Template 형식의 순수 .h 파일 라이브러리다.
다만 그 목적은 윈도우 어플리케이션 프레임워크인 MFC 와 유사하다.
ATL 과 WTL 사이의 역사는 잘 모르겠지만, 아마도 ATL 이 먼저인 것 같다.
애초에 MFC 개발자들이 구조적으로 MFC 를 일반화하기 위해 내부 코어를 템플릿화시키지 않았을까?
그래서 ATL 이 탄생했고, 과거의 MFC 와 달리 현재의 MFC 는 하위 층에 ATL 을 사용하고 있다.
또한 ATL 을 확장하여 WTL 이 탄생하였는데 ATL 은 MFC 의 베이스를 구성하고 있지만
독립적으로 윈도우 프로그램을 작성할 수는 없다.
(보다 정확히 말하자면 간단한 프로그램을 만들 수 있으나, 고급 수준의 기능을 사용하기에는 다소 부족하다.)
따라서, ATL 의 특성을 바탕으로 MFC 을 대체할 만한 라이브러리인 WTL 가 탄생된 것 같다.

분명히 WTL 은 MFC 에 비해 여러모로 우수하지만, 몇가지 단점으로 인해 MS 가 버린 듯 하다.
버렸다는 얘기는 오픈소스화했다는 것이고, 지금 오픈소스로 명맥이 유지되고 있다.
즉, MS 의 직접적인 지원(개발툴에 포함되는 등의)은 없다.

MFC 에 비해 WTL 이 가지는 장점은, 일단 외부 DLL 이 필요없다.
단순히 API 를 템플릿 차원으로 랩핑했기 때문에 부가적인 오버헤드가 발생하지 않는다.
그리고, 최소한의 가상 메쏘드를 사용하였고 가능한 많은 부분을 제네릭하게 작성하였다.
이러한 점은 많은 이점을 낳는다. 코드의 독립성이 뛰어나게 되며, 재사용성이 증대된다.
또한, 생성되는 실행파일 용량이 훨씬 작고, 성능도 더 우수하다.
게다가 MFC 보다 후에 등장해서 그런지 구조적으로 조금 낫다.
따라서, WTL 은 MFC 에 비해서는 타이핑량이 줄고, 간단한 소스를 만든다.
API 를 아주 추상적으로 랩핑하지 않았음에도 IDE 의존도가 높은 MFC 에 비해서 어느 정도 코드 생산성이 있어 보인다.
(구조적으로 조금 낫다는 것은 WTL 역시 MFC 의 베이스를 깔고 있는 ATL 를 확장한 것이라, 많은 부분 호환적인 소스가 보인다. 만일 이런 부분을 버렸다면, WTL 은 구조적으로 더 발전될 수도 있었을 것 같다.)

그렇지만, WTL 은 MFC 보다 C++ 에 대한 더 높은 이해를 필요로 한다.
그리고 제네릭, 가상함수 등의 지식도 어느 정도 있어야 한다.
사실 MFC 나 ATL/WTL 이나 C++ 을 온전히 모르고 쓸 수 있도록 배려한(?) MS 개발자들의 트릭들이 존재하기
때문에 모든 문법 사항을 필수적으로 알아야 하는 것은 아니다.
그렇지만, 확실히 WTL 코드는 C++ 입문자들이 접하기에는 다소 어려울 듯 싶다.
이 점이 MS 가 WTL 을 포기한 이유인 듯 싶다. (내부적으로 유사한 ATL만을 공유하는듯)

하지만 WTL 에도 어느 정도의 꼼수와 트릭이 제공되는 듯하다.




arrow 트랙백 | 댓글



[PREV] [1] [NEXT]
관리자  |   글쓰기
BLOG main image
code heart story
분류 전체보기 (74)
생활 (0)
잡담 (8)
컴퓨터 (11)
개발 (52)
기본 (6)
Linux (21)
Web (4)
Script (4)
Java 기본 (0)
Windows 디버깅 (6)
VC++ (5)
VC++ (윈도우) (5)
VC++ (게임) (0)
VC++ (네트워크) (1)
Code Snippet (0)
Total :
Today :
Yesterday :
rss
위치로그 : 태그 : 방명록 : 관리자
코드하트's Blog is powered by Daum / Designed by plyfly.net