천객만래 [千客萬來] (It has an interminable succession of visitors)

마이크로소프트 오피스 원노트 (onenote)


Onenote 전자필기장 공유화 암호 오류에 대해서 해결 방법을 기록합니다.







이 전자 필기장을 동기화하려면 암호가 필요합니다.(오류 코드: 0xE0000024)


Microsoft Office OneNote를 사용하다가 급작스럽게 발생하는 오류 중에 하나가 "전자 필기장" 동기화 오류입니다.
왜 갑자기 안될까?
어떻게 문제를 해결하지?

그렇다고 내 로그인 아이디와 패스워드는 문제가 없는데...


결국은 원노트와 OS 및 여러 어플과의 관계를 고려하지 않을 수 없습니다.


MS 사의 답변은 가장 흔한 답변을 우선 보여주고 있습니다. 그렇다고 대안을 제시하지 않는 것은  아닙니다.

"사용자의 PC 환경 및 원인은 다양하게 존재하기 때문에 여러가지 내용을 점검해 봐야 합니다."

라는 대답을 제시하기 때문에 이에 상응하는 대안들도 다수 존재합니다.

이 중에서 해결 가능성이 가장 높은 것을 알아보고자 합니다.


A 원노트(OneNote) 캐시(Cache)를 삭제하는 방법

1 먼저 윈도우 시작 버튼을 클릭합니다.

2 검색 및 실행 창에서 다음의 명령어를 입력하고 엔터를 칩니다.

"onenote.exe / safeboot"



3 OneNote 오류 복구 메뉴가 나타나면 [캐시지우기]/[설정 삭제]를 선택합니다.



4 원노트를 실행하여 문제가 발생하지 않고 정상적으로 전자필기장 동기화가 된다면 문제가 해결된 것입니다.



B 윈도우즈 날짜 및 시간을 확인

1 윈도우즈 날짜 및 시간을 확인합니다.

2 날짜와 시간이 오늘이 아니라면 날짜와 시간을 변경합니다.



3 인터넷 시간 탭페이지로 이동하여 [설정 변경]을 클릭하고 "time.nist.gov"를 선택 후, [지금 업데이트] 버튼을 클릭합니다.

날짜 문제로 전자필기장이 동기화가 안되는 경우는 이와 같은 방법으로 해결이 됩니다.

C 로그인 계정 패스워드 변경문제

1 브라우저에서 "http://onedrive.live.com"으로 접속을 합니다.

2 로그인을 한 후, "문서" 또는 "공유" 폴더로 이동합니다.

3 사용하고자 하는 전자 필기장에서 마우스 우측 버튼을 클릭하여 "OneNote에서 열기"를 선택합니다.




D OneDrive 다운로드 Windows

1 원드라이브 사이트에서 원드라이브를 다운로드합니다.
   링크 : https://onedrive.live.com/about/ko-kr/download/

2 설치가 끝나면 원드라이브로 로그인을 합니다.

3 원노트에서 사용하고 있던 아이디와 패스워드를 입력합니다.



위의 방법들을 사용하면 90% 이상의 전자 필기장 동기화 문제를 해결할 수 있습니다.








Posted by SB패밀리

중국 판매 PC 20대 중 4대는 이미 백도어 맬웨어에 감염된 것





마이크로소프트는 중국에서 출하시 PC에 강력한 봇넷 맬웨어가 미리 설치되어 출시됐다는 놀랄 만한 증거를 공개하고 있다. 중국에서 맬웨어 조사를 행하는 Operation B70이 개시된 것은 2011년 8월의 일.

마이크로소프트 문서에는 디지털 범죄 유닛(DCU)이 중국내의 다양한 지역에서 20개 브랜드의 PC를 구입하여 조사를 행한 결과, 그 가운데 4대가 이미 설치된 백 도어형 맬웨어에 의해서 감염되었으며 그 가운데 하나는 이미 알고 있는 ‘Nitol’이라고 불리는 루트 킷이 포함되어 있다고 한다.

조사 팀이 Nitol의 활동을 추적한 결과, C&C 서버가 존재하고 있다는 사실이 밝혀졌다. 이 맬웨어에 감염되었던 PC가 보다 큰 봇, 필시 DDoS 공격을 시도하는 데 사용된 것을 찾아내었다고 한다.

USB 등의 removal media에 자기 자신의 복사를 남김으로써 Nitol은 미리 설치되었던 PC이외에도 확대되고 있다. Nitol에 의해서 C&C서버에서 맬웨어를 호스트된 경우, 맬 웨어 범죄자들에 있어서는 거의 모든 문제 행동이 가능하게 된다. 키 로거나 제어 웹 카메라, 검색 설정의 변경 등, 다양한 것을 범죄자 측이 원격 조작으로 행하게 된다.

마이크로소프트는 오랫동안 맬웨어가 PC 제조 중, 또는 제조 후 바로 PC에 설치되지 않았을까라는 의심을 갖고 있었다고 한다. 마이크로소프트는 조사 결과를 소개한 블로그에서 “특히 불안정한 것은 수송, 기업간 이동 등 Supply Chain의 어떤 시점에서 PC에 맬웨어가 설치되어 있다는 것이다”라고 강조하고 있다.

시큐리티 대책을 추가하기 전에, 누군가에 의해 제조시에 맬웨어가 설치되어 있다는 상황은 공정의 후방에서 시큐리티 대책을 추가하는 시큐리티 시스템 이 자체를 수정하지 않으면 안 된다. 게다가, End User가 이들에 의한 위험을 회피하는 데에는 기지의 안전한 이미지 파일을 사용해서 OS를 재 설치 하는 방법밖에 없다.

Operation B70은 PC의 시큐리티 상태가 원하지 않는 상황에 놓여있다는 점을 지적함과 동시에 Supply Chain에 있어서의 시큐리티 의문을 던지고 있다. Microsoft는 이미 지난 주 전반에、Nitol 봇 넷에 명령을 내리기 위해 사용되고 있는 C&C서버를 제어하기 위해 미국 재판소로부터 허가를 취득하였다고 한다. (Computer. 2012/09/17) [출처] 마이크로소프트, 중국에서 출하시부터 맬웨어 감염 PC 발견—공장에서 설치

Posted by SB패밀리


MS, 윈도8 10월26일 출시




마이크로소프트(MS)의 최신 운영체제(OS) 윈도8 정식버전이 오는 10월 26일 출시된다. MS가 사활을 걸고 내놓는 새 OS가 이 회사의 자존심을 회복해줄 지 석달 뒤 밝혀진다. MS는 이같은 의지를 반영하듯 기존 버전 사용자를 윈도8으로 끌어들이기 위한 파격적인 업그레이드 정책도 진행한다.


 윈도XP, 윈도비스타, 윈도7 기반 PC를 쓰는 사용자는 윈도8을 40달러만 내고 업그레이드할 수 있는 프로모션도 진행한다

내년 1월말까지 윈도7, 비스타, XP 사용자들이 39.99달러(약 4만6천원)만 내면 '윈도8프로' 버전으로 업그레이드할 수 있다. 이는 온라인 다운로드 시 가격이며 소매점에서 살 수 있는 패키지형 DVD 버전을 받으려면 69.99달러(약 8만원)를 내야 한다.

 애플의 맥OS X 업그레이드 가격을 의식한 것으로 보인다.


MS 태블릿 '서피스'는 언제 나올까?




Posted by SB패밀리

인사시스템의 관료주의와 외부의 경쟁사들과의 경쟁보다 내부 경쟁이 우선이 되어버린 MS

결국....애플, 구글, 페이스북 등에 주도권을 빼앗기고 만다.



출처: http://www.etoday.co.kr/news/section/newsview.php?TM=news&SM=3105&idxno=606763


[CEO 리포트] MS의 잃어버린 10년...원인은?

일적인 인사관리 시스템이 문제…윈도·오피스 등 기존의 성공에 안주

:2012-07-10


▲MS의 전현직 임직원들은 회사의 획일적 인사관리 시스템과 성공에 지나치게 안주한 것이 지난 10여년 간 신사업들이 실패로 돌아간 주이유라고 지적했다. 빌 게이츠 당시 MS 회장이 지난 2000년 11월12일(현지시간) 미국 라스베이거스에서 열린 연례 컴덱스 컴퓨터쇼에서 회사의 초기 스마트폰인 스트링거폰을 소개하고 있다. 블룸버그

마이크로소프트(MS)는 지난 2000년 이후 추진했던 신사업이 거의 대부분 실패하는 쓰라림을 맞봤다.

전자책과 음악검색·소셜네트워킹서비스(SNS) 등이 실패 목록에 들어있다.

만일 이 중에 하나라도 성공했다면 정보·기술(IT) 시장의 판도를 뒤흔들었을 것이라는 평가다.

유명 논픽션 작가인 커트 아이헨월드는 MS 전현직 임직원들을 인터뷰하고 내부 이메일 등 회사 자료를 검토한 결과 MS의 인사관리 시스템인 ‘스택 랭킹(Stack ranking)’을 실패의 가장 큰 원인으로 분석했다고 최근 포브스가 보도했다.

아이헨월드는 “인터뷰를 한 MS의 전현직 임직원 모두 스택 랭킹이 회사를 가장 크게 망치고 직원들을 회사로부터 떠나가게 한 시스템이라고 밝혔다”고 전했다.

스택 랭킹은 모든 직원을 성과에 따라 무조건 ‘최고·좋음·평균·나쁨’ 등 4등급으로 나눴다.

이는 결국 회사의 혁신능력과 창의성을 오히려 약화시켰다고 아이헨월드는 지적했다.

MS에서 소프트웨어 개발팀에 근무했던 한 직원은 “10명이 한 팀이라면 팀의 성과나 개개인의 능력에 상관없이 무조건 2명은 최고, 7명은 보통, 1명은 최악의 평가를 받을 것”이라고 설명했다.

이어 그는 “이같은 시스템에서 직원들은 다른 회사보다는 내부의 다른 직원과 경쟁하는데 더 초점을 맞출 수 밖에 없다”고 덧붙였다.

MS 엔지니어였던 브라이언 코디는 “그 직원이 갖고 있는 실제 능력보다는 얼마나 상사에 잘 보였는지에 따라서 평가가 정해졌다”고 비판했다.

▲ 지난 2000년 11월 라스베이거스에서 열린 한 콘퍼런스에서 사용자가 MS의 윈도 CE로 작동되는 포켓PC를 사용하고 있다. MS는 지난 1996년 윈도 CE를 발표했으나 회사의 관료주의로 이 OS는 애플의 아이폰과 같은 성공을 이끌어내지 못했다. 블룸버그

기존의 성공에 너무 안주한 것도 MS 실패의 주원인이라고 포브스는 전했다.

회사에서 16년간 마케팅을 담당해왔던 에드 맥커힐은 “스마트폰 운영체제(OS)에서 우리는 윈도CE가 있었는데 어째서 선두 자리를 차지하지 못했는지 의문이 생긴다”면서 “회사의 관료주의가 완벽한 기회를 날려버렸다”고 말했다.

윈도 CE는 소형 모바일 기기용 OS로 MS는 지난 1996년 이를 발표했다.

회사는 지난 2000년에 윈도 CE를 적용한 초기 스마트폰인 스트링거폰을 선보이기도 했다.

내부 기술팀이 지난 1998년에 터치스크린으로 된 실험용 전자책 리더기를 빌 게이츠에게 보여주자 게이츠가 “이 기기는 윈도와 맞지 않는다”면서 개발을 거부한 것이 스마트폰사업에서의 실패 원인을 보여준다고 포브스는 전했다.

MS 오피스 부서에서 일했던 한 직원은 “회사에서 가장 많은 이익을 올려주는 제품 중 하나였던 오피스의 기능 제한을 우려한 것이 빌 게이츠가 거절한 진짜 이유”라면서 “회사는 당장의 돈 버는데만 급급해 미래를 이끌 새 아이디어는 거부했다”고 꼬집었다.

