달력

4

« 2024/4 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

http://suite.tistory.com/ 2008 05  fs


c# 공부겸 정수를 나눗셈하여 나오는 무한 소수점 표현을 float 형이나 double 으로 쓰면 표현 한계가 있어

스트링으로 넣어 보았다~~



using System;
using System.Text;

namespace study_cs1

{
 /// <summary>
 /// Class1에 대한 요약 설명입니다.
 /// </summary>
 

 class Class1
 {
  private const int MAX_LEN=10000;
  //static int num1=22;
  //static int num2=7;
  static int num1=31;
  static int num2=97;

  static StringBuilder remainder=new StringBuilder(MAX_LEN);

  /// <summary>
  /// 해당 응용 프로그램의 주 진입점입니다.
  /// </summary>
  [STAThread]
  static void Main(string[] args)
  {

   
   for(int i=0 ; i < MAX_LEN ; i++)
   {
    int result=num1/num2;
    remainder.Append(result);

    num1=num1%num2 * 10;

    if( num1 == 0) break;
    if(i == 0 ) remainder.Append(".");
   
   
   }
   
   Console.Write(remainder.ToString() + "\n");
   //
   // TODO: 여기에 응용 프로그램을 시작하는 코드를 추가합니다.
   //


  }
 }
}


실행 결과 ~~~~~~~~~~~~~

사용자 삽입 이미지

~~~~~~~~~~~~~~~~``



답이 맞나? ~.~

 

:
Posted by mastar

http://suite.tistory.com/ fs  2008.04 실전 활용 못했음~


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 common.cs source

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



// 2008 04 fs 그냥 c# 공부

using System;
using System.Collections;
using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Xml;
using System.Net; //http 관련 라이브러리
using System.IO; //stream 관련 라이브러리


public class FS_XML : System.Web.UI.Page {

    string SERVER_URL="http://localhost:6973/aa.xml?base64=N&";
    XmlDocument xmldoc= new XmlDocument();

    public ArrayList RESULT_SRCH=new ArrayList();
    public ArrayList m_URL=new ArrayList();
    public string call_url="";
 
   
    //결과 정보 변수
    public string section_name;
    public string usrspec;
    public string idxname;
    public string qryflag;
    public string srtflag;
    public string totcnt;
    public string maxcnt;
    public string outcnt;
    public string pagenum;
    public string elapse;
 
 
    public void GetXmlData(){

  int start_child=0;

        foreach ( string value in m_URL ){
            call_url+=value;
        }
        //Response.Write(call_url);

        xmldoc.Load(call_url);

        // 헤더 정보 담아오기
        section_name=xmldoc.DocumentElement.ChildNodes[0].Attributes[0].InnerText;
        usrspec=xmldoc.DocumentElement.ChildNodes[0].ChildNodes[start_child++].InnerText;
        idxname=xmldoc.DocumentElement.ChildNodes[0].ChildNodes[start_child++].InnerText;
        qryflag=xmldoc.DocumentElement.ChildNodes[0].ChildNodes[start_child++].InnerText;
        srtflag=xmldoc.DocumentElement.ChildNodes[0].ChildNodes[start_child++].InnerText;
        totcnt=xmldoc.DocumentElement.ChildNodes[0].ChildNodes[start_child++].InnerText;
        maxcnt=xmldoc.DocumentElement.ChildNodes[0].ChildNodes[start_child++].InnerText;
        outcnt=xmldoc.DocumentElement.ChildNodes[0].ChildNodes[start_child++].InnerText;
        pagenum=xmldoc.DocumentElement.ChildNodes[0].ChildNodes[start_child++].InnerText;
        elapse=xmldoc.DocumentElement.ChildNodes[0].ChildNodes[start_child++].InnerText;
 
        //결과 데이터 담아오기
        //for #1
        for(int i=0; i < Int32.Parse(outcnt); i++){
     
            XmlNode node=xmldoc.DocumentElement.ChildNodes[0].ChildNodes[ i+start_child ];
            Hashtable ht_temp=new Hashtable();

            for(int j=0 ; j < node.ChildNodes.Count; j++){
    
                ht_temp.Add(node.ChildNodes[j].Attributes[0].InnerText,node.ChildNodes[j].InnerText);
        
                //Response.Write(node.ChildNodes[j].Attributes[0].InnerText);
                //Response.Write(node.ChildNodes[j].InnerText + "<br>");
                //System.Environment.Exit(0);

            }
            // Response.Write( ht_temp["^titl:"]+ "<br>");
      
            RESULT_SRCH.Add(ht_temp);
        }//end of for #1
   
    }//end of GetResults()
 
