천객만래 [千客萬來] (It has an interminable succession of visitors)

[php] strip_tags() , htmlspecialchars() 함수 설명



strip_tags : 모든 HTML, PHP 태그를 없애주는 역할을 합니다.
사용법 => strip_tags(변수 혹은 문자열); 

+++++++++++++++++++++++++++++++++++

htmlspecialchars

기능 : 특수문자들을 HTML 코드로 바꿔준다.
게시판이나 방명록등에서 사용자가 입력한 아래 문자들을 변환시킨다.
이 함수는 사용자가 게시판이나 방명록에서 HTML코드를 포함하는 문자열을 입력 전송했을 때 
이것이 Hyper Link로 연결되지 않고 입력한 문자열이 그대로 출력 되도록 하는 역할을 한다. 
특수문자를 문자열로 인식할 수 있도록 바꾸어 준다.

& 를 & 로 
" 를 " 로 
< 를 < 로 
> 를 > 로 바꾸어 리턴.

구문 : string htmlspecialchars(string string);

소스 :
<? 
$text = "Use & " < > document."; 
$change = htmlspecialchars($text); 
?> 
<html> 
<body> 
함수를 사용하지 않으면? : <? echo ("$text"); ?><br> 
함수를 사용하면? : <? echo ("$change"); ?><br> 
</body> 
</html> 

결과 : 
함수를 사용하지 않으면? : Use & " < > document. 
함수를 사용하면? : Use & " < > document. 

소스보기 : 
<HTML> 
<body> 
함수를 사용하지 않으면? : Use & " < > document.<br> 
함수를 사용하면? : Use & " < > document.<br> 
</body> 
</html> 





Posted by SB패밀리

[javascript] 랜덤하게 명언 출력하기




랜덤하게 명언 출력하기



:: Math객체 :: 수학관련 객체입니다.
- floor() : 소수부분을 버림합니다.
- random() : 난수를 발생합니다.
  |예제| Math.floor(Math.random()*10);
  0에서 9까지의 난수가 발생됩니다.
  |예제| Math.floor(Math.random()*10) +2;
  2에서 11까지의 난수가 발생됩니다.





----------------------------------------------------------------------------------------



<html>
<body>



<fieldset>
<legend><b>[ 오늘의 명언 ]</b></legend>
<br>  



<script language="JavaScript">
<!--



var day_msg = new Array(5);

day_msg[0] = "너 자신을 알라. <b>  - 소크라테스 -</b>";
day_msg[1] = "인생의 위대한 목표는 지식이 아니라 행동이다. <b>  - 헉슬리 -</b>";
day_msg[2] = "삶은 호흡하는 것이 아니라 행위를 하는 것이다. <b>  - 루소 -</b>";
day_msg[3] = "우리의 인생은 우리가 노력한 만큼 가치가 있다. <b>  - 모리악 -</b>";
day_msg[4] = "사랑하며 가난한 것이 애정없는 부유함보다 훨씬 낫다. <b>  - ㅣ. 모리스 -</b>";



var random_num = Math.floor(Math.random()*5);
/* 위에서 랜덤하게 생성된 수(0~4)를 이용하여 배열번호를 설정합니다. 그 배열번호를 이용하여 아래와 같이 출력합니다. */
document.write(day_msg[random_num]);



-->
</script>



<br><br>
</fieldset>
</body>
</html>


Posted by SB패밀리

[javascript] 팝업창 생성하기



팝업창 생성하기

- open() : window객체에 포함된 메서드로 새로운 창을 열기위해 사용됩니다.
|형식| open(해당URL, 이름, 속성)
|예제| open("http://www.naver.com","pop1","width=300 height=200")
directories : 연결바의 유무를 설정합니다.
location : 주소창의 유무를 설정합니다.
menubar : 메뉴바의 유무를 설정합니다.
scrollbars : 스크롤바의 유무를 설정합니다.
status : 상태바의 유무를 설정합니다.
toolbar : 툴바의 유무를 설정합니다.
resizable : 브라우저 크기조절의 가능유무를 설정합니다.
top : 창의 x좌표를 설정합니다.
left : 창의 y좌표를 설정합니다.
width : 창의 너비를 설정합니다.
height : 창의 높이를 설정합니다.
fullscreen : 창을 브라우저 전체에 나타나게 할 것인지를 설정합니다.
channelmode : 창을 채널모드로 보여줍니다.