커트 매시 전 MS 마케팅 매니저는 “백화점 체인인 메이시스는 지난 1940~60년대는 시대를 이끄는 최고 단계의 백화점이었으나 지금은 황폐화했다”면서 “MS도 이같은 위기에 처했다”고 경고했다.

Posted by SB패밀리

[IT/과학] MS, 아이패드에 대항할 자체 태블릿 PC '서피스' 공개


마이크로소프트가 18일 애플의 아이패드와 경쟁하기 위해 자체 개발한 태블릿 컴퓨터 '서피스'(surface)를 공개했다.


아이폰5처럼 가을에야 시판이 될 것 같으며 아이패드와 유사한 크기 무게..의 태블릿 PC다.

운영체제는 윈도RT 이다.


Posted by SB패밀리

[속보]"초비상! 무조건 IE9이나 IE8 깔겠다"

13일부터 한국서도 강제 업데이트 시작

오는 13일부터는 한국에서도 인터넷 익스플로러(IE)의 강제 업데이트가 시작되는 것으로 확인돼 업계에 비상이 걸렸다. 당장 IE8이나 IE9에 호환되지 않는 서비스를 운영하는 업체나 기업 인트라넷 입장에서는 강제 업데이트를 임시로 막거나, 최신 IE환경에 맞게 서비스 개선이 시급한 상황이다.



테크트렌드팀이 1일 확인한 자료에 따르면, 한국MS는 지난달 27일 고객사에 보낸 공문을 통해 인터넷 익스플로러의 강제 업데이트를 진행할 계획이라고 알린 것으로 밝혀졌다. 이에 따라 윈도XP 사용자 중 IE6와 IE7 사용자는 IE8로 자동 업데이트가 되고, 윈도7 사용자 중 IE8 사용자는 IE9으로 자동 업데이트 된다.

한국MS 측은 "HTML5 등 웹표준 지원 및 보안 기능이 상대적으로 취약한 오래된 IE 버전에 대한 개선조치의 일환"이라고 설명했다.

다만, 13일에 당장 모든 사용자들이 IE8이나 IE9 화면을 봐야 하는 것은 아니다. 약 6개월에 걸쳐 점차적으로 확대할 계획이라는 설명.

◆뭐가 달라지나 = 기존에 윈도 자동 업데이트시에는 IE 업데이트는 사용자들에게 '선택'을 반드시 묻고 이를 고를 수 있도록 했다. 따라서 IE8이나 IE9을 사용하기 싫으면 계속 업데이트 거부를 유지할 수 있었던 것. 그러나 이번에 적용되는 자동 업데이트 정책은, 기존 IE업그레이드를 거부한 적이 없는 모든 사용자들을 대상으로 일괄 적용된다. 한마디로 대부분의 컴퓨터들이 IE8이나 IE9으로 바뀌게 된다는 의미다.

MS는 "다만, 기업 고객의 경우 'IE8-IE9 Blocker Toolkit'을 통해 IE 업데이트를 사전에 차단할 수 있다"고 덧붙였다.

>당초 MS본사 공식공지 http://windowsteamblog.com/ie/b/ie/archive/2011/12/15/ie-to-start-automatic-upgrades-across-windows-xp-windows-vista-and-windows-7.aspx

[공문 전문]

안녕하세요.

한국마이크로소프트 입니다.

Internet Explorer 자동 업데이트 관련 안내 공문 보내 드립니다.

마이크로소프트는HTML5 등 웹표준 지원 및 보안 기능이 상대적으로 취약한 오래된 Internet Explorer(이하, IE) 버전에 대한 개선조치의 일환으로 Windows 자동 업데이트 기능을 통한 Internet Explorer 8(이하, IE8) 및 Internet Explorer 9(이하, IE9)의 자동 배포를 오는 2012년 2월 13일부터 진행하게 되었습니다.

금번IE 자동 배포는 국내 인터넷 사용자들이HTML5 등 새로운 웹표준을 포괄적으로 지원하며 보안이 강화된 최신 버전의 IE를 사용하도록 유도하기 위한 목적으로 이루어지고 있습니다. 하지만 IE 자동배포는 IE8 또는 IE9이 아닌 버전으로 작성된 웹사이트가 현재와는 다르게 표시되거나 장애를 유발할 가능성을 전혀 배제할 수 없기 때문에 이러한 오류를 미연에 방지하고자 첨부와 같이 IE8 및 IE9의Windows 자동 업데이트 일정과 준비에 필요한 가이드를 제공하오니 귀사의 업무에 참고하시기 바랍니다.

특히, HTML5 등 새로운 웹표준 적용을 위해 IE9 도입을 고려하신다면, IE9 환경 하에서의 테스트를 통해 호환성 여부를 먼저 확인하시길 권해 드립니다.

이하 자세한 사항은 첨부해드리는 공문 참조 부탁 드립니다.

감사합니다.

1. 배경:

HTML5 등 웹표준 지원 및 보안 기능이 상대적으로 취약한 오래된 IE 버전에 대한 개선조치의 일환으로

Windows 자동 업데이트 기능을 통해 IE8 및IE9의 자동 배포가 이루어질 예정입니다.

- Windows XP에서 IE6/IE7사용자: IE8으로 자동 업데이트

- Windows 7에서 IE8 사용자: IE9으로 자동 업데이트

2. 시기: 2012년 2월 13일부터 시작될 예정이며, 약 6개월에 걸쳐 점차적으로 확대될 예정입니다. (날짜는 변경될 수도 있음)

3. 특이사항:

1) 기존 Windows 자동 업데이트 시에는 IE 업데이트에 대해 사용자의 선택을 물었으나,

이번 Windows 자동 업데이트에서는 기존에 IE 업그레이드를 거부한 적이 없는 모든 사용자를 대상으로 일괄 적용될 예정입니다.

2) 기업 고객의 경우 IE8 / IE9 Blocker Toolkit을 통해 IE 업데이트를 사전에 차단할 수 있습니다. (사전 차단 방법 안내_공문 참조) <끝>

Posted by SB패밀리
[IT/과학] MS가 선정한 2012년 8대 IT 트렌드

마이크로소프트는 올해 정보기술(IT) 산업이 스마트 기기와 서비스가 결합하는 방향으로 발전하면서 디지털 생활 방식에 많은 영향을 미칠 것으로 전망하면서 2012년 8대 IT 트렌드를 발표했다.

클라우드 컴퓨팅
빅데이터
소셜서비스 플랫폼
스마트 디바이스
내추럴 유저 인터페이스(NUI)
디지털 컨텐츠
HTML5
스마트 워크


자세한 정보는 http://newslink.media.daum.net/news/20120119114604142 에서 확인하세요.

 
Posted by SB패밀리

Visual Studio 2008 에서 컴파일할 때 자꾸 발생하는 현상이다.
그것도 한 번씩 새로 컴파일할 때마다 발생하고 다시 빌드가 된다.
비주얼 스튜디오 2008에서 "LINK : fatal error LNK1000: Internal error during IncrBuildImage" 가 계속 발생한다면 서비스팩 1(Service Pack 1:SP1)을 설치하면 해결이 된다고 한다.

그래서 나도 설치하려고 한다. 혹시나 영문판을 사용중이라면 서비스 팩 또한 영문버전으로 설치하기 바란다.

Microsoft Visual Studio 2008 Service Pack 1(iso)
http://www.microsoft.com/downloads/ko-kr/details.aspx?familyid=27673C47-B3B5-4C67-BD99-84E525B5CE61&displaylang=ko



아래는 참고로 비주얼 스튜디오 2010 서비스 팩 1 이다.
http://www.microsoft.com/downloads/ko-kr/details.aspx?FamilyID=75568AA6-8107-475D-948A-EF22627E57A5
Posted by SB패밀리

Written by 안재우(Jaewoo Ahn), 닷넷엑스퍼트(.netXpert)

 

예전 Voice of .NETXPERT 2003 행사 때, 저희 회사의 김유철 책임이 발표했던 내용인 '아무도 가르쳐 주지 않는 .NET 애플리케이션 개발 Tips 18가지'를 정리해서 올립니다.

 먼저 첫번째로 Visual Studio .NET 관련 팁으로 시작합니다.

 Tip 1. 참조 추가 대화상자에 나의 어셈블리나 컴포넌트를 보이게 할 수 있는 방법은?

 다음과 같이 나타나게 하는 것을 의미합니다.

 

사실 처음에는 GAC(Global Assembly Cache)에 올라가면 나오지 않을까 생각했었는데, 막상 그렇지 않다는 것을 알게 되었습니다.

어쨌든 참조 대화상자에 표시하는 방법은 크게 2가지 방법이 있습니다.

 첫번째 방법은 폴더를 이용하는 방법으로서, 다음 폴더에 위치하면 됩니다.

C:\Program Files\Microsoft Visual Studio .NET\Common7\IDE\PublicAssemblies

 두번째 방법은 레지스트리를 이용하는 방법으로서, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.0\AssemblyFolders의 PublicAssemblies 하위키를 이용하면 됩니다.

 Tip 2. 디버깅 빌드 속도 개선?

기본적으로 VS.NET은 빌드 수행 시 솔루션 내의 모든 프로젝트에 대해 빌드를 수행합니다. 그런데, 프로젝트의 갯수가 많아지다보면 디버깅을 위해 빌드를 수행하는데 걸리는 시간이 점점 많이 걸리게 됩니다.

이를 개선하기 위해서는 다음과 같이 옵션을 지정하여, 빌드 속도를 개선할 수 있습니다.

 

Tip 3. 인텔리센스 동적 도움말

내가 직접 만든 컴포넌트에 다음과 같이 인텔리센스 도움말이 나타나게 하려면?

 

일단 기본적으로 다음과 같은 XML 주석을 달면 된다는 것은 대부분 알고 있을 것입니다.

 

그런데 이 컴포넌트를 담고 있는 프로젝트와 이 컴포넌트를 사용하는 프로젝트가 동일 솔루션 내에 있는 경우에는 자동적으로 인텔리센스 도움말이 표시되지만, 문제는 이 컴포넌트의 DLL만 배포해서, DLL 참조를 수행할 경우입니다.

이러한 경우, 다음과 같이 프로젝트 속성에서 구성속성/빌드/XML 문서 파일에서 XML 파일의 이름을 지정해서 빌드를 수행할 때 XML 파일을 생성하게 합니다.

이제 DLL과 XML을 같이 배포하고, 이 DLL을 다른 프로젝트에서 참조하면 자동적으로 해당 XML 파일이 로드되어 인텔리센스 도움말을 지원하게 됩니다.

 

나머지 팁은 나중에 이어서 올리도록 하겠습니다.

 두번째로 .NET Framework 관련 팁 2가지입니다.

 

Tip 4. StringBuilder의 잘못된 사용

문자열(System.String)의 경우, 소위 말하는 Immutable 패턴을 따르고 있기 때문에 독특한 특성을 가지는데, 간략하게 설명하면 다음과 같습니다. 우선 다음 코드를 봅시다.

 string s = "Hello";
s = s + ", ";
s = s + "World !";

이렇게 했을 때, 실제 메모리 상에서는 다음과 같이 문자열에 해당하는 메모리 공간이 3번 점유됩니다.

 

Memory #0 : [Hello]
Memory #1 : [Hello, ]
Memory #2 : [Hello, World!]

