<?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>Security.GS Magazine &#187; Python</title>
	<atom:link href="http://www.security.gs/magazine/programming/python/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.security.gs/magazine</link>
	<description>Take a crazy chance, See in its true colors</description>
	<lastBuildDate>Sat, 31 Jul 2010 08:08:31 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Pythonでプログラミング時に便利なツール&amp;プラグイン</title>
		<link>http://www.security.gs/magazine/programming/2010/04/06/story_2391/</link>
		<comments>http://www.security.gs/magazine/programming/2010/04/06/story_2391/#comments</comments>
		<pubDate>Mon, 05 Apr 2010 20:34:45 +0000</pubDate>
		<dc:creator>Lotus</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[プログラミング]]></category>

		<guid isPermaLink="false">http://www.security.gs/magazine/?p=2391</guid>
		<description><![CDATA[おはこんばん ちは、lotusです。
題名の通り、 Pythonでプログラミングする際に、「あったら便利だなー」というものを紹介したいと思います。
なお、実際に 動かしたのはLinux環境です。
Windows をお使い [...]]]></description>
			<content:encoded><![CDATA[<p>おはこんばん ちは、lotusです。</p>
<p>題名の通り、 Pythonでプログラミングする際に、「あったら便利だなー」というものを紹介したいと思います。</p>
<p>なお、実際に 動かしたのはLinux環境です。</p>
<p>Windows をお使いの方では環境の違いなどから多少違った操作をおこなわなければいけない可能性が ありますが、ご了承ください。</p>
<p><strong>記事に 画像が使われておりますが、クリックすることで拡大可能です。</strong></p>
<p>では、通常の インタラクティブシェルを拡張、改良したとも言える「IPython」を紹介したいと思います。</p>
<p><strong>IPython とは何か</strong></p>
<p>上記にもある 通り、インタラクティブシェル（対話コンソール）を拡張したものです。</p>
<p>通常のインタ ラクティブシェルでは、文字の補完などができませんが、この「IPython」では文字の補完の他にも、インタラクティブシェルには無かった機能が盛り込 まれています。</p>
<p>IPython は、WindowsでもLinuxでも動作しますので、是非インストールすることをオススメします。</p>
<p>自分の Linux環境(使用したのはDebian  GNU/Linux)では、リポジトリにIPythonがあったので、apt-getコマンドで以下のように入手することが可能です。</p>
<blockquote><p>sudo apt-get update</p>
<p>sudo  apt-get upgrade</p>
<p>sudo  apt-get -y install ipython</p></blockquote>
<p>これで ipythonコマンドが使える状態になります。</p>
<p>Windows をお使いの方は<a href="http://ipython.scipy.org/moin/Download">コチラ</a>でファイルをダウンロードし、イ ンストールしてください。</p>
<p>Macでも使 用可能みたいですが、よく調べてないのでわかりません、すいません＞＜</p>
<p>実際に使って みた画面です。</p>
<p><a href="http://lotus-network.net/wp-content/uploads/2010/04/hello.png"><img src="http://lotus-network.net/wp-content/uploads/2010/04/hello.png" alt="" width="457" height="493" /></a></p>
<p>これは、 ipythonコマンドでIPythonを起動し、簡単なプログラムを書いた例です。</p>
<blockquote><p>print （&#8221;HelloIPython&#8221;）※</p>
<p>HelloIPython</p></blockquote>
<p>IPython でも、通常のインタラクティブシェルでも同じ構文で正しく動作しているのがわかります（当たり前</p>
<p>※print の()は無くても動作します</p>
<p><a href="http://lotus-network.net/wp-content/uploads/2010/04/error.png"><img src="http://lotus-network.net/wp-content/uploads/2010/04/error.png" alt="" width="455" height="61" /></a></p>
<p>エラーもわか りやすく、カラーをつけて出力してくれますね。</p>
<p>画像編集ミ スって肝心な所を消してしまったのですが(上記の拡大してある画像には書いてあるが)</p>
<p>これは文字列 と数字を足そうとしているためにTypeErrorとなってしまっています。</p>
<blockquote><p>print (&#8220;Hello IPython &#8220;+str(i))</p></blockquote>
<p>range(5)、 つまり0,1,2,3,4がiのなかに入っているわけですが、それを数値ではなく、文字列とすることでこのTypeErrorを解決しています。</p>
<p>なお、この IPythonには通常のインタラクティブシェルとは違い、In[1]とかIn[2]とか行ごとにInのなかが変わっていきます。</p>
<p>普通のインタ ラクティブシェルと同じ表示にすることも可能です。</p>
<p>IPython を起動する、ipythonコマンドに、オプションをつけることで可能です。</p>
<blockquote><p>ipython -cl</p></blockquote>
<p>と、-clオ プションをつけると、通常の表示になります。</p>
<p>起動させてみ た画面はこちらです。</p>
<p><a href="http://lotus-network.net/wp-content/uploads/2010/04/cl.bmp"><img src="http://lotus-network.net/wp-content/uploads/2010/04/cl.bmp" alt="" /></a></p>
<p>行ごとにあっ たIn[1]などが消え、見覚えのある「&gt;&gt;&gt;」になっています。</p>
<p><strong>IPython では文字の補完ができる</strong></p>
<p>Linuxや UNIXのシェルでは、文字の補完がTabキーでできますよね。</p>
<p>そのように IPythonでは文字の補完をすることが可能です。</p>
<p>この例は、 キーボードから「i」という文字だけを入力し、Tabキーを押した例です。</p>
<p><a href="http://lotus-network.net/wp-content/uploads/2010/04/hokan.png"><img src="http://lotus-network.net/wp-content/uploads/2010/04/hokan.png" alt="" width="502" height="112" /></a></p>
<p>このような感 じで補完することができますので、長いモジュール名をいちいち入力しなくてもTabキーを押して補完なんてことができます。</p>
<p><strong>IPython では簡単なUNIXコマンドが使える</strong></p>
<p>通常のインタ ラクティブシェルではPythonとの対話ができるわけですが、UNIXコマンドは使えません。</p>
<p><a href="http://lotus-network.net/wp-content/uploads/2010/04/unix_python.png"><img src="http://lotus-network.net/wp-content/uploads/2010/04/unix_python.png" alt="" width="446" height="190" /></a></p>
<p>上の画像のよ うに、「ls」や「mkdir」をインタラクティブシェルで入力すると、NameError、そんなものはないと言われ、エラーが発生します。</p>
<p>しかし、 IPythonでは「簡単」なUNIXコマンドなら使う事ができます。</p>
<p>たとえば「今 カレントディレクトリどうなってたっけ？」「あのディレクトリもうつくったっけ？」などなど。</p>
<p>通常ですと、 窓を他に立ち上げるか、一回インタラクティブシェルを閉じるかなどの処理おこなわないと、こういったことはできません。</p>
<p>インタラク ティブシェルを一旦閉じるなどすると、インタラクティブシェル内でつかっていた変数などは全てリセットされてしまいます。</p>
<p>実際に IPythonでUNIXコマンドを使ってみた画面が以下です。</p>
<p><a href="http://lotus-network.net/wp-content/uploads/2010/04/unix_ipython.png"><img src="http://lotus-network.net/wp-content/uploads/2010/04/unix_ipython.png" alt="" width="541" height="226" /></a></p>
<p>このように、 「ls」や「ｐｗｄ」、「cd」、「pwd」などのUNIXの基本的なコマンドを使う事が可能です。</p>
<p>なので、たと えば「テキストファイルをあるディレクトリ出力する際、ディレクトリを作ってなく、エラーがでる」</p>
<p>なんて時は mkdirでIPython上で作成してあげれば言い訳です。</p>
<p>他にもログ モードなど、便利な機能がありますので、是非調べてみてください。</p>
<p>便利な IPython、使ってみてはどうでしょうか？</p>
<p>次に、<strong>Python</strong>で<strong>Vim</strong>を 使ってプログラミングする際に便利なプラグインを紹介したいと思います。</p>
<p>Vimとは Windowsでいう「メモ帳」のような<strong>エディタ</strong>です。</p>
<p>Linuxや UNIX系では、VimやEmacsのようなエディタを使ってプログラミングする事が多いと思います。</p>
<p>Vimでは、 プラグインと呼ばれる拡張プログラムを追加することにより、Vimの機能を便利にしたりすることができます。</p>
<p>今回は<strong>Pydiction</strong>と いうVimプラグインを紹介します。</p>
<p>以下が実際に 動作している画面です。</p>
<p><a href="http://lotus-network.net/wp-content/uploads/2010/04/pydiction.png"><img src="http://lotus-network.net/wp-content/uploads/2010/04/pydiction.png" alt="" width="531" height="411" /></a></p>
<p>ピンクの場所 に補完項目がでているのが確認できます。</p>
<p><strong>Pydiction</strong>と は</p>
<p>Pydiction は、vimでpythonのプログラムをする際に、モジュールなどを補完してくれる機能をもったプラグインです。</p>
<p>Python をvimで書く！という人は、是非導入すべきプラグインです。</p>
<p>ダウンロード は<a href="http://www.vim.org/scripts/script.php?script_id=850">コチラのページ</a>か らzip形式でダウンロードすることが可能です。</p>
<p>現在 (2010/4/6)では、1.2が最新版のようです。</p>
<p>Windows での動作は確認していないのでわかりません、すいません。。。</p>
<p>Linuxで はwgetコマンドをつかい、DLしたのですが、なぜかうまくいきませんでしたので(自分の環境では)ブラウザから先ほどのダウンロードページにいき、ダ ウンロードしました。</p>
<p>zip形式な ので、unzipコマンドによって解凍することが可能です。</p>
<p>解凍し、ディ レクトリに移動すると<br />
  pydiction.vim<br />
  pydiction.py<br />
  complete-dict<br />
  README.txt</p>
<p>以上の四つの ファイルが出力されます。<br />
README.txtは良いとして、各ファイルの説明です。<br />
<strong>pydiction.vim</strong> はvimのプラグインの本体になります。<br />
<strong>pydiction.py</strong> は拡張子の通り、pythonのスクリプトであり、このスクリプトで辞書(補完にでてくる項 目)をカスタマイズすることが可能です。<br />
<strong>complete-dic</strong> tは、補完の項目が記されています。</p>
<p>ではディレク トリに配置していきます。</p>
<p>プラグインの 本体である、pydiction.vimはユーザのホームディレクトリに位置する、「.vim」という.からはじまる隠しフォルダ?のなかに入れておけば OKです。</p>
<blockquote><p>mkdir ~/.vim/plugin</p>
<p>mv  pydiction.vim ~/.vim/plugin</p></blockquote>
<p>これで pydiction.vimをディレクトリの.vimディレクトリに移動しました。</p>
<p>次に complete-dicですが、辞書ファイルなので、どこのディレクトリに配置してもかまわないのですが、わかりやすさなどの面をみて、.vimに配置 しましょう。</p>
<blockquote><p>mkdir ~/.vim/pydiction</p>
<p>mv  complete-dic ~/.vim/pydiction</p></blockquote>
<p>これで辞書 ファイルを配置しました。</p>
<p>最後に pydictionですが、これもcomplete-dicと同じ場所に配置しましょう。</p>
<blockquote><p>mv pydiction.py ~/.vim/pydiction</p></blockquote>
<p>これでディレ クトリに配置する作業は終了です。</p>
<p>この pydictionをvimで正しく使える状態にするためにホームディレクトリ直下に位置する.vimrcを編集します。</p>
<blockquote><p>autocmd FileType python let g:pydiction_location =  &#8216;~/.vim/pydiction/complete-dict&#8217;</p></blockquote>
<p>上位のコード をvimrcのなかに追加することで、pydictionが正しく動作します。これは辞書ファイルの位置を指定しています。</p>
<p>使い方として は直感的に使えると思います。</p>
<p>ある程度文字 を打った後に、Tabキーで補完することが可能です。</p>
<p>とても便利な プラグインです。</p>
<p><strong>pydiction</strong>、 つかってみてはどうでしょう。</p>
<p>そして最後の 紹介になりますが、vimrcに追加するとpythonプログラミングが楽になるコードを紹介します。</p>
<p>それは<strong>vim 上で、pythonを実行</strong>するという物。というより見せかけるだけなのですが。</p>
<p>インタラク ティブシェルでやればそのまま実行できますが、vimでソースを書いて実行するには、</p>
<p>普通は:wq などで保存、終了してから実際にプログラムをたたくということになります。</p>
<p>ですが、以下 のコードを<strong>.vimrc</strong>に追加することでvim上でpythonのソースを実行させることができます。</p>
<blockquote><p>&#8221; Execute python script C-P<br />
function! s:ExecPy()<br />
exe &#8220;!&#8221; . &amp;ft . &#8221; %&#8221;<br />
:endfunction<br />
command! Exec call &lt;SID&gt;ExecPy()<br />
autocmd FileType python map &lt;silent&gt; &lt;C-P&gt; :call  &lt;SID&gt;ExecPy()&lt;CR&gt;</p></blockquote>
<p>これで pythonがvimで実行できるようになります。</p>
<p>C-Pなの で、CtrlとPを押すことによって実行できます。</p>
<p>実際に実行し てみた画面がこちら。</p>
<p>ソースは</p>
<blockquote><p>print &#8220;Hello Python&#8221;</p></blockquote>
<p>これしか書い ていません。<br />
<a href="http://lotus-network.net/wp-content/uploads/2010/04/vim_on_python.png"><img src="http://lotus-network.net/wp-content/uploads/2010/04/vim_on_python.png" alt="" width="438" height="161" /></a></p>
<p><strong>[最後 の変更が保存されていません]</strong>とあります。</p>
<p>これは一旦 ファイルを保存しないと動きませんので、注意です。</p>
<p>開いた状態で Ctrl+Pを押すことにより上の画像のような出力を得られます。</p>
<p>ENTERを 押すことによりvimに戻れるので、ソースを確認するにはかなり便利なコードですね。</p>
<p>是非使ってみ てください。</p>
<p>「Python でプログラミング時に便利なツール&amp;プラグイン」でした。</p>
<p>以上 lotusでした、長文かなり疲れました。脱字とかありそうです。</p>
<p>あったらコメ ントなりよろしくおねがいします。</p>
<p><a href="http://lotus-network.net">*この記事はLoppsと同時投稿です。</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.security.gs/magazine/programming/2010/04/06/story_2391/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[Python]簡単にメール送信するプログラム</title>
		<link>http://www.security.gs/magazine/programming/2010/04/03/story_2298/</link>
		<comments>http://www.security.gs/magazine/programming/2010/04/03/story_2298/#comments</comments>
		<pubDate>Fri, 02 Apr 2010 22:12:03 +0000</pubDate>
		<dc:creator>Lotus</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[プログラミング]]></category>

		<guid isPermaLink="false">http://www.security.gs/magazine/?p=2298</guid>
		<description><![CDATA[ろーたすです。
pythonでメール送信するプログラムは結構前につくって、使用してたのですが、簡単に送信するプログラム書いてみた。
作った理由は、
携帯でメールするのだるい
簡単なメールなのにwebからいちいちするのだる [...]]]></description>
			<content:encoded><![CDATA[<p><span style="color: #000000">ろーたすです。</span></p>
<p><span style="color: #000000">pythonでメール送信するプログラムは結構前につくって、使用してたのですが、簡単に送信するプログラム書いてみた。</span></p>
<p><span style="color: #000000">作った理由は、</span></p>
<blockquote><p><span style="color: #000000">携帯でメールするのだるい</span></p>
<p><span style="color: #000000">簡単なメールなのにwebからいちいちするのだるい</span></p>
<p><span style="color: #000000">結果：CUI、てか端末で送信できるようにしちまえば楽ちん</span></p></blockquote>
<p><span style="color: #000000">とまぁこのような感じです。</span></p>
<p><span style="color: #000000">Linuxなら動くと思います。Windowsでは確認してない<br />
</span></p>
<p><span style="color: #000000">実際にソースさらします。汚いですゴミです。</span></p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span>
<span style="color: #808080; font-style: italic;"># -*- coding:utf-8 -*-</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">os</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">time</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">smtplib</span>
<span style="color: #ff7700;font-weight:bold;">from</span> progressbar <span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #66cc66;">*</span>
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">email</span>.<span style="color: black;">MIMEText</span> <span style="color: #ff7700;font-weight:bold;">import</span> MIMEText
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">email</span>.<span style="color: black;">Header</span> <span style="color: #ff7700;font-weight:bold;">import</span> Header
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">email</span>.<span style="color: black;">Utils</span> <span style="color: #ff7700;font-weight:bold;">import</span> formatdate
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> bar<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;-&quot;</span><span style="color: #66cc66;">*</span><span style="color: #ff4500;">30</span>
    widgets = <span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;Send: &quot;</span>, Percentage<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>, Bar<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#93;</span>
    maxval = <span style="color: #ff4500;">250</span>
    pbar = ProgressBar<span style="color: black;">&#40;</span>maxval=maxval, widgets=widgets<span style="color: black;">&#41;</span>.<span style="color: black;">start</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span>maxval<span style="color: black;">&#41;</span>:
        <span style="color: #dc143c;">time</span>.<span style="color: black;">sleep</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0.001</span><span style="color: black;">&#41;</span>
        pbar.<span style="color: black;">update</span><span style="color: black;">&#40;</span>pbar.<span style="color: black;">currval</span> + <span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">pass</span>
    pbar.<span style="color: black;">finish</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> choice<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;*&quot;</span><span style="color: #66cc66;">*</span><span style="color: #ff4500;">30</span>
    <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Please choice number!&quot;</span>
    <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;1: hoge@docomo.ne.jp&quot;</span>
    <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;2: hoge@gmail.com&quot;</span>
    <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;3: other&quot;</span>
    <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;*&quot;</span><span style="color: #66cc66;">*</span><span style="color: #ff4500;">30</span>
    to=<span style="color: #008000;">raw_input</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;&quot;</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">if</span><span style="color: black;">&#40;</span>to==<span style="color: #483d8b;">&quot;1&quot;</span><span style="color: black;">&#41;</span>:
        to=<span style="color: #483d8b;">&quot;hoge@docomo.ne.jp&quot;</span>
        mail_send<span style="color: black;">&#40;</span>to<span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">elif</span><span style="color: black;">&#40;</span>to==<span style="color: #483d8b;">&quot;2&quot;</span><span style="color: black;">&#41;</span>:
        to=<span style="color: #483d8b;">&quot;hoge@gmail.com&quot;</span>
        mail_send<span style="color: black;">&#40;</span>to<span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">elif</span><span style="color: black;">&#40;</span>to==<span style="color: #483d8b;">&quot;3&quot;</span><span style="color: black;">&#41;</span>:
        to=<span style="color: #008000;">raw_input</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Please input mail address==&quot;</span><span style="color: black;">&#41;</span>
        mail_send<span style="color: black;">&#40;</span>to<span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">else</span>:
        <span style="color: #dc143c;">os</span>.<span style="color: black;">system</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;python /home/lotus/python/mail.py&quot;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> mail_send<span style="color: black;">&#40;</span>to<span style="color: black;">&#41;</span>:
    from_addr = <span style="color: #483d8b;">'myaddress@gmail.com'</span>
    to_addr = to
&nbsp;
<span style="color: #808080; font-style: italic;">#Raw_input</span>
    subject=<span style="color: #008000;">raw_input</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Subject?==&quot;</span><span style="color: black;">&#41;</span>
    subject=subject.<span style="color: black;">decode</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;utf-8&quot;</span><span style="color: black;">&#41;</span>
    body=<span style="color: #008000;">raw_input</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Body?==&quot;</span><span style="color: black;">&#41;</span>
    body=body.<span style="color: black;">decode</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;utf-8&quot;</span><span style="color: black;">&#41;</span>
    bar<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">#mail settings</span>
    encoding=<span style="color: #483d8b;">&quot;utf-8&quot;</span>
    msg = MIMEText<span style="color: black;">&#40;</span>body.<span style="color: black;">encode</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;utf-8&quot;</span><span style="color: black;">&#41;</span>,<span style="color: #483d8b;">'plain'</span>,encoding<span style="color: black;">&#41;</span>
    msg<span style="color: black;">&#91;</span><span style="color: #483d8b;">'Subject'</span><span style="color: black;">&#93;</span> = Header<span style="color: black;">&#40;</span>subject, encoding<span style="color: black;">&#41;</span>
    msg<span style="color: black;">&#91;</span><span style="color: #483d8b;">'From'</span><span style="color: black;">&#93;</span> = from_addr
    msg<span style="color: black;">&#91;</span><span style="color: #483d8b;">'To'</span><span style="color: black;">&#93;</span> = to_addr
    msg<span style="color: black;">&#91;</span><span style="color: #483d8b;">'Date'</span><span style="color: black;">&#93;</span> = formatdate<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
    s = <span style="color: #dc143c;">smtplib</span>.<span style="color: black;">SMTP</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'smtp.gmail.com'</span>, <span style="color: #ff4500;">587</span><span style="color: black;">&#41;</span>
    s.<span style="color: black;">ehlo</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
    s.<span style="color: black;">starttls</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
    s.<span style="color: black;">ehlo</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
    s.<span style="color: black;">login</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'myaddress@gmail.com'</span>, <span style="color: #483d8b;">'passwd'</span><span style="color: black;">&#41;</span>
    s.<span style="color: black;">sendmail</span><span style="color: black;">&#40;</span>from_addr, to_addr, msg.<span style="color: black;">as_string</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
    s.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;-&quot;</span><span style="color: #66cc66;">*</span><span style="color: #ff4500;">30</span>
&nbsp;
choice<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></div></div>

<p><span style="color: #000000">モジュールを色々importしているので、はいってなかったら入れれば動きます。</span></p>
<p><span style="color: #000000">えー、なにをしているかですが、おおざっぱに</span></p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">os</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">time</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">smtplib</span>
<span style="color: #ff7700;font-weight:bold;">from</span> progressbar <span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #66cc66;">*</span>
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">email</span>.<span style="color: black;">MIMEText</span> <span style="color: #ff7700;font-weight:bold;">import</span> MIMEText
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">email</span>.<span style="color: black;">Header</span> <span style="color: #ff7700;font-weight:bold;">import</span> Header
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">email</span>.<span style="color: black;">Utils</span> <span style="color: #ff7700;font-weight:bold;">import</span> formatdate</pre></div></div>

<p><span style="color: #000000">このあたりはいいですよね、必要なモジュール類をimportしています。はい</span></p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">def</span> bar<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;-&quot;</span><span style="color: #66cc66;">*</span><span style="color: #ff4500;">30</span>
    widgets = <span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;Send: &quot;</span>, Percentage<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>, Bar<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#93;</span>
    maxval = <span style="color: #ff4500;">250</span>
    pbar = ProgressBar<span style="color: black;">&#40;</span>maxval=maxval, widgets=widgets<span style="color: black;">&#41;</span>.<span style="color: black;">start</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span>maxval<span style="color: black;">&#41;</span>:
        <span style="color: #dc143c;">time</span>.<span style="color: black;">sleep</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0.001</span><span style="color: black;">&#41;</span>
        pbar.<span style="color: black;">update</span><span style="color: black;">&#40;</span>pbar.<span style="color: black;">currval</span> + <span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">pass</span>
    pbar.<span style="color: black;">finish</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></div></div>

<p><span style="color: #000000">defでbar()関数というものを作っております。</span></p>
<p><span style="color: #000000">これは単なる演出なのですが、プログレスバーを出す処理。</span></p>
<p><span style="color: #000000">progressbarモジュールというものがあり、それをimportすることにより実装可能です。</span></p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">def</span> choice<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;*&quot;</span><span style="color: #66cc66;">*</span><span style="color: #ff4500;">30</span>
    <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Please choice number!&quot;</span>
    <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;1: hoge@docomo.ne.jp&quot;</span>
    <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;2: hoge@gmail.com&quot;</span>
    <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;3: other&quot;</span>
    <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;*&quot;</span><span style="color: #66cc66;">*</span><span style="color: #ff4500;">30</span>
    to=<span style="color: #008000;">raw_input</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;&quot;</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">if</span><span style="color: black;">&#40;</span>to==<span style="color: #483d8b;">&quot;1&quot;</span><span style="color: black;">&#41;</span>:
        to=<span style="color: #483d8b;">&quot;hoge@docomo.ne.jp&quot;</span>
        mail_send<span style="color: black;">&#40;</span>to<span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">elif</span><span style="color: black;">&#40;</span>to==<span style="color: #483d8b;">&quot;2&quot;</span><span style="color: black;">&#41;</span>:
        to=<span style="color: #483d8b;">&quot;hoge@gmail.com&quot;</span>
        mail_send<span style="color: black;">&#40;</span>to<span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">elif</span><span style="color: black;">&#40;</span>to==<span style="color: #483d8b;">&quot;3&quot;</span><span style="color: black;">&#41;</span>:
        to=<span style="color: #008000;">raw_input</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Please input mail address==&quot;</span><span style="color: black;">&#41;</span>
        mail_send<span style="color: black;">&#40;</span>to<span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">else</span>:
        <span style="color: #dc143c;">os</span>.<span style="color: black;">system</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;python /home/lotus/python/mail.py&quot;</span><span style="color: black;">&#41;</span></pre></div></div>

<p><span style="color: #000000">choice関数をつくりました。</span></p>
<p><span style="color: #000000">これも単純すぎる関数（笑</span></p>
<p><span style="color: #000000">printはどうでも良いとし、if分でtoにはいっている文字列を・・・という処理をし、選択にあったメールアドレスをtoに代入しています。</span></p>
<p><span style="color: #000000">このなかで注目すべき点といっては何ですが、elseで例外処理をしています。</span></p>
<p><span style="color: #000000">この場合、os.systemというOSのコマンドが実行できるもので、python 略 /mail.pyという自分自身のコードを指定することにより、1,2,3でもなければもう一回起動するという形になります。</span></p>
<p><span style="color: #000000">最後の関数ですが</span></p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">def</span> mail_send<span style="color: black;">&#40;</span>to<span style="color: black;">&#41;</span>:
    from_addr = <span style="color: #483d8b;">'myaddress@gmail.com'</span>
    to_addr = to
&nbsp;
<span style="color: #808080; font-style: italic;">#Raw_input</span>
    subject=<span style="color: #008000;">raw_input</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Subject?==&quot;</span><span style="color: black;">&#41;</span>
    subject=subject.<span style="color: black;">decode</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;utf-8&quot;</span><span style="color: black;">&#41;</span>
    body=<span style="color: #008000;">raw_input</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Body?==&quot;</span><span style="color: black;">&#41;</span>
    body=body.<span style="color: black;">decode</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;utf-8&quot;</span><span style="color: black;">&#41;</span>
    bar<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">#mail settings</span>
    encoding=<span style="color: #483d8b;">&quot;utf-8&quot;</span>
    msg = MIMEText<span style="color: black;">&#40;</span>body.<span style="color: black;">encode</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;utf-8&quot;</span><span style="color: black;">&#41;</span>,<span style="color: #483d8b;">'plain'</span>,encoding<span style="color: black;">&#41;</span>
    msg<span style="color: black;">&#91;</span><span style="color: #483d8b;">'Subject'</span><span style="color: black;">&#93;</span> = Header<span style="color: black;">&#40;</span>subject, encoding<span style="color: black;">&#41;</span>
    msg<span style="color: black;">&#91;</span><span style="color: #483d8b;">'From'</span><span style="color: black;">&#93;</span> = from_addr
    msg<span style="color: black;">&#91;</span><span style="color: #483d8b;">'To'</span><span style="color: black;">&#93;</span> = to_addr
    msg<span style="color: black;">&#91;</span><span style="color: #483d8b;">'Date'</span><span style="color: black;">&#93;</span> = formatdate<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
    s = <span style="color: #dc143c;">smtplib</span>.<span style="color: black;">SMTP</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'smtp.gmail.com'</span>, <span style="color: #ff4500;">587</span><span style="color: black;">&#41;</span>
    s.<span style="color: black;">ehlo</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
    s.<span style="color: black;">starttls</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
    s.<span style="color: black;">ehlo</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
    s.<span style="color: black;">login</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'myaddress@gmail.com'</span>, <span style="color: #483d8b;">'passwd'</span><span style="color: black;">&#41;</span>
    s.<span style="color: black;">sendmail</span><span style="color: black;">&#40;</span>from_addr, to_addr, msg.<span style="color: black;">as_string</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
    s.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;-&quot;</span><span style="color: #66cc66;">*</span><span style="color: #ff4500;">30</span>
&nbsp;
choice<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></div></div>

<p><span style="color: #000000">mail_send、具体的にメール送信する関数です。</span></p>
<p><span style="color: #000000">引数として、choice関数からのtoをもらいます。選択されたメールアドレスをもらうわけです。</span></p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#Raw_input</span>
    subject=<span style="color: #008000;">raw_input</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Subject?==&quot;</span><span style="color: black;">&#41;</span>
    subject=subject.<span style="color: black;">decode</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;utf-8&quot;</span><span style="color: black;">&#41;</span>
    body=<span style="color: #008000;">raw_input</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Body?==&quot;</span><span style="color: black;">&#41;</span>
    body=body.<span style="color: black;">decode</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;utf-8&quot;</span><span style="color: black;">&#41;</span>
    bar<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></div></div>

<p><span style="color: #000000">このあたりで、件名と本文の入力を受け付け、decodeします。（日本語だとエラーがでるために）</span></p>
<p><span style="color: #000000">そしてbar()で先ほどのプログレスバーを表示させます。(実際には意味がまったくなく、飾り（笑 </span></p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">  s = <span style="color: #dc143c;">smtplib</span>.<span style="color: black;">SMTP</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'smtp.gmail.com'</span>, <span style="color: #ff4500;">587</span><span style="color: black;">&#41;</span>
    s.<span style="color: black;">ehlo</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
    s.<span style="color: black;">starttls</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
    s.<span style="color: black;">ehlo</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
    s.<span style="color: black;">login</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'myaddress@gmail.com'</span>, <span style="color: #483d8b;">'passwd'</span><span style="color: black;">&#41;</span>
    s.<span style="color: black;">sendmail</span><span style="color: black;">&#40;</span>from_addr, to_addr, msg.<span style="color: black;">as_string</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
    s.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></div></div>

<p><span style="color: #000000">このあたりで、SMTPによる認証をします。SMTPとは簡単に言えばメールを送信するためのプロトコルです。</span></p>
<p><span style="color: #000000">この場合、myaddress@gmail.com、パスワードがpasswdでgmailにログインし、sendmailします。</span></p>
<p><span style="color: #000000">そして最後に接続をclose。</span></p>
<p><span style="color: #000000">しかし、これらは関数を定義しただけですので、実行されません。</span></p>
<p><span style="color: #000000">なので、インデントから抜けchoice()を実行することによりメールが送信されます。</span></p>
<p><span style="color: #000000">choice関数にはsend_mail()を引数ありで呼び出しているので、単体?でsend_mail()を呼び出す必要がありませんし、単体で呼び出すとエラーがでます(メールアドレスの指定）</span></p>
<p><span style="color: #000000">解説とは言えないほどのものでしたが、このような感じで簡単に端末からメールを送信することが可能です。自分専用に書いた物なので必要性ないとおもいますが、ｗ</span></p>
<p><span style="color: #000000">*この記事は<a href="http://lotus-network.net">Lopps</a>との同時投稿です。*<br />
</span></p>
<p><span style="color: #000000"><br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.security.gs/magazine/programming/2010/04/03/story_2298/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Python入門!</title>
		<link>http://www.security.gs/magazine/programming/python/2009/10/20/story_1384/</link>
		<comments>http://www.security.gs/magazine/programming/python/2009/10/20/story_1384/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 09:57:15 +0000</pubDate>
		<dc:creator>Lotus</dc:creator>
				<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.security.gs/magazine/?p=1384</guid>
		<description><![CDATA[Lotusです。
前回はPythonについて軽く説明しました。
今回は具体的にこれからPythonをやっていきたい！という人のために入門講座てきなものをやっていこうと思います。
今回も少しだけPythonについて軽く説明 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://lotus-network.net/blog">Lotus</a>です。</p>
<p><a href="http://www.security.gs/magazine/programming/python/2009/09/24/story_389/">前回</a>はPythonについて軽く説明しました。</p>
<p>今回は具体的にこれからPythonをやっていきたい！という人のために入門講座てきなものをやっていこうと思います。</p>
<p>今回も少しだけPythonについて軽く説明したいと思います。</p>
<p>Pythonはオブジェクト指向スクリプト言語です。</p>
<p>Pythonはシンプルかつ優秀な言語で、プログラミングなんてやったことない！という人でも覚えやすい言語でもあります。</p>
<p>C言語やJavaをやっていて途中で挫折してしまった。。。なんて人もPythonはわかりやすいと思います。</p>
<p>Googleでも使われているプログラミング言語です。将来性が高い言語なので勉強してきましょう。</p>
<p>覚えて損はまずないと思います。</p>
<p>では始めていきましょう。</p>
<p>プログラミングをするに当たってまず最初にしなければならないことがあります。</p>
<p>それは<strong>環境開発を整える</strong>。ということです。</p>
<p>まず<a href="http://www.python.jp/Zope">http://www.python.jp/Zope</a>ここからPythonをダウンロードしましょう。</p>
<p>これから初めてPythonをするならば2.6のバージョンを勧めます。</p>
<p>対応するソフトウェアが多いからです。</p>
<p>インストールはできたでしょうか？ここからが本番です。</p>
<p>先ほども言いましたが、Pythonはスクリプト言語です。</p>
<p>コンパイルという作業は必要ありません。インタプリンタなので、1行1行解釈し、実行してくれます。</p>
<p>インタラクティブシェルを使うことによって実現可能です。</p>
<p>Windowsの場合はPython(command line)から起動できます。</p>
<p>パスを通してある場合にはコマンドプロンプトから「ｐｙｔｈｏｎ」と打ち込むことでPythonと対話できます。</p>
<p>使い勝手が良い方を使ってください。</p>
<p>では、一番簡単な処理をしてみましょう。</p>
<p><span style="color: #ff0000">print</span>という関数を使うことで画面に任意の文字を表示させることが可能です。C言語で言うprintfです。</p>
<blockquote><p>&gt;&gt;&gt;print &#8221; Hello World!&#8221;</p>
<p>Hello World!</p></blockquote>
<p>できたでしょうか？</p>
<p>これがまずはじめの一歩です。</p>
<p>次回はもっと複雑なことに挑戦します。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.security.gs/magazine/programming/python/2009/10/20/story_1384/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Pythonというプログラミング言語。</title>
		<link>http://www.security.gs/magazine/programming/python/2009/09/24/story_389/</link>
		<comments>http://www.security.gs/magazine/programming/python/2009/09/24/story_389/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 09:01:19 +0000</pubDate>
		<dc:creator>Lotus</dc:creator>
				<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.security.gs/magazine/?p=389</guid>
		<description><![CDATA[どうもLotusです。というのがクセです。
みなさんはPythonというプログラミング言語をご存じだろうか？
Pythonはオープンソースのプログラミング言語で、現在注目されているプログラミング言語の一つでもある。
Py [...]]]></description>
			<content:encoded><![CDATA[<p>どうも<a href="http://lotus-network.net">Lotus</a>です。というのがクセです。</p>
<p>みなさんはPythonというプログラミング言語をご存じだろうか？</p>
<p>Pythonはオープンソースのプログラミング言語で、現在注目されているプログラミング言語の一つでもある。</p>
<p>Pythonはインタプリンタ上で実行されるのが前提であり、インタラクティブシェルを用いることで、対話的に使用する事ができる優れた言語だ。</p>
<p>WebアプリケーションやGUIのアプリケーションCGIなどにも広く使われており、顔が広い言語といっても過言ではないだろう。</p>
<p>PythonはC言語やJavaなどによく似ているが、Pythonでもっとも重要なことはインデントである。</p>
<p>C言語やJavaで用いる中括弧などはPythonにはなく、すべてインデントでおこなう。</p>
<p>Pythonはシンプルで使いやすい言語だ。セミコロンなども必要ない。(文をつなげるときに使っても良い)</p>
<p>このSecurity.GS Magazineでは「Python入門」として記事を書いていこうと思うので、随時チェックしてもらいたい。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.security.gs/magazine/programming/python/2009/09/24/story_389/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
