posted by 써니루루 2007. 6. 4. 11:48


MS WPF/E의 디자이너와 프로그래머의 사이를 더욱 가깝게하는 기술 SilverLight

그를 통한 사용자의 경험 향상을 한눈에 느낄 수 있도록 잘 만들어진 무비네요.

무비를 보면서 WPF를 생각하니 참 감탄만 나옵니다.


참고 http://www.telerik.com/demos/aspnet/silverlight/Cube/Examples/RoomDesigner/DefaultCS.aspx
posted by 권오성의 Biomedical Engineering 2007. 5. 31. 19:06
 MFC의 개념
강좌[1] MFC란?
강좌[2] MFC의 역사
강좌[3] AppWizard, AppStudio, ClassWizard

 MFC 강좌
[1] MFC 기초 [2] AppWizard
[3] CWinApp [4] CMainFrame
[5] CDocument [6] CView
[7] 기본 프로그래밍 [8] ClassWizard
[9] 평면 툴바 클래스 [10] 평면 버튼 클래스
[11] 컬러 선택 콤보박스 [12] 이미지가 삽입된 메뉴
[13] Static 컨트롤 [14] 원형 버튼 만들기
[15] 확장 Static 컨트롤(Label)      

 MFC TIP 1
[1] WM_USER 메시지 [2] Window의 위치, 크기, 모양 설정
[3] Event Dialog Box [4] Class Wizard의 중요한 Tip
[5] IDE에서 생성되는 파일 [6] 윈도 생성 순서
[7] 윈도우 소멸순서

 MFC TIP 2
강좌[1] splitter윈도우크기를 고정하려면
강좌[2] 다이얼로그 폰트를 변경하려면
강좌[3] MDI 프로그램 시작 시 차일드 윈도우를 띄우지 않으려면
강좌[4] 툴바 숨기기/보이기 옵션 주기 등...
강좌[5] 클라이언트 영역을 클릭해 윈도우를 이동하려면
강좌[6] 트리 컨트롤을 이용한 애플리케이션 만들기 등...
강좌[7] 다이얼로그박스에 툴팁을 추가하려면
강좌[8] 도큐먼트 없는 애플리케이션 만들기 등...
강좌[9] 애플리케이션의 이전 위치를 보존하려면
강좌[10] 프로그램 시작시 About박스를 표시하려면 등...
강좌[11] 압력 컨트롤에서 허용하는 문자를 제한하려면
강좌[12] 캡션 외에 다른 곳을 클릭해 윈도우를 이동하려면
강좌[13] 대화상자에 비트맵 올리기 등...
강좌[14] 리스트박스 깜박임 멈추기 등...
강좌[15] 이탤릭체 텍스트를 출력하려면 등...
강좌[16] CString 타입의 SQL 문장을 인자로 넘기려면 등...
강좌[17] MDI프로그램 시작시 뜨는 도큐먼트 없애기 등...
강좌[18] 다이얼로그에 프린트 기능을 넣으려면
강좌[19] 체크 리스트박스를 템플릿에 올리기 등...
강좌[20] 메인프레임이 차지하는 행의 수를 찾으려면 등...

출처 : Tong - yjh811220님의 [ MFC ]통

posted by 권오성의 Biomedical Engineering 2007. 5. 29. 20:29
pwd

설명 : 현재 작업 디렉토리를 절대 경로 명으로 출력한다.

ls [옵션] [파일명]

설명 : 윈도우 도스창의 'dir' 명령과 같은 명령으로, 현재 디렉토리 내의 파일과 디렉토리에 대한 정보를 출력해준다. [옵션]에는 -로 시작하여 아래와 같은 옵션을 지정할 수 있으며 두 개 이상의 옵션을 동시에 지정할 수 있다. [파일명]에는 파일명이나 디렉토리명을 지정할 수 있다.

옵션

