'Program'에 해당되는 글 105건
- 2007.06.04 Microsoft WPF/E SilverLight를 한눈에 보여주는 동영상
- 2007.05.31 MFC강좌 2
- 2007.05.29 리눅스 명령어 3
- 2007.05.28 COM+ 자동 등록 Batch파일 1
- 2007.05.28 최근의 입사지원에 관한 고민...
- 2007.05.27 Gmail SMTP를 이용한 ASP.NET Form mail 웹 프로그램
- 2007.05.26 Windows Driver Foundation (WDF)
- 2007.05.23 BitTorrent 방식의 기술의 이해
- 2007.05.22 ASP.NET 에서 HTML 페이지 캐쉬 사용하지 않기
- 2007.05.22 ASP.NET SessionState Server
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] 메인프레임이 차지하는 행의 수를 찾으려면 등... |
설명 : 현재 작업 디렉토리를 절대 경로 명으로 출력한다.
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 현재의 경로 이름을 표시
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 라는 파일을 작성하였다.
아주 간단한 구문이지만 이런식으로 등록해 두니 상당히 편한듯 ^ ^
아래는 최근 보고 있는 회사 지원분야의 개발 방향이다.
WEB서비스 개발팀 |
| ||||||
|
위에 발췌해온 내용은 국내에서도 많이 이용하고 현재 블로그도 이용하고 있는 서비스중 하나인 회사로 국내 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관련 기술을 마음껏 써보며 배우며 내 능력을 한층 더 업그레이드 시킬 수 있고, 또한 내 능력을 마음껏 펼칠 수 있는 회사이다.
고민이 어디까지 어떤방향으로 갈지는 아직 미지수이지만 정말 고심해서 보아야 할 회사인 것 같다.
말은 상당히 거창하다 - _-;;
참고 주소는 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 connectionSmtp.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..
귀차니즘이 있으시다면...
아래 압축파일로 ;;
ASP.NET 웹페이지
출처 : 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 패밀리를 위한 차세대
다음의 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:
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.
Tip: See the video presentations from Driver DevCon and other tips & tricks at Notes from Windows Development Teams. Kernel-Mode Driver Framework (KMDF) User-Mode Driver Framework (UMDF) WDF Driver Verification Tools WDF Overview WDF Beta Program
Windows Driver Foundation Notes Articles on WDF
|
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들의 공격의 대상이 될 수도있고 바이러스의 전파 경로로 활용, 보안 등으로 이용될 수 있어 이런 문제점 해결이 보완되어야 합니다.
Response.Cache.SetExpires(DateTime.Now.AddSeconds(0));
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetValidUntilExpires(true);
Response.Cache.SetNoServerCaching();
브라우져의 페이지가 자주 바뀌는 페이지는 브라우져 캐쉬를 무효화 해야할 경우가 생긴다.
이런 때에는 Page_Load 부분에 위와 같은 구문을 넣어보자..
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.