- close() : window객체에 포함된 메서드로 창을 닫을 때 사용됩니다.





----------------------------------------------------------------------------------------



<html>
<body>
<script language="javascript">
<!--



function open_win(url) {
window.open(url,"open_blog","top=50 left=50 width=200 height=200")
}



function auto_win() {
window.open("pop.htm","new_win","top=70 left=70 width=200 height=100")
}



-->
</script>



<body onload="javascript:auto_win()">
<a href="javascript:open_win('http://section.blog.naver.com')">
다음을 클릭하면 팝업창이 나타납니다.
</a>
</body>
</html>


Posted by SB패밀리

[javascript] iframe 활용하기






iframe 활용하기

* document.URL : 링크주소를 설정합니다.


----------------------------------------------------------------------------------------



page_win.htm  메인프레임을 말합니다.

----------------------------------------------------------------------------------------



<html>
<script language="JavaScript">
<!--



function site_move() {
var myindex = frm1.mysel.selectedIndex;
var myvalue = frm1.mysel.options[myindex].value;
/* 링크주소를 설정함으로써 iframe태그의 src속성값을 설정합니다. */
cwindow.document.URL = myvalue;
}



function link_site_move(site_name) {
cwindow.document.URL = site_name;
}



-->
</script>



<body>



<form name="frm1">
# 리스트 : 
<select name="mysel" onchange="site_move()">
<option value="con1.htm">제 1편 흙으로부터</option>
<option value="con2.htm">제 2편 신비의 자기</option>
</select>
<br><br>
<a href="javascript:link_site_move('con1.htm');">[1편]</a>
<a href="javascript:link_site_move('con2.htm');">[2편]</a>
<br><br>
<iframe name="cwindow" src="con1.htm" width=300 height=200 frameborder=1 scrolling="no">
</iframe>


</form>



</body>
</html>



----------------------------------------------------------------------------------------



con1.htm  프레임내에 출력할 첫번째 문서입니다.

----------------------------------------------------------------------------------------



<html>
<body>

<pre><b>제1편 흙으로부터
Origins : the birth of china</b>

지금으로부터 만 년 전, 

고대 사람들은 최초로 흙에 불을 가해 저장용기를 만들었다. 

그것이 인류 최초의 그릇, 토기였고, 이것은 지역 간의 교류가 발생하지 않았던 시대 

놀랍게도 유라시아와 아메리카 대륙 전역에서 나타난다. 

그러나 이로부터 자기가 탄생한 곳은 중국이 유일했다. 

모두가 동일하게 출발했지만, 중국만이 도달할 수 있었던 자기의 탄생. 

그 엇갈린 역사적 운명의 배경을 밝힌다.
</pre>

</body>
</html>



----------------------------------------------------------------------------------------



con2.htm  보여줄 두번째 문서입니다.

----------------------------------------------------------------------------------------



<html>
<body>
<pre>
<b>제2편 신비의 자기
Destiny : porcelain, the mystery</b>

중국에서 자기문화를 꽃피운 것은 宋나라였다. 

문화적 소양이 탁월했던 황제와 사대부의 지원 아래 

청자는 우과청천, 즉 비 갠 하늘빛의 경지에 이른다. 

중국이 독점했던 자기기술이 최초로 전파된 곳은 한반도. 

12C 중국에서도 고려청자의 비색은 최상품으로 평가받는다. 

기술적, 미적으로 완성된 청자. 

그것은 동남아시아, 서아시아, 아프리카 대륙까지 

신비의 그릇으로 받아들여지면서 다양한 에피소드를 역사에 남겼다. 

비단이 육지의 실크로드를 열었듯 바다의 차이나 루트를 열었던 

중국자기. 그 교역 루트를 되짚어 본다. 
</body>
</html>


Posted by SB패밀리

[php/html] 제로보드 회원가입시 가입축하메일 발송하기


2004.11.25


간단하게 가입했을때 축하메일 보내기를 만들어봤습니다.

member_join_ok.php 파일의 가장 마지막 부분에 이렇게 삽입합니다.

<?

     $mrjh = "From: MRJH <mail@mrjh.net>\r\n"; //본인에게 맞게 수정
     // $name은 member_join.php의 가입폼에서 회원이 이름을 입력하면
     // 자동으로 변경되어서 메일이 발송됨
     $subject="$name"." 님의 회원가입을 축하드립니다 !! [자동발송메일]"; 
     $body="축하내용"; // 내용을 적어주세용..
     mail($email , $subject , $body, $mrjh); // 메일보내기 함수


