2009년 12월 9일 수요일
2009년 12월 4일 금요일
iPhone 내 손에 스타일~
한동안 제 블로그에 포스팅을 전혀 못했습니다.
지난 주에 저널논문 리뷰 결과가 나왔습니다만, Major Revision이라서
심사위원의 각 코멘트에 따라서 필요한 실험을 새로 하느라 정신이 없었습니다.
지금은 조금 정리가 되고 여유가 생겼습니다.
아이폰의 폭풍이 조금 잠잠해진 지금, 많은 고민끝에 아이폰을 구매하게 되었습니다.
16기가 화이트, i-라이트 요금제로 신청하였습니다.
늦게 올줄 알았는데, 내일 배송한다네요, 월요일날 받을 수 있어서 좋긴한데,
번호이동인데 개통해서 보내서 주말에 전화가 안될꺼라네요. ^-^;;
아이팟 터치를 줄곳 써왔기 때문에 사용에 대한 불편을 없을 것 같습니다.
신세계(新世界)가 열릴 것을 기대하며 흥분해 있습니다.
도착하면 개봉기를 올리도록 하겠습니다. ^ㅠ^
2009년 11월 27일 금요일
구글 웨이브 초대장드려요
저에게 구글 웨이브 (Google Wave) 초대장이 발급되었습니다.
원하시는 분께 드리고자 합니다.
@nass0131 트위터 계정으로 DM주시면 선착순으로 16분께 드리도록 하겠습니다.
감사합니다.
2009년 11월 26일 목요일
Best Design Award
지난 월, 화요일에 부산 BEXCO에서 ISOCC라는 학회가 있었습니다.
그곳에 CDC (chip design contest)에 참가했는데, 거기서 특별상을 수상하게 되었습니다.
상금도 받고~ :)
기분 좋습니다. 축하해 주세요 ㅋㅋ
2009년 11월 22일 일요일
2009년 11월 21일 토요일
[한컴오피스 2010 CBT 2차] 2.슬라이드 2010 VS. 파워포인트 2010 (1)
저는 대학원 박사과정으로 있으면서 연구내용을 발표할 일이 많습니다.
저는 주로 파워포인트와 엑셀을 사용해왔습니다.
그래서 이번 CBT에서는 주로 한컴 오피스의 '슬라이드'에 대해서 사용해보고 그 사용기를 올리고자 합니다.
그리고 얼마전에 공개된 MS 오피스 2010 베타와의 비교도 함께 해보고자 합니다.
제가 사용하는 PC의 OS는 Windows 7 Ultimate 64비트입니다.
(MS 오피스는 64비트가 설치되었습니다.)
1. 인터페이스
먼저 두 프로그램의 인터페이스를 비교해 보겠습니다.
제가 사용하던 발표자료를 불러오도록 하겠습니다.
위의 그림은 MS 오피스 2010 파워포인트의 인터페이스입니다.
둘다 모두 리본 메뉴 인터페이스를 기본으로 지원하고 있으며,
특히 한컴 오피스 2010 슬라이드의 경우, 여러가지 테마를 지원하고 있어서
사용자에게 보다 익숙한 인터페이스를 선택할 수 있는 폭을 제공합니다.
2. 렌더링
일단 슬라이드쇼를 실행했을 때에는 반응속도가 꾀 빠른 것을 느낄 수 있었습니다.
하지만 몇 가지 눈에 걸리는 것이 있었습니다.
바로 폰트 렌더링 문제입니다. 아래 그림에서 보시죠.
둘의 차이가 보이시나요?
한컴 오피스 2010 슬라이드의 폰트가 좀더 샤프해 보입니다.
선명해 보인다고도 할 수 있겠으나, 어쨌든 둘 간의 차이가 보이는 것은 확실합니다.
때에 따라서는 자간도 약간씩 다르게 보이는 것을 알 수 있었습니다.
슬라이드쇼 속도 실험을 해 보았습니다.
54장의 슬라이드의 슬라이드쇼를 시작하고 스페이스바로 계속 쉬지 않고 넘기면서 끝나는 시간을 보았습니다.
MS 오피스 2010 파워포인트 (이하 MS파워포인트): 4.5초
한컴 오피스 2010 슬라이드 (이하 한컴슬라이드): 3.79초
한컴슬라이드가 더 빠른 결과를 보입니다만, 문제는 렌더링입니다.
MS파워포인트의 경우 모든 슬라이드가 표시되면서 넘어가는 반면,
한컴슬라이드는 중간에 슬라이드가 보이지 않고 끝나버립니다.
아무래도 한컴슬라이드의 렌더링 엔진이 MS파워포인트보다는 느린 것 같습니다.
3. 슬라이드 확대보기 문제
슬라이드를 확대해서 보고 편집하기 위해서 Ctrl 버튼과 마우스 휠 버튼을 함께 눌러 화면을 확대해 보았습니다.
화면 확대되는 속도가 MS오피스에 비해서 한컴슬라이드가 현저하게 느리며,
MS오피스는 정 가운데를 중심으로 확대되는 반면, 한컴슬라이드는 화면중심이 빈번하게 바뀌면서
확대되는 바람에 슬라이드가 조금씩 움직이면서 확대됩니다.
(이 부분은 개선이 되어야 한다고 생각합니다.)
4. 외부 OLE
저는 전자공학을 전공했기 때문에 주로 수식을 편집하거나 Visio로 그림을 그려서 슬라이드에
붙여 넣는 일이 빈번합니다. 아래 그림은 제가 기술한 수식을 MS파워포인트로 저장해서 한컴슬라이드로 불러온 모습니다.
위의 그림은 슬라이드를 확대한 것입니다.
그림에서 보시면 아시겠지만, 수식의 가로세로 비율이 안맞게 표시된 것을 알수 있습니다.
그래서 OLE 수식편집을 다시 실행해서 저장해 보았습니다.
위 그림과 같이 가로세로 비율이 맞게 표시된 것을 볼 수 있습니다.
그런데 뭔가 어색하죠?
바로 수식의 내용이 바뀌었습니다.
원래는 두 번째 그림에 있는 수식이 맞는데, .pptx에서 .slide로 변환했을 때에는
잘못표시된 것입니다.
두번째로 Visio에 대해서 한번 테스트해 보았습니다.
아래 그림은 제가 Visio로 그림 그림을 Visio 객체로 붙여넣은 것입니다.
그리고 OLE 객체 이므로 더블클릭하면 Visio 인터페이스를 불러와서 편집할 수 있습니다.
그런데 문제는 편집하려고 열었던 인터페이스를 닫으면 아래와 같이 작동이 중지되었다고 나옵니다.
그리고는 이미지가 위와 같이 변합니다.
처음에는 부드럽게 이미지를 표시했는데, 편집하고 나서는 샤프하게 표시됩니다.
5. 마치며
지금까지 제가 사용하면서 느낀점을 정리해 보았습니다.
앞으로 계속 써보면서 더 정리해서 포스팅하도록 하겠습니다.
2009년 11월 18일 수요일
2009년 11월 17일 화요일
[한컴오피스 2010 CBT 2차] 1. 설치
우연히도 한컴오피스 2010 CBT (클로즈 베타 테스트) 2차에 선정되어서 한컴오피스 2010를 미리 써볼 기회를 얻었습니다.
오늘부터 다운로드가 가능해서 설치를 해보았습니다.
설치파일 용량은 515MB로서 빌드버전은 아래와 같습니다.
[ 빌드 버전 ]
- Common : 8.0.0.364
- 한글 : 8.0.0.308
- 넥셀 : 8.0.0.299
- 슬라이드 : 8.0.0.314
- 사전 : 8.0.0.177
- 문서찾기 : 8.0.0.20
설치 시작
사용권 계약서
사용권 계약서의 내용은 위 그림과 같습니다.
솔직히 잘 읽어보는 내용이 아니므로 패스~ :)
설치 종류 선택
베타판이라서 제품 번호는 입력하지 않아도 되는 것 같습니다.
사용자 설치를 클릭해 보았습니다.
사용자 정의
평소에는 한글만 설치하고 나머지는 설치 안할텐데, 베타 테스트를 위해서 가장 많이 쓰는 파워포인트와 엑셀을 대체해서
써보기 위해서 모두 설치해 보았습니다.
파일 연결
워드, 엑셀, 파워포인트 파일 연결은 하지 않고 넘어갑니다. (아직은 이라고나 할까요 ^^;)
설치 시작
위 그림과 같이 설치가 시작되었습니다.
설치 완료
설치가 완료되면 한컴 오피스 2010의 정보를 확인할 수 있습니다.