-a 디렉토리 내의 모든파일(.으로 시작되는 파일 포함)을 출력
-i 파일의 아이노드(inode)번호를 출력
-h 파일의 크기를 쉬운 단위로 표시(k: 킬로바이트, m: 메가바이트)
-l 파일의 다양한 정보를 함께 출력(소유자 정보, 권한 정보, 크기, 날짜)
-m 파일을 쉼표로 구분하여 가로로 출력
-s kb 단위의파일크기를 출력
-t 파일을 최근에 생성된 시간순으로 출력
-F 파일의 형태와 함께 출력한다('*' : tlfgodvkdlf, '@' : 심볼릭링크, '/' : 디렉토리)
-R 서브 디렉토리의 내용을 포함하여 출력(즉 하위 디렉토리 내용을 모두 출력)
-S 파일을 크기순으로 출력
--help 도움말 출력

cd [디렉토리명]

설명 : cd(change directory) 작업 디렉토리를 바꾼다.

옵션

cd [엔터] 홈 디렉토리로 이동
cd ~ 또는 cd ~/ 홈 디렉토리로 이동
cd ~userid userid의 홈 디렉토리로 이동
cd ~/path/path2 홈 디렉토리 아래 path/paht2로 이동
cd - 바로 앞에 작업한 디렉토리로 이동
cd directory 지정한 directory로 옮겨진다
cd / root directory로 옮겨진다.
cd .. 현재 작업 directory의 parent directory로 옮겨진다.

작업하고 있는 경로를 기억시킨 뒤 나주에 다시 그 경로로 돌아오려면, 'pushd /겨로/'(현재 경로 기억 예 : pushd .) 하여 경로를 기억시킨 뒤 popd라는 명령을 주면 기억한 경로로 돌아간다. 이 명령은 한 번만 쓸 수 있다.

cp [옵션] [원본파일명] [목적 파일명 / 디렉토리명]

설명 : 도스창의 'copy'명령과 같은 명령으로 하나 이상의 원본 파일을 목적 파일이나 디렉토리로 복사한다. [원본 파일명]에는 하나 이상의 파일명을 지정할 수 있고 [목적 파일명 / 디렉토리명]에는 복사될 목적 파일명이나 복사된 파일이 위치할 목적 디렉토리를 지정할 수 있다. [옵션]에는 아래와 같은 옵션을 지정할 수 있다.

옵션

-i 파일 복사시 동일 파일명이 있을시에 사용자에게 덮어 쓸 것인지를 물어봄
-f 동일파일명 발생시에도 모두 강제적으로 복사함
-p 원본 파일의 시간 및 소유 권한 보존
-r 포함된 자식 디렉토리까지 모두 복사

mkdir [옵션] [파일명]

설명 : 새로운 디렉토리를 만든다. write permission이 허용되어야만 directory를 만들 수 있다.

옵션

-p 만들고자하는 디렉토리의 상위 디렉토리가 없는 경우 상위 디렉토리까지 같이 만든다.

rmdir [옵션] [파일명]

설명 : 디렉토리를 제거하기 위한 명령어, whrite permission이 허용되어야만 directory를 제거할수 있다.

옵션

-p 제거된 디렉토리에 대한 메시지가 표시됨
-s 제거된 디렉토리에 대한 메시지가 표시되지 않음.(Default)

more [파일명]

설명 : 한 화면씩 보기. 유닉스에서 커다란 텍스트 파일을 보는 것이나 많은 수의 파일과 서브디렉토리를 포함하는 디렉토리의 리스트를 보이게 하는 것은 아주 빠른 속도로 화면이 넘어가게 한다. 이럴 경우에 more나 pg 명령을 사용하여서 한 하면씩 보이게 할 수 있다. more filename을 입력하면 filename으로 지정한 파일을 한번에 한 화면에 해당하는 양 만큼씩 보여준다. 또한 출력을 more 명령으로 파이프(redirect) 시킬 수도 있다. 예를 들면 ls -al |more 는 ls 명령의 출력을 more로 보내어서 리스팅을 한 페이지씩 보이게 한다. more를 사용해서 파일을 살펴보는 일반적인 방법은 다음과 같다.