즉 동일한 메모리 주소(#0)에 추가되는 것이 아니라, 문자열 연산을 수행한 결과의 문자열이 새로운 메모리 주소에 할당된다는 것입니다.

이에 비해 StringBuilder라는 클래스를 우리가 일반적으로 생각하는 방법처럼 동일 메모리 주소(#0)에 문자열을 추가함으로써 재할당의 오버헤드, 불필요한 메모리 공간의 낭비를 줄입니다. StringBuilder를 사용할 경우, 위 코드는 다음과 같이 됩니다.

StringBuilder sb = new StringBuilder();
sb.Append("Hello");
sb.Append(", ");
sb.Append("World!");
 

이 때문에 상당수의 .NET 프로그래밍 팁에서는 문자열 연산을 여러번 수행하는 경우, StringBuilder를 사용하면 성능이 좋아진다고 설명해놓은 경우가 많습니다.

문제는 이를 맹신하고 남용하는 사람들이 많다는 것입니다. 실제로 다른 .NET 팁을 보고 나서 무조건 StringBuilder를 사용해서 코드를 작성하는 프로그래머를 본 적도 있습니다. 과연 그게 맞을까요? 위에서 본 두 가지 경우와 아래의 경우 중 성능이 가장 좋은 것은 어느 것일까요?

string s = "Hello" + ", " + "World!";

가장 바람직한 것은 바로 위, 즉 맨 마지막의 경우입니다. 바로 위처럼 작성한 경우, C# 컴파일러는 MSIL을 생성할 때 위 코드를 다음과 같이 최적화합니다.

string s = "Hello, World!";

그러므로 문자열 상수 연산이나 보통 5개 이하의 문자열 연산에는 StringBuilder를 사용하지 말고 + 연산자를 사용하는 것이 바람직합니다. StringBuilder를 써야 할 경우는 다수의 문자열 연산을 수행하거나, 반복문(for, while 루프 등) 내에서 문자열 연산을 수행할 경우입니다.

성능 뿐만 아니라 코드 가독성 측면에서도 + 연산을 사용하는 것이 StringBuilder.Append()를 사용하는 것보다 훨씬 나으므로, 코드 생성기나 HTML 렌더링과 같은 특수한 작업을 수행하지 않는 일반적인 경우라면 + 연산을 사용하는 것을 권장하고 싶습니다.

 

Tip 5. 콘솔 애플리케이션 출력 캡쳐

요즘은 대부분 웹이나 윈도우 애플리케이션으로 작성하긴 하지만, 간혹 가다 콘솔(커맨드라인) 애플리케이션을 작성해야 할 경우도 있습니다. 이럴 경우, 콘솔 애플리케이션의 출력 내용을 캡쳐하는 방법은 없을까요?

System.Diagnostics.ProcessStartInfo 클래스를 사용하면 이를 간단하게 수행할 수 있습니다. 다음 코드를 보죠.

Process cmd = new Process();
ProcessStartInfo procInfo = new procInfo();
procInfo.RedirectStandardOutput = true;  // 표준 출력을 Redirect
procInfo.UseShellExecute = false;             // 표준 입/출력 Redirect 시에는 false로 설정
procInfo.CreateNoWindow = true;            // 윈도우를 생성하지 않음
cmd.StartInfo = procInfo;
cmd.Start();
cmd.StandardOutput.Read();                    // StreamReader를 통해 출력을 얻음
 
다음 번엔 ADO.NET 관련 팁을 올리도록 하겠습니다.
 

세번째로 ADO.NET 관련 팁 2가지입니다.

 

Tip 6. Strict Typed Parameter 사용하기

데이터액세스 작업을 수행하다보면 Parameterized Query나 SP를 사용하는 경우, SqlParameter와 같은 Parameter Class를 사용하여 매개변수를 전송해야 하는 경우가 많습니다.

SqlParameter를 만드는 방법에는 여러가지가 있지만, 일반적으로 다음 생성자를 사용하는 경우가 많습니다.

SqlParameter(string parameterName, object value);

매개변수명/값 쌍으로만 전달하면 되므로, 다음과 같이 작성하기만 하면 되어서 전반적으로 매우 편리하기 때문입니다.

 SqlParameter param = new SqlParameter("@ProductID", "50");  // Case1
SqlParameter param = new SqlParameter("@ProductID", 50);    // Case2

둘 중 어느 것을 사용하더라도 상관은 없습니다. 그런데, 이 두개만 하더라도 실제 SQL 프로파일러로 찍어보면 결과가 서로 다른 것을 알 수 있습니다.

exec ...@ProductID', N'@ProductID nvarchar(4000)', @ProductID = N'50'  // Case1
exec ...@ProdcutID', N'@ProductID int', @ProductID = 50                         // Case2

이러한 결과가 나타나는 이유는 ADO.NET이 매개변수의 값으로부터 매개변수의 Type을 추론해내기 때문입니다. 명시적으로 지정을 하든, 지정을 하지 않든 Type은 어느 경우나 반드시 필요합니다. 위의 예에서는 Case2가 좀 낫긴 하지만, 만약 ProductID가 int가 아닌 다른 숫자형이었다면?

 결론적으로 가장 바람직한 것은 매개변수의 Type을 정확하게 지정해주는 것이 좋다는 것입니다. 그러므로 매개변수명/값 쌍 형태보다는 다음과 같이 매개변수명/Type 쌍으로 생성한 후, 값을 따로 지정해주는 것이 보다 바람직합니다. Type 외에도 Size, Precision 등이 있는 경우, 이를 지정해주면 더욱 더 좋습니다.

SqlParameter param = new SqlParameter("@ProductID", SqlDbType.Int);
param.Value = 50;

프로파일링을 해보면 알 수 있지만 보다 많은 사항을 명시적으로 지정해줄 수록 서버 측 리소스를 절감해서 쿼리 속도 및 성능이 개선되는 것을 알 수 있습니다. 정리하자면 개발자의 편의성과 성능은 반비례한다는 것이 되겠죠. ^^

 

Tip 7. ADO Recordset으로부터 DataSet 만들기

기존 시스템이 ASP로 되어 있었고, ADO Recordset을 반환하는 비즈니스 로직 컴포넌트를 호출해서 데이터를 가져오는 3-Tier 구조로 되어 있었다고 가정합시다.

그러던 어느날 프리젠테이션 부분을 ASP.NET으로 교체한다고 회사에서 결정을 내렸습니다. 윗 사람은 이미 비즈니스 로직은 다 작성되어 있어서 프리젠테이션 부분만 작성하면 되니깐 금방 하겠다고 하면서 프로젝트 일정을 말도 안되게 짧게 잡아 놓았습니다. 안된다고 말을 할려니, 이전에 3-Tier 구조의 장점을 역설했던 일이 거짓말이 되어버리게 생겼습니다. 그렇다고 기존 Recordset을 그대로 사용하려니 ASP.NET에서의 데이터바인딩과 같은 장점을 전혀 사용할 수가 없습니다. 어쩔수 없이 밤을 새서라도 기존 비즈니스 로직 컴포넌트를 .NET으로 재작성하려고 생각을 했는데, 엎칱데 덮친 격으로 기존 컴포넌트에 해당하는 소스가 현재 나한테 없습니다. 이러한 경우, 도대체 어떻게 해야 할까요?

이러한 경우, 기존의 Legacy 로직을 재사용하는 것으로 방향을 잡는 것이 바람직합니다. 처음부터 재작성을 하기에는 시간과 비용이 모자라기 때문입니다.

이때 유용한 것이 바로 OleDbDataAdapter의 Fill 메서드입니다. 다른 DataAdapter들과는 다르게, OleDbDataAdapter의 Fill 메서드에는 다음과 같은 오버로딩이 존재합니다.

public int Fill(DataSet dataSet, object ADODBRecordSet, string srcTable);

이 메서드는 ADODBRecordSet의 내용을 DataSet 내에 srcTable이라는 이름의 DataTable로 채워 넣는 역할을 수행합니다. 이렇게 하여 RecordSet의 내용을 DataSet으로 옮길 수 있게 됩니다.

이렇게 할 때 장점은 다음과 같습니다.

첫째, 기존 Legacy 로직을 수정/변경 없이 그대로 재사용이 가능합니다.

둘째, 기존 Recordset이 Connection 기반이더라도 이를 통해 Disconnected 모델로 전환이 가능합니다.

셋째, 기존 Recordset의 커서 타입에 관계없이 자유롭게 Disconnected 모델에서 사용이 가능합니다.

넷째, 기존 Legacy 로직을 XML 웹 서비스나 .NET 리모팅으로 쉽게 재사용할 수 있게 만들 수 있습니다.

 

단, 이렇게 할 경우, 재사용을 통해 시간과 비용을 절감할 수는 있겠지만, 성능적인 측면에서는 오히려 저하될 수도 있다는 것에 주의해야 합니다.

 

다음 번에는 ASP.NET 관련 팁일듯 합니다. ^^

 네번째로 ASP.NET 관련 팁 8가지 중 먼저 4가지를 올립니다.

 

Tip 8. 네트워크 드라이브에 있는 ASPX 실행하기

 

웹 서버가 여러 대 있는 경우, 웹 애플리케이션이 업데이트 되었을 때 이것을 각 웹 서버에 일일이 배포하는 일은 상당히 귀찮은 작업입니다. 별도의 배포 시스템(예 : AppCenter)을 사용하여 Rolling 업그레이드를 하는 것이 정석적입니다만, 어떤 회사에서는 배포 대상 파일을 한 곳(SAN과 같은 통합 스토리지, 파일 서버의 공유 폴더 등)에만 두고 이를 네트워크 드라이브로 공유해서 사용하는 경우도 있습니다. 이 경우, 공유된 경로에만 업데이트를 해주면 모든 웹 서버에 반영되므로 최소한 배포에 있어서는 훨씬 간편해 집니다.

 

 

우선 네트워크 경로로 IIS 홈 디렉터리를 설정하는 것은 쉽습니다.

 

문제는 ASP의 경우에는 별다른 문제가 없는데, ASP.NET의 경우, 위 그림과 같은 Parser 오류가 발생하게 됩니다. 무엇이 문제일까요?

바로 .NET Framework의 런타임 보안 정책과 관련된 문제입니다. ASP.NET이 ASPX 및 코드 비하인드 DLL을 처리하려면 FullTrust 권한이 필요합니다. 그런데, .NET Framework는 네트워크 드라이브, 즉 로컬 인트라넷에 대해서는 기본적으로 FullTrust를 하지 않기 때문에 이러한 문제가 발생하게 되는 것입니다.

해결책은 위의 글 중에 답이 있습니다. 런타임 보안 정책에서 로컬 인트라넷의 권한을 FullTrust로 변경해주면 됩니다.

 

Tip 9. 애플리케이션 간에 aspx, ascx 공유하기

 

예를 들어, 다음과 같이 동일 웹 애플리케이션 내에 있지 않는(즉, 다른 웹 애플리케이션에 속한) 웹 사용자 정의 컨트롤(*.ascx)을 페이지에서 사용하려고 하면, 다음과 같은 파서 오류가 발생되게 됩니다.

 

이 문제를 해결하려면, 다음과 같은 단계로 작업을 수행합니다.

1. 공유할 웹 애플리케이션을 동일한 물리적 위치로 지정합니다. 아래는 app1과 app2가 appshared를 공유할 경우입니다. (오타 수정 : 표에서 App1/control이 아니라 App1/appshared가 되어야 합니다)

 

2. 공유할 웹 애플리케이션(appshared)의 응용 프로그램 속성을 제거합니다.

3. 공유할 웹 애플리케이션(appshared)의 web.config, Global.asax를 제거합니다.

4. 이제 각 애플리케이션(App1, App2)의 페이지에서는 사용할 ASCX를 다음과 같이 지정합니다.

<%@ Register … Src="appshared/shareusercontrol.ascx" %>

 

Tip 10. 코드 비하인드의 긴급 수정

 

다음과 같은 시나리오를 가정해 보겠습니다.

ASP.NET 애플리케이션을 개발해서 개발 PC(또는 개발 서버)에 있던 내용을 실 서버에 배포했는데, 서버 관리자가 갑자기 긴급하게 수정해야 할 사항이 발견했습니다. 그런데 공교롭게도 이 내용은 매우 사소한 것이긴 한데, 코드 비하인드 클래스에 정의되어 있는 내용이라서 소스 파일을 수정해서 DLL을 재컴파일하여 올리지 않는 한 문제를 수정할 수 없는 상황이 되었습니다.

그런데, 이미 개발자는 퇴근을 했고, 관리자는 비주얼 스튜디오와 같은 개발 도구를 설치하지 않은 상황입니다. 비주얼 스튜디오가 있다고 하더라도 관리자는 사용법을 잘 알지 못합니다.

이러한 경우에 긴급하게 조치를 할 수 있는 방법이 없을까요?

 

우선 이 방법은 서버에 배포를 할 때, ASPX와 코드 비하인드 소스 파일(.aspx.cs 또는 .aspx.vb)이 같이 배포되어 있는 상황에서만 가능합니다. 또는 수정하려는 ASPX에 해당하는 코드 비하인드 소스 파일을 가지고 있어야 합니다.

이런 조건이 성립되어 있다고 가정하고, 긴급 조치 절차는 다음과 같습니다.

1. 수정할 .aspx의 코드 비하인드 소스 파일(.aspx.cs)를 편집기 등에서 열고, 문제점을 수정합니다.

2. 위의 코드 비하인드 클래스 이름을 임시로 변경합니다. 예를 들어 ProductList라면 ProductList_1 등으로 변경합니다.

3. 수정할 .aspx에서 <% @Page .. %> 내에서 CodeBehind를 Src로 바꾸고, Inherits 내의 클래스 이름을 1에서 변경한 이름으로 바꿉니다.

    <% @Page CodeBehind="productlist.aspx.cs" Inherits="Northwind.ProductList" %>

    <% @Page Src="productlist.aspx.cs" Inherits="Northwind.ProductList_1" %>

 

일단 이렇게 하면, 긴급 수정을 할 수 있게 됩니다. 그러나, 어디까지나 이 방법은 긴급 상황에서 사용할 수 있는 임시 방편일 뿐입니다. 정상적인 수정/업데이트의 경우에는 절대로 이 방법을 사용하지 않아야 합니다.

긴급 수정을 한 이후에는 개발자에게 해당 사항을 통지해주고, 문제점을 수정해서 컴파일된 버전으로 새로 업데이트를 하도록 합니다. 최소한 컴파일된 DLL을 업데이트해야 하고, 임시로 수정한 ASPX를 다시 원래로 돌려놓아야 한다는 것에 유의하십시오.

 

Tip 11. Postback 간 스크롤 위치 고정

 

웹 폼 페이지를 스크롤해서 내린 상태에서, 포스트 백이 일어나면 스크롤 위치가 다시 맨 상단으로 돌아가버리는 단점이 있습니다.

 

이 문제를 해결하기 위한 방법은 크게 3가지가 있습니다.

첫째, SmartNavigation을 사용하는 방법입니다. 다음과 같이 page directive에 SmartNavigation을 true로 지정해 줍니다.

<%@ Page ... SmartNavigation="true" %>

이 방법은 가장 간편하긴 하지만, 페이지 내에서 클라이언트 스크립트를 사용하는 경우 Smart Navigation의 스크립트와 충돌하여 문제가 발생할 수 있습니다.

 둘째, 다음과 같이 URL 뒤에 컨트롤ID를 앵커로 지정합니다.

http://localhost/.../....aspx#DataGrid1:_ctl72:_ctl0

위 코드는 DataGrid1의 72번째 줄을 기준으로 스크롤을 하게 됩니다.

 셋째, 클라이언트 스크립트의 scrollIntoView를 사용합니다.

<scirpt> document.all('DataGrid1').rows[72].scrollIntoView(true) </script>

 해결은 가능은 하지만, 보다시피 깔끔한 방법은 없네요. ^^ 

다음번엔 나머지 ASP.NET 팁 4가지를 올리겠습니다. 

네번째로 ASP.NET 관련 팁 8가지 중 나머지 4가지를 올립니다.

 

Tip 12. 폼 인증으로 모든 파일 보호하기

 

ASP.NET을 어느 정도 다뤄보신 분은 잘 아시겠지만, ASP.NET은 내부적으로 인증 메커니즘을 제공합니다. 특별한 코딩 작업 없이 web.config에 인증(Authentication)과 권한 부여(Authorization)만 지정하면 페이지 액세스 권한을 설정할 수 있습니다. 다음 예를 봅시다.

 

<authentication mode="Forms">
  <forms name="protectall" loginUrl="login.aspx" ... />
</authentication>

 

<authorization>
  <deny users="?" />
</authorization>

이렇게 web.config에 설정하면,

- 기본적으로 쿠키 기반의 폼 인증을 사용하여 사용자를 인증하며,

- 로그인 되지 않은 익명 사용자( = ?)에 대해서는 접근을 거부(deny)하며,

- login.aspx라는 페이지로 로그인하라고 리디렉션한다는 의미입니다.

 

그런데, 문제는 폼 인증의 경우, .aspx를 요청할 때만 동작한다는 것입니다. 만약 .gif와 같은 이미지 파일을 요청하면 어떻게 될까요?

해보면 알겠지만, 로그인을 하지 않았음에도 불구하고 .gif는 보이게 됩니다. 인증 자체를 Windows와 같은 다른 인증으로 바꾸면 .gif도 방어할 수 있지만, 폼 인증에서는 기본적으로 되지 않습니다.

폼 인증을 쓰면서 .gif에 대해서도 인증 및 권한부여 메커니즘을 동작시킬 수는 없을까요?

 

방법은 다음과 같이 간단하게 할 수 있습니다.

우선, IIS 관리자를 열고, 웹 애플리케이션(또는 사이트)의 홈 디렉터리 탭을 선택합니다. 하단의 응용 프로그램 설정에서 우측에 있는 구성 버튼을 누릅니다.

그러면, 아래 그림과 같이 응용 프로그램 구성 페이지가 나타납니다. 여기서 하단의 추가 버튼을 누르고 .gif에 대한 응용 프로그램 매핑을 추가하면 됩니다. 추가 시에는 .aspx와 동일한 실행 파일 경로(C:\WINDOWS\Microsoft.NET\Framework\[버전번호]\aspnet_isapi.dll)를 지정해주면 됩니다.

 

Tip 13. 스크롤 바를 가진 DataGrid 만들기

 

DataGrid를 페이지에서 표시하려고 하는데, DataGrid의 항목이 한 페이지에 표시하기에는 너무 많다고 가정합시다. 물론 페이징을 사용해서 처리하는 것도 방법이긴 하겠지만, 다음과 같이 스크롤을 하는 것이 보기 좋을 수도 있습니다..

 

일단 이걸 처리하는 방법은 간단합니다. <DIV> 내에 DataGrid를 집어넣고, <DIV>의 스타일에 overflow:auto를 지정해주면 됩니다. 물론 auto가 아닌 다른 값을 지정해줘도 됩니다.

그런데 이 방법의 문제는 DataGrid의 머리글(Header)까지 같이 스크롤되어 버린다는 문제점이 있습니다. 우리가 원하는 것은 머리글은 그대로 있고, DataGrid의 항목만 스크롤이 되는 다음과 같은 형태가 되겠죠.

 

사실 이렇게 만드는 방법은 민망할 정도의 꽁수에 불과합니다. 어떻게 하면 되느냐 하면..

DataGrid에서 머리글을 표시하지 않도록 지정하고, 머리글은 Table 태그를 사용해서 직접 그리는 것입니다. 그릴 때는 DataGrid 안의 테이블과 크기를 잘 조정해야 하고, DataGrid를 포함하고 있는 <DIV> 바로 위에 지정해야 한다는 것에 주의하십시오.

 

<!-- 머리글 내용 -->

<Table>...</Table>

<DIV style="overflow:auto">

   <asp:DataGrid ...>

       ...

   </asp:DataGrid>

</DIV>

 

Tip 14. 서버에서 클라이언트 스크립트 처리

서버 사이드 코드에서 클라이언트 스크립트를 처리하는데는 대략 다음과 같은 시나리오가 있습니다.

- 클라이언트측 스크립트 라이브러리를 제공하는 시나리오
- 페이지 상단이나 하단에 스크립트를 생성하는 시나리오
- (페이지에 여러 개의 컨트롤 인스턴스가 존재하더라도) 페이지에 스크립트 블록이 단 한번만 나타나도록 확인하는 시나리오
- 페이지에 폼이 포함된 경우, 폼의 클라이언트측 제출 이벤트와 이벤트 처리기를 연결하도록 컨트롤을 설정하는 시나리오
- 컨트롤에 의해 렌더링된 클라이언트측 요소를 클라이언트 상에서 선언된 배열 변수에 추가하는 시나리오
- 숨겨진 필드를 통한 값 전달

- 서버 컨트롤이 렌더링된 후 컨트롤의 클라이언트 이벤트와 이벤트 핸들러 연결 

 

Page 클래스는 다양한 Register* 계열의 메서드를 통해 이러한 시나리오를 가능하게 해줍니다. 관련된 내용은 MSDN의 다음 URL을 참조하기 바랍니다.

http://msdn.microsoft.com/library/KOR/cpguide/html/cpconClient-sideFunctionalityInServerControl.asp

 

위의 붉은색 부분에 대응되도록 작성한 코드는 다음과 같습니다.

 

 private void Page_Load(object sender, System.EventArgs e)
 {
      String scriptString = "\n";
      scriptString += "<script language=JavaScript>\n";
      scriptString += "<" + "!--\n";
      scriptString += "    function showIds() {\n";
      scriptString += "        for(var index=0;index < ids.length;index++)\n";
      scriptString += "        document.write(ids[index] + '<br>');\n";
      scriptString += "    }\n";
      scriptString += "//-->\n";
      scriptString += "<" + "/" + "script>\n";
   
      RegisterStartupScript("arrayScript", scriptString);
     
      string[] ids = {"111","112","the third one","114"};
      RegisterArrayDeclaration("ids","'" + String.Join("','",ids) + "'");

      RegisterHiddenField("myHidden", ".netXpert");
       
      btnArray.Attributes.Add("onClick", "showIds()");
      btnHidden.Attributes.Add("onClick", "alert(document.all.myHidden.value); return false;");
 }

 

이 코드를 사용해서 렌더링된 HTML은 다음과 같습니다.

 

Tip 15. 웹 팜(Web Farm) 환경에서 상태 관리 문제

 

L4나 NLB를 사용하여 여러 대의 웹 서버를 묶어서 동작시키는 웹 팜(Web Farm) 환경에서 ASP.NET을 사용하는 경우, 상태 관리 문제가 이슈가 됩니다. 대표적인 것이 ViewState와 Session, 폼 인증 쿠키 등이 있겠습니다.

 예를 들어 ViewState와 관련하여 PostBack 시에 다음과 같은 에러 메시지가 발생할 수 있습니다.

 HttpException (0x80004005): The View State is invalid for this page and might be corrupted.]
   System.Web.UI.Page.LoadPageStateFromPersistenceMedium() +150
   System.Web.UI.Page.LoadPageViewState() +16
   System.Web.UI.Page.ProcessRequestMain() +421
….

 

아마 한글 메시지로는 '이 페이지의 뷰 상태가 유효하지 않거나 훼손되었습니다.'라는 걸로 나오던 걸로 기억합니다.

 이 문제가 발생하는 원인을 살펴보겠습니다.

웹 팜 환경에서는 최초 페이지 접근은 A 서버로 하고, PostBack은 B 서버로 날라갈 수도 있습니다.

PostBack 동안 ViewState가 페이지에서 저장/로드될 때는 특정한 키를 사용하여 Encrypt/Decrypt 되는 과정을 거치게 됩니다. 그런데, 이때 사용하는 키 값이 A 서버와 B 서버가 서로 다르게 설정되어 있을 것이기 때문에 위와 같은 에러가 발생하게 됩니다.

폼 인증 사용 시 쿠키와 관련한 문제도 이것과 동일합니다.

 

이 문제를 해결할 수 있는 방법은 크게 2가지입니다.

우선 첫번째는 L4 장비에서 세션이 유지되도록(즉, 한 사용자는 최초 접근한 서버로 계속 접근하도록) 설정하는 방법이 있습니다. 이 방법을 사용하면 상태 관리 문제(세션변수, ViewState, 폼인증 쿠키)를 모두 잊어버려도 된다는 장점이 있는 대신에, 로드 밸런싱의 효율성이 떨어지게 됩니다.

그래서 권장되는 두번째 방법은 바로 모든 웹 서버의 키 값을 동일하게 설정해주는 것입니다. 키를 생성하고, machine.config를 수정하는 부분에 대해서는 다음 KB를 참고하십시오.

 http://support.microsoft.com/default.aspx?scid=312906

 그러나, 세션변수(Session)의 경우에는 두번째 방법으로 해결되지 않습니다. 세션 변수는 페이지에 저장되는 것이 아니라 웹 서버의 메모리에 저장되는 것이기 때문입니다. L4 설정을 하지 않고 세션 변수를 공유하는 방법은 없을까요? 바로 ASP.NET의 StateServer나 SqlServer 모드 등을 통해 세션을 별도로 관리하는 방법이 있습니다. 여기에 관해서는 다음 URL을 참조하십시오.

 http://msdn.microsoft.com/library/KOR/cpguide/html/cpconSessionState.asp

 웹 팜에서 StateServer나 SqlServer 모드를 사용할 때는 주의해야 할 사항이 하나 있습니다. 다음 URL을 반드시 참고하시기 바랍니다.

 http://support.microsoft.com/default.aspx?scid=325056

 마지막으로 Session 변수와 ViewState에 대해 참고할 만한 좋은 문서가 있습니다. ASP.NET Program Manager인 Susan Warren이 작성한 다음 문서를 보기 바랍니다.

 http://msdn.microsoft.com/library/en-us/dnaspnet/html/asp11222001.asp

 이 팁 시리즈도 이제 다음 번이 마지막이 될 것 같네요.

출처: http://blog.naver.com/saltynut


쌈꼬쪼려 소백촌닭
Posted by SB패밀리

재미있는 5대 IT 기업명 유래

마이크로소프트


마이크로소프트는 빌 게이츠의 선견지명이 드러난 사명이다. 그가 회사를 창업한 1975년만 해도 건물의 벽 전체를 차지하는 대형컴퓨터를 떠올리기 마련이었지만 빌게이츠는 소형컴퓨터의 미래를 예상하고 회사의 이름에 아주 작은 것을 뜻하는 마이크로(Micro)라는 단어를 넣었다.

또한 컴퓨터와 프로그램이라는 개념만 존재했을 때 사명에 소프트웨어를 전면에 내세웠다. 그가 회사를 창립했던 1975년도에 이 회사명은 사람들에게 희귀하고 생소한 전문적인 용어였다. 회사명 때문에 마이크로소프트는 한때 사람들로부터 작고 부드러운 아이스크림을 만드는 회사로 오인을 받아야 할 정도였다.

애플


스티브 잡스가 애플이라는 회사 이름을 떠올린 이유는 그가 청년 시절 아르바이트를 했던 사과농장에서의 즐거운 추억 덕분이었다. 또한 애플이라는 이름을 확정한 것은 전화번호 리스트에서 아타리(Atari)보다 앞에 있다는 점이 마음에 들었기 때문이었다. 참고로 아타리는 바둑 용어인 단수(單手)의 일본식 발음이다.

구글


래리 페이지와 세르게이 브린이 처음 검색서비스를 할 때는 백럽이라고 불렀다. 하지만 검색 서비스 인기가 높아지자 좀 더 친숙하면서 의미가 있는 이름을 찾으려고 했다. 검색엔진 작업에 참여하고 있는 대학원생들과 함께 메신저를 통해 새로운 이름을 고민했다.

이때 마침 동료 중 하나가 10의 100제곱을 뜻하는 의미가 있다는 구글(Google)을 제안했다. 1에 0이 백개 붙여있는 어마어마한 숫자를 뜻하는 구글이 검색서비스의 거대함, 방대함과 일맥상통해 래리와 세르게이는 구글로 이름을 결정했다. 며칠이 지나서야 원래 10의 100제곱을 뜻하는 단어는 구글이 아니라 구골(GooGol)이라는 사실을 알게 됐지만 두 사람은 구글이 마음에 너무 들어 계속 구글을 사용했다.

인텔


처음 로버트 노이스와 고든 무어는 회사명으로 자신들의 이름을 따서 노이스-무어 일렉트로닉스(Noyce-Moore Electronics)로 정했다. 하지만 사람들이 잡음을 뜻하는 노이즈(Noise)와 많다를 뜻하는 모어(More)의 합성어로 헷갈려 부정적인 이미지의 노이즈 무어, 즉 “잡음이 많다”를 떠올렸다.

하는 수 없이 그들은 새로운 회사 이름을 찾아야 했다. 그들의 전문분야인 전자 집적회로를 표현하기 위해 통합을 뜻하는 인터그레이트(Integrate)와 전자를 의미하는 일렉트로닉스(Electronics) 두 단어의 앞 글자를 조합해 인텔(INTEL)이라고 정했다.

로버트 노이스는 새로운 회사명이 지적인 느낌의 인텔리전트(Intelligent)를 떠올린다고 생각해서 특히 좋아했다. 그런데 이미 호텔 체인사업을 하는 다른 회사에서 인텔코(Intelco)라는 사명을 가지고 있었다. 회사이름에 애착을 느낀 노이스는 인텔코에 1만 5,000달러를 주고 회사이름을 구입했다.

IBM


원래 IBM의 이름은 CTR이었고 컴퓨터와는 전혀 상관없는 사무기기 업체였다. 1914년 토마스 왓슨이 당시 적자에 허덕이던 CTR의 총책임자로 임명됐는데 그는 'Think'라는 슬로건을 내세워 회사의 기술혁신을 이뤄냈다. CTR의 부활은 해외시장에서의 활약이 컸다. 그래서 토마스 왓슨은 1924년 해외시장에서의 인지도 상승을 위해 사명을 IBM(International Business Machines)으로 바꿨다.

그 밖에 회사 유명 IT 기업들의 이름의 유래
모토로라는 원래 그들이 자동차에 들어가는 라디오를 전문으로 만드는 회사이기 때문에 모터(Motor)가 들어갔고 당시 라디오 회사이름의 끝에는 'ola'가 들어가는 게 유행이라 'Motorlola'가 되었다. 시스코(Cisco)는 샌프란시스코에서 따왔으며 야후는 걸리버 여행기에 나오는 야만족을 뜻한다


출처 : http://www.ebuzz.co.kr/content/buzz_view.html?uid=86720

쌈꼬쪼려 소백촌닭
Posted by SB패밀리

HTTP 압축은 gzip 등의 알고리즘을 사용해서, HTTP 를 통해서 전송되는 데이터의 양을 최고 50%로 압축하는 기술입니다. ASP.NET 으로 만든 페이지들의 사이즈가 커서 Response Time 이 느리거나, 낮은 대역폭 - 이를테면 56K 라인 - 의 사용자들까지도 지원할려고 한다면, 그리고 더 많은 사용자를 지원하기 위해서 서버의 대역폭을 아껴쓰고자 할 때 상당히 유용합니다

HTTP 압축을 위한 상용 모듈도 있습니다만, Windows 2003에 내장된 IIS 6.0에서는 자체적으로도 지원을 합니다. IIS 관리자에서 아주 간단하게 설정을 할 수 있죠. IIS 관리자를 열어서, 트리의 "웹 사이트" 노드에다 마우스 오른쪽 버튼을 클릭하면 나오는 메뉴 중에서 속성을 선택합니다. 그리고 "서비스" 탭을 선택하면 다음과 같은 화면이 나올텐데요. 간단하게 체크만 해주고, IIS를 한번 Restart 시켜주면 바로 HTTP 압축을 사용할 수가 있습니다



하지만, 이렇게만 했을 경우에 ASP.NET 의 aspx 는 압축되어서 내려가지 않습니다. IIS가 압축하는 파일 유형에 포함되어 있지 않기 때문인데요. aspx도 포함을 시키기 위해서는 WIN_DIR\System32\inetsrv\metabase.xml 파일을 편집해야 합니다. 이 파일에서 <IIsCompressionScheme> 노드를 찾아야 합니다
 
<IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/deflate"
  HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"
  HcCreateFlags="0"
  HcDoDynamicCompression="TRUE"
  HcDoOnDemandCompression="TRUE"
  HcDoStaticCompression="FALSE"
  HcDynamicCompressionLevel="0"
  HcFileExtensions="htm
   html
   txt"
  HcOnDemandCompLevel="10"
  HcPriority="1"
  HcScriptFileExtensions="asp
   dll
   exe
   aspx"
 >
</IIsCompressionScheme>
<IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/gzip"
  HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"
  HcCreateFlags="1"
  HcDoDynamicCompression="TRUE"
  HcDoOnDemandCompression="TRUE"
  HcDoStaticCompression="TRUE"
  HcDynamicCompressionLevel="0"
  HcFileExtensions="htm
   html
   txt"
  HcOnDemandCompLevel="10"
  HcPriority="1"
  HcScriptFileExtensions="asp
   dll
   exe
   aspx"
 >
</IIsCompressionScheme>
 
빨간 색으로 되어 있는 부분처럼, aspx확장자를 추가시켜주면 그때부터 aspx파일에 대해서도 IIS가 HTTP 압축을 수행할 것입니다. (이 파일은 편집하기 위해서 IIS를 잠시 멈춰야 편집을 할 수 있습니다)
 
당연한 거겠지만, 압축을 수행하는 서버와 압축된 컨텐트를 받아서 풀어서 보여줘야 하는 클라이언트 양쪽에 약간씩의 CPU 부담이 있습니다. 하지만 30-50%에 이르는 압축율은 성능 향상과 대역폭 절약이라는 엄청난 이점을 가져오기 때문에, Windows 2003을 사용하는 웹 사이트에서는 충분히 사용할만한 기술인 것 같습니다
Posted by SB패밀리

현재 참여하고 있는 프로젝트를 하면서 SSL을 적용하다 보니 로그인 처리에서 문제가 발생했습니다.

 

일반로그인 처리는 해당페이지의 비하인드코드에서 하면 되지만, SSL을 적용하려면 로그인 처리 페이지를 https://로 접근해야 합니다.

 

위와 같은 경우 Get방식으로 로그인정보를 보내어 처리하면 무리는 없지만

Post방식으로 할 경우 단순히 Form태그의 Action만 바꿔서는 안됩니다.

 

보통 aspx페이지에서는 자체 페이지마다 viewstate값을 가지고 있는 hidden 컨트롤이 있습니다.

 

<input type="hidden" name="__VIEWSTATE" value="dDw3NjMwDYbDxpP..." />

 

이 값을 post방식으로 해서 다른페이지에 보내는 경우 다음과 같은 에러가 발생합니다.

에러 내용을 보시면 알겠지만 machinekey 구성을 수정하라고 하는군요...

 

System.Web.HttpException: Authentication of viewstate failed. 

1) If this is a cluster, edit <machineKey> configuration so all servers use the same validationKey and validation algorithm.  AutoGenerate cannot be used in a cluster. 

