お豆のメモ
すぐ忘れるからメモ(ぷろぐらみんぐとか)
2016-11-07T00:22:55+09:00
omame6263
Hatena::Blog
hatenablog://blog/8454420450080602417
ParticleSystemのスクリプト制御
hatenablog://entry/10328749687193271510
2016-11-07T00:22:55+09:00
2016-11-07T01:00:00+09:00 はじめに,スクリプト制御のためにInspectorでPlay On Awakeのチェックを外しておく 条件でOn,Offを切り替えるとき private GameObject obj; private ParticleSystem particle; // Use this for initialization void Start () { obj = GameObject.Find("hoge"); particle = obj.GetComponent<ParticleSystem>(); } // Update is called once per frame void Update …
<p>はじめに,<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a>制御のためにInspectorでPlay On Awakeのチェックを外しておく</p>
<div class="section">
<h4>条件でOn,Offを切り替えるとき</h4>
<pre class="code lang-cs" data-lang="cs" data-unlink> <span class="synType">private</span> GameObject obj;
<span class="synType">private</span> ParticleSystem particle;
<span class="synComment">// Use this for initialization</span>
<span class="synType">void</span> Start () {
obj = GameObject.Find(<span class="synConstant">"hoge"</span>);
particle = obj.GetComponent<ParticleSystem>();
}
<span class="synComment">// Update is called once per frame</span>
<span class="synType">void</span> Update () {
<span class="synStatement">if</span> (<span class="synStatement">this</span>.transform.position.z > <span class="synConstant">50</span>) {
particle.Play();
}
<span class="synStatement">if</span> (<span class="synStatement">this</span>.transform.position.z <= <span class="synConstant">50</span>) {
particle.Stop();
}
}
</pre>
</div>
<div class="section">
<h4>各種パラメータ等の変更</h4>
<div class="section">
<h5>StartSizeの変更</h5>
<pre class="code lang-cs" data-lang="cs" data-unlink>
paricle.startSize = <span class="synConstant">4</span>;
<span class="synComment">//Random Betweent Two Constantsで設定してる場合</span>
<span class="synType">float</span> min = <span class="synConstant">2.3</span>;
<span class="synType">float</span> max = <span class="synConstant">3.5</span>;
paricle.startSize = Random.Range(min,max);
</pre>
</div>
<div class="section">
<h5>LoopingのOn,Off</h5>
<pre class="code lang-cs" data-lang="cs" data-unlink>
paricle.loop = <span class="synConstant">true</span>;
</pre>
</div>
<div class="section">
<h5>Shape(形状)の変更</h5>
<pre class="code lang-cs" data-lang="cs" data-unlink>
<span class="synComment">//一度こうしてあげないとだめ</span>
var sh = particle.shape;
sh.shapeType = ParticleSystemShapeType.Mesh;
</pre>
</div>
</div>
omame6263
特定のオブジェクトに対してアクセス
hatenablog://entry/10328749687193261861
2016-11-06T23:46:05+09:00
2016-11-07T00:14:43+09:00 物忘れが激しいのでメモ //ゲームオブジェクト変数を用意しておく private GameObject obj; // Use this for initialization void Start () { //オブジェクトの名前で対象のオブジェクトを見つける //オブジェクト変数がpublicであればInspectorからの指定も可 obj = GameObject.Find("hoge"); } // Update is called once per frame void Update () { obj.transform.Translate(1.0, 0, 0); }
<p>物忘れが激しいのでメモ<br />
<br />
</p>
<pre class="code lang-cs" data-lang="cs" data-unlink>
<span class="synComment">//ゲームオブジェクト変数を用意しておく</span>
<span class="synType">private</span> GameObject obj;
<span class="synComment">// Use this for initialization</span>
<span class="synType">void</span> Start () {
<span class="synComment">//オブジェクトの名前で対象のオブジェクトを見つける</span>
<span class="synComment">//オブジェクト変数がpublicであればInspectorからの指定も可</span>
obj = GameObject.Find(<span class="synConstant">"hoge"</span>);
}
<span class="synComment">// Update is called once per frame</span>
<span class="synType">void</span> Update () {
obj.transform.Translate(<span class="synConstant">1.0</span>, <span class="synConstant">0</span>, <span class="synConstant">0</span>);
}
</pre>
omame6263
Unity AddForce()について
hatenablog://entry/10328749687191957672
2016-10-30T00:01:08+09:00
2016-11-06T23:34:50+09:00 Rigidbodyに力を加えることができる.加え方に複数種類があるのでメモ書式 AddForce(Vector3,ForceMode); ForceModeの種類は以下の通り. Force : 継続的な力を加える.質量の影響を受ける Acceleration : 継続的な加速を加える 質量の影響を受けない Impulse : 瞬間的な力を加える 質量の影響を受ける VelocityChange : 連続的な速度変化を加える 質量の影響を受けない public Rigidbody rb; public Vector3 vct3; // Use this for initialization vo…
<p>Rigidbodyに力を加えることができる.</p><p>加え方に複数種類があるのでメモ</p><p>書式</p>
<pre class="code lang-cs" data-lang="cs" data-unlink>AddForce(Vector3,ForceMode);
</pre><p></p><p>ForceModeの種類は以下の通り.</p>
<ul>
<li><b>Force</b> : 継続的な力を加える.質量の影響を受ける</li>
</ul>
<ul>
<li><b>Acceleration</b> : 継続的な加速を加える 質量の影響を受けない</li>
</ul>
<ul>
<li><b>Impulse</b> : 瞬間的な力を加える 質量の影響を受ける</li>
</ul>
<ul>
<li><b>VelocityChange</b> : 連続的な速度変化を加える 質量の影響を受けない </li>
</ul><pre class="code lang-cs" data-lang="cs" data-unlink>
<span class="synType">public</span> Rigidbody rb;
<span class="synType">public</span> Vector3 vct3;
<span class="synComment">// Use this for initialization</span>
<span class="synType">void</span> Start () {
rb = GetComponent<Rigidbody>();
}
<span class="synComment">// Update is called once per frame</span>
<span class="synType">void</span> Update () {
<span class="synStatement">if</span> (Input.GetKeyDown(KeyCode.F))
{
rb.AddForce(vct3, ForceMode.Force);
}
<span class="synStatement">if</span> (Input.GetKeyDown(KeyCode.A))
{
rb.AddForce(vct3, ForceMode.Acceleration);
}
<span class="synStatement">if</span> (Input.GetKeyDown(KeyCode.I))
{
rb.AddForce(vct3, ForceMode.Impulse);
}
<span class="synStatement">if</span> (Input.GetKeyDown(KeyCode.V))
{
rb.AddForce(vct3, ForceMode.VelocityChange);
}
}
</pre>
omame6263
C#の名前空間とクラス名について
hatenablog://entry/6653812171403012046
2016-06-28T11:51:49+09:00
2016-06-28T11:59:37+09:00 namespace Body.test { public partial class MainWindow : Window { private Body[] bodies; このように書いたとき(もしくは自動生成した場合) 'body' は '名前空間' ですが、'型' のように使用されています。 とエラーが出てしまうことがあるこれは 'Body'が名前空間の名前とかぶってしまっているため、区別がつけられない状態となっているなので、この場合はかぶらない名前を付けることで回避できる namespace MyBody.test { public partial class MainWindow …
<pre class="code lang-cs" data-lang="cs" data-unlink>
<span class="synType">namespace</span> Body.test
{
<span class="synType">public</span> <span class="synStatement">partial</span> <span class="synType">class</span> MainWindow : Window
{
<span class="synType">private</span> Body[] bodies;
</pre><p>このように書いたとき(もしくは自動生成した場合)</p><br />
<p><span style="color: #d32f2f">'body' は '<a class="keyword" href="http://d.hatena.ne.jp/keyword/%CC%BE%C1%B0%B6%F5%B4%D6">名前空間</a>' ですが、'型' のように使用されています。 </span></p><p>とエラーが出てしまうことがある</p><p>これは 'Body'が<a class="keyword" href="http://d.hatena.ne.jp/keyword/%CC%BE%C1%B0%B6%F5%B4%D6">名前空間</a>の名前とかぶってしまっているため、区別がつけられない状態となっている</p><p>なので、この場合はかぶらない名前を付けることで回避できる</p>
<pre class="code lang-cs" data-lang="cs" data-unlink>
<span class="synType">namespace</span> MyBody.test
{
<span class="synType">public</span> <span class="synStatement">partial</span> <span class="synType">class</span> MainWindow : Window
{
<span class="synType">private</span> Body[] bodies;
</pre>
omame6263
C#でマウス座標取得
hatenablog://entry/6653812171397843978
2016-05-24T11:16:30+09:00
2016-05-24T11:16:30+09:00 MouseMoveを利用したマウス座標の取得 using System.Windows.Forms; using System; namespace ConsoleApplication4 { class MousePos : Form { static void Main() { Application.Run(new MousePos()); } public MousePos() { this.Width = 400; this.Height = 400; this.MouseMove += new MouseEventHandler(posPrint); } private void …
<p>MouseMoveを利用したマウス座標の取得<br />
<br />
</p>
<pre class="code lang-cs" data-lang="cs" data-unlink>
<span class="synStatement">using</span> System.Windows.Forms;
<span class="synStatement">using</span> System;
<span class="synType">namespace</span> ConsoleApplication4
{
<span class="synType">class</span> MousePos : Form
{
<span class="synType">static</span> <span class="synType">void</span> Main()
{
Application.Run(<span class="synStatement">new</span> MousePos());
}
<span class="synType">public</span> MousePos()
{
<span class="synStatement">this</span>.Width = <span class="synConstant">400</span>;
<span class="synStatement">this</span>.Height = <span class="synConstant">400</span>;
<span class="synStatement">this</span>.MouseMove += <span class="synStatement">new</span> MouseEventHandler(posPrint);
}
<span class="synType">private</span> <span class="synType">void</span> posPrint(<span class="synType">object</span> sender, MouseEventArgs e)
{
<span class="synStatement">this</span>.Text = <span class="synConstant">"Pos: ("</span> + e.X + <span class="synConstant">", "</span> + e.Y + <span class="synConstant">")"</span>;
}
}
}
</pre>
omame6263
Unityをかじる(移動と回転)
hatenablog://entry/8454420450092000940
2015-04-26T21:20:29+09:00
2016-11-06T23:35:08+09:00 あることがきっかけで、少しUnityをいじってみよう!という気になったので Unityについて忘れないようにメモ書きしていきたいなーとまた、スクリプトはC#で書くようにします。 しかし自分はC#を書いたことがないので、少しずつ勉強しつつ頑張ります。 とりあえず、スクリプトはこの形から書き始めればよいみたい using UnityEngine; using System.Collections; public class myscript : MonoBehaviour { // Use this for initialization void Start () { } // Update is…
<p>あることがきっかけで、少しUnityをいじってみよう!という気になったので<br />
Unityについて忘れないようにメモ書きしていきたいなーと</p><p>また、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a>は<a class="keyword" href="http://d.hatena.ne.jp/keyword/C%23">C#</a>で書くようにします。<br />
しかし自分は<a class="keyword" href="http://d.hatena.ne.jp/keyword/C%23">C#</a>を書いたことがないので、少しずつ勉強しつつ頑張ります。</p><br />
<p>とりあえず、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a>はこの形から書き始めればよいみたい</p>
<pre class="code lang-cs" data-lang="cs" data-unlink><span class="synStatement">using</span> UnityEngine;
<span class="synStatement">using</span> System.Collections;
<span class="synType">public</span> <span class="synType">class</span> myscript : MonoBehaviour {
<span class="synComment">// Use this for initialization</span>
<span class="synType">void</span> Start () {
}
<span class="synComment">// Update is called once per frame</span>
<span class="synType">void</span> Update () {
}
}
</pre><p>Startメソッドは開始時に1度読み込まれるだけなので、初期化用かな<br />
Updateメソッドはシーンごとに読み込まれるので、メインの処理はこちらに書くことになるかと。</p>
<div class="section">
<h4>Rotate,Translate</h4>
<pre class="code lang-cs" data-lang="cs" data-unlink><span class="synComment">//z軸に1ずつ回転</span>
transform.Rotate (<span class="synConstant">0</span>, <span class="synConstant">0</span>, <span class="synConstant">1f</span>);
<span class="synComment">//y軸方向に1ずつ移動</span>
transform.Translate(<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">1f</span>);
</pre><p>第4引数にSpace.Worldと入れると、ワールド座標での移動<br />
<br />
</p>
<pre class="code lang-cs" data-lang="cs" data-unlink><span class="synComment">//Inspector内の入力欄valに応じた移動と回転</span>
<span class="synStatement">using</span> UnityEngine;
<span class="synStatement">using</span> System.Collections;
<span class="synType">public</span> <span class="synType">class</span> test : MonoBehaviour {
<span class="synType">public</span> <span class="synType">float</span> val;
<span class="synComment">// Use this for initialization</span>
<span class="synType">void</span> Start () {
}
<span class="synComment">// Update is called once per frame</span>
<span class="synType">void</span> Update () {
transform.Rotate (<span class="synConstant">0</span>, <span class="synConstant">0</span>, val);
transform.Translate (<span class="synConstant">0</span>, <span class="synConstant">0</span>, val);
}
}
</pre>
</div>
omame6263
スクレイピング+GPIOで気温計的な何か
hatenablog://entry/8454420450089251322
2015-03-25T12:51:36+09:00
2015-03-28T13:18:11+09:00 ある場所の気温をスクレイピングで取得し、それをGPIOでLEDによる2進数表示気温計的な何かを作りました Motion 地点を入力 ex大阪府大阪市 など ↓ 気温を取得 ↓ LEDで2進数表示させる Site スクレイピング対象にするサイトはGoogleです。 また、気温は1時間ごとの更新っぽいのでループは1時間に1回します Tool ・RaspberryPi B+ ・ブレッドボード ・赤色LED φ5mm ・抵抗 100Ω ・ジャンパー線 Circuit 回路はこんな感じ Source #coding:utf-8 import mechanize from bs4 import Beaut…
<p>ある場所の気温を<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EC%A5%A4%A5%D4%A5%F3%A5%B0">スクレイピング</a>で取得し、それをGPIOでLEDによる2進数表示気温計的な何かを作りました</p>
<div class="section">
<h4>Motion</h4>
<p>地点を入力 ex<a class="keyword" href="http://d.hatena.ne.jp/keyword/%C2%E7%BA%E5%C9%DC">大阪府</a><a class="keyword" href="http://d.hatena.ne.jp/keyword/%C2%E7%BA%E5%BB%D4">大阪市</a> など<br />
↓<br />
気温を取得<br />
↓<br />
LEDで2進数表示させる</p>
</div>
<div class="section">
<h4>Site</h4>
<p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EC%A5%A4%A5%D4%A5%F3%A5%B0">スクレイピング</a>対象にするサイトは<a class="keyword" href="http://d.hatena.ne.jp/keyword/Google">Google</a>です。<br />
また、気温は1時間ごとの更新っぽいのでループは1時間に1回します</p>
</div>
<div class="section">
<h4>Tool</h4>
<p>・RaspberryPi B+<br />
・ブレッドボード<br />
・赤色LED φ5mm<br />
・抵抗 100Ω<br />
・ジャンパー線</p>
</div>
<div class="section">
<h4>Circuit</h4>
<p>回路はこんな感じ<br />
<span itemscope itemtype="http://schema.org/Photograph"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/o/omame6263/20150325/20150325123900.jpg" alt="f:id:omame6263:20150325123900j:plain" title="f:id:omame6263:20150325123900j:plain" class="hatena-fotolife" itemprop="image"></span><br />
</p>
</div>
<div class="section">
<h4>Source</h4>
<pre class="code lang-python" data-lang="python" data-unlink><span class="synComment">#coding:utf-8</span>
<span class="synPreProc">import</span> mechanize
<span class="synPreProc">from</span> bs4 <span class="synPreProc">import</span> BeautifulSoup
<span class="synPreProc">import</span> time
<span class="synPreProc">import</span> urllib
br=mechanize.Browser()
kion=<span class="synConstant">0</span>
list_kion=[]
<span class="synStatement">def</span> <span class="synIdentifier">tenki</span>():
<span class="synStatement">global</span> proname
<span class="synStatement">global</span> kion
proname=<span class="synIdentifier">raw_input</span>()
point=proname+<span class="synConstant">" 天気"</span>
br.addheaders = [(<span class="synConstant">'User-agent'</span>, <span class="synConstant">'Windows IE 9'</span>)]
loc=urllib.quote(point)
br.set_handle_robots(<span class="synIdentifier">False</span>)
url=<span class="synConstant">"https://www.google.co.jp/search?client=ubuntu&channel=fs&q=%s&ie=utf-8&oe=utf-8&hl=ja"</span>%loc
res=br.<span class="synIdentifier">open</span>(url)
soup=BeautifulSoup(res.read())
kion0=soup.find(<span class="synConstant">"span"</span>,{<span class="synConstant">"class"</span>:<span class="synConstant">"wob_t"</span>})
kion1=kion0.get_text()
kion2=kion1.encode(<span class="synConstant">"utf-8"</span>)
kion=kion2.replace(<span class="synConstant">"°C"</span>,<span class="synConstant">""</span>)
<span class="synIdentifier">print</span> <span class="synIdentifier">int</span>(kion)
<span class="synStatement">global</span> list_kion
<span class="synStatement">for</span> x <span class="synStatement">in</span> <span class="synIdentifier">format</span>(<span class="synIdentifier">int</span>(kion),<span class="synConstant">"b"</span>):
list_kion.append(<span class="synIdentifier">int</span>(x))
<span class="synStatement">def</span> <span class="synIdentifier">GPIO</span>():
o=[<span class="synConstant">29</span>,<span class="synConstant">31</span>,<span class="synConstant">33</span>,<span class="synConstant">35</span>,<span class="synConstant">37</span>,<span class="synConstant">40</span>]
<span class="synPreProc">import</span> RPi.GPIO <span class="synStatement">as</span> GPIO
<span class="synStatement">global</span> list_kion
GPIO.setmode(GPIO.BOARD)
GPIO.setup(<span class="synConstant">29</span>,GPIO.OUT)
GPIO.setup(<span class="synConstant">31</span>,GPIO.OUT)
GPIO.setup(<span class="synConstant">33</span>,GPIO.OUT)
GPIO.setup(<span class="synConstant">35</span>,GPIO.OUT)
GPIO.setup(<span class="synConstant">37</span>,GPIO.OUT)
GPIO.setup(<span class="synConstant">40</span>,GPIO.OUT)
list_kion.reverse()
<span class="synStatement">try</span>:
<span class="synStatement">for</span> x <span class="synStatement">in</span> <span class="synIdentifier">range</span>(<span class="synConstant">6</span>):
out=list_kion[x]
GPIO.output(o[x],out)
<span class="synStatement">except</span>:
<span class="synStatement">pass</span>
<span class="synStatement">while</span> <span class="synConstant">1</span>:
tenki()
GPIO()
time.sleep(<span class="synConstant">3600</span>)
list_kion=[<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>]
GPIO()
</pre><p>ちなみに、上記の回路図の向きでみたとき一番右のLEDが0ビット目です。</p><p>次は、別の色のLEDで「晴」「雨」「くもり」なども表示させてみようかなー</p>
</div>
omame6263
RaspberryPiでLチカ
hatenablog://entry/8454420450089242946
2015-03-25T10:46:18+09:00
2015-03-25T10:47:21+09:00 GPIOをつかってLEDをチカチカさせます Tool ・RaspberryPi B+ ・ブレッドボード ・LED φ5mm ・抵抗 100Ω ・ジャンパー線 Circuit Source import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BOARD) GPIO.setup(40,GPIO.OUT) while 1: GPIO.output(40,True) time.sleep(1) GPIO.output(40,False) time.sleep(1) 次は、スクレイピングと組み合わせてちょっとしたものを作ってみます
<p>GPIOをつかってLEDをチカチカさせます</p>
<div class="section">
<h4>Tool</h4>
<p>・RaspberryPi B+<br />
・ブレッドボード<br />
・LED φ5mm<br />
・抵抗 100Ω<br />
・ジャンパー線</p>
</div>
<div class="section">
<h4>Circuit</h4>
<p><span itemscope itemtype="http://schema.org/Photograph"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/o/omame6263/20150325/20150325104404.jpg" alt="f:id:omame6263:20150325104404j:plain" title="f:id:omame6263:20150325104404j:plain" class="hatena-fotolife" itemprop="image"></span><br />
</p>
</div>
<div class="section">
<h4>Source</h4>
<pre class="code lang-python" data-lang="python" data-unlink><span class="synPreProc">import</span> RPi.GPIO <span class="synStatement">as</span> GPIO
<span class="synPreProc">import</span> time
GPIO.setmode(GPIO.BOARD)
GPIO.setup(<span class="synConstant">40</span>,GPIO.OUT)
<span class="synStatement">while</span> <span class="synConstant">1</span>:
GPIO.output(<span class="synConstant">40</span>,<span class="synIdentifier">True</span>)
time.sleep(<span class="synConstant">1</span>)
GPIO.output(<span class="synConstant">40</span>,<span class="synIdentifier">False</span>)
time.sleep(<span class="synConstant">1</span>)
</pre><p>次は、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EC%A5%A4%A5%D4%A5%F3%A5%B0">スクレイピング</a>と組み合わせてちょっとしたものを作ってみます</p>
</div>
omame6263
BeautifulSoupでテキスト抽出
hatenablog://entry/8454420450089086023
2015-03-23T21:21:43+09:00
2015-03-23T21:21:43+09:00 Use 変数Hにはhtmlが入っているとして aタグ内のテキストを抽出します #coding:utf-8 from bs4 import BeautifulSoup H="html" soup=BeautifulSoup(H) for t in soup.findAll("a"): text=t.get_text() print text
<div class="section">
<h4>Use</h4>
<p>変数Hにはhtmlが入っているとして<br />
aタグ内のテキストを抽出します<br />
<br />
</p>
<pre class="code lang-python" data-lang="python" data-unlink><span class="synComment">#coding:utf-8</span>
<span class="synPreProc">from</span> bs4 <span class="synPreProc">import</span> BeautifulSoup
H=<span class="synConstant">"html"</span>
soup=BeautifulSoup(H)
<span class="synStatement">for</span> t <span class="synStatement">in</span> soup.findAll(<span class="synConstant">"a"</span>):
text=t.get_text()
<span class="synIdentifier">print</span> text
</pre>
</div>
omame6263
文字列を数値に変換
hatenablog://entry/8454420450089069239
2015-03-23T18:53:40+09:00
2015-03-24T18:02:21+09:00 int関数を使います 二進数に変換したいときは、format関数を組み合わせれば良いのかな(無理やりだけど) Use int("14") #14 #基数の指定 int("14",16) #E int("14",8) #12 #二進数にするとき(無理やりかも) x=format(int("14"),'b') int(x) #1110 スクレイピングするとどうしても文字列での取得が多いので、これは助かります
<p>int関数を使います<br />
二進数に変換したいときは、format関数を組み合わせれば良いのかな(無理やりだけど)<br />
<br />
</p>
<div class="section">
<h4>Use</h4>
<pre class="code lang-python" data-lang="python" data-unlink><span class="synIdentifier">int</span>(<span class="synConstant">"14"</span>) <span class="synComment">#14</span>
<span class="synComment">#基数の指定</span>
<span class="synIdentifier">int</span>(<span class="synConstant">"14"</span>,<span class="synConstant">16</span>) <span class="synComment">#E</span>
<span class="synIdentifier">int</span>(<span class="synConstant">"14"</span>,<span class="synConstant">8</span>) <span class="synComment">#12</span>
<span class="synComment">#二進数にするとき(無理やりかも)</span>
x=<span class="synIdentifier">format</span>(<span class="synIdentifier">int</span>(<span class="synConstant">"14"</span>),<span class="synConstant">'b'</span>)
<span class="synIdentifier">int</span>(x) <span class="synComment">#1110</span>
</pre><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EC%A5%A4%A5%D4%A5%F3%A5%B0">スクレイピング</a>するとどうしても文字列での取得が多いので、これは助かります</p>
</div>
omame6263
URLエンコード・デコード
hatenablog://entry/8454420450089065745
2015-03-23T18:09:22+09:00
2015-03-23T18:09:22+09:00 urllibモジュールで簡単に行えるみたい Use #coding:utf-8 import urllib #エンコード print urllib.quote("hoge") print urllib.quote(u"hoge".encode("文字コード")) #デコード print urllib.unquote("hoge")
<p>urllibモジュールで簡単に行えるみたい</p>
<div class="section">
<h4>Use</h4>
<pre class="code lang-python" data-lang="python" data-unlink><span class="synComment">#coding:utf-8</span>
<span class="synPreProc">import</span> urllib
<span class="synComment">#エンコード</span>
<span class="synIdentifier">print</span> urllib.quote(<span class="synConstant">"hoge"</span>)
<span class="synIdentifier">print</span> urllib.quote(<span class="synConstant">u"hoge"</span>.encode(<span class="synConstant">"文字コード"</span>))
<span class="synComment">#デコード</span>
<span class="synIdentifier">print</span> urllib.unquote(<span class="synConstant">"hoge"</span>)
</pre>
</div>
omame6263
スクレイピングでTwitterbotもどき
hatenablog://entry/8454420450088610464
2015-03-19T18:45:10+09:00
2015-03-19T18:45:10+09:00 ツイートによりプロフィール名を変更するbotもどきをMechanizeとBeautifulSoup4によるスクレイピングで実現してみました Motion TLのツイートを監視 ↓ 「name setting 〜〜」というつぶやきを検出 ↓ 「〜〜」をプロフィール名に変更 ↓ 自分へのリプライで変更を通知 Site スクレイピングの対象とするサイトはTwitterの公式サイト、モバツイの2つです。 一定の時間間隔で更新するため、公式以外のサイトではAPI制限にかかる可能性が出てくる為、公式を利用。 また、プロフィール変更と自分へのリプライはモバツイから行います。(公式はうまくいかなかったので) …
<p>ツイートによりプロフィール名を変更する<a class="keyword" href="http://d.hatena.ne.jp/keyword/bot">bot</a>もどきをMechanizeとBeautifulSoup4による<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EC%A5%A4%A5%D4%A5%F3%A5%B0">スクレイピング</a>で実現してみました<br />
<br />
<br />
</p>
<div class="section">
<h4>Motion</h4>
<p>TLのツイートを監視<br />
↓<br />
「name setting 〜〜」というつぶやきを検出<br />
↓<br />
「〜〜」をプロフィール名に変更<br />
↓<br />
自分へのリプライで変更を通知<br />
<br />
</p>
</div>
<div class="section">
<h4>Site</h4>
<p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EC%A5%A4%A5%D4%A5%F3%A5%B0">スクレイピング</a>の対象とするサイトは<a class="keyword" href="http://d.hatena.ne.jp/keyword/Twitter">Twitter</a>の公式サイト、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%E2%A5%D0%A5%C4%A5%A4">モバツイ</a>の2つです。<br />
一定の時間間隔で更新するため、公式以外のサイトでは<a class="keyword" href="http://d.hatena.ne.jp/keyword/API">API</a>制限にかかる可能性が出てくる為、公式を利用。<br />
また、プロフィール変更と自分へのリプライは<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%E2%A5%D0%A5%C4%A5%A4">モバツイ</a>から行います。(公式はうまくいかなかったので)<br />
<br />
</p>
</div>
<div class="section">
<h4>Source</h4>
<p>汚い書き方ですみません。<br />
<br />
</p>
<pre class="code lang-python" data-lang="python" data-unlink>
<span class="synComment">#coding:utf-8</span>
<span class="synPreProc">import</span> mechanize
<span class="synPreProc">from</span> bs4 <span class="synPreProc">import</span> BeautifulSoup
<span class="synPreProc">import</span> re
<span class="synPreProc">import</span> time
br=mechanize.Browser()
br.set_handle_robots(<span class="synIdentifier">False</span>)
br.<span class="synIdentifier">open</span>(<span class="synConstant">"http://s.movatwi.jp/oauth/redirect"</span>)
br.select_form(nr=<span class="synConstant">0</span>)
<span class="synIdentifier">print</span> <span class="synConstant">"ID: "</span>,
userid=<span class="synIdentifier">raw_input</span>()
<span class="synIdentifier">print</span> <span class="synConstant">"pass: "</span>
password=<span class="synIdentifier">raw_input</span>()
br[<span class="synConstant">"session[username_or_email]"</span>]=userid
br[<span class="synConstant">"session[password]"</span>]=password
res=br.submit()
soup=BeautifulSoup(res)
br.<span class="synIdentifier">open</span>(<span class="synConstant">"https://twitter.com/login/"</span>)
br.select_form(nr=<span class="synConstant">1</span>)
br[<span class="synConstant">"session[username_or_email]"</span>]=userid
br[<span class="synConstant">"session[password]"</span>]=password
res0=br.submit()
soup0=BeautifulSoup(res0)
pro_url=<span class="synConstant">0</span>
proname=<span class="synConstant">0</span>
url=<span class="synConstant">0</span>
p=<span class="synConstant">1</span>
i=<span class="synConstant">0</span>
<span class="synStatement">def</span> <span class="synIdentifier">TL</span>():
<span class="synStatement">global</span> soup0
<span class="synStatement">global</span> proname
<span class="synStatement">for</span> tweets <span class="synStatement">in</span> soup0.findAll(<span class="synConstant">"p"</span>,{<span class="synConstant">"class"</span>:<span class="synConstant">"js-tweet-text tweet-text"</span>}):
<span class="synStatement">for</span> tweet <span class="synStatement">in</span> tweets:
tw=tweet.encode(<span class="synConstant">'utf-8'</span>)
t=<span class="synIdentifier">str</span>(tw)
s=re.search(<span class="synConstant">r'name setting(.+?)'</span>,t)
<span class="synStatement">if</span> s <span class="synStatement">is</span> <span class="synIdentifier">None</span>:
<span class="synStatement">pass</span>
<span class="synStatement">else</span>:
proname=tw.replace(<span class="synConstant">'name setting '</span>,<span class="synConstant">""</span>)
<span class="synStatement">global</span> i
i=<span class="synConstant">1</span>
<span class="synStatement">break</span>
<span class="synStatement">if</span> i==<span class="synConstant">1</span>:
<span class="synStatement">break</span>
<span class="synStatement">def</span> <span class="synIdentifier">profile</span>():
<span class="synStatement">global</span> soup
pro0=soup.find(<span class="synConstant">"a"</span>)
<span class="synStatement">global</span> pro_url
url=pro0.get(<span class="synConstant">"href"</span>)
<span class="synIdentifier">print</span> url
pro_url=<span class="synConstant">"http://s.movatwi.jp"</span>+url+<span class="synConstant">"/profile"</span>
br.<span class="synIdentifier">open</span>(pro_url)
br.select_form(nr=<span class="synConstant">1</span>)
<span class="synStatement">global</span> proname
br[<span class="synConstant">"name"</span>]=proname
br.submit()
<span class="synStatement">def</span> <span class="synIdentifier">tw_post</span>():
<span class="synStatement">global</span> soup
<span class="synStatement">global</span> proname
pos0=soup.find(<span class="synConstant">"a"</span>)
url1=pos0.get(<span class="synConstant">"href"</span>)
url0=<span class="synConstant">"http://www.movatwi.jp"</span>+url1+<span class="synConstant">"?l=1"</span>
br.<span class="synIdentifier">open</span>(url0)
br.select_form(nr=<span class="synConstant">0</span>)
br[<span class="synConstant">"message"</span>]=<span class="synConstant">"@hoge name changed 「%s」"</span>%proname
br.submit()
<span class="synStatement">while</span> <span class="synConstant">1</span>:
<span class="synStatement">try</span>:
TL()
<span class="synStatement">if</span> p!=proname:
<span class="synIdentifier">print</span> proname
profile()
tw_post()
p=proname
<span class="synStatement">except</span>:
<span class="synStatement">pass</span>
res0=br.<span class="synIdentifier">open</span>(<span class="synConstant">"https://twitter.com/"</span>)
soup0=BeautifulSoup(res0.read())
time.sleep(<span class="synConstant">10</span>)
</pre><p><br />
お遊び程度ですが、一応動きました。<br />
textareaへの入力がうまくいけば公式でのツイートも可能なはずなんですが...</p>
</div>
omame6263
PythonでMechanize
hatenablog://entry/8454420450088488097
2015-03-18T15:15:28+09:00
2015-03-18T15:15:28+09:00 Pythonでスクレイピングをしてみたいと思っていろいろ探していたらMechanizeというライブラリを見つけたので、その使い方などを。 Install pipでサクッとインストール # pip install mechanize Use #coding:utf-8 import mechanize br=mechanzie.Browser() br.set_handle_robots(False) #URLを開く html = br.open("URL") #HTMLを表示 print html.read() #フォームの選択 #0の部分はフォームの順番 br.select_form(nr=…
<p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Python">Python</a>で<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EC%A5%A4%A5%D4%A5%F3%A5%B0">スクレイピング</a>をしてみたいと思っていろいろ探していたらMechanizeというライブラリを見つけたので、その使い方などを。<br />
<br />
</p>
<div class="section">
<h4>Install</h4>
<p>pipでサクッとインストール</p>
<pre class="code" data-lang="" data-unlink># pip install mechanize</pre>
</div>
<div class="section">
<h4>Use</h4>
<pre class="code lang-python" data-lang="python" data-unlink><span class="synComment">#coding:utf-8</span>
<span class="synPreProc">import</span> mechanize
br=mechanzie.Browser()
br.set_handle_robots(<span class="synIdentifier">False</span>)
<span class="synComment">#URLを開く</span>
html = br.<span class="synIdentifier">open</span>(<span class="synConstant">"URL"</span>)
<span class="synComment">#HTMLを表示</span>
<span class="synIdentifier">print</span> html.read()
<span class="synComment">#フォームの選択</span>
<span class="synComment">#0の部分はフォームの順番</span>
br.select_form(nr=<span class="synConstant">0</span>)
<span class="synComment">#フォームに入力</span>
<span class="synComment">#input内のnameを""内に</span>
br[<span class="synConstant">"name"</span>]=<span class="synConstant">"hoge"</span>
<span class="synComment">#フォームを送信</span>
res = br.submit()
<span class="synComment"># リンクを見つける</span>
<span class="synComment">#hogeにはリンクの文字列を</span>
br.find_link(text_regex = <span class="synConstant">u"hoge"</span>.encode(<span class="synConstant">"utf-8"</span>))
<span class="synComment"># リンクをクリック</span>
br.follow_link(text_regex = <span class="synConstant">u"hoge"</span>.encode(<span class="synConstant">"utf-8"</span>))
</pre><p><br />
フォームの送信ができる部分が良いですね。<br />
ログインが必要なサイトなどを対象にする際には使いやすいです。</p><br />
<p>〜参考〜<br />
<a href="http://wiki.kurokobo.com/index.php?Python%2Fmechanize">Python/mechanize - kuro-tech</a></p>
</div>
omame6263
vimrcの場所
hatenablog://entry/8454420450088485392
2015-03-18T14:28:33+09:00
2015-03-18T14:28:33+09:00 よくvimrcの場所を忘れてしまうのでメモ # ~/.vimrc
<p>よくvimrcの場所を忘れてしまうのでメモ</p>
<pre class="code" data-lang="" data-unlink># ~/.vimrc</pre>
omame6263
はじめに
hatenablog://entry/8454420450088482110
2015-03-18T13:40:27+09:00
2015-03-19T11:06:29+09:00 勉強したことや、忘れそうなこととかを中心に書いていきたいと思います。超初心者なので間違いとかあるかもしれないですがよろしくお願いします。
<p>勉強したことや、忘れそうなこととかを中心に書いていきたいと思います。</p><p>超初心者なので間違いとかあるかもしれないですがよろしくお願いします。</p>
omame6263