?>
<script>
        alert("회원가입이 정상적으로 처리 되었습니다\n\n회원이 되신것을 진심으로 축하드립니다.");
        opener.window.history.go(0);
        window.close();
</script>


Posted by SB패밀리

[php/html] 게시물 메일보내기 - 간단한 소스(레이어사용)


2004.11.25


제로보드에서도 사용할 수 있는 게시물 메일 보내기 입니다.
레이어를 이용해서 간단히 보낼 수 있습니다..

View.php 에서 메일보내기

커뮤너티나 큰 웹사이트 다니다 보면.. "현재 보고있는 글을 이메일로 보내기"란
기능이 많이 있더라구요.. 저도 꼭 이걸 구현해보고 싶어서 만들어봤습니다.

현재 제 홈페이지에서 사용중이구요.
제 홈페이지 아무게시판이나 클릭해서 글 내용보면 밑부분에 이메일로 보내기 기능이있습니다.

뭐 그리 어렵지는 않습니다.
우선 view.php파일에 약간만 수정해주면 됩니다.
원리는 레이어와 메일보내기 함수를 이용한것입니다.

우선 view.php파일의 가장 윗부분에 레이어에 해당하는 자바스크립트를 넣어줘야 합니다.

================================================================================
<script language="JavaScript">
<!--
function na_hide_layer(lname)
{
  if (document.layers)
    document.layers[lname].visibility = 'hide'
  if(document.all)
    document.all(lname).style.visibility = 'hidden'
}

function na_show_layer(lname)
{
if (lname == '') return;

var layer  = document.all ? document.all(lname).style : document.layers[lname];
var show  = document.all ? 'visible' : 'show';
var hide  = document.all ? 'hidden' : 'hide';

if (na_show_layer.arguments.length <= 1)
  layer.visibility = show;
else
  layer.visibility = (na_show_layer.arguments[1] == 0 ? show : hide);
}

// -->
</script>
==================================================================================

그리고 글쓴사람.. 날짜.. 내용등등.. 이렇게 쭉 따라내려오겠죠.
그리고 마지막 부분에.. "현재글 이메일로 보내기" 라는 메뉴를 하나 만듭니다.

<a href="#" OnClick="na_show_layer('layer2');">현재글을 이메일로 보내기</a>

그리고 밑에 레이어에 해당하는 부분을 작성해주면 됩니다.
레이어 속에는 메일함수가 들어가야 하겠죠.


<div id="layer2" style="width:250px; height:10px; position:absolute; left:400px; top:460px; z-index:1; visibility:hidden;">
<!-- 메일 보내기 폼 부분 -->
<table border="0" cellpadding=0 cellspacing=0 width="100%">
<tr>
<td align=left bgcolor=#3366cc>
<font color=white>이메일로 보내기</font>
</td>
<td align=right bgcolor=#3366cc>
<a href="#none" OnClick="na_hide_layer('layer2');">
<img src=<?=$dir?>/btn_search_cancel.gif border=0 alt='취소 버튼'></a>
</td>
</tr>
<tr>
<td bgcolor=white height=10></td>
<td bgcolor=white height=10></td>
</tr>
<tr>
<td bgcolor=white align=center>
<form method='post'>
<input type="hidden" name="mode" value="up">
<font size=2 face=tahoma color=black><b>e-mail : </b></font><input type="text" name="tomail" maxlength="30">
<input type="submit" value="보내기"  class=input>
</form>
</td>
<td bgcolor=white>
</td>
</tr>
</table>
</div>
<!-- 폼 끝 -->
<?
     if ($mode = up) {
         $mh = "From: MRJH <mail@mrjh.net>\r\n";
             $mh .= "Content-Type: text/html; charset=euc-kr\r\n";
             $title="Mr. JH에서 전송한 내용입니다.";
             $body="<table border=0 width=70%>
                          <tr>
                           <td width=100% align=left>
                           <font size=2 face=tahoma><b> $subject </b></font>
                           <hr size=1 color=#990000 width=100%>
                           </td>
                          </tr>
                           <td width=100%>
                            $memo
                           </td>
                          </tr>
                          <tr>
                           <td width=100% align=right>
                            <hr size=1 color=#990000 width=100%>
                            <font size=4 face=tahoma color=#990000><b>Mr. JH</b></font>
                           </td>
                          </tr>
                         </table>";

      mail($tomail , $title , $body, $mh);

     }