2) Viewstate can only be posted back to the same page. 

3) The viewstate for this page might be corrupted. -

--> System.Web.HttpException: 데이터가 유효한지 확인할 수 없습니다.

 

수정하시기가 구찮으시다면.. 아래 소스코드 처럼 __VIEWSTATE의 값은 넘기지 않도록 합니다.

 

<SCRIPT language="javascript">
<!--
function LoginCheck( form )
{
   form.__VIEWSTATE.disabled = true;

   // post방식으로 현재페이지의 컨트롤값을 다른페이지로 그대로 넘기는 되는경우

   // aspx에서는 클라이언트에서 접근할수 있는 아이디값이 컴파일후 바뀐다는것을

   // 유념하셔야 합니다. 아래 처럼 별도의 hidden필드를 만들어서 입력한 값이나

   // 클라이언트 아이디를 넘겨서 다음 페이지에서 정상적으로 값을 받을수 있도록 합니다.
   form.Uid.value = idBox.value;
   form.Pwd.value = pwdBox.value;


   var submitUrl = "https://<%=Request.Url.Host%>/LoginProcess.aspx" ;

   form.action = submitUrl;


   form.submit();
   return true;
}
//-->
</SCRIPT>

출처 : http://blog.naver.com/tear230/100014257847

 
Posted by SB패밀리

