반응형

부동소수점은 우리가 알고 있는 primitive type의 형중에서


산술연산에 있어서 각 언어마다 매번 혼돈을 일으키고 있는 요소이다.


이런 부동소숫점 연산의 문제점이 무엇인지 한번 적어보도록 하자.



(1) Javascript에서의 부동소수점 연산 오류

아래와 같은 코드가 있다고 가정하자, 출력물을 바로보도록 하자. 흠.. 에러의 원인은 나도 잘모르겠다.





위 코드의 결과화며은 아래와 같다.




위와 같이 출력되는 원인은 컴퓨터는 부동소숫점(float, double)에 대해서, 정확한 값을 리턴하지 못하고, 


리턴 하기 때문에 정확한 연산을 할 수 없다.


(2) Java 에서의 부동소수점 연산 오류

Java 에서도 (1)과 같이 부동소수점 오류가 발견된다. 아래 코드를 실행해 보도록 하자.

public class AA {

	public static void main(String argsp[]) {
		System.out.println(2.0 - 1.1);
	}
}

위 코드의 결과는 다음과 같다.



※ 그렇다면, Java 에서는 위 문제점을 해결하기 위해 어떻게 해야하는것인가?

    추후, 별도 Blog posting을 하겠지만, BigDecimal 을 사용하면 깔끔하게 해결이 된다.



위처럼.. 예상했던 결과와는 다른 결과가 출력됨을 확인할 수 있다. 만약에 ~ 통계페이지와 같이 소숫점 하나


하나가 매우 중요한 페이지의 결과물을 처리한다고 가정하였을때에는,, 어떻게 해야할까?


충분히 생각해 볼만한 문제인듯하다.



ps: 추가적으로 시간날때마다 타 언어에서 자료형의 산술연산의 오류를 찾아보도록 하자.



반응형
반응형

JQuery Plug-In (플러그인) 을 만드는 일련의 과정을 소개하면서, 실습을 통해 여러 사람들과 함께

내가 쌓은 지식을 공유해 보도록 하겠다.


우선!!! 알아야할 사항은 Plug-In(한국말: 플러그인) 이란 무엇이냐???


[1] Plug-In(플러그 인) 이란?


: 흔히들 가정에서 사용하는 가전제품을 예로 들어보자, 전기를 통하게 하기 위해서 우리의 어머니들은 

  가정용 콘덴서에 전기 플러그 라고 하는 놈을 꽃게 된다. 그렇게 하면 전기가 통하면서 가전제품이 작동

  하게 된다. 다만, 전기 뿐만 아니라, 다양한 모양의 플러그를 통해 기기장비들끼리 연결또한 가능하다.

  그렇게 연결함으로써 여러 기기 들을 하나의 기계처럼 함께 호환성을 이루는 구성도 가능하다 .

  아래 그림을 한번 볼까???


[출처 : 구글 이미지 검색]

  • 왼쪽의 그림을 보면 이해가 쉬울 것이다. 저렇게 생긴놈이 실생활의 플러그 인이다. 그렇다면,!! 컴퓨터 업계에서 이야기 하는 플러그 인이란 무엇인가?

  • Plug-In이란, "웹 브라우저의 일부로서 쉽게 설치되고 사용될 수 있는 프로그램을 말한다."

  • 즉, 왼쪽의 그림처럼 Web Application을 개발 할때, 플러그를 꽃았다 뻈다 하는 방식으로, 주변의 부수적인 프로그램들을 연동을 하는 방식을 말한다.

  • 이때, 플러그를 꽃는 것을 Plug In(꽃다) , 빼는 것을 Plug out(빼다) 라고 명칭하는 것이 맞는 것 같다.



















                                         [Plug -in의 이해를 돕기 위한 그림]


이제 이정도면 Plug-in이 뭐다~~ 라는 정도는 감을 잡았을 것이다. 다음으로 jQuery에서 Plug-in 

방식을 사용하는 예제를 보면서, 과연 Plug-in은 이렇게 쓰는 구나~ 하고 생각해 보기 바란다.


[2] 기존 Function 과 Plug - in의 차이점


Plug-in을 처음 사용하는 사람들은 Function 과 Plug-in의 차이점에 대해 혼돈을 하는 경향이 있다.

따라서, 이부분에 대해서 한번쯤 정리를 하고 넘어가는 것이 좋을 듯 하다. 우선 Function 과 PlugIn

방식을사용한 예제를 한번 보도록 하자.


(Function 을 사용 한 예제)

<script language="javascript"> $(document).ready(function(e){ alertFunction("This is function test"); }); alertFunction = function(msg){ alert(msg); }; </script>

위 코드는 전형적인 jquery function을 선언한 것이다. alertFunction 이라는 Function을 선언하여

호출한 예제이다. 03번 라인을 보면 호출부가 특정 엘리먼트를 가지고 호출하는 것이 아닌 Function명

을 통해서 바로 호출하도록 되어있다.


(Plug-in 을 사용한 예제)

<!doctype html>
 
<html lang="en">
<head>
  <meta charset="utf-8" />
  <title>jQuery UI Dialog - Default functionality</title>
  <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.0/themes/base/jquery-ui.css" />
  <script src="http://code.jquery.com/jquery-1.8.3.js"></script>
  <script src="http://code.jquery.com/ui/1.10.0/jquery-ui.js"></script>
  <link rel="stylesheet" href="/resources/demos/style.css" />
  <script>
  $(document).ready({
    $( "#dialog" ).dialog();
  });
  </script>
