[Windows Developer Preview] Wireless Profile 생성/삭제

2011/10/10 21:48
Windows Developer Preview
2011. 10. 10.
안혁
http://hyok.kr


Windows Developer Preview는 테스트 버전이기 때문에 실제로 사용하여 보면 여러가지 부족한 부분이 많이 있습니다. 이름 그대로 훗날 윈도우의 Preview에 집중한 버전인데요. 어려운 것 중 하나가 있다면 무선랜 프로필 삭제 하는 것입니다. 사실 생성하는 것도 방법을 모르면 어려운 일인데요.  네트워크 관리자(Network and Sharing Center)에서 Set up a new connection or network를 선택한 후 Manually connect to a wireless network를 선택하면 무선랜 프로필을 생성할 수 있습니다. 이는 모두 무선랜 관리 메뉴가 없어졌기 때문인데요. 흘러나온 정보에 의하면 차기 버전은 개선된 것 같다고 하는군요.

만약 무선랜 프로필 생성을 했는데, 특별한 이유가 있어 삭제해야 한다면 - 특히 잘못 생성하면 연결도 안되고 수정도 안되고 진퇴양난의 사태에 빠집니다. 새로 만들려고 하면 이미 있다고 만들어지지 않죠. 무선랜 연결 후에는 수정이 가능합니다. 연결 후 네트워크 어뎁터가 나오는 Network Connections에서 무선랜카드를 더블 클릭하면 Wi-Fi Status 창이 뜨는데, 여기에 Wireless Properties가 있습니다. 연결만 잘 되면 수정 또한 가능합니다.

문제는 삭제입니다. 삭제는 도저히 못 찾겠더군요. 그래서 커맨드의 힘을 빌려봤습니다.


netsh wlan show profile
netsh wlan delete profile "[profile name]"


첫번째 명령은 현재 프로필의 목록을 보는 것입니다. 자동 연결 설정이 되는 무선랜 목록이 보여질 것입니다. 삭제하고 싶은 프로필 이름을 확인하고 두번째 명령을 사용합니다. 오타만 없다면 쉽게 삭제할 수 있습니다.
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)

Windows Virtual PC 설치 시 0x80070005 오류

2011/07/08 16:35
Windows 7
Windows Virtual PC
2011. 07. 08.
안혁
http://hyok.kr


Windows 7에서 XP mode를 구성하기 위하여 Windows Virtual PC (KB958559) 설치 시, 업데이트 실패가 발생하면 다음과 같은 이벤트 오류가 발생하였는지 확인하세요.

Installation Failure: Windows failed to install the following update with error
0x80070005: Update for Windows (KB958559).

이 경우, 0x80070006는 권한 오류인데, AntiVirus 프로그램에 의한 오류일 가능성이 높습니다. 설치된 백신을 잠시 종료 후 설치해보세요.

참고 문서: http://social.technet.microsoft.com/Forums/en-US/w7itprovirt/thread/98a86f92-406a-45b7-ae0f-1227886639f9/

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)

Powershell - 파일 이름 일괄 변경

2011/02/11 12:50
Powershell
2011. 02. 11.
안혁
http://hyok.kr


동영상 파일을 관리하다 보면 이름을 일괄적으로 변경해야 할 경우가 있습니다. 예를 들면, 자막을 받았는데, 동영상은 MOVE01.AVI, MOVIE02.AVI 이런 형태인데, 자막은 SUBTITLE01.SMI SUBTITLE02.SMI 형태로 되어 있어 SMI 파일의 이름을 AVI와 똑같이 변경해야 하는 경우가 그렇지요.


PS C:\test> $i=1; Get-ChildItem *.smi | ForEach-Object { $name=$_.Directory.FullName + "\newname" + $i.ToString("00") + ".smi"; Move-Item -LiteralPath $_.Name $name; $i++; }