현재 페이지에 표시된 DataGrid의 내용을 버튼클릭시 다운로드 하는 소스입니다.
필요해서 한번 해봤는데 되네요..

 

DataListRepeater 등 모든 서버컨트롤이나 HTML컨트롤에도 사용 가능합니다! *^^*

 

private void Button1_Click(object sender, System.EventArgs e)
{   
    System.Web.HttpContext.Current.Response.Buffer = true;
    System.Web.HttpContext.Current.Response.AddHeader
        ("Content-Disposition", "attachment;filename=20050614.xls");
   System.Web.HttpContext.Current.Response.ContentType="application/unknown";

 

    // 이부분은 web.config의 <globalization requestEncoding="utf-8"   
    // responseEncoding="utf-8" /> 인코딩 부분과 같도록 맞춰주시면 됩니다.
   

    // 2005.09.26 추가 : 인코딩 문자열을 자동으로 맞추려면

    // Request.ContentEncoding.HeaderName 로 인코딩 문자열을 받아서 사용한다.

    System.Web.HttpContext.Current.Response.Write       
        ("<meta http-equiv=Content-Type content='text/html; charset=utf-8'>");

 

    System.IO.StringWriter sWriter = new System.IO.StringWriter();   
    System.Web.UI.HtmlTextWriter htmlWriter
           = new System.Web.UI.HtmlTextWriter(sWriter);


    DataGrid1.RenderControl(htmlWriter);   


    System.Web.HttpContext.Current.Response.Write(sWriter.ToString());   
    System.Web.HttpContext.Current.Response.End();
}

