posted by 써니루루 2007. 7. 17. 20:21

제곱근을 구하기 위해서는 다음과 같은 공식을 만족합니다.


x = root(a) 라면

x^2 = a 입니다.

따라서 x = a/x가 됩니다.

이에 의해서

임의의 x에 의해서 a의 제곱근 값은

x < root(a) < a/x 거나
a/x < root(a) <x 의 범위에 있게 됩니다.

따라서 a와 a/x의 평균값을 구하는

(a+b)/2 공식을 이용해 x = (x + a/x)/2 의 식을 이용하면

대부분의 수는 10번을 돌기 이전에 루트 값을 구할 수 있습니다.

간단하게 아래 C#으로 코딩해본 소스입니다.

using System;
using System.Collections.Generic;
using System.Text;

namespace Sqrt
{
    class SqrtMain
    {
        static double Sqrt(double aa, double xx)
        {
            try
            {
                for (int i = 0; i < 10; i++)
                    Console.WriteLine(xx = (xx + aa / xx) / 2);
            }
            catch(Exception e)
            {
                Console.WriteLine(e.Message);
            }
            return xx;
        }

        static void Main(string[] args)
        {
            Console.WriteLine(Sqrt(2341, 3));
        }
    }
}

posted by 써니루루 2007. 7. 16. 23:30
마방진 클래스다이어그램


오늘 1시간 시험으로 봤던 마방진 홀수 / 마방진 4의 배수 알고리즘을 이용한 마방진 소스

조금은 어렵지만 한번 분석해보시길 ^ ^

.NET 2.0 C# Console 응용 프로그램으로 제작했습니다.

사용 IDE는 Visual studio 2007 orcas


posted by 써니루루 2007. 7. 16. 17:35
11을 입력하면 1이 2개
그래서 12가 출력되고 다음은

1이 1개 2가 1개 이므로
1121이 출력되고

1이 2개 2가 1개 1이 1개 이므로
122111 이런식으로 증가되는 숫자 계산이 개미퀴즈이다.

이를 코딩으로 옮기는 작업..;
사용자 삽입 이미지


소스가 어렵지만;;

posted by 써니루루 2007. 7. 16. 16:30
클래스 다이어그램
예전에 짜본 야구게임 다시한번 짜봤다.

소스코드는 넘 쪼개놔서 압축해서 올렸으니 참고하시길..

Visual studio 2007 Orcas로 개발했으면 .NET Framework 2.0을 기준으로 제작했습니다.
posted by 써니루루 2007. 7. 10. 21:03
http://msdn.microsoft.com/msdnmag/issues/05/12/VisualStudioAddins/default.aspx

.NET 환경의 개발자 들의 필수 Add-in 들을 소개하고 있다.

나열된 것들 모두 써보진 않았지만 몇몇 플러그인들 정말 쓸모 있는 것들이 많은 것 같았다.

CodeRush나 CopySourceAsHTML, Smart Paster 등은 정말 사용하는데 유용하다는 느낌이다.

2007. 7. 9. 03:49

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

2007. 7. 8. 20:29

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

2007. 7. 8. 12:49

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

posted by 써니루루 2007. 7. 5. 13:29
어떻게 보면 메뉴링크와 통짜로 만들어진 페이지의 구조와 비슷하달까?

아마 기존에 통짜로 만드는 페이지에서 부분적인 페이지 영역을 바꾸려면

서버스크립트로 구상했어야 했다.

Ajax로 조금 좋은 방법은 아니지만

고전적인 Ajax 방식으로 페이지의 메뉴와 컨텐츠 영역을 ajax로 꾸민다면 다음과 같은 기본적인 코드로 시작해야 하지 않을까 해서 파일을 만들어 봤다.


<?xml version="1.0" encoding="utf-8"?>
<!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" lang="ko" xml:lang="ko">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>XMLHttpRequest</title>
<link rel="stylesheet" href="commcss.css" type="text/css" />
<script language="javascript" type="text/javascript">
// XMLHttpRequest 생성
var ResponseText = "";

function newXMLHttpRequest()
{
  var reqHttp;  
  if (window.ActiveXObject)
  {  // IE
       try
    {
           reqHttp = new ActiveXObject("Msxml2.XMLHTTP");
       }
    catch (e)
    {
           try
     {
               reqHttp =  new ActiveXObject("Microsoft.XMLHTTP");
           }
     catch (e1)
     {
               reqHttp =  null;
           }
       }
  }
  else if (window.XMLHttpRequest)
  {  // IE 이외
       try
    {
           reqHttp =  new XMLHttpRequest();
       }
    catch (e)
    {
           reqHttp =  null;
       }
  }
  return reqHttp;
}

// 데이터 송수신
function openSendStatus(url, method)
{
 var xmlHttp = newXMLHttpRequest();            //XMLHttpRequest 생성
 xmlHttp.open(method, url, true);     //전송방법,URL,통신방법
 xmlHttp.onreadystatechange = function()
 {    //처리상태 변경 발생
  if (xmlHttp.readyState == 4)
  {                 //서버 처리 완료
   if (xmlHttp.status == 200)
   {                //파일 수신 성공
    mainControl(xmlHttp);                   //메인 처리
   }
  }
 }
 xmlHttp.send("");                                     //서버 처리 데이터
}

//메인 처리
function mainControl(xmlHttp)
{
 ResponseText = xmlHttp.responseText;   //서버 파일
}





// 사용자 함수
function loadPage(url, targetId)
{
 openSendStatus(url,'GET');
 document.getElementById(targetId).innerHTML = ResponseText;
}
</script>
</head>

<body>
<h1>XMLHttpRequest</h1>

<div>
  <input type="button" id="btnclick" name="btnclick" value="서버 파일 수신"
            onclick="loadPage('./AjaxTest1.html','rcvData')" />
</div>
<div id="datashow">
  <div id="rcvData"></div>
</div>

</body>
</html>



버튼의 onclick과 같이 a테그나 메뉴의 이미지 테그 같은 부분에 onclick 이벤트 핸들러를 통해 loadPage를 호출하면 원하는 페이지를 우리가 원하는 div id 영역에 출력할 수 있게 된다.

대신 ajax 호출은 웹서버상에 올라가 있어야 사용할 수 있다는 단점아닌 단점이 있겠다.
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들의 공격의 대상이 될 수도있고 바이러스의 전파 경로로 활용, 보안 등으로 이용될 수 있어 이런 문제점 해결이 보완되어야 합니다.