?>


전체적인 구조는 이러합니다. 메일함수만 잘 이용하면 되겠죠.
메일 함수에서.. 제로보드에서 입력한 제목과 내용을 그대로 받아와서 보내기면 하면되죠.
근데 HTML이 되게 해야지.. 그냥 내용만 보내면.. 
<br> 이란 태그가 자꾸 붙어서 나옵니다.

전체 소스를 보실분은 http://mrjh.net/etc/source/view_source.php 여길 클릭하면
제가 제 view.php 파일의 전체소스를 올려뒀습니다.


Posted by SB패밀리

[html/javascript] form 태그 항목 리스트 전체 선택하기


2003.11.25



<html>
<META HTTP-EQUIV="MSThemeCompatible" CONTENT="Yes">
<script language='JavaScript'>

function reverse() {
           var i, chked=0;
           if(confirm('목록을 반전하시겠습니까?\n\n반전을 원하지 않는다면 취소를 누르시면 다음으로 넘어갑니다'))
           {
            for(i=0;i<document.list.length;i++)
            {
                     if(document.list[i].type=='checkbox')
                     {
                              if(document.list[i].checked) { document.list[i].checked=false; }
                              else { document.list[i].checked=true; }
                     }
            }
           }
}

</script>

<body>
<form name=list ....>

<input type=checkbox name=cart value='111'>111<BR>
<input type=checkbox name=cart value='222'>222
</body></html>

Posted by SB패밀리

[Javascript/html] Select 태크로 목록 선택하기


2003.11.25


ComboBox에서 Item선택시 이벤트 처리 (Select 태그)


<script language='JavaScript'>

<ComboBox에서 Item선택시 이벤트 처리

        function category_change() {
                  var myindex=list.category.selectedIndex;

                document.list.category.value=list.category.options[myindex].value;
                document.list.submit();
                return true;
        }


        
</script>


<select name=category onchange=category_change(this)>
        <option value=''>Category</option>
        <option value=1>일반</option>
        <option value=2>데이타베이스</option>
        <option value=3>그래픽스</option>
        <option value=4>네트웍/통신</option>
        <option value=5>레포팅</option>
        <option value=6>멀티미디어</option>
        <option value=7>액티브 X</option>
        <option value=8>어브젝트 파스칼</option>
        <option value=9>윈도우즈 API</option>
        <option value=10>인터넷</option>
        <option value=11>컴파일러/디버거</option>
        <option value=12>IDE</option>
        <option value=13>VCL/팩키지</option>
        <option value=14>시스템</option>
</select>

Posted by SB패밀리

[용어] 유비쿼터스(Ubiquitous)


2003.11.20 


유비쿼터스(Ubiquitous)

라틴어로 ‘어디에나 있는’이란 뜻. ‘유비쿼터스 컴퓨팅’이란 개념은 제록스 팔로 알토 연구소의 마크 와이저 박사가 1988년 처음 만들어냈다. 그는 집에는 수백개의 컴퓨터가 숨어있고, 이들이 케이블과 무선 네트워크로 연결될 것이라고 예언했다.

Posted by SB패밀리

[CppBuilder] ClassName 비교하여 작업하기 ClassName(), ClassNameIs()


2003.11.05



델파이로 비유하자면 Is 구문과 같다.

Typecase 는 As 구문과 같다.


    for (int i=0; i<ComponentCount; i++)
    {
        if ( String(Components[i]->ClassName()) == "TPanel")
            ((TPanel*)Components[i])->Color = nbAttrib->Color;
    }


다른 예 ClassNameIs() 함수를 사용한다.  

for (int i = 0; i < DataModule2->ComponentCount; i++)
  {
    if (DataModule2->Components[i]->ClassNameIs("TDataSource"))
      ListBox1->Items->AddObject(DataModule2->Components[i]->Name,
        (TObject *)DataModule2->Components[i]);
  }


Posted by SB패밀리

[HTML] HTML 페이지 Unload할 때 페이지 띄우기


2003.10.20


body 태그의 onunload 이벤트를 주목하자.