참조 : http://blog.naver.com/tear230/100013986512

DataGrid를 이용할줄 안다면 GridView도 응용해서 이용할수 있습니다.
Posted by SB패밀리

기본적으로 정보처리기사와 같이... 하나정도 획득해두면 유용한 자격증이 있다.
그냥 필요없을꺼라 생각하지 말고... 두어개 정도 있으면 유익하게 활용되는거 같다.

전산분야 : 국가기술자격법에 의한 정보통신관련 자격증 또는 한국산업인력공단, 정보기술연구원, 한국정보보호진흥원, 국제정보보호협회, 마이크로소프트, 썬마이크로시스템즈, 오라클, 정보시스템감사통제협회 등 국내외에서 일반적으로 인정된 기관으로부터 발급된 자격증 소지자와 전자상거래상의 네트워크 또는 웹관련 2급이상 자격증 소지자
Posted by SB패밀리

''' 볼랜드, 그 뿌리와  20여년의 흔적들... '''
----

//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

Borland, 이제는 알고싶다.

ⓐ Borland

Borland Software(예전에는 Borland International, Inc.)사는 오늘날 Delphi 프로그래밍 언어로 알려져
있지만 Turbo Pascal 프로그래밍 언어로 가장 잘 알려진 소프트웨어 회사(캘리포니아, 스콧 밸리에 위치해
있으며 NASDAQ:BORL로 상장된)이다.


차 례
[[TableOfContents]]
=== 1980년대: 창립 ===

Borland 명칭은 아일랜드에서 작은 회사로부터 시작된다. Niel Jensen, Ole Henriksen, 그리고
Mogens Glad, 3명의 덴마크 사람들이 1981년 8월 Borland Ltd.를 설립했다.

Borland International사은 1983년 5월 2일 캘리포니아에서 법인이 되었을 때 개인회사에서 주식회사로
거듭났다. 미국에서 회사 초기 지원은 Philippe Kahn(대표)와 Spencer Ozawa(부사장)하고 코펜하겐에서
Niels Jeson, Ole Henriksen, Mogens Glad이다.

Philippe Kahn은 존경받는 소프트웨어 개발 툴 시리즈를 개발하는 회사를 만들어갔다. 첫 제품은
초기에 Anders hejlsberg에 의해 개발된 Turbo Pascal 이었다. 1984년 출시된 SideKick은 시계와
노트북 그리고 계산기였다. 1987년 9월 Borland사는 Paradox(ver 2) database 관리 툴을 개발하는
Ansa-Software사를 매입했다. 1989년에는 Quattro Pro spreadsheet를 출시했는데, 당시에는 차트 기능을
가진 뛰어난 툴이었다.

Borland사의 Turbo Pascal 출시는 라이벌인 Microsoft사를 아주 위태롭게 했었던 지금까지 유일무이한
유명한 툴로 남아있다. Microsoft사는 Turbo Pascal이 출시되기 전까지는 프로그래밍 언어에 있어서
선두자리 매김을 하고있었다. Borland사가 Turbo Pascal을 출시했을 때, Microsoft사는 운영체제와
어플리케이션 개발로 전환했다. 왜냐하면 Turbo Pascal의 IDE가 Microsoft사의 컴파일러와 인터프리터
보다 월등했기 때문이다.

게다가, Borland사는 "Borland no-nonsense license agreement"를 소개하면서 현실적인 소프트웨어
정책으로 알려졌다. 이는 개발자/사용자가 제품을 "책을 보듯이"로 이용 가능하게 하고 한 프로그램을
여러카피로 사용하도록 허용함으로써 단지 한 카피가 필요할 때 언제나 사용할 수 있었다.


=== 1990년대: 흥망 성쇠 ===

1991년 9월, Borland사는 dBase와 Interbase database를 가진 Ashton-Tate를 매입했다. 그러나
Borland사가 지불한 높은 금액으로 심각한 재정난에 직면한 원인 중에 하나가 된다. Microsoft사는
Borland사의 제품 가격보다 저가로 1992년에 Microsoft Access와 dBase clone FoxPro를 출시하면서
Borland사를 재정적으로 악화시켰다.

1990년대 초반, Borland사의 C++ 기술은 시장에서 Microsoft사보다 우수했었다. 또한 ObjectPAL
프로그래밍 언어와 함께 Paradox의 개발은 더욱이 Microsoft사의 소프트웨어(특별히 Access)에 대해서는
앞서갔다.

1990년대 중반까지, Borland사는 소프트웨어 툴 시장에서 지배력을 점점 상실해갔다. 어떤 이들은
Microsoft사의 경쟁이 나쁘다고 생각할 정도였다.

그들은 Microsoft사와의 싸움에서 Philippe Kahn이 빈약한 자원으로 너무 많은 프로젝트를 추진한다고
느끼고 있었다. Kahn의 재임기간 동안, Borland사는 시장이 준비되기도 전에 상기되는 듯한 다수의
모호한 컴퓨터 개념을 내놓았다. 다른 기업들이 새로운 아이디어에 적응할 수 있도록 성장하고 있을 때
이 기술들을 지속적으로 추진함으로써 Borland사의 자원은 고갈되어갔다.

여전히 그들은 시장환경의 변화가 Borland사의 시장 지배력이 낮아지는데 기여했다고 믿었다.
Philippe Kahn은 컴퓨터 프로그래머를 마케팅 대상으로 잡았다. 1980년대에, 기업들은 발전해가는
개인 컴퓨터를 이해하는 사람이 몇몇 없었지만 대부분 기술자들은 그들이 생각하고 그들이 필요했던
어떠한 소프트웨어를 구입하기위해 무료혜택이 주어졌었다. Borland사는 매우 전문적인 능력으로
기업들에게 우수한 마케팅을 수행해왔다. 그러나, 1990년대 중반까지, 기업들은 구입한 PC 소프트웨어를
제어하는데 투자한 댓가를 요구하기 시작했다. CEO들은 기술자들에게 자문하기 어려웠던 문의를 해왔으며,
결국은 기업 표준이 만들어지기 시작했다. 이러한 기업 표준은 새로운 마케팅과 벤더들로부터 지원도구를
요구했다. 그러나 Kahn 이 지휘하는 Borland사는 시장 변화에 적응하지 못했다. Microsoft사와 같은
경쟁 소프트웨어 기업들은 변화하는 시장에 대한 대처와 기업들이 찾고 있었던 정보를 제공하는 일을 잘
수행했다.

1993년 중반, Borland사는 시장 판매부진에 따라 Object Vision을 내놓게 된다.

Kahn의 능력은 다양한 기업 CEO들에게 강한 인상을 심어주지 못했다. 1995년 이사회에서는 Kahn을
해고하기에 이른다.

Anders Hejlsberg 아래, Delphi 1 RAD환경이 1995년에 출시되었다.


=== Inprise 사로 개명 ===

1997년 11월, Borland사는 CORBA 기술을 가진 미들웨어 회사인 Visigenic사를 인수한다.

1998년 4월 29일, Borland사는 기업 어플리케이션 개발을 목표로 노력을 기울였고 사명을 Inprise사로
명명하기에 이르렀다(Inprise는 Integrating the Enterprise라는 슬로건에서 가져왔다). 이러한 생각은
Borland사의 툴들인 Delphi, C++Builder, 기업 환경 소프트웨어인 JBuilder와 Visigenic의 CORBA, C++과
Java용 Visibroker, 최신 제품인 Application Server 기술를 포함해서 통합하기 위한 것이었다.

수 년간(Inprise 개명전과 그 당시) Borland사는 심각한 재정손실을 겪었고 이미지도 형편없었다. 사명이
Inprise로 개명되었을 때 Borland사는 폐없한 것으로 생각되어질 정도였다.

1996년 10월, Paradox와 Quattro Pro는 Corel사로 팔렸다. Corel사는 또, 이전에 Windows 기반 Borland
Office로 알려진 소프트웨어 번들의 매입을 완료하기 위해 WordPerfect를 매입했다. WordPerfect 번들,
Paradox 그리고 Quattro Pro는 지금 Corel Office로서 판매되고 있다.

dBase는 1999년에 Inprise사가 소프트웨어 개발 툴로의 집중화 정책 당시에 팔렸다.

1999년에, Borland사 본질적으로 위험에 빠져있을 때 Dale L. Fuller가 CEO Del Yokam를 대신했다. 이
당시에 Fuller은 "임시 대표이자 CEO"였다. "임시"라는 말은 몇 년후 없어졌다.

Linux 기반 제품 생산을 위해 Inprise사와 Corel사간의 합병이 2000년 2월에 공표되었다. 그러나 그
합병안은 Corel사 주식 가격이 떨어지자 수포로 돌아갔다.

InterBase 6가 2000년 7월에 오픈 소스 제품으로 출시되었다.


=== Borland 다시 태어나다. ===

Borland 사명이 2001년 1월에 Inprise에서 Borland Software 사로 변경되었다.


Borland 사명과 대표이자 CEO인, Dale L. Fuller에 지휘로 새 경영진 아래에서 약간의 수익이 있는
Borland사는 Delphi를 추진하고 Kylix라는 제품으로 Linux용 Delphi와 C++Builder 버전을 만들어냈다.
처음으로 Linux 플랫폼용 통합개발환경(IDE)에서 Borland사의 전문화된 기술을 만들어냈다. Kylix는
2001년에 출시되었다.