옵션

스페이스, Ctrl-D 다음 한 화면을 보여줌
엔터 누를 때마다 화면의 아래쪽에 한 줄씩 더 보여줌
q more 정지
h 도움말
/expr expression 검색

rm [옵션] [파일명]

설명 : rm(remove) 파일(디렉토리)을 삭제한다. 삭제하고자 하는 디렉토리에 파일이나 부 디렉토리가 없어야만 삭제가 가능하다.

옵션

-f 디렉토리 안의 파일을 삭제할 때 사용자에게 확인을 요구하지 않음
-r 인수 list 에서 지정한 디렉토리 혹은 그 아래의 subdirectory를 삭제
-i whrite permission 이 없는 파일의 삭제를 위해 대화식으로 확인
-p 디렉토리 dir-name과 비어있는 부모 디렉토리를 사용자가 제거할 수 있으며, 전체 경로명이 삭제 되거나 어떤 이유로 인해 경로명의 일부가 남은것과 무관하게 표준출력에 메세지가 출력됨
-s -p 선택항목 지정시 표준오류에 출력되는 메시지를 삭제

mv [옵션] [파일명]

설명 : mv 명령은 파일의 위치를 바꾸거나 이름을 바꾸는데 사용을 한다. mv 명령은 이미 존재하는 파일을 덮어쓰기를 한다. 'mv file1 file2'라고 입력을 하는 것은 file1의 이름을 file2라고 바꾼다. 만약 file2 라는 파일이 이미 존재한다면 file1의 내용물로 교체가 된다. 파일을 한 디렉토리에서 다른 디렉토리로 옮기기 위하여서는 경로를 함께 입력하여 주면 된다. 같은 이름의 파일이 이미 존재하여서 그것을 덮어쓰기를 하지 않으려면 -i 옵션을 사용하면 된다. 한번에 여러 개의 파이을 옮길수도 있다. 마지막이 파일들을 옮겨 넣고자 하는 디렉토리이기만 하면 되는 것이다. 예를 들면 'mv profit sales.txt wrksht repotrs'라고 하면 profit sales.txt wrksht를 모두 reports 디렉토리로 이동시킨다.

옵션

-f 대상 파일이 존재할 대 새로운 파일로 대체
-i 대상파일이 있을 때 확인 후 작업
-f 파일의 이동 과정을 보여준다.

find [옵션] [파일명]

설명 : 이제는 find라는 명령어를 알아보자. find라는 명령어는 매우 융통성이 있고 강력한 명령어이다. 파일을 이름, 수정날짜, 소유주, 허가 등을 기준으로 하여 검색하게 해준다.

옵션

-name filename filename과 일치하는 파일을 찾음(*,? 또는 and가 사용될 수 있으며 이들은 따옴표 안에 표시를 하거나 백슬래시를 앞에 주고 사용함)
-print 현재의 경로 이름을 표시


posted by 써니루루 2007. 5. 28. 18:16
c:
cd C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
RegSvcs.exe C:\Inetpub\wwwroot\bin\ExmCom.dll
RegSvcs.exe C:\Inetpub\wwwroot\bin\TestNT.dll
RegSvcs.exe C:\Inetpub\wwwroot\bin\TestRT.dll


자주 COM+를 등록해서 귀차니즘을 해결하기 위해 위와 같은 형태로
ComPlusRegister.bat 라는 파일을 작성하였다.

아주 간단한 구문이지만 이런식으로 등록해 두니 상당히 편한듯 ^ ^
posted by 써니루루 2007. 5. 28. 02:46

아래는 최근 보고 있는 회사 지원분야의 개발 방향이다.