    // 호출 파라미터 할당
    public void SetQRY(string p_name,string p_value){
            m_URL.Add(p_name + "=" + p_value + "&");
 }

    protected void Page_Load(object sender, EventArgs e) {
       
        if( ! IsPostBack ){
           m_URL.Add(SERVER_URL);
        }
    }
   
       
 }// end of  FS_XML



 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

xml_sample.aspx  샘플 페이지

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


<%@ Page Language="C#" Src="common.cs" Inherits="FS_XML"  %>

<HTML>
<META http-equiv="Content-Type" content="text/html; charset=euc-kr" />
<HEAD>
<TITLE> XML ASPX - C# 파서 샘플 페이지</TITLE>

</HEAD>

<BODY>
<P>

<%

    SetQRY("qry","*");
    SetQRY("out","10");

    // xml 데이터 파싱해서 RESULT_SRCH에 담아온다
    GetXmlData();

     Response.Write("<h2> ASPX(C#) XML 파서 샘플 페이지 </h2>");
     Response.Write("<xmp> <XML 호출 URL> :" +  call_url + "</xmp>");
 %>

 <br>
 &nbsp;&nbsp;- 전체건수: <%= totcnt %> <br>
 &nbsp;&nbsp;- 요청건수(outmax값): <%= maxcnt %> <br>
 &nbsp;&nbsp;- 출력건수: <%= outcnt %> <br>
 &nbsp;&nbsp;- 출력페이지번호: <%= pagenum %> <br> <br>


<%

    // 결과 출력
    foreach ( Hashtable ht_obj in RESULT_SRCH ){
        Response.Write( ht_obj["^titl:"]+ "<br>");
    }
 
%>

</BODY>

</HTML>

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

이제 JSP버전만 남았군~~~


 

 

:
Posted by mastar

http://suite.tistory.com/

 2008 04 fs


xml 파서를 로드 할때 나는 에러가 있다~

"서버에서 HTTP 프로토콜 위반이 커밋되었습니다.. Section=ResponseHeader Detail=CR 뒤에는 LF가 와야 합니다. "

http 서버 데몬이 표준이 맞지 않아서 그런갑다~~


해결책 1 : 아파치와 같은 표준을 가진 데몬으로 웹서비스를 한다.

              => 파싱 에러가 나는 xml 파일을  아파치에다가 올려서 하면 잘나온다~~

해결책 2 : 구글링 해보니 httpWebRequest 속성중에useUnsafeHeaderParsing값을 true로 하라~~

              =>   웹루트 : web.config


<configuration>
 <system.net>
 <settings>
 <httpWebRequest useUnsafeHeaderParsing="true" />
 </settings>
 </system.net>
 </configuration>

추가 2009 02
해결책 3  : LF만 있다면 CR을 추가해준다~~

printf ("Content-type: text/html; charset=utf-8\n\n");

=> printf ("Content-type: text/html; charset=utf-8\r\n\r\n");

 

:
Posted by mastar

http://suite.tistory.com/ fs  2007.05 에 쓰던거


common.asp  souce

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

<%
 
 Class SrchInfo
 
  Private Sub Class_Initialize() ' <- 생성자
   Dim SERVER_URL
   SERVER_URL="http://localhost:6973/test.cgi"
   
   Redim Preserve m_ParamList(1)
   m_ParamList(uBound(m_ParamList))=SERVER_URL
  End Sub
 
  Private Sub Class_Terminate() ' <- 소멸자
  End Sub
 
  '연결 정보 변수
  Public m_URL
  Public m_ParamList()
 
  '호출 파라미터 할당
  Public Sub SetQRY(p_name,p_value)
   
   ReDim preserve m_ParamList(uBound(m_ParamList)+1)
   m_ParamList(uBound(m_ParamList))=p_name & "=" & p_value & "&"
   m_URL=Join(m_ParamList,"")
  End Sub

  '결과 정보 변수
  public head1
  public head1
  public head1
 
  public RESULT_DICT()
 
  '헤더 정보 담아오기
  public sub GetHeader(ROOT)
   
   head1=ROOT.childNodes(0).Attributes(0).text
   head2=ROOT.childNodes(0).childNodes(0).text
   head3=ROOT.childNodes(0).childNodes(1).text


  End sub
  '결과 데이터 담아오기
  public sub GetResults(ROOT)
 
   ReDim RESULT_DICT(outcnt-1)
   Dim i,DOC_ROOT,ATT_ROOT,start_child
   ' 데이터 자식로드가 시작되는 번호
   start_child=9
   
   For i=0 to outcnt-1
    'XML 문서의 doc 시작
    Dim doc_num,j
    doc_num=i+start_child
    Set DOC_ROOT=ROOT.childNodes(0).childNodes(doc_num)
    set RESULT_DICT(i)=createobject("scripting.dictionary")
   
    For j=0 To DOC_ROOT.childNodes.length-1
     Set ATT_ROOT=DOC_ROOT.childNodes(j)
     '값 할당
     RESULT_DICT(i).add ATT_ROOT.Attributes(0).text ,ATT_ROOT.text
    Next
   
   Next
   
  End sub
 
 End Class
 