독립회사로서 InterBase 부분을 스핀오프하려던 계획은 Borland사와 새 회사를 운영하려던 사람들이
독립에 대한 시기에 이견을 보이면서 실패로 돌아갔다. 새 경영진아래 재추진하려던 부분으로
Borland사는 InterBase의 오픈 소스 출시를 중지하고 개발을 하면서 재빨리 새 버전을 판매했다.

Borland사는 웹 서비스를 지원하기 위한 첫 통합개발환경으로 Delphi 6를 출시하면서 웹 서비스의 기술에
전념을 하기에 이른다. 지금은 현재 개발중인 플랫폼의 모두가 웹 서비스를 지원한다.

C#Builder는 Visual Studio .NET에 정면으로 대항하는 네이티브 C# 개발 툴로서 2003년에 출시했다.
C#Builder, Win32용 Delphi, 그리고 .NET용 Delphi는 Delphi 2005라는 하나의 IDE에 결합되었다.
웹 서비스와 .NET 지원이 시장에서 Borland사의 이미지를 확고히 하고 있다. 지속적인 수익으로 2002년
후반에 Borland사는 설계툴 벤더인 TogetherSoft와 퍼블리셔인 StarTeam 형상관리 툴과 CaliberRM
요구사항관리 툴 메이커인 Starbase사를 매입했다. JBuilder와 Delphi 최신 버전은 개발자에게 개발툴을
더 폭 넓게 사용하도록 이러한 툴들을 통합하고 있었다.

이러한 완전한 제품들은 설계와 개발을 통한 요구사항에서부터 테스팅과 개발에 이르기까지 소프트웨어
개발의 일련을 연결하는 툴과 함께 Application LifeCycle Management(ALM) 시장에 Borland사의 새로운
이념을 합리화시켰다. 2004년에 Borland사는 Software Delivery Optimization(SDO) 시장의 슬로건을
SDO가 포트폴리오 관리와 평가툴과 같은 고급 소프트웨어 제조 개념을 추가하여 ALM을 완성한 아이디어를
표방하는 것임을 드러냈다.

전직 CEO Dale Fuller는 2005년 7월에 사임했지만 이사회에는 남아있다. 전직 COO Scott Arnold는 임시
대표와 CEO 직위를 2005년 11월 8일까지 유지했다. 2005년 11월 9일에는 새 CEO로서 Tod Nielsen이
인계받을 것임을 발표했다.

2005년 8월에 Borland사는 Legadero사를 인수했는데, Borland사 제품 라인에 Tempo라 일컬는
IT Managgement와 Governance(ITM&G)제품을 추가하기 위해서이다.

2005년 11월 Borland사는 C++Builder를 포함한 코드네임 "덱스터(DeXter)"로 알려진 Borland Developer
Studio 2006를 발표하기에 이르렀다. BDS 2006에는 모델링 솔루션인 Together와 소프트웨어 변경 및
형상 관리 솔루션인 StarTeam과 요구사항관리 솔루션 CaliberRM 등의 ALM 제품들이 포함되어 개발
라이프사이클 프로세스를 제어하고 관리할 수 있게 되었다.



=== 현재 제품들 ===

Borland사의 현재 제품 라인

- C++Builder
- C#Builder
- CaliberRM
- Delphi
- JBuilder
- Optimizeit Suite
- InterBase
- JDataStore
- Borland Enterprise Studio, for C++, Mobile and Java
- Borland Enterprise Server  (AppServer, VisiBroker)
- StarTeam
- Tempo
- Together
- Kylix


6. 과거의 소프트웨어

프로그래밍 툴

- CodeWright
- Turbo Pascal
- Turbo Assembler
- Turbo Debugger
- Turbo Profiler
- Turbo C
- Turbo BASIC
- Turbo Prolog
- Turbo C++
- Borland C++
- Object Vision

유틸리티

- SideKick

어플리케이션

- Reflex
- Sprint
- Quattro Pro
- Paradox
- dBase

//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

Anders Hejlsberg가 있는 한 MS와 볼랜드의 관계는 쉽게 끝나지 않을 것 같네요.
Anders Hejlsberg(덴마크,1961):
볼랜드사를 거쳐 현 마이크로소프트사에서 재직중이다.
Turbo Pascal, Delphi,, C#,  .NET FrameWork을 만들었다.


- 출처: http://psychcentral.com/psypsych/Borland
- 번역: 소백촌닭, 2006.2.