모든 설치가 완료되고 한컴 오피스 2010에 대한 메뉴얼(?)이 열리게 됩니다.
필요하신 분은 출력해서 보셔도 될 것 같습니다.
기본 설정
메뉴의 테마를 선택할 수 있습니다. 한컴오피스 2010, 2007 스타일 그리고 MS 오피스 2003 스타일로 설정할 수 있습니다.
바탕화면 아이콘
설치가 완료되면 바탕화면에 위와 같은 4개의 아이콘이 추가됩니다.
(아이콘을 바탕화면에 추가할지 말지에 대해서는 묻는 것이 없었던 것 같습니다.)
참고로 저는 현재 windows 7 Ultimate x64 (한글)을 사용하는 중입니다.

슬라이드 파워포인트 비교
테스트를 위해서 위와 같이 같은 파일을 MS 파워포인트와 한컴 슬라이드로 열어 보았습니다.
보이는 내용은 동일했습니다.
(.pptx에서 .slide로의 파일변환을 하여 저장하였습니다.)
MS Visio로 편집해서 붙여 넣은 그림까지 동일하게 보였습니다.

슬라이드 쇼
슬라이드 쇼를 실행해서 보았습니다.
(이럴 때에 듀얼모니터의 효과가 발휘되는 군요. ^^)
자세히 봐야 알지만, MS 파워포인트가 폰트를 좀더 부드럽게 출력하는 것 같습니다.
일단 지금까지 써본 것은 위가 다입니다만, 앞으로 계속 써보면서 포스팅하겠습니다.
2009년 11월 16일 월요일
2012 (스포일러 없음)

지난 주 오랫만에 애인이랑 같이 가서 영화를 보았습니다.
전부터 같이 보자고 했던 2012가 개봉하는 날이라 다른 영화를 쳐다도 안보고 바로 2012를 선택했습니다.
(스포일러는 없습니다.)
펼쳐두기..
대자연앞에 인간이 얼마나 무능한 존재인지 깨닫는 과정이 재밌다고나 할까요.
신이 창조하신 대자연의 위대함을 보면 신의 존재를 다시한번 깨달을 수 있죠.
2012 감독의 전작인 투모로우도 재미있게 봤습니다.
2012도 재난 영화의 공식에서 크게 벗어나지 않고, 스토리라인도 투모로우와 비슷합니다.
다만 저는 '오락'영화인만큼 볼거리가 얼마나 풍성하냐에 따라 점수를 주는 편입니다.
그리 시니컬하지도 않고, 매우 단순합니다.
볼거리로 따지만 10점 만점에 10점 주고 싶습니다.
CG의 발전이 어디까지 왔나를 볼 수 있는 영화라 생각합니다.
기회가 되면 IMAX영화관에서 다시 한번 보고 싶네요 ^^
저는 강추! 입니다. :)
2009년 11월 13일 금요일
구글 계정 하드 업!

