XML-RPC Request 문서 포맷

XML-RCP Request Body 예시
double 타입의 변수를 인자로 하는 circleArea 메소드를 호출하는 XML-RPC 문서의 예.
[code]
<?xml version="1.0"?>
<methodCall>
   <methodName>circleArea</methodName>
      <params>
         <param>
            <value><double>2.41</double></value>
         </param>
      </params>
</methodCall>
[/code]


XML-RPC 헤더
[code]
POST /target HTTP 1.0
User-Agent: Identifier
Host: host.making.request
Content-Type: text/xml
Content-Length: length of request in bytes
[/code]


XML-RPC request 문서 전체 예시
[code]
POST /xmlrpc HTTP 1.0
User-Agent: myXMLRPCClient/1.0
Host: 192.168.124.2
Content-Type: text/xml
Content-Length: 169
<?xml version="1.0"?>
<methodCall>
   <methodName>circleArea</methodName>
      <params>
         <param>
            <value><double>2.41</double></value>
         </param>
      </params>
</methodCall>
[/code]
2010/04/26 11:40 2010/04/26 11:40
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

XML-RPC Response 문서 포맷

[code]
<?xml version="1.0"?>
<methodResponse>
   <params>
      <param>
         <value><double>18.24668429131</double></value>
      </param>
   </params>
</methodResponse>
[/code]
XML-RPC response는 단 하나 parameter만을 갖는다.
파라미터는 하나 이상의 값을 리턴하기 위해 struct 나 array 형식일 수 있다.
파라미터는 필수항목으로 비록 처리하는 쪽 메소드의 리턴 값이 없을지라도
'정상처리'를 표시하기 위해 boolean의 true (1)을 파라미터로 표현해야 한다.


[code]
HTTP/1.1 200 OK
Date: Sat, 06 Oct 2001 23:20:04 GMT
Server: Apache.1.3.12 (Unix)
Connection: close
Content-Type: text/xml
Content-Length: 124
[/code]
XML-RPC의 경우 HTTP1.0 스펙을 지원하지만 HTTP1.1과도 호환이 된다.
Content-type의 경우 'text/xml' 형식만 허용한다.
response의 길이를 bytes 단위로 Content-Length 에 표기한다.


[code]
HTTP/1.1 200 OK
Date: Sat, 06 Oct 2001 23:20:04 GMT
Server: Apache.1.3.12 (Unix)
Connection: close
Content-Type: text/xml
Content-Length: 124

<?xml version="1.0"?>
<methodResponse>
   <params>
      <param>
         <value><double>18.24668429131</double></value>
      </param>
   </params>
</methodResponse>
[/code]
결과적으로 위와 같은 형태의 문서가 XML-RPC 서버로부터 XML-RPC 클라이언트로 전송되고 connection을
끊는다.

2010/04/26 11:36 2010/04/26 11:36
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

지금은 곤란하다.


뭐가 그렇게 곤란하신지...

원본 출처 : 지금은 좀 곤란하다. 3년만 기다려 달라.
2010/03/13 23:42 2010/03/13 23:42
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다
  1. Blog Icon
    60

    음, 전 이거 별로 잘된 합성은 아니라고 생각했는데.ㅋ 레이아웃 바꾸셨네요!

  2. Blog Icon
    서비

    옙 바꿨습니다. 어색하지 않으셨으면 좋겠어요.

    저도 요 합성 보면서 '좀 억지스러운데..'하고 생각하긴 했습니다.
    그냥 현 정부의 새로운 '어록'으로 말장난 한 정도로 받아들이고 있습니다.^^

    당시 우리 정부측에서 국내외 외교 요건을 고려해 순수한 마음으로
    '기다려 달라' 라고 한 것일수도 있고, 진심으로 '차후에 다시
    논의하자'란 의미로 한 말일수도 있습니다.
    하지만 현 정부의 작태를 생각하면
    '나 땅 장난으로 부 축적하는 동안 독도따위로 귀찮게 하지않길
    바란다. 그런 문제는 다음 대 가서 지지든 볶든해라.'
    가 본심이 아닐까하고 생각해버리게 되거든요.

    정부+방송의 무대응 만큼 정말 일고의 가치조차 없는 문제라고 한다면
    그런 '일고의 가치도 없는'일이 정부를 힐책케하는 '꺼리'를 제공한
    여지껏 보여진 정부의 모양새에 심한 문제가 있지 않나 생각합니다.

  3. Blog Icon
    60

    아, 요즘에 저 어록이 유행하는 것과 별개로요. 다른 재미있는 조합도 많이 있을 거 같은데 저 합성물에 있는 게 별로 재미없었어요.ㅎㅎ

  4. ㅎㄷㄷ
    지금은 곤란합니다 ㄷㄷ