Get-ChildItem: 현재 폴더에 있는 SMI 확장자의 파일을 모두 가져와서
ForEach-Object: 하나씩 처리합니다. {}안에 $_라고 적으면 이 안에 순서대로 대입됩니다.
$_.Directory.FullName: $_는 FileInfo 타입입니다. 이는 파일 경로를 의미합니다.
$name: 원하는 파일 이름을 정하고([경로]\newname01.smi, [경로]\newname02.smi, ......)
Move-Item: 이름 변경 -  이름을 바꿔서 같은 폴더에 옮겼다고 생각하면 됩니다.
$i.ToString("00")이라고 하면 $i에 들어 있는 1, 2, 3이라는 값이 01, 02, 03으로 바뀝니다. 두 자리로 표현되도록 방법이죠. 보통 동영상의 이름에 사용하는 순서는 두자리 숫자를 사용하죠? 그래야 탐색기에서 순서대로 정렬 되니까요.

위 코드는 변경할 이름을 $name에 직접 지정하는 방식입니다만, 좀 더 생각해보면 avi파일의 이름을 가져와서 $name에 담도록 하면 이 명령을 사용할 때마다 변경하지 않아도 되겠군요.

위에서 Rename-Item 대신 Move-Item을 사용한 이유는 원본 파일 이름에 '[' 또는 ']'문자가 있는 경우 파일을 찾을 수 없다는 오류가 발생하기 때문입니다. 보통 동영상 파일의 이름에는 대괄호가 많이 사용되잖아요? 그래서 다른 방법을 찾아본 것입니다. (제 의견입니다만, 이는 버그라고 생각합니다. Rename-Item만을 단독으로 사용할 때면 `[ 또는 `]과 같이 표기하여 사용하겠지만, 파이프(|)는 앞 명령의 결과가 객체로 넘어오므로 문제가 없어야 하지 않을까요? Move-Item이 정상적으로 작동하는 것처럼......)

단, 위 명령은 다음을 전제로 합니다.
1. Get-ChildItem은 파일 이름 순서대로 결과를 돌려줍니다.
2. 원본 smi 파일의 순서는 1부터 1씩 증가합니다.
3. 현재 폴더에는 변경하고자 하는 smi파일만 존재합니다.
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)

Powershell - 문자를 아스키 값으로 처리

2010/12/27 16:06
Powershell
2010. 12. 27.
안혁
http://hyok.kr


Powershell에서 특정 문자열에 +1한 느낌으로 변경하는 것은 어떻게 할까요? 질문이 이해가 안되시죠? "abcdefg"라는 문장이 있는경우, 이를 "bcdefgh"라는 문장으로 바꾸고 싶은 경우를 말하는 겁니다. 이런건 C언어같은 프로그래밍 언어를 처음 배울 때, 문자가 사실은 아스키 값이라는 숫자라는 것을 이해하기 위한 실습 문제 정도되겠습니다. a라는 문자의 아스키 값이 97이라면 b의 아스키 값은 98이라는 거죠. 문제를 이해했다면 Powershell에서 하는 방법을 보겠습니다.


[char[]]"abcde" | ForEach-Object { [char]([int]$_ + 1) }


"abcde"라고 적으면 Powershell에서는 String 타입이 되죠? 이를 char 타입의 배열 그러니까 { a, b, c, d, e } 형태의 값으로 변경했습니다. 그리고 파이프(|)를 사용해서 뒤로 던졌죠? ForEach-Object가 받아서 사용합니다. ForEach-Object는 배열을 첫번째부터 끝까지 순서대로 가져오는 명령어 인데요. [char]($_-1)이라는 명령을 배열 개수(여기는 문자가 5개이니까 5번)만큼 실행됩니다. $_는 각 배열의 값으로 변경되어서요. 결국 위 명령은 다음 명령이랑 같은거죠.


[char]([int][char]"a" + 1);
[char]([int][char]"b" + 1);
[char]([int][char]"c" + 1);
[char]([int][char]"d" + 1);
[char]([int][char]"e" + 1);


좀 더 복잡해진 것 같지만, 같은 일을 5번 한다는 거랑 위 명령과 같은 일을 하는 것을 이해하시면 되겠습니다. 문자열을 문자(char)로 봐꾸고 아스키 값(int)으로 바꾼 후 1을 더하고 다시 문자(char)으로 변경하는 것입니다.

사용자 삽입 이미지

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)

DreamSpark - MS 소프트웨어 무료 지원 프로그램