%>

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

sample.asp  샘플 페이지

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


<%@ Language=VBScript %>
<% Option Explicit %>
<!--#include file="common.asp"-->
<HTML>

<META http-equiv="Content-Type" content="text/html; charset=euc-kr" />

<HEAD>

<TITLE>XML ASP 파서 샘플 페이지</TITLE>

</HEAD>

<BODY>
<P>

<%

Dim OB_SrchInfo,xmldoc

' XML DOM 객체를 생성
Set xmldoc=Server.CreateObject("Microsoft.XMLDOM")
xmldoc.async=false
xmldoc.setProperty "ServerHTTPRequest",true
'검색XML 결과를 담기위한 클래스
Set OB_SrchInfo=new SrchInfo

' 쿼리지정
OB_SrchInfo.SetQRY "qry" ,"*"

' 한페이지당 요청 건수
OB_SrchInfo.SetQRY "req_max" ,"10"
' 요청 페이지
OB_SrchInfo.SetQRY "page" ,"1"

' xml 파서 시작
xmldoc.Load OB_SrchInfo.m_URL

Response.Write "<h2> XML 파서 샘플 페이지 </h2>"
Response.Write "<xmp> <XML 호출 URL> :" &  OB_SrchInfo.m_URL & "</xmp>"
 

Dim ROOT
Set ROOT = xmldoc.documentElement

' 검색 XML 에서 헤더정보 담기
OB_SrchInfo.GetHeader ROOT

if(OB_SrchInfo.outcnt=0) then
 Response.Write OB_SrchInfo.m_URL & "<br>"
 Response.Write "<br><font red=color>검색결과 없음!</font>"
 Response.End
end if

' 검색 XML 에서 결과 데이터 담기
OB_SrchInfo.GetResults ROOT


%>
 
<검색 결과 헤더 정보> : <br>
 &nbsp;&nbsp;- 전체건수: <%= OB_SrchInfo.totcnt %> <br>
 &nbsp;&nbsp;- 요청건수(outmax값): <%= OB_SrchInfo.maxcnt %> <br>
 &nbsp;&nbsp;- 출력건수: <%= OB_SrchInfo.outcnt %> <br>
 &nbsp;&nbsp;- 출력페이지번호: <%= OB_SrchInfo.pagenum %> <br>

<p>
<검색 결과 데이터> :

<%

Response.Write "<p>"

Dim i

For i=0 to OB_SrchInfo.outcnt-1
 
 Response.Write "번호:" & i & "<br>"
 'OB_SrchInfo.RESULT_DICT(i).item("XML 결과의 필드이름을 입력하여 뽑는다")
 Response.Write "^DocId:" & OB_SrchInfo.RESULT_DICT(i).item("^DocId:") & "<br>"
 Response.Write "제목:" & OB_SrchInfo.RESULT_DICT(i).item("^DocTitle:") & "<br>"
 Response.Write "날짜:" & OB_SrchInfo.RESULT_DICT(i).item("^StartDate:") & "<br>"


 Response.Write "<p>"

Next

Set ROOT = nothing
Set OB_SrchInfo = nothing
Set xmldoc = nothing
%>
</BODY>

</HTML>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

이걸 봐서는 ASP 말고 자바 스크립트만 가지고도 할 수 있을 것 같기도하다~~~

 

:
Posted by mastar