Flash SEO tool

구글의 검색 엔진은 플래시 오브젝트에 대해서도 검색 가능하도록 인덱싱하고 있다고 하지만, 단지 플래시 파일 개발 후 컴파일 타임에 집어넣은 내용을 인덱싱하며, 동적으로 읽어들이는 문자, 이미지에 대해서는 인덱싱을 할 수 없다고 한다.
플래시 사이트를 검색 엔진 최적화를 하기 위해서는 검색 엔진이 플래시 플레이어에서 구동되고 있는 사이트의 내용을 파악할 수 있는 적절한 방안을 제공해야 한다.

여기 그런 고민을 조금이나마 덜어줄 도구가 등장했다.
Flash SEO tool 이라는 도구가 그것이다. ActionScript 3 API를 이용하는 이 툴은 플래시 사이트에 대해

  • 검색엔진을 위한 HTML 메뉴와 서브 메뉴 생성
  • 타이틀, 메타 키워드와 설명
  • 의미 있는 URL
  • 사용하기 쉬움

을 특징으로 내세우고 있다.
이 툴을 적용한 샘플 사이트는 http://flashseotool.com/ 에서 샘플코드와 작동법을 확인할 수 있다.
현재 구글 코드( http://code.google.com/p/flashseotool/ )에 등록되어 있으며, 머지않아 다운로드 가능할 것이라고 한다.

2010/03/09 17:00 2010/03/09 17:00
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

월급쟁이 신세


월급쟁이 신세가 나쁘다는 게 꼭 창업하라는 이야기는 아니야.
뭘 어떻게 하라는 게 아니고 그냥 현실을 알려주는 거야.
분야에 상관없이 월급쟁이 인생은 다 구질구질한 게 마찬가지라는 거지.
세상은 월급쟁이한테 불리하게 설계가 되어 있거든.

그나마 차이를 만드는 건 분야가 아니고 어느 회사에 다니느냐야.
회사 간 편차가 분야 간 편차보다 훨씬 커. 그러니까 어느 분야로 갈지 고민할 시간 있으면
어떻게 하면 더 좋은 회사에 들어갈지 고민하는 게 낫다는 거고.
자주 들르는 게시판에 열악한 근무조건을 성토하는 글에 달린 댓글 중 일부이다.
'회사 간 편차가 분야 간 편차보다 크다.'  결국 월급쟁이는 분야를 막론하고 좋은 회사
(기준이야 개인마다 다르겠지만)에 들어가라는 거지...
감정적으로는 동의하고 싶진 않지만 인정하지 않을 수 없는 내용이라... 참.. 씁쓸하구만..

2010/03/09 15:17 2010/03/09 15:17
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다
  1. 회사도 많고 조직도 많으니 어찌보면 행운이 따라야할거 같아여

규칙은 양날의 칼이야

그녀가 시선을 앞쪽에 고정한 채 입을 열었다.
"만약 그 사건이 없었다면 내 인생은 달라졌겠지. 공부도 열심히 하고, 대학도 들어갔을 거야. 그렇다고 지금보다 좋은 인생을 살았다곤 장담할 수 없지만.... 하지만 난 가장 중요한 시기에 가장 중요한 것을 빼앗긴 거야."
그는 잠자코 그녀의 이야기에 귀를 기울였다. 그 사건이라면 바로 초밥사건이다. 아야코의 인생을 바꿔놓은 중대한 사건.
"규칙은 어차피 인간이 만든 거잖아. 그런데 그게 뭐가 그렇게 중요해? 왜 집안을 돕기 위해 일한 사람은 사흘간 정학을 받아야 하고, 그것을 방해한 사람은 아무런 처벌도 받지 않는 거지?"
"원래 규칙은 양날의 칼이야. 자신을 지켜준다고 생각한 것이 어느 날 갑자기 자신에게 칼을 들이대지. 그런 경우에 중요한 건 그 칼을 사용하는 사람이야. 그런데 무능하고 멍청한 사람은 날카로운 칼을 형식대로 휘두르거든."
아야코는 영원한 원한을 담은 것처럼 말을 토해냈다.

2010/03/01 16:28 2010/03/01 16:28
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

찜찜하네..

딱히 퇴근하고 싶은 것도 아니요.. 그렇다고 남아 있고 싶은 것도 아닌...
야시꼬롬한 기분으로 사무실에 앉아있다.

진행 중인 프로젝트에서 뭔가 끊고 가야 하는 중요한 대목인데, 의견을 교환해야
하는 상대가 온 종일 회의로 자리를 비운 바람에 마침표를 못찍었다.
정말 10분 정도의 대화면 충분한 걸 못 끝내니 오후 내 찜찜한 기분.

일주일의 중반, 수요일. 요 미묘한 시간의 기운이 '오늘 요고까진!' 이라며
등을 떠밀고 있었는데....

왠지 시간을 버린듯한 이 야시꼬롬함.

에잉 퇴근이나 해야겠당.
2010/02/24 22:40 2010/02/24 22:40
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다
  1. ㅎㅎ 그런 경우 많죠.
    저는 저번주부터 완전 전쟁터예요.
    이건 흡사 4-job을 뛰는 기분이랄까...(불과 얼마전까지는 그래도 2-job 정도였는데...);;;

  2. Blog Icon
    서비

    숨은 좀 돌리면서 일하는겨?
    맡고 있는일 후딱 정리됐으면 좋겠네.

  3. Blog Icon
    써니

    오빠 화이또!!!
    아..이제야 조금 여유가 생겼당 흐흣.
    이따가 볼수있음 좋겠어용~

  4. Blog Icon
    서비

    요 몇주간 고생 많으셨어.
    고생한 만큼 좋은 결과 있어야 할텐데.
    실장님한테는 심하게 투정부리지 말고..
    이제 페이스 좀 찾도록해요.

  5. 주 프로젝트는 검수 사인만 받으면 끝이구요...
    블랙홀에 빠져 있는 프로젝트 지원 중이예요;;;

    ps. 저도 실장님한테 투정 부려볼까요;;;(한대 맞을라나;;)

나카시마 미카 - 世界中の誰よりきっと

많은 가수가 부른, 그래서 너무나 귀에 익은 곡.
사카이 노리코의 나긋한 목소리도 좋지만 역시 나카시마 미카의 곡이 더 땡기는건 어쩔수 없어.

사카이 노리코의 ..


2010/02/20 00:23 2010/02/20 00:23
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

Java 6 update 18 출시 : 성능 향상과 windows 7 지원

2010/02/04 14:56

서비 JAVA , , ,

새로운 hotspot, UI 어플리케이션의 시작과 구동 성능 향상, 우분투 8.04와 레드햇 엔터프라이즈 리눅스 5.3 및
윈도우즈7 지원, 357개의 버그 픽스가 이루어진 sun java 6 update 18 가 출시되었습니다.
JavaSE 6 Update Release Note

엔터프라이즈 개발자가 특히 흥미를 가질만한것은 가비지 컬렉션의 성능 향상일듯합니다.
Garbage First(G1) 가비지 컬렉터( 드디어 experimental 딱지를 뗐습니다.)가 신뢰성과 성능에서 괄목할 만한
향상을 이루어 냈다는겁니다. 가비지 대상 수집 처리를 병렬화(Parallel Scavenger)하고 향상된 NUMA
( Non Uniform Memory Access ) 지원이 포함됩니다.
NUMA 아키텍처는 메모리에 액세스하는 방식 중 하나로 프로세스들은 서로 다른 메모리 영역에 엑세스하는데
동일하지 않은 시간을 소비하는 특징이 있습니다.

NUMA 아키텍처..


대부분의 현대적인 컴퓨터는 이 NUMA 아키텍처에 기반하고 있습니다. Java HotSpot VM에서는 NUMA 를 이용
할 수 있는 시스템이라면  -XX:+UseNUMA 플래그를 통하여 병렬로 가비지 대상을 수집할 수 있습니다.
이 옵션의 효과는 꽤나 훌륭해서 8코어 옵테론 시스템에서 측정한 SPEC JBB 2005  ( http://www.spec.org/jbb2005/index.html )
벤치마킹에서 32비트에서 30%, 64비트에서 40%성능 향상이 있었습니다.

데스크탑 어플리케이션과 Web Start의 업데이트 주요 항목을 보고있자면 썬은 데스크탑과 RIA 마켓도
무시하지 않고 있음을 엿볼 수 있습니다.
( 개인적으로 java가 이 두 영역에서의 그다지 큰 영향력을 행사하지 못할것 같다는 생각을 하지만요..)
 - 클라이언트 서버 양쪽 VM에 새로운 java heap configuration을 적용하여 가비지 컬렉션 성능 향상.
 - 빠른 시작을 위한 클래스로딩 최적화.
 - Direct 3D를 사용할 경우 시스템에 따라 100-200ms가량 어플리케이션 시작 시간 단축.
 - JavaFX 어플리케이션의 warm start 시 15%가량 빠른 구동.
 - Web Start와 애플릿의 jar파일의 동시 다운로드
 - Java Web Start 스펙 JSR-056 을 6.0.18로 버전업하고 다수의 버그 픽스.

이 외에도 다음과 같은 변화를 포함
 - jar 파일 생성시간 20% 단축
 - JavaDB 버전 10.5.3으로 업데이트
 - VisualVM 버전 1.2.1로 업데이트
 - StaX(Streaming API for XML) 마이너 업데이트

이번 버전에 보안관련 버그 픽스 사항은 포함되지 않았습니만 이번 분기에 발표 할 다음번 업데이트에
포함될것으로 예상하고있습니다.

http://blog.sdnkorea.com/blog/504

2010/02/04 14:56 2010/02/04 14:56
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

에반게리온 파


에반게리온 파


2009/12/11 01:05 2009/12/11 01:05
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

MSSQL jdbc 드라이버 sqljdbc.jar 와 sqljdbc4.jar 의 차이점

2009/12/08 17:29

서비 JAVA ,


sqljdbc.jar

sqljdbc.jar 클래스 라이브러리는 JDBC 3.0을 지원합니다.
sqljdbc.jar 클래스 라이브러리에는 JRE(Java Runtime Environment) 버전 5.0이 필요합니다.
JRE 6.0에서 sqljdbc.jar을 사용하면 데이터베이스에 연결할 때 예외가 발생합니다.

참고: JDBC 드라이버 버전 2.0은 JRE 1.4를 지원하지 않습니다. JDBC 드라이버 버전 2.0을
        사용하려면 JRE 1.4를 JRE 5.0 이상으로 업그레이드해야 합니다.
        응용 프로그램이 JDK 5.0 이상과 호환되지 않아 다시 컴파일해야 하는 경우도 있습니다.  



sqljdbc4.jar

sqljdbc4.jar 클래스 라이브러리는 JDBC 4.0을 지원합니다.
이 라이브러리에는 sqljdbc.jar의 모든 기능과 함께 새로운 JDBC 4.0 메서드가 포함되어 있습니다.
sqljdbc4.jar 클래스 라이브러리에는 JRE(Java Runtime Environment) 버전 6.0 이상이 필요합니다.
JRE 1.4 또는 5.0에서 sqljdbc4.jar을 사용하면 예외가 발생합니다.

참고: 응용 프로그램을 JRE 6.0에서 실행해야 하는 경우에는 JDBC 4.0 기능을 사용하지 않더라도
        sqljdbc4.jar을 사용하십시오. 

http://msdn.microsoft.com/ko-kr/library/ms378422.aspx

2009/12/08 17:29 2009/12/08 17:29
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

뜻밖에도 JDK7에 Closure가 도입됩니다.

이전 Java 7 로드맵 업데이트와 커뮤니티의 반응. 포스팅을 통해 JDK7에서의 클로저 누락에 대한 언급을 한 적이 있는데요. 뜻밖에도 JDK7에 클로저를 포함하기로 했다는 뉴스를 접했습니다.

Java SE의 수석 엔지니어 Mark Reinhold는 지난 자신의 의견에 반하여 JDK7에 클로저를 도입하기로 했다는군요. JDK 출시 일정은 조금 지연되어 2010년 9월께가 될 듯합니다.

Coin 프로젝트의 수석 엔지니어인 Joseph D. Darcy는 다음 버전의 JDK7에는 BGGA의 제안과 유사한 방식의 "경량의" 클로저가 포함되며 Java 7에서 약간의 언어상 변화가 있을 것이라고 말했습니다.

썬은 java 클로저에 회의적이었지만 자바 커뮤니티는 이미 3가지의 클로저 구현 방법을 제안했었습니다.
2009/12/04 15:46 2009/12/04 15:46
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

구글이 Gears 개발을 그만 두네요.

구글이 HTML 5 지원에 힘쓰면서 Gears 개발을 그만둔 것 같습니다.
Mac OS의 크롬 버그( issue 13161 )에 대해 "Gears is not supported." 란 설명이 붙었고 이에 대해
구글 크롬 for Mac의 기술 리더인  Mike Pinkerton 는  "Mac 크롬에서 HTML5 기능 추가를 지지하고
있으며, Gear에 대한 지원은 없을 것" 이라는 코멘트를 남겼으며, 해당 버그는 "Won't Fix" 인 상태입니다.
맥용 크롬의 새 버전은 더는 오프라인 브라우징이나 드래그앤 드롭 같은 Gears의 기능을 사용할 수
없단 의미이죠.

Pinkerton의 위와같은 결정의 이유는 HTML 5에는 현재 Gears가 제공하고 있는 offline browsing같은
몇몇 기능이 포함된다는 것입니다. 단지 문제가 있다면 HTLM 5 의 완전한 표준스펙이 완성되기까지
적지않은 시간이 필요하고 IE에서도 여전히 HTML 5를 지원하고 있지 않다는것입니다.
하지만 이런 구글의 움직임은 HTML 5 성공을 확신하고 있다는 반증이며, MS 조차도 HTML 5 스펙의
일부를 IE9에 구현할 예정입니다.

Gears를 바라보는 구글의 인식은 L.A. Times reported를 통해 명확히 알 수 있습니다.


우리는 지속적으로 Gears 지원을 할 것이며 Gears를 이용하는 것을 제약하지는 않을 것이다.
하지만, 표준에 입각한 Cross Browsing이 가능하기 위해 개발자들이 HTML 5 를 이용하기를
기대한다.


이상이 의미하는 바는 현재까지의 버그는 수정하지만 더는 새로운 기능을 추가하지 않겠다는 것으로
이해하는 게 타당하겠죠. 산업계에 언제 HTML 5가 받아들여질지 모르고 시기상조일 수 도 있으나
웹 개발자들은 가능하면 HTML 5로 생각의 무대를 옮겨야 할 것 같습니다.

뭐.. 웹 개발에 얼마나 Gears가 이용되었는지도 잘 모르겠고(적어도 전 사용해 본 적이 없습니다.),
HTML5 가 언제쯤 온전한 모습을 드러낼지 가늠도 못하겠지만, 구글의 멋진 툴 하나가 선행기술 구현체
정도에서 그 소임을 다하고 이렇게 소멸하는군요.
 

2009/12/04 13:27 2009/12/04 13:27
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

cross browser iframe auto resize

firefox 3.5 에서 iframe resize 스크립트가 작동하지 않는 문제로 골머릴 썩다 발견한 해결책.

원문 : http://overfloweb.com/zbxe/?mid=study&category=363&document_srl=741

test browser : ie6, ie7, firefox 3, safari 3, chrome, opera 9
...
<iframe id="contentFrame" name="contentFrame" src="about:blank" marginwidth="0" marginheight="0" frameborder="0" width="100%" height="100%" scrolling="no"></iframe>
...

...
<div id="content">
... contents ...
</div>
...
<script type="text/javascript">
function init(){
  var doc = document.getElementById('content');
  if(doc.offsetHeight == 0){
  } else {
  pageheight = doc.offsetHeight;
  parent.document.getElementById("contentFrame").height = pageheight+"px";
  }
}
window.onload = function(){
  init();
}
</script>
...



iframe 안의 소스에서 내용이 들어가는 전체를 <div id="content"></div> 로 감싸고,

onload 이벤트로 그 div 의 dom.offsetHeight 를 구해서 parent.iframe 의 height 를 바꿔주는 방식이다.
붉은색으로 표시된 height 가 크로스 브라우징의 핵심이다.
겨우 height 가 핵심이냐고? 모르는 소리다.

clientHeight, scrollheight,innerHeight, 등등 모두 크로스브라우징은 안된다. 하지만 그냥 height 는 된다.

2009/11/16 12:23 2009/11/16 12:23
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다
  1. Blog Icon
    thisgun

    감사합니다. 안되는 문제를 이거보고 해결했어요 ^^

  2. Blog Icon
    이진영

    좋은소스가 아닙니다.
    크로스브라우징이 되지 않습니다.

...은 했지만 ...는 아니다.

2009/11/06 18:56

서비 낙서장

BBK는 내가 건립했지만 나와는 상관없는 일이다.

주소는 옮겼지만 위장전입은 아니다.

정보이용해서 땅을 왕창 샀지만 땅투기는 아니다. 

자식새끼들, 운전기사 모두 위장취업 시켰지만 탈세목적은 아니다.

종교의 자유는 있지만 서울시는 이미 봉헌했다.

종교차별은 없지만 땡중들 절간은 지리정보 '알고라' 죄다 누락이다.

전 대통령에 대한 예우는 하겠지만 비서관들은 잡아족치겠다.

카트는 몰았지만 부시 애완견은 아니다.

독도는 우리땅이지만 일본은 기다려 달라.

녹색성장을 하겠지만 그린벨트는 해제한다.

4대강을 살려야 하지만 강바닥은 파야한다.

서민을 위하는 정부지만 2% 강부자 종부세는 반드시 폐지하겠다.

미분양은 많지만 공급 부족이니까 아파트 종니 지어 벌이겠다.

리먼브러더스를 인수하는것은 금융강국으로 가는 지름길이지만 리먼브러더스는 부도났다.

언론의 자유는 중요하지만 방송사 사장인사는 낙하산이다.

임기는 보장하겠지만 사퇴압력은 넣겠다.

산에 올라 촛불보고 눈물을 흘리면서 반성했지만 유모차 부대는 아동학대죄다.

집회의 자유는 보장하겠지만 집회는 원천봉쇄하겠다.

야간집회금지은 헌법위배지만 그래도 체포는 계속되어야 한다.

표현의 자유는 보장하겠지만 인터넷은 고소없이 수사하겠다.

오사카에서 태어났지만 고향은 포항이다.

전과 14범이지만 가훈은 정직이다.

파병이야기는 안했지만 파병논의는 했다.

멜라민 위험은 정확히 알고 있지만 대책은 성분표시이다.

가스공급 민간참여 시키겠지만 민영화는 아니다.

인천공항이 세계공항평가 1위지만 부실한경영으로 민영화가 되야한다.

복지예산 4000억 넘게 삭감했지만 국민복지는 향상시키겠다

장애인을 바라보며 눈물은 흘렸지만 장애인복지예산은 삭감시켜야만했다.

농촌에서 모내기하며 막걸리는 마셨지만 농업용전기비는 인상시켜야한다.

취임1년내 주가 3000 간다 했지만, 목표는 주가 747이다.

서민물가는 잡겠지만 환율은 올라야 한다.

미디어법은 절차상 위법이지만 법안은 유효하다.

정몽준의원 뉴타운 허위공약했지만 벌금80만원이므로 의원직은 유효하다
2009/11/06 18:56 2009/11/06 18:56
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다