posted by 권오성의 Biomedical Engineering 2007. 5. 29. 21:41
텔넷으로 접속하였다는 가정하에 설명입니다.
FTP 계정 아이디가 msn이고 패스워드가 777이며, 백업할 DB의 이름이
source 인 경우입니다.

① 우선 pwd 명령으로 절대 경로를 알아 놓습니다.
② 절대경로가 아래에 나타납니다.
③ mysqldump -u아이디 -p패스워드 DB명 > /절대경로/DB명.sql
ex) mysqldump -uman -p7777 source > /public_html/loveyou.sql

Mysql DB 복구하기
mysql -u아이디 -p패스워드 db > public_html/loveyou.sql
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 권오성의 Biomedical Engineering 2007. 5. 29. 15:43

닷넷은 컴파일을 해도 기계어 바이너리 실행파일을 만들지 않는다. 대신 중간언어로 표현되는 가상 어셈블리어를 만들고 이를 런타임에 실행하는 방법을 사용한다. 형태적으로 보면 인터프리팅과 컴파일링의 중간쯤에 해당한다. 그러다 보니 당연히 기계어로 직접 컴파일하는 기존의 방법에 비해서 속도가 떨어지게 된다. 그렇다면 도데체 얼마나 떨어지게 되는 것일까?

모든 프로그램에 대하여 일반적으로 얼마나 속도저하가 있다고 말하기는 다소 어려운 부분이있다. 그래서 속도게 가장 민감한 3D게임의 예가가 있다. Vertigo Software는 닷넷의 속도 비교와 기존 C코드를 닷넷으로 포팅하는 예를 QuakeII를 통해서 보여주었다.

이 프로젝트에서는 현재 GPL로 되어 있는 QuakeII 소스를 네이티브 C++로 포팅하고 다시 이것을 매니지드 C++(C++.NET)으로 포팅하였다. 기존 QuakeII소스는 C 코드인데 이것을 C++로 포팅하는데 4일, 다시 이것을 C++.NET으로 포팅하는 데 하루, 그위에 C++.NET으로 새로운 기능(레이더)를 추가하는데 이틀이 걸렸다고 한다.

결론적으로 QuakeII를 닷넷으로 포팅한 결과 네이티브에 비하여 15%속도 손실이 있었다고 한다. 이 수준은 매우 미미해서 테스터들은 속도저하를 전혀 실감하지 못했다고 한다. 많은 연산을 수행하는 3D엔진이 이정도이면 대부분의 일반적인 비지니스 로직은 거의 아무런 속도 손실이 없다고 봐도 과언이 아니다. 그러므로 닷넷으로 만든 어플리케이션에 대해서 속도가 저하될 것을 우려할 필요는 전혀 없다는 것이다.

오히려 기존 코드를 닷넷으로 포팅할경우 닷넷 라이브러리와 기존 라이브러리를 동시에 사용할수 있기 때문에 프로그래밍 작업이 한결 자유로워진다. 닷넷으로 포팅되면 아래와 같은 이점이 생긴다.

1. 메모리 관리를 가비지컬렉션(Garbage Collection)을 사용하거나 프로그램으로 직접 컨트롤 할 수 있다.
2. 닷넷 프레임웍을 메쏘드 사용하거나 기존 윈도우 API를 사용하거나 마음대로 선택할 수 있다.
3. 닷넷 프레임웍 클래스와 STL같은 기존 라이브러리를 동시에 사용이 가능해진다.

QuakeII 포팅에 대한 자세한 내용은 아래 링크를 참고 하기 바란다.(영문)
http://www.codeproject.com/managedcpp/Quake2.asp#xx677031xx

