<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DEAARHg-fSp7ImA9WhRRFE4.&quot;"><id>tag:blogger.com,1999:blog-6674595739722378828</id><updated>2011-11-27T15:32:25.655-08:00</updated><category term="matplotlib" /><category term="virtualbox" /><category term="opencv" /><category term="Riccati equation" /><category term="ode" /><category term="list" /><category term="camera" /><category term="wxpython" /><category term="pylab" /><category term="caml" /><category term="map" /><category term="VideoCapture" /><category term="메모리누수" /><category term="lambda" /><category term="functional program" /><category term="cvGetSubRect" /><category term="ipython" /><category term="thread" /><category term="pickle" /><category term="array" /><category term="pyode" /><category term="matlab" /><category term="vpython" /><category term="numpy" /><category term="for" /><category term="iterator" /><category term="코드카타" /><category term="matrix" /><category term="python" /><category term="scipy" /><category term="bayesian network" /><category term="tow" /><category term="stats" /><category term="xode" /><category term="RFID" /><category term="mindmap" /><category term="machine learning" /><category term="svn" /><category term="lineiterator" /><title>python 마니아</title><subtitle type="html">사실 마니아 정도는 아니고 애호가? 아흥~!</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://weise12.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://weise12.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>None</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>93</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/blogspot/HJtEN" /><feedburner:info uri="blogspot/hjten" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;CkMDQ3s6fip7ImA9WhRREE4.&quot;"><id>tag:blogger.com,1999:blog-6674595739722378828.post-4785266211752299180</id><published>2011-11-22T22:41:00.001-08:00</published><updated>2011-11-22T22:41:12.516-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-22T22:41:12.516-08:00</app:edited><title>아...</title><content type="html">&lt;pre&gt;졸업 논문 땜시 바빠서 글을 쓰질 못했네..&lt;/pre&gt;
&lt;pre&gt;이런...
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6674595739722378828-4785266211752299180?l=weise12.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/l1TmLFZ3xTsNnQCHHi626HYG2fk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/l1TmLFZ3xTsNnQCHHi626HYG2fk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/l1TmLFZ3xTsNnQCHHi626HYG2fk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/l1TmLFZ3xTsNnQCHHi626HYG2fk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HJtEN/~4/V-EsOCJwQ3I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weise12.blogspot.com/feeds/4785266211752299180/comments/default" title="댓글" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6674595739722378828&amp;postID=4785266211752299180" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/4785266211752299180?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/4785266211752299180?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HJtEN/~3/V-EsOCJwQ3I/blog-post.html" title="아..." /><author><name>None</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://weise12.blogspot.com/2011/11/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcFRX8-fyp7ImA9WhdVEEo.&quot;"><id>tag:blogger.com,1999:blog-6674595739722378828.post-7250366104308244339</id><published>2011-09-15T00:33:00.000-07:00</published><updated>2011-09-15T00:33:34.157-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-15T00:33:34.157-07:00</app:edited><title>0.MPI란 ?</title><content type="html">&lt;pre style="font-family: inherit;"&gt;&lt;span style="border-collapse: separate; color: black; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;1. MPI란?&lt;/span&gt;&lt;/pre&gt;
&lt;blockquote style="font-family: inherit;"&gt;
&lt;div&gt;
&lt;span style="border-collapse: separate; color: black; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="border-collapse: separate; color: black; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;"MPI, the&amp;nbsp;&lt;b&gt;Message Passing Interface&lt;/b&gt;, is a standardized and portable message-passing system designed by a group of researchers from academia and industry to function on a wide variety of parallel computers."&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: small;"&gt;"MPI is a&lt;/span&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Message-passing" title="Message-passing"&gt;message-passing&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;application programmer interface, together with protocol and semantic specifications for how its features must behave in any implementation."&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div style="font-family: inherit;"&gt;
&lt;span style="border-collapse: separate; color: black; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: inherit;"&gt;
&lt;span style="font-size: small;"&gt;MPI는 메세지 패싱 인터페이스의 약자로서 다양한 종류의 병렬 컴퓨터를 구성하기 위해 사용되는 표준화 된 메세지 전달 시스템을 뜻한다.&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: inherit;"&gt;
&lt;span style="font-size: small;"&gt;MPI의 기본 통신 방법으로는 Point-to-Point 통신과 collective 통신이 있다. MPI의 목적은 고성능의 확장성과 호환성을 가진 병렬 프로그램을 작성하는 것이다. MPI는 오늘날 까지 고성능 컴퓨팅 환경에서 주된 모델로 남아있다.&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: inherit;"&gt;
&lt;/div&gt;
&lt;div style="font-family: inherit;"&gt;
&lt;span style="font-size: small;"&gt;MPI는 주요한 표준화 기관에서 인증한 통신 표준은 아니지만 분산 메모리 환경에서 동작하는 병렬 프로그램들의 프로세스간의 통신의 "사실상의(de facto)" 표준이라고 할 수 있다. MPI-1에서는 공유메모리 개념이 존재 하지 않는다. MPI-2에서는 단지 제한된 분산공유메모리(distributed shared memory)개념을 지원한다. 그럼에도 MPI 프로그램들은 종종 공유메모리를 가진 컴퓨터 환경에서 실행되기도 한다. &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: inherit;"&gt;
&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: inherit;"&gt;
&lt;span style="font-size: small;"&gt;병렬 컴퓨팅은 크게&amp;nbsp;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;Threaded shared memory programming models (such as&lt;/span&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Pthreads" title="Pthreads"&gt;Pthreads&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;and&lt;/span&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/OpenMP" title="OpenMP"&gt;OpenMP&lt;/a&gt;) 와 message passing programming (MPI/PVM)로 구분 할 수 있다. (물론 일부 프로젝트에서는 두 가지 프로그램 구조를 병용하기도 한다.)&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: inherit;"&gt;
&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: inherit;"&gt;
&lt;span style="font-size: small;"&gt;현재는 검증된 효율적으로 동작하는 public domain이나 free version의 여러 implementation들이 있다.&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: inherit;"&gt;
&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: inherit;"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="border-collapse: separate; color: black; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;MPI는 OSI reference model에서 layer 5나 그 이상의 레이어에 속하지만, 이들의 implementation은 대부분의 layer를 건드린다. 그리고 transport layer에 Socket과 TCP(transmission control protocol)를 사용한다.&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: inherit;"&gt;
&lt;span style="font-size: small;"&gt;&amp;nbsp;
&lt;span style="border-collapse: separate; color: black; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;-MPI의 Implementation language는 기본적으로 c++,c 그리고 Fortran 언어로 이루어져 있다. 그리고 이들의 binding을 제공하는 언어로는 Perl, Python, R, Ruby, Java, Objective Caml,C# 등이 있다. Common language interface (CLI).net inplementation도 2가지 존재한다. (이전에 존재하던 message passing library보다 더 나은 점은 C/C++/Fortran등으로 만든 implementation들이 하드웨어에 좀더 최적화 되어 동작한다는 것이다.)&lt;/span&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;div style="font-family: inherit;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: inherit;"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="border-collapse: separate; color: black; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;MPI는 함수 호출과 타 언어 binding에 Language Independent Specification (LIS)를 사용한다. 최초의 MPI standard는 ANSI C와 Fortran-77을 이용해 구현되고 LIS를 이용해서 binding 되었다. &amp;nbsp;1994년 November(11월)에 개최된 Supercomputing 1994에서 draft가 제출되고 그후 얼마 지나지 않아 최종버전이 출시 되었다. 그리고 MPI-1 시리즈의 최종 버전인 MPI 1.3이 2008년에 릴리즈 되었다. 이것은 약 128개의 함수로 구성된 라이브러리 인다. &amp;nbsp;지금까지 몇 종류의 유명한 version들이 존재한다. 1.3 버전은 message passin을 핵심으로 하고 static한 런타임 환경에서 동작한다. 그리고 2.2 version (MPI-2)는 거기에 병렬 I/O와 동적 프로세스 매니지먼트, 그리고 remote memory operation 등의 기능이 추가 되었다. MPI-2의 LPI는 약 500가지의 함수를 제공하고 ANSI C, ANSI C++ ANSI Fortran(Fortran90)에 대한 binding을 제공한다. 쉬운 mixed language message passing program을 위해서 객체의 상호운용성(? interoperability) 또한 고려 되었다.&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: inherit;"&gt;
&lt;span style="font-size: small;"&gt;&amp;nbsp;
&lt;span style="border-collapse: separate; color: black; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;br /&gt;
몇 몇 함수는 MPI-2의 에서 제외될 뻔 하였지만, MPI-2는 MPI-1을 거의 대부분 포함하고 있다. 그래서 MPI-1.3로 작성된 프로그램도 대부분 MPI-2 표준에서도 동작한다.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: inherit;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: inherit;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;span style="font-size: small;"&gt;&lt;br style="font-family: inherit;" /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="font-family: inherit;"&gt;
&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: inherit;"&gt;
&lt;span style="font-size: small;"&gt;MPI interface는 node/server/computer instace들에 mapping된 process들 간에 언어 독립적인 가상적 topology와 동기화, 통신 기능을 제공하기 위한 목적으로 만들어 졌다. (물론 몇가지의 언어 의존적인 feature들도 존재한다) MPI 프로그램은 항상 프로세스가지고 작업을 수행하지만, 프로그래머는 일반적으로 프로세스를 하나의 프로세서로 볼 수 있다. 최대 성능을 위해서 일반적으로 하나의 프로세당 (멀티 코어의 경우는 하나의 코어당) 하나의 프로세스를 할당하게된다. 이것은 mpirun혹은 mpiexec라고 불리우는 MPI 프로그램을 시작하는 프로그램에 의해서 일어난다.&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: inherit;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: inherit;"&gt;
&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: inherit;"&gt;
&lt;span style="font-size: small;"&gt;지원하는 operation&lt;/span&gt;&lt;/div&gt;
&lt;ul style="font-family: inherit;"&gt;
&lt;li&gt;&lt;span style="font-size: small;"&gt; point-to-point rendzvous-type send/receive operations&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;"&gt;Cartesian or graph-like logical process topology&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;"&gt;exchanging data between prcess pairs (send recive operations)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;"&gt;combining partial results of computations&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;"&gt;point to point operations&lt;/span&gt;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-size: small;"&gt;synchronous&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;"&gt;asynchronous -&amp;gt; 이 모드에 많은 함수들이 구현되어있음&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;"&gt;buffered&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;"&gt;ready형식&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;div style="font-family: inherit;"&gt;
&lt;span style="font-size: small;"&gt;&amp;nbsp;그리고 추가적인 특성&lt;/span&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;div style="font-family: inherit;"&gt;
&lt;span style="font-size: small;"&gt;&amp;nbsp;"MPI-1 and MPI-2 both enable implementations that overlap communication and computation, but practice and theory differ. MPI also specifies&amp;nbsp;&lt;i&gt;&lt;a href="http://en.wikipedia.org/wiki/Thread_safe" title="Thread safe"&gt;thread safe&lt;/a&gt;&lt;/i&gt;&amp;nbsp;interfaces, which have&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Cohesion_%28computer_science%29" title="Cohesion (computer science)"&gt;cohesion&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Coupling_%28computer_science%29" title="Coupling (computer science)"&gt;coupling&lt;/a&gt;&amp;nbsp;strategies that help avoid hidden state within the interface. It is relatively easy to write multithreaded point-to-point MPI code, and some implementations support such code.&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Multithreaded" title="Multithreaded"&gt;Multithreaded&lt;/a&gt;&amp;nbsp;collective communication is best accomplished with multiple copies of Communicators, as described below."&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="border-collapse: separate; color: black; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="border-collapse: separate; color: black; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="border-collapse: separate; color: black; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="border-collapse: separate; color: black; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="border-collapse: separate; color: black; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="font-family: inherit;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: inherit;"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="border-collapse: separate; color: black; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;pre style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;References &lt;/span&gt;&lt;span style="border-collapse: separate; color: black; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;ul style="font-family: inherit;"&gt;
&lt;li&gt;&lt;pre&gt;&lt;span style="border-collapse: separate; color: black; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Message_Passing_Interface"&gt;http://en.wikipedia.org/wiki/Message_Passing_Interface&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="font-family: inherit;"&gt;&lt;/pre&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6674595739722378828-7250366104308244339?l=weise12.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Y1bz2DqyEMX1dxh0pCNBx6KPphg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Y1bz2DqyEMX1dxh0pCNBx6KPphg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Y1bz2DqyEMX1dxh0pCNBx6KPphg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Y1bz2DqyEMX1dxh0pCNBx6KPphg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HJtEN/~4/urBlCXmHBAk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weise12.blogspot.com/feeds/7250366104308244339/comments/default" title="댓글" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6674595739722378828&amp;postID=7250366104308244339" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/7250366104308244339?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/7250366104308244339?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HJtEN/~3/urBlCXmHBAk/mpi.html" title="0.MPI란 ?" /><author><name>None</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://weise12.blogspot.com/2011/09/mpi.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE8DSHg6eip7ImA9WhdWGUs.&quot;"><id>tag:blogger.com,1999:blog-6674595739722378828.post-8942679442942628761</id><published>2011-09-13T19:21:00.000-07:00</published><updated>2011-09-13T19:21:19.612-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-13T19:21:19.612-07:00</app:edited><title>Python MPI 설정 및 프로그램 관련 연재 예고.</title><content type="html">&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;논문 연구 때문에 MPI 시스템을 구축 할 기회가 있었는데,&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;이에 대해서 정리하는 글을 쓰려고 한다. 연재 순서는 다음과 같다.&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;1. window 상에서의 MPI system 구축 하기&lt;/pre&gt;
&lt;pre&gt;2. python MPI 설정 하기&lt;/pre&gt;
&lt;pre&gt;3. 기본 python MPI programming&lt;/pre&gt;
&lt;pre&gt;&lt;/pre&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6674595739722378828-8942679442942628761?l=weise12.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/m8bPvnQk6StxfQ8Y_PdwiSlDtLw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/m8bPvnQk6StxfQ8Y_PdwiSlDtLw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/m8bPvnQk6StxfQ8Y_PdwiSlDtLw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/m8bPvnQk6StxfQ8Y_PdwiSlDtLw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HJtEN/~4/ztooMF1MTRc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weise12.blogspot.com/feeds/8942679442942628761/comments/default" title="댓글" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6674595739722378828&amp;postID=8942679442942628761" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/8942679442942628761?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/8942679442942628761?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HJtEN/~3/ztooMF1MTRc/python-mpi.html" title="Python MPI 설정 및 프로그램 관련 연재 예고." /><author><name>None</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://weise12.blogspot.com/2011/09/python-mpi.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0MGRX4-eip7ImA9Wx9TGUQ.&quot;"><id>tag:blogger.com,1999:blog-6674595739722378828.post-3586736813163317003</id><published>2010-11-28T17:50:00.000-08:00</published><updated>2010-11-28T17:50:24.052-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-28T17:50:24.052-08:00</app:edited><title>Convert Watts to dBm</title><content type="html">&lt;pre&gt;Convert Watts to dBm 
&lt;a href="http://www.radius.net/power-to-dbm-conversion.html"&gt;http://www.radius.net/power-to-dbm-conversion.html&lt;/a&gt;&lt;/pre&gt;dbm 으로 프로그램 짤 일이 생겨서.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6674595739722378828-3586736813163317003?l=weise12.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/tZ1jjjFm3X-E7gPSkwSs8kmT500/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tZ1jjjFm3X-E7gPSkwSs8kmT500/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/tZ1jjjFm3X-E7gPSkwSs8kmT500/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tZ1jjjFm3X-E7gPSkwSs8kmT500/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HJtEN/~4/QfWBKRfKa_I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weise12.blogspot.com/feeds/3586736813163317003/comments/default" title="댓글" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6674595739722378828&amp;postID=3586736813163317003" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/3586736813163317003?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/3586736813163317003?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HJtEN/~3/QfWBKRfKa_I/convert-watts-to-dbm.html" title="Convert Watts to dBm" /><author><name>None</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://weise12.blogspot.com/2010/11/convert-watts-to-dbm.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEUGQXw8cSp7ImA9Wx9TFkQ.&quot;"><id>tag:blogger.com,1999:blog-6674595739722378828.post-1846568582600724495</id><published>2010-11-25T06:43:00.000-08:00</published><updated>2010-11-25T06:43:40.279-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-25T06:43:40.279-08:00</app:edited><title>안테나 관련</title><content type="html">&lt;pre&gt;&lt;a href="http://www.emtalk.com/tut_1.htm"&gt;http://www.emtalk.com/tut_1.htm&lt;/a&gt;
&lt;a href="http://en.wikipedia.org/wiki/Microstrip_antenna"&gt;http://en.wikipedia.org/wiki/Microstrip_antenna&lt;/a&gt;
&lt;a href="http://en.wikipedia.org/wiki/Patch_antenna"&gt;http://en.wikipedia.org/wiki/Patch_antenna&lt;/a&gt;
&lt;a href="http://www.emtalk.com/mpacalc.php"&gt;http://www.emtalk.com/mpacalc.php&lt;/a&gt;
&lt;/pre&gt;요즘 시뮬레이션 때문에 자료를 찾다가 정리를 해둔다.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6674595739722378828-1846568582600724495?l=weise12.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8Yz4TsNGKtToPCZZ__cKrMYoUaY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8Yz4TsNGKtToPCZZ__cKrMYoUaY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8Yz4TsNGKtToPCZZ__cKrMYoUaY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8Yz4TsNGKtToPCZZ__cKrMYoUaY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HJtEN/~4/z4LMcZy-D-w" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weise12.blogspot.com/feeds/1846568582600724495/comments/default" title="댓글" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6674595739722378828&amp;postID=1846568582600724495" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/1846568582600724495?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/1846568582600724495?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HJtEN/~3/z4LMcZy-D-w/blog-post_25.html" title="안테나 관련" /><author><name>None</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://weise12.blogspot.com/2010/11/blog-post_25.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QFSHgzeip7ImA9Wx9TFUo.&quot;"><id>tag:blogger.com,1999:blog-6674595739722378828.post-3252458836442495228</id><published>2010-11-23T21:08:00.000-08:00</published><updated>2010-11-23T21:08:39.682-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-23T21:08:39.682-08:00</app:edited><title>python에서 3d plot그리기.</title><content type="html">&lt;a href="http://code.enthought.com/projects/mayavi/docs/development/html/mayavi/index.html"&gt;mayavi-mlab&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
이거 사실 써봤는데, 그냥 3d 플롯만하려면 그리 어렵지 않지만, 이녀석이 제공하는 여러가지 기능들을 제대로 쓰려면 공부가 많이 필요할 듯. 그런게 아니라 그냥 데이터 플롯만 하려고 한다면  &lt;a href="http://code.enthought.com/projects/mayavi/docs/development/html/mayavi/mlab.html"&gt;&lt;/a&gt; 이 링크만으로도 충분 할 듯하고 말이지.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6674595739722378828-3252458836442495228?l=weise12.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/4RoYV4uEZwQ04c_nJkuaimh4cJA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4RoYV4uEZwQ04c_nJkuaimh4cJA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/4RoYV4uEZwQ04c_nJkuaimh4cJA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4RoYV4uEZwQ04c_nJkuaimh4cJA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HJtEN/~4/Jz867_aYjdk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weise12.blogspot.com/feeds/3252458836442495228/comments/default" title="댓글" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6674595739722378828&amp;postID=3252458836442495228" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/3252458836442495228?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/3252458836442495228?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HJtEN/~3/Jz867_aYjdk/python-3d-plot.html" title="python에서 3d plot그리기." /><author><name>None</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://weise12.blogspot.com/2010/11/python-3d-plot.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8ERXk6fSp7ImA9Wx5aGEQ.&quot;"><id>tag:blogger.com,1999:blog-6674595739722378828.post-194841441826045873</id><published>2010-11-15T23:33:00.000-08:00</published><updated>2010-11-15T23:33:24.715-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-15T23:33:24.715-08:00</app:edited><title>axis</title><content type="html">pylab (matplotlib)에서 axis를 이용해서 그릴 영역을 설정해 줄 수 있다. &lt;br /&gt;
&lt;blockquote&gt;&lt;pre&gt;&lt;span class="n"&gt;plot&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="s"&gt;'go-'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;label&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;'line 1'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;linewidth&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;plot&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="s"&gt;'rs'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="n"&gt;label&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;'line 2'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;axis&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;span class="n"&gt;legend&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/pre&gt;&lt;/blockquote&gt;이것을 라이브러리에서 살펴보면. &lt;br /&gt;
&lt;blockquote&gt;&lt;br /&gt;
&lt;dl class="function"&gt;&lt;dt id="matplotlib.pyplot.axis"&gt; &lt;tt class="descclassname"&gt;matplotlib.pyplot.&lt;/tt&gt;&lt;tt class="descname"&gt;axis&lt;/tt&gt;&lt;big&gt;(&lt;/big&gt;&lt;em&gt;*v&lt;/em&gt;, &lt;em&gt;**kwargs&lt;/em&gt;&lt;big&gt;)&lt;/big&gt;&lt;a class="headerlink" href="http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.axis" title="Permalink to this definition"&gt;¶&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;Set/Get the axis properties:
&lt;div class="highlight-python"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="gp"&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/span&gt;&lt;span class="n"&gt;axis&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="color: red;"&gt;returns the current axes limits &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;[xmin,&lt;/span&gt; &lt;span class="pre"&gt;xmax,&lt;/span&gt; &lt;span class="pre"&gt;ymin,&lt;/span&gt; &lt;span class="pre"&gt;ymax]&lt;/span&gt;&lt;/tt&gt;.&lt;/div&gt;&lt;div class="highlight-python"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="gp" style="color: red;"&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/span&gt;&lt;span class="n" style="color: red;"&gt;axis&lt;/span&gt;&lt;span class="p" style="color: red;"&gt;(&lt;/span&gt;&lt;span class="n" style="color: red;"&gt;v&lt;/span&gt;&lt;span class="p" style="color: red;"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;sets the min and max of the x and y axes, with &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;v&lt;/span&gt; &lt;span class="pre"&gt;=&lt;/span&gt; &lt;span class="pre"&gt;[xmin,&lt;/span&gt; &lt;span class="pre"&gt;xmax,&lt;/span&gt; &lt;span class="pre"&gt;ymin,&lt;/span&gt; &lt;span class="pre"&gt;ymax]&lt;/span&gt;&lt;/tt&gt;.
&lt;div class="highlight-python"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="gp"&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/span&gt;&lt;span class="n"&gt;axis&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'off'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="color: red;"&gt;turns off the axis lines and labels.&lt;/div&gt;&lt;div class="highlight-python"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="gp" style="color: red;"&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/span&gt;&lt;span class="n" style="color: red;"&gt;axis&lt;/span&gt;&lt;span class="p" style="color: red;"&gt;(&lt;/span&gt;&lt;span class="s" style="color: red;"&gt;'equal'&lt;/span&gt;&lt;span class="p" style="color: red;"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;changes limits of &lt;em&gt;x&lt;/em&gt; or &lt;em&gt;y&lt;/em&gt; axis so that equal increments of &lt;em&gt;x&lt;/em&gt; and &lt;em&gt;y&lt;/em&gt; have the same length; a circle is circular.
&lt;div class="highlight-python"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="gp"&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/span&gt;&lt;span class="n"&gt;axis&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'scaled'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;achieves the same result by changing the dimensions of the plot box instead of the axis data limits.
&lt;div class="highlight-python"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="gp"&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/span&gt;&lt;span class="n"&gt;axis&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'tight'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;changes &lt;em&gt;x&lt;/em&gt; and &lt;em&gt;y&lt;/em&gt; axis limits such that all data is shown. If all data is already shown, it will move it to the center of the figure without modifying (&lt;em&gt;xmax&lt;/em&gt; - &lt;em&gt;xmin&lt;/em&gt;) or (&lt;em&gt;ymax&lt;/em&gt; - &lt;em&gt;ymin&lt;/em&gt;). Note this is slightly different than in MATLAB.
&lt;div class="highlight-python"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="gp"&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/span&gt;&lt;span class="n"&gt;axis&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'image'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;is ‘scaled’ with the axis limits equal to the data limits.
&lt;div class="highlight-python"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="gp"&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/span&gt;&lt;span class="n"&gt;axis&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'auto'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;and
&lt;div class="highlight-python"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="gp"&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/span&gt;&lt;span class="n"&gt;axis&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'normal'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;are deprecated. They restore default behavior; axis limits are automatically scaled to make the data fit comfortably within the plot box.
if &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;len(*v)==0&lt;/span&gt;&lt;/tt&gt;, you can pass in &lt;em&gt;xmin&lt;/em&gt;, &lt;em&gt;xmax&lt;/em&gt;, &lt;em&gt;ymin&lt;/em&gt;, &lt;em&gt;ymax&lt;/em&gt; as kwargs selectively to alter just those limits without changing the others.
The xmin, xmax, ymin, ymax tuple is returned
&lt;div class="admonition-see-also admonition seealso"&gt; &lt;div class="first admonition-title"&gt;See also&lt;/div&gt;&lt;dl class="last docutils"&gt;&lt;dt&gt;&lt;a class="reference internal" href="http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.xlim" title="matplotlib.pyplot.xlim"&gt;&lt;tt class="xref py py-func docutils literal"&gt;&lt;span class="pre"&gt;xlim()&lt;/span&gt;&lt;/tt&gt;&lt;/a&gt;, &lt;a class="reference internal" href="http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.ylim" title="matplotlib.pyplot.ylim"&gt;&lt;tt class="xref py py-func docutils literal"&gt;&lt;span class="pre"&gt;ylim()&lt;/span&gt;&lt;/tt&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;For setting the x- and y-limits individually.&lt;/dd&gt;&lt;/dl&gt;&lt;/div&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;/blockquote&gt;&amp;nbsp;ploting 할때 유용하다.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6674595739722378828-194841441826045873?l=weise12.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ZLC9MhWl4dxBs1C22ujdUmVFwqQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZLC9MhWl4dxBs1C22ujdUmVFwqQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ZLC9MhWl4dxBs1C22ujdUmVFwqQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZLC9MhWl4dxBs1C22ujdUmVFwqQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HJtEN/~4/9KEYFIXaT60" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weise12.blogspot.com/feeds/194841441826045873/comments/default" title="댓글" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6674595739722378828&amp;postID=194841441826045873" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/194841441826045873?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/194841441826045873?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HJtEN/~3/9KEYFIXaT60/axis.html" title="axis" /><author><name>None</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://weise12.blogspot.com/2010/11/axis.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck4CSXY7cCp7ImA9Wx5aFUk.&quot;"><id>tag:blogger.com,1999:blog-6674595739722378828.post-3143335452233733483</id><published>2010-11-11T21:49:00.000-08:00</published><updated>2010-11-11T21:49:28.808-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-11T21:49:28.808-08:00</app:edited><title>filter 내장함수와 itertools에 ifilter, ifilterFalse</title><content type="html">&lt;blockquote&gt;&lt;br /&gt;
&lt;dl class="function"&gt;&lt;dt id="filter"&gt;&lt;tt class="descname"&gt;filter&lt;/tt&gt;&lt;big&gt;(&lt;/big&gt;&lt;i&gt;function&lt;/i&gt;, &lt;i&gt;iterable&lt;/i&gt;&lt;big&gt;)&lt;/big&gt;&lt;a class="headerlink" href="http://docs.python.org/library/functions.html#filter" title="Permalink to this definition"&gt;¶&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;Construct a list from those elements of &lt;i&gt;iterable&lt;/i&gt; for which &lt;i&gt;function&lt;/i&gt; returns true.  &lt;i&gt;iterable&lt;/i&gt; may be either a sequence, a container which supports iteration, or an iterator.  If &lt;i&gt;iterable&lt;/i&gt; is a string or a tuple, the result also has that type; otherwise it is always a list.  If &lt;i&gt;function&lt;/i&gt; is &lt;tt class="xref docutils literal"&gt;&lt;span class="pre"&gt;None&lt;/span&gt;&lt;/tt&gt;, the identity function is assumed, that is, all elements of &lt;i&gt;iterable&lt;/i&gt; that are false are removed. Note that &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;filter(function,&lt;/span&gt; &lt;span class="pre"&gt;iterable)&lt;/span&gt;&lt;/tt&gt; is equivalent to &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;[item&lt;/span&gt; &lt;span class="pre"&gt;for&lt;/span&gt; &lt;span class="pre"&gt;item&lt;/span&gt; &lt;span class="pre"&gt;in&lt;/span&gt; &lt;span class="pre"&gt;iterable&lt;/span&gt; &lt;span class="pre"&gt;if&lt;/span&gt; &lt;span class="pre"&gt;function(item)]&lt;/span&gt;&lt;/tt&gt; if function is not &lt;tt class="xref docutils literal"&gt;&lt;span class="pre"&gt;None&lt;/span&gt;&lt;/tt&gt; and &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;[item&lt;/span&gt; &lt;span class="pre"&gt;for&lt;/span&gt; &lt;span class="pre"&gt;item&lt;/span&gt; &lt;span class="pre"&gt;in&lt;/span&gt; &lt;span class="pre"&gt;iterable&lt;/span&gt; &lt;span class="pre"&gt;if&lt;/span&gt; &lt;span class="pre"&gt;item]&lt;/span&gt;&lt;/tt&gt; if function is &lt;tt class="xref docutils literal"&gt;&lt;span class="pre"&gt;None&lt;/span&gt;&lt;/tt&gt;. See &lt;a class="reference external" href="http://docs.python.org/library/itertools.html#itertools.ifilter" title="itertools.ifilter"&gt;&lt;tt class="xref docutils literal"&gt;&lt;span class="pre"&gt;itertools.ifilter()&lt;/span&gt;&lt;/tt&gt;&lt;/a&gt; and &lt;a class="reference external" href="http://docs.python.org/library/itertools.html#itertools.ifilterfalse" title="itertools.ifilterfalse"&gt;&lt;tt class="xref docutils literal"&gt;&lt;span class="pre"&gt;itertools.ifilterfalse()&lt;/span&gt;&lt;/tt&gt;&lt;/a&gt; for iterator versions of this function, including a variation that filters for elements where the &lt;i&gt;function&lt;/i&gt; returns false.&lt;/dd&gt;&lt;/dl&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;br /&gt;
프로그램시에 리스트나 튜플 같은 목록에서 (혹은 모든 iterable한 object 중에서) 특정한 조건을 만족하는 녀석들을 찾아 내고 싶을 때 사용하는 함수이다. function은 조건 함수로서 True확은 False를 return하는 녀석이다. 물론 0이나 빈 리스트와 같은 녀석들을 False로 인식하므로 이런 것들을 return 하는 것도 가능하지만 썩 좋은 프로그램 습관은 아닌 듯하다. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&amp;gt;&amp;gt;&amp;gt; if (): True;&lt;br /&gt;
... else: False&lt;br /&gt;
...&lt;br /&gt;
False&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; if []: True;&lt;br /&gt;
... else : False&lt;br /&gt;
...&lt;br /&gt;
False&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; if None: True;&lt;br /&gt;
... else : False&lt;br /&gt;
...&lt;br /&gt;
False&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; if 0: True;&lt;br /&gt;
... else : False&lt;br /&gt;
...&lt;br /&gt;
False&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; if "": True;&lt;br /&gt;
... else : False&lt;br /&gt;
...&lt;br /&gt;
False&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&lt;/blockquote&gt;&lt;br /&gt;
&amp;nbsp;중요한 사실 중의 하나가, filter 함수는 결과값을 계산할 때 변수들을 iterable한 object에서 모두 빼낸 다음, 그것을 리스트에 몽땅 뭉쳐서&amp;nbsp; return 한다는 것이다. 하지만 만일 리스트가 무한 한 (예를 들어 itertools에&amp;nbsp; count와 같은) 녀석이거나 크기가 아주 큰데 이중에 나중에 쓰일 것은 얼마되지 않는다고 하면 이것은 상당한 낭비가 될 수 있을 것이다. 따라서 이러한 경우에는 다음의 itertools 모듈 내에 있는 ifilter나 ifilterFalse 함수를 사용하는 것이 적절 하다. 이 함수들은 결과 값을 리스트 대신에 iterator로 돌려준다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&amp;gt;&amp;gt;&amp;gt; filter(lambda x : x &amp;lt;5, range(10))&lt;br /&gt;
[0, 1, 2, 3, 4]&lt;/blockquote&gt;&amp;nbsp;위의 예는 filter가 결과 값을 list로 돌 려주는 것을 보여주는 것이다.&lt;br /&gt;
그러나 아래의&amp;nbsp; ifilter 함수는 iterator object를 돌려준다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&amp;gt;&amp;gt;&amp;gt; from itertools import ifilter&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; from itertools import count&lt;/blockquote&gt;&lt;br /&gt;
&lt;blockquote&gt;&amp;gt;&amp;gt;&amp;gt; x = ifilter(lambda x : x &amp;lt;5, range(10))&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; x&lt;br /&gt;
&lt;itertools.ifilter 0x00ff18f0="" at="" object=""&gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; x.next&lt;br /&gt;
&lt;method-wrapper 0x00ff18f0="" at="" itertools.ifilter="" next="" object="" of=""&gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; x.next()&lt;br /&gt;
0&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; x.next()&lt;br /&gt;
1&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; x.next()&lt;br /&gt;
2&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; x.next()&lt;br /&gt;
3&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; x.next()&lt;br /&gt;
4&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; x.next()&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
&amp;nbsp; File "&lt;stdin&gt;", line 1, in &lt;module&gt;&lt;br /&gt;
StopIteration&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; &lt;/module&gt;&lt;/stdin&gt;&lt;/method-wrapper&gt;&lt;/itertools.ifilter&gt;&lt;/blockquote&gt;&lt;br /&gt;
&amp;nbsp;만일 큰 수열을 다룰 경우에는 ifilter와 ifilterFalse를 사용하는 것이 적절 할 것이라고 생각된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&lt;br /&gt;
&lt;dl class="function"&gt;&lt;dt id="itertools.ifilter"&gt; &lt;tt class="descclassname"&gt;itertools.&lt;/tt&gt;&lt;tt class="descname"&gt;ifilter&lt;/tt&gt;&lt;big&gt;(&lt;/big&gt;&lt;i&gt;predicate&lt;/i&gt;, &lt;i&gt;iterable&lt;/i&gt;&lt;big&gt;)&lt;/big&gt;&lt;a class="headerlink" href="http://docs.python.org/library/itertools.html#itertools.ifilter" title="Permalink to this definition"&gt;¶&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;Make an iterator that filters elements from iterable returning only those for which the predicate is &lt;tt class="xref docutils literal"&gt;&lt;span class="pre"&gt;True&lt;/span&gt;&lt;/tt&gt;. If &lt;i&gt;predicate&lt;/i&gt; is &lt;tt class="xref docutils literal"&gt;&lt;span class="pre"&gt;None&lt;/span&gt;&lt;/tt&gt;, return the items that are true. Equivalent to: 
&lt;div class="highlight-python"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;ifilter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;predicate&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;iterable&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="c"&gt;# ifilter(lambda x: x%2, range(10)) --&amp;gt; 1 3 5 7 9&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;predicate&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;predicate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;bool&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;iterable&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;predicate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="k"&gt;yield&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;dl class="function"&gt;&lt;dt id="itertools.ifilterfalse"&gt; &lt;tt class="descclassname"&gt;itertools.&lt;/tt&gt;&lt;tt class="descname"&gt;ifilterfalse&lt;/tt&gt;&lt;big&gt;(&lt;/big&gt;&lt;i&gt;predicate&lt;/i&gt;, &lt;i&gt;iterable&lt;/i&gt;&lt;big&gt;)&lt;/big&gt;&lt;a class="headerlink" href="http://docs.python.org/library/itertools.html#itertools.ifilterfalse" title="Permalink to this definition"&gt;¶&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;Make an iterator that filters elements from iterable returning only those for which the predicate is &lt;tt class="xref docutils literal"&gt;&lt;span class="pre"&gt;False&lt;/span&gt;&lt;/tt&gt;. If &lt;i&gt;predicate&lt;/i&gt; is &lt;tt class="xref docutils literal"&gt;&lt;span class="pre"&gt;None&lt;/span&gt;&lt;/tt&gt;, return the items that are false. Equivalent to: 
&lt;div class="highlight-python"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;ifilterfalse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;predicate&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;iterable&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="c"&gt;# ifilterfalse(lambda x: x%2, range(10)) --&amp;gt; 0 2 4 6 8&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;predicate&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;predicate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;bool&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;iterable&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;predicate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="k"&gt;yield&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6674595739722378828-3143335452233733483?l=weise12.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/HvqZMlL1lO-kimRRplkNKIH4el8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HvqZMlL1lO-kimRRplkNKIH4el8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/HvqZMlL1lO-kimRRplkNKIH4el8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HvqZMlL1lO-kimRRplkNKIH4el8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HJtEN/~4/S3bIPAUiYqo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weise12.blogspot.com/feeds/3143335452233733483/comments/default" title="댓글" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6674595739722378828&amp;postID=3143335452233733483" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/3143335452233733483?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/3143335452233733483?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HJtEN/~3/S3bIPAUiYqo/filter-itertools-ifilter-ifilterfalse.html" title="filter 내장함수와 itertools에 ifilter, ifilterFalse" /><author><name>None</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://weise12.blogspot.com/2010/11/filter-itertools-ifilter-ifilterfalse.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4MSX08eyp7ImA9WhdVEEo.&quot;"><id>tag:blogger.com,1999:blog-6674595739722378828.post-5201813050278277166</id><published>2010-11-10T18:29:00.000-08:00</published><updated>2011-09-15T01:23:08.373-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-15T01:23:08.373-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="map" /><title>map</title><content type="html">map 함수는 다음과 같이 하나의 함수와 인자의 리스트들을 파라메터로 받는 함수이고, 그 결과 값들을 리스트로 만들어서 return 해 줍니다.&lt;br /&gt;
&lt;blockquote&gt;
map(fuc, parmList1[, parmList2, ...  ]) &lt;/blockquote&gt;
&lt;br /&gt;
만약 인자가 2개 이상의 변수를 가지면 파라메터 리스트를 거기에 맞게 넘겨 주어야 합니다. 또한, 그러한 파라메터 리스트들은 서로 다른 길이를 가질 수 있지만, 짧은 쪽의 나머지 부분은 None으로 채워지게 됩니다&lt;br /&gt;
&lt;blockquote&gt;
&lt;br /&gt;
map (func, [1,2,3,4], [4,5])&lt;br /&gt;
[func(1,4), func(2,5), func(3, None), func(4, None)]&lt;/blockquote&gt;
&lt;br /&gt;
이런 식으로 말이지요. 따라서 함수의 정의 시에 이들을 처리해 주도록 하거나 파라메터 리스트들의 길이를 검사하는 일이 필요할 것이라고 생각합니다.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;itertools에는 imap이라는 함수가 있는데요, 이함수는 결과를 list로 돌려주는 대신 ioterator object로 돌려주고 필요할 때마다 하나씩 꺼내어 쓸 수 있도록 합니다. lazy evaluation의 개념에 훨씬 더 가깝다고 할 수 있겠습니다. &lt;br /&gt;
&lt;dl class="function"&gt;
&lt;dt id="itertools.imap"&gt; &lt;tt class="descclassname"&gt;itertools.&lt;/tt&gt;&lt;tt class="descname"&gt;imap&lt;/tt&gt;&lt;big&gt;(&lt;/big&gt;&lt;i&gt;function&lt;/i&gt;, &lt;i&gt;*iterables&lt;/i&gt;&lt;big&gt;)&lt;/big&gt;&lt;a class="headerlink" href="http://docs.python.org/library/itertools.html#itertools.imap" title="Permalink to this definition"&gt;¶&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;Make an iterator that computes the function using arguments from each of the iterables.  If &lt;i&gt;function&lt;/i&gt; is set to &lt;tt class="xref docutils literal"&gt;&lt;span class="pre"&gt;None&lt;/span&gt;&lt;/tt&gt;, then &lt;a class="reference internal" href="http://docs.python.org/library/itertools.html#itertools.imap" title="itertools.imap"&gt;&lt;tt class="xref docutils literal"&gt;&lt;span class="pre"&gt;imap()&lt;/span&gt;&lt;/tt&gt;&lt;/a&gt; returns the arguments as a tuple.  Like &lt;a class="reference external" href="http://docs.python.org/library/functions.html#map" title="map"&gt;&lt;tt class="xref docutils literal"&gt;&lt;span class="pre"&gt;map()&lt;/span&gt;&lt;/tt&gt;&lt;/a&gt; but stops when the shortest iterable is exhausted instead of filling in &lt;tt class="xref docutils literal"&gt;&lt;span class="pre"&gt;None&lt;/span&gt;&lt;/tt&gt; for shorter iterables.  The reason for the difference is that infinite iterator arguments are typically an error for &lt;a class="reference external" href="http://docs.python.org/library/functions.html#map" title="map"&gt;&lt;tt class="xref docutils literal"&gt;&lt;span class="pre"&gt;map()&lt;/span&gt;&lt;/tt&gt;&lt;/a&gt; (because the output is fully evaluated) but represent a common and useful way of supplying arguments to &lt;a class="reference internal" href="http://docs.python.org/library/itertools.html#itertools.imap" title="itertools.imap"&gt;&lt;tt class="xref docutils literal"&gt;&lt;span class="pre"&gt;imap()&lt;/span&gt;&lt;/tt&gt;&lt;/a&gt;. Equivalent to:
&lt;br /&gt;
&lt;div class="highlight-python"&gt;
&lt;div class="highlight"&gt;
&lt;pre&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;imap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;function&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;iterables&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="c"&gt;# imap(pow, (2,3,10), (5,2,3)) --&amp;gt; 32 9 1000&lt;/span&gt;
    &lt;span class="n"&gt;iterables&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;iter&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;iterables&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;args&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;next&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;it&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;it&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;iterables&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;function&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;yield&lt;/span&gt; &lt;span class="nb"&gt;tuple&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;yield&lt;/span&gt; &lt;span class="n"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6674595739722378828-5201813050278277166?l=weise12.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/MmtPTddsOMieuY-2nWNHItl4Cio/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MmtPTddsOMieuY-2nWNHItl4Cio/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/MmtPTddsOMieuY-2nWNHItl4Cio/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MmtPTddsOMieuY-2nWNHItl4Cio/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HJtEN/~4/hGYIfpM0Sfk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weise12.blogspot.com/feeds/5201813050278277166/comments/default" title="댓글" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6674595739722378828&amp;postID=5201813050278277166" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/5201813050278277166?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/5201813050278277166?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HJtEN/~3/hGYIfpM0Sfk/map.html" title="map" /><author><name>None</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://weise12.blogspot.com/2010/11/map.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0AFR388eip7ImA9Wx5aEUo.&quot;"><id>tag:blogger.com,1999:blog-6674595739722378828.post-4410954193038811594</id><published>2010-11-07T17:27:00.000-08:00</published><updated>2010-11-07T17:28:36.172-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-07T17:28:36.172-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="lambda" /><title>람다함수에 대한 환상...</title><content type="html">&lt;pre&gt;음 람다 칼큘러스니 뭐니 하면서 람다함수의 수학적&lt;/pre&gt;&lt;pre&gt;의미에 대해서 이야기 하지만 결국은 이녀석은 이름없고&lt;/pre&gt;&lt;pre&gt;쓰기 편한 함수에 지나지 않는 것인가?&lt;/pre&gt;&lt;pre&gt;in Python - lambda x,y: x+y;&lt;/pre&gt;&lt;pre&gt;in Haskell  - (\x y -&amp;gt; 2*x + y)&lt;/pre&gt;&lt;pre&gt;in c++0x - [](int x, int y){x+3*y;};&lt;/pre&gt;&lt;pre&gt;in c++0x - [](int x, int y){cout &amp;lt;&amp;lt; x+3*y;}; &amp;nbsp;&lt;/pre&gt;&lt;pre&gt;// 이경우 void를 return한다&lt;/pre&gt;&lt;pre&gt;c++0x에 대한 두번째 예제는 람다함수에 대한 모독이다.&lt;/pre&gt;&lt;pre&gt;(because it uses side effects)&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6674595739722378828-4410954193038811594?l=weise12.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/TW77VPlInzxkMJuyAnumKnrpWNs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TW77VPlInzxkMJuyAnumKnrpWNs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/TW77VPlInzxkMJuyAnumKnrpWNs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TW77VPlInzxkMJuyAnumKnrpWNs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HJtEN/~4/CqHp4BDry1E" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weise12.blogspot.com/feeds/4410954193038811594/comments/default" title="댓글" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6674595739722378828&amp;postID=4410954193038811594" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/4410954193038811594?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/4410954193038811594?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HJtEN/~3/CqHp4BDry1E/blog-post_07.html" title="람다함수에 대한 환상..." /><author><name>None</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://weise12.blogspot.com/2010/11/blog-post_07.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0IARH4yeip7ImA9Wx5bGU8.&quot;"><id>tag:blogger.com,1999:blog-6674595739722378828.post-7930250826037850874</id><published>2010-11-04T08:43:00.000-07:00</published><updated>2010-11-04T18:45:45.092-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-04T18:45:45.092-07:00</app:edited><title>파이썬에서의 함수형 프로그램 언어의 그림자 1. 람다함수.</title><content type="html">람다 함수는&amp;nbsp; 람다 칼큘러스의 개념으로 부터 비롯 된 것이라고 합니다.&lt;br /&gt;
&lt;blockquote&gt;In &lt;a href="http://en.wikipedia.org/wiki/Mathematical_logic" title="Mathematical logic"&gt;mathematical logic&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Computer_science" title="Computer science"&gt;computer science&lt;/a&gt;, &lt;b&gt;lambda calculus&lt;/b&gt;, also written as &lt;b&gt;λ-calculus&lt;/b&gt;, is a &lt;a href="http://en.wikipedia.org/wiki/Formal_system" title="Formal system"&gt;formal system&lt;/a&gt; for &lt;a href="http://en.wikipedia.org/wiki/Function_%28mathematics%29" title="Function (mathematics)"&gt;function&lt;/a&gt; definition, function application and &lt;a href="http://en.wikipedia.org/wiki/Recursion" title="Recursion"&gt;recursion&lt;/a&gt;. .......  In both &lt;a href="http://en.wikipedia.org/wiki/Typed_lambda_calculus" title="Typed lambda calculus"&gt;typed&lt;/a&gt; and untyped versions, ideas from lambda calculus have found application in the fields of &lt;a href="http://en.wikipedia.org/wiki/Logic" title="Logic"&gt;logic&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Computability_theory" title="Computability theory"&gt;recursion theory (computability)&lt;/a&gt;, and &lt;a href="http://en.wikipedia.org/wiki/Linguistics" title="Linguistics"&gt;linguistics&lt;/a&gt;, and have played an important role in the development of the &lt;a href="http://en.wikipedia.org/wiki/Programming_language_theory" title="Programming language theory"&gt;theory of programming languages&lt;/a&gt; (with untyped lambda calculus being the original inspiration for &lt;a href="http://en.wikipedia.org/wiki/Functional_programming" title="Functional programming"&gt;functional programming&lt;/a&gt;, in particular &lt;a href="http://en.wikipedia.org/wiki/Lisp_%28programming_language%29" title="Lisp (programming language)"&gt;Lisp&lt;/a&gt;, and &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Typed_lambda_calculi" title="Typed lambda calculi"&gt;typed lambda calculi&lt;/a&gt; serving as the foundation for modern &lt;a href="http://en.wikipedia.org/wiki/Type_system" title="Type system"&gt;type systems&lt;/a&gt;).[3]&lt;/blockquote&gt;&lt;pre&gt;람다 칼큘러스에서는 함수가 꼭 이름을 가질 필요는 없습니다.&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;예를 들어 위의 문서에 나와있는 예제인 함수는 두 변수 x,y를 받아서&lt;/pre&gt;&lt;pre&gt;두수를 각각 제곱한 뒤에 그 값들을 더해서 return해 줍니다. 이것을&lt;/pre&gt;&lt;pre&gt;식으로 나타내면&lt;/pre&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;tt&gt;sqadd(x, y) = x*x + y*y&lt;/tt&gt; &lt;/pre&gt;&lt;/blockquote&gt;&lt;pre&gt;이와 같은 기능을 하는 이름없는 함수를 다음처럼 나타낼 수 있습니다.&lt;/pre&gt;&lt;blockquote&gt;&lt;pre&gt;&amp;nbsp;&lt;tt&gt;(x, y) ↦ x*x + y*y&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;pre&gt;다음으로는 변수또한 특별한 이름을 가질 필요는 없다는 것입니다.&lt;/pre&gt;&lt;pre&gt;위의 식은&amp;nbsp;&lt;/pre&gt;&lt;blockquote&gt;&lt;tt&gt;(u, v) ↦ u*u + v*v&lt;/tt&gt;&lt;/blockquote&gt;&lt;pre&gt;와 논리적으로 동일 한 식입니다.&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre&gt;만일 위와 같은 식이라면, 함수형 프로그래밍 에서는&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;다음과 같이 나타내어지는 것이 원래의&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;함수의 의미에 더 가까룬 것이라고 할 수 있겠습니다. &lt;/pre&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;tt&gt;x ↦ (y ↦ x*x + y*y&lt;/tt&gt; )&lt;/pre&gt;&lt;/blockquote&gt;&lt;pre&gt;이 표현의 의미는 이 함수는 x를 단일한 변수로 가지는 어떠한 함수를&lt;/pre&gt;&lt;pre&gt;정의 하는데, 이 함수가 x를 변수로 받고 넘겨 주는 것은 y를 단일한&lt;/pre&gt;&lt;pre&gt;변수로 가지는 함수라는 것입니다.&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;그래서 변수를 여러개를 가지는 함수 정의의 경우, 실제로는 여러&lt;/pre&gt;&lt;pre&gt;단계의 단일한 변수를 가지는 함수들의 계층적 구조?라고 할 수 있겠습니다.&lt;/pre&gt;&lt;pre&gt;단일한 변수를 가지는 함수 구조를 curry된 함수라고 하는데, 이것은 일반적으로&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;lisp이나 haskell등에서 함수를 정의할 때 쓸 수 있는 방법이 되겠습니다.&lt;/pre&gt;&lt;pre&gt;(파이썬에서는 하지만 실제로 curry된 함수를 지원하지 않으며 이를 구현하기&lt;/pre&gt;&lt;pre&gt;위해서는 functools모듈에서 partial함수등과 같은 것을 사용해야 한다.&lt;/pre&gt;&lt;pre&gt;파이썬에서 이들 기능들을사용하는 방법은 다음의 예제[4]를 통해 알 수 있다.)&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;blockquote&gt;&lt;div&gt;&lt;h4&gt;currying &lt;a class="perma" href="http://dna.daum.net/technote/Functional%20Programming%20in%20Python#s-3.2.3"&gt;#&lt;/a&gt;&lt;/h4&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;함수의 출력으로 새로운 함수를 내보내는 기능을 의미한다.          &lt;/li&gt;
&lt;li&gt;위의 예처럼 lambda를 이용해서 간단히 구현가능하다.          &lt;div class="indent"&gt;&lt;pre class="wiki"&gt;&amp;gt;&amp;gt;&amp;gt; def mul(x):
...   return lambda(y): x*y
...
&amp;gt;&amp;gt;&amp;gt; double = mul(2)
&amp;gt;&amp;gt;&amp;gt; double(2)
4
&amp;gt;&amp;gt;&amp;gt; mul(2)(5)
10&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;그 외에도 파이썬에서는 currying을 위한 자체 기능도 지원한다.          &lt;div class="indent"&gt;&lt;pre class="wiki"&gt;double = curry(operator.mul,2)

class curry:
    def __init__(self, fun, *args, **kwargs):
        self.fun = fun
        self.pending = args[:]
        self.kwargs = kwargs.copy()
    def __call__(self, *args, **kwargs):
        if kwargs and self.kwargs:
            kw = self.kwargs.copy()
            kw.update(kwargs)
        else:
            kw = kwargs or self.kwargs
        return self.fun(*(self.pending + args), **kw)&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;h4&gt;functool module &lt;a class="perma" href="http://dna.daum.net/technote/Functional%20Programming%20in%20Python#s-3.2.4"&gt;#&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;higher-order function들을 구현한 2.5에 추가된 module          &lt;/li&gt;
&lt;li&gt;functool.partial() - 지정된 함수와 지정된 파라미터를 추가하여 새로운 함수를 만들어낼 수 있다.          &lt;div class="indent"&gt;&lt;pre class="wiki"&gt;import functools
def log (message, subsystem):
    "Write the contents of 'message' to the specified subsystem."
    print '%s: %s' % (subsystem, message)
    ...
server_log = functools.partial(log, subsystem='server')  
      // log(subsystem='server' 에 다른 parameter를 추가로 받을수 있다.
server_log('Unable to open socket')&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;from [4]&lt;br /&gt;
&lt;blockquote&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;/blockquote&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre&gt;이러한 람다함수의 정의, 혹은 커리된 함수의 정의는 나중에 함수를 변수로&lt;/pre&gt;&lt;pre&gt;사용하거나, 정의된 함수들을 이용하여 새로운 함수들을 재 정의 할 때 매우&lt;/pre&gt;&lt;pre&gt;유용하게 쓰이게 됩니다. (특히 함수형 언어들에서.&lt;/pre&gt;&lt;pre&gt;특히 람다함수는 한번 쓰여지고 버려질 언어들에 이름을 부여하는 수고를&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;덜어주고 코드를 깔끔하게 만들어 줍니다. &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre&gt;[1] http://www.secnetix.de/olli/Python/lambda_functions.hawk :&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;파이썬 람다함수의 사용법을 예제를 들어서 잘 설명해둔 곳&lt;/pre&gt;&lt;pre&gt;[2] http://en.wikipedia.org/wiki/Lambda&lt;/pre&gt;&lt;pre&gt;[3] http://en.wikipedia.org/wiki/Lambda_calculus&lt;/pre&gt;&lt;pre&gt;[4]&lt;a href="http://dna.daum.net/technote/Functional%20Programming%20in%20Python#s-3.2.3"&gt;functional programming in python&lt;/a&gt; : 이론적으로 잘 설명 된곳. 제가 블로그&lt;/pre&gt;&lt;pre&gt;에서 다루어 보고 싶었던 내용인데 이미 이렇게나 자세히 설명을 해 두셨더군요.&lt;/pre&gt;&lt;pre&gt;설명도 더 상세한 것 같고. &lt;/pre&gt;&lt;pre&gt;[5]&lt;a href="http://coreapython.hosting.paran.com/etc/Functional%20Programming%20HOWTO.htm"&gt;기능형 프로그래밍 하우투&lt;/a&gt; : 파이썬 함수형 프로그램의 기본이 잘 설명 된곳&lt;/pre&gt;&lt;pre&gt;[6] http://ko.wikipedia.org/wiki/%EB%9E%8C%EB%8B%A4_%EB%8C%80%EC%88%98&lt;/pre&gt;&lt;pre&gt;[7] http://www.freenetpages.co.uk/hp/alan.gauld/korean/tutfctnl.htm&lt;/pre&gt;[8] http://flaria.wordpress.com/2008/05/21/%ED%95%A8%EC%88%98%EC%9D%98-%EC%96%B4%EB%A8%B8%EB%8B%88-%EB%9E%8C%EB%8B%A4-%ED%95%A8%EC%88%98-2/&lt;br /&gt;
[9] http://pcandme.springnote.com/pages/5528007.xhtml&lt;br /&gt;
[10]http://functional.or.kr/scheme/tutorial/lambda&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6674595739722378828-7930250826037850874?l=weise12.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/hdkwTqA1LKEGAAjVuzYobM8QvnA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hdkwTqA1LKEGAAjVuzYobM8QvnA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/hdkwTqA1LKEGAAjVuzYobM8QvnA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hdkwTqA1LKEGAAjVuzYobM8QvnA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HJtEN/~4/uGAJn2g96FU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weise12.blogspot.com/feeds/7930250826037850874/comments/default" title="댓글" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6674595739722378828&amp;postID=7930250826037850874" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/7930250826037850874?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/7930250826037850874?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HJtEN/~3/uGAJn2g96FU/1.html" title="파이썬에서의 함수형 프로그램 언어의 그림자 1. 람다함수." /><author><name>None</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://weise12.blogspot.com/2010/11/1.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0ICSX4-fSp7ImA9Wx5bF0s.&quot;"><id>tag:blogger.com,1999:blog-6674595739722378828.post-4943617390748924037</id><published>2010-11-02T22:25:00.000-07:00</published><updated>2010-11-02T23:26:08.055-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-02T23:26:08.055-07:00</app:edited><title>SVN으로 버젼 관리 하는 방법에 대한 방법에 관한 링크</title><content type="html">&lt;pre&gt;&lt;a href="http://extern.tistory.com/23"&gt;http://extern.tistory.com/23&lt;/a&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;여기에 기초적인 사용 방법에 대한 정보가 나와있네,&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre&gt;그간 SVN을 엉뚱한 방법으로 사용하고 있었군 이런 -_-&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;a href="http://extern.tistory.com/25"&gt;http://extern.tistory.com/25&lt;/a&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;이것은 SVN notifier라는 프로그램에 관한 것으로&lt;/pre&gt;&lt;pre&gt;관심있는 소스의 변동사항을 알려주는 프로그램이라고 하네.&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6674595739722378828-4943617390748924037?l=weise12.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/1EqOlLlSP9iMxcYZfUrr7WohwzA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1EqOlLlSP9iMxcYZfUrr7WohwzA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/1EqOlLlSP9iMxcYZfUrr7WohwzA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1EqOlLlSP9iMxcYZfUrr7WohwzA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HJtEN/~4/0ABI1Uvm8-w" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weise12.blogspot.com/feeds/4943617390748924037/comments/default" title="댓글" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6674595739722378828&amp;postID=4943617390748924037" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/4943617390748924037?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/4943617390748924037?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HJtEN/~3/0ABI1Uvm8-w/svn.html" title="SVN으로 버젼 관리 하는 방법에 대한 방법에 관한 링크" /><author><name>None</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://weise12.blogspot.com/2010/11/svn.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkEBSH09fCp7ImA9Wx5bF0g.&quot;"><id>tag:blogger.com,1999:blog-6674595739722378828.post-21843323533394357</id><published>2010-11-02T21:29:00.000-07:00</published><updated>2010-11-02T21:30:59.364-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-02T21:30:59.364-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tow" /><category scheme="http://www.blogger.com/atom/ns#" term="svn" /><title>tow에서 사용자 등록, 비밀번호 변경 및 권한 부여.[ from my old textcube blog]</title><content type="html">&lt;div class="titleWrap"&gt;&lt;h2&gt;&lt;a href="http://youngsupark.textcube.com/11" rel="bookmark"&gt;&lt;span class="entry-title"&gt;tow에서 사용자 등록, 비밀번호 변경 및 권한 부여.&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;span class="category"&gt;&lt;a href="http://youngsupark.textcube.com/category/%EC%9E%91%EC%97%85%EA%B4%80%EB%A0%A8" rel="directory"&gt;작업관련&lt;/a&gt;&lt;/span&gt; &lt;span class="date"&gt;&lt;abbr class="published" title="2009-11-11T10:50:11+09:00"&gt;2009/11/11 10:50&lt;/abbr&gt;&lt;/span&gt; &lt;/div&gt;&lt;div class="article"&gt;&lt;div class="tt-ad-div"&gt;&lt;a href="http://youngsupark.textcube.com/owner/entry/edit/11?returnBack"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="entry-content"&gt;오늘 쓰려는 글은, 제목에서 알 수 있듯, TOW에서 사용자를 등록하고 비밀번호를 변경하는 일과, 이들이 SVN에 접근하는 권한을 가질 수 있도록 하는 방법에 대한 내용입니다.&lt;br /&gt;
1. 우선 TOW에서의 사용자 등록과 비밀번호 변경은 같은 명령어를 사용합니다.&lt;br /&gt;
&lt;div style="background-color: #ffebff; border: 1px solid rgb(246, 209, 246); padding: 10px;"&gt;C:\Tow&amp;gt;add-user &lt;user-name&gt; &lt;user-password&gt;&lt;br /&gt;
&lt;/user-password&gt;&lt;/user-name&gt;&lt;/div&gt;&lt;user-name&gt;이 이전에 없던 id이면 새로운 user를 등록 시키고, 만일 존재하는 id인 경우에는 &lt;user-password&gt;로 비밀 번호를 변화시킵니다. 참조할만한 사이트는&amp;nbsp;&lt;a href="http://extern.tistory.com/26" target="_blank"&gt;http://extern.tistory.com/26&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
2. 다음은 SVN에 접근할 수 있도록 권한을 설정해주는 일입니다.&lt;br /&gt;
C:\TOW\SvnRepo\Projects 디렉토리 아래에 들어가면 "authz"라는 파일이 존재합니다.&lt;br /&gt;
&lt;/user-password&gt;&lt;/user-name&gt;&lt;br /&gt;
&lt;div style="background-color: #ffebff; border: 1px solid rgb(246, 209, 246); padding: 10px;"&gt;[/]&lt;br /&gt;
* =&lt;br /&gt;
admin = rw&lt;br /&gt;
&lt;user-name&gt; =&amp;nbsp;&lt;/user-name&gt;&lt;/div&gt;위와 같은 설정을&lt;br /&gt;
&lt;div style="background-color: #ffebff; border: 1px solid rgb(246, 209, 246); padding: 10px;"&gt;[/]&lt;br /&gt;
* =&lt;br /&gt;
admin = rw&lt;br /&gt;
&lt;user-name&gt; = &lt;b&gt;rw&lt;/b&gt;&lt;/user-name&gt;&lt;/div&gt;이렇게 바꾸어 주면 SVN 클라이언트로 접속이 가능하게 됩니다.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6674595739722378828-21843323533394357?l=weise12.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/K1R-9bl9qWVelD9OlBS5565mbsM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/K1R-9bl9qWVelD9OlBS5565mbsM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/K1R-9bl9qWVelD9OlBS5565mbsM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/K1R-9bl9qWVelD9OlBS5565mbsM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HJtEN/~4/meeQr3YjTrs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weise12.blogspot.com/feeds/21843323533394357/comments/default" title="댓글" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6674595739722378828&amp;postID=21843323533394357" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/21843323533394357?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/21843323533394357?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HJtEN/~3/meeQr3YjTrs/tow-from-my-old-textcube-blog.html" title="tow에서 사용자 등록, 비밀번호 변경 및 권한 부여.[ from my old textcube blog]" /><author><name>None</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://weise12.blogspot.com/2010/11/tow-from-my-old-textcube-blog.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkAEQHs-cCp7ImA9Wx5bF0g.&quot;"><id>tag:blogger.com,1999:blog-6674595739722378828.post-8327160537933114788</id><published>2010-11-02T21:26:00.000-07:00</published><updated>2010-11-02T21:31:41.558-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-02T21:31:41.558-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tow" /><category scheme="http://www.blogger.com/atom/ns#" term="virtualbox" /><category scheme="http://www.blogger.com/atom/ns#" term="svn" /><title>Virtual box + Tow 설정 관련 [from my old textcubeblog]</title><content type="html">&lt;div class="titleWrap"&gt;&lt;h2&gt;&lt;a href="http://youngsupark.textcube.com/8" rel="bookmark"&gt;&lt;span class="entry-title"&gt;Virtual box + Tow 설정 관련&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;span class="category"&gt;&lt;a href="http://youngsupark.textcube.com/category/%EC%9E%91%EC%97%85%EA%B4%80%EB%A0%A8" rel="directory"&gt;작업관련&lt;/a&gt;&lt;/span&gt; &lt;span class="date"&gt;&lt;abbr class="published" title="2009-11-05T14:54:15+09:00"&gt;2009/11/05 14:54&lt;/abbr&gt;&lt;/span&gt; &lt;/div&gt;&lt;div class="article"&gt;&lt;div class="entry-content"&gt;여기서 하려는 것은 Tow의 설정이나 사용법에 관한  이야기는 아니고요. Tow + virtual box (window xp)를 사용해서 가상 컴퓨터로 svn및 track  server를 만들 때 network설정에 관한 내용들을 적으려고 합니다.&lt;br /&gt;
그런 자료들은 이미 많은 사람들이 훌륭이 써둔 글들이 있고, 또 그것을 모아둔 곳도 있습니다. 다음 링크를 참조해 보세요. (저도 한번 꼼꼼히 읽어 봐야 겠군요.)&lt;br /&gt;
&lt;a href="http://trac.tistory.com/18" target="_blank"&gt;http://trac.tistory.com/18&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
우선 Vritual box에 windows xp를 설치 합니다.&lt;br /&gt;
그 이후에 TOW를 windows xp 상에서 설치 합니다. tow의 기본 프로젝트 설정과 추가 사용자 추가등의 내용은 다음의 글을 참조 하시면 좋을 듯 합니다.&lt;br /&gt;
&lt;a href="http://junsae.tistory.com/32" target="_blank"&gt;http://junsae.tistory.com/32&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://skyforce.egloos.com/1825921" target="_blank"&gt;http://skyforce.egloos.com/1825921&lt;/a&gt; : track - svn 계정 설정&lt;br /&gt;
우선 tow를 다 설치하시고 나면, 외부에서 접근을 해봅니다. 아마 안될 겁니다.&lt;br /&gt;
&lt;blockquote&gt;Virtual Box의 네트워크 설정 모드도 VMWare와 마찬가지로 4가지가 있습니다.&lt;br /&gt;
거의 비슷해서 금방 알수 있습니다만, 일부 스펙 및 기능적인 차이는 있어 보입니다.&lt;br /&gt;
VMWare와 비교해서 보시면 이해가 빠를 것으로 압니다. 그럼 참고하세요.&lt;br /&gt;
&lt;br /&gt;
[Virtual Box 네트워크 설정]&lt;br /&gt;
각 VM마다 4개의 가상 PCI Ethernet card를 제공함&lt;br /&gt;
선택적으로 선택하여 설정 가능함&lt;br /&gt;
사용 가능한 네트워크 모드는 4가지가 있음&lt;br /&gt;
&lt;br /&gt;
* “Not attached” mode&lt;br /&gt;
- 네트워크 연결을 하지 않는 모드임&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;* Network Address Translation (NAT) &lt;br /&gt;
- 기본 설정 값임&lt;br /&gt;
- 외부로 접속 가능함&lt;br /&gt;
- 외부에서 VM으로 직접 접근은 되지 않음&lt;br /&gt;
- 외부에서 접근 가능하도록 설정하려면 Port Forwarding 설정을 해야 함&lt;/b&gt;* Host Interface Networking (HIF)&lt;br /&gt;
- Host 네트워크를 이용하여 외부 네트워크로 접속이 가능함. 즉 Host 시스템이 브리지로 동작하는 것을 의미함&lt;br /&gt;
- 외부에서 VM으로 접속이 가능함&lt;br /&gt;
- Windows XP가 Host인 경우는 XP 상의 브리지 설정이 필요함&lt;br /&gt;
&lt;br /&gt;
* Internal networking&lt;br /&gt;
- 외부의 VM간의 접속만 허용됨&lt;br /&gt;
- 이 모드는 HIF보다 보안성이 뛰어나고 속도가 빠름&lt;br /&gt;
[출처] Virtual Box 네트워크 설정 모드 |작성자 미르아빠&lt;br /&gt;
http://blog.naver.com/uoops7/150039672742&lt;br /&gt;
&lt;/blockquote&gt;&amp;nbsp;우 리는 2번째의 NAT를 이용하려고 합니다. HIF로 돌리는 방법도 가능하지만 보안이나, 포트 충돌 등의 문재가 발생하지 않을까  생각하여 (실제로는 어떤지 모릅니다-,.-) NAT와 Port forwarding기능을 이용하여 시스템을 설정 하려고 합니다.  Host도 XP고 Guest OS도 XP입니다. 사실 한 텀퓨터에서 돌릴 수 있겠지만, 백업문제 때문에 일부러 Track+svn용  머신을 따로 가지고 싶었지만 그렇지 못해서 Virtual Box를 이용해서 가상머신을 하나 더 만들었지요.&lt;br /&gt;
&lt;blockquote&gt;&lt;span style="background-color: red;"&gt;1.3 NAT&lt;br /&gt;
VirtualBox 2.1 이 되면서 NAT 를 완전히 새로 만들었다고 합니다. &lt;br /&gt;
NAT 로 하면 설정 자체는 전혀 필요 없기 때문에 포트포워딩 방법만을 적습니다.&lt;/span&gt;&lt;br /&gt;
여전히 죽습니다.&lt;br /&gt;
[edit]&lt;br /&gt;
1.3.1 Port Forwarding &lt;br /&gt;
네트워크 카드 이름이 총 4가지인데 설정은 그냥 2가지로 구분한다. &lt;br /&gt;
pcnet 과 e1000 으로만 구분하면 된다. &lt;br /&gt;
윈도 터미널 포트 포워딩 예. &lt;br /&gt;
&lt;div style="background-color: #c7c7c7; border: 1px solid rgb(199, 199, 199); padding: 10px;"&gt;VBoxManage setextradata "WindowsXP" "VBoxInternal/Devices/e1000/0/LUN#0/Config/terminal/Protocol" TCP&lt;br /&gt;
VBoxManage setextradata "WindowsXP" "VBoxInternal/Devices/e1000/0/LUN#0/Config/terminal/GuestPort" 3389&lt;br /&gt;
VBoxManage setextradata "WindowsXP" "VBoxInternal/Devices/e1000/0/LUN#0/Config/terminal/HostPort" 3389&lt;/div&gt;&lt;br /&gt;
Intel 1000 Server 선택해서 e1000 이고, 윈도터미널이라고 이름을 terminal 로 지었다. &lt;br /&gt;
terminal 을 apache 로 하고 GuestPort 80 HostPort 8080 으로 바꾸는 식으로 응용한다.&lt;br /&gt;
[출처]&lt;a href="http://wiki.kldp.org/wiki.php/VirtualBoxBridge" target="_blank"&gt;http://wiki.kldp.org/wiki.php/VirtualBoxBridge&lt;/a&gt;&lt;/blockquote&gt;&amp;nbsp;찾다가 보니 일단 설명이 대충(-_-) 되어있는 위의 녀석을 찾았습니다. 이게 꽤 오래 된 녀석이라서, 다른 것들을 찾아보기로 했습니다. 그래서 아래의 글을 찾았지요.&lt;br /&gt;
&lt;blockquote&gt;&amp;nbsp;vbox에 설치된 리눅스에서 실행중인 서버에 접속하고 싶은데 방법이 없을까 찾다가 포트포워딩이라는 것을 발견하게 되었다. &lt;br /&gt;
&lt;br /&gt;
virtualbox에서 port forwarding 설정&lt;br /&gt;
&lt;br /&gt;
인터넷에 있는 여러 문서를 보고 정리&lt;br /&gt;
http://forums.virtualbox.org/viewtopic.php?f=1&amp;amp;t=15144&amp;amp;p=63224&lt;br /&gt;
http://blog.noonipoony.com/140&lt;br /&gt;
&lt;br /&gt;
1. 환경&lt;br /&gt;
HOST : Windows XP SP2&lt;br /&gt;
GUEST : UBUNTU 8.10&lt;br /&gt;
virtual machine 이름 :  ubuntu&lt;br /&gt;
&lt;br /&gt;
2. 설정&lt;br /&gt;
먼저 virtualbox가 실행되어 있으면 모두 종료&lt;br /&gt;
&lt;br /&gt;
명령 형태&lt;br /&gt;
VBoxManage setextradata "name" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/apache/HostPort" 80&lt;br /&gt;
&lt;br /&gt;
name : virtual machine 이름, "ubuntu"&lt;br /&gt;
key  : "VBoxInternal/Devices/pcnet/0/LUN#0/Config/apache/HostPort", 중간에  apache는 port번호에 맞는 걸로 중복되지 않게 고르시면 됩니다. 웹서버를 재료 삼아서 apache로 정했습니다.&lt;br /&gt;
value : 값, 웹서버니깐 80&lt;br /&gt;
&lt;br /&gt;
&amp;gt; cd &amp;lt; your virtualbox dir&amp;gt;&lt;br /&gt;
&amp;gt; VBoxManage setextradata "ubuntu" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/apache/Protocol" TCP&lt;br /&gt;
&amp;gt; VBoxManage setextradata "ubuntu" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/apache/GuestPort" 80&lt;br /&gt;
&amp;gt; VBoxManage setextradata "ubuntu" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/apache/HostPort" 8080&lt;br /&gt;
virtualbox 시작&lt;br /&gt;
&lt;br /&gt;
이제 HOST 8080 port로 들어오는 데이터는 GUEST의 80 port로 전달됩니다.&lt;br /&gt;
&lt;br /&gt;
3. 확인&lt;br /&gt;
HOST에서 http://localhost:8080/&lt;br /&gt;
&lt;br /&gt;
4. 삭제&lt;br /&gt;
명령을 줄때 값을 주지 않으면 삭제 됩니다.&lt;br /&gt;
&amp;gt; VBoxManage setextradata "ubuntu" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/apache/Protocol" &lt;br /&gt;
&amp;gt; VBoxManage setextradata "ubuntu" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/apache/GuestPort"&lt;br /&gt;
&amp;gt; VBoxManage setextradata "ubuntu" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/apache/HostPort"&lt;br /&gt;
&lt;br /&gt;
EOF&lt;br /&gt;
[출처]&lt;a href="http://rookiecj.tistory.com/198" target="_blank"&gt;http://rookiecj.tistory.com/198&lt;/a&gt;&lt;/blockquote&gt;&amp;nbsp;음 다시 찾아보니 이곳(&lt;a href="http://blog.noonipoony.com/140" target="_blank"&gt;http://blog.noonipoony.com/140&lt;/a&gt;)이 좀더 이해 하기 쉽게 설명을 해두었네요.일단 포트 번호를 파악하기 위해서 다음과 TOW를 실행시켜보면 다음과 같은 메시지가 뜹니다.&lt;br /&gt;
&lt;div style="background-color: #d3eeca; border: 1px solid rgb(183, 224, 169); padding: 10px;"&gt;Name: TOW (TracOnWindows)&lt;br /&gt;
Version: 0.3.0 alpha 1&lt;br /&gt;
Package: Base&lt;br /&gt;
Language: Enlish&lt;br /&gt;
Author: Jinwoo Min (yeoupooh at gmail dot com)&lt;br /&gt;
Site: http://sourceforge.net/projects/traconwindows&lt;br /&gt;
License: http://creativecommons.org/licenses/by-sa/2.0/&lt;br /&gt;
&lt;br /&gt;
TOW_HOME    = C:\TOW&lt;br /&gt;
PYTHON_HOME = C:\TOW\Python&lt;br /&gt;
APACHE_HOME = C:\TOW\Apache&lt;br /&gt;
SVN_HOME    = C:\TOW\Subversion&lt;br /&gt;
&lt;br /&gt;
[TOW] TOW Launched.&lt;br /&gt;
[TOW] Now, you can test Trac in http://localhost:8080/projects/HelloTOW&lt;br /&gt;
[TOW] and Subversion in http://localhost:8080/svn/HelloTOW&lt;/div&gt;&amp;nbsp;svn과 TRACK 모두 8080포트를 사용하고 있는 것을 알 수 있습니다. VirtualBox 폴더로 들어가 봅니다.&lt;br /&gt;
&lt;div style="background-color: #d3eeca; border: 1px solid rgb(183, 224, 169); padding: 10px;"&gt;C:\Program Files&amp;gt;CD "Sun"&lt;br /&gt;
C:\Program Files\Sun&amp;gt;CD VirtualBox&lt;br /&gt;
&amp;gt;VBoxManage setextradata "&lt;b&gt;winxp&lt;/b&gt;" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/&lt;b&gt;svn&lt;/b&gt;/Protocol" &lt;b&gt;TCP&lt;/b&gt;&lt;br /&gt;
&amp;gt;VBoxManage setextradata "&lt;b&gt;winxp&lt;/b&gt;" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/&lt;b&gt;svn&lt;/b&gt;/GuestPort" &lt;b&gt;8080&lt;/b&gt;&lt;br /&gt;
&amp;gt;VBoxManage setextradata "&lt;b&gt;winxp&lt;/b&gt;" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/&lt;b&gt;svn&lt;/b&gt;/HostPort" &lt;b&gt;8080&lt;/b&gt;&lt;/div&gt;요렇게 해주고나서 vitual machine을 돌리니까 돌아갑니다. 잘돌아가요!ㅎㅎ&lt;br /&gt;
뭐 그건 그렇고.. 다음은 사족 들입니다.&lt;br /&gt;
&lt;br /&gt;
각 서비스들의 PORT NUMBER의 경우 다음 사이트에서 찾을 수 있습니다.&lt;br /&gt;
&lt;a href="http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers" target="_blank"&gt;http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers&lt;/a&gt;&lt;br /&gt;
그리고 나중에 필요하게 될 듯해서 다음을 덧붙여 둡니다.&lt;br /&gt;
&lt;blockquote&gt;게스트 OS와 호스트 OS 공유 폴더 만들기&lt;br /&gt;
&lt;br /&gt;
1. 네트워크 설정에서 어댑터 1은 '호스트 인터페이스'를 어댑터2는 'NAT'을 이용하는 네트워크 구성을 만든다.(순서 중요)&lt;br /&gt;
&lt;br /&gt;
2. 호스트 OS에서 '제어판 - 네트워크 연결'에서 'VirtualBox 호스트 인터페이스'에서 IP와 서브넷마스크 설정(192.168.1.1 // 255.255.255.0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. 게스트 OS에서 '제어판 - 네트워크 연결'에서 '호스트 인터페이스'를 사용하기로한 로컬 영역 연결의 IP와 서브넷마스크 설정&lt;br /&gt;
(192.168.1.11 // 255.255.255.0)&lt;br /&gt;
&lt;br /&gt;
4. 호스트 OS 또는 게스트 OS에서 공유폴더를 만든 후 호스트 OS 또는 게스트 OS에서 네트워크 검색을 하면 공유폴더가 나타난다. 그리고 인터넷도 된다.&lt;br /&gt;
&lt;br /&gt;
단계 1만 해도 된다.&lt;br /&gt;
&amp;nbsp;[출처]&lt;a href="http://jytime.tistory.com/115" target="_blank"&gt;http://jytime.tistory.com/115&lt;/a&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6674595739722378828-8327160537933114788?l=weise12.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/OaCqsH1tHF8Xte3XIuDaTS3Awl4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OaCqsH1tHF8Xte3XIuDaTS3Awl4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/OaCqsH1tHF8Xte3XIuDaTS3Awl4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OaCqsH1tHF8Xte3XIuDaTS3Awl4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HJtEN/~4/_XfoAmbTKAo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weise12.blogspot.com/feeds/8327160537933114788/comments/default" title="댓글" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6674595739722378828&amp;postID=8327160537933114788" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/8327160537933114788?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/8327160537933114788?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HJtEN/~3/_XfoAmbTKAo/virtual-box-tow-from-my-old.html" title="Virtual box + Tow 설정 관련 [from my old textcubeblog]" /><author><name>None</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://weise12.blogspot.com/2010/11/virtual-box-tow-from-my-old.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkABQnY_cSp7ImA9Wx5bF0g.&quot;"><id>tag:blogger.com,1999:blog-6674595739722378828.post-3026882698497496754</id><published>2010-11-02T07:33:00.000-07:00</published><updated>2010-11-02T21:32:33.849-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-02T21:32:33.849-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="functional program" /><category scheme="http://www.blogger.com/atom/ns#" term="iterator" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><title>파이썬과 함수형 프로그램.</title><content type="html">파이썬이 버전업을 해오면서 점차 Lisp, Ocaml, Haskell 등의 함수형 프로그램들에서 볼수 있는 특징들이 추가되고 그 기능이 늘어나고 있다.&lt;br /&gt;
&lt;br /&gt;
특히 그중에 대표적인 것들이&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;람다 함수 표현식&lt;/li&gt;
&lt;li&gt;내장함수인 xrange, enumerate, map, filter, reduce, sum, any,&amp;nbsp; &lt;tt class="descname"&gt;zip&lt;/tt&gt;, &lt;tt class="descname"&gt;apply, &lt;/tt&gt;max, min, all 과 같은 함수들이&lt;/li&gt;
&lt;li&gt;그리고 itertools모듈(python 2.3부터)과 functools 모듈이&lt;/li&gt;
&lt;/ul&gt;그러한 함수형 언어에 의해서 영향을 받은 것이라고 할 수 있다.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
이러한 함수형 프로그램으로 부터의 영향은, 지식이 부족한 입장이지만, 2가지정도로 나누어볼수 있다고 생각한다.&lt;br /&gt;
&lt;br /&gt;
그 첫번째가  lambda function과&amp;nbsp; functools 모듈 그리고 map, filter, reduce, apply등과 같은 함수를 파라메터로 받아서 처리하는 함수들로 대변되는 고수준 함수형 언어의 특성을 차입한 것이다.&lt;br /&gt;
&lt;br /&gt;
두번째의 영향은 iterator object와 iterable object(xrange object, list,set, tuple, (dict -최근 버젼에서 iterable dict타입이 추가 되었다))들 그리고 이들을 생성하는 생성자 함수들과, 다루는 함수들인 위에 언급된 기본 내장 함수들, 그리고 itertools 모듈에 정의된 함수들 등으로 대표되는 특징이다.&lt;br /&gt;
&lt;br /&gt;
iterator는 어떤 값을 한번에 하나씩 연산에서 필요할때 뱉어내도록 되어있다.&lt;br /&gt;
&lt;br /&gt;
이것은 haskell과 같은 언어에서 사용되는 lazy evaluation이라는 개념을 차용한 것으로서, 그것은 어떠한 식의 계산은 그 식의 값이 어디에서인가 "실제적으로 필요할 때" 까지 미루어진다는 개념이다.&lt;br /&gt;
&lt;br /&gt;
예를 들어서 1에서 무한대 까지 1씩 증가하는 수열을 파라메터로 받고 그 수열을 하나씩 더하면서 매 step마다 결고 값을&amp;nbsp; 출력하는 함수를 생각해보자. 이 함수로 무한의 수열을 넘겨주는 순간, C나 Java와 같은 언어는 그대로 동작을 멈추어 버릴 것이다. 그 변수를 넘겨주면서 그 변수에 대한 evaluation이 이루어지기 때문이다. 하지만 iterator를 이용할 경우 그 오브젝트만 넘어가게 되고, 함수는 아무 문제 없이 실행 되기 시작할 것이다. 그리고 매 for step마나 하나의 자연수를 뱉어 내고 함수는 그 결과 값을 출력하기를 무한히 반복 할 수 있을 것이다.&lt;br /&gt;
&lt;br /&gt;
이것은 단순히 iterator나 razy evaluation의 장점중 하나를 이야기 한 것이지만, 이에 대한 자세한 내용들은 다음에 다루어 질 것이다.&lt;br /&gt;
&lt;br /&gt;
다음에는 이러한 함수형 언어로 부터의 영향을 받은 파이썬들의 특징들을 잘 활용하는 법에 조금씩 나누어서 (한방은 역량이 모자라서 힘이 들고) 간략히 설명해 나갈 것이다.&lt;br /&gt;
&lt;br /&gt;
[1] 하스켈로 배우는 프로그래밍(programming in haskell) &lt;br /&gt;
[2] http://docs.python.org/library/functools.html&lt;br /&gt;
[3] http://docs.python.org/library/itertools.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6674595739722378828-3026882698497496754?l=weise12.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/LiK5EWz-oVrHU0Hbmx_2lV6AMmY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LiK5EWz-oVrHU0Hbmx_2lV6AMmY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/LiK5EWz-oVrHU0Hbmx_2lV6AMmY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LiK5EWz-oVrHU0Hbmx_2lV6AMmY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HJtEN/~4/NT-_g5XhZV8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weise12.blogspot.com/feeds/3026882698497496754/comments/default" title="댓글" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6674595739722378828&amp;postID=3026882698497496754" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/3026882698497496754?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/3026882698497496754?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HJtEN/~3/NT-_g5XhZV8/blog-post.html" title="파이썬과 함수형 프로그램." /><author><name>None</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://weise12.blogspot.com/2010/11/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEENRHoyeip7ImA9Wx5QGU8.&quot;"><id>tag:blogger.com,1999:blog-6674595739722378828.post-8314954772658588001</id><published>2010-09-07T22:11:00.001-07:00</published><updated>2010-09-07T22:11:35.492-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-07T22:11:35.492-07:00</app:edited><title>Newtonian Dynamics</title><content type="html">&lt;pre&gt;Newtonian Dynamics 
 
Richard Fitzpatrick 

Professor of Physics 

The University of Texas at Austin 

&lt;a href="http://farside.ph.utexas.edu/teaching/336k/Newton/Newton.html"&gt;http://farside.ph.utexas.edu/teaching/336k/Newton/Newton.html&lt;/a&gt;

&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6674595739722378828-8314954772658588001?l=weise12.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/NKTpkfSCWJaEFBLhhGjSH_t9I4k/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NKTpkfSCWJaEFBLhhGjSH_t9I4k/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/NKTpkfSCWJaEFBLhhGjSH_t9I4k/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NKTpkfSCWJaEFBLhhGjSH_t9I4k/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HJtEN/~4/-ftpQ6esEjE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weise12.blogspot.com/feeds/8314954772658588001/comments/default" title="댓글" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6674595739722378828&amp;postID=8314954772658588001" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/8314954772658588001?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/8314954772658588001?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HJtEN/~3/-ftpQ6esEjE/newtonian-dynamics.html" title="Newtonian Dynamics" /><author><name>None</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://weise12.blogspot.com/2010/09/newtonian-dynamics.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkQCSXk6fyp7ImA9Wx5RF0w.&quot;"><id>tag:blogger.com,1999:blog-6674595739722378828.post-2241967404445571724</id><published>2010-08-24T22:20:00.000-07:00</published><updated>2010-08-24T22:32:48.717-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-24T22:32:48.717-07:00</app:edited><title>유용한 모듈들...</title><content type="html">&lt;pre&gt;&lt;a href="http://pypi.python.org/pypi/hmmus/0.3.1"&gt;mmus 0.3.1&lt;/a&gt;   1   Posterior decoding with a &lt;layer id="google-toolbar-hilite-1" style="background-color: cyan; color: black;"&gt;hidden&lt;/layer&gt; &lt;layer id="google-toolbar-hilite-2" style="background-color: magenta; color: black;"&gt;Markov&lt;/layer&gt; model
&lt;a href="http://pypi.python.org/pypi/pymc/2.1beta"&gt;pymc 2.1beta&lt;/a&gt;   1   &lt;layer id="google-toolbar-hilite-3" style="background-color: magenta; color: black;"&gt;Markov&lt;/layer&gt; &lt;layer id="google-toolbar-hilite-4" style="background-color: chartreuse; color: black;"&gt;Chain&lt;/layer&gt; Monte Carlo sampling toolkit.
&lt;a href="http://pypi.python.org/pypi/pymatlab/0.1.3"&gt;pymatlab 0.1.3&lt;/a&gt;   1   A python interface to MATLAB
&lt;a href="http://ghmm.sourceforge.net/ghmm-python-tutorial.html"&gt;http://ghmm.sourceforge.net/ghmm-python-tutorial.html&lt;/a&gt;
&lt;a href="http://pypi.python.org/pypi?%3Aaction=search&amp;amp;term=numpy&amp;amp;submit=search"&gt;http://pypi.python.org/pypi?%3Aaction=search&amp;amp;term=numpy&amp;amp;submit=search&lt;/a&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.openbayes.org/tutorials/tutorial-examples/"&gt;http://www.openbayes.org/tutorials/tutorial-examples/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6674595739722378828-2241967404445571724?l=weise12.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/IeJv0CgDRGL79UmZwMG93mHL_WM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IeJv0CgDRGL79UmZwMG93mHL_WM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/IeJv0CgDRGL79UmZwMG93mHL_WM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IeJv0CgDRGL79UmZwMG93mHL_WM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HJtEN/~4/sgaJLccNW30" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weise12.blogspot.com/feeds/2241967404445571724/comments/default" title="댓글" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6674595739722378828&amp;postID=2241967404445571724" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/2241967404445571724?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/2241967404445571724?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HJtEN/~3/sgaJLccNW30/blog-post.html" title="유용한 모듈들..." /><author><name>None</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://weise12.blogspot.com/2010/08/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkEAQHczfyp7ImA9WxFUFkU.&quot;"><id>tag:blogger.com,1999:blog-6674595739722378828.post-8927541732260831993</id><published>2010-06-27T17:22:00.001-07:00</published><updated>2010-06-27T17:24:01.987-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-27T17:24:01.987-07:00</app:edited><title>round함수와 around in numpy</title><content type="html">&lt;pre&gt;&gt;&gt;&gt; print around.__doc__

    Evenly round to the given number of decimals.

    Parameters
    ----------
    a : array_like
        Input data.
    decimals : int, optional
        Number of decimal places to round to (default: 0).  If
        decimals is negative, it specifies the number of positions to
        the left of the decimal point.
    out : ndarray, optional
        Alternative output array in which to place the result. It must have
        the same shape as the expected output, but the type of the output
        values will be cast if necessary.

    Returns
    -------
    rounded_array : ndarray
        An array of the same type as `a`, containing the rounded values.
        Unless `out` was specified, a new array is created.  A reference to
        the result is returned.

        The real and imaginary parts of complex numbers are rounded
        separately.  The result of rounding a float is a float.

    See Also
    --------
    ndarray.round : equivalent method

    Notes
    -----
    For values exactly halfway between rounded decimal values, Numpy
    rounds to the nearest even value. Thus 1.5 and 2.5 round to 2.0,
    -0.5 and 0.5 round to 0.0, etc. Results may also be surprising due
    to the inexact representation of decimal fractions in the IEEE
    floating point standard [1]_ and errors introduced when scaling
    by powers of ten.

    References
    ----------
    .. [1] "Lecture Notes on the Status of  IEEE 754", William Kahan,
           http://www.cs.berkeley.edu/~wkahan/ieee754status/IEEE754.PDF
    .. [2] "How Futile are Mindless Assessments of
           Roundoff in Floating-Point Computation?", William Kahan,
           http://www.cs.berkeley.edu/~wkahan/Mindless.pdf

    Examples
    --------
    &gt;&gt;&gt; np.around([.5, 1.5, 2.5, 3.5, 4.5])
    array([ 0.,  2.,  2.,  4.,  4.])
    &gt;&gt;&gt; np.around([1,2,3,11], decimals=1)
    array([ 1,  2,  3, 11])
    &gt;&gt;&gt; np.around([1,2,3,11], decimals=-1)
    array([ 0,  0,  0, 10])


&gt;&gt;&gt; around(array([0.4,0.50000000001]))
array([ 0.,  1.])
&gt;&gt;&gt; around(array([0.4,0.5000000000]))
array([ 0.,  0.])
&gt;&gt;&gt; round(0.5)
1.0
&gt;&gt;&gt;



&gt;&gt;&gt;
    ndarray.round
&lt;method 'round' of 'numpy.ndarray' objects&gt;
&gt;&gt;&gt; print ndarray.round.__doc__
a.round(decimals=0, out=None)

    Return an array rounded a to the given number of decimals.

    Refer to `numpy.around` for full documentation.

    See Also
    --------
    numpy.around : equivalent function


음 -_- round 함수와 결과 값이 다르다니...
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6674595739722378828-8927541732260831993?l=weise12.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/6R1Azu674xOZbwvYYnVccyngn7M/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6R1Azu674xOZbwvYYnVccyngn7M/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/6R1Azu674xOZbwvYYnVccyngn7M/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6R1Azu674xOZbwvYYnVccyngn7M/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HJtEN/~4/Bp9ADWG3Is4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weise12.blogspot.com/feeds/8927541732260831993/comments/default" title="댓글" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6674595739722378828&amp;postID=8927541732260831993" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/8927541732260831993?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/8927541732260831993?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HJtEN/~3/Bp9ADWG3Is4/round-around-in-numpy.html" title="round함수와 around in numpy" /><author><name>None</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://weise12.blogspot.com/2010/06/round-around-in-numpy.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkMNR30zcSp7ImA9WxFUFk8.&quot;"><id>tag:blogger.com,1999:blog-6674595739722378828.post-998392181782728141</id><published>2010-06-27T01:48:00.000-07:00</published><updated>2010-06-27T01:48:16.389-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-27T01:48:16.389-07:00</app:edited><title>numpy의 random 과 관련된 것들</title><content type="html">&lt;pre&gt;&gt;&gt;&gt; from numpy import *
&gt;&gt;&gt; random
&lt;module 'numpy.random' from 'C:\Python25\lib\site-packages\numpy-1.2.1n1-py2.5-w
in32.egg\numpy\random\__init__.pyc'&gt;
&gt;&gt;&gt; print random.__doc__

========================
Random Number Generation
========================

==================== =========================================================
Utility functions
==============================================================================
random               Uniformly distributed values of a given shape.
bytes                Uniformly distributed random bytes.
random_integers      Uniformly distributed integers in a given range.
random_sample        Uniformly distributed floats in a given range.
permutation          Randomly permute a sequence / generate a random sequence.
shuffle              Randomly permute a sequence in place.
seed                 Seed the random number generator.
==================== =========================================================

==================== =========================================================
Compatibility functions
==============================================================================
rand                 Uniformly distributed values.
randn                Normally distributed values.
ranf                 Uniformly distributed floating point numbers.
randint              Uniformly distributed integers in a given range.
==================== =========================================================

==================== =========================================================
Univariate distributions
==============================================================================
beta                 Beta distribution over ``[0, 1]``.
binomial             Binomial distribution.
chisquare            :math:`\chi^2` distribution.
exponential          Exponential distribution.
f                    F (Fisher-Snedecor) distribution.
gamma                Gamma distribution.
geometric            Geometric distribution.
gumbel               Gumbel distribution.
hypergeometric       Hypergeometric distribution.
laplace              Laplace distribution.
logistic             Logistic distribution.
lognormal            Log-normal distribution.
logseries            Logarithmic series distribution.
negative_binomial    Negative binomial distribution.
noncentral_chisquare Non-central chi-square distribution.
noncentral_f         Non-central F distribution.
normal               Normal / Gaussian distribution.
pareto               Pareto distribution.
poisson              Poisson distribution.
power                Power distribution.
rayleigh             Rayleigh distribution.
triangular           Triangular distribution.
uniform              Uniform distribution.
vonmises             Von Mises circular distribution.
wald                 Wald (inverse Gaussian) distribution.
weibull              Weibull distribution.
zipf                 Zipf's distribution over ranked data.
==================== =========================================================

==================== =========================================================
Multivariate distributions
==============================================================================
dirichlet            Multivariate generalization of Beta distribution.
multinomial          Multivariate generalization of the binomial distribution.
multivariate_normal  Multivariate generalization of the normal distribution.
==================== =========================================================

==================== =========================================================
Standard distributions
==============================================================================
standard_cauchy      Standard Cauchy-Lorentz distribution.
standard_exponential Standard exponential distribution.
standard_gamma       Standard Gamma distribution.
standard_normal      Standard normal distribution.
standard_t           Standard Student's t-distribution.
==================== =========================================================

==================== =========================================================
Internal functions
==============================================================================
get_state            Get tuple representing internal state of generator.
set_state            Set state of generator.
==================== =========================================================
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6674595739722378828-998392181782728141?l=weise12.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3zGp_bGb_A4bHZyMUfSZooTtYiE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3zGp_bGb_A4bHZyMUfSZooTtYiE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3zGp_bGb_A4bHZyMUfSZooTtYiE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3zGp_bGb_A4bHZyMUfSZooTtYiE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HJtEN/~4/WfMBomMAlLE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weise12.blogspot.com/feeds/998392181782728141/comments/default" title="댓글" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6674595739722378828&amp;postID=998392181782728141" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/998392181782728141?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/998392181782728141?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HJtEN/~3/WfMBomMAlLE/numpy-random.html" title="numpy의 random 과 관련된 것들" /><author><name>None</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://weise12.blogspot.com/2010/06/numpy-random.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0cCSHY8cSp7ImA9WxFVGEk.&quot;"><id>tag:blogger.com,1999:blog-6674595739722378828.post-2760739511433704438</id><published>2010-06-08T07:40:00.000-07:00</published><updated>2010-06-18T01:17:49.879-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-18T01:17:49.879-07:00</app:edited><title>Enthought Python</title><content type="html">&lt;span class="tweets_text" id="postText_15708635210"&gt;&lt;a href="http://j.mp/aYx4lK" target="_blank"&gt;http://j.mp/aYx4lK&lt;/a&gt; 좀 늦은 감이 있지만 python 2.6.4기반의 Enthought Python distribution package가 나왔습니다!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6674595739722378828-2760739511433704438?l=weise12.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_zYtFIXp_c93Ty82PskzbSVg9kQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_zYtFIXp_c93Ty82PskzbSVg9kQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/_zYtFIXp_c93Ty82PskzbSVg9kQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_zYtFIXp_c93Ty82PskzbSVg9kQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HJtEN/~4/gPkUw2Tevqk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weise12.blogspot.com/feeds/2760739511433704438/comments/default" title="댓글" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6674595739722378828&amp;postID=2760739511433704438" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/2760739511433704438?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/2760739511433704438?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HJtEN/~3/gPkUw2Tevqk/enthought-python.html" title="Enthought Python" /><author><name>None</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://weise12.blogspot.com/2010/06/enthought-python.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0EEQHo5eCp7ImA9WxFXFk0.&quot;"><id>tag:blogger.com,1999:blog-6674595739722378828.post-4336006341978812252</id><published>2010-05-23T03:13:00.000-07:00</published><updated>2010-05-23T03:13:21.420-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-23T03:13:21.420-07:00</app:edited><title>버튼 과 관련하여..</title><content type="html">버튼에 라벨 바꾸기&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.conn_button.SetLabel("disconnect")&lt;br /&gt;
&lt;br /&gt;
버튼 enable disable&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.mode_button.Enable(True)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6674595739722378828-4336006341978812252?l=weise12.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/tyI3tNL1c20q7bpvcRSs3KSQY-E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tyI3tNL1c20q7bpvcRSs3KSQY-E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/tyI3tNL1c20q7bpvcRSs3KSQY-E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tyI3tNL1c20q7bpvcRSs3KSQY-E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HJtEN/~4/rskk8Ashxkw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weise12.blogspot.com/feeds/4336006341978812252/comments/default" title="댓글" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6674595739722378828&amp;postID=4336006341978812252" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/4336006341978812252?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/4336006341978812252?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HJtEN/~3/rskk8Ashxkw/blog-post_23.html" title="버튼 과 관련하여.." /><author><name>None</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://weise12.blogspot.com/2010/05/blog-post_23.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0IBRn8_eSp7ImA9WxFXFk0.&quot;"><id>tag:blogger.com,1999:blog-6674595739722378828.post-6074732560196098921</id><published>2010-05-23T02:05:00.001-07:00</published><updated>2010-05-23T02:05:57.141-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-23T02:05:57.141-07:00</app:edited><title>wxPython에서 정의된 event의 종류</title><content type="html">&lt;pre&gt;&amp;gt;&amp;gt;&amp;gt; for x in dir(wx):
...   if x.startswith('EVT_'):
...       print x
...
EVT_ACTIVATE
EVT_ACTIVATE_APP
EVT_BUTTON
EVT_CALCULATE_LAYOUT
EVT_CHAR
EVT_CHAR_HOOK
EVT_CHECKBOX
EVT_CHECKLISTBOX
EVT_CHILD_FOCUS
EVT_CHOICE
EVT_CHOICEBOOK_PAGE_CHANGED
EVT_CHOICEBOOK_PAGE_CHANGING
EVT_CLOSE
EVT_COLLAPSIBLEPANE_CHANGED
EVT_COLOURPICKER_CHANGED
EVT_COMBOBOX
EVT_COMMAND
EVT_COMMAND_ENTER
EVT_COMMAND_FIND
EVT_COMMAND_FIND_CLOSE
EVT_COMMAND_FIND_NEXT
EVT_COMMAND_FIND_REPLACE
EVT_COMMAND_FIND_REPLACE_ALL
EVT_COMMAND_KILL_FOCUS
EVT_COMMAND_LEFT_CLICK
EVT_COMMAND_LEFT_DCLICK
EVT_COMMAND_RANGE
EVT_COMMAND_RIGHT_CLICK
EVT_COMMAND_RIGHT_DCLICK
EVT_COMMAND_SCROLL
EVT_COMMAND_SCROLL_BOTTOM
EVT_COMMAND_SCROLL_CHANGED
EVT_COMMAND_SCROLL_ENDSCROLL
EVT_COMMAND_SCROLL_LINEDOWN
EVT_COMMAND_SCROLL_LINEUP
EVT_COMMAND_SCROLL_PAGEDOWN
EVT_COMMAND_SCROLL_PAGEUP
EVT_COMMAND_SCROLL_THUMBRELEASE
EVT_COMMAND_SCROLL_THUMBTRACK
EVT_COMMAND_SCROLL_TOP
EVT_COMMAND_SET_FOCUS
EVT_CONTEXT_MENU
EVT_DATE_CHANGED
EVT_DETAILED_HELP
EVT_DETAILED_HELP_RANGE
EVT_DIRPICKER_CHANGED
EVT_DISPLAY_CHANGED
EVT_DROP_FILES
EVT_END_PROCESS
EVT_END_SESSION
EVT_ENTER_WINDOW
EVT_ERASE_BACKGROUND
EVT_FILEPICKER_CHANGED
EVT_FIND
EVT_FIND_CLOSE
EVT_FIND_NEXT
EVT_FIND_REPLACE
EVT_FIND_REPLACE_ALL
EVT_FONTPICKER_CHANGED
EVT_HELP
EVT_HELP_RANGE
EVT_HIBERNATE
EVT_HOTKEY
EVT_HYPERLINK
EVT_ICONIZE
EVT_IDLE
EVT_INIT_DIALOG
EVT_JOYSTICK_EVENTS
EVT_JOY_BUTTON_DOWN
EVT_JOY_BUTTON_UP
EVT_JOY_MOVE
EVT_JOY_ZMOVE
EVT_KEY_DOWN
EVT_KEY_UP
EVT_KILL_FOCUS
EVT_LEAVE_WINDOW
EVT_LEFT_DCLICK
EVT_LEFT_DOWN
EVT_LEFT_UP
EVT_LISTBOOK_PAGE_CHANGED
EVT_LISTBOOK_PAGE_CHANGING
EVT_LISTBOX
EVT_LISTBOX_DCLICK
EVT_LIST_BEGIN_DRAG
EVT_LIST_BEGIN_LABEL_EDIT
EVT_LIST_BEGIN_RDRAG
EVT_LIST_CACHE_HINT
EVT_LIST_COL_BEGIN_DRAG
EVT_LIST_COL_CLICK
EVT_LIST_COL_DRAGGING
EVT_LIST_COL_END_DRAG
EVT_LIST_COL_RIGHT_CLICK
EVT_LIST_DELETE_ALL_ITEMS
EVT_LIST_DELETE_ITEM
EVT_LIST_END_LABEL_EDIT
EVT_LIST_INSERT_ITEM
EVT_LIST_ITEM_ACTIVATED
EVT_LIST_ITEM_DESELECTED
EVT_LIST_ITEM_FOCUSED
EVT_LIST_ITEM_MIDDLE_CLICK
EVT_LIST_ITEM_RIGHT_CLICK
EVT_LIST_ITEM_SELECTED
EVT_LIST_KEY_DOWN
EVT_MAXIMIZE
EVT_MENU
EVT_MENU_CLOSE
EVT_MENU_HIGHLIGHT
EVT_MENU_HIGHLIGHT_ALL
EVT_MENU_OPEN
EVT_MENU_RANGE
EVT_MIDDLE_DCLICK
EVT_MIDDLE_DOWN
EVT_MIDDLE_UP
EVT_MOTION
EVT_MOUSEWHEEL
EVT_MOUSE_CAPTURE_CHANGED
EVT_MOUSE_CAPTURE_LOST
EVT_MOUSE_EVENTS
EVT_MOVE
EVT_MOVING
EVT_NAVIGATION_KEY
EVT_NC_PAINT
EVT_NOTEBOOK_PAGE_CHANGED
EVT_NOTEBOOK_PAGE_CHANGING
EVT_PAINT
EVT_PALETTE_CHANGED
EVT_POWER_RESUME
EVT_POWER_SUSPENDED
EVT_POWER_SUSPENDING
EVT_POWER_SUSPEND_CANCEL
EVT_QUERY_END_SESSION
EVT_QUERY_LAYOUT_INFO
EVT_QUERY_NEW_PALETTE
EVT_RADIOBOX
EVT_RADIOBUTTON
EVT_RIGHT_DCLICK
EVT_RIGHT_DOWN
EVT_RIGHT_UP
EVT_SASH_DRAGGED
EVT_SASH_DRAGGED_RANGE
EVT_SCROLL
EVT_SCROLLBAR
EVT_SCROLLWIN
EVT_SCROLLWIN_BOTTOM
EVT_SCROLLWIN_LINEDOWN
EVT_SCROLLWIN_LINEUP
EVT_SCROLLWIN_PAGEDOWN
EVT_SCROLLWIN_PAGEUP
EVT_SCROLLWIN_THUMBRELEASE
EVT_SCROLLWIN_THUMBTRACK
EVT_SCROLLWIN_TOP
EVT_SCROLL_BOTTOM
EVT_SCROLL_CHANGED
EVT_SCROLL_ENDSCROLL
EVT_SCROLL_LINEDOWN
EVT_SCROLL_LINEUP
EVT_SCROLL_PAGEDOWN
EVT_SCROLL_PAGEUP
EVT_SCROLL_THUMBRELEASE
EVT_SCROLL_THUMBTRACK
EVT_SCROLL_TOP
EVT_SEARCHCTRL_CANCEL_BTN
EVT_SEARCHCTRL_SEARCH_BTN
EVT_SET_CURSOR
EVT_SET_FOCUS
EVT_SHOW
EVT_SIZE
EVT_SIZING
EVT_SLIDER
EVT_SPIN
EVT_SPINCTRL
EVT_SPIN_DOWN
EVT_SPIN_UP
EVT_SPLITTER_DCLICK
EVT_SPLITTER_DOUBLECLICKED
EVT_SPLITTER_SASH_POS_CHANGED
EVT_SPLITTER_SASH_POS_CHANGING
EVT_SPLITTER_UNSPLIT
EVT_SYS_COLOUR_CHANGED
EVT_TASKBAR_CLICK
EVT_TASKBAR_LEFT_DCLICK
EVT_TASKBAR_LEFT_DOWN
EVT_TASKBAR_LEFT_UP
EVT_TASKBAR_MOVE
EVT_TASKBAR_RIGHT_DCLICK
EVT_TASKBAR_RIGHT_DOWN
EVT_TASKBAR_RIGHT_UP
EVT_TEXT
EVT_TEXT_COPY
EVT_TEXT_CUT
EVT_TEXT_ENTER
EVT_TEXT_MAXLEN
EVT_TEXT_PASTE
EVT_TEXT_URL
EVT_TIMER
EVT_TOGGLEBUTTON
EVT_TOOL
EVT_TOOLBOOK_PAGE_CHANGED
EVT_TOOLBOOK_PAGE_CHANGING
EVT_TOOL_ENTER
EVT_TOOL_RANGE
EVT_TOOL_RCLICKED
EVT_TOOL_RCLICKED_RANGE
EVT_TREEBOOK_NODE_COLLAPSED
EVT_TREEBOOK_NODE_EXPANDED
EVT_TREEBOOK_PAGE_CHANGED
EVT_TREEBOOK_PAGE_CHANGING
EVT_TREE_BEGIN_DRAG
EVT_TREE_BEGIN_LABEL_EDIT
EVT_TREE_BEGIN_RDRAG
EVT_TREE_DELETE_ITEM
EVT_TREE_END_DRAG
EVT_TREE_END_LABEL_EDIT
EVT_TREE_GET_INFO
EVT_TREE_ITEM_ACTIVATED
EVT_TREE_ITEM_COLLAPSED
EVT_TREE_ITEM_COLLAPSING
EVT_TREE_ITEM_EXPANDED
EVT_TREE_ITEM_EXPANDING
EVT_TREE_ITEM_GETTOOLTIP
EVT_TREE_ITEM_MENU
EVT_TREE_ITEM_MIDDLE_CLICK
EVT_TREE_ITEM_RIGHT_CLICK
EVT_TREE_KEY_DOWN
EVT_TREE_SEL_CHANGED
EVT_TREE_SEL_CHANGING
EVT_TREE_SET_INFO
EVT_TREE_STATE_IMAGE_CLICK
EVT_UPDATE_UI
EVT_UPDATE_UI_RANGE
EVT_VLBOX
EVT_WINDOW_CREATE
EVT_WINDOW_DESTROY
&amp;gt;&amp;gt;&amp;gt;
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6674595739722378828-6074732560196098921?l=weise12.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8qidLzk95LCope3XwdaicSPseEc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8qidLzk95LCope3XwdaicSPseEc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8qidLzk95LCope3XwdaicSPseEc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8qidLzk95LCope3XwdaicSPseEc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HJtEN/~4/wkCzdUwfceg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weise12.blogspot.com/feeds/6074732560196098921/comments/default" title="댓글" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6674595739722378828&amp;postID=6074732560196098921" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/6074732560196098921?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/6074732560196098921?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HJtEN/~3/wkCzdUwfceg/wxpython-event.html" title="wxPython에서 정의된 event의 종류" /><author><name>None</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://weise12.blogspot.com/2010/05/wxpython-event.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UCQX8zeip7ImA9WxFXFk0.&quot;"><id>tag:blogger.com,1999:blog-6674595739722378828.post-6780243736195128687</id><published>2010-05-23T02:01:00.000-07:00</published><updated>2010-05-23T02:01:00.182-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-23T02:01:00.182-07:00</app:edited><title>wxPython에서의키보드 이벤트시 키 코드</title><content type="html">&lt;pre&gt;&amp;gt;&amp;gt;&amp;gt; import wx
&amp;gt;&amp;gt;&amp;gt; for x in dir(wx):
...   if x.startswith('WX
...       print x
...
WXK_ADD
WXK_ALT
WXK_BACK
WXK_CANCEL
WXK_CAPITAL
WXK_CLEAR
WXK_COMMAND
WXK_CONTROL
WXK_DECIMAL
WXK_DELETE
WXK_DIVIDE
WXK_DOWN
WXK_END
WXK_ESCAPE
WXK_EXECUTE
WXK_F1
WXK_F10
WXK_F11
WXK_F12
WXK_F13
WXK_F14
WXK_F15
WXK_F16
WXK_F17
WXK_F18
WXK_F19
WXK_F2
WXK_F20
WXK_F21
WXK_F22
WXK_F23
WXK_F24
WXK_F3
WXK_F4
WXK_F5
WXK_F6
WXK_F7
WXK_F8
WXK_F9
WXK_HELP
WXK_HOME
WXK_INSERT
WXK_LBUTTON
WXK_LEFT
WXK_MBUTTON
WXK_MENU
WXK_MULTIPLY
WXK_NEXT
WXK_NUMLOCK
WXK_NUMPAD0
WXK_NUMPAD1
WXK_NUMPAD2
WXK_NUMPAD3
WXK_NUMPAD4
WXK_NUMPAD5
WXK_NUMPAD6
WXK_NUMPAD7
WXK_NUMPAD8
WXK_NUMPAD9
WXK_NUMPAD_ADD
WXK_NUMPAD_BEGIN
WXK_NUMPAD_DECIMAL
WXK_NUMPAD_DELETE
WXK_NUMPAD_DIVIDE
WXK_NUMPAD_DOWN
WXK_NUMPAD_END
WXK_NUMPAD_ENTER
WXK_NUMPAD_EQUAL
WXK_NUMPAD_F1
WXK_NUMPAD_F2
WXK_NUMPAD_F3
WXK_NUMPAD_F4
WXK_NUMPAD_HOME
WXK_NUMPAD_INSERT
WXK_NUMPAD_LEFT
WXK_NUMPAD_MULTIPLY
WXK_NUMPAD_NEXT
WXK_NUMPAD_PAGEDOWN
WXK_NUMPAD_PAGEUP
WXK_NUMPAD_PRIOR
WXK_NUMPAD_RIGHT
WXK_NUMPAD_SEPARATOR
WXK_NUMPAD_SPACE
WXK_NUMPAD_SUBTRACT
WXK_NUMPAD_TAB
WXK_NUMPAD_UP
WXK_PAGEDOWN
WXK_PAGEUP
WXK_PAUSE
WXK_PRINT
WXK_PRIOR
WXK_RBUTTON
WXK_RETURN
WXK_RIGHT
WXK_SCROLL
WXK_SELECT
WXK_SEPARATOR
WXK_SHIFT
WXK_SNAPSHOT
WXK_SPACE
WXK_SPECIAL1
WXK_SPECIAL10
WXK_SPECIAL11
WXK_SPECIAL12
WXK_SPECIAL13
WXK_SPECIAL14
WXK_SPECIAL15
WXK_SPECIAL16
WXK_SPECIAL17
WXK_SPECIAL18
WXK_SPECIAL19
WXK_SPECIAL2
WXK_SPECIAL20
WXK_SPECIAL3
WXK_SPECIAL4
WXK_SPECIAL5
WXK_SPECIAL6
WXK_SPECIAL7
WXK_SPECIAL8
WXK_SPECIAL9
WXK_START
WXK_SUBTRACT
WXK_TAB
WXK_UP
WXK_WINDOWS_LEFT
WXK_WINDOWS_MENU
WXK_WINDOWS_RIGHT
&amp;gt;&amp;gt;&amp;gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6674595739722378828-6780243736195128687?l=weise12.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/yiMgnxqKbIEdPqO5ETP6QpIBHXc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yiMgnxqKbIEdPqO5ETP6QpIBHXc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/yiMgnxqKbIEdPqO5ETP6QpIBHXc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yiMgnxqKbIEdPqO5ETP6QpIBHXc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HJtEN/~4/DWMYC5h4NqQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weise12.blogspot.com/feeds/6780243736195128687/comments/default" title="댓글" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6674595739722378828&amp;postID=6780243736195128687" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/6780243736195128687?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/6780243736195128687?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HJtEN/~3/DWMYC5h4NqQ/wxpython.html" title="wxPython에서의키보드 이벤트시 키 코드" /><author><name>None</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://weise12.blogspot.com/2010/05/wxpython.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0AERXo5fip7ImA9WxFXEUk.&quot;"><id>tag:blogger.com,1999:blog-6674595739722378828.post-5614343703315510283</id><published>2010-05-17T19:28:00.000-07:00</published><updated>2010-05-17T19:28:24.426-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-17T19:28:24.426-07:00</app:edited><title>pcb-schemetic editor</title><content type="html">&lt;pre&gt;http://www.suigyodo.com/online/e/index.htm&amp;nbsp;&lt;/pre&gt;&lt;blockquote&gt;&lt;pre&gt;Sch3V is a schematic capture program for Windows 2000/XP/Vista

      

      The name "BSch" is an abbreviation of "Basic Schematic".
      It has only basic functions, in order to simplify operation.

      This package contains the following software and data;
      &lt;/pre&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;BSch3V&lt;/b&gt; Schematic capture &lt;span&gt;(Ver. 0.68.50) &lt;span&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;&lt;b&gt;&lt;i&gt;updated&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;   &lt;/li&gt;
&lt;li&gt;&lt;b&gt;LCoV&lt;/b&gt; Component library editor &lt;span&gt;(Ver.  0.68.30) &lt;span style="color: red;"&gt;&lt;b&gt;&lt;i&gt;updated&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;         &lt;/li&gt;
&lt;li&gt;&lt;b&gt;PL3W&lt;/b&gt; Partslist generator &lt;span&gt;(Ver.  0.68.30)&lt;/span&gt;         &lt;/li&gt;
&lt;li&gt;&lt;b&gt;NL3W&lt;/b&gt; Netlist generator&lt;span&gt; (Ver.  0.68.30) &lt;/span&gt;   &lt;/li&gt;
&lt;li&gt;&lt;b&gt;NUT3W&lt;/b&gt; Automatic numbering software &lt;span&gt;(Ver.  0.68.30) &lt;span style="color: red;"&gt;&lt;b&gt;&lt;i&gt;updated&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;          &lt;/li&gt;
&lt;li&gt;&lt;b&gt;CE2TO3&lt;/b&gt; Migration tool from Old BSch&lt;span&gt; (Ver. 0.68.30)&lt;/span&gt;         &lt;/li&gt;
&lt;li&gt;&lt;b&gt;CE3Search&lt;/b&gt; Searching utility for CE3 files. &lt;span&gt;&lt;span style="color: red;"&gt;&lt;b&gt;&lt;i&gt;new&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;         &lt;/li&gt;
&lt;li&gt;Component library   &lt;/li&gt;
&lt;li&gt;Source code &lt;/li&gt;
&lt;/ul&gt;&lt;pre&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;pre&gt;http://www.lis.inpg.fr/realise_au_lis/kicad/&amp;nbsp;&lt;/pre&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;small&gt;
&lt;b&gt;Kicad&lt;/b&gt; is an open source (GPL) software for the creation of
electronic
schematic diagrams and printed circuit board artwork.

Designed and written by &lt;b&gt;Jean-Pierre Charras&lt;/b&gt;, a researcher at &lt;b&gt;LIS&lt;/b&gt;
(Laboratoire des Images et des Signaux) and a teacher in&amp;nbsp; &lt;b&gt;IUT&lt;/b&gt;
&lt;b&gt;de Saint Martin d'Hères&lt;/b&gt;.(France), in the field of
electrical engineering and
image processing.


&lt;b&gt;Kicad&lt;/b&gt; is a set of four softwares and a project manager:

&lt;/small&gt;&lt;/pre&gt;&lt;ul&gt;&lt;small&gt;  &lt;/small&gt;
&lt;li&gt;&lt;small&gt; &lt;b&gt;Eeschema&lt;/b&gt; :Schematic entry. &lt;/small&gt;&lt;/li&gt;
&lt;small&gt;  &lt;/small&gt;
&lt;li&gt;&lt;small&gt; &lt;b&gt;Pcbnew&lt;/b&gt; :Board editor. &lt;/small&gt;&lt;/li&gt;
&lt;small&gt;  &lt;/small&gt;
&lt;li&gt;&lt;small&gt; &lt;b&gt;Gerbview&lt;/b&gt; :GERBER viewer  (photoplotter documents). &lt;/small&gt;&lt;/li&gt;
&lt;small&gt;  &lt;/small&gt;
&lt;li&gt;&lt;small&gt; &lt;b&gt;Cvpcb&lt;/b&gt; :footprint selector for  components used in the circuit design. &lt;/small&gt;&lt;/li&gt;
&lt;small&gt;  &lt;/small&gt;
&lt;li&gt;&lt;small&gt; &lt;b&gt;Kicad:&lt;/b&gt; project manager. &lt;/small&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;small&gt;&lt;/small&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;br /&gt;
http://www.cadsoft.de/&lt;br /&gt;
&lt;br /&gt;
Nice, easy to use CAD/CAM software for PCB schematic and routing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[1] http://www.olimex.com/pcb/dtools.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6674595739722378828-5614343703315510283?l=weise12.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/pqeNJjLWveUcOyvStum4aG14Ii8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pqeNJjLWveUcOyvStum4aG14Ii8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/pqeNJjLWveUcOyvStum4aG14Ii8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pqeNJjLWveUcOyvStum4aG14Ii8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HJtEN/~4/fFTs1X7LJsQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weise12.blogspot.com/feeds/5614343703315510283/comments/default" title="댓글" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6674595739722378828&amp;postID=5614343703315510283" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/5614343703315510283?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/5614343703315510283?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HJtEN/~3/fFTs1X7LJsQ/pcb-schemetic-editor.html" title="pcb-schemetic editor" /><author><name>None</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://weise12.blogspot.com/2010/05/pcb-schemetic-editor.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUFQ308cCp7ImA9WxFXEEo.&quot;"><id>tag:blogger.com,1999:blog-6674595739722378828.post-3065798173539609504</id><published>2010-05-16T23:36:00.001-07:00</published><updated>2010-05-16T23:36:52.378-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-16T23:36:52.378-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="opencv" /><title>Installing OpenCV and Setting of Python-Opencv.ㅔㅛ</title><content type="html">&lt;pre&gt;OpenCV is very famous image processing library that oppers various image
 types, image processing functions, graphical device interfacing 
functions and even machine learning features. However, it is still not 
easy to beginers to make a program even though they are very simple one.

Here
 is a solution. OpenCV library for &lt;layer id="google-toolbar-hilite-0" style="background-color: yellow; color: black;"&gt;&lt;layer id="google-toolbar-hilite-0" style="background-color: yellow; color: black;"&gt;&lt;layer id="google-toolbar-hilite-0" style="background-color: yellow; color: black;"&gt;Python&lt;/layer&gt;&lt;/layer&gt;&lt;/layer&gt; languages. &lt;layer id="google-toolbar-hilite-1" style="background-color: yellow; color: black;"&gt;&lt;layer id="google-toolbar-hilite-1" style="background-color: yellow; color: black;"&gt;&lt;layer id="google-toolbar-hilite-1" style="background-color: yellow; color: black;"&gt;Python&lt;/layer&gt;&lt;/layer&gt;&lt;/layer&gt;
 is very easy to lean and to use. You don't need to concern about the 
memory allocation and delocation. You don't need concern about the 
pointers. This language became more and more popular especially in the 
scientific area. 

#for example~

In this articl, I'll 
describe the Installation OpenCV and &lt;layer id="google-toolbar-hilite-2" style="background-color: yellow; color: black;"&gt;&lt;layer id="google-toolbar-hilite-2" style="background-color: yellow; color: black;"&gt;&lt;layer id="google-toolbar-hilite-2" style="background-color: yellow; color: black;"&gt;Python&lt;/layer&gt;&lt;/layer&gt;&lt;/layer&gt;. The latest 
version of OpenCV&amp;nbsp; is OpenCV 2.0 beta and you can download it on the 
following address.
&lt;a href="http://sourceforge.net/projects/opencvlibrary/%20%20%5B%EC%B6%9C%EC%B2%98%5D%20OpenCV%202.0%20beta%202009.09.10%20%EA%B3%B5%EA%B0%9C%20%28OpenCV%20KOREA%20%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD%20%EC%B5%9C%EA%B3%A0%EC%9D%98%20%EC%BB%B4%ED%93%A8%ED%84%B0%EB%B9%84%EC%A0%BC%20%EC%BB%A4%EB%AE%A4%EB%8B%88%ED%8B%B0%29%20%7C%EC%9E%91%EC%84%B1%EC%9E%90%20%EC%8D%AC%EC%83%A4%EC%9D%B8" target="_blank"&gt;http://sourceforge.net/projects/opencvlibrary/&lt;/a&gt;
and
 You may need &lt;layer id="google-toolbar-hilite-3" style="background-color: yellow; color: black;"&gt;&lt;layer id="google-toolbar-hilite-3" style="background-color: yellow; color: black;"&gt;&lt;layer id="google-toolbar-hilite-3" style="background-color: yellow; color: black;"&gt;Python&lt;/layer&gt;&lt;/layer&gt;&lt;/layer&gt; version of 2.6 the
 latest version of &lt;layer id="google-toolbar-hilite-4" style="background-color: yellow; color: black;"&gt;&lt;layer id="google-toolbar-hilite-4" style="background-color: yellow; color: black;"&gt;&lt;layer id="google-toolbar-hilite-4" style="background-color: yellow; color: black;"&gt;Python&lt;/layer&gt;&lt;/layer&gt;&lt;/layer&gt; 2.6 is 2.6.5 
final.
&lt;a href="http://python.org/download/releases/2.6.5/" target="_blank"&gt;http://&lt;layer id="google-toolbar-hilite-5" style="background-color: yellow; color: black;"&gt;&lt;layer id="google-toolbar-hilite-5" style="background-color: yellow; color: black;"&gt;&lt;layer id="google-toolbar-hilite-5" style="background-color: yellow; color: black;"&gt;python&lt;/layer&gt;&lt;/layer&gt;&lt;/layer&gt;.org/download/releases/2.6.5/&lt;/a&gt;

[WindowXP
 version]
First Install the &lt;layer id="google-toolbar-hilite-6" style="background-color: yellow; color: black;"&gt;&lt;layer id="google-toolbar-hilite-6" style="background-color: yellow; color: black;"&gt;&lt;layer id="google-toolbar-hilite-6" style="background-color: yellow; color: black;"&gt;python&lt;/layer&gt;&lt;/layer&gt;&lt;/layer&gt; 2.6. After that, 
you can find folder on "C:" drive "C:\Python26\"
After installing the
 &lt;layer id="google-toolbar-hilite-7" style="background-color: yellow; color: black;"&gt;&lt;layer id="google-toolbar-hilite-7" style="background-color: yellow; color: black;"&gt;&lt;layer id="google-toolbar-hilite-7" style="background-color: yellow; color: black;"&gt;Python&lt;/layer&gt;&lt;/layer&gt;&lt;/layer&gt; 2.6, Install the Opencv 2.0 beta.
Then
 you can find "C:\OpenCV2.0\" folder.

There still some works have
 to be done to use OpenCV library in &lt;layer id="google-toolbar-hilite-8" style="background-color: yellow; color: black;"&gt;&lt;layer id="google-toolbar-hilite-8" style="background-color: yellow; color: black;"&gt;&lt;layer id="google-toolbar-hilite-8" style="background-color: yellow; color: black;"&gt;Python&lt;/layer&gt;&lt;/layer&gt;&lt;/layer&gt;.
Copy all files
 in the "C:\OpenCV2.0\Python2.6\Lib\site-packages" directory to the 
C:\Python26\Lib\site-packages". Then you can use OpenCV library in &lt;layer id="google-toolbar-hilite-9" style="background-color: yellow; color: black;"&gt;&lt;layer id="google-toolbar-hilite-9" style="background-color: yellow; color: black;"&gt;&lt;layer id="google-toolbar-hilite-9" style="background-color: yellow; color: black;"&gt;Python&lt;/layer&gt;&lt;/layer&gt;&lt;/layer&gt;.
&lt;/pre&gt;The  final job is copy DLLs in "C:\OpenCV2.0\bin" into  "C:\Python26\Lib\site-packages\opencv"&lt;br /&gt;
&lt;br /&gt;
You can find  some examples on following address, however there are still lack of  documentations on &lt;layer id="google-toolbar-hilite-10" style="background-color: yellow; color: black;"&gt;&lt;layer id="google-toolbar-hilite-10" style="background-color: yellow; color: black;"&gt;&lt;layer id="google-toolbar-hilite-10" style="background-color: yellow; color: black;"&gt;Python&lt;/layer&gt;&lt;/layer&gt;&lt;/layer&gt; OpenCV.&lt;br /&gt;
&lt;a href="http://opencv.willowgarage.com/documentation/python/index.html" target="_blank"&gt;http://opencv.willowgarage.com/documentation/&lt;layer id="google-toolbar-hilite-11" style="background-color: yellow; color: black;"&gt;&lt;layer id="google-toolbar-hilite-11" style="background-color: yellow; color: black;"&gt;&lt;layer id="google-toolbar-hilite-11" style="background-color: yellow; color: black;"&gt;python&lt;/layer&gt;&lt;/layer&gt;&lt;/layer&gt;/index.html&lt;/a&gt;&lt;br /&gt;
In  my experience, In most case you can use the &lt;layer id="google-toolbar-hilite-12" style="background-color: yellow; color: black;"&gt;&lt;layer id="google-toolbar-hilite-12" style="background-color: yellow; color: black;"&gt;&lt;layer id="google-toolbar-hilite-12" style="background-color: yellow; color: black;"&gt;Python&lt;/layer&gt;&lt;/layer&gt;&lt;/layer&gt;-OpenCV  library with reffering to OpenCV C-API documents, but sometimes there  were SOME major differences on data types, function parameters and  return values. However thoses are not documented. Sometimes you need to  browse the &lt;layer id="google-toolbar-hilite-13" style="background-color: yellow; color: black;"&gt;&lt;layer id="google-toolbar-hilite-13" style="background-color: yellow; color: black;"&gt;&lt;layer id="google-toolbar-hilite-13" style="background-color: yellow; color: black;"&gt;python&lt;/layer&gt;&lt;/layer&gt;&lt;/layer&gt; wrapper code to solve a problems.  &lt;br /&gt;
&amp;nbsp;&lt;a href="http://weise12.blogspot.com/" target="_blank"&gt;http://weise12.blogspot.com/&lt;/a&gt;:  There are some articles on those problems. (but it may writen by  Korean.) I'll convert these articles to english and search more on the  difference of C and &lt;layer id="google-toolbar-hilite-14" style="background-color: yellow; color: black;"&gt;&lt;layer id="google-toolbar-hilite-14" style="background-color: yellow; color: black;"&gt;&lt;layer id="google-toolbar-hilite-14" style="background-color: yellow; color: black;"&gt;Python&lt;/layer&gt;&lt;/layer&gt;&lt;/layer&gt; Interfaces.&lt;br /&gt;
&lt;br /&gt;
ps.  I don't Know there is still memory leakage problems on &lt;layer id="google-toolbar-hilite-15" style="background-color: yellow; color: black;"&gt;&lt;layer id="google-toolbar-hilite-15" style="background-color: yellow; color: black;"&gt;&lt;layer id="google-toolbar-hilite-15" style="background-color: yellow; color: black;"&gt;Python&lt;/layer&gt;&lt;/layer&gt;&lt;/layer&gt;-OpenCV  library. You can use This library on simple and small test programs,  however you need to care about the problem. To hand the memory leackage  problem, I created child process when processing the image and get the  results with sockets.&lt;br /&gt;
&lt;br /&gt;
Good luck to you.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[1] &lt;a href="http://python.org/" target="_blank"&gt;http://&lt;layer id="google-toolbar-hilite-16" style="background-color: yellow; color: black;"&gt;&lt;layer id="google-toolbar-hilite-16" style="background-color: yellow; color: black;"&gt;&lt;layer id="google-toolbar-hilite-16" style="background-color: yellow; color: black;"&gt;python&lt;/layer&gt;&lt;/layer&gt;&lt;/layer&gt;.org/&lt;/a&gt;&lt;br /&gt;
[2]  &lt;a href="http://cafe.naver.com/opencv.cafe" target="_blank"&gt;http://cafe.naver.com/opencv.cafe&lt;/a&gt;&lt;br /&gt;
&amp;nbsp;  &amp;nbsp;&amp;nbsp; -  http://cafe.naver.com/opencv.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=10600&lt;br /&gt;
[3]  &lt;a href="http://opencv.willowgarage.com/documentation/python/index.html" target="_blank"&gt;http://opencv.willowgarage.com/documentation/&lt;layer id="google-toolbar-hilite-17" style="background-color: yellow; color: black;"&gt;&lt;layer id="google-toolbar-hilite-17" style="background-color: yellow; color: black;"&gt;python&lt;/layer&gt;&lt;/layer&gt;/index.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6674595739722378828-3065798173539609504?l=weise12.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/eVVQ_Gto8dReZLVHGxY3F26_zgc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eVVQ_Gto8dReZLVHGxY3F26_zgc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/eVVQ_Gto8dReZLVHGxY3F26_zgc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eVVQ_Gto8dReZLVHGxY3F26_zgc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HJtEN/~4/k2ieGux_2Dg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weise12.blogspot.com/feeds/3065798173539609504/comments/default" title="댓글" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6674595739722378828&amp;postID=3065798173539609504" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/3065798173539609504?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6674595739722378828/posts/default/3065798173539609504?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HJtEN/~3/k2ieGux_2Dg/installing-opencv-and-setting-of-python.html" title="Installing OpenCV and Setting of Python-Opencv.ㅔㅛ" /><author><name>None</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://weise12.blogspot.com/2010/05/installing-opencv-and-setting-of-python.html</feedburner:origLink></entry></feed>