</head>
<body>
 
<div id="dialog" title="Basic dialog">
  <p>This is the default dialog which is useful for displaying information. The dialog window can be moved, resized and closed with the 'x' icon.</p>
</div>
 
 
</body>
</html>

  위 예제를 보도록 하자. 13번 Line의 $( "#dialog" ).dialog(); 부분을 유심히 볼 필요가 있다.

 전자의 Function에 비해서 특정 엘리먼트에서 chain 방식으로 dialog() Function을 호출하고 있다.


   지금쯤이면, 뭔가 차이점을 느꼈을 것이다. 즉!!!

   Plug-in은 외부에 만들어 놓은 Function을 자신이 원래 가지고 있더 내장 함수인 마냥 착각을 일으키기

   때문에, jQuery 내부에 있는 Function을 호출하는 것 처럼 해당 엘리먼트에 chain방식으로 호출이 가능하다.


   즉,!! Dialog 라는 외부 Plug-in 모듈을 가져와 script tag로 모듈을 in(내부에 콘덴서에 연결)한 후, 

   내장 Function인 마냥 사용을 하게 되는 것이다.!!


    Are You Understand???



    휴~ 많이 썼더니 골이 아프네~~~ ㅋㅋ


    오늘은 여기까지 다음시간에는 jQuery 작성시 주의해야할 주의사항에 대해 작성해 보도록 하겠다.

 

    주의 사항에 대해 훑고 나서, 본격적인 플러그인 제작에 들어가도록 하겠당!!!

 

    본 자료는 대학내 연구실 연구원들의 교육용 자료로 활용될 예정이오니 불법 펌을 금합니다.



- 2013.02.05 랑이 씀 -


  






반응형
반응형

최근 작업중 한가지 문제점이 생겼다.
EUC-KR 을 UTF-8로는 많이해보았다. Javascript의 escape() or encodeURIComponent() 함수를
이용하면 가급적 간편하게 인코딩을 할 수 있다.

이번에는 UTF-8에서 EUC-KR로 인코딩을 하는 방법에 대해 적어보도록 하겠다.

[1] 브라우져의 HEADER값을 변경한다.

Header: accept-charset="euc-kr"


위방법은 Header의 값을 변경시켜서 WAS로 보내는 방법이다.
단, IE의 경우에는 인코딩이 되지 않는 문제점이 있다.

[2] form의 속성을 변경한다.

document.charset="euc-kr";
form.submit();


위방식을 이용하면 form submit 시에 euc-kr로 인코딩 절차를 거치게된다.


크로스 브라우징은 정말 힘들다. ㅠㅠ 하루빨리 모든 브라우져들이
웹 표준을 따르기를 바랄뿐이다. ㅠㅠ

반응형
반응형
맨날 JavaScript 까먹어서 이번에 걍 정리해놓고

앞으로 가져다가 사용해야겠다.. 에고~~ 이거 맨날 삽질이구낭... 흠..

우선적으로 숨기기 위해서 아래와 같이 묵는다.


1.  DIV or SPAN 으로 묶기.
    ( 기본적으로 onload시 hidden 상태로 유지되도록 style를 none으로 설정한다. )

<span id="password_hint_area" style="display:none">
    <table width="615" border="0" cellspacing="1" cellpadding="0" bgcolor="e5e5e5">
      <tr>
        <td class="detail_name">비밀번호 힌트</td>
        <td class="detail_value">
   <select name="password_hint" class="select" id="password_hint" style="width:415px">
           <option value="none" >비밀 번호 질문 선택</option>
             <? while($rows = mysql_fetch_array($password_question)) {?>
             <option value="<?= $rows[PK_CODE] ?>">
             <?= $rows[CODE_NAME]?>
             </option>
             <? } ?>
         </select> 
        </td>
      </tr>
      <tr>
        <td class="detail_name">비밀번호 답변</td>
        <td class="detail_value"><input type="text" name="password_hint_value" id="textfield8" class="input_box" size="20" maxlength="20"/></td>
      </tr>
      <tr>
        <td height="30" colspan="2" align="center" valign="middle" bgcolor="FFFFFF">
         <a href="javascript:searchPassword();"><img src="/image/member_info/btn_searchPassword.gif" align="absmiddle"></a>        </td>
        </tr>
    </table>
   </span>


2. javascript 함수 내에서 아래와 같이 display속성을 변경하도록 한다.
    ( 졸간단한데 왜 만날 까먹징.... 헉 )



   $.ajax({
   type : "POST",
   url : "./member_join_logic.php",
   async: false,
   dataType : "text",
   data : params,
   beforeSend : function(xmlHttpRequest){
   },
   success :  function(msg) {  
    
    var data = eval("(" + msg + ")");
    if(data){
     
     alert("실명인증에 성공하였습니다. 비밀번호 답변을 입력해주세요");
     
     
     document.getElementById("password_hint_area").style.display = "block";
     form.password_hint_value.focus();
     
    }else{
     alert("일치하는 회원정보가 없습니다.");
    }
    },
    error : function(xmlHttpRequest, textStatus, errorThrown){
     alert("회원 실명인증 중 오류가 발생하였습니다. [" + textStatus + "]"); 
    }
   });

시간 되면 display속성에 대해서도 추가 정리를 해야겠다.

에고 어여 코딩하러 가자 고고고씽

반응형

+ Recent posts