[펌] http://www.code99.net/tabid/791/mid/1496/newsid1496/3/Default.aspx

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. 24. 17:43
    참조 주소 : http://www.michaelflanakin.com/Articles/Comparisons/WebBasedIssueTrackers/tabid/198/Default.aspx

    웹기반으로 프로젝트등을 진행하다보면 웹기반 이슈 트래커(Web based issue trackers)를 많이 이용하게 된다.

    특히 오픈소스 개발 등을 이용하게 되면 특히 더욱 그렇다.

    위 참조 주소에서 여러 이슈 트래커들을 보던중 평가 점수순으로 정렬해서 본 결과 많이 보던 이름들이 상위에 랭크 되어 있는 것을 볼 수 있었다.

    Mantis나 Bugzilla, OTRS, Track 등은 알던 이름이고 그 외에는 생소한 것이 많았는데, .NET 기반으로 제작되어 있는 것도 있어서 참 반가웠다.

    이들을 우선 잘 활용하기 위해 이슈 트래킹의 중요성과 이를 활용하여 분석하는 지혜가 우선시 되어야 할 것 같다.

    Mantis PHP 1.0.6 GPL 1/27/2007 Yes Yes Yes Yes Yes Yes Yes Yes 10/28/2006 Yes 9
    Request Tracker Perl 3.6.3   1/27/2007 Yes Yes Yes Yes Yes   Yes Yes 12/21/2006 Yes 9
    Scarab Java 1.0b20 Tigris 1/27/2007 Yes Yes Yes Yes Yes Yes Yes Yes 7/1/2005 Yes 9
    Bugzilla Perl 2.23.3 CC 1/27/2007 No Yes Yes Yes Yes Yes Yes Yes 10/15/2006 Yes 8
    Eventum PHP 1.7.1 GPL 1/27/2007 Yes Yes Yes Yes Yes Yes Yes Yes 3/31/2006 No 8
    PloneCollector-NG Python 1.2.9 LGPL 1/27/2007 Yes   Yes Yes Yes Yes Yes Yes 12/1/2005 Yes 8
    BugTracker.NET C# 2.2.4 GPL 1/27/2007 Yes No Yes No Yes Yes Yes Yes 1/14/2007 No 7
    ITracker Java 2.4.2 LGPL 1/27/2007 Yes   Yes   Yes Yes Yes Yes 8/24/2004 Yes 7
    OTRS Perl 2.1.4 GPL 1/27/2007   Yes Yes   Yes   Yes Yes 12/14/2006 Yes 7
    Roundup Python 1.3.2 Python 1/27/2007 Yes Yes Yes   Yes   Yes Yes 3/1/2006 Yes 7
    Trac Python 0.10.3 BSD 1/27/2007     Yes Yes   Yes Yes Yes 2/1/2006 Yes 6
    phpBugTracker PHP 1.0.1 GPL 1/27/2007   Yes Yes     Yes   Yes 9/1/2005 Yes 5
    Whups PHP     1/27/2007   Yes Yes       Yes Yes   Yes 5
    Bugs PHP 1.7.2 MPL 1/28/2007   Yes     Yes Yes Yes Yes 2/6/2006 No 5
    Bug Tracker PHP 2.3 GPL 1/28/2007     Yes   Yes     Yes 1/21/2007 Yes 5
    Bug-a-Boo CGI 1.09 GPL 1/27/2007   Yes Yes   Yes       2/2/2005 Yes 4
    Flyspray PHP 0.9.9rc1   1/27/2007     Yes   Yes     Yes 1/27/2007 Yes 4
    Issue Tracker PHP 4.0.4   3/1/2006   Yes     Yes       12/1/2004 Yes 4
    SugarCRM PHP 4.0.1 MPL 3/1/2006 Yes Yes Yes           2/1/2006 Yes 4
    OpenPSA Support PHP 1.12.1 GPL 1/27/2007     Yes     Yes     1/1/2005 Yes 3
    ASP.NET Starter Kit C#/VB 1.0   1/27/2007
    Yes
     
    Yes
              11/1/2005 No 2
    EZ Ticket PHP 0.01 GPL 1/27/2007           Yes     1/30/2004 Yes 2
    Midge Python 0.5 GPL 1/27/2007     Yes           4/24/2005 Yes 2
    Zwiki Tracker Python 0.51 ZPL 3/1/2006             Yes   3/1/2006 Yes 2
    GNATS   4.1   1/27/2007                 3/6/2005 Yes 1
    Zope Issue Tracker Python 0.5.2 ZPL 1/27/2007                 12/1/2003 Yes 1
    Bug Base Java 1.0rc3 GPL 1/27/2007                 9/1/2003   0
    Bugin PHP 0.65rc1 BSD/GLPL 1/27/2007                 3/10/2004   0
    JTracker Python 1.14 ZPL 1/27/2007 No               7/31/2006 No 0
    Subissue     GPL 1/27/2007 No No No No No No No No   No 0
    Workbench PHP 0.11 GPL 1/27/2007                 4/18/2002 No 0
    Anthill Perl 1.1 GPL 1/28/2007                 12/31/2002   0



    웹 기반의 프로젝트를 진행한다면 한번쯤 위 목록중 한가지를 사용해보면 어떨까 생각한다 ^ ^
    posted by 써니루루 2007. 5. 24. 03:08
    http://www.wit.co.kr/blog/3755.php

    한번 읽어보세요~ 재밌네요 ㅋ

    단 19세 이상만 보세요  ^  ^
    (사실 19세 정돈 아닌데;;)
    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들의 공격의 대상이 될 수도있고 바이러스의 전파 경로로 활용, 보안 등으로 이용될 수 있어 이런 문제점 해결이 보완되어야 합니다.