어제 웹초보님의 포스팅을 보고서 혹해서 구글 계정 용량을 80기가까지 업그레이드 했습니다.
(http://choboweb.com/1319)
| 용량 | 가격 (1년) |
| 20GB | $5 |
| 80GB | $20 |
| 200GB | $50 |
| 400GB | $100 |
| 1TB | $256 |
| 2TB | $512 |
| 4TB | $1024 |
| 8TB | $2048 |
| 16TB | $4096 |
가격이 놀랍게도 1년단위 입니다. 솔직히 저거에 반도 못쓸 것 같지만, 혹해서 구매해버렸네요.
왠지 뿌듯하긴 합니다.
제 외장하드에 있는 사진을 몽땅 피카사 웹으로 올려볼까 합니다만...
한컴오피스 2010 2차 클로즈 베타테스터 선정

메일 온지는 한참 되었는데, 오늘 베타 테스터를 위한 사이트에 들어가서 가입했습니다.
다음주 월요일부터 본격적인 베타 테스트를 진행하게 됩니다.
MS 오피스 2010은 아직 베타 버전은 나오지 않았지만, technical preview때 신청해서
테스터가 되었는데, 한컴 오피스 2010도 베타 테스터가 되었네요.
테스트 항목이 생각보다 구체적으로 명시되어 있네요.
솔직히 전 발표준비하고 실험결과 정리하고 하는데 파워포인트랑 엑셀을 많이 쓰므로,
문서작업 자체는 많이 할 일이 없습니다만,
어쨌든 주어진 임무(?)를 성실히 이행해서 한컴 오피스 2010 버그 잡는데 도움이 될 수 있도록 하겠습니다.
2009년 11월 10일 화요일
Google Shopping

집에 아이팟 터치를 두고 와서 한동안 심심했습니다.
지난 주에 집에 갔다오면서 가져왔는데, 어제 침대에 누워서 이것 저것하면서 가지고 놀고 있는데, 구글 쇼핑이라는 것을 발견했습니다.
다른 분들은 아실지 몰라도 저는 처음 알았습니다.
저는 국내 쇼핑몰이 아니라 아마존이나 bestbuy같은 외국 사이트를 연결해 주는 줄 알았는데, 검색해 보니 국내 쇼핑몰을 검색해 주네요.
'혹시나'하는 마음에 'iphone'을 검색했더니 저렇게 많이 뜨더라구요.
들어가 봤더니 아이폰이라는 태그를 넣고 다른 휴대폰을 팔고 있었습니다.
어제 있었던 에이샾 사건도 그렇고 휴대폰 하나에 울고 웃는 대한민국, 현실에 참 씁쓸합니다.
2009년 11월 9일 월요일
Buy cheap and waste your money
2주전에 인터넷에서 메탈시계를 36,900원에 구입했습니다.
모 st.로서 싼 맛에 구입했는데, 오늘 시곗줄 핀이 빠져있더군요.

어디로 갔는지 찾을 수 없어서, AS되는지 물어보려고 합니다.
(실은 Q&A페이지에서 사진 링크하려고 올립니다. ^^;)
2009년 11월 5일 목요일
HaanSoft Office 2010 Close Beta Season2
블로그 주소는 아래와 같습니다.
http://thatcom.tistory.com/34

관짐 있으신 분은 신청해 보세요~ :)
2009년 11월 3일 화요일
Unix/Linux Shell Script
불필요한 검색을 줄이기 위해서 제 블로그에 내용을 퍼옴니다.
출처는 아래와 같습니다.
http://www.linuxlab.co.kr/docs/10-4.htm
http://www.linuxlab.co.kr/docs/11-3.htm
http://www.linuxlab.co.kr/docs/12-2.htm
펼쳐두기..
임종균 / 서울대학교 컴퓨터공학과 리눅스 프로그래머
(hermes44@secsm.org)
들어가며
쉘 스크립트란 쉘에서 사용할 수 있는 명령어들의 조합을 모아서 만든 배치(batch) 파일이다. 리눅스에서는 여러 명령어들을 파이프(pipe), 리다이렉션(redirection), 필터(filter) 등으로 연결하여 원하는 결과를 얻어 낼 수 있다. 이런 방식으로 묶여진 명령어 조합이 반복적으로 사용된다면 이를 쉘 스크립트로, 즉 단일 명령으로 만들어 쉽게 사용할 수 있다.
스크립트라고 하는 것은 인터프리터(interpreter)에 의해 해석/실행되는 프로그램을 말한다. 어떤 종류의 인터프리터를 사용하는 가에 따라서 어떤 스크립트인가에 대한 이름이 정해진다. 쉘 스크립트, 펄(Perl) 스크립트, Tcl/Tk 스크립트 등의 이름에서 사용하는 인터프리터를 알 수 있다. 쉘 스크립트는 인터프리터로 쉘을 사용하는 스크립트를 가르킨다. 또한 어떠한 쉘을 사용하는 가에 따라서 본(bourne) 쉘 스크립트, C 쉘 스크립트, 콘(Korn) 쉘 스크립트, TC 쉘 스크립트 등으로 나뉜다.
이 연재에서는 쉘 스크립트 중의 기본이 되는 본 쉘 스크립트에 대해서 살펴볼 것이다. 본 쉘 스크립트에서 사용하는 기능과 문법은 다른 쉘에서도 지원이 된다. 따라서 실제 사용할 때는 다른 쉘을 사용할 수도 있을 것이다. 필자는 bash 1.14.7을 사용하여 설명을 할 것이다.
어떤 것이 쉘 스크립트?
우리는 알게 모르게 많은 쉘 스크립트을 사용한다. 그렇다면 어떤 것이 쉘스크립트인가? 확인을 해보는 방법은 file와 grep명령을 사용해서 찾아보는 것이다. 필자의 시스템에서의 결과는 다음과 같다.
$ (cd /bin ; file * |grep
“shell script”) |
위의 명령으로 확인을 해보면 false, true, apropos, netscape, nohup, pdf2ps, ps2pdf, whatis, zgrep, zless 등 많은 쉘 스크립트가 있음을 알 수 있다.
쉘 스크립트 작성하기
스크립트의 특징 중의 하나는 그 내용이 텍스트 형식이기 때문에 일반 편집기로 볼 수 있다는 것이다. 위에서 찾는 스크립트 중 아무 것이나 cat, vi, emacs 등으로 보아라. 여러 명령들과 스크립트 문법의 조합으로 되어 있는 것을 확인할 수 있다.
스크립트의 가장 첫줄은 항상 #!로 시작한다.
#! 다음에는 이 스크립트를 실행할 인터프리터와 그 실행 옵션을
지정한다. 쉘 스크립트에서는 #!/bin/sh, #!/bin/csh, #!/bin/bash,
#!/bin/ksh, #!/bin/tcsh와 같이 쉘의 절대 경로를 써준다. 전통적인
관습에 의하여 #!만 써줄 경우에는 #!/bin/sh로 인식을 한다.
따라서 본 쉘 스크립트 작성시에는 첫 줄은 #!/bin/sh나 #!로 하면
된다.
이제 앞의 예제를 바탕으로 간단한 ‘findscript’ 쉘 스크립트를 작성하여 보자. 이 스크립트는 /bin, /usr/bin에서 쉘 스크립트를 찾아 보여준다.
$ cat findscript (cd /bin; file * | grep “shell
script”) |
cat 또는 다른 편집기를 이용하여 위에서 처럼 작성을 하고, 실행 가능하도록 퍼미션을 준다. 그리고서 다른 프로그램 처럼 실행을 하면 된다. 위에서 본 것과 같이 기본적으로 쉘 스크립트는 쉘에서 사용할 수 있는 명령들의 집합이다. 여기에 덧붙여 쉘에서는 쉘 스크립트에서 사용할 수 있는 나름의 문법을 제공한다.
종료 상태 (Exit status)
각 명령들은 실행을 올바로 마치고 정상적인 종료(성공/참)하거나, 실행 오류 또는 인터럽트에 의한 중단과 같은 이유로 비정상적으로 종료(실패/거짓)할 수 있다. 이 성공과 실패는 명령의 종료 상태값으로 알 수 있다. 보통 0은 성공을 나타내며, 0이 아닌 값은 실패를 나타낸다. 쉘에서는 이전에 실행한 명령이 성공을 하였는지 실패를 하였는지를 ? 변수값에 저장을 한다.
$ who | grep root |
false 명령은 항상 1, 실패의 종료 상태를 반환하고 true 명령은 항상 0, 성공의 종료 상태를 반환한다.
쉘 스크립트에서는 exit를 이용하여 스크립트를 종료하면서 종료 상태를 반환할 수 있다. exit만을 사용하면 쉘 스크립트를 종료하고 가장 마지막에 실행한 명령의 종료 상태를 반환하고, exit <숫자>를 사용하면 종료하고 <숫자> 값을 쉘에 반환한다.
$ cat return_exit if [ $# -eq 0 ] |
if 구문은 조건식에 따라서 분기를 한다.
형식은 다음과 같다.
if 조건식
then
명령들
[ elif 조건식
then
명령들
]
[ else
명령들
]
fi
if의 조건식이 참이면, 즉 0을 반환하면 then 다음의 명령들을 수행하고, 거짓이면, 즉 0이 아닌 값을 반환하면 (대개 1이다) else 다음의 명령을 수행한다. elif는 if의 조건식이 거짓이 될 경우에 분기되어 다시 새로운 조건식을 검사한다. elif나 else 구문은 생략이 가능하다. fi는 if 구문의 끝은 나타낸다. (fi는 if를 거꾸로 쓴 것이다. :-))
위의 예제 스크립트에서 if 조건문의 [ $# -eq 0 ]는 스크립트의 인자의 갯수($#)가 0과 같은지(-eq)를 검사하는 것이다. 인자가 없다면 exit를 수행하고 마지막으로 수행한 명령인 조건식의 종료 상태값 0을 반환하다. 인자가 있다면 else 구문에서 첫번째 인자 값을($1)을 종료 상태로 반환한다.
쉘 스크립트가 수행도중에 인터럽트를 받아서
비정상적으로 종료할 수도 있다. 이런 경우에는 임시로 사용한 파일을
삭제하는 것과 같은 정리 작업을 수행할 수 없게된다. 이를 방지하기
위한 trap 구문이 있다. 형식은 다음과 같다.
trap ‘명령들’ [시그널 번호들]
인터럽트에 해당하는 시그널 번호를 써준다. 이 번호는 kill -l을 하면 알 수 있다.시그널 번호를 0을 쓸 경우는 쉘 스크립트가 정상적인 종료를 할 경우를 나타낸다.
아래의 쉘 스크립트를 수행하면 loop 라는 글씨가
화면에 계속 출력될 것이다. 여기서 사용된 while은 무한 루프를
돌게 된다. 루프에 대해서는 뒤에서 보겠다. 종료를 하기 위해서
Ctrl+C(SIGINT,2)를 누르더라도 이는 첫번째 trap 구문에 의해서
메세지만을 출력한다.
Ctrl+\(SINQUIT,3)를 누르면 스크립트는 종료를 하게된다.
$ kill -1 |
|||
1) SIGHUP |
2) SIGINT |
3) SIGQUIT |
4) SIGILL |
5) SIGTRAP |
6) SIGIOT |
7) SIGBUS |
8) SIGFPE |
9) SIGKILL |
10) SIGUSR1 |
11) SIGSEGV |
12) SIGUSR2 |
13) SIGPIPE |
14) SIGALRM |
15) SIGTERM |
16) SIGCHLD |
17) SIGCONT |
18) SIGSTOP |
19) SIGTSTP |
20) SIGTTIN |
21) SIGTTOU |
22) SIGURG |
23) SIGXCPU |
24) SIGXFSZ |
25) SIGVTALRM |
26) SIGPROF |
27) SIGWINCH |
28) SIGIO |
29) SIGPWR |
|
|
|
$ cat
trap_exit trap ‘echo basename $0: signal
catch’ 1 2 15 while : |
|||
명령행 인자 (Command-line argument)
쉘 스크립트에서는 최대 9개의 명령행 인자를 받을 수 있다. 그 값은 $1~$9에 저장된다. (최신 쉘에서는 그 이상의 인자를 받을 수도 있다. ${10}과 같은 형식이다.) $0에는 실행한 쉘 스크립트의 경로가 저장된다. 또한 위에서 잠깐 보았듯이 $#에는 인자의 개수가 저장이 된다.
스크립트 중에 shift를 사용하였음을 주목하라. shift는 $1 인자를 없애고 각 인자번호를 1씩 줄인다. 즉 $2는 $1, $3은 $2, $4은 $3과 같은 식으로 된다.
#!/bin/sh prog= basename $0 if [$# -eq 3 ] |
그래서 shift한 이후에는 세번째 인자가 $2가 되는 것이다. 이때 $# 값도 1준다.
모든 인자는 “$@”, $*에 저장이 된다. “$@”는 명령행에서 사용한 따옴표가 그래도 적용되지만, $*에서는 그 따옴표가 적용되지 않는다. 따옴표에 유무에 따라서 쉘에서 사용하는 특수문자들 - 공백, 탭, \, ‘, “, ` 등 - 해석할 것인지의 여부가 결정이 된다. 이는 쉘을 사용하는 것에 관한 문제이기 때문에 더이상 자세히는 다루지 않겠다.
$$에는 현재 쉘 스크립트의 프로세스 ID가 저장이 된다. 이는 명령행 인자는 아니지만 임시 파일을 만들 때와 같은 경우에 유융하게 사용된다.
루프 (Loop)
쉘 스크립트에서 사용할 수 있는 루프는 세 가지가
있다.
while 조건식
do
명령들
done
while 루프는 조건식이 참인 동안 do~done 사이의 명령을 수행한다.
$ cat arg-while echo Argument number: $# |
until 조건식
do
명령들
done
until 루프는 조건식이 참이 될 때까지 do~done 사이의 명령을 수행한다.
$ cat arg-until echo Argument number: $# |
for 변수 in [문자열 목록]
do
명령들
done
$ cat arg-for |
for 루프는 문자열 목록의 값들이 for 변수에 지정되어 do~done 사이의 명령을 수행한다. in 부분을 생략하면 명령행 인자가 사용된다. break를 사용하면 루프를 빠져나온다.
루프는 아닌지만 C에서의 switch와 비슷한 역할을
하는 case구문이 있다.
case의 형식은 다음과 같다.
case 변수 in
패턴1) 명령들 ;;
패턴2) 명령들 ;;
*) 명령들 ;;
esac
변수값을 패턴1부터 비교해가면서 해당하는 패턴이 있으면 그에 해당하는 명령들을 수행한다. ;;은 패턴에 해당하는 명령의 끝을 나타내고 esac은 (case를 거꾸로 쓴 것이다.) case 구문의 끝을 나타낸다. 해당되는 패턴이 없다면 * 패턴의 명령을 수행하게 된다. 패턴에는 쉘에서 사용할 수 있는 와일드 카드(*,?), 정규표현식, 문자열, 변수가 올 수 있다.
$ cat check-flag aflag=0 for arg echo aflag=$aflag bflag=$bflag |
조건식
if, while, until 구문에서는 조건식이 사용된다.
조건식은 참과 거짓의 결과를 내는 구문이다. 참일 경우 조건식은
0을 반환하고, 거짓일 경우에는 1을 반환한다. 조건식의 형식은
다음과 같다.
test 식
[ 식 ]
:
식은 파일식, 문자열식, 수식의 세 종류로 크게 나눌 수 있다. :는 항상 참임을 나타낸다. while, until에서 무한 루프를 만들기 위해 사용된다.
파일식은 어떤 파일의 속성을 검사하는 것으로 다음과 같은 종류가 있다.
-b 파일 : 파일이 블럭 장치 파일이면 참
-c 파일 : 파일이 문자 장치 파일이면 참
-d 파일 : 파일이
디렉토리이면 참
-e 파일 : 파일이 존재하면 참
-f 파일
: 파일이 정규 파일이면 참
-L 파일 : 파일이 심볼릭 링크이면
참
-p 파일 : 파일이 네임드(named) 파이프이면 참
-S 파일
: 파일이 소켓이면 참
-r 파일 : 파일이 읽기 가능이면 참
-s 파일 : 파일의 크기가 0보다 크면 참
-w 파일 : 파일이 쓰기
가능이면 참
-x 파일 : 파일이 실행 가능이면 참
파일1
-nt 파일2 : 파일1이 파일2보다 새로운 파일이면 참
파일1 -ot
파일2 : 파일1이 파일2보다 오래된 파일이면 참
파일1 -ef 파일2
: 파일1과 파일2가 같은 파일이면 참
문자열식은 문자열에 대한 비교를 한다.
-z 문자열 : 문자열의 길이가 0이면 참
-n
문자열 : 문자일의 길이가 0이 아니면 참
문자열1 = 문자열2
: 문자열1과 문자열2가 같으면 참
문자열1 != 문자열2 : 문자열1과
문자열2가 다르면 참
수식은 숫자값을 비교한다. 양의 정수, 음의 정수, 0, 변수값이 올 수 있다.
값1 -eq 값2 : 값1 = 값2
값1 -ne 값2 :
값1 != 값2
값1 -lt 값2 : 값1 < 값2
값1 -le 값2 :
값1 <= 값2
값1 -gt 값2 : 값1 > 값2
값1 -ge 값2
: 값1 >= 값2
이외에도 다음과 같이 식 전체에 대한 연산이 가능하다.
! 식 : 식에 대한 부정(not)
식1 -a 식2
: 식1과 식2에 대한 논리곱(and)
식1 -o 식2 : 식1과 식2에
대한 논리합(or)
결론
이번 기사에서는 쉘 스크립트에 대한 기본적인 사항들을 살펴보았다. 작성, 실행 방법과 기본적인 문법만으로도 간단히 개인적으로 유용하게 사용할 수 있는 스크립트를 작성할 수 있을 것이다. 다음 기사에는 각 세부 사항에 대한 자세한 설명과 기법에 대해서 알아도록 하자.
<참고자료>
·UNIX POWER TOOLS, 2ed.
Jerry Peek,
Tim O’Reilly, Mike
Loukides. O’Reilly
·bash 매뉴얼 페이지
펼쳐두기..
임종균 : hermes44@secsm.org
/
|
||||||||||||
표준 입출력 이전 기사에서 표준 출력(stdout)으로 출력을
하기 위해서 echo 명령을 - 외부 프로그램으로 같은 역할을 하는
echo가 있지만 여기서의 echo는 쉘의 내장(built-in)명령이다. -
사용하였다. 그렇다면 표준 입력(stdin)으로 사용자 입력을 받을
수 있는 방법은? 표준 입력을 받아 변수에 저장을 해주는 read 명령이
있다.
stdio 예제에서 처럼 read는 표준 입력의 한
줄을 모두 filename이라는 변수에 넣는다. (한 줄은 엔터를 입력함으로서
끝난다.) 하지만 위와 같이 할 경우, 입력값이 여러 개라면 문제가
생길 수 있다. 두 개의 파일명을 공백으로 구분하여 입력할 경우
각각이 따로 저장되는 것이 아니라 하나의 filename 변수에 들어가기
때문에 if 조건식에서 실패를 한다. 이런 경우 가장 처음에 입력된
파일명만을 받아 처리하고 나머지는 무시하려면? read 다음에 변수를
여러 개를 명시하면 된다. 표준 입력은 공백 문자로 - 스페이스와
탭 - 구분이 되고 구분된 각각의 값들은 read 다음에 명시된 변수에
차례로 채워진다. 가장 마지막 변수에는 나머지 남아있는 입력값들이
모두 다 들어간다.
즉, stdio2의 예에서 공백으로 구분된 입력 /dev/hda1은
filename1에, /etc/bashrc는 filenam2에 /bin/sh /bin/ls는 dummy에
들어가게 되는 것이다.
리다이렉션 (Redirection) 우리는 쉘 상에서 <, >, >>를 이용하여
표준 입출력을 리다이렉션(redirection)할 수 있다.
redirect 예제에서 exec 명령에 의해서 표준
입력이 /tmp/delme$$ 파일로 리다이렉션되어 read 명령은 그 파일에서
한 줄씩 입력을 받게 된다. 본 쉘의 리다이렉션에서 각 표준 입력,
표준 출력, 표준 에러는 파일 디스크립터 0, 1, 2에 해당한다. 그
외에 3~9까지 디스크립터를 사용할 수 있다.
while, until, for, if, case 구문에서 가장
마지막 줄에 - done, fi, esac 뒤에 - 리다이렉션을 지정하여 그
구문 내에서의 입출력만을 변경할 수 있다. 그 구문을 빠져나올
때에는 원래대로 복원이 된다.
경로명 쉘 스크립트를 이용하여서 파일을 다루다보면 경로명을 조작해야할 필요가 있다. 보통 경로명은 ‘디렉토리명/파일명’ 형식으로 되어 있다. 이렇게 사용자의 입력이나 환경 변수 등을 통해서 얻어진 경로명에서 디렉토리명와 파일명을 분리해주는 basename과 dirname이라는 프로그램이 있다. basename <경로명> 은 경로명에서 파일명만을 넘겨준다. 이 때 파일이 실제로 존재할 필요는 없다. basename <경로명> <확장자> 은 파일명에서 지정한 확장자 부분을 없앤다. dirname <경로명> 은 경로명에서 디렉토리 부분만을 넘겨준다.
수식 계산 : expr 스크립트에서는 기본적인 모든 값들을 문자열로 처리하기 때문에 숫자값을 이용한 수식 계산을 하기 위해서는 expr 프로그램을 이용해야 한다. expr 인자1 연산자 인자2 [연산자 인자3 ...] 인자는 숫자값이나 문자열이 될 수 있고, 연산자는 수식 연산자, 관계 연산자, 논리 연산자 세 가지 종류가 있다. 인자와 연산자 사이에는 반드시 공백으로 구분되어야만 한다. expr의 결과값이 0이 아니거나 null이 아니면 종료 상태값은 0이다. 0이나 null일 경우에는 1이고 수식이 유효하지 않을 경우는 2이다. 지원하는 수식 연산자는 +, -, *, /, %가 있고,
연산 순위는 일반적인 순위를 따른다. 연산 순위 변경을 위한 괄호
또한 사용할 수 있다. *, (, )는 쉘에서 특별히 사용되기 때문에
수식에서 사용하려면 \와 함께 쓰여야 한다. 수식 연산자가 올
때의 인자는 정수값이 되어야만 한다. 수식 계산의 결과값이 출력된다.
지원하는 관계 연산자는 =, !=, >, >=,
<, <= 이 있고, >와 <는 \과 함께 사용되어야 한다.
비교한 결과가 참이면 1을 출력하고, 거짓이면 0을 출력하다. 이
때 인자는 정수, 실수, 문자열이 모두 다 올 수 있다.
논리 연산자는 3가지가 있다. |, &, :이다. 각 OR, AND, 정규식 검색을 나타내며 |와 &는 \와 함께 사용되어야 한다. ·|는 OR이다. 인자1과 인자2가 둘 다 0이 아니면
인자1을 출력하고 그렇지 않으면 0을
여러 프로그램을 하나의 스크립트로 많은 스크립트를 작성을 하다 보면 다음과 같은 경우가 발생할 수 있다. ·같은 동작을 하는 다른 이름의 프로그램들.
예를 들어 문서 편집기인 ex, vi, view는 이름은 이와 같은 경우에 공통되는 부분을 하나로 묶어 주게 된다면 디스크 공간을 절약할 수 있을 뿐만 아니라, 코딩에 드는 노력도 줄여줄 수 있고, 각 공통되는 부분에 대한 일관성을 유지할 수가 있다. 쉘 스크립트에서는 공통되는 부분을 처리하고 실행한 프로그램의 이름을 살펴보아 각각에 해당하는 처리를 한다. 공통 부분에 대한 핵심 스크립트를 만든다. 각각의
프로그램은 핵심 스크립트에 대한 링크로 만든다. 그 스크립트에서는
공통된 부분을 처리하고 프로그램의 이름, $0를 보고서 각 프로그램에
대한 작업을 수행한다.
실행한 파일이름을 찾을 때 sc_core 예제에서와
같이 ‘*파일명’ 패턴을 이용하는 방법도 있고 basename 프로그램을
사용할 수도 있다.
결론 스크립트를 작성하는 일이 다 끝이 났다면 이제 마지막으로 남은 것은 스크립트의 이름을 정하는 것이다. 어떤 이름을 짓던지 상관은 없지만 한 가지 주의할 것은 이미 있는 프로그램의 이름을 사용해서는 안 된다는 것이다. 우리가 정한 이름이 이미 존재하는 지는 다음과 같은 방법으로 찾아보면 된다. man 1 <스크립트 이름> 모든 가능성을 검사해 보고 없는 이름으로 정한다. 이렇게 스크립트의 작성이 끝이 났다. 이제는 반복적인 일을 간단히 처리해주는 나름대로의 스크립트는 작성할 수 있을 것이다. 부족한 부분이 있기는 하지만 그런 부분들은 많은 시도를 통해서 채득할 수 있을 것이라 생각한다. 또한 쉘 스크립트를 작성하기 위해서는 사용하는 쉘에 대한 이해도 필요하다. 다음 기사에서는 작성한 스크립트를 디버깅하는 방법을 알아보자.
·참·고·자·료· ·UNIX POWER TOOLS, 2ed. Jerry Peek, Tim O’Reilly,
Mike Loukides. O’Reilly |
펼쳐두기..
쉘 스크립트 III
임 종 균 : hermes44@secsm.org
서울대학교 컴퓨터공학과/리눅스 프로그래머
디버깅
이전 기사를 통해 우리는 간단한 정도의 쉘 스크립트는 작성할 수 있게 되었다. 이제는 다음 단계로 작성한 쉘 스크립트를 디버깅하는 방법에 대해서 다루도록 하겠다. 프로그램을 한 번에 에러없이 작성할 수 있는 천재 프로그래머가 아닌 이상 디버깅이란 코드의 안정성과 완벽함을 높이는 필수적인 작업이다. 또한 대부분의 경우, 코드를 작성하는 것보다도 더 많은 시간이 걸리는 일이 디버깅이다. 보통 리눅스 개발 환경에서 C로 프로그램을 작성하였다면 디버깅 도구로 gdb를 사용할 것이다. 하지만 gdb이전에 가장 좋은 디버깅 방법은 코드 곳곳에 printf를 추가하여 실행 결과를 보고 문제점을 파악하는 것일 것이다. 쉘 스크립트에도 별다른 디버거가 존재하지 않기 때문에 echo를 사용하여 디버깅하는 것이 일반적이다. 하지만 다음에서는 그 방법 이외에 사용할 수 있는 방법을 알아보도록 하겠다.
쉘 옵션 기능
쉘 자체적으로 디버깅을 위해 사용되는 명령행 옵션이 있다. -v는 쉘이 스크립트를 수행하기 위해서 읽은 부분을 화면에 출력해준다. -x는 읽어들인 부분 중에서 실제 실행을 한 부분을 보여준다. 이 결과는 stderr로 출력이 되면 다음의 세 가지 방법 중 하나로 사용할 수 있다.
·쉘 스크립트의 첫 줄에 다음과 같이 옵션을
지정한다.
#!/bin/sh -xv
·소스를 수정하지 않고 한 번만 실행하려면
다음과 같이 스크립트를 실행한다.
$ sh -xv [스크립트이름]
·스크립트의 전체가 아닌 일부분에서만 이 기능을
사용하려면 사용하려고 하는 부분 앞에
다음을 추가한다.
set -xv
·이 기능을 없애기 위해서 필요한 부분 이후에
다음을 추가한다.
set +xv
첫 번 기사에서 다루었던 예제를 다시 보면서 사용법을 설명하도록 하겠다.
보면 쉽게 알 수 있듯이 prarg 스크립트는 세 인자를 입력받아서 출력하는 매우 간단한 스크립트이다. 두번째 방법을 이용하여서 실행해 보자.
$ cat ./prarg prog=`basename $0` if [ $# -eq 3 ] prog=`basename $0` if [ $# -eq 3 ] |
-x 옵션만으로 실행을 할 경우에는 스크립트에서 실행하는 부분만을 보여준다. + 은 쉘이 실행하는 부분, ++는 다른 외부 프로그램이 (이 외부 프로그램은 쉘이 실행한다.) 실행하는 부분을 의미한다. -v 옵션과 같이 실행하면 스크립트를 읽은 부분을 보여준다. if, for, while, case 등의 블럭들은 한 번에 블럭 전체를 읽어서 수행하기 때문에 위의 예제에서와 같은 결과가 나온다. 출력시에는 스크립트의 실행 결과와 디버깅을 위한 출력이 같은 화면으로 보이는 듯하지만 전자는 stdout으로, 후자는 stderr로 표시되는 것이다. 따라서 이 결과를 파일로 리다이렉션하기 위해서는 다음과 같이 실행해야 한다.
$ sh -xv [스크립트이름] >[파일명] 2>&1
2>&1은 stderr(2)의 결과를 stdout(1)과 같은 곳으로 리다이렉션하는 것이다.
또한 실행문의 결과를 검사하기 위한 -e
옵션이 있다. -e는 -x에 의해 출력되는 실행문들의 실행 결과가
0이 아닌 값 즉, 실패를 리턴하였을 경우 쉘 스크립트를 종료한다.
하지만 while, until, if문에서 사용하는 조건식이나 &&,
||, !이 포함되있는 실행문에서는 -e가 효과 없다.
사용법은
-x, -v를 사용할 때와 같다.
$ cat ./stdio3 filename=`line` if [ -e $filename ] |
-e 옵션을 주고 실행한 경우 if 이전의 실행문이 실패를 하여 if 가 실행되기 전에 종료함을 알 수 있다.
조건식
조건식을 일반적인 컴파일 언어에서와 비슷하게 사용할 경우 생각지도 않는 에러가 발생하는 경우가 있다.
수식 검사 조건식에서 검사하려는 변수가 존재하지 않거나 값이 설정되지 않았을 경우 에러가 발생한다. 즉, 다음과 같은 조건식에서
if [ “$count” -eq 3 ]
count 변수가 존재하지 않거나 값이 설정되어 있지 않으면 다음과 같이 해석이 되어
if [ “” -eq 3 ]
아래와 같은 에러가 발생한다.
[: integer expression expected before -eq
이를 방지하기 위해서는 위의 수식을 다음과 같이 바꾼다.
if [ “0$count” -eq 3 ]
이 때는 위와 같은 에러 상황일 때 0을 리턴하게 되고 count 변수값이 3일 경우에는 03을 리턴하게 되어 에러없이 조건식이 수행이 된다.
문자열 검사 조건식에서는 검사하려는 문자열이 조건식에서 사용하는 키워드일 경우 에러가 발생한다. 즉, 그 문자열이 -eq, -ne, -gt, -r, -w, -z, -f등의 것들일 때이다. 이 경우에는 비교하려는 문자열 앞에 적당한 문자를 추가하여 앞에서와 같은 것들이 조건식에서 나오지 않도록 한다.
if [ “$op” = -gt ]
를 다음과 같이 변경을 한다.
if [ “Z$op” = Z-gt ]
앞의 -e 옵션을 설명할 때 보았던 것과 같이 쉘 스크립트에서 실행문이 실패한다고 해서 스크립트가 중단되지는 않는다. (중단시키려면 -e 옵션을 주어야 한다.) 하지만 중단이 된다는 잘못된 착각을 하여 스크립트를 작성하는 경우가 있다. 다음의 경우에는 그것이 치명적인 결과를 나을 수 있다.
$ cat clean tempdir=’/tmp /usr/tmp /var/tmp’ for dir in $tempdir echo “Cleanup done !” |
‘cd $dir’이 실패할 경우에도 다음 실행문인 ‘rm -rf *’은 실행이 된다. cd가 실패를 한다면 생각지도 않는 디렉토리의 내용을 다 지워버리는 결과를 나을 수 있다. 이런 문제를 방지하기 위해 이와같이 다음에 치명적인 실행문이 올 경우 이전의 실행문이 실패하면 실행하지 않도록 한다. || 조건을 이용 cd 실행문을 바꾼다.
cd $dir || exit
이 경우 || 앞의 cd가 실패할 경우 exit가 실행되어 더 이상 진행되지 않도록 한다. cd가 성공한 경우에는 || 조건식은 항상 참이 되기 때문에 || 우측의 exit는 실행되지 않는다. 위의 예제에서는 exit 대신 continue를 써도 무방하다.
변수값 확인하기
쉘 스크립트에 대화식으로 변수값을 확인할 수 있는 방법이 있다. 그런 기능을 하는 코드를 쉘 스크립트 중간에 삽입하는 방법이다.
while echo -n “Enter a variable name
you want to know; \
just ENTER to quit: “
read
var
do
case “$var” in
“”) break ;;
*) eval echo \$$var ;;
esac
done
이 트레이스(trace) 코드 이전에 사용된 변수의 값을 확인해 볼 수가 있다.
$ cat trace dir=`dirname $0` count=0 for arg in $* # Trace code |
([ENTER]은 ENTER를 눌렀음을 의미한다.)
결론
이제까지 쉘 스크립트의 작성과 디버깅에 관한
사항을 알아보았다. 물론 지금까지 다룬 내용이 쉘 스크립트의 전부는
아니다. 자잘하고 미묘한 부분들 하지만 중요한 부분들은 다루지
못했으며, 현재 많이 사용하는 bash나 tcsh의 확장 기능도 남아
있다. 이제 그 부분은 독자들에게 남겨진 몫이며 이 기사를 통해
그 시작을 할 수 있기를 바란다. 일단은 다른 사람들이 만들어 놓은
스크립트를 보고 이해하면서 코드를 수정해보고 필요한 스크립트를
하나씩 만들어 가면서 익히면 될 것이다. 그리고 작성중에 막히는
부분은 매뉴얼 페이지가 큰 도움이 될 것이다. man bash !
참고자료
UNIX POWER TOOLS, 2ed. Jerry Peek, Tim O’Reilly,
Mike Loukides. O’Reilly
bash 매뉴얼 페이지
2009년 10월 29일 목요일
(제목 수정) 고맙습니다
"감사합니다."라고 댓글에 쓰곤 했습니다.
언젠가 이 '감사'라는 표현이 일본식이라는 것을 들은 기억이 있어서 지식많은 네xx씨의 도움을 좀 받아봤습니다.
http://kin.naver.com/detail/detail.php?d1id=11&dir_id=110104&docid=291979
'고맙다'는 '남의 은혜나 신세를 입어 마음이 느껍고 흐뭇하다, 남이 베풀어 준 신세나 은혜에 대해 즐겁고 흐뭇하다'는 뜻을 지닌 형용사입니다.
'고마움'이라는 명사형을 만들어 쓸 수는 있으나, 이런 마음을 나타내는 명사는 없습니다.
'고맙다'의 어근 '고마'는 원래 '신(神), 존경(尊敬)'이라는 의미였습니다.
'고맙다'는 '존귀하다, 존경하다'는 뜻을 지닌 말입니다.
'신과 같이 거룩하고 존귀하다, 신을 대하듯 존경하다'는 뜻을 지닌 말이 '고맙다'입니다.
'고맙습니다'라고 말하는 것은 '(은혜를 베푼 상대방을) 참으로 신과 같이 거룩하고 존귀하게 생각합니다'라는 뜻이 될 것입니다.
어마어마한 칭송의 말이지요?
'고맙습니다'를 애용한다면, 서로 존중하고 존중받는 사회, 서로를 거룩한 신처럼 예우하는 사회가 금방이라도 도래할 것 같은 생각이 듭니다.
'감사'는 일본식 한자어입니다.
사전을 옮겨 보겠습니다.
かんしゃ 感謝
かん-しゃ[感謝] <スル> 감사. ......복합어...∼さい[∼祭] 추수 감사절.
일본 발음으로는 '간샤'입니다.
일제강점기에 들여와 우리말처럼 쓰이고 있는 말이 '감사'입니다.
'감사'는 명사이고, '감사하다'는 동사입니다.
'감사, 감사합니다'는 하도 익숙한 단어라서 이 말과 이별하기란 쉽지 않을 것입니다.
이즈음 '감사'와의 결별론이 거세지고 있는 추세입니다.
그러나 한 가지 문제점이 있습니다.
'감사합니다'를 '고맙습니다'로 대체하는 데는 무리가 없습니다만, '감사'를 대체할 만한 단어가 없다는 점이 그것입니다.
'감사'는 '고마움'으로 바꾸어 쓸 수는 있습니다만, '감사장, 감사패, 감사절' 등등의 단어를 어떻게 바꿀 것인지에 대해서는 대안이 아직은 없습니다.
'감사의 마음'이라는 뜻을 가진 '사의 謝意しゃい'도 일본에서 쓰이는 한자입니다.
우리가 사용하는 단어의 상당수가 일본식 단어입니다.
일제의 잔재를 청산한다는 의미에서 시작된 '우리말 사랑' 운동은 바람직한 것입니다.
그러나 기존의 단어를 버리는 일에만 급급할 것이 아니라, 적절한 단어를 발굴하거나 새로운 단어를 만든다거나 하는 노력이 반드시 뒤따라야 할 것입니다.
어쨌거나, 되도록이면 서로를 신처럼 떠받드는 말인 '고맙습니다'를 쓰도록 노력해 보아야겠지요?
감사합니다 ㅡ> 고맙습니다
감사의 말씀을 드립니다 ㅡ> 참으로(대단히) 고맙습니다.
감사드립니다 ㅡ> 정말 고맙습니다.
이렇게 써 볼까요?
즉, 되도록이면 고맙습니다라고 표현하는 것이 좋을 것 같아서 글을 남깁니다~
여러분 고마워요~ 사랑해요~~ :)
2009년 10월 28일 수요일
Twenty Thousand Hits
어떤 분은 백만힛도 달성하시는데 저는 그저 미천할 뿐이지만, 기분 좋네요.
매일 적어도 백분씩 제 미천한 블로그를 방문해 주셔서 감사드립니다. :)

Thoth
(뭐라고 발음해야 할지...쩝;)
초대코드를 얻게 되어서 가입하고 자리르 틀었습니다.
(http://helloska.thoth.kr)
TTXML 임포팅 되서 이곳의 글을 옮겨보려 했는데, 어쩐일인지 중간에 에러가 납니다.

아직 베타니깐 열심히 써봐야죠 ^^;
(덕분에 Live Writer를 다시 꺼내들었습니다.)
Get Windows 7 Professional

방금 구매했습니다~!

키가 중요한 것이지만... 일단 다운 받고 있습니다.
뭐 이미 쓰고 있는데 구매했다고 달라지진 않지만, 왠지 뿌듯하네요 :)



Visual Studio 2010 Beta 2 Coming-Out
Product |
Format |
File Size |
Visual Studio 2010 Beta 2 |
|
|||||||||||
.NET Framework 4 Beta 2 |
| |||||||||||
snoopy님 블로그 글 보고 가보니깐 릴리즈 되었네요.
(http://snoopybox.co.kr/1116)
ISO 버전을 원하시면 snoopy님 블로그를 방문해 주세요~ :)
추가)
각 에디션 별로 차이가 무엇인지 설명되어 있네요.
(http://www.microsoft.com/visualstudio/en-us/products/2010/default.mspx)
| VS 2010 Proffesional | VS 2010 Premium | VS 2010 Ultimate | |
| SOFTWARE FOR PRODUCTION USE | |||
| Microsoft Expression Studio 3 | √ | √ | |
| Microsoft Office Professional Plus 2010 | √ | √ | |
| Visio Premium 2010 | √ | √ | |
| Project Professional 2010 | √ | √ | |
| SOFTWARE FOR DEVELOPMENT AND TEST USE | |||
| Windows Azure | √ | √ | √ |
| Windows, Windows Server | √ | √ | √ |
| Microsoft SQL Server | √ | √ | √ |
| Toolkits, Software Development Kits, Driver Development Kits | √ | √ | √ |
| Microsoft Office | √ | √ | |
| Microsoft Dynamics | √ | √ | |
| All other Servers | √ | √ | |
| Windows Embedded | √ | √ | |
| MSDN SUBSCRIPTION BENEFITS | |||
| Technical support incidents | 2 | 4 | 4 |
| Priority support in MSDN Foruns | √ | √ | √ |
| Microsoft E-Learning course collections | 1 | 2 | 2 |
| MSDN Magazine | √ | √ | √ |
| MSDN Flash newsletter | √ | √ | √ |