<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>digital matter &#187; Python</title>
	<atom:link href="http://blog.loadlimits.info/tag/python/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.loadlimits.info</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Sun, 29 Jan 2012 07:43:32 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>PythonのPyDHCPLibを使ってDHCPパケットを読む</title>
		<link>http://blog.loadlimits.info/2011/11/python%e3%81%aepydhcplib%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6dhcp%e3%83%91%e3%82%b1%e3%83%83%e3%83%88%e3%82%92%e8%aa%ad%e3%82%80/</link>
		<comments>http://blog.loadlimits.info/2011/11/python%e3%81%aepydhcplib%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6dhcp%e3%83%91%e3%82%b1%e3%83%83%e3%83%88%e3%82%92%e8%aa%ad%e3%82%80/#comments</comments>
		<pubDate>Tue, 22 Nov 2011 04:09:22 +0000</pubDate>
		<dc:creator>hotpi</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[DHCP]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://blog.loadlimits.info/2011/11/python%e3%81%aepydhcplib%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6dhcp%e3%83%91%e3%82%b1%e3%83%83%e3%83%88%e3%82%92%e8%aa%ad%e3%82%80/</guid>
		<description><![CDATA[PyDHCPLibはPure Pythonで書かれたDHCPパケットのリード/ライトライブラリです。 Pythonで書かれているので、LinuxでもWindowsでも動きます。（Windowsのときはちょっと対策が必要） まずはdebian Linuxの場合。（aptでインストールできました。追記参照） $ wget http://pydhcplib.tuxfamily.org/download/pydhcplib-0.6.2.tar.gz $ tar xvzf pydhcplib-0.6.2.tar.gz $ cd pydhcplib-0.6.2 $ sudo /usr/bin/python2.6 ./setup.py install /usr/local/lib/python2.6/dist-packages/pydhcplib に入りました。 流れてくるパケットを読み取るためにはサーバとして動かします。 examplesディレクトリの中にサーバ用のサンプルが入っているので実行します。 $ sudo /usr/bin/python2.6 ./examples/server_example.py これでOKです。 ちなみにroot権限で実行しないと、以下のエラーが出てポートが開けられません。 pydhcplib.DhcpNetwork.BindToAddress error : [Errno 13] Permission denied ではWindowsの場合。 Windows 7にもPython 2.7.2をインストールして使って見ました。 &#62; cd pydhcplib-0.6.2 &#62; C:\Python27\python.exe .\setup.py install C:\Python27\Lib\site-packages\pydhcplibにインストールされました。 &#62; C:\Python27\python.exe .\examples\server_example.py Traceback (most recent [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://pydhcplib.tuxfamily.org/pmwiki/index.php" target="_blank">PyDHCPLib</a>はPure Pythonで書かれたDHCPパケットのリード/ライトライブラリです。</p>
<p>Pythonで書かれているので、LinuxでもWindowsでも動きます。（Windowsのときはちょっと対策が必要）</p>
<p>まずはdebian Linuxの場合。（aptでインストールできました。追記参照）</p>
<p>$ wget <a href="http://pydhcplib.tuxfamily.org/download/pydhcplib-0.6.2.tar.gz">http://pydhcplib.tuxfamily.org/download/pydhcplib-0.6.2.tar.gz</a>     <br />$ tar xvzf pydhcplib-0.6.2.tar.gz     <br />$ cd pydhcplib-0.6.2     <br />$ sudo /usr/bin/python2.6 ./setup.py install</p>
<p>/usr/local/lib/python2.6/dist-packages/pydhcplib    <br />に入りました。</p>
<p>流れてくるパケットを読み取るためにはサーバとして動かします。    <br />examplesディレクトリの中にサーバ用のサンプルが入っているので実行します。</p>
<p>$ sudo /usr/bin/python2.6 ./examples/server_example.py</p>
<p>これでOKです。</p>
<p>ちなみにroot権限で実行しないと、以下のエラーが出てポートが開けられません。    <br />pydhcplib.DhcpNetwork.BindToAddress error : [Errno 13] Permission denied</p>
<p>ではWindowsの場合。</p>
<p>Windows 7にもPython 2.7.2をインストールして使って見ました。</p>
<p>&gt; cd pydhcplib-0.6.2    <br />&gt; C:\Python27\python.exe .\setup.py install</p>
<p>C:\Python27\Lib\site-packages\pydhcplibにインストールされました。</p>
<p>&gt; C:\Python27\python.exe .\examples\server_example.py    <br />Traceback (most recent call last):     <br />&#160; File &quot;.\examples\server_example.py&quot;, line 21, in &lt;module&gt;     <br />&#160;&#160;&#160; from pydhcplib.dhcp_network import *     <br />&#160; File &quot;C:\Python27\lib\site-packages\pydhcplib\dhcp_network.py&quot;, line 22, in &lt;module&gt;     <br />&#160;&#160;&#160; import IN     <br />ImportError: No module named IN</p>
<p>インポートエラー。INモジュールというものがないとのこと。</p>
<p>INモジュールはdebianではPythonのplat-linux2ディレクトリ以下に入っています。中身は    <br /># Generated by h2py from /usr/include/netinet/in.h     <br />netinetから変換した定数の定義でした。</p>
<p>なので、必要なところだけコピーしてくることにします。</p>
<p>$ cat /usr/lib/python2.6/plat-linux2/IN.py |grep SO_BINDTODEVICE    <br />SO_BINDTODEVICE = 25</p>
<p>このSO_BINDTODEVICEの定義だけを書いたIN.pyファイルをexamplesディレクトリに置けばOKです。</p>
<p>IN.py    <br />SO_BINDTODEVICE = 25</p>
<p>これで試しにiPod touchをLANに接続して見ました。</p>
<p>&gt; C:\Python27\python.exe .\examples\server_example.py    <br /># Header fields     <br />op : BOOTREQUEST     <br />htype : 1     <br />hlen : 6     <br />hops : 0     <br />xid : 3472825851     <br />secs : 1     <br />flags : 0     <br />ciaddr : 0.0.0.0     <br />yiaddr : 0.0.0.0     <br />siaddr : 0.0.0.0     <br />giaddr : 0.0.0.0     <br />chaddr : 00:26:bb:XX:XX:XX     <br />sname :     <br />file :     <br /># Options fields     <br />client_identifier :     <br />parameter_request_list : subnet_mask,router,domain_name_server,domain_name,domain_search,252     <br />host_name : homma2     <br />request_ip_address : 172.18.0.21     <br />dhcp_message_type : DHCP_REQUEST     <br />ip_address_lease_time : 7776000     <br />maximum_dhcp_message_size : 1285</p>
<p>これでネットワークに接続された端末のリースタイム・MACアドレス・IPアドレスが取れました。</p>
<p>追記</p>
<p>debian squeezeではパッケージ登録されていました。   <br />なので、aptで簡単にインストールできます。</p>
<p>$ aptitude search pydhcplib   <br />p&#160;&#160; python-pydhcplib&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#8211; Python DHCP client/server library    <br />v&#160;&#160; python2.5-pydhcplib&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#8211;    <br />v&#160;&#160; python2.6-pydhcplib&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#8211;    <br />$ sudo aptitude install python-pydhcplib</p>
<p>以上。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.loadlimits.info/2011/11/python%e3%81%aepydhcplib%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6dhcp%e3%83%91%e3%82%b1%e3%83%83%e3%83%88%e3%82%92%e8%aa%ad%e3%82%80/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pythonのwin32comからSilverlightを使おうと試みる</title>
		<link>http://blog.loadlimits.info/2009/10/python%e3%81%aewin32com%e3%81%8b%e3%82%89silverlight%e3%82%92%e4%bd%bf%e3%81%8a%e3%81%86%e3%81%a8%e8%a9%a6%e3%81%bf%e3%82%8b/</link>
		<comments>http://blog.loadlimits.info/2009/10/python%e3%81%aewin32com%e3%81%8b%e3%82%89silverlight%e3%82%92%e4%bd%bf%e3%81%8a%e3%81%86%e3%81%a8%e8%a9%a6%e3%81%bf%e3%82%8b/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 06:56:25 +0000</pubDate>
		<dc:creator>hotpi</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[疑問]]></category>
		<category><![CDATA[ActiveX]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://blog.loadlimits.info/2009/10/python%e3%81%aewin32com%e3%81%8b%e3%82%89silverlight%e3%82%92%e4%bd%bf%e3%81%8a%e3%81%86%e3%81%a8%e8%a9%a6%e3%81%bf%e3%82%8b/</guid>
		<description><![CDATA[最終的にはPythonで書かれたWindowsアプリケーションで、Silverlightのコンテンツをロードしたいという目的なのですが、とりあえずSilverlightのActiveXコントロールを読み込んで動作を確認してみたいので色々実験。 まず、インストールされているSilverlightのバージョンを調べてみる。 Javascriptで書かれたコードがいくつか見つかったのでそれを書き直す。 以下はJS版。 var control = new ActiveXObject('AgControl.AgControl'); alert(control.IsVersionSupported('3.0')); これをPythonで書いてみる。 import win32com.client control = win32com.client.Dispatch("AgControl.AgControl") print control.IsVersionSupported('3.0') Silverlight 3がインストールされていればTrueが表示されます。 他にどんなメソッドが定義されているのかを調べるために、Visual StudioからAgControlを参照して、オブジェクトブラウザで調査。 というか、Silverlightのプラグインのリファレンスがあった。 Silverlight プラグインのオブジェクト リファレンス が…Sourceを指定してもIsLoadedプロパティがTrueにならない…うーん…もう少し調べてみる。]]></description>
			<content:encoded><![CDATA[<p>最終的にはPythonで書かれたWindowsアプリケーションで、Silverlightのコンテンツをロードしたいという目的なのですが、とりあえずSilverlightのActiveXコントロールを読み込んで動作を確認してみたいので色々実験。</p>
<p>まず、インストールされているSilverlightのバージョンを調べてみる。</p>
<p>Javascriptで書かれたコードがいくつか見つかったのでそれを書き直す。</p>
<p>以下はJS版。</p>
<p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:1fad3344-c133-4716-b122-991f00b3f96e" class="wlWriterEditableSmartContent">
<pre name="code" class="js">var control = new ActiveXObject('AgControl.AgControl');
alert(control.IsVersionSupported('3.0'));
</pre>
</div>
<p>これをPythonで書いてみる。</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:2ef33f5a-557a-48de-85a2-d2d00e450645" class="wlWriterEditableSmartContent">
<pre name="code" class="py">import win32com.client
control = win32com.client.Dispatch("AgControl.AgControl")
print control.IsVersionSupported('3.0')</pre>
</div>
<p>Silverlight 3がインストールされていればTrueが表示されます。</p>
<p>他にどんなメソッドが定義されているのかを調べるために、Visual StudioからAgControlを参照して、オブジェクトブラウザで調査。</p>
<p>というか、Silverlightのプラグインのリファレンスがあった。</p>
<p><a href="http://msdn.microsoft.com/ja-jp/library/cc838259(VS.95).aspx" target="_blank">Silverlight プラグインのオブジェクト リファレンス</a></p>
<p>が…Sourceを指定してもIsLoadedプロパティがTrueにならない…うーん…もう少し調べてみる。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.loadlimits.info/2009/10/python%e3%81%aewin32com%e3%81%8b%e3%82%89silverlight%e3%82%92%e4%bd%bf%e3%81%8a%e3%81%86%e3%81%a8%e8%a9%a6%e3%81%bf%e3%82%8b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