2010/09/01 22:25
Microsoft DreamSpark
2010. 09. 01.
안혁
http://hyok.kr


Microsoft에서 대학생, 고등학생 개발자들을 위해 소프트웨어를 무료로 제공하고 있습니다. DreamSpark라는 이름으로 지원되고 사이트는 아래와 같습니다.

http://www.dreamspark.com

제공되는 프로그램은 서버, 개발 도구 등이 해당되는데요.  자세한 목록은 아래의 이미지를 참고하세요.

사용자 삽입 이미지

자신의 신분이 학생이라면 어둠의 경로가 아닌 정식의 경로로 공부하세요.

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)

Exchange Server 2010 SP1

2010/08/27 14:17

Exchange Server 2010
2010. 08. 27.
안혁
http://hyok.kr



Exchange Server 2010의 Service Pack 1이 나왔습니다.

Microsoft Exchange Server 2010 helps IT Professionals achieve new levels of reliability with greater flexibility, enhanced user experiences, and increased protection for business communications.

  • Flexible and reliable - Exchange Server 2010 gives you the flexibility to tailor your deployment based on your company's unique needs and a simplified way to keep e-mail continuously available for your users.
  • Anywhere access - Exchange Server 2010 helps your users get more done by giving them the freedom to securely access all their communications - e-mail, voice mail, instant messaging, and more - from virtually any platform, Web browser, or device.
  • Protection and compliance - Exchange Server 2010 delivers integrated information loss prevention, and compliance tools aimed at helping you simplify the process of protecting your company's communications and meeting regulatory requirements.


자세한 내용은 아래 경로를 참고하세요.

http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=50b32685-4356-49cc-8b37-d9c9d4ea3f5b

 

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Exchange 2010 OWA
2010. 04. 22.
안혁
http://hyok.kr


Exchange Server 2007에서 제공하는 OWA는 이미지 삽입이 불가합니다. 특정 웹 페이지에 있는 이미지를 복사해서 붙여넣는 편법이 있습니다만, 이는 이미지 삽입이 아니라 <img>테그가 삽입되는 엄연히 다른 작동입니다. 여기서 말하는 이미지 삽입은 메시지의 일부로 삽입 되는 것을 말하며, Outlook에서 메일 작성이 이미지 삽입은 모두 이런 방식입니다. 속성을 보면 첨부 파일로 처리됩니다만, Inline이라는 일반 첨부와는 약간 다른 형태로 취급됩니다.

Exchange Server 2010에서 제공하는 OWA 또한 이미지 삽입이 불가한 것은 마찬가지 입니다만, 가능한 방법이 있습니다. 이는 편법은 아니지만, 이 기능을 요구하는 사람의 입장에서 만족스러운 응답을 받지 못할 수도 있습니다.

OWA에서 제공하는 S/MIME를 사용하도록 옵션에서 설정할 수 있는데, 그렇게 하면 S/MIME 컨트롤이 설치됩니다. 이는 S/MIME이 공개 키 인프라(PKI)를 기반으로 운영되어 메시지를 암호화하고 디지털 서명을 해야하기 때문입니다. PKI는 공개 키 암호화를 사용하여 전자 거래에서 각 당사자의 유효성을 확인 및 인증하는 디지털 인증서, CA(인증 기관) 및 RA(등록 기관)로 구성되는 시스템입니다.

이 S/MIME을 사용하게 되면 얻게 되는 몇가지 기능 중 하나가 앞에서 설명한 이미지 삽입입니다. 그 몇가지라는 것은 아래와 같습니다.

* Attach messages to messages

* Paste images in messages

* Attach files by using a simpler UI and let users attach multiple files in a single operation.

그리고 아래는 제약 사항입니다.

* WebReady Document Viewing only works in clear-signed messages. It does not work in encrypted messages or in opaque-signed messages.

* When some content types are sent from Outlook as S/MIME messages, they cannot be displayed in Outlook Web App. Outlook Web App will display a banner in the message header when this happens.

* Most S/MIME features are not available when a user opens a folder in another mailbox or uses explicit sign-in to open another user's mailbox. The only S/MIME feature that is available in those cases is verification of digital signatures.