WEB서비스 개발팀
  • Web Service Development & Architect
  • 업무내용 - 당사의 웹 서비스 사이트 개발 및 운영
    - 당사의 웹 서비스의 구조 설계
    - 당사의 웹 서비스의 오픈API, 공통컴포넌트 설계 및 개발
    - 사외 개발자 커뮤니티와의 교류(한국, 일본, 영어권 국가)
    필요한 스킬 - WEB프로그래밍 경험
    - 인터넷과 웹서비스와 관련한 전반적인 기술에 대한 깊은 이해(XML,XHTML,css,javascript,http 등)
    - 대용량 플랫폼에 대한 이해
    - 외국어 및 신 기술에 대한 관심, 의지, 그리고 학습능력
    - 유저 중심 사고
    - 새로운 웹 서비스 개발에 대한 깊은 관심
    기대하는 일 - 개발자 자신도 회사 밖에서도 늘 사용하는 웹 서비스를 개발하는 것
    - 오픈 소스만을 이용하여 새로운 서비스를 만들어 보는 것
    - 이 세상에 존재하지 않았던 웹서비스를 창조하여 웹 이용 패턴을 바꿔보는 것
    - 전 세계인이 사용하는 웹서비스를 만들어보는 것


    위에 발췌해온 내용은 국내에서도 많이 이용하고 현재 블로그도 이용하고 있는 서비스중 하나인 회사로 국내 web2.0 회사중 하나이다.

    이번에 알게 된 사실이지만 회사가 일본에 있는 회사이고, 위 내용만 보아도 정말 회사에서 배울점도 많고 merit가 충분해 보인다.


    - 개발자 자신도 회사 밖에서도 늘 사용하는 웹 서비스를 개발하는 것
    - 오픈 소스만을 이용하여 새로운 서비스를 만들어 보는 것
    - 이 세상에 존재하지 않았던 웹서비스를 창조하여 웹 이용 패턴을 바꿔보는 것
    - 전 세계인이 사용하는 웹서비스를 만들어보는 것

    아.....

    이 말들이 너무 멋있다 ㅠㅅㅠ



    위 요구스킬중 XML, XHTML, CSS, Javascript, HTTP 등의 웹 개발 지식은 물론 99년도부터 오랫동안 다뤄온 기술부분이라 잘 아는 부분이고, 웹프로그래밍에 관한 경험도 99년부터 php를 다뤄본점.
    또 때에 따라 잠깐이었지만 ASP와 JSP를 다뤄본 점.
    또 .NET 프로그래밍 개발에 관한 공인 인증기관에서 교육을 받았고 2002년 부터 C# 책을 보면서 여러 소스를 섭렴하였고 몇가지의 프로그램과 최근의 ASP.NET 프로젝트 등의 진행을 해온 점..
    Ajax 과 시멘틱 웹 환경과 매쉬업 기술 REST 형식의 투명한 인프라 등의 기반으로 향상된 Rich client의 UX를 제공하는 웹환경 등을 충분히 공부하였고, 웹서비스와 Open api등에도 관심이 많은 현재의 나로선 상당히 도전해보고 싶은 지원 회사이다.

    단 한가지 마음에 걸리는 점이라면 .NET 관련 회사로 첫 발을 들여놓아야 하는 현실에 놓여 있고, 얻는게 많겠지만 어떻게 보면 잃으면서 내길을 고집해서 가야할 회사이다.

    위 요구조건에 조금(?) 부족하다면 대용량의 플렛폼 환경의 프로젝트는 해본적이 없다는 점. 또 일본에 대해 개인적으로 좋아해서 고등학교부터 학교에서 배우진 않았지만 히라가나와 가타가나를 독학하는 등의 관심이 많았지만 결론적으로 제대로 일본어를 해본적이 없다는 점.

    정말 고민이 많이된다..

    배울점도 많고 원하던 web2.0관련 기술을 마음껏 써보며 배우며 내 능력을 한층 더 업그레이드 시킬 수 있고, 또한 내 능력을 마음껏 펼칠 수 있는 회사이다.

    고민이 어디까지 어떤방향으로 갈지는 아직 미지수이지만 정말 고심해서 보아야 할 회사인 것 같다.
    posted by 써니루루 2007. 5. 27. 19:29
    Gmail Form

    Gmail Form


    말은 상당히 거창하다 - _-;;

    참고 주소는 http://aspalliance.com/867 요기를 보면되며..

    사실 .NET을 해본  사람이라면 .NET에서 제공하는 SMTP메일 클라이언트를 이용해서 메일을 보내는 소스코드가 얼마나 간단히 나오는지 알 것이다.

    이 예제도 마찬가지로 상당히 짧은 코드지만 Gmail의 SMTP를 이용해보려고 삽질(?)한 노력이 보일것이다;

    하지만 결론부터 얘기하자면 실패했다는것 ㅠㅠ

    Google Mail의 기본 SMTP 포트는 465로 되어있는 것을 확인했다.

    하지만 메일이 전송되지 않길래 무슨문젤까 하고 google.com의 검색으로 외국을 긁어나가기 시작했다..

    포트를 587로 바꾸라고? -_ -;;

    바꿔서도 해봤다..

    안된다 ㅠㅠ

    누가 해결하신분은 도움을 주시길..

    물론 gmail의 smtp를 안쓰고 로컬에 있는 iis의 smtp를 이용하면 간단히 해결되는 문제지만;;

    목적이 gmail의 smtp를 훔쳐쓰는 것이기에 -ㅁ-;; ㅋㅋ

    아래는 본인이 삽질(?)한 소스코드이다~

    less..

     


    Default.aspx

    <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>Google Form Mailer</title>
    </head>
    <body>
        <form id="GMailForm" runat="server">
        <div>
       
        <table style="border-collapse:collapse;" width="400" cellpadding="5" cellspacing="0">
            <tr>
                <th colspan="2">
                Google Form mail
                </th>
            </tr>
            <tr>
                <td style="width: 150px; text-align: right">
                    E-mail to :
               
                </td>
                <td>
                    <asp:TextBox ID="txtMailTo" runat="server"></asp:TextBox></td>
            </tr>
            <tr>
                <td style="width: 150px; text-align: right">
                    Subject :</td>
                <td>
                    <asp:TextBox ID="txtSubject" runat="server"></asp:TextBox></td>
            </tr>
            <tr>
                <td style="width: 150px; text-align: right">
                    Contents :
                </td>
                <td>
                    <asp:TextBox ID="txtContents" runat="server" Rows="5" TextMode="MultiLine"></asp:TextBox></td>
            </tr>
            <tr>
                <td align="center" colspan="2">
                    <asp:Button ID="btnMailSend" runat="server" OnClick="btnMailSend_Click" Text="Send mail" /></td>
            </tr>
        </table>
       
        </div>
        </form>
    </body>
    </html>




    Default.aspx.cs

    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;

    using System.Net;
    using System.Net.Mail;

    public partial class _Default : System.Web.UI.Page
    {
        /// <summary>
        /// E-mail Message class
        /// </summary>
        private MailMessage Mail = null;

        /// <summary>
        /// Network base authentication
        /// </summary>
        private NetworkCredential AuthInfo = null;

        /// <summary>
        /// SMTP Mail Sender
        /// </summary>
        private SmtpClient Smtp = null;

        /// <summary>
        /// Email address
        /// </summary>
        private string sMailFrom = "";

        /// <summary>
        /// smtp login id
        /// </summary>
        private string sLoginID = "";

        /// <summary>
        /// smtp login password
        /// </summary>
        private string sLoginPass = "";

        /// <summary>
        /// Default Page load script
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Page_Load(object sender, EventArgs e)
        {
            sMailFrom = "sunyruru@gmail.com";
            sLoginID = "sunyruru";
            sLoginPass = "****";
        }

        /// <summary>
        /// Mail Send button event script
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnMailSend_Click(object sender, EventArgs e)
        {
            // Email message set
            Mail = new MailMessage(sMailFrom, txtMailTo.Text.Trim());
            Mail.Subject = txtSubject.Text;
            Mail.Body = txtContents.Text;


            // Authentication to SMTP Service
            AuthInfo = new NetworkCredential(sLoginID.Trim() + "@gmail.com", sLoginPass.Trim());

            // SMTP Sender
            Smtp = new SmtpClient();

            try
            {
                Smtp.Host = "smtp.google.com"; // SMTP Host
                Smtp.Port = 465; // SMTP Port
                Smtp.UseDefaultCredentials = false;
                Smtp.Credentials = AuthInfo;
                Smtp.EnableSsl = true; // Use SSL Secure connection

                Smtp.Send(Mail); // Send email message
            }
            catch (System.Net.Mail.SmtpFailedRecipientsException ex) { PrintError(ex.Message); }
            catch (System.Net.Mail.SmtpException ex) { PrintError(ex.Message); }
            catch (ObjectDisposedException ex) { PrintError(ex.Message); }
            catch (InvalidOperationException ex) { PrintError(ex.Message); }
            catch (ArgumentNullException ex) { PrintError(ex.Message); }
            catch (ArgumentOutOfRangeException ex) { PrintError(ex.Message); }
            catch (ArgumentException ex) { PrintError(ex.Message); }
            catch (Exception ex) { PrintError(ex.Message); }
        }

        /// <summary>
        /// Javascript error message popup
        /// </summary>
        /// <param name="ErrorMessage"></param>
        protected void PrintError(string ErrorMessage)
        {
            Response.Write("<script>\n");
            Response.Write("alert('" + ErrorMessage + "')");
            Response.Write("</script>\n");
        }
    }



    less..


    귀차니즘이 있으시다면...

    아래 압축파일로 ;;

    RURU_test_Mail_GmailSmtp.zip

    ASP.NET 웹페이지

    posted by 써니루루 2007. 5. 26. 16:48

    출처 : http://www.microsoft.com/whdc/driver/wdf/default.mspx


    Windows Driver Foundation(WDF)


    WDF를 사용하면 OS가 아닌 디바이스 장치에 중점을 두고 개발할 수 있다.

    WDF는 몇가지 드라이버 검증 툴을 통해서 커널 모드와 사용자 모드 드라이버의 개발을 위한 프레임워크를 포함하고 있다.


    Kernel-Mode Driver Framework(KMDF)


    KMDF는 커널 모드 드라이버에 필요한 기본적인 기능을 구현하고 있다. 다음을 포함한다:


    . PnP와 전원 관리

    . I/O 큐

    . Direct memory access (DMA)

    . Windows management instrumentation (WMI)

    . Synchronization


    각 윈도우즈 버전에 적합한 프레임워크에 대부분의 소스 코드가 있기 때문에, KMDF 드라이버는 최소한의 소스 코드만을 필요로 한다. 드라이버는 다음을 지원하기 위한 코드가 있다:


    . 디바이스가 response해야하는 이벤트

    . 디바이스에 고유한 기능


    User-Mode Driver Framework(UMDF)

    UMDF는 프로토콜 기반 디바이스 혹은 시리얼 버스 기반 디바이스를 지원하는 user-mode 드라이버의 작성을 지원한다. 이런 드라이버는 커널 모드 드라이버와 동일한 타입의 I/O를 처리하고 커널 모드 드라이버와 동일하게 INF 파일로 설치된다.


    사용자 모드에서 작동하는 드라이버는 사용자 주소 영역에 대한 접근 권한만을 가진다 따라서 커널 모드 드라이버 보다 시스템 보안과 안정성에 대한 낮은 리스크를 가진다. 사용자 모드 드라이버는 커멀 모드 드라이버와 거의 동일한 성능을 가지며 여러가지의 장점이 있다:


    . 쉬운 드라이버 환경

    . 높은 안정성과 보안성

    . Win32 API 사용

    . 사용자 모드 디버거를 이용한 디버깅

    . C++ 프로그래밍

    . 빠른 코드 생성


    사용자 모드 드라이버가 할 수 없는 일:

    . 인터럽트 처리

    . 하드웨어 직접 접근

    . 정확한 타이밍 루프 사용

    . 커널 모드 리소스 사용


    Architecture of the Windows Driver Foundation


    이 글의 목적은 윈도우즈 OS 패밀리를 위한 차세대 드라이버 모델인 WDF에 대한 정보를 제공하는 것이다. WDF에 대한 전체적인 아키텍처를 기술하고 드라이버 개발 시간을 줄이고, 시스템 안정성을 높이고 드라이버 진단성과 서비스 능력을 개선할 수 있는 방법을 설명한다. WDF에 생소한 기술 관리자, 아키텍처, 드라이버 설계자를 위해 작성되었다.


    다음의 OS에 적용된다:

    MS Vista

    MS Server 2003

    MS XP

    MS 2000


    이 문서에 있는 정보:

    . WDF의 디자인 목적

    . WDF에서의 디바이스와 드라이버 지원

    . WDF 드라이버 모델

    . WDF 객체 모델

    . PnP와 전원 관리 지원

    . I/O 모델

    . 드라이버 프레임워크

    . 개발과 테스팅 툴

    . serviceability and versioning

    . 다음 단계



    Windows Driver Foundation (WDF)

    WDF defines a single driver model that supports the creation of object-oriented, event-driven drivers for either kernel mode or user mode. It simplifies driver development and maintenance by:

    Implementing common features.

    Providing intelligent defaults.

    Managing most interactions with the operating system.

    With WDF, driver writers can focus on their device hardware, rather than on the operating system.

    WDF includes frameworks for the development of kernel-mode and user-mode drivers along with several driver verification tools.

    Download the KMDF. KMDF 1.1 is now available for download. More

    Tip: See the video presentations from Driver DevCon and other tips & tricks at Notes from Windows Development Teams.

    Kernel-Mode Driver Framework (KMDF)
    KMDF implements the fundamental features required for kernel-mode drivers.

    User-Mode Driver Framework (UMDF)
    UMDF supports the development of user-mode drivers for device classes such as cameras and portable music players that are based on protocol or serial buses.

    WDF Driver Verification Tools
    WDF includes a built-in verifier along with two rule-based static verification tools: PREfast and Static Driver Verifier (SDV).

    WDF Overview

    White Paper Architecture of the Windows Driver Foundation
    White Paper FAQ: Questions from Driver Developers about Windows Driver Foundation
    White Paper Introduction to the Windows Driver Foundation
    White Paper Windows Driver Foundation Facts
    Microsoft Powerpoint (.ppt) Windows Driver Foundation: An Introduction [WinHEC 2005; 689 KB]

    WDF Beta Program

    White Paper Windows Driver Foundation Beta Program Invitation

    Windows Driver Foundation Notes

    Microsoft Powerpoint (.ppt) How to Develop a KMDF Driver [517 KB]
    Microsoft Powerpoint (.ppt) How to Develop a UMDF Driver [1.4 MB]
    Microsoft Powerpoint (.ppt) How to Port WDM Drivers to KMDF [749 KB]
    Microsoft Powerpoint (.ppt) Introduction to User-Mode Driver Framework [536 KB]
    Windows Multimedia How to Develop a KMDF Driver: Part 2
    Windows Multimedia How to Port a WDM Driver to the KMDF: Part 1
    Windows Multimedia How to Port a WDM Driver to the KMDF: Part 2

    Articles on WDF

    This link leaves the Microsoft.com site Defensive Drivers - DevSource by Ziff Davis Media
    This link leaves the Microsoft.com site NT Insider Interviews Jake Oshins on WDF PnP/Power (subscription required)

    posted by 써니루루 2007. 5. 23. 15:05
    출처 : http://www.mimul.com/pebble/default/2007/05/20/1179671460000.html

    BitTorrent의 구조는 아래 그림과 같다.


    사용자 삽입 이미지



    먼저 BitTorrent는 File Server에 호스팅된 torrent파일과 Tracker, Peer들로 구성된다.

    우리가 가장 궁금한 것은 BittTorrent 방식에서의 다운로드는 어떻게 되는가인데..

    이 부분은 원본 사이트의 내용을 참조하도록 한다.


    특정 이용자가 올린 파일은 BitTorrent 프로토콜의 운영에 동의한 파일이라는 가정하에 아래 시나리오를 정리했습니다.
    • 클라이언트인 Leech가 원하는 파일을 얻기 위해서 Tracker에 Peer-List의 정보를 요청하여 정보를 받습니다.
    • Leech는 클라이언트 정보를 파악하여 네트워크나 서버 정보가 좋은 클라이언트에게 Hash정보를 가지고 특정 파일 조각(pieces)을 요청한다.
    • Seed는 특정 파일 조각(pieces)을 Leech에게 제공한다.
    • Leech는 파일의 조각의 해시값을 비교하여 파일을 조합한다. 이때 Leech는 다운로드 받을 전체 파일의 사이즈를 미리 할당해 놓은 상태입니다.
    • Seed가 자신의 서버 부하 상태가 나빠질 경우 uncoke를 통해서 Tracker와 최신의 상태 정보를 공유하게 됩니다.

    BitTorrent의 제한점

    • 파일 다운 받을 수 있는 Peer정보들을 가지고 있고 수시로 Peer정보를 최상의 상태로 만들어야 하기에 Tracker의 성능이 좋아야 한다. Tracker가 다운되면 BitTorrent 시스템은 불가능하게 된다.
    • 파일 조각의 사이징에 따라 다운로드 성능에 영향을 많이 받는다.
    • 작은 파일들의 전송시에 네트웍 오버헤드가 높아진다.
    • Peer들에게 Attack의 대상이 되기도 한다.

    보완 되어야 할 점

    고객들의 자원을 활용하므로 인해 네트워크에 대한 비용 전가에 대한 혜택을 제공해야 합니다. 그리고 Peer들의 공격의 대상이 될 수도있고 바이러스의 전파 경로로 활용, 보안 등으로 이용될 수 있어 이런 문제점 해결이 보완되어야 합니다.

    posted by 써니루루 2007. 5. 22. 23:17
            Response.Cache.SetExpires(DateTime.Now.AddSeconds(0));
            Response.Cache.SetCacheability(HttpCacheability.NoCache);
            Response.Cache.SetValidUntilExpires(true);
            Response.Cache.SetNoServerCaching();

    브라우져의 페이지가 자주 바뀌는 페이지는 브라우져 캐쉬를 무효화 해야할 경우가 생긴다.

    이런 때에는 Page_Load 부분에 위와 같은 구문을 넣어보자..

    posted by 써니루루 2007. 5. 22. 17:04

    Out-of-process Mode

    Included with the .NET SDK is a Windows® NT service: ASPState. This Windows service is what ASP.NET uses for out-of-process session state management. To use this state manager, you first need to start the service. To start the service, open a command prompt and type:

    net start aspstate
    

    What you'll see is:

    Figure 1. Starting the Windows NT service ASPState at the command prompt

    At this point, the Windows NT Service ASPState has started and is available to ASP.NET. Next, we need to configure ASP.NET to take advantage of this service. To do this we need to configure config.web:

    <configuration>
      <sessionstate 
          mode="stateserver"
          cookieless="false" 
          timeout="20" 
          sqlconnectionstring="data source=127.0.0.1;user id=<user id>;password=<password>"
          server="127.0.0.1" 
          port="42424" 
      />
    </configuration>
    

    We changed only from inproc mode to stateserver mode. This setting tells ASP.NET to look for the ASP state service on the server specified in the server and port settings—in this case, the local server.

    We can now call SessionState.aspx, set a session state value, stop and start the IIS process (iisreset), and continue to have access to the values for our current state.