<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>毎日がエブリデイ！？</title>
<link>https://ameblo.jp/bridge-of-japan/</link>
<atom:link href="https://rssblog.ameba.jp/bridge-of-japan/rss20.xml" rel="self" type="application/rss+xml" />
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com" />
<description>「水割りロックで！」「半チャーハン大盛りで！」そんな日常をテーマに日記を時々毎日気がついたらつづるやもしれませぬ。</description>
<language>ja</language>
<item>
<title>【勉強部屋】【開発：Python imaplib を使ってメールを取得 Part.1】</title>
<description>
<![CDATA[ <p><span style="font-weight:bold;">■開発環境</span></p><p>ホストマシン：　Windows10</p><p>仮想ツール：　VirtualBox Ver.5.2.16</p><p>仮想マシンOS：　Ubuntu 16.04</p><p>Python：　Python 3.6.6</p><p>ツール：　Jupyter Notebook</p><p>&nbsp;</p><p>&nbsp;</p><p><span style="font-weight:bold;">■使用モジュール</span></p><p>&nbsp;<span style="font-weight:bold;">email ：　</span>電子メールメッセージを読む・書く・送信するためのモジュール</p><p>&nbsp;<span style="font-weight:bold;">ssl ：　</span> このモジュールは、暗号化と、クライアントサイド、サーバサイド両方のネットワークソケットのための認証モジュール</p><p>&nbsp;<span style="font-weight:bold;">imaplib ：　</span>サーバからメールを取得するためのモジュール</p><p><span style="font-weight:bold;">&nbsp;email.header ：　</span>文字コードを適切に変換するためのモジュール</p><p>&nbsp;</p><p>&nbsp;</p><p><span style="font-weight:bold;">■プログラムの目的</span></p><p>　<span style="font-style:italic;">IMAP</span> サーバからメールオブジェクトを取り出すプログラム</p><p>&nbsp;</p><p>&nbsp;</p><p><span style="font-weight:bold;">■プログラムの機能</span></p><p>（1） メールサーバにログイン</p><p>（2） <span style="font-style:italic;">IMAP</span> サーバからメールオブジェクトを取り出す</p><div>&nbsp;</div><div>&nbsp;</div><div><span style="font-weight:bold;">■事前準備</span></div><div><span style="font-weight:bold;">・ 開発用のフォルダを作成</span></div><div>　<span style="font-style:italic;">src</span> フォルダを作り、その下に<span style="font-style:italic;"> mail_lab</span> フォルダを作る。今後は、ここにデータを保存していく。</div><div>#-----------------------------</div><div><span style="color:#009944;">　</span><span style="color:#006a2f;">$ cd</span></div><div><span style="color:#006a2f;">　$ mkdir src</span></div><div><span style="color:#006a2f;">　$ cd /src</span></div><div><span style="color:#006a2f;">　$ mkdir mail_lab</span></div><div><span style="color:#006a2f;">　$ cd mail_lab</span></div><div>#-----------------------------</div><div>&nbsp;</div><div>&nbsp;</div><div><span style="font-weight:bold;">・ <span style="font-style:italic;">Jupyter Notebook</span> を起動</span></div><div>#-----------------------------</div><div><span style="color:#006a2f;">　$ jypter notebook</span></div><div>#-----------------------------</div><div><a href="https://stat.ameba.jp/user_images/20181110/21/bridge-of-japan/61/da/p/o0869047514300717426.png"><img alt="" contenteditable="inherit" height="339" src="https://stat.ameba.jp/user_images/20181110/21/bridge-of-japan/61/da/p/o0869047514300717426.png" width="620"></a></div><div>&nbsp;</div><div>&nbsp;</div><div><span style="font-weight:bold;">・ 新規プロジェクトを作成</span></div><div><span style="font-weight:bold;">#-----------------------------</span></div><div><span style="font-weight:bold;">　① <span style="font-style:italic;">New</span> をクリックし <span style="font-style:italic;">Python3</span> を選択する</span></div><div><span style="font-weight:bold;">#-----------------------------</span></div><div><a href="https://stat.ameba.jp/user_images/20181110/21/bridge-of-japan/ae/fc/p/o0746027014300719759.png"><img alt="" contenteditable="inherit" height="224" src="https://stat.ameba.jp/user_images/20181110/21/bridge-of-japan/ae/fc/p/o0746027014300719759.png" width="620"></a></div><div>&nbsp;</div><div>&nbsp;</div><div>▼新規ページ</div><div><a href="https://stat.ameba.jp/user_images/20181110/21/bridge-of-japan/1f/d1/p/o0765031814300720384.png"><img alt="" contenteditable="inherit" height="258" src="https://stat.ameba.jp/user_images/20181110/21/bridge-of-japan/1f/d1/p/o0765031814300720384.png" width="620"></a></div><div>&nbsp;</div><div>&nbsp;</div><div><span style="font-weight:bold;">・ プロジェクト名を変更</span></div><div><div><span style="font-weight:bold;">#-----------------------------</span></div><div><span style="font-weight:bold;">　② 画面左上の <span style="font-style:italic;">Untitled</span> をクリック</span></div><div><span style="font-weight:bold;">#-----------------------------</span></div></div><div>▼ポップアップ表示</div><div><a href="https://stat.ameba.jp/user_images/20181110/21/bridge-of-japan/f6/2b/p/o0763031214300722776.png"><img alt="" contenteditable="inherit" height="254" src="https://stat.ameba.jp/user_images/20181110/21/bridge-of-japan/f6/2b/p/o0763031214300722776.png" width="620"></a></div><div>&nbsp;</div><div>&nbsp;</div><div><div><div><span style="font-weight:bold;">#-----------------------------</span></div><div><span style="font-weight:bold;">　③ タイトルを <span style="font-style:italic;">mail_test</span> に変更</span></div><div><span style="font-weight:bold;">#-----------------------------</span></div></div><div>▼変更画面</div><a href="https://stat.ameba.jp/user_images/20181110/21/bridge-of-japan/6f/df/p/o0744022214300723713.png"><img alt="" contenteditable="inherit" height="185" src="https://stat.ameba.jp/user_images/20181110/21/bridge-of-japan/6f/df/p/o0744022214300723713.png" width="620"></a></div><div>&nbsp;</div><div>▼リネーム完了</div><div><a href="https://stat.ameba.jp/user_images/20181110/21/bridge-of-japan/12/85/p/o0768015914300724632.png"><img alt="" contenteditable="inherit" height="128" src="https://stat.ameba.jp/user_images/20181110/21/bridge-of-japan/12/85/p/o0768015914300724632.png" width="620"></a></div><div>&nbsp;</div><div>&nbsp;</div><div>&nbsp;</div><div><p><span style="font-weight:bold;">■プログラミング</span></p><p><span style="font-weight:bold;">（1） メールサーバにログイン</span></p></div><div><span style="font-weight:bold;">#-----------------------------</span></div><div><span style="font-weight:bold;">　① まずは、モジュールをインポート</span></div><div><span style="font-weight:bold;">#-----------------------------</span></div><div>　<span style="font-style:italic;">In [ ]</span> の欄にインポートするモジュールを記述し、画面上のメニュー欄の「<span style="font-style:italic;">Run</span>」 をクリック</div><div>　エラーが表示されなければ問題なし</div><div>▼「<span style="font-style:italic;">Run</span>」 したけど問題ない感じ</div><div><a href="https://stat.ameba.jp/user_images/20181110/21/bridge-of-japan/d7/f6/p/o0768036914300727033.png"><img alt="" contenteditable="inherit" height="298" src="https://stat.ameba.jp/user_images/20181110/21/bridge-of-japan/d7/f6/p/o0768036914300727033.png" width="620"></a></div><div><div>&nbsp;</div><div>&nbsp;</div><div><span style="font-weight:bold;">#-----------------------------</span></div><div><span style="font-weight:bold;">　② メモ用に <span style="font-style:italic;">Markdown</span> 欄を追加</span></div><div><span style="font-weight:bold;">#-----------------------------</span></div></div><div>　上部のメニュー欄から、「<span style="font-style:italic;">Cell</span>」 をクリック</div><div>　メニューが表示されるので、「<span style="font-style:italic;">Cell Type</span>」 の中から「<span style="font-style:italic;">Markdown</span>」 を選択する</div><div><a href="https://stat.ameba.jp/user_images/20181110/21/bridge-of-japan/0a/c9/p/o0767035914300728328.png"><img alt="" contenteditable="inherit" height="290" src="https://stat.ameba.jp/user_images/20181110/21/bridge-of-japan/0a/c9/p/o0767035914300728328.png" width="620"></a></div><div>&nbsp;</div><div>&nbsp;</div><div><div><span style="font-weight:bold;">#-----------------------------</span></div><div><span style="font-weight:bold;">　③ <span style="font-style:italic;">Markdown</span> 欄にコメントを追加</span></div><div><span style="font-weight:bold;">#-----------------------------</span></div></div><div>▼コメントを入れたところ</div><div><a href="https://stat.ameba.jp/user_images/20181110/21/bridge-of-japan/a0/e9/p/o0769032514300731872.png"><img alt="" contenteditable="inherit" height="262" src="https://stat.ameba.jp/user_images/20181110/21/bridge-of-japan/a0/e9/p/o0769032514300731872.png" width="620"></a></div><div>　「<span style="font-style:italic;">Run</span>」 をクリックすると、次のセルが出力される</div><div>&nbsp;</div><div>&nbsp;</div><div><div><span style="font-weight:bold;">#-----------------------------</span></div><div><span style="font-weight:bold;">　③ 変数にログイン情報を追加</span></div><div><span style="font-weight:bold;">#-----------------------------</span></div></div><div>▼追加して<span style="font-style:italic;">Run</span> な感じ</div><div><a href="https://stat.ameba.jp/user_images/20181110/21/bridge-of-japan/62/8d/p/o0769037214300734796.png"><img alt="" contenteditable="inherit" height="300" src="https://stat.ameba.jp/user_images/20181110/21/bridge-of-japan/62/8d/p/o0769037214300734796.png" width="620"></a></div><div>　※変数に入れる情報は、各自のメールサーバ設定に合わせてください</div><div>　※あと、本来は、直接ソースに機密情報が残らないよう、プログラムを起動させたら都度入力する</div><div>　　プログラムを検討してください。</div><div>&nbsp;</div><div>例）適当な感じに…</div><div>#-----------------------------</div><div><span style="font-style:italic;">&nbsp;<span style="color:#006a2f;">while True：</span></span></div><div><span style="color:#006a2f;"><span style="font-style:italic;">　　　HOST = input(</span></span><span style="color:#cc0000;"><span style="font-style:italic;">"サーバのホスト情報入れてちょ"</span></span><span style="color:#006a2f;"><span style="font-style:italic;">)</span></span></div><div><span style="color:#006a2f;"><span style="font-style:italic;">　　　USER = input(</span></span><span style="color:#cc0000;"><span style="font-style:italic;">"メールアドレス入れてちょ"</span></span><span style="color:#006a2f;"><span style="font-style:italic;">)</span></span></div><div><span style="color:#006a2f;"><span style="font-style:italic;">　　　PASS = input(</span></span><span style="color:#cc0000;"><span style="font-style:italic;">"パスワード・・・キャ！"</span></span><span style="color:#006a2f;"><span style="font-style:italic;">)</span></span></div><div><span style="color:#006a2f;"><span style="font-style:italic;">　　　if HOST == "" or USER == "" or PASS == ""：</span></span></div><div><span style="color:#006a2f;"><span style="font-style:italic;">　　　　　　print(</span></span><span style="color:#cc0000;"><span style="font-style:italic;">"コラ！入力されてないところがあるぞ"</span></span><span style="color:#006a2f;"><span style="font-style:italic;">)</span></span></div><div><span style="color:#006a2f;"><span style="font-style:italic;">　　　　　　continue</span></span></div><div><span style="color:#006a2f;"><span style="font-style:italic;">　　　else:</span></span></div><div><span style="color:#006a2f;"><span style="font-style:italic;">　　　　　　break</span></span></div><div>#-----------------------------</div><div><div>ってな感じで、ひとまず気を付けてください。</div><div>&nbsp;</div><div>&nbsp;</div><div><span style="font-weight:bold;">#-----------------------------</span></div><div><span style="font-weight:bold;">　④ ログイン用のインスタンスを作成</span></div><div><span style="font-weight:bold;">#-----------------------------</span></div></div><div>▼作成したところ</div><div><a href="https://stat.ameba.jp/user_images/20181110/21/bridge-of-japan/ee/c0/p/o0770020514300741063.png"><img alt="" contenteditable="inherit" height="165" src="https://stat.ameba.jp/user_images/20181110/21/bridge-of-japan/ee/c0/p/o0770020514300741063.png" width="620"></a></div><div>&nbsp;</div><div>&nbsp;</div><div><div><span style="font-weight:bold;">#-----------------------------</span></div><div><span style="font-weight:bold;">　⑤ いざログイン</span></div><div><span style="font-weight:bold;">#-----------------------------</span></div></div><div>▼ログインできました！</div><div><a href="https://stat.ameba.jp/user_images/20181110/21/bridge-of-japan/62/7b/p/o0769018314300742764.png"><img alt="" contenteditable="inherit" height="148" src="https://stat.ameba.jp/user_images/20181110/21/bridge-of-japan/62/7b/p/o0769018314300742764.png" width="620"></a></div><div>&nbsp;</div><div>&nbsp;</div><div>&nbsp;</div><div><span style="font-weight:bold;">（2） <span style="font-style:italic;">IMAP</span> サーバからメールオブジェクトを取り出す</span></div><div><div><span style="font-weight:bold;">#-----------------------------</span></div><div><span style="font-weight:bold;">　⑥ ちょこっと取り出してみます</span></div><div><span style="font-weight:bold;">#-----------------------------</span></div></div><div>▼ほい！取り出せました！！</div><div><a href="https://stat.ameba.jp/user_images/20181110/21/bridge-of-japan/d6/8b/p/o0767029814300745971.png"><img alt="" contenteditable="inherit" height="241" src="https://stat.ameba.jp/user_images/20181110/21/bridge-of-japan/d6/8b/p/o0767029814300745971.png" width="620"></a></div><div>今回は、ここまで。</div><div>&nbsp;</div><div>▼以下コード全体</div><div><a href="https://stat.ameba.jp/user_images/20181110/22/bridge-of-japan/25/f7/p/o0738052214300777914.png"><img alt="" contenteditable="inherit" height="439" src="https://stat.ameba.jp/user_images/20181110/22/bridge-of-japan/25/f7/p/o0738052214300777914.png" width="620"></a></div><div>&nbsp;</div><div>&nbsp;</div><div>&nbsp;</div><div><span style="font-weight:bold;">■まとめ</span></div><div>最後らへんのオブジェクトを取り出すとき、なかなかうまくいかず苦労しました…。</div><div>古い情報を参考にしてしまったために、失敗失敗、また失敗ｗ</div><div>&nbsp;</div><div>ちなみに、余談ですが<span style="font-style:italic;"> Jupyter Notebook</span> で実行を確認していた際に、</div><div>時間を置くとログインセッションが切れてしまうみたいで、何度かエラーが発生してしまいました。</div><div>&nbsp;</div><div>そんなときの対策としては、作ったコードを上から連続で「<span style="font-style:italic;">Run</span>」 し直すと動きます。</div><div>&nbsp;</div><div>なお、今後は、取り出したメールをデータベースに保存するか、<span style="font-style:italic;">Elasticsearch </span>の</div><div><span style="font-style:italic;">Kibana </span>に投げ込んで統計グラフに変換できるようにしてみたいと思っています。</div><div>&nbsp;</div><div>私の今の仕事が、大量の業務依頼メールを受け取るもんで、</div><div>顧客の傾向を分析していけるといいかなぁ、なんて考えていたんですよね。</div><div>&nbsp;</div><div>ひとまず、のんびりやっていきます。</div><div>&nbsp;</div><div>&nbsp;</div><div>ではでは ( - 0 - )/</div><div>&nbsp;</div><div>いちたろ</div>
]]>
</description>
<link>https://ameblo.jp/bridge-of-japan/entry-12418162014.html</link>
<pubDate>Sat, 10 Nov 2018 22:19:47 +0900</pubDate>
</item>
<item>
<title>【箸休めブログ】　『CCNA ICND1 無事合格』</title>
<description>
<![CDATA[ <p>ども！いちたろです。</p><p>&nbsp;</p><p>ここ最近、備忘録目的で更新していた技術記事がぱったり止まっておりましたが、</p><p>実は、ネットワークルーティングについて理解度を深めたくてCCNA取得の為に、</p><p>学習に没頭しておりました。</p><p>&nbsp;</p><p>毎週平均20時間程度、トータル学習時間は90時間となります。</p><p>&nbsp;</p><p>年齢と共に物覚えが悪くなっている感じはありましたが、</p><p>それでもなんとか本日、CCNAの片割れICND1（CCENT）の取得に成功しました♪</p><p>&nbsp;</p><p>ひとまず「ホッ」としましたよ…</p><p>&nbsp;</p><p>なんせ、一回の試験費用が2万円近いですからね。</p><p>&nbsp;</p><p>まぁ、この勢いでICND2も一気に！</p><p>なんて行きたいところなのですが、</p><p>そろそろプログラミングの学習に戻りたいので、</p><p>一旦来年に持ち越すことにしました。</p><p>&nbsp;</p><p>ちなみに年内で予定している学習内容は、</p><p>&nbsp;</p><p>① セキュ塾 研究コース 6回（11月3回、12月3回）</p><p>② プログラミング基礎講習会 3回（12月3回）</p><p>③ 情報処理安全確保支援士 オンライン講習A</p><p>&nbsp;</p><p>と、案外時間に余裕無しな感じです。</p><p>&nbsp;</p><p>日々の積み重ねが、後に結果につながっていくと信じているので、</p><p>引き続き挑戦していきたいと思います！</p><p>&nbsp;</p><p>&nbsp;</p><p>話は変わりますが、今日は試験合格のお祝いとして、</p><p>東山魁夷展を観に行ってきました＾＾</p><p>&nbsp;</p><p>『生誕110年 東山魁夷展』</p><p><a href="http://www.nact.jp/exhibition_special/2018/kaii2018/" target="_blank">http://www.nact.jp/exhibition_special/2018/kaii2018/</a></p><p>&nbsp;</p><p>&nbsp;</p><p>結論を申しますと、</p><p>めちゃくちゃよかったです！</p><p>&nbsp;</p><p>2時間近くじっくり観覧してきましたが、経年と共に味わい深くなっていく風景表現に</p><p>ただただ溜息が桃色吐息でした。</p><p>&nbsp;</p><p>こちらは、観に行って損がないすばらしい展覧会だと思うので、</p><p>ご興味のある方はぜひに！！</p><p>&nbsp;</p><p>&nbsp;</p><p>ではでは、明日からぼちぼち技術ブログを再開させていきたいと思います。</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>いちたろ</p>
]]>
</description>
<link>https://ameblo.jp/bridge-of-japan/entry-12416729364.html</link>
<pubDate>Sun, 04 Nov 2018 18:59:56 +0900</pubDate>
</item>
<item>
<title>【勉強部屋】【開発：Python urllib を使ったダウンロード】</title>
<description>
<![CDATA[ <p><span style="font-weight:bold;">■開発環境</span></p><p>ホストマシン：　Windows10</p><p>仮想ツール：　VirtualBox Ver.5.2.16</p><p>仮想マシンOS：　Ubuntu 16.04</p><p>Python：　Python 3.6.6</p><p>&nbsp;</p><p>&nbsp;</p><p><span style="font-weight:bold;">■使用ライブラリ</span></p><p>&nbsp;<span style="font-weight:bold;">urllib ：</span> <span style="font-style:italic;">URL&nbsp;</span>を扱ういくつかのモジュールを集めたパッケージ</p><p>&nbsp;<span style="font-weight:bold;">os ：</span> <span style="font-style:italic;">OS&nbsp;</span>（<wbr>オペレーティングシステム）に依存した機能を使うための標準ライブラリ</p><p>&nbsp;<span style="font-weight:bold;">sys ：</span> <em>Python</em>&nbsp;のインタプリタや実行環境に関連した変数や関数がまとめられたライブラリ</p><p>&nbsp;</p><p>&nbsp;</p><p><span style="font-weight:bold;">■プログラムの目的</span></p><p>　<span style="font-style:italic;">Web</span>サイトから<span style="font-style:italic;">Python</span> の <span style="font-style:italic;">urllib</span> ライブラリを使ってデータをダウンロードする練習</p><p>&nbsp;</p><p>&nbsp;</p><p><span style="font-weight:bold;">■プログラムの機能</span></p><p>（1） 指定先の<span style="font-style:italic;">URL&nbsp;</span>から<span style="font-style:italic;">JPG&nbsp;</span>データをダウンロード&nbsp;</p><p>（2） 保存時のファイル名を指定</p><p>（3） 保存先のディレクトリ内に同じファイル名が無いか調べる</p><p>（4） 同じファイル名がある際は、保存せずアラートを表示しプログラムを終了させる</p><p>（5） <span style="font-style:italic;">OS</span> の<span style="font-style:italic;">display</span> コマンドを実行し保存したデータを表示させる</p><p>&nbsp;</p><p>&nbsp;</p><p><span style="font-weight:bold;">■ソースコード</span></p><p><a href="https://stat.ameba.jp/user_images/20180917/23/bridge-of-japan/ea/2a/p/o0733053914267963813.png"><img alt="" contenteditable="inherit" height="456" src="https://stat.ameba.jp/user_images/20180917/23/bridge-of-japan/ea/2a/p/o0733053914267963813.png" width="620"></a></p><p>&nbsp;</p><p>&nbsp;</p><p><span style="font-weight:bold;">■実行結果</span></p><p>（1） カレントディレクトリ内に保存されているファイルの確認</p><p><a href="https://stat.ameba.jp/user_images/20180917/23/bridge-of-japan/50/66/p/o0735024214267946547.png"><img alt="" contenteditable="inherit" height="204" src="https://stat.ameba.jp/user_images/20180917/23/bridge-of-japan/50/66/p/o0735024214267946547.png" width="620"></a></p><p>&nbsp;</p><p>（2） すでに存在するファイル名を指定してプログラムを実行</p><p><a href="https://stat.ameba.jp/user_images/20180917/23/bridge-of-japan/cb/eb/p/o0734003814267947063.png"><img alt="" contenteditable="inherit" height="32" src="https://stat.ameba.jp/user_images/20180917/23/bridge-of-japan/cb/eb/p/o0734003814267947063.png" width="620"></a></p><p>&nbsp;</p><p>（3） 存在しない新しいファイル名を指定してプログラムを実行</p><p><a href="https://stat.ameba.jp/user_images/20180917/23/bridge-of-japan/00/86/p/o0733005214267947586.png"><img alt="" contenteditable="inherit" height="44" src="https://stat.ameba.jp/user_images/20180917/23/bridge-of-japan/00/86/p/o0733005214267947586.png" width="620"></a></p><p>&nbsp;</p><p>▼実行結果</p><p><a href="https://stat.ameba.jp/user_images/20180917/23/bridge-of-japan/20/a2/p/o1021062714267948031.png"><img alt="" contenteditable="inherit" height="381" src="https://stat.ameba.jp/user_images/20180917/23/bridge-of-japan/20/a2/p/o1021062714267948031.png" width="620"></a></p><p>&nbsp;</p><p>&nbsp;</p><p><span style="font-weight:bold;">■開発で注意すべき点</span></p><p>ソースコードの冒頭に <span style="font-style:italic;">shebang</span> （シェバン）と呼ばれる記述をしているが、</p><p>これは実行権限を与えたときに、<span style="font-style:italic;">python&nbsp;</span>コマンドを指定しなくても、</p><p>プログラムを実行することができるようにするためのもの。</p><p>&nbsp;</p><p>実行権限については、下記の操作を行う。</p><p>&nbsp;</p><p><span style="color:#004920;">$ chmod 766 download-jpg.py</span></p><p>&nbsp;</p><p>&nbsp;</p><p><span style="font-weight:bold;">■プログラムの説明</span></p><p>&nbsp;</p><p><span style="color:#004920;">#!/usr/bin/env python</span>　　　　　　　　　　　　<span style="color:#ff0000;">&lt;=　shebang の記述</span></p><p><span style="color:#004920;"># -*- coding: utf-8 -*-</span>　　　　　　　　　　　 <span style="color:#ff0000;">&lt;=　文字コードの指定</span></p><p><span style="color:#004920;"># source code name: download-jpg.py</span>　　 <span style="color:#ff0000;">&lt;=　プログラム名</span></p><p><span style="color:#004920;">import urllib.request</span>　　　　　　　　　　　　　 <span style="color:#ff0000;">&lt;=　URL を開くための拡張可能なライブラリ</span></p><p><span style="color:#004920;">import os　</span>　　　　　　　　　　　　　　　　　　　<span style="color:#ff0000;">&lt;=　os ライブラリ</span></p><p><span style="color:#004920;">import sys</span>　　　　　　　　　　　　　　　　　　　 <span style="color:#ff0000;">&lt;=　sysライブラリ</span></p><p>&nbsp;</p><p><span style="color:#004920;">url = "https://.........."　　　　　　　　　　　　　</span><span style="color:#cc0000;">&lt;=　ダウンロード先のURLを変数に代入</span></p><p>&nbsp;</p><p><span style="color:#004920;">if len(sys.argv) &lt;= 1:　</span>　　　　　　　　　　　　 <span style="color:#cc0000;">&lt;=　コマンドライン引数をチェック</span></p><p>&nbsp; &nbsp; <span style="color:#004920;">print("USAGE: download-jpg.py (File name)")</span></p><p>&nbsp; &nbsp; <span style="color:#004920;">sys.exit()　</span>　　　　　　　　　　　　　　　　　 <span style="color:#cc0000;">&lt;=　引数が不足していたら終了</span></p><p>&nbsp;</p><p>else:</p><p>&nbsp; &nbsp; <span style="color:#004920;">savename = sys.argv[1] + ".jpg"</span>　　　　<span style="color:#cc0000;">&lt;=　引数の値に（.jpg）を付けて変数に代入</span></p><p>&nbsp; &nbsp; <span style="color:#004920;">if os.path.isfile(savename):　</span>　　　　　　 <span style="color:#cc0000;">&lt;=　カレントディレクトリに同じファイル名が無いか確認</span></p><p>&nbsp; &nbsp; &nbsp; &nbsp;<span style="color:#004920;"> print("同じファイル名が...")</span></p><p>&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#004920;">sys.exit()　</span>　　　　　　　　　　　　　　　 <span style="color:#cc0000;">&lt;=　同じファイル名があれば終了</span></p><p>&nbsp;</p><p><span style="color:#004920;">urllib.request.urlretrieve(url, savename)</span>　 <span style="color:#cc0000;">&lt;=　関数に <span style="font-style:italic;">url</span>&nbsp; 変数と <span style="font-style:italic;">savename</span> 変数 を指定</span></p><p><span style="color:#004920;">print("保存しました")　</span>　　　　　　　　　　　 <span style="color:#cc0000;">&lt;=　<span style="font-style:italic;">urlretrieve( )</span> を使うことで直接ファイルをダウンロードできる</span></p><p>&nbsp;</p><p><span style="color:#004920;">os.system("display " + savename)　　　　 </span><span style="color:#cc0000;">&lt;=　<span style="font-style:italic;">OS</span> の <span style="font-style:italic;">display</span> コマンドを実行。<span style="font-style:italic;">jpg&nbsp;</span>ファイルを表示</span></p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>以上です。</p><p>基礎学習としての記録でした。</p><p>&nbsp;</p><p>備忘録用なので、これからも継続して更新していきたいと思います。</p><p>φ(．． )</p><p>&nbsp;</p><p>&nbsp;</p><p>いちたろ</p><p>&nbsp;</p>
]]>
</description>
<link>https://ameblo.jp/bridge-of-japan/entry-12405658982.html</link>
<pubDate>Mon, 17 Sep 2018 23:58:36 +0900</pubDate>
</item>
<item>
<title>【勉強部屋】【環境設定：Python selenium Firefox利用の準備】</title>
<description>
<![CDATA[ <p><span style="font-weight:bold;">■Ubuntu Ver.16 上でPythonの開発環境構築（Selenium編）</span></p><p>ホストマシン：　Windows10</p><p>仮想ツール：　VirtualBox Ver.5.2.16</p><p>仮想マシンOS：　Ubuntu 16.04 （64bit）</p><p>Python：　Python 3.6.6　（Pyenv の環境にて）</p><p>&nbsp;</p><p>&nbsp;</p><p><span style="font-weight:bold;">■利用コマンド</span></p><p>　tar　（Version： 1.28-2.1ubuntu0.1）</p><p>　wget　（Vresion： 1.17.1）</p><p>　※インストールされていなければ、$ sudo apt -y install tar&nbsp;wget</p><p>&nbsp;</p><p>&nbsp;</p><p><span style="font-weight:bold;">■操作手順</span></p><p>（1） selenium install</p><p>（2） geckodriver ダウンロード</p><p>（3） ファイル&nbsp;解凍</p><p>（4） PATHが通っている環境へファイル移動</p><p>（5） selenium を使って実行検証</p><p>&nbsp;</p><p>&nbsp;</p><p><span style="font-weight:bold;">■操作一連の流れ</span></p><p><span style="color:#004920;">$ pip install selenium</span></p><p><span style="color:#004920;">$ mkdir ~/tmp</span></p><p><span style="color:#004920;">$ cd tmp</span></p><p><span style="color:#004920;">$ wget https://github.com/mozilla/geckodriver/releases/download/v0.21.0/geckodriver-v0.21.0-linux64.tar.gz</span></p><p><span style="color:#004920;">$ tar -zxvf geckodriver-v0.21.0-linux64.tar.gz</span></p><p><span style="color:#004920;">$ sudo mv ./geckodriver /usr/local/bin</span></p><p><span style="color:#004920;">$ python</span></p><p><span style="color:#004920;">&gt;&gt;&gt; from selenium import webdriver</span></p><p><span style="color:#004920;">&gt;&gt;&gt; browser = webdriver.Firefox()</span></p><p><span style="color:#004920;">&gt;&gt;&gt; browser.get('selenium-python.readthedocs.io')</span></p><p>&nbsp;</p><p>&nbsp;</p><p><span style="font-weight:bold;">■コマンド</span></p><p><span style="font-weight:bold;">&lt;selenium install&gt;</span></p><p><span style="color:#004920;">$ pip install selenium</span></p><p>&nbsp;</p><p>[ <a href="https://selenium-python.readthedocs.io/" target="_blank">selenium</a> とは ]</p><p>　プログラムによってリンクをクリックしたり、ログイン情報を入力したりなど、</p><p>あたかも人間が直接ページをやり取りしているかのように、Pythonが</p><p>ブラウザを操作するためのモジュール。（今後クローラーを作っていく際に、</p><p>Javascriptを使ったログイン機能を利用したサイト対策に使用していきたいと思っとります）</p><p><a href="https://stat.ameba.jp/user_images/20180915/18/bridge-of-japan/3b/27/p/o0738010614266446868.png"><img alt="" contenteditable="inherit" height="89" src="https://stat.ameba.jp/user_images/20180915/18/bridge-of-japan/3b/27/p/o0738010614266446868.png" width="620"></a></p><p>&nbsp;</p><p>&nbsp;</p><p><span style="font-weight:bold;">&lt;geckodriver ダウンロード&gt;</span></p><p><span style="color:#004920;">$ mkdir ~/tmp</span></p><p><span style="color:#004920;">$ cd tmp</span></p><p><span style="color:#004920;">$ wget https://github.com/mozilla/geckodriver/releases/download/v0.21.0/geckodriver-v0.21.0-linux64.tar.gz</span></p><p><a href="https://stat.ameba.jp/user_images/20180915/18/bridge-of-japan/a7/de/p/o0738025714266454661.png"><img alt="" contenteditable="inherit" height="216" src="https://stat.ameba.jp/user_images/20180915/18/bridge-of-japan/a7/de/p/o0738025714266454661.png" width="620"></a></p><p>………</p><p><a href="https://stat.ameba.jp/user_images/20180915/18/bridge-of-japan/11/80/p/o0738017214266454890.png"><img alt="" contenteditable="inherit" height="144" src="https://stat.ameba.jp/user_images/20180915/18/bridge-of-japan/11/80/p/o0738017214266454890.png" width="620"></a></p><p>&nbsp;</p><p>[ geckodriver の選び方 ]</p><p>　自身の環境に合わせてドライバをGithubのサイトからダウンロードする。</p><p>　→　<a href="https://github.com/mozilla/geckodriver/releases/" target="_blank">ダウンロードサイト</a></p><p>&nbsp;</p><p>　手順で迷ったら下記の流れでURLを取得する</p><p><span style="color:#cc0000;">#--------------------------------------------------------------------#</span></p><p><span style="color:#cc0000;">　① ダウンロードサイトを開く</span></p><p><span style="color:#cc0000;">　② 自身の環境に合わせてファイルを選択</span></p><p><a href="https://stat.ameba.jp/user_images/20180915/18/bridge-of-japan/de/d7/p/o0825032614266450933.png"><span style="color:#cc0000;"><img alt="" contenteditable="inherit" height="245" src="https://stat.ameba.jp/user_images/20180915/18/bridge-of-japan/de/d7/p/o0825032614266450933.png" width="620"></span></a></p><p><span style="color:#cc0000;">　③ 選択したファイルにカーソルを乗せて右クリック</span></p><p><span style="color:#cc0000;">　　　リンクのアドレスをコピーする</span></p><p><span style="color:#cc0000;">　④ URLをGet！</span></p><p><span style="color:#cc0000;">　　　</span><a href="https://github.com/mozilla/geckodriver/releases/download/v0.21.0/geckodriver-v0.21.0-linux64.tar.gz"><span style="color:#cc0000;">https://github.com/mozilla/geckodriver/releases/download/v0.21.0/geckodriver-v0.21.0-linux64.tar.gz</span></a></p><p><span style="color:#cc0000;">#--------------------------------------------------------------------#</span></p><p>&nbsp;</p><p>&nbsp;</p><p><span style="font-weight:bold;">&lt;ファイル 解凍&gt;</span></p><p><span style="color:#004920;">$ tar -zxvf geckodriver-v0.21.0-linux64.tar.gz</span></p><p><span style="color:#004920;">$ ls -al</span></p><p><a href="https://stat.ameba.jp/user_images/20180915/18/bridge-of-japan/d8/71/p/o0739019014266455604.png"><img alt="" contenteditable="inherit" height="159" src="https://stat.ameba.jp/user_images/20180915/18/bridge-of-japan/d8/71/p/o0739019014266455604.png" width="620"></a></p><p>&nbsp;</p><p>&nbsp;</p><p><span style="font-weight:bold;">&lt;PATHが通っている環境へファイル移動&gt;</span></p><p><span style="color:#004920;">$ sudo mv ./geckodriver /usr/local/bin</span></p><p><span style="color:#004920;">$ ls -al&nbsp;/usr/local/bin</span></p><p><a href="https://stat.ameba.jp/user_images/20180915/18/bridge-of-japan/1f/68/p/o0732008914266457804.png"><img alt="" contenteditable="inherit" height="75" src="https://stat.ameba.jp/user_images/20180915/18/bridge-of-japan/1f/68/p/o0732008914266457804.png" width="620"></a></p><p>&nbsp;</p><p>&nbsp;</p><p><span style="font-weight:bold;">&lt;selenium を使って実行検証&gt;</span></p><p><span style="color:#004920;">$ cd</span></p><p><span style="color:#004920;">$ python</span></p><p><a href="https://stat.ameba.jp/user_images/20180915/18/bridge-of-japan/70/a9/p/o0734008614266458444.png"><img alt="" contenteditable="inherit" height="73" src="https://stat.ameba.jp/user_images/20180915/18/bridge-of-japan/70/a9/p/o0734008614266458444.png" width="620"></a></p><p>&nbsp;</p><p><span style="color:#004920;">&gt;&gt;&gt; from selenium import webdriver</span></p><p><span style="color:#004920;">&gt;&gt;&gt; browser = webdriver.Firefox()</span></p><p><a href="https://stat.ameba.jp/user_images/20180915/18/bridge-of-japan/b5/92/p/o0881045614266459590.png"><img alt="" contenteditable="inherit" height="321" src="https://stat.ameba.jp/user_images/20180915/18/bridge-of-japan/b5/92/p/o0881045614266459590.png" width="620"></a></p><p><span style="color:#cc0000;">※Firefoxブラウザが起動する</span></p><p>&nbsp;</p><p><span style="color:#004920;">&gt;&gt;&gt; browser.get('https://selenium-python.readthedocs.io')</span></p><p><a href="https://stat.ameba.jp/user_images/20180915/18/bridge-of-japan/7f/4d/p/o0882062014266461798.png"><img alt="" contenteditable="inherit" height="436" src="https://stat.ameba.jp/user_images/20180915/18/bridge-of-japan/7f/4d/p/o0882062014266461798.png" width="620"></a></p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>以上。</p><p>ひとまず、Driverが必要なのでこの設定を忘れないようメモメモ…。</p><p>φ(．． )</p><p>&nbsp;</p><p>&nbsp;</p><p>いちたろ</p><p>&nbsp;</p>
]]>
</description>
<link>https://ameblo.jp/bridge-of-japan/entry-12405158599.html</link>
<pubDate>Sat, 15 Sep 2018 18:41:16 +0900</pubDate>
</item>
<item>
<title>【勉強部屋】【開発：Python RSS情報をMySQLに保存】</title>
<description>
<![CDATA[ <div class="skin-entryBody" data-uranus-component="entryBody" id="entryBody"><p><span style="font-weight:bold;">■Ubuntu Ver.16 上でPyenvを使ったPythonの開発環境構築</span></p><p>ホストマシン：　Windows10</p><p>仮想ツール：　VirtualBox Ver.5.2.16</p><p>仮想マシンOS：　Ubuntu 16.04</p><p>Python：　Python 3.6.6</p><p>MｙSQL：　MySQL 5.7</p><p>&nbsp;</p><p><span style="font-weight:bold;">■操作手順</span></p><p>（1） 必要なライブラリをインストトール</p><p>（2） スクリプト開発</p><p>（3） シェルからスクリプトを実行</p><div>（4） 結果を確認</div><p>&nbsp;</p><p>&nbsp;</p><p><span style="font-weight:bold;">■コマンド</span></p><p><span style="font-weight:bold;">&lt;必要なライブラリをインストール&gt;</span></p><p><span style="color:#004920;">$ pip install feedparser</span></p><p>&nbsp;</p><p>[ feedparser とは ]</p><p>&nbsp;<a href="https://pythonhosted.org/feedparser/" target="_blank">feedparser</a>はRSSフィードのRSS 1.0、RSS 2.0、Atomなどの複数の仕様を吸収して、</p><p>スクレイピングする便利なライブラリ。</p><p><a href="https://stat.ameba.jp/user_images/20180826/21/bridge-of-japan/16/e1/p/o0735013814254999105.png"><img alt="" contenteditable="inherit" height="116" src="https://stat.ameba.jp/user_images/20180826/21/bridge-of-japan/16/e1/p/o0735013814254999105.png" width="620"></a></p><p>&nbsp;</p><p>&nbsp;</p><div><span style="font-weight:bold;">&lt;スクリプト開発&gt;</span></div><div>[ RSS を取得するサイト ]</div><div><p><a href="http://weather.livedoor.com/weather_hacks/rss_feed_list" target="_blank">Livedoor天気情報</a></p><p>上記のサイトから<a href="http://weather.livedoor.com/forecast/rss/area/130010.xml" target="_blank">東京のリンク</a>を開く</p><p>&nbsp;</p><p>[ pythonのインタラクティブシェルで実験 ]</p></div><div><span style="color:#004920;">$ python</span></div><div>&gt;&gt;&gt; import feedparser</div><div>&gt;&gt;&gt; import MySQLdb</div><div>&gt;&gt;&gt; rss = feedparser.parse("http://weather.livedoor.com/forecast/rss/area/130010.xml")<p><a href="https://stat.ameba.jp/user_images/20180826/21/bridge-of-japan/3c/a6/p/o0844027314254999326.png"><img alt="" contenteditable="inherit" height="201" src="https://stat.ameba.jp/user_images/20180826/21/bridge-of-japan/3c/a6/p/o0844027314254999326.png" width="620"></a></p></div><div>&nbsp;</div><div>[ フィードのタイトルとコンテンツの発行日時を表示 ]</div><div><span style="color:#004920;">$ rss["feed"]["title"]</span></div><div><span style="color:#004920;">$ rss["feed"]["published"]</span></div><div><span style="color:#004920;"><a href="https://stat.ameba.jp/user_images/20180826/22/bridge-of-japan/ad/9c/p/o0843010314255004929.png"><img alt="" contenteditable="inherit" height="76" src="https://stat.ameba.jp/user_images/20180826/22/bridge-of-japan/ad/9c/p/o0843010314255004929.png" width="620"></a></span></div><div>&nbsp;</div><div>なお、肝心のRSSのエントリー（item要素）へは、下記のようにアクセスする</div><div><span style="color:#004920;">$ rss["entries"]</span></div><div><a href="https://stat.ameba.jp/user_images/20180826/22/bridge-of-japan/e6/24/p/o0836047114255006776.png"><img alt="" contenteditable="inherit" height="349" src="https://stat.ameba.jp/user_images/20180826/22/bridge-of-japan/e6/24/p/o0836047114255006776.png" width="620"></a></div><div>&nbsp;</div>[ 保存先データベースの情報 ]<p><span style="color:#cc0000;">#----------------------------------------------------#</span></p><p><span style="color:#cc0000;">※事前に下記ユーザとデータベースを作成しておく</span></p><span style="color:#cc0000;">　Database 名：　testdata</span><p><span style="color:#cc0000;">　文字コード　：　utf8</span></p><p><span style="color:#cc0000;">　ユーザ名　　：　testuser</span></p><p><span style="color:#cc0000;">　パスワード　：　password</span></p><p><span style="color:#cc0000;">#----------------------------------------------------#</span></p><p>&nbsp;</p><p>[ コード ①　：　MySQLにアクセスするためのコード ]</p><p><span style="color:#cc0000;">#----------------------------------------------------#</span></p><span style="color:#cc0000;">　スクリプト名　：　weather_rss.py</span><p><span style="color:#cc0000;">#----------------------------------------------------#</span></p><p><a href="https://stat.ameba.jp/user_images/20180826/22/bridge-of-japan/9e/bf/p/o0936037314255010421.png"><img alt="" contenteditable="inherit" height="247" src="https://stat.ameba.jp/user_images/20180826/22/bridge-of-japan/9e/bf/p/o0936037314255010421.png" width="620"></a></p><p>&nbsp;</p><p>[ コード ②　：　Livedoor天気情報のRSSを取得するためのコード ]</p><p><a href="https://stat.ameba.jp/user_images/20180826/22/bridge-of-japan/ef/97/p/o0941019014255012350.png"><img alt="" contenteditable="inherit" height="125" src="https://stat.ameba.jp/user_images/20180826/22/bridge-of-japan/ef/97/p/o0941019014255012350.png" width="620"></a></p><p>※エントリー情報の中には、不要なPR情報も含まれるため、</p><p>　事前に削除を行う。</p><p>&nbsp;</p><p>[ コード ③　：　タイトル情報とURLのリンク情報をデータベースに保存 ]</p><p><a href="https://stat.ameba.jp/user_images/20180826/22/bridge-of-japan/99/1d/p/o0938016614255014186.png"><img alt="" contenteditable="inherit" height="110" src="https://stat.ameba.jp/user_images/20180826/22/bridge-of-japan/99/1d/p/o0938016614255014186.png" width="620"></a></p><p>: wq! <span style="color:#0000ff;">[ Enter ]</span>　<span style="color:#ff0000;">&lt;= キー操作</span></p><p>&nbsp;</p><p>※最後にファイルを保存して閉じる。</p><p>&nbsp;</p><p>&nbsp;</p><div><span style="font-weight:bold;">&lt;シェルからスクリプトを実行</span><span style="font-weight:bold;">&gt;</span></div><span style="color:#004920;">$ python weather_rss.py</span><div><span style="color:#004920;">※weathertbは最初存在しないため、アラートが表示される</span></div><div><a href="https://stat.ameba.jp/user_images/20180826/22/bridge-of-japan/1e/c0/p/o0822011114255019783.png"><img alt="" contenteditable="inherit" height="84" src="https://stat.ameba.jp/user_images/20180826/22/bridge-of-japan/1e/c0/p/o0822011114255019783.png" width="620"></a></div><div>&nbsp;</div><div>&nbsp;</div><div><span style="font-weight:bold;">&lt;結果を確認</span><span style="font-weight:bold;">&gt;</span></div><div>[ データベースがどのように変化したか確認 ]</div><div>▼以下コマンド操作一連</div><div><a href="https://stat.ameba.jp/user_images/20180826/22/bridge-of-japan/61/92/p/o1058053914255021826.png"><img alt="" contenteditable="inherit" height="316" src="https://stat.ameba.jp/user_images/20180826/22/bridge-of-japan/61/92/p/o1058053914255021826.png" width="620"></a></div><div><a href="https://stat.ameba.jp/user_images/20180826/22/bridge-of-japan/dc/ce/p/o1416038014255021956.png"><img alt="" contenteditable="inherit" height="166" src="https://stat.ameba.jp/user_images/20180826/22/bridge-of-japan/dc/ce/p/o1416038014255021956.png" width="620"></a></div><div>&nbsp;</div><div>&nbsp;</div><p>以上。</p><p>次は、もう少し改造してみます。</p><p>φ(．． )</p><p>&nbsp;</p><p>&nbsp;</p><p>いちたろ</p></div>
]]>
</description>
<link>https://ameblo.jp/bridge-of-japan/entry-12400613705.html</link>
<pubDate>Sun, 26 Aug 2018 22:23:33 +0900</pubDate>
</item>
<item>
<title>【勉強部屋】【開発基礎：PythonからMySQLに接続する】</title>
<description>
<![CDATA[ <p><span style="font-weight:bold;">■Ubuntu Ver.16 上でPyenvを使ったPythonの開発環境構築</span></p><p>ホストマシン：　Windows10</p><p>仮想ツール：　VirtualBox Ver.5.2.16</p><p>仮想マシンOS：　Ubuntu 16.04</p><p>Python：　Python 3.6.6</p><p>&nbsp;</p><p>&nbsp;</p><p><span style="font-weight:bold;">■操作手順</span></p><p>（1） MySQLをインストール</p><p>（2） データベースとユーザを作成</p><p>（3） PythonからMySQLに接続するための準備</p><div>（4） シェルからスクリプトを実行</div><div>（5） 結果を確認</div><p>&nbsp;</p><p>&nbsp;</p><p><span style="font-weight:bold;">■コマンド</span></p><p><span style="font-weight:bold;">&lt;MySQLをインストール&gt;</span></p><p><span style="color:#004920;">$ sudo apt -y install mysql-server</span></p><p><span style="color:#004920;"><a href="https://stat.ameba.jp/user_images/20180826/18/bridge-of-japan/77/10/p/o0913074414254868380.png"><img alt="" contenteditable="inherit" height="505" src="https://stat.ameba.jp/user_images/20180826/18/bridge-of-japan/77/10/p/o0913074414254868380.png" width="620"></a></span></p><p>&nbsp;</p><p><span style="color:#004920;">$ sudo service mysql start</span></p><p><span style="color:#004920;">$ sudo service mysql status</span></p><p><span style="color:#004920;">&nbsp;:q　</span><span style="color:#cc0000;">&lt;= キー操作</span></p><p><a href="https://stat.ameba.jp/user_images/20180826/18/bridge-of-japan/85/de/p/o0913022714254868877.png"><img alt="" contenteditable="inherit" height="154" src="https://stat.ameba.jp/user_images/20180826/18/bridge-of-japan/85/de/p/o0913022714254868877.png" width="620"></a></p><p>&nbsp;</p><p>&nbsp;</p><div><span style="font-weight:bold;">&lt;データベースとユーザを作成&gt;</span></div><p><span style="color:#004920;">$ mysql -u root -p</span></p><p><span style="color:#004920;">Enter password:　</span><span style="color:#ff0000;">※設定したmysql root ユーザのパスワード</span></p><p><a href="https://stat.ameba.jp/user_images/20180826/19/bridge-of-japan/32/42/p/o0916026114254871060.png"><img alt="" contenteditable="inherit" height="177" src="https://stat.ameba.jp/user_images/20180826/19/bridge-of-japan/32/42/p/o0916026114254871060.png" width="620"></a></p><p>&nbsp;</p><p><span style="color:#cc0000;">#----------------------------------------------------#</span></p><p><span style="color:#cc0000;">CREATE DATABASE コマンドを使ってデータベースを作成する</span></p><p><span style="color:#cc0000;">下記は、今回のテスト用データベース情報</span></p><p><span style="color:#cc0000;">　Database 名：　testdata</span></p><p><span style="color:#cc0000;">　文字コード　：　utf8</span></p><p><span style="color:#cc0000;">　ユーザ名　　：　testuser</span></p><p><span style="color:#cc0000;">　パスワード　：　password</span></p><p><span style="color:#cc0000;">#----------------------------------------------------#</span></p><p>&nbsp;</p><p><span style="color:#004920;">&gt; CREATE DATABASE testdata DEFAULT CHARACTER SET utf8;</span></p><p><a href="https://stat.ameba.jp/user_images/20180826/19/bridge-of-japan/ce/db/p/o0917007414254874497.png"><img alt="" contenteditable="inherit" height="50" src="https://stat.ameba.jp/user_images/20180826/19/bridge-of-japan/ce/db/p/o0917007414254874497.png" width="620"></a></p><p>&nbsp;</p><p><span style="color:#004920;">&gt; CREATE USER 'testuser' IDENTIFIED BY 'password';</span></p><p><a href="https://stat.ameba.jp/user_images/20180826/19/bridge-of-japan/ea/45/p/o0913007714254875587.png"><img alt="" contenteditable="inherit" height="52" src="https://stat.ameba.jp/user_images/20180826/19/bridge-of-japan/ea/45/p/o0913007714254875587.png" width="620"></a></p><p>&nbsp;</p><p>[ 最後にユーザtestuserに先ほど作成したデータベースtestdata を読み書きできる権限を与える ]</p><p>&gt; GRANT ALL ON testdata.* TO testuser;</p><p><a href="https://stat.ameba.jp/user_images/20180826/19/bridge-of-japan/88/e5/p/o0909008014254876829.png"><img alt="" contenteditable="inherit" height="55" src="https://stat.ameba.jp/user_images/20180826/19/bridge-of-japan/88/e5/p/o0909008014254876829.png" width="620"></a></p><p>&nbsp;</p><p>[ 一旦ログアウト ]</p><p>&gt; exit</p><p>&nbsp;</p><p>&nbsp;</p><div><span style="font-weight:bold;">&lt;PythonからMySQLに接続</span><span style="font-weight:bold;">するための準備&gt;</span></div><p><span style="color:#004920;">$ sudo apt -y install libmysqlclient-dev</span></p><div><span style="color:#004920;">$ pip install mysqlclient</span></div><div><a href="https://stat.ameba.jp/user_images/20180826/19/bridge-of-japan/08/d8/p/o0735056814254880884.png"><img alt="" contenteditable="inherit" height="479" src="https://stat.ameba.jp/user_images/20180826/19/bridge-of-japan/08/d8/p/o0735056814254880884.png" width="620"></a></div><div><a href="https://stat.ameba.jp/user_images/20180826/19/bridge-of-japan/0f/c3/p/o0729019014254880976.png"><img alt="" contenteditable="inherit" height="162" src="https://stat.ameba.jp/user_images/20180826/19/bridge-of-japan/0f/c3/p/o0729019014254880976.png" width="620"></a></div><div>&nbsp;</div><div>&nbsp;</div><div><span style="font-weight:bold;">&lt;シェルからスクリプトを実行</span><span style="font-weight:bold;">&gt;</span></div><div><p>[ データベース接続してSQLを実行する ]</p><p><span style="color:#cc0000;">#----------------------------------------------------#</span></p><p><span style="color:#cc0000;">　プログラム名：　make_table.py</span></p><p><span style="color:#cc0000;">#----------------------------------------------------#</span></p><p><span style="color:#004920;">$ </span>vi make_table.py</p><p>▼プログラム</p><p><a href="https://stat.ameba.jp/user_images/20180826/19/bridge-of-japan/7e/13/p/o0741056814254892178.png"><img alt="" contenteditable="inherit" height="475" src="https://stat.ameba.jp/user_images/20180826/19/bridge-of-japan/7e/13/p/o0741056814254892178.png" width="620"></a></p></div><div>:<span style="color:#004920;">wq!</span> <span style="color:#0000ff;">[ Enter ]</span>　<span style="color:#cc0000;">&lt;= キー操作</span></div><div>&nbsp;</div><div><span style="color:#004920;">$ python make_table.py</span></div><div><span style="color:#004920;">※testtbは最初存在しないため、アラートが表示される</span></div><div><a href="https://stat.ameba.jp/user_images/20180826/19/bridge-of-japan/42/36/p/o0738003714254895002.png"><img alt="" contenteditable="inherit" height="31" src="https://stat.ameba.jp/user_images/20180826/19/bridge-of-japan/42/36/p/o0738003714254895002.png" width="620"></a></div><div>&nbsp;</div><div>&nbsp;</div><div><span style="font-weight:bold;">&lt;結果を確認</span><span style="font-weight:bold;">&gt;</span></div><div>[ データベースがどのように変化したか確認 ]</div><div>▼以下コマンド操作一連</div><div><a href="https://stat.ameba.jp/user_images/20180826/19/bridge-of-japan/cc/f2/p/o0728076814254897057.png"><img alt="" contenteditable="inherit" height="654" src="https://stat.ameba.jp/user_images/20180826/19/bridge-of-japan/cc/f2/p/o0728076814254897057.png" width="620"></a></div><div>&nbsp;</div><div>&nbsp;</div><div>&nbsp;</div><p>以上。</p><p>次は、RSSデータを取得して結果を保存してみたいと思います。</p><p>φ(．． )</p><p>&nbsp;</p><p>&nbsp;</p><p>いちたろ</p>
]]>
</description>
<link>https://ameblo.jp/bridge-of-japan/entry-12400563780.html</link>
<pubDate>Sun, 26 Aug 2018 18:55:51 +0900</pubDate>
</item>
<item>
<title>【勉強部屋】【開発環境：Python Pyenv】</title>
<description>
<![CDATA[ <p><span style="font-weight:bold;">■Ubuntu Ver.16 上でPyenvを使ったPythonの開発環境構築</span></p><p>ホストマシン：　Windows10</p><p>仮想ツール：　VirtualBox Ver.5.2.16</p><p>仮想マシンOS：　Ubuntu 16.04</p><p>　※ 上記については、環境準備済みを前提とする</p><p>&nbsp;</p><p>&nbsp;</p><p><span style="font-weight:bold;">■操作手順</span></p><p>（1） Ubuntu Terminal 起動<span style="color:#ff0000;"> -&gt; 操作の詳細は割愛</span></p><p>（2） Update ＆ Upgrade</p><p>（3） 必要なパッケージのインストール</p><p>（4） GithubからPyenvをクローン</p><p>（5） Pyenvの設定</p><p>&nbsp;</p><p>&nbsp;</p><p><span style="font-weight:bold;">■コマンド</span></p><p><span style="font-weight:bold;">&lt;update &amp; upgrade&gt;</span></p><p><span style="color:#004920;">$ sudo apt-get -y update</span></p><p><span style="color:#004920;">$ sudo apt-get -y upgrade</span></p><p>&nbsp;</p><div>&nbsp;</div><div><span style="font-weight:bold;">&lt;必要なパッケージをインストール&gt;</span></div><p><span style="color:#004920;">$ sudo apt-get -y install git vim gcc make openssl libssl-dev libbz2-dev libreadline-dev libsqlite3-dev</span></p><p>&nbsp;</p><p>&nbsp;</p><div><span style="font-weight:bold;">&lt;</span><span style="font-weight:bold;">GithubからPyenvをクローン&gt;</span></div><p>&nbsp;</p><div><span style="color:#004920;">$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv</span></div><div>$ ls -al</div><div><a href="https://stat.ameba.jp/user_images/20180816/00/bridge-of-japan/de/b9/p/o0915060414248329490.png"><img alt="" contenteditable="inherit" height="409" src="https://stat.ameba.jp/user_images/20180816/00/bridge-of-japan/de/b9/p/o0915060414248329490.png" width="620"></a></div><div>&nbsp;</div><div>&nbsp;</div><div><span style="font-weight:bold;">&lt;</span><span style="font-weight:bold;">Pyenvの設定&gt;</span></div><div><span style="color:#004920;">$ sudo vi ~/.profile</span></div><div>&nbsp;</div><div><span style="color:#cc0000;">▼下記内容を最下部に追記--------------------------</span></div><p><span style="color:#cc0000;">export PYENV_ROOT="$HOME/.pyenv"</span></p><p><span style="color:#cc0000;">export PATH="$PYENV_ROOT/bin:$PATH"</span></p><p><span style="color:#cc0000;">eval "$(pyenv init -)"</span></p><p>&nbsp;</p><p><span style="font-weight:bold;"><span style="color:#0000ff;">[Esc]</span></span><span style="color:#cc0000;">&nbsp; &lt;= キー操作</span></p><p><span style="font-weight:bold;"><span style="color:#0000ff;">&nbsp;:wq [Enter]</span></span><span style="color:#cc0000;"> &lt;= キー操作</span></p><p><span style="color:#cc0000;">--------------------------------------------------</span></p><p><a href="https://stat.ameba.jp/user_images/20180816/00/bridge-of-japan/ba/24/p/o0911054714248329449.png"><img alt="" contenteditable="inherit" height="372" src="https://stat.ameba.jp/user_images/20180816/00/bridge-of-japan/ba/24/p/o0911054714248329449.png" width="620"></a></p><p>&nbsp;</p><p>&nbsp;</p><p>[ ls コマンドで隠しファイルの所有者とグループを確認 ]</p><p><span style="color:#004920;">$ </span>ls -al</p><p><a href="https://stat.ameba.jp/user_images/20180816/00/bridge-of-japan/b6/69/p/o0911002214248333044.png"><img alt="" contenteditable="inherit" height="15" src="https://stat.ameba.jp/user_images/20180816/00/bridge-of-japan/b6/69/p/o0911002214248333044.png" width="620"></a></p><p>&nbsp;</p><p>[ 所有者を root から ubuntu ユーザへ変更 ]</p><p><span style="color:#004920;">$ </span>sudo chown ubuntu:root ~/.pyenv</p><p><a href="https://stat.ameba.jp/user_images/20180816/00/bridge-of-japan/1b/58/p/o0917004114248333425.png"><img alt="" contenteditable="inherit" height="28" src="https://stat.ameba.jp/user_images/20180816/00/bridge-of-japan/1b/58/p/o0917004114248333425.png" width="620"></a></p><p>&nbsp;</p><p>[ 変更されたか ls コマンドで確認 ]</p><p><span style="color:#004920;">$ </span>ls -al</p><p><a href="https://stat.ameba.jp/user_images/20180816/00/bridge-of-japan/e6/2e/p/o0914002314248333597.png"><img alt="" contenteditable="inherit" height="16" src="https://stat.ameba.jp/user_images/20180816/00/bridge-of-japan/e6/2e/p/o0914002314248333597.png" width="620"></a></p><p>&nbsp;</p><div>[ 設定を即座に反映させる ]</div><p><span style="color:#004920;">$ source ~/.profile</span></p><p>&nbsp;</p><div>[ Python3 の Ver.3.6.6 をインストール&nbsp; ]</div><p>$ pyenv install --list</p><p><a href="https://stat.ameba.jp/user_images/20180816/00/bridge-of-japan/0f/0b/p/o0912039114248336901.png"><img alt="" contenteditable="inherit" height="266" src="https://stat.ameba.jp/user_images/20180816/00/bridge-of-japan/0f/0b/p/o0912039114248336901.png" width="620"></a></p><div><a href="https://stat.ameba.jp/user_images/20180816/00/bridge-of-japan/be/f5/p/o0915030414248337034.png"><img alt="" contenteditable="inherit" height="206" src="https://stat.ameba.jp/user_images/20180816/00/bridge-of-japan/be/f5/p/o0915030414248337034.png" width="620"></a></div><div>&nbsp;</div><div>$ pyenv install 3.6.6</div><div>$ pyenv versions</div><p><a href="https://stat.ameba.jp/user_images/20180816/01/bridge-of-japan/dc/6a/p/o0916009314248343342.png"><img alt="" contenteditable="inherit" height="63" src="https://stat.ameba.jp/user_images/20180816/01/bridge-of-japan/dc/6a/p/o0916009314248343342.png" width="620"></a></p><p>&nbsp;</p><p>$ pyenv global 3.6.6</p><p>$ pyenv rehash</p><p>$ pyenv versions</p><p><a href="https://stat.ameba.jp/user_images/20180816/01/bridge-of-japan/93/36/p/o0914010714248343414.png"><img alt="" contenteditable="inherit" height="73" src="https://stat.ameba.jp/user_images/20180816/01/bridge-of-japan/93/36/p/o0914010714248343414.png" width="620"></a></p><p>&nbsp;</p><p>$ python</p><p><a href="https://stat.ameba.jp/user_images/20180816/01/bridge-of-japan/4f/af/p/o0916009114248343704.png"><img alt="" contenteditable="inherit" height="62" src="https://stat.ameba.jp/user_images/20180816/01/bridge-of-japan/4f/af/p/o0916009114248343704.png" width="620"></a></p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>以上。</p><p>ひとまず、引き続き検証しながら詳細を調べていきたいと思います。</p><p>φ(．． )</p><p>&nbsp;</p><p>&nbsp;</p><p>いちたろ</p><p>&nbsp;</p>
]]>
</description>
<link>https://ameblo.jp/bridge-of-japan/entry-12397816842.html</link>
<pubDate>Tue, 14 Aug 2018 15:07:22 +0900</pubDate>
</item>
<item>
<title>【勉強部屋】【環境構築：Ubuntu16.0x Elasticsearch install】</title>
<description>
<![CDATA[ <p><span style="font-weight:bold;">■Ubuntu Ver.16 上でElasticsearchの環境構築</span></p><p>ホストマシン：　Windows10</p><p>仮想ツール：　VirtualBox Ver.5.2.16</p><p>仮想マシンOS：　Ubuntu 16.04</p><p>　※ 上記については、環境準備済みを前提とする</p><p>&nbsp;</p><p>&nbsp;</p><p><span style="font-weight:bold;">■事前確認</span></p><p>・ Elasticsearch 公式サイトから Support Matrix 確認</p><p>　確認サイト　（<a href="https://www.elastic.co/support/matrix" target="_blank">https://www.elastic.co/support/matrix</a>）</p><p>　※ Elasticsearch Ver.6.3 とOSの対応を確認</p><p>・ OSにインストールされているJavaのVer.を確認</p><p>　※ 今回は、OpenJDK 10を使用したい<br>&nbsp;</p><p>&nbsp;</p><p><span style="font-weight:bold;">■操作手順</span></p><p>（1） Ubuntu Terminal 起動<span style="color:#ff0000;"> -&gt; 操作の詳細は割愛</span></p><p>（2） Update ＆ Upgrade</p><p>（3） VirtualBox の機能 Snap shot 作成<span style="color:#ff0000;"> -&gt; 操作の詳細は割愛</span></p><p>（4） OpenJDK 10 download &amp; Install</p><p>（5） Elasticsearch download &amp; Install</p><p>（6） Kibana download &amp; Install</p><p>&nbsp;</p><p>&nbsp;</p><p><span style="font-weight:bold;">■コマンド</span></p><p><span style="font-weight:bold;">&lt;update &amp; upgrade&gt;</span></p><p><span style="color:#004920;">$ sudo apt-get -y update</span></p><p><span style="color:#004920;">$ sudo apt-get -y upgrade</span></p><p>&nbsp;</p><p><span style="font-weight:bold;">&lt;Java&gt;</span></p><p>　参考サイト　（<a href="https://www.linuxmania.jp/apt-install-java.html" target="_blank">https://www.linuxmania.jp/apt-install-java.html</a>）</p><p>　参考サイト　（<a href="https://stackoverflow.com/questions/49507160/how-to-install-jdk-10-under-ubuntu" target="_blank">https://stackoverflow.com/questions/49507160/how-to-install-jdk-10-under-ubuntu</a>）</p><p>&nbsp;</p><p><span style="color:#004920;">$ java -version</span></p><div><a href="https://stat.ameba.jp/user_images/20180805/11/bridge-of-japan/40/06/p/o0676024314241873814.png"><img alt="" contenteditable="inherit" height="223" src="https://stat.ameba.jp/user_images/20180805/11/bridge-of-japan/40/06/p/o0676024314241873814.png" width="620"></a></div><div><span style="color:#004920;">$ mkdir ~/tmp</span></div><div><span style="color:#004920;">$ cd ~/tmp</span></div><div><span style="color:#004920;">$ wget https://download.java.net/java/GA/jdk10/10.0.2/19aef61b38124481863b1413dce1855f/13/openjdk-10.0.2_linux-x64_bin.tar.gz</span></div><div><span style="color:#004920;">$ tar xvf openjdk-10*_bin.tar.gz</span></div><div><span style="color:#004920;">$ sudo mv jdk-10.0.2 /usr/lib/jvm/java-10-openjdk-amd64/</span></div><div>&nbsp;</div><div><span style="color:#800000;">　※ フォルダが見つからない場合------------------------</span></div><div><span style="color:#800000;">　$ sudo apt-get -y install default-jre</span></div><div><span style="color:#800000;">　$ mv openjdk-10.0.2 /usr/lib/jvm/java-10-openjdk-amd64/</span></div><div><span style="color:#800000;">　---------------------------------------------------</span></div><div>&nbsp;</div><div><span style="color:#004920;">$ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-10-openjdk-amd64/bin/java 1</span></div><div><span style="color:#004920;">$ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-10-openjdk-amd64/bin/javac 1</span></div><div><span style="color:#004920;">$ sudo update-alternatives --config java</span></div><div><a href="https://stat.ameba.jp/user_images/20180805/11/bridge-of-japan/03/c6/p/o0859039514241875080.png"><img alt="" contenteditable="inherit" height="285" src="https://stat.ameba.jp/user_images/20180805/11/bridge-of-japan/03/c6/p/o0859039514241875080.png" width="620"></a></div><div>&nbsp;</div><div>&nbsp;</div><div><span style="font-weight:bold;">&lt;Elasticsearch&gt;</span></div><div><span style="color:#004920;">$ cd ~/tmp</span></div><div><span style="color:#004920;">$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.2.tar.gz</span></div><div><span style="color:#004920;">$ tar xvf elasticsearch-6.3.2.tar.gz</span></div><div><span style="color:#004920;">$ mv elasticsearch-6.3.2 elastic-6.3.2</span></div><div><span style="color:#004920;">$ mkdir ~/opt</span></div><div><span style="color:#004920;">$ mv elastic-6.3.2 ~/opt</span></div><div><span style="color:#004920;">$ cd ~/opt/elastic-6.3.2/bin</span></div><div><span style="color:#004920;">$ ./elasticsearch</span></div><div>&nbsp;</div><div>[ firefoxブラウザ を起動し以下のURLへアクセスを行う ]</div><div>&nbsp; <span style="color:#0000bf;">http://127.0.0.1:9200</span></div><div>&nbsp;</div><div>[ ブラウザに以下の画面が表示されれば成功 ]</div><div>&nbsp;</div><div><a href="https://stat.ameba.jp/user_images/20180805/11/bridge-of-japan/0e/86/p/o0539042114241875742.png"><img alt="" contenteditable="inherit" height="421" src="https://stat.ameba.jp/user_images/20180805/11/bridge-of-japan/0e/86/p/o0539042114241875742.png" width="539"></a></div><div>&nbsp;</div><div>&nbsp;</div><div><span style="font-weight:bold;">&lt;Kibana</span><span style="font-weight:bold;">&gt;</span></div><div>　参考サイト<span style="font-weight:bold;">　</span>（<a href="https://www.elastic.co/guide/en/kibana/current/deb.html" target="_blank">https://www.elastic.co/guide/en/kibana/current/deb.html</a>）</div><div>&nbsp;</div><div><span style="color:#004920;">$ cd ~/tmp</span></div><div><span style="color:#004920;">$ wget https://artifacts.elastic.co/downloads/kibana/kibana-6.3.2-amd64.deb</span></div><div><span style="color:#004920;">$ shasum -a 512 kibana-6.3.2-amd64.deb</span></div><div><span style="color:#004920;">$ sudo dpkg -i kibana-6.3.2-amd64.deb</span></div><div><span style="color:#004920;">$ ps -p 1</span></div><div><span style="color:#004920;">$ sudo update-rc.d kibana defaults 95 10</span></div><div><span style="color:#004920;">$ sudo -i service kibana start</span></div><div>&nbsp;</div><div>[ firefox ブラウザを起動し以下のURLへアクセスを行う ]</div><div>　<span style="color:#0000bf;">http://127.0.0.1:5601</span></div><div>&nbsp;</div><div>[ ブラウザに以下の画面が表示されれば成功 ]</div><div>&nbsp;</div><div><a href="https://stat.ameba.jp/user_images/20180805/11/bridge-of-japan/b3/14/p/o0853081814241875774.png"><img alt="" contenteditable="inherit" height="595" src="https://stat.ameba.jp/user_images/20180805/11/bridge-of-japan/b3/14/p/o0853081814241875774.png" width="620"></a></div><p>&nbsp;</p><p>&nbsp;</p><p><span style="font-weight:bold;">■補足</span></p><p><span style="font-weight:bold;">- dpkg コマンド</span></p><p>　「dpkg」は、debianのパッケージである「deb」ファイルを取り扱うコマンド</p><p>&nbsp;</p><p>&nbsp;</p><p>以上。</p><p>ひとまず、引き続き検証しながら詳細を調べていきたいと思います。</p><p>φ(．． )</p><p>&nbsp;</p><p>&nbsp;</p><p>いちたろ</p><p>&nbsp;</p><p>&nbsp;</p>
]]>
</description>
<link>https://ameblo.jp/bridge-of-japan/entry-12395720039.html</link>
<pubDate>Sun, 05 Aug 2018 11:22:24 +0900</pubDate>
</item>
<item>
<title>【勉強部屋】【コード解析：Paiza × AI Chapter5】</title>
<description>
<![CDATA[ <p>下記コードについて検証</p><p>&nbsp;</p><p>■コード概要</p><p>In[1]</p><p>#----------------------------------------</p><p>&nbsp;<span style="font-weight:bold;"><span style="color:#009944;">import</span></span> cv2</p><p>&nbsp;<span style="color:#009944;"><span style="font-weight:bold;">import</span></span> numpy <span style="color:#009944;"><span style="font-weight:bold;">as</span></span> np</p><p>&nbsp;<span style="color:#009944;"><span style="font-weight:bold;">from</span></span> matplotlib <span style="color:#009944;"><span style="font-weight:bold;">import</span></span> pyplot <span style="font-weight:bold;"><span style="color:#009944;">as</span></span> plt</p><p>&nbsp;<span style="font-weight:bold;"><span style="color:#009944;">import</span></span> pandas <span style="font-weight:bold;"><span style="color:#009944;">as</span></span> pd</p><p>&nbsp;</p><p>&nbsp;targets_data = pd.read_csv( <span style="color:#ff0000;">'y_classified.csv'</span>, index_col=0 )</p><p>&nbsp;print(targets_data[ 'Kirishima' ]</p><p>#----------------------------------------</p><p><span style="color:#0000ff;"><span style="font-weight:bold;">考察：</span></span></p><p><span style="color:#0000ff;">＜各Libraryの目的＞</span></p><p><span style="color:#0000ff;">　cv2　…　画像ファイルの操作（読み込み、表示、保存）</span></p><p><span style="color:#0000ff;">　numpy　…　学術計算用のライブラリ</span></p><p><span style="color:#0000ff;">　matplotlib　…　グラフを描画するときの標準ライブラリ</span></p><p><span style="color:#0000ff;">　pandas　…　データを操作（読み込み、追加、修正、削除）</span></p><p>&nbsp;</p><p><span style="color:#0000ff;">＜コードの意味＞</span></p><p><span style="color:#0000ff;">　# このコードの目的は、Kirishima が含まれる教師データの生成</span></p><p><span style="color:#0000ff;">　targets_data = pd.read_csv( 'y_classified.csv' )</span></p><p><span style="color:#0000ff;">　# 変数 targets_data に CSVファイル y_classified.csv を</span></p><p><span style="color:#0000ff;">　　読み込んで代入している（pandas ライブラリを使用）</span></p><p><span style="color:#0000ff;">　print(targets_data[ 'Kirishima' ]</span></p><p><span style="color:#0000ff;">　# 変数に代入されたファイルデータから、key値 'Kirishima' の</span></p><p><span style="color:#0000ff;">　　データを表示させている</span></p><p><span style="color:#0000ff;">　# 実行結果から、100個の値が出力された</span></p><p><span style="color:#0000ff;">　# 今回のCSVファイルについては、pandas で、indexが</span></p><p><span style="color:#0000ff;">　　自動生成されないように引数に index_col=0 を加筆</span><br>&nbsp;</p><p>&nbsp;</p><p>In[2]</p><p>#----------------------------------------</p><p>&nbsp;images = []</p><p>&nbsp;for i in range(100):</p><p>&nbsp;&nbsp;&nbsp;&nbsp; file = ('images/%03d.png' % (i))</p><p>&nbsp;&nbsp;&nbsp;&nbsp; img = cv2.imread(file, cv2.IMREAD_GRAYSCALE)</p><p>&nbsp;&nbsp;&nbsp;&nbsp; images.append(img)</p><p>#----------------------------------------</p><p><span style="color:#0000ff;"><span style="font-weight:bold;">考察：</span></span></p><p><span style="color:#0000ff;">＜コードの意味＞</span></p><p><span style="color:#0000ff;">　# images リストにグレースケールに変換した画像データを格納</span></p><p><span style="color:#0000ff;">　# images リストを作成</span></p><p><span style="color:#0000ff;">　for i in range(100):</span></p><p><span style="color:#0000ff;">　# 先に実行した結果をもとに100個分の値を繰り返し処理させる</span></p><p><span style="color:#0000ff;">　file = ( 'images/%03d.png' % (i))</span></p><p><span style="color:#0000ff;">　# %03d ... % (i) とは、(i) の値を代入する際に3桁で表示させる</span></p><p><span style="color:#0000ff;">　　文字列処理　例） '%03d.png' % (5) → 005.png</span></p><p><span style="color:#0000ff;">　img = cv2.imread( file, cv2.IMREAD_GRAYSCALE )</span></p><p><span style="color:#0000ff;">　# 変数 img に 出力された画像ファイルの保存先データを白黒画像　　に</span><span style="color:#0000ff;">変更したものを読み込み代入</span></p><p><span style="color:#0000ff;">　images.append( img )</span></p><p><span style="color:#0000ff;">　# リスト images に白黒画像に変更したデータを100個分追加代入</span></p><p>&nbsp;</p><p>&nbsp;</p><p>In[3]</p><p>#----------------------------------------</p><p>&nbsp;images_data = np.empty((100, len(images[0].ravel())), int)</p><p>&nbsp;for i in range(100):</p><p>&nbsp;&nbsp;&nbsp;&nbsp; images_data[i] = np.array([images[i].ravel()])</p><p>#----------------------------------------</p><p><span style="color:#0000ff;"><span style="font-weight:bold;">考察：</span></span></p><p><span style="color:#0000ff;">＜コードの意味＞</span></p><p><span style="color:#0000ff;">　# images_data に読み込んだ画像のピクセル値を1次元配列にし</span></p><p><span style="color:#0000ff;">　　保存</span></p><p><span style="color:#0000ff;">　images_data = np.empty(( 100, len( images[0].ravel())), int )</span></p><p><span style="color:#0000ff;">　# ravel() は、多次元配列を一次元配列にする際に使う</span></p><p><span style="color:#0000ff;">　# np.empty() は、値の初期化を行うことなく配列を生成する</span></p><p><span style="color:#0000ff;">　　例）np.empty((2, 4), int) → [[ 0, 0, 0, 0], [0, 0, 0, 0]]</span></p><p><span style="color:#0000ff;">　for i in range(100):</span></p><p><span style="color:#0000ff;">　　　images_data[i] = np.array([images[i].ravel()])</span></p><p><span style="color:#0000ff;">　# np.array() は、リスト、または辞書のコンテナに変換する</span></p><p><span style="color:#0000ff;">　# images_data に 100個分の、白黒画像の値を（1次元配列）を</span></p><p><span style="color:#0000ff;">　　int 型で追加代入し多次元配列を生成（箱を準備）</span></p><p><span style="color:#0000ff;">　# images リストの値を 頭から順に images_data の配列に</span></p><p><span style="color:#0000ff;">　　追加代入</span></p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>In[4]</p><p>#----------------------------------------</p><p>&nbsp;print(images_data.shape)</p><p>#----------------------------------------</p><p><span style="color:#0000ff;"><span style="font-weight:bold;">考察：</span></span></p><p><span style="color:#0000ff;">＜コードの意味＞</span></p><p><span style="color:#0000ff;">　# images_data をshapeで表示</span></p><p><span style="color:#0000ff;">　# shape は、配列が何行何列なのかを知りたいときに使う</span></p><p><span style="color:#0000ff;">　print(images_data.shape)</span></p><p><span style="color:#0000ff;">　　→ 実行結果：　( 100, 163125 )</span></p><p><span style="color:#0000ff;">　# 結果の意味、長さ163125の配列が100個保存されている</span></p><p><span style="color:#0000ff;">　　※画像の特徴ベクトル</span></p><p>&nbsp;</p><p>&nbsp;</p><p>In[5]</p><p>#----------------------------------------</p><p>&nbsp;import sklearn</p><p>&nbsp;from sklearn.model_selection import train_test_split</p><p>&nbsp;from sklearn.neighbors import KNeighborsClassifier</p><p>#----------------------------------------</p><p><span style="color:#0000ff;"><span style="font-weight:bold;">考察：</span></span></p><p><span style="color:#0000ff;">＜各Libraryの目的＞</span></p><p><span style="color:#0000ff;">　sklearn　…　pythonで使える機械学習ライブラリ</span></p><p><span style="color:#0000ff;">　train_test_split　…　学習用データとテストデータを分けるため、</span></p><p><span style="color:#0000ff;">　　　　　　　　　　　　　データセットをランダムに分割する</span></p><div><span style="color:#0000ff;">　KNeighborsClassifier　…　K近傍法（多クラス分類）を実現する</span></div><div><span style="color:#0000ff;">　　　　　　　　　　　　　ライブラリ</span></div><div><span style="color:#0000ff;">　K近傍法概要：</span></div><div><span style="color:#0000ff;">　　学習データをベクトル空間上にプロットしておき、未知のデータ</span></div><div><span style="color:#0000ff;">　　が得られたら、そこから距離が近い順に任意のK個を取得し、</span></div><div><span style="color:#0000ff;">　　その多数決でデータが属するクラスを推定する</span></div><div>&nbsp;</div><p>&nbsp;</p><p>In[6]</p><p>#----------------------------------------</p><p>&nbsp;X_train, X_test, y_train, y_test = train_test_split(images_data, targets_data['Kirishima'], random_state=0)</p><p>#----------------------------------------</p><p><span style="color:#0000ff;"><span style="font-weight:bold;">考察：</span></span></p><p><span style="color:#0000ff;">＜コードの意味＞</span></p><p><span style="color:#0000ff;">　# データの分離を行う</span></p><p><span style="color:#0000ff;">　# train は教師データ</span></p><p><span style="color:#0000ff;">　# test はテスト用データ</span></p><p><span style="color:#0000ff;">　# Xの変数には、入力する特徴ベクトル</span></p><p><span style="color:#0000ff;">　# yの変数には、期待する分類結果が入っている</span></p><p><span style="color:#0000ff;">　# 分離には、train_test_split() を使う</span></p><p>&nbsp;</p><p>&nbsp;</p><p>In[7]</p><p>#----------------------------------------</p><p>&nbsp;print(X_train.shape)</p><p>&nbsp;print(X_test.shape)</p><p>&nbsp;print(y_train.shape)</p><p>&nbsp;print(y_test.shape)</p><p>#----------------------------------------</p><p><span style="color:#0000ff;"><span style="font-weight:bold;">考察：</span></span></p><p><span style="color:#0000ff;">＜コードの意味＞</span></p><p><span style="color:#0000ff;">　# 分離したデータをそれぞれ確認する</span></p><p>&nbsp;</p><p>&nbsp;</p><p>In[8]</p><p>#----------------------------------------</p><p>&nbsp;knn = KNeighborsClassifier(n_neighbors=1)</p><p>&nbsp;knn.fit(X_train, y_train)</p><p>#----------------------------------------</p><p><span style="color:#0000ff;"><span style="font-weight:bold;">考察：</span></span></p><p><span style="color:#0000ff;">＜各Libraryの目的＞</span></p><p><span style="color:#0000ff;">　fit(X, Y)　…　訓練データとして、Xを、目標値としてYを使用してモデ　　　　　　　　　ルをフィットする</span></p><p><span style="color:#0000ff;">＜コードの意味＞</span></p><p><span style="color:#0000ff;">　# 分離した教師データをベクトル化</span></p><p><span style="color:#0000ff;">　# K近傍法を使う</span></p><p><span style="color:#0000ff;">　# KNNという学習アルゴリズムを使ってデータを学習させてみる</span></p><p><span style="color:#0000ff;">　knn.fit( X_train, y_train )</span></p><p><span style="color:#0000ff;">　# モデル作成実行</span></p><p>&nbsp;</p><p>&nbsp;</p><p>In[9][10]</p><p>#----------------------------------------</p><p>&nbsp;print(knn.predict(np.array([X_test[0]])))</p><p>&nbsp;print(y_test)</p><p>#----------------------------------------</p><p><span style="color:#0000ff;"><span style="font-weight:bold;">考察：</span></span></p><p><span style="color:#0000ff;">＜各Libraryの目的＞</span></p><p><span style="color:#0000ff;">　predict(X)　…　提供されたデータのクラスラベルを予測する</span></p><p><span style="color:#0000ff;">　※クラス分類とは、データの特徴に基づきデータが属する</span></p><p><span style="color:#0000ff;">　　クラスを推定する</span></p><p><span style="color:#0000ff;">＜コードの意味＞</span></p><p><span style="color:#0000ff;">　print(knn.predict(np.array([X_test[0]])))</span></p><p><span style="color:#0000ff;">　　→　結果：　[1]</span></p><p><span style="color:#0000ff;">　# X_test[0] の予測値を表示するプログラム</span></p><p><span style="color:#0000ff;">　# y_test[0] の結果が正しいため、比較した場合、同じ結果が</span></p><p><span style="color:#0000ff;">　　表示されれば確率が高いと言える</span></p><p>&nbsp;</p><p>&nbsp;</p><p>In[11]</p><p>#----------------------------------------</p><div>&nbsp;print(knn.predict(np.array([X_test[0], X_test[1], X_test[2], X_test[3])))</div><div>&nbsp;print(y_test)</div><p>#----------------------------------------</p><p><span style="color:#0000ff;"><span style="font-weight:bold;">考察：</span></span></p><p><span style="color:#0000ff;">＜コードの意味＞</span></p><p><span style="color:#0000ff;">　print(knn.predict(np.array([X_test[0], X_test[1], ..., X_test[3])))</span></p><p><span style="color:#0000ff;">　# 複数のテストデータの予測をまとめて行う際に、このように</span></p><p><span style="color:#0000ff;">　　記述する</span></p><p>&nbsp;</p><p>&nbsp;</p><p>In[12]</p><p>#----------------------------------------</p><p>&nbsp;y_pred = knn.predict(X_test)</p><p>&nbsp;print(y_pred)</p><p>#----------------------------------------</p><p><span style="color:#0000ff;"><span style="font-weight:bold;">考察：</span></span></p><p><span style="color:#0000ff;">＜コードの意味＞</span></p><p><span style="color:#0000ff;">　y_pred = knn.predict(X_test)</span></p><p><span style="color:#0000ff;">　# X_test の値をすべてpredictに与える</span></p><p><span style="color:#0000ff;">　# データのすべての予測を行うようにする</span></p><p><span style="color:#0000ff;">　print(y_pred)</span></p><p><span style="color:#0000ff;">　# 変数に代入した結果を出力</span></p><p><span style="color:#0000ff;">　　→　結果：　[ 1, 1, 1, 0, 0, 1, ....., 1, 0, 0 ]</span></p><p>&nbsp;</p><p>&nbsp;</p><p>In[13]</p><p>#----------------------------------------</p><p>&nbsp;print(np.mean(y_pred == y_test))</p><p>#----------------------------------------</p><p><span style="color:#0000ff;"><span style="font-weight:bold;">考察：</span></span></p><p><span style="color:#0000ff;">＜コードの意味＞</span></p><p><span style="color:#0000ff;">　# 正解率を表示する</span></p><p><span style="color:#0000ff;">　# no.mean() は、重み付きはできないが、純粋に要素の平均を</span></p><p><span style="color:#0000ff;">　　求めるために使用する関数</span></p><p>&nbsp;</p><p>&nbsp;</p><p>以上。</p><p>ひとまず、引き続き検証しながら詳細を調べていきたいと思います。</p><p>φ(．． )</p><p>&nbsp;</p><p>&nbsp;</p><p>いちたろ</p>
]]>
</description>
<link>https://ameblo.jp/bridge-of-japan/entry-12394117864.html</link>
<pubDate>Sun, 29 Jul 2018 15:26:26 +0900</pubDate>
</item>
<item>
<title>【勉強部屋】【出来事：久しぶりにブログ再開】</title>
<description>
<![CDATA[ <p>ども、いちたろです。(｡･ω･)ﾉﾞ</p><p>&nbsp;</p><p>&nbsp;</p><p>久しぶりに、ブログを再開です。</p><p>&nbsp;</p><p>&nbsp;</p><p>といっても、今まで更新していたブログは、</p><p>なんとなく思ったことを思いついたら書くものでしたが、</p><p>今後の目的は、自学した内容をまとめるために、</p><p>使っていこうと思っています。</p><p>&nbsp;</p><p>&nbsp;</p><p>本当は、Qiitaなどの技術共有サイトなどで更新するのが</p><p>良いのでしょうが、頭の整理だけが目的だったら、</p><p>ちょっと違うかなと思ったので、ひとまずこちらを使うことにしました。</p><p>&nbsp;</p><p>&nbsp;</p><p>ちなみに、現在学習中のテーマは、</p><p>下記になります。</p><p>&nbsp;</p><p>&nbsp;</p><p>■テーマ</p><p>（1） Pythonプログラミング</p><p>（2） Webサービスの脆弱性調査</p><p>（3） サイバーセキュリティの技術的対策</p><p>（4） Elasticsearchを使って受信メールの分類と解析</p><p>（5） Webスクレイピング</p><p>&nbsp;</p><p>&nbsp;</p><p>実は、ここ3～4年は、ずっと学習習慣をつけるために、</p><p>日々取り組んでいました。</p><p>&nbsp;</p><p>&nbsp;</p><p>仕事しながら、しかも習慣がないことを自分に取り入れるというのは、</p><p>本当に大変でした。</p><p>&nbsp;</p><p>&nbsp;</p><p>今は、無事月平均80時間は当たり前のように学習する習慣が</p><p>身についたので今後は、より集中力を上げて結果を出せるように</p><p>時間を使っていきたいと思っています。</p><p>&nbsp;</p><p>&nbsp;</p><p>ひとまず達成したことは、</p><p>・ 情報処理安全確保支援士の資格取得</p><p>・ セキュ塾の全カリキュラム受講完了</p><p>・ Paiza Python３ 入門編（全7レッスン完了）</p><p>・ 「Pythonによるクローラー＆スクレイピング入門」読破</p><p>・ 「実践力を身につけるPythonの教科書」読破</p><p>・ 「退屈なことはPythonにやらせよう」読破</p><p>・ 「サイバーセキュリティテスト 完全ガイド」読破</p><p>・ 「セキュリティコンテストチャレンジブック」読破</p><p>&nbsp;</p><p>&nbsp;</p><p>という具合です。</p><p>現在は、Pythonを使った機械学習とWebクローラーの開発、</p><p>BugBountyに挑戦中です。</p><p>&nbsp;</p><p>&nbsp;</p><p>まだまだ初学者レベルですが、</p><p>目標をもってしっかり前進していきたいと思います！</p><p>&nbsp;</p><p>&nbsp;</p><p>がんばろっと(o´･ω･`o)ﾉｼ</p>
]]>
</description>
<link>https://ameblo.jp/bridge-of-japan/entry-12393959130.html</link>
<pubDate>Sat, 28 Jul 2018 18:23:35 +0900</pubDate>
</item>
</channel>
</rss>