이를 위한 요구 사항이라면 브라우저는 IE7, 8이라는 것과 물론 OWA가 SSL을 사용해서 서비스가 되어야 한다는 것입니다. 이미지 삽입을 위해 S/MIME을 사용하는 것이 좋은 것인가에 대한 질문은 또 다른 의문입니다. 경험적으로 Workaround는 양날의 검입니다. 전체적으로 이해해볼 때, 이 기능은 Exchange를 사용하는 해당 조직의 수신자를 대상으로 하는 메일만 유효한 것으로 보입니다. 외부와 협력이 많은 사람에게는 의미가 없는 기능으로 보이고, 결국 이미지 삽입이란 것도 외부는 못한다는 말이 되겠군요. 많은 고객사들이 외부 업체들과 많은 메일을 주고 받던데... 요즘들어, 좋은 기능 뒤에 숨어 있는 한계를 빠른 시간 안에 발견하는 것이 지연, 야근, 주말 근무가 없는 긍정적인 업무 환경을 보장한다는 생각을 강하게 합니다. 항상 주의가 필요해요.
 
다행히도 외부 메일 서버(네이버, Gmail 등등...)로 발송하는 것도 문제가 없다고 합니다. (확인해주신 엘도라도님 감사합니다.) 그래서 다음과 같이 말할 수 있을 것 같습니다.

Exchange Server 2010의 OWA는 이미지를 본문에 삽입할 수 있습니다.
(단, S/MIME을 사용하는 경우 - Internet Explorer 7, 8만 지원)




참고:
 http://technet.microsoft.com/en-us/library/bb738140.aspx
 http://social.technet.microsoft.com/Forums/ko-KR/exchangeserverko/thread/543a57a7-d8f5-44b0-b10a-066ea6c0c75a/

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)

iframe 내부 페이지 변경 이벤트 처리

2010/01/28 10:00

Javascript
DOM
2010. 01. 28.
안혁
http://hyok.kr



HTML 페이지에 <iframe>이 있을 때, 외부에서 프레임 내부의 페이지 변경(submit같은...) 이벤트를 잡고 싶은 경우 다음과 같이 진행하세요.


function buttonClicked() {
//readystatechange 이벤트에 pageChanged() 함수 연결
document.getElementById("myiframe").onreadystatechange = pageChanged;
}

function pageChanged() {
//<iframe>의 document.readyState가 "complete"일 때......
if (document.getElementById("myiframe").document.readyState == "complete") {
alert("Hello World!");
}
}


buttonClicked()에서 [myiframe]이라는 iframe의 상태가 변경되는 경우 pageChanged()가 호출되도록 설정합니다. 그러면 pageChanged()는 [myiframe]의 상태를 확인해서 "complete"일 경우, 변경이 완료된 것으로 보고 원하는 작업을 하는 것입니다.

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)

iframe 안에 있는 객체 접근

2010/01/27 09:26

Javascript DOM
2010. 01. 27.
안혁
http://hyok.kr



HTML 페이지에서 자바 스크립트를 통하여 <iframe>을 접근할 때 document.frames를 사용하거나 id. 했으나 표준 접근 방식은 다음과 같습니다.


document.getElementById("myiframe");


<iframe> 특성 상 내부의 객체에 접근하고 싶은 경우가 있는데, 다음과 같이 사용하면 됩니다.


var frmDoc = document.getElementById("myiframe").contentWindow.document;
frmDoc.getElementById("innerObjId");


contentWindow.document 대신 contentDocument를 사용해도 되야하는데, 가끔 contentDocument가 undefined를 반환하는 어이없는 경우가 있어 위와 같이 사용해야 할 것 같습니다.

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)

Javascript 쿠키 처리

2010/01/25 14:19

Javascript
2010. 01. 25.
안혁
http://hyok.kr



괜찮은 쿠키 처리 자바스크립트가 있어 도메인 처리 추가 후 담아 둡니다.
원본의 출처는 다음과 같습니다.

http://www.quirksmode.org/js/cookies.html




function createCookie(name,value,days,domain) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/ ;domain="+domain;
}

function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}

function eraseCookie(name) {
createCookie(name,"",-1);
}

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)