- 번역하는 걸 근무시간에도 눈감아준 팀장님께 감사드리며 ㅡㅡ;
[http://sobakcc.com]
[http://www.delphikorea.com/]
Posted by SB패밀리

<파워빌더 ODBC 인터페이스> 

  
 다음은 파워빌더7.0과 인포메이커 애플리케이션이, ODBC를 사용하여 데이터베이스에 
 접속하고자 할 때 필요한 파일 목록입니다. 

  
 파일명 설명

 ---------------------------------------------------------

 PBODB80.DLL PowerBuilder ODBC interface

 PBODB80.INI PowerBuilder ODBC initialization file

 

 설치된 경로 > C:Program FilesSybaseSharedPowerBuilder

 설치될 경로 > 설치할 프로그램 폴더, System Path 또는 Path가 지정된 특정 폴더

  INI파일과 DLL파일은 반드시 같은 디렉토리에 위치해야 합니다. 

  
  

 <마이크로소프트 ODBC 파일> 

  
 개발된 애플리케이션이 ODBC를 이용하여, 데이터베이스에 접속할 경우,

 다음의 마이크로소프트 ODBC 3.5파일들이 필요합니다.

 보통 윈도우 설치시 함께 설치되어 있습니다.

 다시 설치할 필요가 있으면 설치 CD 안에 Support 폴더에 있는 MDAC_TYP.EXE을

 실행하여 업데이트할 수 있습니다. 

  
 파일명 설명

 ---------------------------------------------------------

 DS16GT.DLL Microsoft ODBC driver manager, DLLs, and Help files

 DS32GT.DLL

 ODBC32.DLL

 ODBC32GT.DLL

 ODBCAD32.EXE

 ODBCCP32.CPL

 ODBCCP32.DLL

 ODBCCR32.DLL

 ODBCINST.CNT

 ODBCINST.HLP

 ODBCINT.DLL

 ODBCTRAC.DLL

 

 설치된 경로 > Windows system directory

 설치될 경로 > Windows system directory 

    

 <어댑티브 서버 애니웨어 파일> 

  
 개발한 PowerBuilder 애플리케이션이 어댑티브 서버 에니웨어(ASA)데이터베이스를 사용한다면,

 배포시 ASA의 ODBC 데이터베이스 드라이버와 ASA DBMS를 함께 배포하셔야 합니다.

 개발된 애플리케이션이 독립형(stand-alone) 데이터베이스를 사용할 경우에는

 ASA의 데스크탑 런타임 모듈을 최종 사용자의 PC에 무상으로 배포하실 수 있습니다.

 이 런타임 모듈은 사용자가 데이터베이스내에 있는 데이터를 조회하거나 변경하는 것은 허용하나,

 데이터베이스의 스키마(schema)를 변경하는 것은 허용되지 않습니다.

 또한 트랜젝션 로그(Transaction logs)나 저장 프로시져(Stored procedures),

 트리거(Trigger)를 지원하지 않습니다.

 ASA(Adaptive Server Anywhere)드라이버와 런타임 엔진 그리고 기타 지원 파일들을 모두 인스톨

 하실 때는 파워빌더 인스톨 CD에 있는 "Support" 디렉토리에 있는 파일들을 설치 하십시오.

 

 파일명 설명

 ---------------------------------------------------------

 DBODBC7.DLL ASA ODBC driver

 DBBACKUP.EXE ASA backup utility

 DBCON7.DLL Connection dialog box, required if you do not provide your own dialog box and

  your end users are to create their own data sources, if they need to enter

  user IDs and passwords when connecting to the database, or if they need to

  display the Connection dialog box for any other purpose

 DBISQLC.EXE Interactive SQL utility

 DBLGEN7.DLL Language-specific string library (EN indicates the English version)

 DBLIB7.DLL Interface library

 DBODTR7.DLL ODBC translator, required if your application relies on OEM to ANSI character set
 conversion

 DBTOOL7.DLL ASA database tools

 DBUNLOAD.EXE ASA unload utility

 DBVALID.EXE ASA validation utility

 RTENG7.EXE 제한적 용도의 런타임 엔진

 DBCTRS7.DLL Performance utility

 DBSERV7.DLL Server utility

 DBWTSP7.DLL Tools support

 

 설치된 경로 > C:Program FilesSybaseSQL Anywhere 7win32

 설치될 경로 > 설치할 프로그램 폴더, System Path 또는 Path가 지정된 특정 폴더

  기타지원 파일들은 반드시 DBODBC7.DLL이 있는 디렉토리에 설치되어야 합니다.

 ODBC 정보설정> ODBC에 대한 정보를 레지스트리에 등록해야 합니다.

 

 - ODBC.INI

 프로그램을 특정 데이터소스에 ODBC를 통해 연결하려면 레지스트리 정보 중 'ODBC.INI' 항목에

 데이터소스에 대한 정의가 필요합니다.

 'ODBC.INI'항목은 'HKEY_CURRENT_USER' 또는 'HKEY_LOCAL_MACHINE'에 있는데 앞에 것은

 사용자 DSN에 등록되는 내용이며 뒤에 것은 시스템 DSN에 등록되는 것입니다.

 DSN에 대한 설정내용은 제어판의 'ODBC 데이터 원본 관리자'에서 확인할 수 있습니다.

 이 내용은 프로그램이 데이베이스를 구동할 때 제공할 정보들입니다.

 

 [HKEY_CURRENT_USERSOFTWAREODBCODBC.INIMyApp DB]

 "Driver"="C:Program FilesSybaseSQL Anywhere 7win32dbodbc7.dll"

 "Start"="c:program filessybaseSQL Anywhere 7win32rteng7.exe -c8m"

 "UID"="dba"

 "PWD"="sql"

 "Description"="Database for my application"

 "DatabaseFile"="C:Program Filesmyappsmyapp.db"

 "AutoStop"="Yes"

 

 [HKEY_CURRENT_USERSOFTWAREODBCODBC.INIODBC Data Sources]

 "MyApp DB"="Adaptive Server Anywhere 7.0"

 

 - ODBCINST.INI

 프로그램이 실행될 PC에 설치된 ODBC 드라이버에 대한 정보입니다.

 드라이버 설치정보는 제어판의 'ODBC 데이터 원본 관리자'에서 확인할 수 있습니다.

 

 [HKEY_LOCAL_MACHINESOFTWAREODBCODBCINST.INIODBC Drivers]

 "Adaptive Server Anywhere 7.0"="Installed"

 "PB Merant OEM 3.60 32-BIT Sybase"="Installed"

 

 [HKEY_LOCAL_MACHINESOFTWAREODBCODBCINST.INIAdaptive Server Anywhere 7.0]

 "Driver"="c:program filessybaseSQL Anywhere 7win32dbodbc7.dll"

 "Setup"="c:program filessybaseSQL Anywhere 7win32dbodbc7.dll"
 
 질문)

 "kernel32.dll" 에 포함되어 있는 CreatFile,WriteFile,CloseHandle 함수를 쓸려고 하는데

 파워빌더 Global External Function 에서 어떻게 변수들을 정의하고 값을 정의 하는지 알고 싶어서요.

 MSDN 사이트 들어가봐도 약간 찾기가 힘드네요..그럼 수거하세요.
Posted by SB패밀리

사진, 동영상, 작업 데이터, 중요한 데이터는 MS SyncToy로 간단히 설정해서 백업받거나 동기화할 수 있다.


출처 : http://technet.microsoft.com/ko-kr/magazine/2007.03.utilityspotlight.aspx


SyncToy
Jay Munro

이 기사의 코드 다운로드: SynctToy (971KB)

IT 전문가, 네트워크 관리자 및 기술 지원 부서 직원에게 있어서 가장 골치 아플 때는 백업도 마련해 두지 않은 상태에서 컴퓨터에 오류가 발생한 사용자로부터 지원 요청을 받을 때입니다. 컴퓨터에 대해 잘 안다는 사람들도 작업을 로컬뿐만 아니라 네트워크에 저장하는 습관을 기르는 것이 쉽지 않을 수 있습니다. SyncToy를 사용하면 이러한 경우에 도움이 됩니다.
카메라, 컴퓨터 및 외부 드라이브 간에 디지털 사진을 동기화할 목적으로 설계된 SyncToy는 거의 모든 종류의 파일을 백업하는 데 사용할 수 있는 융통성이 뛰어나고 안정적인 도구입니다. Windows Vista™는 물론 Windows® XP 및 Windows Server® 2003에서도 실행할 수 있는 SyncToy는 로컬 드라이브, 외부 드라이브, USB 드라이브는 물론 네트워크 공유 또는 작업 그룹 공유와도 잘 작동합니다.
SyncToy는 왼쪽 및 오른쪽 디렉터리로 구성된 쌍으로 된 폴더 구조를 사용합니다. 폴더 쌍은 원하는 만큼 얼마든지 만들 수 있으며 단추를 한 번만 클릭하여 한 폴더나 모든 폴더를 동기화할 수 있습니다. 폴더 쌍을 만들려면 4단계로 구성된 마법사를 단계별로 진행하여 왼쪽 및 오른쪽 폴더의 경로를 입력하거나 붙여 넣습니다. 폴더의 위치를 찾아볼 수도 있습니다. SyncToy는 UNC 파일 이름 지정(예: \\MyServer\Joe_smith\backup\)은 물론 로컬 드라이브 매핑과 경로(E:\doc_backup)를 인식합니다. 경로를 입력한 후에는 다음 다섯 가지 작업 중 하나를 선택합니다. 이 다섯 가지 작업은 SyncToy에서 폴더를 비교할 때 수행하는 작업입니다.
Sync 두 디렉터리 모두로 새로운 파일 및 업데이트된 파일을 복사합니다. 한 폴더에서 파일 이름을 바꾸거나 파일을 삭제한 경우에는 해당 작업 내용이 다른 폴더에 복제됩니다.
Echo 왼쪽 폴더에서 오른쪽 폴더로만 새로운 파일 및 업데이트된 파일을 복사하고 삭제 및 이름 바꾸기를 수행합니다.
Subscribe 왼쪽 폴더에 파일이 이미 있는 경우에만, 업데이트된 파일을 오른쪽 폴더에서 왼쪽 폴더로 복사합니다. 왼쪽 폴더의 변경 내용은 오른쪽 폴더로 복제되지 않습니다.
Contribute 왼쪽 폴더의 새로운 파일 및 업데이트된 파일을 오른쪽 폴더로 복사합니다. 삭제된 내용은 무시합니다.
Combine 한 폴더에는 있지만 다른 폴더에는 없는 파일을 복사하여 여러 컴퓨터를 동기화된 상태로 유지합니다. 두 폴더 중 하나에서 삭제되거나 이름이 바뀐 파일은 영향을 받거나 복제되지 않습니다.
작업을 선택한 후에는 폴더 쌍의 이름을 선택합니다. 현재까지는 SyncToy에서 폴더 쌍을 한번 만든 후에는 폴더 쌍의 경로를 편집하거나 이름을 변경할 수 없으므로 잘못 만든 경우에는 폴더 쌍을 선택하고 삭제를 클릭하여 폴더 쌍을 제거한 다음 다시 만듭니다. 포함할 파일 및 하위 디렉터리를 비롯하여 덮어쓴 파일을 휴지통에 저장할지 여부 등의 옵션도 설정할 수 있습니다. 기본적으로 덮어쓴 파일은 휴지통에 저장됩니다.
Synchronizing files with SyncToy(더 크게 보려면 이미지를 클릭하십시오.)

기본 SyncToy 대화 상자의 왼쪽에는 폴더 쌍과 함께 폴더 쌍의 경로와 폴더 쌍에 설정된 옵션 및 작업이 표시됩니다. All Folder Pairs 옵션은 모든 폴더 쌍을 나열합니다. 선택한 폴더 쌍에 대해 Preview나 Run All을 수행할 수 있습니다. Preview를 선택하면 실제로 동기화가 수행되는 것과 같이 일련의 동작이 일어나지만 실제로는 어떤 것도 변경되지 않습니다. 무인 동기화를 예약하려는 경우에는 이러한 미리 보기 기능이 상당히 유용합니다. 미리 보기를 수행하면 어떤 작업이 수행될지를 보여 주는 보고서가 표시됩니다. 보고서의 내용에 아무 문제가 없으면 Run을 클릭합니다.
예약 기능은 기본으로 제공되지 않습니다. 하지만 도움말 파일에서 Windows Vista와 Windows XP의 스케줄러를 사용하여 작업을 예약하는 단계를 볼 수 있습니다. 관련 지식이 없는 사용자의 경우 작업 예약을 설정하는 데 도움이 필요할 수도 있습니다. 하지만 한 번만 설정해 두면 폴더 쌍의 변경 내용, 작업 및 옵션은 SyncToy 자체에서 수행되므로 걱정할 필요가 없습니다.
모든 Power Toy와 마찬가지로 SyncToy도 일반적으로 제공되는 소프트웨어와 동일한 표준에 따라 작성되기는 했지만 Microsoft에서 별도로 지원하지는 않습니다. 도움이 필요하면 커뮤니티 포럼과 설명서를 참조하십시오. 모든 것을 직접 해결해야 합니다. 도움말 파일은 모든 수준의 사용자에 맞게 작성되었으며 관련 기능을 매우 자세하게 다룹니다. UI는 처음 보면 기본 기능을 금방 이해할 수 있을 정도로 직관적입니다.
이제 SyncToy를 다운로드하여 사용자에게 파일을 백업하는 방법을 보여 주십시오. 그러면 한밤중에 지원 요청을 받는 일 없이 숙면을 취할 수 있을 것입니다.
Posted by SB패밀리
2010.02.02
출처: ZDNetKorea

빌게이츠는 리눅스 기반 서버로 자기 웹사이트를 서비스하고 있다.

 '더 게이츠 노츠'는 빌 게이츠 전 마이크로소프트(MS) 회장이 은퇴한 뒤 개설한 개인 홈페이지이자 블로그다. 사이트 상단에는 얼마 전 그가 친구등록수 25만명을 돌파한 트위터 계정도 보여주고 있다. 
 

서버 운영체제(OS)로 리눅스를 사용하는 것은 드문 일이 아니다. 물론 그가 마이크로소프트(MS) 창립자라는 사실 때문에 아이러니할 수도 있다. 서버OS 시장에서 MS는 리눅스 진영에 큰 경쟁자였으니. 테크크런치는 지난달 30일(현지시간) "이건 회의장에서 맥북을 사용하는 게이츠 전 MS 회장이나 스티브 발머 현 MS 최고경영자(CEO)를 보는 것과 맞먹는 사건일 수도 있다"고 호들갑을 떨었다.

이날 테크크런치는 "빌게이츠가 새로 만든 웹사이트는 정말 리눅스에서 돌아가는지" 확인하려고 영국 SW 및 인터넷 조사업체 넷크래프트 사이트에서 게이츠노츠 사이트에 관한 정보를 찾았다. 넷크래프트는 인터넷 사이트들로부터 공인 IP주소, 사용중인 서버 운영체제(OS)와 그 안에 돌아가는 웹서버 등 시스템 정보를 보여준다. 
 

사용자가 요청한 웹사이트 정보를 상품이라고 하면 서버OS는 매장이다. 빌게이츠 사이트 OS 정보는 즉 사용자가 요청한 데이터를 어떤 서버에서 받아오는지 보여준다. 또 웹서버 정보는 원산지에 비유할 수 있다. 사용자가 요청한 데이터를 어디서 만들었는지 보여준다. 넷크래프트 자료에 따르면, 게이츠노츠 사이트(http://www.thegatesnotes.com)는 리눅스 OS를 사용하고 웹서버 시스템이 'MS 인터넷 인포메이션 서비스(IIS) 7.0'인 서버에서 운영된다. 다시말해 리눅스 OS 서버에서 IIS 7.0 웹서버에서 만든 데이터를 받아왔다는 얘기다.

그런데 리눅스 환경에서는 IIS를 못돌린다. IIS는 MS 윈도 OS에서만 돌아가는 웹서버다.

넷크래프트 자료가 틀린건 아니다.

 테크크런치에 따르면 빌게이츠는 웹사이트 운영을 위해 '캐시' 서버를 쓴다. 캐시서버란 원본 서버까지 가지 않고 자료를 찾아갈 수 있도록 미리 복제(캐시) 데이터를 보관해둔 서버를 가리킨다.

 캐시서버를 여러 곳에 두면 사용자들이 자료를 요청한 신호들이 멀리 돌아다니지 않고, 여러 캐시서버에 나뉘어 찾아가게 된다. 도시 사람들이 지역 특산품을 원산지까지 찾아가지 않고 각 지역 매장에서 구입하듯이 네트워크 트래픽과 서버 부담이 분산된다. 많은 부하를 감당하기 위해 서버와 네트워크 장비에 투자할 부담이 줄어드니 사이트 운영측은 관리비용을 줄일 수 있다. 캐시서버 사업자에게 절약한 관리비용보다 적은 대가를 주면 남는 장사다.

 아카마이 테크놀로지라는 회사가 이런 사업모델을 갖고있다. 캐시서버를 대규모로 깔아놓고 사람이 많이 몰리는 인터넷사이트를 운영하는 전세계 기업들을 고객으로 삼는다. 기업들이 인프라를 투자하고 관리하는 비용보다 아카마이에게 돈을 주고 캐시서버를 빌리는게 더 싸다.

 아카마이가 원본 웹사이트와 방문자 사이에서 이를 중계해 준다. 즉 인터넷에서 게이츠노츠 사이트를 방문한 사람들은 먼저 아카마이 서버에 찾아온 것이다. 아카마이 서버는 미리 비축해놓은 자료를 보여준다. 아카마이에서 직접 하는 일이기 때문에 아카마이 리눅스 OS가 서버 운영체제로 나오는 것이다. 한편 아카마이가 비축한 데이터에 원본 웹서버 정보가 들어있다. 웹서버 정보를 요청하면 원본 자료를 가져왔던 게이츠노츠 사이트에 대한 웹서버를 보여준다. 게이츠노츠 사이트에 실제 운영중인 서버는 IIS로 웹서비스를 운영하기 때문이다.

 전에 비슷한 일이 있었다. 지난 2003년 8월쯤 MS가 리눅스 서버를 사용해 MS 웹사이트(microsoft.com)를 운영한다고 알려졌다. 당시 MS는 자사 웹사이트에 아카마이 캐시서버를 썼다. 지금은 서버를 확충해 자체 서버를 운영하고 있다. 지금 넷크래프트에서 MS 웹사이트 정보를 열어보면 '윈도 서버 2003' OS와 'IIS 6.0' 웹서버를 사용한다고 나온다.

 MS가 IIS를 윈도OS에서만 쓸 수 있게 해놓으니 이런 소동도 있었던 것이다. 게이츠 전 MS 회장이 나중에 자기 개인 사이트를 '윈도 서버 2008 R2'로 바꿀지는 알 수 없지만.

 알고보면 놀랄 일도 아니다. 수타면 전문가도 인스턴트 짜장라면 끓여먹지 말란 법은 없으니까.

트랙백 주소 : http://www.zdnet.co.kr/Reply/trackback.aspx?key=20100202142318


자세한 내용은 출처 : http://www.zdnet.co.kr/Contents/2010/02/02/zdnet20100202142318.htm 에서 확인하면됩니다.

Posted by SB패밀리