<html>
<head></head>
<script language="JavaScript">
function popup() {
window.open('http://mau.eg.to', 'popup', s='top=0,left=0,width='+(screen.availWidth-10)+',height='+(screen.availHeight-70)+',toolbar=yes,status=0,scrollbars=yes,resizable=0');
}
</script>

<body bgcolor="#ffffff" text="#000000" onunload="popup()">

<SCRIPT language=JavaScript>
function popup() {
window.open('http://mau.eg.to', 'popup', s='top=0,left=0,width='+(screen.availWidth-10)+',height='+(screen.availHeight-70)+',toolbar=yes,status=0,scrollbars=yes,resizable=0');
}
</SCRIPT></BODY></html>

Posted by SB패밀리

[HTML/JAVASCRIPT] HTML 오픈할 때 전체화면 만들기

2003.10.17


+0900

<html>
  <head>
  <meta http-equiv="Content-type" content="text/html; charset=euc-kr">
      <title></title>
<SCRIPT LANGUAGE="JavaScript"> 
function fullscreen() { 
var fullscreen = window.open("http://sobakcc.com","icdk","인천델파이코리아"); 

</script> 
  </head>
<BODY onload="fullscreen();"> 
  <div></div>
  </BODY>




Posted by SB패밀리

[컴퓨터] 소리로 진단하는 컴퓨터 에러



[펌] 소리로 진단하는 컴퓨터 에러 |  2003/12/17 13:56  


갑자기 먹통이 된 컴퓨터를 며칠동안 고생하며 수리하려다 포기하고 A/S 센터에 들고 갔더니, 도사께서는 전원을 켜면서 소리만 듣고 램을 바꿔 꽂더니 수리가 끝났다고 한다.(이런 황당한 경우가?)" 

이런 황당한(?) 일이 가능한 이유는 POST 기능 덕택입니다. 
POST(Power-On Self Test)란, PC 에 전원을 넣었을 때 CPU, 키보드, 그래픽카드, 메모리, 주변IC 등의 정상작동 상태를 파악하는 작업을 말하며, 이 과정에서 문제가 발견되지 않으면 정상적인 부팅과정으로 넘어가고 문제가 있으면 '삑' 소리(Beep음)와 함께 셋업(setup)을 위해 시스템 기능이 잠시 정지합니다. 이 때는 다시 셋업을 해야 합니다. 에러 내역은 각각의 상황에 따라 비프음의 횟수와 길이로 구별할 수 있는데 보통 부팅 중에 비프음을 내는 에러는 치명적인 문제일 때가 많습니다. 
아래 표를 참고하여 부팅중에 발생되는 문제의 원인을 찾고 그에 맞는 조치를 취하면 의외로 쉽게 문제를 해결할 수 있을겁니다.

부팅자체가 되지 않는 상황이라면 당황하기보다는 먼저 침착하게 시스템에 장착된 CPU, 메모리, 각 카드들이 제대로 꽂혀 있는지 확인하는 것이 좋습니다. 제대로 고정했더라도 다른부품을 건드리는 과정에서 같이 접촉되어 이탈되거나 이동할 때의 충격 등으로 살짝 빠져 있을 수 있기 때문이죠. 특히 슬롯1 CPU나 AGP 그래픽카드는 슬롯의 접촉부분이 2단으로 되어 있어 조금만 어긋나도 문제를 일으킬 가능성이 큽니다. 

메인보드에서 아예 소리가 나지 않는다면 메인 보드의 테스트가 필요하나 이것 또한 대부분의 경우 COMS 클리어로 해결이 됩니다. 
간혹 CPU 어댑터(라이저카드)를 사용할 경우에 문제가 발생될 수 있는데 접촉불량이 아니라면 라이저 카드 자체를 교체해서 테스트 해보는 수밖에 없겠죠.
 

1. 소리횟수
2. 에러내역
3. 상태
4. 해결법

짧게 1번
  -
정상부팅



길게 1번(반복)
패리티 이상
메모리의 리프레시 사이클과정에서 발생된 에러
메모리를 다시 꽂아 본다. 그래도 해결되지 않으면 메모리 교체

2번
패리티 이상
시스템의 기본메모리(처음64KB)에서 패리티 에러발생

3번
64KB기본 메모리 이상
시스템의 기본메모리에서 메모리 이상 발견

4번
타이머 비동작
기본 메모리에서 에러가 발견되었거나 시스템의 첫 번째 타이머가 작동하지 않는다
메인보드 불량 ->메인보드 교체

5번
프로세서 에러
CPU에서 에러 발견

6번
8042-게이트 A20이상 
키보드 컨트롤러(8042)는 CPU를 가상모드에서 작동시키기 위해서 게이트 A20이라는 스위치를 가지고 있다. 이 에러는 게이트 A20이 정상적으로 작동하지 않는 즉 CPU를 보호모드에서 동작시킬 수 없음을 의미한다
키보드 컨트롤러 칩을 다시 꽂는다. 해결되지 않으면 키보드 컨트롤러칩을 교체하고 그래도 해결되지 않으면 키보드의 퓨즈 또는 키보드 자체를 바꿔본다. 

7번
프로세서 익셉션 인터럽트 에러(Exoeption Interrupt Error)
시스템의 프로세서가 익셉션인터럽터를 발생시켰다
메인보드 불량 ->메인보드 교체

8번 
디스플레이 메모리 기록,판독 에러
그래픽카드를 찾을 수 없거나 그래픽카드 메모리 이상
그래픽카드의 메모리를 교체할 수 없거나 교체 해도 같은 에러가 발생 한다면 그래픽카드 자체를  

바꾼다. 

9번
롬 체크섬 에러
롬의 체크섬 값이 바이오스에 기록된 것과 다르다
바이오스 롬 칩의 불량이므로 새로운 바이오스롬 칩을 써야한다

10번
CMOS 셧다운
레지스터 기록, 판독에러  .  CMOS 셧다운 레지스터 이상
메인보드 불량 -> 메인보드 교체

2번 (늘어난 음향)
바이오스 손실
바이오스가 지워졌다
바이오스 업데이트나 바이오스 복구

사이렌음
CPU 과열
CPU가 과열로 위험한 상태
쿨러 장착이나 교체 또는 CPU교체



Posted by SB패밀리

마이크로소프트사의 저작권 관련 정보 제공 

2003.12.18


http://www.microsoft.com/korea/permission/


마이크로소프트사의 저작권 관련 정보 제공

http://www.microsoft.com/korea/permission/


Posted by SB패밀리

[CPP빌더] 2차원 배열 변수 메모리 할당/해제


2003.10.30



다차원 배열 변수에 메모리를 할당하고 해제하는 방법으로 2차원 배열 변수를 통하여 배워보자.

// 변수 선언
   long double **data;
// 메모리 할당

   try {                                 // TEST FOR EXCEPTIONS.
      data = new long double*[m];        // STEP 1: SET UP THE ROWS.
      for (int j = 0; j < m; j++)

          data[j] = new long double[n];  // STEP 2: SET UP THE COLUMNS
      }
  // 예외 상황
   catch (std::bad_alloc) {  // ENTER THIS BLOCK ONLY IF bad_alloc IS THROWN.
      // YOU COULD REQUEST OTHER ACTIONS BEFORE TERMINATING
      cout << "Could not allocate. Bye ...";
      exit(-1);
      }
  // 2차원 배열 변수 사용
   for (int i = 0; i < m; i++)
      for (int j = 0; j < n; j++)
          data[i][j] = i + j;            // ARBITRARY INITIALIZATION

  // 2차원 배열 변수 메모리 해제
   for (int i = 0; i < m;  i++)
       delete[] data[i];                 // STEP 1: DELETE THE COLUMNS

   delete[] data;                        // STEP 2: DELETE THE ROWS

Posted by SB패밀리

[델파이] 폼 디자인할 때 콤포넌트에 Mouse 이벤트 받게 하기.. 


2003.11.01


콤포넌트를 만들 때 디자인 타임에 Mouse 클릭에 반응해서 뭔가
바뀌게 하고 싶을 때가 있는데
예를 들면 TPageControl 에서 Tab 을 클릭하면 
Page 가 바뀌는 경우가 있는데 이런건.. 

CM_DESIGNHITTEST 메시지를 받아서 Result 값으로 0 이상의 값을 돌려주면
된다고 합니다.

콤포넌트 정의에

protected
procedure CMDesignHitTest(var msg: TMessage); message CM_DESIGHHITTEST;

를 추가하고..

procedure TMyCmp.CMDesignHitTest(var msg: TMessage);
begin
  Result := 1;
end;

저렇게 해주면 콤포넌트 디자인 타임에도 Mouse 이벤트를 처리할 수 있습니다.



Posted by SB패밀리

[delphi/web] how to detect when a Document is comp...



2004.01.12


An other example:

This example shows how to detect when a document is completely 
loaded, even if it includes multiple frames. Only the final 
OnDocumentComplete event passes the same Dispatch interface as the 
OnNavigateComplete event handler.

var
  CurDispatch: IDispatch; {save the interface globally }

procedure TForm1.WebBrowser1NavigateComplete2(Sender: TObject; const 
pDisp: IDispatch; var URL: OleVariant);

begin
  if CurDispatch = nil then
    CurDispatch := pDisp; { save for comparison }
end;
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject; const 
pDisp: IDispatch; var URL: OleVariant);
begin
  if (pDisp = CurDispatch) then
  begin
    Beep; {the document is loaded, not just a frame }
    CurDispatch := nil; {clear the global variable }
  end;
end;

cu Andries

Posted by SB패밀리

[기사] 마크애니-HIT, 중앙대 콘텐츠유통플랫폼 구축


2003.05.08


http://www.dt.co.kr/dt_srcview.html?gisaid=2003050602011060699001


[기사] 마크애니-HIT, 중앙대 콘텐츠유통플랫폼 구축

마크애니(www.markany.com 최종욱)는 5일 현대정보기술과 컨소시엄을 구성해 중앙대학교의 `DCRC(Digital Contents Resources Center)' 프로젝트를 수주, 이달부터 본격적인 구축작업에 들어간다고 밝혔다.
중앙대학교는 기술 및 가격심사를 거쳐 현대정보기술-마크애니 컨소시엄을 사업자로 선정했으며, 오는 7월말까지 이미지 콘텐츠의 유통 비즈니스 모델 구현을 위한 디지털 콘텐츠 유통 인프라를 구축한다는 방침이다.

저작권 보호 및 불법 유통방지를 위해 디지털저작권관리(DRM) 기술과 워터마킹 기술이 적용되는 이 프로젝트는 현재 충무로 인쇄업에서 이용하고 있는 이미지 콘텐츠 등 국내에서 산업화에 필요한 이미지 콘텐츠를 전자상거래 유통 플랫폼에서 거래를 할 수 있도록 기반을 조성하는 것이다.

한민옥기자

한민옥 (mohan@dt.co.kr) 



Posted by SB패밀리

[기사] 민원서류 온라인발급사업 착수


2003.05.08


http://www.dt.co.kr/dt_srcview.html?gisaid=2003050202010860624002


민원서류 온라인발급사업 착수 
[디지탈타임스] 2003년 05월 02일 (금) 03:00 

주민등록 및 호적등ㆍ초본 등 18종의 민원서류를 집이나 사무실에서 인터넷을 통해 직접 발급받을 수 있는 `민원서류 온라인 발급사업`이 5월부터 착수된다.
행정자치부(www.mogaha.go.kr 장관 김두관)는 5월 중순 온라인 민원발급시스템과 열람확인시스템 구축사업을 발주하고 8월말 구축을 완료할 계획이라고 1일 밝혔다. 

이 사업은 주민등록ㆍ토지대장ㆍ사업자등록증명ㆍ호적등본 등 기존에 인터넷 열람ㆍ신청 및 우편발급만이 가능했던 18종의 민원서류에 대한 신청과 발급을 온라인화해 시범서비스한 뒤 내년 3월부터 집이나 사무실에서 필요한 공문서를 발급받을 수 있게 하기 위한 것이다.

이번에 구축되는 발급시스템은 민원인이 인터넷으로 민원을 신청하면, 신청된 내용이 민원처리기관의 해당 데이터베이스(DB)에 연결돼 자동으로 민원서류를 발급하게 된다. 이 시스템은 토지(임야)대장등본 교부, 개별공시지가 확인, 사업자등록증명 등 개인정보 보호의 필요성이 적고 이용률이 높은 3종의 민원에 우선 적용한 후 내년 3월부터 18종의 민원으로 확대된다.

열람확인시스템은 민원서류수령자가 출력번호로 민원혁신시스템(G4C)에 접속해 원본과 대조ㆍ확인할 수 있도록 지원한다. 특히 이 시스템은 발급문서의 위ㆍ변조 가능성을 최소화하기 위해 워터마크(Watermark)기술을 도입한다.

워터마크는 기관장의 이미지관인 등 문서의 주요정보를 암호화해 삽입함으로써 추후 스캔과 확인프로그램으로 위ㆍ변조 여부를 확인하거나 복사시 워터마킹된 부분이 깨지도록 해 복사를 방지하는 기법이다.

남상훈기자

남상훈 (nsh21@dt.co.kr)


Posted by SB패밀리

[기사] 디지털 방송시대를 위한 워터마크

2003.04.29




http://www.etimesi.com/news/detail.html?id=200304180051&sr=yes&banner_class= 


2010년 완전 디지털방송 시대를 앞두고 디지털 콘텐츠 저작권 보호와 관련된 기술 개발과 표준화 작업이 활발하다. 지상·위성·케이블 등 다양한 종류의 미디어를 통해 전달되는 디지털 콘텐츠는 저장과 복사, 배포가 쉬워 항상 지적재산권 분쟁에 휘말릴 소지를 안고 있다. 불과 2, 3년 전 냅스터나 소리바다와 관련된 법적 분쟁이 일어났을 때만 해도 디지털 저작권은 다소 생소한 개념이었지만 디지털방송이 본격 확산될 향후 수년은 매우 중요한 시기가 될 것으로 전문가들은 판단한다. 이 때문에 지상파 방송 3사는 물론 저작권 보호기술 전문업체까지 생겨나 관련 기술개발에 적극 나서고 있다. 

 그중 대표적 기술인 워터마크는 중세교회에서 암호문을 보낼 때 사용했던 투명한 그림 혹은 글씨란 뜻에서 유래했다. 이 때문에 현대의 디지털 워터마킹은 문서·오디오·이미지 등 각종 디지털 콘텐츠에 저작권 인증 내용을 담은 데이터를 육안으로 식별할 수 없도록 삽입·추출하는 기술을 의미한다. 

   콘텐츠 유통 과정에서 지적재산권 분쟁이 발생할 경우 콘텐츠 안에 삽입된 워터마크만 추출하면 소유권 확인이 쉬워진다. 

 디지털방송에서 워터마킹 시스템은 삽입과 검출 두 부문으로 구성된다. TV프로그램은 위성이나 지상파를 통해 시청자에게 전달되는데 이 과정에서 소유자·제작날짜·허가정보 등 저작권 정보를 담은 워터마크를 삽입하면 방송사들은 언제든지 해당 콘텐츠의 전달과정을 감시할 수 있게 된다. 

 워터마크 삽입 방법은 비디오·이미지는 물론 텍스트·오디오에 이르기까지 콘텐츠 종류에 따라 다양한 방식을 취한다. 

 대표적인 삽입 방법인 이미지 워터마킹은 시각적 영향을 적게 미치는 화소를 조작하는 공간영역 변환 방식과 고속푸리에변환(FFT)·이산코사인변환(DCT)·웨이블릿변환 등을 이용한 주파수 영역 변환방식이 있다. 비디오 워터마킹도 이미지 워터마크 삽입 방식과 같은 공간영역과 주파수 변환 두 가지로 나뉜다. 

 이같은 워터마킹 기술은 콘텐츠 불법 재사용을 막는 용도로 쓰이는 한편 콘텐츠에 관한 부가적인 정보를 담는 메타데이터 삽입 기술로 응용이 가능해 콘텐츠 제작·교환·검색·전송 등 다방면에 활용할 수 있다. 방송제작 환경에서 워터마크의 또 다른 활용 사례는 오디오·비디오 신호 동기화다. 디지털방송 제작환경에 따라 오디오와 비디오 신호처리속도 차이에 따른 동기화 문제가 크게 불거지면서 비디오에 오디오 동기신호를 워터마크로 삽입하는 시스템이 개발되기도 했다. 

 하지만 여전히 남은 문제가 있다. 디지털 워터마킹에서 반드시 요구되는 비가시성, 견고성, 원영상 사용 여부, 충분한 워터마크 정보량, 검출 속도, 다중성, 비밀성 등을 완벽히 보장할 기술이 아직까지 개발되지 못한 상태. 

 디지털방송에 활용될 기술은 이밖에도 DRM(Digital Rights Management), MPEG21, 방송수신제한장치(CAS) 등 다양한 기술들이 있으며 현재 기술개발과 함께 표준화 작업이 한창 진행중이다. 

 <박근태기자 runrun@etnews.co.kr>  

○ 신문게재일자 : 2003/04/19
○ 입력시간 : 2003/04/18 14:52:52




Posted by SB패밀리