<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-25101302</id><updated>2026-02-01T12:32:56.861+09:00</updated><category term="愚痴？"/><category term="python"/><category term="radio"/><category term="またですかマイクロソフトさん"/><category term="妄言"/><category term="旅行"/><category term="極小論"/><category term="社会"/><category term="科学？"/><category term="詐欺"/><title type='text'>+BeepCap+ブログ Blogger本店</title><subtitle type='html'>Google社のお膝元でブログ展開中！</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://beepcapex.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://beepcapex.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>BeepCap</name><uri>http://www.blogger.com/profile/17116660131133624856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-x0Cb00yxbi37ByjzMfugi9YHgOVFwVa7Zx2IKbrM-DsSVC6nmKu5NI7n83OG5kHHw2T0nKjtptSSZT0Rl1G5so_Oq9eQ1yTOvaR_g7E-AKkbpfLfKy2gSc-Dy8GFYA/s220/kao_bigger.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>238</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-25101302.post-5368072058611181772</id><published>2025-06-06T06:37:00.004+09:00</published><updated>2025-06-06T06:48:50.732+09:00</updated><title type='text'>nftablesでiptablesのhashlimitの代わりをしようとしたら世の中の情報もChatGPTも間違ってた話</title><content type='html'>&lt;p&gt;まぁタイトルのとおり。beepcapです。&lt;br /&gt;日本語どころか英語の文献も調べたのに正解がないのでみんなdebian系のnftables真面目に使ってないんじゃないかと思う。&lt;br /&gt;&lt;/p&gt;&lt;h1 style=&quot;text-align: left;&quot;&gt;要件&lt;/h1&gt;&lt;p&gt;要件は以下の通り。&lt;br /&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;sshへのnewアクセスを制限したい&amp;nbsp;&lt;/li&gt;&lt;li&gt;sshへはipv4以外からのアクセスを遮断している&lt;br /&gt;&lt;/li&gt;&lt;li&gt;1時間に5回以上のアクセスを検知したら遮断&lt;/li&gt;&lt;li&gt;遮断判定したIPアドレスは24時間アクセスを拒否&lt;/li&gt;&lt;/ul&gt;&lt;h1 style=&quot;text-align: left;&quot;&gt;対応 &lt;br /&gt;&lt;/h1&gt;&lt;p&gt;まず、nftables.confのtable inet内にblacklistをsetする。&lt;br /&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;set ssh_blacklist {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; type ipv4_addr&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; timeout 24h&lt;br /&gt;}&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;そして、さらにchain input 内に処理を追加する。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;ip saddr @ssh_blacklist log prefix &quot;Deny SSH access：&quot; drop&lt;br /&gt;tcp dport 22 ct state new limit rate over 5/hour add @ssh_blacklist { ip saddr } log prefix &quot;SSH blocked due to excessive access:&quot; drop&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;これだけ。良かったね、僕が記事を書いたあとに対応する人は楽で。&lt;br /&gt;&lt;/p&gt;&lt;h1 style=&quot;text-align: left;&quot;&gt;説明&lt;/h1&gt;&lt;div style=&quot;text-align: left;&quot;&gt;まず、setしたblacklistがアクセス過多の相手のIPアドレス(v4)を記録する。timeoutに24hを指定しているので、登録された情報は24hで消去されまたアクセスができるようになる。&lt;/div&gt;&lt;blockquote&gt;&lt;div style=&quot;text-align: left;&quot;&gt;set ssh_blacklist {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; type ipv4_addr&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; timeout 24h&lt;br /&gt;}&lt;/div&gt;&lt;/blockquote&gt;&lt;div style=&quot;text-align: left;&quot;&gt;次にsource addrがssh_blacklistに含まれている場合にdropする。&lt;/div&gt;&lt;blockquote&gt;&lt;div style=&quot;text-align: left;&quot;&gt;ip saddr @ssh_blacklist log prefix &quot;Deny SSH access：&quot; drop&lt;/div&gt;&lt;/blockquote&gt;&lt;p&gt;最後に情報がなかった回数を検出する処理だが、nftはコマンドの連携で成り立つ機能であるため要素を分解して説明する。&lt;/p&gt;&lt;p&gt;今回はssh(port 22)へのアクセスを受信側のportで判定する。 &lt;br /&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;tcp dport 22&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;次に接続時のstateが新規(TCP SYN)かを確認する。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;ct state new&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;そして、一時間に5回のアクセスを超えているかを確認する。このlimit rateはnftablesの機能であり簡単にiptablesのhashlimitのような対応ができるが、実はこの指定は60sec(たぶん)で自動的に解消されてしまう。なので遮断時間が60secの要件の場合しか使えないのだ。この辺を理解してない記事がwebには非常に多い。overを付けないと5回以下の場合に条件マッチするので注意。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;limit rate over 5/hour&lt;/p&gt;&lt;/blockquote&gt;&lt;div style=&quot;text-align: left;&quot;&gt;これまでの条件に合致したIPアドレスをssh_blacklistに追加する。&lt;/div&gt;&lt;blockquote&gt;&lt;div style=&quot;text-align: left;&quot;&gt;add @ssh_blacklist { ip saddr }&lt;/div&gt;&lt;/blockquote&gt;&lt;p&gt;ログはおまけ&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;log prefix &quot;SSH blocked due to excessive access:&quot;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;最後にこれらの条件にマッチしたパケットを落とす&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;drop&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;とこのようになっている。&lt;/p&gt;&lt;h1 style=&quot;text-align: left;&quot;&gt;考察&lt;/h1&gt;&lt;div style=&quot;text-align: left;&quot;&gt;そもそもなんでwebにちゃんとした情報がないかを考察する。まずfirewallをCUIで設定している人が少ないのではないか、特にlimit rateの時間制限はまずくてこれで十分としている記事は非常に多いし、limit rateそのものの説明も非常に少ない。最終的に情報として頼れたのはman nftだけであった。hashlimitの採用例が少ない可能性もある。多くの場合過剰アクセスのログインの遮断は認証処理側で行われている場合も多い(webページなど)。&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;当然の帰結として、ChatGPTも嘘ばかり教えてくれた。役に立たんやつである。&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beepcapex.blogspot.com/feeds/5368072058611181772/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/25101302/5368072058611181772' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/5368072058611181772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/5368072058611181772'/><link rel='alternate' type='text/html' href='http://beepcapex.blogspot.com/2025/06/nftablesiptableshashlimitchatgpt.html' title='nftablesでiptablesのhashlimitの代わりをしようとしたら世の中の情報もChatGPTも間違ってた話'/><author><name>BeepCap</name><uri>http://www.blogger.com/profile/17116660131133624856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-x0Cb00yxbi37ByjzMfugi9YHgOVFwVa7Zx2IKbrM-DsSVC6nmKu5NI7n83OG5kHHw2T0nKjtptSSZT0Rl1G5so_Oq9eQ1yTOvaR_g7E-AKkbpfLfKy2gSc-Dy8GFYA/s220/kao_bigger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25101302.post-26754731345368287</id><published>2022-11-19T11:19:00.002+09:00</published><updated>2022-11-19T11:19:54.263+09:00</updated><title type='text'>Twitterが終わった後の連絡先</title><content type='html'>&lt;p&gt;&amp;nbsp;Twitterがサ終することは無いとおもってますけど、一応連絡先書いておきますね。&lt;br /&gt;&lt;br /&gt;メールアドレス: beepcap@gmail.com&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;以上&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://beepcapex.blogspot.com/feeds/26754731345368287/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/25101302/26754731345368287' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/26754731345368287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/26754731345368287'/><link rel='alternate' type='text/html' href='http://beepcapex.blogspot.com/2022/11/twitter.html' title='Twitterが終わった後の連絡先'/><author><name>BeepCap</name><uri>http://www.blogger.com/profile/17116660131133624856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-x0Cb00yxbi37ByjzMfugi9YHgOVFwVa7Zx2IKbrM-DsSVC6nmKu5NI7n83OG5kHHw2T0nKjtptSSZT0Rl1G5so_Oq9eQ1yTOvaR_g7E-AKkbpfLfKy2gSc-Dy8GFYA/s220/kao_bigger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25101302.post-1594371374253887702</id><published>2021-03-16T23:59:00.001+09:00</published><updated>2021-03-17T00:52:24.164+09:00</updated><title type='text'>真面目な人にはちょっと言えない話</title><content type='html'>&lt;div&gt;&lt;p&gt;どうもbeepcapです。&lt;br /&gt;今回も年に一回の発作でblogが書きたくなってしまったので書こうと思います。&lt;br /&gt;&lt;br /&gt;さて、最近こんなツイートをしたら結構ナイーブな反応があったんですよ。&lt;br /&gt;&lt;a href=&quot;https://twitter.com/beepcap/status/1371601605007532033&quot;&gt;https://twitter.com/beepcap/status/1371601605007532033&lt;/a&gt;&lt;/p&gt;&lt;p&gt;で、なんで飲み会に参加しない人がいわゆる無能と判断される率が高いのか持論があるのでそれを書こうかと思います。&lt;br /&gt;が、ここで確認しなければならないことがあります。&lt;br /&gt;以下の人は多分この文書は毒なので読まないほうが良いとおもいます。&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;真面目に生きることが大事だと思っている人&lt;/li&gt;&lt;li&gt;努力することに美徳を感じる人&lt;/li&gt;&lt;li&gt;公正な世界を期待している人&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;あと、これらに該当しない人にとっても毒にはなっても薬にはなりませんので、そのつもりでどうぞ。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/span&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;仕事の本質&lt;br /&gt;&lt;/h2&gt;&lt;div&gt;最初に言っておきたいことがあるのですが、皆さんお仕事ってしてる人が多いじゃないですか。&lt;br /&gt;あれの9割(*1)は成果を出すための作業ではなく根回しです。&lt;br /&gt;&lt;br /&gt;例えばプログラマはソフトウェアを供給するだけでなくお客が企業であれば設計書を、お客が一般消費者であれば説明書を作成します。&lt;br /&gt;これはソフトウェアを売るための根回しをしているに過ぎません。&lt;br /&gt;ソフトウェアという成果物をお金に変えるために、買ってくれる人のご機嫌取りをしているのとそう変わらないことを毎回やっているのです。&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;事務をやっている人でも同じで役所に提出する書類などはフォーマットが決まっていてそれに合わせるために結構な時間を使っていますが、あれは提出した書類をお役人さんに読んでもらうための根回しです。&lt;br /&gt;&lt;br /&gt;もちろんこれはサービス業にも当てはまり、八百屋さんがお客さんにお勧めを紹介したりする行為や「安いよ」と声を掛けるのも根回しですし、農家さんが農作物を出荷する時にJAを通して検品してもらい、等級を付けてもらうことも消費者に対する根回しと言えます。&lt;br /&gt;&lt;br /&gt;この世の中のほとんどの人はお仕事でお金をもらうために根回しが欠かせません。&lt;br /&gt;反対にお金を払う側も根回しなしに仕事を評価出来る人もほとんど居ません。&lt;br /&gt;&lt;br /&gt;国立競技場の設計の話を思い出してもらえば分かるかと思いますが、ザハ案はまぁ近未来的な形をしていましたし、近年のオリンピックの傾向を考えると実に合理的で高温多湿な日本でのオリンピック開催を見越してなんと冷房がついていました。&lt;br /&gt;この一見完璧な案ですが、皆様もご承知の通り、コンペで謎の木が貼り付けられた空調もない開放型の競技場に負けました。&lt;br /&gt;なぜならば根回しが不足していたからです。&lt;br /&gt;ザハ氏は天才設計家ですが、天才肌なので日本のお役人が望む特徴を入れずに理想の競技場を設計しました。よって、設計の正しさだけで根回しが完了しない人々に評価されなかったのです。(*2)&lt;br /&gt;&lt;br /&gt;繰り返しますが、仕事の9割は根回しなのです。&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;h2&gt;評価される仕事とは&lt;br /&gt;&lt;/h2&gt;&lt;div&gt;根回しが仕事の多くを占めるのだとしたら仕事が評価されるとはどういうことでしょうか。&lt;br /&gt;&lt;br /&gt;簡単ですね、根回しが高く評価されます。&lt;br /&gt;&lt;br /&gt;もちろん成果がゼロでは回す根がありませんが、10%の成果を根回しして納品しお金をもらった人間は、成果が100%でも全く根回しが出来ずにお金に変えられない人間と比べるべくもないほど勝者です。&lt;br /&gt;&lt;br /&gt;担当者に良いことばかり言う営業や、出来もしないことを約束してくるリーダー、やれもしないことを命令する課長、それを都合良く客先に報告する部長、株主に調子の良いことばかり言う社長。&lt;br /&gt;みながそれぞれ評価されているのは、その行為が根回しそのものだからなのです。&lt;br /&gt;&lt;br /&gt;そして、彼らがそういう根回しを行った結果、あなたの成果物はお金に変わるのです。&lt;br /&gt;&lt;br /&gt;当然根回しは対外的なものばかりではありません。&lt;br /&gt;組織内でも根回しによって、仕事の予算を獲得したり、人員の追加が出来たり、より儲かる仕事を回してもらえます。&lt;br /&gt;&lt;br /&gt;実力はいまいちだとあなたが思っている人も、おべっかだけで昇進していくように見えます。&lt;br /&gt;もうなぜだか分かりますね。&lt;br /&gt;おべっかは根回しの一種だからです。&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;h2&gt;なんで飲み会に参加しない人は無能なのか&lt;br /&gt;&lt;/h2&gt;&lt;div&gt;もういいですかね。&lt;br /&gt;散々読んで分かったと思いますが、飲み会はグループ内での根回しのために最適な空間です。&lt;br /&gt;コミュニケーションが取りやすいのもありますが、他にも約束事をしても大抵の場合相手の記憶が曖昧で、しかも約束した事だけは(念を押せば)覚えていることが多いのですから、こんなに都合が良いことはありません。&lt;br /&gt;&lt;br /&gt;その飲み会に「お酒が飲めない」とか「他の事が忙しい」だなんて理由で参加しないだなんて！！！信じられない愚行です。&lt;br /&gt;&lt;br /&gt;それは根回しを軽視しているということです。&lt;br /&gt;お仕事の9割を軽視しているんです。&lt;br /&gt;人は真面目に仕事をして成果を出すだけでは仕事のたった1割しかやってないんです。&lt;br /&gt;&lt;br /&gt;そりゃあ、評価もされないし、仕事も上手くいかないし、無能と評価されるでしょうよ。&lt;br /&gt;&lt;br /&gt;しかしですね...&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;h2&gt;根回しって才能かもしれない&lt;br /&gt;&lt;/h2&gt;&lt;div&gt;この記事読んで欲しくなかった理由なんですが、根回しって僕の観測範囲だと手順書やHow Toがあること以外は才能に依存するんですよ。&lt;br /&gt;上司やお客に気に入られる奴とかは、努力もしているのでしょうが圧倒的に才能が支配的です。&lt;br /&gt;僕の10年以上の付き合いになる営業畑の天才的な(*3)友人も、最後には「美人の後輩が体を売ってすべてを持って行った」とか言ってました。性差別的ですけど、でもそういうことです。&lt;br /&gt;&lt;br /&gt;だからね、根回しでもうすでに成果を出してる奴らに勝とうなんてのは無理なんですよ。努力だけでは覆らないのです。諦めましょう。&lt;br /&gt;&lt;br /&gt;それでも諦め切れないのなら、ほんのチョットの努力でできる飲み会への参加くらい、してみたらどうですかね。&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;*1 数字は勘&lt;br /&gt;*2 &lt;/span&gt;もっともザハの設計事務所は設計の費用はもらったとも聞いたのでそれはそれで根回し(契約)はちゃんとしてるとも思いますが&lt;br /&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;*3 証券会社で全国ランカーつったら相当なもんだよね&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beepcapex.blogspot.com/feeds/1594371374253887702/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/25101302/1594371374253887702' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/1594371374253887702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/1594371374253887702'/><link rel='alternate' type='text/html' href='http://beepcapex.blogspot.com/2021/03/blog-post.html' title='真面目な人にはちょっと言えない話'/><author><name>BeepCap</name><uri>http://www.blogger.com/profile/17116660131133624856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-x0Cb00yxbi37ByjzMfugi9YHgOVFwVa7Zx2IKbrM-DsSVC6nmKu5NI7n83OG5kHHw2T0nKjtptSSZT0Rl1G5so_Oq9eQ1yTOvaR_g7E-AKkbpfLfKy2gSc-Dy8GFYA/s220/kao_bigger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25101302.post-9096784619859140110</id><published>2020-07-26T02:37:00.000+09:00</published><updated>2020-07-26T02:37:03.853+09:00</updated><title type='text'>サルシッチャ作るぞ</title><content type='html'>まだ作成前のメモ&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ひき肉、塩(5%)、ハーブ&lt;/div&gt;&lt;div&gt;よく混ぜて冷蔵庫で小分けにしながら熟成(およそ1週間以上)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;食べるときは茹でて焼くか&lt;/div&gt;&lt;div&gt;パスタの材料などにする&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beepcapex.blogspot.com/feeds/9096784619859140110/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/25101302/9096784619859140110' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/9096784619859140110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/9096784619859140110'/><link rel='alternate' type='text/html' href='http://beepcapex.blogspot.com/2020/07/blog-post_26.html' title='サルシッチャ作るぞ'/><author><name>BeepCap</name><uri>http://www.blogger.com/profile/17116660131133624856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-x0Cb00yxbi37ByjzMfugi9YHgOVFwVa7Zx2IKbrM-DsSVC6nmKu5NI7n83OG5kHHw2T0nKjtptSSZT0Rl1G5so_Oq9eQ1yTOvaR_g7E-AKkbpfLfKy2gSc-Dy8GFYA/s220/kao_bigger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25101302.post-2088139125919194295</id><published>2020-07-04T00:54:00.003+09:00</published><updated>2020-07-04T01:26:17.679+09:00</updated><title type='text'>(自作)冷製たらこパスタのオリジナルレシピ</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
色々と試した結果の自分用のメモ&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
材料：&lt;/div&gt;
&lt;div&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;オリーブオイル　おおさじ２&lt;/li&gt;
&lt;li&gt;にんにく　１片&lt;/li&gt;
&lt;li&gt;たらこ　２腹&lt;/li&gt;
&lt;li&gt;日本酒　おおさじ１&lt;/li&gt;
&lt;li&gt;パスタ　１人前(100~150g?)&lt;/li&gt;
&lt;li&gt;大葉　一枚分&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
手順：&lt;br /&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;オリーブオイル(おおさじ2程度)に芽を取り除いて潰したにんにくを入れ、弱火にかけて香りを抽出する。&lt;/li&gt;
&lt;li&gt;金属のボールを二重にし、下のボールに氷水を入れる。(生クリームを泡立てる時と同じ)&lt;/li&gt;
&lt;li&gt;上のボールに香りを抽出したオリーブオイルを入れ、冷やしておく。(あらかじめ火を消した後、粗熱を取ってから入れた方が氷がすぐ融けず不足しにくい)&lt;/li&gt;
&lt;li&gt;オリーブオイルが冷めたら、たらこ２腹の皮を包丁で割き、中身を上のボールに加える。&lt;/li&gt;
&lt;li&gt;日本酒おおさじ１を上のボールに加え混ぜておく。&lt;/li&gt;
&lt;li&gt;細めのパスタ１人前を1.5%ほど塩を加えたお湯で既定の時間より1分ほど長く茹でる(湯で時間は目安、お好みで調整可、ただしパスタは冷やすと少し硬めの食感になる。)&lt;/li&gt;
&lt;li&gt;茹でたパスタのお湯を切って、上のボールに加える。&lt;/li&gt;
&lt;li&gt;よく和えて、刻んだ大葉を乗せ完成。&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
備考：&lt;/div&gt;
&lt;div&gt;
手順５で溶かしバターや醤油、魚醤などを加えてもいいが、パスタの塩気とたらこの量を調整しないと塩辛くなる。&lt;br /&gt;
日本酒は代替が見つからなかった。臭みを消せるのならもしかしたら中国酒とかならいけるかも。ワインは僕には合わなかった。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;追記：&lt;br /&gt;日本酒のアルコールが残ってしまうので、まだ油が熱いうちに入れてアルコールと水分を飛ばすなどの確認は今後の研究項目。&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://beepcapex.blogspot.com/feeds/2088139125919194295/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/25101302/2088139125919194295' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/2088139125919194295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/2088139125919194295'/><link rel='alternate' type='text/html' href='http://beepcapex.blogspot.com/2020/07/blog-post.html' title='(自作)冷製たらこパスタのオリジナルレシピ'/><author><name>BeepCap</name><uri>http://www.blogger.com/profile/17116660131133624856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-x0Cb00yxbi37ByjzMfugi9YHgOVFwVa7Zx2IKbrM-DsSVC6nmKu5NI7n83OG5kHHw2T0nKjtptSSZT0Rl1G5so_Oq9eQ1yTOvaR_g7E-AKkbpfLfKy2gSc-Dy8GFYA/s220/kao_bigger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25101302.post-136308361004057699</id><published>2019-11-05T00:58:00.001+09:00</published><updated>2019-11-05T01:27:08.841+09:00</updated><title type='text'>GNU コーディング標準 C言語編(多分前編)</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
どうもどうもbeepcapだよ。&lt;br /&gt;
&lt;br /&gt;
Twitterにてバカにしたのだが、意外とみんな知らなそうなのでもしかしてと思って調べたら日本語訳が無い。&lt;br /&gt;
そりゃ知らん人が多いわけだ。&lt;br /&gt;
&lt;br /&gt;
ということで簡単に訳してみる。(一部超訳)&lt;br /&gt;
原文は: &lt;a href=&quot;https://www.gnu.org/prep/standards/standards.html#Writing-C&quot;&gt;GNU Coding Standards: Making The Best Use of C&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
「5 C言語の最も優れた使い方」&lt;br /&gt;
&lt;br /&gt;
この章では、GNUソフトウェアを作成する際にC言語を使用する最善の方法についてアドバイスします。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
「5.1 ソースコードのフォーマット」&lt;br /&gt;
&lt;br /&gt;
幅広い環境で最大限に読みやすくするために、ソース行の長さは79文字以下にしてください。&lt;br /&gt;
&lt;br /&gt;
関数の本体を開始する左中かっこを1列めに配置して、定義することが重要です。いくつかのツールは、C 関数の始まりを見つけるために、１列めで左中かっこを探します。これらのツールは、この方法で書式設定されていないコードでは動作しません。&lt;br /&gt;
&lt;br /&gt;
--- 訳注 ---&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
func () { //これをやるな&lt;br /&gt;
&lt;br /&gt;
func ()&lt;br /&gt;
{ //こうしろと言っている&lt;/blockquote&gt;
--- 訳注終わり ---&lt;br /&gt;
&lt;br /&gt;
関数内で左中かっこ、左かっこ、または左大かっこを1列めに入れることは避けてください。&lt;br /&gt;
構造体本体を定義する左中かっこは、役に立つ場合は１列めに定義することができます。&lt;br /&gt;
&lt;br /&gt;
また、関数定義では、1列めで関数の名前を開始することも重要です。これは、ユーザーが関数定義を検索するのに役立ち、特定のツールが関数定義を認識するのに役立ちます。&lt;br /&gt;
上記に従って標準Cを使用すると、次の形式になります。&lt;br /&gt;
&lt;pre class=&quot;example&quot;&gt;&lt;/pre&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;pre class=&quot;example&quot;&gt;static char *
concat (char *s1, char *s2)
{
  …
}&lt;/pre&gt;
&lt;/blockquote&gt;
--- ここK&amp;amp;Rにつき略 ---&lt;br /&gt;
&lt;br /&gt;
標準Cでは、引数が1行に収まらない場合は、次のように分割します。&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;br /&gt;
&lt;pre class=&quot;example&quot;&gt;int
lots_of_args (int an_integer, long a_long, short a_short,
              double a_double, float a_float)
…&lt;/pre&gt;
&lt;/blockquote&gt;
構造体型や列挙型の場合も同様に、内容全体が1行に収まらない場合、中かっこを1行めに配置します。&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;div class=&quot;example&quot;&gt;
&lt;pre class=&quot;example&quot;&gt;struct foo
{
  int a, b;
}
&lt;/pre&gt;
&lt;pre class=&quot;example&quot;&gt;&lt;span class=&quot;roman&quot;&gt;or&lt;/span&gt;
&lt;/pre&gt;
&lt;pre class=&quot;example&quot;&gt;struct foo { int a, b; }
&lt;/pre&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
--- ここEmacs固有の話なので略 ---&lt;br /&gt;
&lt;br /&gt;
2つの異なるプログラムの書式が異なる場合、ユーザーに問題が発生しないため、書式は要件とは考えません。&lt;br /&gt;
&lt;br /&gt;
しかし、あなたが使用するスタイルが何であれ、1つのプログラム内に複数のスタイルが混合していると視認性が下がるので、一貫して１つのスタイルを使用してください。既存のプログラムに変更を加える場合は、そのプログラムの元々のスタイルに従ってください。&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;関数の本体では、推奨されるスタイルは次のようになります。&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;pre class=&quot;example&quot;&gt;if (x &amp;lt; foo (y, z))
  haha = bar[4] + 5;
else
  {
    while (z)
      {
        haha += foo (z, z);
        z--;
      }
    return ++x + bar ();
  }
&lt;/pre&gt;
&lt;/blockquote&gt;
&amp;nbsp;--- 訳注(インデントずれてませんよ！本当に推奨がこうなの！) ---&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;プログラムが左かっこの前とコンマの後にスペースを入れると読みやすくなります。特にコンマの後。&lt;br /&gt;
&lt;br /&gt;
式を複数行に分割する場合は、演算子の後ではなく、演算子の前で分割します。正しい方法は次のとおりです。&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;pre class=&quot;example&quot;&gt;if (foo_this_is_long &amp;amp;&amp;amp; bar &amp;gt; win (x, y, z)
    &amp;amp;&amp;amp; remaining_condition)&lt;/pre&gt;
&lt;/blockquote&gt;
同じレベルのインデントで優先順位の異なる 2 つの演算子を使用しないようにしてください。たとえば、次のように記述しないでください。 &lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;pre class=&quot;example&quot;&gt;mode = (inmode[j] == VOIDmode
        || GET_MODE_SIZE (outmode[j]) &amp;gt; GET_MODE_SIZE (inmode[j])
        ? outmode[j] : inmode[j]);&lt;/pre&gt;
&lt;/blockquote&gt;
代わりに、インデントで入れ子が表示されるように、追加のかっこを使用します。&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;pre class=&quot;example&quot;&gt;mode = ((inmode[j] == VOIDmode
         || (GET_MODE_SIZE (outmode[j]) &amp;gt; GET_MODE_SIZE (inmode[j])))
        ? outmode[j] : inmode[j]);&lt;/pre&gt;
&lt;/blockquote&gt;
Emacs がコードを正しくインデントするように、追加のかっこを挿入します。たとえば、次のインデントは、手で行うと綺麗に見えますが、&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;pre class=&quot;example&quot;&gt;v = rup-&amp;gt;ru_utime.tv_sec*1000 + rup-&amp;gt;ru_utime.tv_usec/1000
    + rup-&amp;gt;ru_stime.tv_sec*1000 + rup-&amp;gt;ru_stime.tv_usec/1000;&lt;/pre&gt;
&lt;/blockquote&gt;
しかし、Emacsはそれを(醜く)変更します。かっこのセットを追加すると、同じように見栄えの良いものが生成され、Emacs は保持します。 &lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;pre class=&quot;example&quot;&gt;v = (rup-&amp;gt;ru_utime.tv_sec*1000 + rup-&amp;gt;ru_utime.tv_usec/1000
     + rup-&amp;gt;ru_stime.tv_sec*1000 + rup-&amp;gt;ru_stime.tv_usec/1000);
&lt;/pre&gt;
&lt;/blockquote&gt;
--- 訳注： それってEmacs固有の問題じゃ・・・ ---&lt;br /&gt;
&lt;br /&gt;
do-whileループは以下の書式が好ましいです.&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;pre class=&quot;example&quot;&gt;do
  {
    a = foo (a);
  }
while (a &amp;gt; 0);&lt;/pre&gt;
&lt;/blockquote&gt;
フォームフィード文字(control-L)(訳注: 改ページ文字のこと)を使用して、プログラムを論理的な場所 (ただし関数内では除く) のページに分割してください。ページは印刷ページに収まる必要がないため、ページの長さは関係ありません。フォームフィードは、単独で行に表示されます。&lt;br /&gt;
&lt;br /&gt;
--- 訳注： コードを印刷してた時代の名残りですかね？それともTeX用？ ---&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
「5.2 コメントでやるべきこと」&lt;br /&gt;
&lt;br /&gt;
すべてのプログラムは、それが何のためのものであるか簡単なコメントを記載する必要があります。&lt;br /&gt;
&lt;br /&gt;例: &#39;fmt - テキストの単純な塗りつぶしのためのフィルター&#39;&lt;br /&gt;
&lt;br /&gt;このコメントは、プログラムの &#39;main&#39; 関数を含むソース ファイルの先頭に記載する必要があります。&lt;br /&gt;
&lt;br /&gt;
また、各ソースファイルの先頭に、ファイル名とファイルの全体的な目的に関する1行または2行の簡単なコメントを書いてください。&lt;br /&gt;
&lt;br /&gt;
英語はすべての国のほぼすべてのプログラマが読むことができる言語ですので、英語でGNUプログラムのコメントを書いてください。英語を上手に書けない場合は、英語でコメントを書いて、他の人に書き直してもらいます。英語でコメントを書けない場合は、一緒に仕事をしてくれる人を見つけて、コメントを英語に翻訳してもらってください。&lt;br /&gt;
&lt;br /&gt;
各関数に対して、関数の動作、引数の種類、引数に使用可能な値と値の意味、使用目的を示すコメントを記載してください。C標準の型が慣習的な方法で使用されている場合は、引数宣言の意味をコメントで繰り返す必要はありません。使用に関して非標準のものがある場合(例えば、最初の文字ではなく、文字列の2番目の文字のアドレスである char * 型の引数など)、または期待どおりに動作しない値がある場合(改行を含む文字列など正しく動作する保証がない値)、それらのことを確認して記載してください。&lt;br /&gt;
&lt;br /&gt;
また、重要な戻り値がある場合は、それついても記載してください。&lt;br /&gt;
&lt;br /&gt;
--- Emacsの話なので割愛 ---&lt;br /&gt;
&lt;br /&gt;
引数名を使用して引数の値について説明すると、関数に対するコメントは非常に明確になります。&lt;br /&gt;
(C言語では)変数名自体は小文字にする必要がありますが、変数自体ではなく値について話すときは大文字で記述します。したがって、「inode」ではなく「inode の数の NODE_NUM」と記載してください。(英語では&quot;the inode
number NODE_NUM&quot;)&lt;br /&gt;
&lt;br /&gt;
読者は自分で関数名を確認することができるので、通常、関数名をコメントに記載する必要はありません。&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
コメントが長くて、関数自体が画面の一番下から出る場合は、例外が発生する可能性があります。&lt;br /&gt;
&lt;br /&gt;
--- これは古い記述ですね ---&lt;br /&gt;
&lt;br /&gt;
次のように、各静的変数にもコメントが必要です。 &lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
/* 0以外の場合は、表示内の行を与えられた値で切り捨てます。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0の場合は、切り捨てずに継続することを意味します。 */&lt;br /&gt;
int truncate_lines;&lt;/blockquote&gt;
ネストされていない短い条件 (ほんの数行) の場合を除き、すべての &#39;#endif&#39; にはコメントが必要です。コメントは、ブロックの識別を含め、終了する条件を示す必要があります。&#39;#else&#39; には、次のコードの条件とブロックの識別を説明するコメントが必要です。&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;div class=&quot;example&quot;&gt;
&lt;pre class=&quot;example&quot;&gt;#ifdef foo
  …
#else /* not foo */
  …
#endif /* not foo */
&lt;/pre&gt;
&lt;pre class=&quot;example&quot;&gt;#ifdef foo
  …
#endif /* foo */&lt;/pre&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
しかし、対照的に、&#39;#ifndef&#39;のためにこのようにコメントを書きます。&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;div class=&quot;example&quot;&gt;
&lt;pre class=&quot;example&quot;&gt;#ifndef foo
  …
#else /* foo */
  …
#endif /* foo */
&lt;/pre&gt;
&lt;pre class=&quot;example&quot;&gt;#ifndef foo
  …
#endif /* not foo */
&lt;/pre&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
-----------------------------==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
めちゃくちゃつかれたので前半はここまで、&lt;br /&gt;
後半は何年後になるかわからん。&lt;br /&gt;
&lt;br /&gt;
しかし改めて訳してみると、古くさいものの&lt;br /&gt;
結構いいことも書いてあるじゃないか・・・&lt;br /&gt;
いままでバカにしてごめんよGNU Coding Standard...&lt;br /&gt;
&lt;br /&gt;
でもあのインデント例はキモくて辛い。&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://beepcapex.blogspot.com/feeds/136308361004057699/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/25101302/136308361004057699' title='4 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/136308361004057699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/136308361004057699'/><link rel='alternate' type='text/html' href='http://beepcapex.blogspot.com/2019/11/gnu-c.html' title='GNU コーディング標準 C言語編(多分前編)'/><author><name>BeepCap</name><uri>http://www.blogger.com/profile/17116660131133624856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-x0Cb00yxbi37ByjzMfugi9YHgOVFwVa7Zx2IKbrM-DsSVC6nmKu5NI7n83OG5kHHw2T0nKjtptSSZT0Rl1G5so_Oq9eQ1yTOvaR_g7E-AKkbpfLfKy2gSc-Dy8GFYA/s220/kao_bigger.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25101302.post-182994326285730575</id><published>2018-06-27T22:30:00.000+09:00</published><updated>2018-06-27T22:30:19.645+09:00</updated><title type='text'>無敵の人なんていない</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;

&lt;DIV CLASS=&quot;navigation&quot;&gt;&lt;!--Navigation Panel--&gt; 
&lt;IMG WIDTH=&quot;26&quot; HEIGHT=&quot;24&quot; ALIGN=&quot;BOTTOM&quot; BORDER=&quot;0&quot; ALT=&quot;up&quot; SRC=&quot;up_g.png&quot;&gt; 
&lt;IMG WIDTH=&quot;63&quot; HEIGHT=&quot;24&quot; ALIGN=&quot;BOTTOM&quot; BORDER=&quot;0&quot; ALT=&quot;previous&quot; SRC=&quot;prev_g.png&quot;&gt;   
&lt;BR&gt;
&lt;BR&gt;
&lt;BR&gt;&lt;/DIV&gt;
&lt;!--End of Navigation Panel--&gt;
&lt;H1 ALIGN=&quot;CENTER&quot;&gt;無敵の人なんていない&lt;/H1&gt;
&lt;DIV CLASS=&quot;author_info&quot;&gt;

&lt;P ALIGN=&quot;CENTER&quot;&gt;&lt;STRONG&gt;beepcap&lt;/STRONG&gt;&lt;/P&gt;
&lt;P ALIGN=&quot;CENTER&quot;&gt;&lt;STRONG&gt;2018/06/27&lt;/STRONG&gt;&lt;/P&gt;
&lt;/DIV&gt;
最近殺人事件が起きて世間を騒がせている。
事件の被害者の方のご冥福を祈るばかりだが、
この事件では加害者が「40代のニート」であって、
守る物が何もないから起きたと分析する向きもあるようだ。
こういう人たちを、黒子のバスケの脅迫事件の犯人のセリフから、
「無敵の人」と呼ぶことが多くなってきた。

&lt;P&gt;
曰く、「『無敵の人』はすべてを失っているからもう何も守る必要がない、
そう社会性の根源たる法律もだ！」という理屈なわけだ。
なるほど、一理あるように見える。
すべての失って何も捨てる物がなければ、ほんのわずかなバランスで殺人の犯す、
理屈が通っているように見える。

&lt;P&gt;
が、本当にそうだろうか？

&lt;P&gt;
まず前提として、彼らはすべてを失っているだろうか？
職が無い？
友人や家族がいない？
そんな人間くさるほどいるし、それでも楽しく生きている人間も
それなりに見かけないか？
ネットの世界ではよく居るような気さえしないか？
今回の犯人も、インターネットでは暴れ者として有名だったようだ。
少なくとも彼らの居場所はインターネットにあったようだ。
「すべて」を失っているわけではないように見える。

&lt;P&gt;
また、すべてを失った人は人を殺しに行くか？という問題もある。
孤独死の件数が昨今増えているという報道があるが、
彼らとて、孤独に死ぬくらいなのだから、世間に恨みの一つや二つはあるだろう。
しかし、孤独死をしそうな人間のモラルが急激に低下したといったような...
少なくとも今回の事件につながるような類型の事件は起きていない。
半面、新幹線斧事件もそうであるように、何らかの要因と共に、
事件は発生している。
そして、これは誰しもが経験があるとは思うが、
人は世間とのつながりをすべて失ってしまったと、(それが誤解でも)
認識してしまったら、自殺してしまうのではないか？
「すべて」を失ってしまった人は、犯行を起こす動機も失ってしまうように見える。

&lt;P&gt;
僕はだから、「無敵の人」などというものはいないと考えている。
では彼らは何なのか、何が要因で「普通の人」なら考え付きもしないような、
凄惨な事件を起こせるのか。

&lt;P&gt;
僕は彼らが、「世間とのつながりが先鋭化した人たち」ではないかと予測している。
カンダタのように、細い細い蜘蛛の糸で世間とつながっている人たちだ。
今回のブロガー殺人事件では、その細い糸が「はてな」だったのではないか？

&lt;P&gt;
皆は「はてな」を凍結されただけで、殺人を犯すなんて酷いという。
しかし、もしも、人生に於ける世間との最後の繋がりが、
彼の正義や社会性のありかが「はてな」だったのだとしたら...

&lt;P&gt;
彼の行為は許されるものではない。
しかし、彼は決して「無敵の人」ではない、
さいごの砦を守る、孤独の人だったのではないだろうか。

&lt;P&gt;

&lt;H1&gt;&lt;A NAME=&quot;SECTION00010000000000000000&quot;&gt;
About this document ...&lt;/A&gt;
&lt;/H1&gt;
 &lt;STRONG&gt;無敵の人なんていない&lt;/STRONG&gt;&lt;P&gt;
This document was generated using the
&lt;A HREF=&quot;http://www.latex2html.org/&quot;&gt;&lt;STRONG&gt;LaTeX&lt;/STRONG&gt;2&lt;tt&gt;HTML&lt;/tt&gt;&lt;/A&gt; translator Version 2017.2 (Released Jan 23, 2017)
&lt;P&gt;
Copyright &amp;#169; 1993, 1994, 1995, 1996,
Nikos Drakos, 
Computer Based Learning Unit, University of Leeds.
&lt;BR&gt;
Copyright &amp;#169; 1997, 1998, 1999,
&lt;A HREF=&quot;http://www.maths.mq.edu.au/~ross/&quot;&gt;Ross Moore&lt;/A&gt;, 
Mathematics Department, Macquarie University, Sydney.
&lt;P&gt;
The command line arguments were: &lt;BR&gt;
 &lt;STRONG&gt;latex2html&lt;/STRONG&gt; &lt;TT&gt;-split 0 無敵の人なんていない.tex&lt;/TT&gt;
&lt;P&gt;
The translation was initiated on 2018-06-27
&lt;BR&gt;&lt;HR&gt;









&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://beepcapex.blogspot.com/feeds/182994326285730575/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/25101302/182994326285730575' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/182994326285730575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/182994326285730575'/><link rel='alternate' type='text/html' href='http://beepcapex.blogspot.com/2018/06/blog-post_27.html' title='無敵の人なんていない'/><author><name>BeepCap</name><uri>http://www.blogger.com/profile/17116660131133624856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-x0Cb00yxbi37ByjzMfugi9YHgOVFwVa7Zx2IKbrM-DsSVC6nmKu5NI7n83OG5kHHw2T0nKjtptSSZT0Rl1G5so_Oq9eQ1yTOvaR_g7E-AKkbpfLfKy2gSc-Dy8GFYA/s220/kao_bigger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25101302.post-8286177186502471016</id><published>2018-05-20T23:55:00.000+09:00</published><updated>2018-05-20T23:55:29.590+09:00</updated><title type='text'>ニーア・オートマタ</title><content type='html'>&lt;H1 ALIGN=&quot;CENTER&quot;&gt;ニーア・オートマタ&lt;/H1&gt;
&lt;DIV CLASS=&quot;author_info&quot;&gt;

&lt;P ALIGN=&quot;CENTER&quot;&gt;&lt;STRONG&gt;beepcap&lt;/STRONG&gt;&lt;/P&gt;
&lt;P ALIGN=&quot;CENTER&quot;&gt;&lt;STRONG&gt;2018/05/20&lt;/STRONG&gt;&lt;/P&gt;
&lt;/DIV&gt;

&lt;H1&gt;&lt;A NAME=&quot;SECTION00010000000000000000&quot;&gt;
本文&lt;/A&gt;
&lt;/H1&gt;

&lt;P&gt;
すこし長文になるかもしれないので、Twitterではなくこちらに書こうと思う。
先に言っておくが、ニーア・オートマタのネタバレを含むので、見たくなければ
ここでタブを閉じて欲しい。

&lt;P&gt;
beepcapである。

&lt;P&gt;
さて、タイトルの通りニーア・オートマタ(NieR:Automata)をプレイしての
感想を書こうと思っているわけだが、その前に断っておきたい。
まず僕はアクションゲームが余り好きではない。アクションは常に理不尽な
マップを用意しているし、なぜか限界が測りきれないキャラクターが闊歩している。
調査仕様にも体当りする以外に無かったりする。
しかも、美少女が主人公とか言うともうダメだ、なんで美少女を起用するんだ、
安心感のあるマッチョジジイにしてくれ。
などと考えている人間だ。
ニーア・オートマタにしても当時は食指が動かず、最近になってPS4のストアで
半額になっているのを見て買った。

&lt;P&gt;
さて、プレイしてみると、これがアクションゲーではなくシューティングゲーの
仲間であることがわかった。
シューティングは大好きだ。
その昔、ゲーセンで金を積んでいろんなシューティングをやってた。
偶然購入したことを感謝しつつ、ゲームを進める。
人気があるのもうなづける中々重いストーリーと、心を持たないと主人公たちに
思われている機械の村。
素晴らしゲームである。

&lt;P&gt;
Twitterでこの村が素晴らしいとツイートしたら、
みんなが「鬼畜な展開に泣くがいいさ」といった反応をしてきた。

&lt;P&gt;
悲劇と聞いて、感じていた違和感の正体がなんとなくわかった気がした。
物語の端々に感じる、「作り物の中の作り物」演出。
私が想像したこの世界の仕掛けは、この世界のEエンドより、
もう少し残酷なものだった。

&lt;P&gt;
例えば機械生命体の心は「実は人間」であり、
人の体が滅びた後の、魂の器として機械生命体が作られ、
エイリアンは狂言であり、
アンドロイドたちは、もう壊れている。
主人公たちは、その事実に気づき、何も救われない世界で延々と「元人間」を
壊し続けなければならないことを知る。
といったような話だ。

&lt;P&gt;
ほんもののエンドはもう少しだけ救いがあるので、
興味のある人はぜひプレイしてみてほしい。
最後に、これほどの素晴らしいゲームを作ってくれた人々に
感謝したい。

&lt;P&gt;

&lt;H1&gt;&lt;A NAME=&quot;SECTION00020000000000000000&quot;&gt;
About this document ...&lt;/A&gt;
&lt;/H1&gt;
 &lt;STRONG&gt;ニーア・オートマタ&lt;/STRONG&gt;&lt;P&gt;
This document was generated using the
&lt;A HREF=&quot;http://www.latex2html.org/&quot;&gt;&lt;STRONG&gt;LaTeX&lt;/STRONG&gt;2&lt;tt&gt;HTML&lt;/tt&gt;&lt;/A&gt; translator Version 2017.2 (Released Jan 23, 2017)
&lt;P&gt;
Copyright &amp;#169; 1993, 1994, 1995, 1996,
Nikos Drakos, 
Computer Based Learning Unit, University of Leeds.
&lt;BR&gt;
Copyright &amp;#169; 1997, 1998, 1999,
&lt;A HREF=&quot;http://www.maths.mq.edu.au/~ross/&quot;&gt;Ross Moore&lt;/A&gt;, 
Mathematics Department, Macquarie University, Sydney.
&lt;P&gt;
The command line arguments were: &lt;BR&gt;
 &lt;STRONG&gt;latex2html&lt;/STRONG&gt; &lt;TT&gt;-split 0 diary180520.tex&lt;/TT&gt;
&lt;P&gt;
The translation was initiated on 2018-05-20
&lt;BR&gt;&lt;HR&gt;</content><link rel='replies' type='application/atom+xml' href='http://beepcapex.blogspot.com/feeds/8286177186502471016/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/25101302/8286177186502471016' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/8286177186502471016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/8286177186502471016'/><link rel='alternate' type='text/html' href='http://beepcapex.blogspot.com/2018/05/blog-post.html' title='ニーア・オートマタ'/><author><name>BeepCap</name><uri>http://www.blogger.com/profile/17116660131133624856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-x0Cb00yxbi37ByjzMfugi9YHgOVFwVa7Zx2IKbrM-DsSVC6nmKu5NI7n83OG5kHHw2T0nKjtptSSZT0Rl1G5so_Oq9eQ1yTOvaR_g7E-AKkbpfLfKy2gSc-Dy8GFYA/s220/kao_bigger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25101302.post-4236964014688405899</id><published>2018-03-20T09:28:00.001+09:00</published><updated>2018-03-20T09:28:29.644+09:00</updated><title type='text'>SNS時代のブログとは</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
SNS時代のブログとはみたいなクサい記事を書いてみたくなったんだよ。&lt;br /&gt;beepcapなんだよ。&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
さて、昨今SNSが大変に隆盛で、Twitterが無くなったらMastodonだなんて言われてる。&lt;br /&gt;
ブログに戻るなんて話は全然出てこない。 &lt;br /&gt;
SNSがマイクロブログなんて呼ばれていたのも過去の話のようだ。&lt;br /&gt;
そんな中、昔から継続して日記を書いている人たちはまだブログを使ってる。&lt;br /&gt;
でも我々のように思いつきで記事を書いていた人間はどんどんSNSで思いつきが吐き出せるからブログは廃れる一方だ・・・&lt;br /&gt;
というのが風潮の分析だ。&lt;br /&gt;
&lt;br /&gt;
でも、ブログってSNSとはだいぶ違う。&lt;br /&gt;
文字数の制限などの問題じゃなくて、SNSとブログは反応のあり方が違う。&lt;br /&gt;
&lt;br /&gt;
SNSはふぁぼやRTで誰かが何かしらの反応をしていることがすぐわかる。&lt;br /&gt;
だから、短期間でウケの良い発言が多くなる。&lt;br /&gt;
意識しようがしまいが、自分のTLにウケが良い、同じ方向の話題が多くなる。&lt;br /&gt;
ある意味でキャラ付けが濃くなるというべきか。&lt;br /&gt;
&lt;br /&gt;
でも、一方でキャラじゃない自分というのがいる。&lt;br /&gt;
&lt;br /&gt;
俺だってたまにはライブハウスでメタルやハウスミュージックが聞きたいし、若い頃の悪い仲間がいれば原宿でナンパしたいし、エロビデオを友人の家に持ち込んでみんなでゲラゲラ笑ってみたい。&lt;br /&gt;
&lt;br /&gt;
でもそういうキャラクターはSNSでは出にくい。&lt;br /&gt;
その方面は自分にとって知識も経験も、読者層も薄いからだ。&lt;br /&gt;
ニワカとしての意見をSNSでは書きにくい。&lt;br /&gt;
&lt;br /&gt;
ブログではどうなのか。&lt;br /&gt;
&lt;br /&gt;
ブログは閉じてる。&lt;br /&gt;
作者が書いて、読者がコメントを書くスタイルは、すくなくとも読者と作者が対等じゃあない。&lt;br /&gt;
だから、どんなにチープで悲惨で見る価値のないこういう記事を書いても、&lt;br /&gt;
誰からも文句を言われないし、言われても消すことが出来る。&lt;br /&gt;
私は私のブログの王様で（もっと強大な管理会社ってのもいるけど、そこは連合王国みたいなもんだから・・・）私の権力の及ぶ範囲は絶大なのだ。&lt;br /&gt;
&lt;br /&gt;
だから、本当に変なことも書ける。&lt;br /&gt;
誰の反応も気にしなくても良いのだ。 &lt;br /&gt;
&lt;br /&gt;
ねえみんな、疲れたらブログに戻ってきてもいいんだよ。&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://beepcapex.blogspot.com/feeds/4236964014688405899/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/25101302/4236964014688405899' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/4236964014688405899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/4236964014688405899'/><link rel='alternate' type='text/html' href='http://beepcapex.blogspot.com/2018/03/sns.html' title='SNS時代のブログとは'/><author><name>BeepCap</name><uri>http://www.blogger.com/profile/17116660131133624856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-x0Cb00yxbi37ByjzMfugi9YHgOVFwVa7Zx2IKbrM-DsSVC6nmKu5NI7n83OG5kHHw2T0nKjtptSSZT0Rl1G5so_Oq9eQ1yTOvaR_g7E-AKkbpfLfKy2gSc-Dy8GFYA/s220/kao_bigger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25101302.post-2541938410655892422</id><published>2017-12-20T22:10:00.000+09:00</published><updated>2017-12-20T22:20:49.011+09:00</updated><title type='text'>邪悪なxonsh(の予定だったんだけどなぁ・・・)</title><content type='html'>&lt;H1 ALIGN=&quot;CENTER&quot;&gt;Xonshを邪悪に使おうとしたが失敗した話から&lt;/H1&gt;
&lt;DIV CLASS=&quot;author_info&quot;&gt;

&lt;P ALIGN=&quot;CENTER&quot;&gt;&lt;STRONG&gt;beepcap&lt;/STRONG&gt;&lt;/P&gt;
&lt;P ALIGN=&quot;CENTER&quot;&gt;&lt;STRONG&gt;2017/12/20&lt;/STRONG&gt;&lt;/P&gt;
&lt;/DIV&gt;

&lt;H1&gt;&lt;A NAME=&quot;SECTION00010000000000000000&quot;&gt;
はじめに&lt;/A&gt;
&lt;/H1&gt;
10日ぶりである。&lt;br&gt;
この記事は&lt;a href=&quot;https://qiita.com/advent-calendar/2017/xonsh&quot;&gt;Xonsh Advent Calendar 2017&lt;/a&gt;の20日目だ。
&lt;BR&gt;
&lt;BR&gt;
&lt;BR&gt;
Xonshに対する解説は他の人がたくさん書いているので、
この記事では邪悪な使い方を書こうと思っていた。
まず僕の用途だとXonshはとてもいいものだけど、
ちょっとまだ実用に至ってない。
zshのほうがちょっとだけ便利だ。
補間の学習具合や、historyに溜め込んだコマンドの記録が僕を拘束する。
historyを移植してやろうと思ったが、Xonshの履歴はちょっとばかし
扱いがめんどくさかったんでやめた。
そんなわけで気合が入らないなか、試してみたことの
記録を展開していこうと思う。
なお、この記事はXonsh 0.5.12をベースに書いている。
もしも改善されていたり、間違っていたらどんどん指摘してくれ。
Twitterの@beepcapで待ってるぞ。

&lt;H1&gt;&lt;A NAME=&quot;SECTION00020000000000000000&quot;&gt;
最初の不満は&lt;/A&gt;
&lt;/H1&gt;
最初の不満はリダイレクトにあった。
Xonshはその性質上Pythonで書いた関数をシェル上で利用できるが、
これをシェルの中の人に渡すにはaliasを使わねばならず、
そうすると折角関数で作ったのに引数が使えずという苦しみが出てくるのだ。
もちろん、そこはこう・・・パラメータを与えてやればいい

&lt;DIV CLASS=&quot;alltt&quot; ALIGN=&quot;LEFT&quot;&gt;
&lt;TT&gt;
 
&lt;BR&gt;$ echo &#39;hogehoge&#39; | fuga &amp;gt; out.txt
&lt;BR&gt;
&lt;BR&gt;&lt;/TT&gt;
&lt;/DIV&gt;

・・・・・・
いやいや正気か？
どう考えてもこうやりたい&lt;A NAME=&quot;tex2html1&quot;
  HREF=&quot;#foot28&quot;&gt;&lt;SUP&gt;&lt;IMG  ALIGN=&quot;BOTTOM&quot; BORDER=&quot;1&quot; ALT=&quot;[*]&quot; SRC=&quot;footnote.png&quot;&gt;&lt;/SUP&gt;&lt;/A&gt;
&lt;DIV CLASS=&quot;alltt&quot; ALIGN=&quot;LEFT&quot;&gt;
&lt;TT&gt;
 
&lt;BR&gt;$ fuga(&#39;hogehoge&#39;) &amp;gt; out.txt
&lt;BR&gt;
&lt;BR&gt;&lt;/TT&gt;
&lt;/DIV&gt;

そこで考えた。
「aliasを使うから引数を付けられないのである」
「！そうだaliasなしでリダイレクト制御すればよくね！？」
Pythonのコードをこうすれば、&amp;gt;を再現することが出来る。

&lt;DIV CLASS=&quot;alltt&quot; ALIGN=&quot;LEFT&quot;&gt;
&lt;TT&gt;
 
&lt;BR&gt;
class fuga:
&lt;BR&gt;&amp;nbsp;&amp;nbsp;gtxt = &amp;#34;&quot;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;def __init__(self, in_t):
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fuga.gtxt = in_t
&lt;BR&gt;&amp;nbsp;&amp;nbsp;def __gt__(self, other):
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;f = open(other, &amp;#34;w&amp;#34;)
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;f.write(fuga.gtxt)
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;f.close()
&lt;BR&gt;
&lt;BR&gt;$ fuga(&amp;#34;hogehoge&amp;#34;) &amp;gt; &amp;#34;out.txt&amp;#34; 
&lt;BR&gt;
&lt;BR&gt;&lt;/TT&gt;
&lt;/DIV&gt;

&lt;P&gt;
Oh!Yes!!!
&lt;BR&gt;ほんのちょっとばかし&quot;が増えてしまったが、
おおよそ思い通りではないか？！・・・・・・
・・・うん。そうなんだ。
Pythonは文字列を扱うときには&quot;&quot;が必須で、これを外せなかったんだ・・・
悲しい。
挫折した。
&lt;A NAME=&quot;tex2html2&quot;
  HREF=&quot;#foot33&quot;&gt;&lt;SUP&gt;&lt;IMG  ALIGN=&quot;BOTTOM&quot; BORDER=&quot;1&quot; ALT=&quot;[*]&quot; SRC=&quot;footnote.png&quot;&gt;&lt;/SUP&gt;&lt;/A&gt;aliasを使う方法に対するメリットがあるとすれば、渡されるオブジェクトが
ファイル名でなくても良いという点だろうか。
例えば、

&lt;P&gt;

&lt;DIV CLASS=&quot;alltt&quot; ALIGN=&quot;LEFT&quot;&gt;
&lt;TT&gt;
 
&lt;BR&gt;$ fuga(&amp;#34;hogehoge&amp;#34;) &amp;gt; &amp;#34;twitter&amp;#34;
&lt;BR&gt;
&lt;BR&gt;&lt;/TT&gt;
&lt;/DIV&gt;

こういう使い方も考えられるわけだ。
ツイートするのが簡単になる。
&lt;A NAME=&quot;tex2html3&quot;
  HREF=&quot;#foot36&quot;&gt;&lt;SUP&gt;&lt;IMG  ALIGN=&quot;BOTTOM&quot; BORDER=&quot;1&quot; ALT=&quot;[*]&quot; SRC=&quot;footnote.png&quot;&gt;&lt;/SUP&gt;&lt;/A&gt;
&lt;BR&gt;がまぁ、テキストの指定がダサいので失敗とする。

&lt;P&gt;

&lt;H1&gt;&lt;A NAME=&quot;SECTION00030000000000000000&quot;&gt;
xonshの秘密をあかしてやろうとしたんだが・・・&lt;/A&gt;
&lt;/H1&gt;
xonshを今回いじるにあたって、自分に一つのルールを課した。
それは、「ソースコードを見ない」ということである。
我々は開発者であり、しかもxonshを喜んで扱うような人間であるからして
Pythonには詳しい&lt;A NAME=&quot;tex2html4&quot;
  HREF=&quot;#foot38&quot;&gt;&lt;SUP&gt;&lt;IMG  ALIGN=&quot;BOTTOM&quot; BORDER=&quot;1&quot; ALT=&quot;[*]&quot; SRC=&quot;footnote.png&quot;&gt;&lt;/SUP&gt;&lt;/A&gt;。
その我々がソースコードを見ながらhackすれば、そりゃ何でも出来てしまうはずだ。
あくまでも、プロプライエタリ・ソフトウェアに対するように、
ユーザに開示されている情報のみで解析しなければ、面白くないだろう。

&lt;P&gt;
そんなわけでxonshをポチポチ遊んでいたのだが、
Twitterでばんくし(@vaaaaanquish)と会話している時に
こんな発見があった。

&lt;P&gt;
&lt;blockquote class=&quot;twitter-tweet&quot; data-lang=&quot;ja&quot;&gt;&lt;p lang=&quot;ja&quot; dir=&quot;ltr&quot;&gt;[del x for x in dir()]でええやろと思ったけど、Xonsh自体が死んでダメだった。ネタだ。&lt;/p&gt;&amp;mdash; ばんくし (@vaaaaanquish) &lt;a href=&quot;https://twitter.com/vaaaaanquish/status/933995346748891137?ref_src=twsrc%5Etfw&quot;&gt;2017年11月24日&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;


&lt;P&gt;
Xonshは色々と強力だが、長くつけっぱなしで使用していると
ゴミが多くなってくる。
これはzshなども同じはずなのだが、あいつらはそれが見えないので
なんとなく気にされてない。
しかしXonshはPythonなので、dir()を呼べば一覧が出てくる。
もちろんdelで解放することも出来る・・・はずだった。

&lt;P&gt;

&lt;DIV CLASS=&quot;alltt&quot; ALIGN=&quot;LEFT&quot;&gt;
&lt;TT&gt;
 
&lt;BR&gt;$ for i in dir():
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;del i
&lt;BR&gt;
&lt;BR&gt;&lt;/TT&gt;
&lt;/DIV&gt;

&lt;P&gt;
このコードを実行してみてほしい。
バージョンによってコードは予想外の動きをする。
例えば私の手元の0.5.12では、「何も起こらない」。
意味が分かるだろうか？
dir()内の要素が消せないのだ。
ところがどっこい、例えば 

&lt;P&gt;

&lt;DIV CLASS=&quot;alltt&quot; ALIGN=&quot;LEFT&quot;&gt;
&lt;TT&gt;
 
&lt;BR&gt;$ del __name__
&lt;BR&gt;
&lt;BR&gt;&lt;/TT&gt;
&lt;/DIV&gt;

では、ちゃんとname要素が消えてなくなるのである。
どうもbuiltinsを消そうとするとなにか強制力が働いて、
処理が中断されるようなのだ。
実際、dir()を使った解放コードはある時まで
&lt;A NAME=&quot;tex2html5&quot;
  HREF=&quot;#foot43&quot;&gt;&lt;SUP&gt;&lt;IMG  ALIGN=&quot;BOTTOM&quot; BORDER=&quot;1&quot; ALT=&quot;[*]&quot; SRC=&quot;footnote.png&quot;&gt;&lt;/SUP&gt;&lt;/A&gt;Xonshの本体を巻き込んで死亡していた。

&lt;P&gt;
このbuiltins、何か秘密が隠れているに違いない。

&lt;P&gt;
調査のために、以下のように確認してみる。
&lt;A NAME=&quot;tex2html6&quot;
  HREF=&quot;#foot44&quot;&gt;&lt;SUP&gt;&lt;IMG  ALIGN=&quot;BOTTOM&quot; BORDER=&quot;1&quot; ALT=&quot;[*]&quot; SRC=&quot;footnote.png&quot;&gt;&lt;/SUP&gt;&lt;/A&gt;
&lt;P&gt;

&lt;DIV CLASS=&quot;alltt&quot; ALIGN=&quot;LEFT&quot;&gt;
&lt;TT&gt;
 
&lt;BR&gt;$ dir(__builtins__)
&lt;BR&gt;
&lt;BR&gt;&lt;/TT&gt;
&lt;/DIV&gt;

ふむふむ、ちょっと中身は違うが標準的なbuiltinsの要素を含んでいそうだ・・・
オブジェクトの名前でも確認してやろうかな・・・

&lt;P&gt;

&lt;DIV CLASS=&quot;alltt&quot; ALIGN=&quot;LEFT&quot;&gt;
&lt;TT&gt;
 
&lt;BR&gt;$ print(__builtins__.__name__)
&lt;BR&gt;
&lt;BR&gt;
AttributeError: &#39;dict&#39; object has no attribute &#39;__name__&#39; 
&lt;BR&gt;
&lt;BR&gt;&lt;/TT&gt;
&lt;/DIV&gt;

は？

&lt;P&gt;
え？いやいや、オブジェクトならそれが引けないって致命的でしょ・・・

&lt;P&gt;
ちょっとまて、あ、手が滑った

&lt;P&gt;

&lt;DIV CLASS=&quot;alltt&quot; ALIGN=&quot;LEFT&quot;&gt;
&lt;TT&gt;
 
&lt;BR&gt;$ print(__builtins__)
&lt;BR&gt;
&lt;BR&gt;&#39;__name__&#39;: &#39;builtins&#39;, &#39;__doc__&#39;: &amp;#34;Built-in functions, 
&lt;BR&gt;&amp;nbsp;exceptions, and other objects.\n\nNoteworthy: None is the `nil&#39; object; 
&lt;BR&gt;&amp;nbsp;Ellipsis represents `...&#39; in slices.&amp;#34;, &#39;__package__&#39;: &amp;rdquo;, &#39;__loader__&#39;: 
&lt;BR&gt;&amp;nbsp;&amp;lt;class &#39;_frozen_importlib.BuiltinImpor
&lt;BR&gt;...略
&lt;BR&gt;&amp;nbsp;
&lt;BR&gt;
&lt;BR&gt;&lt;/TT&gt;
&lt;/DIV&gt;

お、おい・・・お前これ・・・
dictじゃねーか！！！！！！！！！！！！！！！！！！！

&lt;P&gt;
そう、そういうことなのだ。
Xonshはbuiltinsの中身をまるごと置き換えていたのだ。
しかも、built-inモジュールではなく、辞書型のオブジェクトとして。
この中身は大変面白いので、みんなもぜひいじってみてほしい。
例えば、

&lt;P&gt;

&lt;DIV CLASS=&quot;alltt&quot; ALIGN=&quot;LEFT&quot;&gt;
&lt;TT&gt;
 
&lt;BR&gt;$ __builtins__[&#39;testtxt&#39;] = &amp;#34;test text.&amp;#34;
&lt;BR&gt;$ testtxt
&lt;BR&gt;&#39;test text.&#39; 
&lt;BR&gt;
&lt;BR&gt;&lt;/TT&gt;
&lt;/DIV&gt;

といった感じである。
aliasなどの定義もこの中にある。

&lt;P&gt;
が、時間不足でこの遊びも失敗した。
subprocessを利用している処理を一部置き換えることには成功したのだが、
まだ、根幹の定義済み命令を置き換えると、xonshがハングアップしてしまう。
&lt;A NAME=&quot;tex2html7&quot;
  HREF=&quot;#foot54&quot;&gt;&lt;SUP&gt;&lt;IMG  ALIGN=&quot;BOTTOM&quot; BORDER=&quot;1&quot; ALT=&quot;[*]&quot; SRC=&quot;footnote.png&quot;&gt;&lt;/SUP&gt;&lt;/A&gt;これでは大して悪いことに使えない。

&lt;P&gt;
ということで、失敗である。

&lt;P&gt;

&lt;H1&gt;&lt;A NAME=&quot;SECTION00040000000000000000&quot;&gt;
イカロスの翼&lt;/A&gt;
&lt;/H1&gt;
神話の時代にイカロスは翼を作って飛び立ったが、
太陽の熱に焼かれて翼が壊れ、落下して死んだそうだ。
あれから得られる教訓は、「パワーが足りない」である。
なぜロケット推進にしなかったのか。

&lt;P&gt;
そんなわけで、xonshでも処理するにパワーが足りない時がある。
パワーといえばマルチプロセスだ！！！
しかし、bashやzshのように、pipeでつなげばプロセスが起きたり、
xargsを使った今流行りのhackも使えない。
Pythonにはmultiprocessing()があるが、
CPythonがベースのxonshではGILがある。
性能への影響がどの程度とかそういうの関係なく嫌だ。
Cとの結合をしようとしたらGILが働く設計にしとけばよかったじゃんか
&lt;A NAME=&quot;tex2html8&quot;
  HREF=&quot;#foot56&quot;&gt;&lt;SUP&gt;&lt;IMG  ALIGN=&quot;BOTTOM&quot; BORDER=&quot;1&quot; ALT=&quot;[*]&quot; SRC=&quot;footnote.png&quot;&gt;&lt;/SUP&gt;&lt;/A&gt;
&lt;P&gt;
ということで、os.fork()を使うことにした。

&lt;P&gt;
fork()を使用したマルチプロセス化の問題点として
fork()は子と親でメモリ以外の資源を共有する、という点が挙げられる。
例えばxonshで

&lt;P&gt;

&lt;DIV CLASS=&quot;alltt&quot; ALIGN=&quot;LEFT&quot;&gt;
&lt;TT&gt;
 
&lt;BR&gt;$ import os
&lt;BR&gt;$ os.fork()
&lt;BR&gt;
&lt;BR&gt;&lt;/TT&gt;
&lt;/DIV&gt;

とやると、とんでもないことになる。
入出力が多重化し、まともに入力を受け付けなくなるだけではなく、
表示も二重に出て、有り体に言えばバグる。
&lt;A NAME=&quot;tex2html9&quot;
  HREF=&quot;#foot59&quot;&gt;&lt;SUP&gt;&lt;IMG  ALIGN=&quot;BOTTOM&quot; BORDER=&quot;1&quot; ALT=&quot;[*]&quot; SRC=&quot;footnote.png&quot;&gt;&lt;/SUP&gt;&lt;/A&gt;そして、親プロセスを終わらせたが最後、ゾンビと化した子供は
エラーを吐き続けターミナルを埋め尽くすのである。

&lt;P&gt;
何が悪いのか。
xonshはターミナルの上で動くCUIプログラムなので、
ターミナルソフトとの通信には当然、stdin, stdoutを利用している。
fork()するということは、これらを複数のプロセスで共有してしまうことになる。

&lt;P&gt;
ここで、経験の多い人はこう思うだろう。

&lt;P&gt;
「stdinとstdoutを閉じればいいんだよ馬鹿だなぁ」

&lt;P&gt;
やってみよう。

&lt;P&gt;

&lt;DIV CLASS=&quot;alltt&quot; ALIGN=&quot;LEFT&quot;&gt;
&lt;TT&gt;
 
&lt;BR&gt;$ import sys
&lt;BR&gt;$ sys.stdin.close()
&lt;BR&gt;
&lt;BR&gt;&lt;/TT&gt;
&lt;/DIV&gt;

&lt;P&gt;
どうなっただろうか。
おそらく例外が発生して/bin/shへfallbackされたのではないだろうか？
コードを見ないルールなので、これは予測だが、
トレースバックを見るにどうやらstdinに対してxonshはポーリングを掛けており、
これが閉じられてしまうケースを想定していないようなのだ。
Oh...じゃあfork()しても、stdinをclose()した段階で、
プロセス落ちちゃうじゃん。

&lt;P&gt;
ところが、ここに光明が見える。

&lt;P&gt;

&lt;DIV CLASS=&quot;alltt&quot; ALIGN=&quot;LEFT&quot;&gt;
&lt;TT&gt;
 
&lt;BR&gt;$ import sys
&lt;BR&gt;$ sys.stdout.close()
&lt;BR&gt;
&lt;BR&gt;&lt;/TT&gt;
&lt;/DIV&gt;

&lt;P&gt;
どうなっただろうか？
何も起こらない？
ではこうして見てほしい。

&lt;P&gt;

&lt;DIV CLASS=&quot;alltt&quot; ALIGN=&quot;LEFT&quot;&gt;
&lt;TT&gt;
 
&lt;BR&gt;$ import sys
&lt;BR&gt;$ sys.stdout
&lt;BR&gt;
&lt;BR&gt;&lt;/TT&gt;
&lt;/DIV&gt;

&lt;P&gt;
お分かりだろうか。
そう、このstdoutは_ioに属していないのだ。
stdoutが別のclassに差し替えられているということは、
同じことをstdinにも施してやればいい。
無害なインタフェースクラスを作り、stdoutとstdinを差し替えてやればオッ！

&lt;P&gt;
・・・

&lt;P&gt;
ところが、そうは行かなかったのである・・・。

&lt;P&gt;
解析中にトレースバックで見たのだが・・・

&lt;P&gt;

&lt;DIV CLASS=&quot;alltt&quot; ALIGN=&quot;LEFT&quot;&gt;
&lt;TT&gt;
 
&lt;BR&gt;$ import os
&lt;BR&gt;$ os.close(1)
&lt;BR&gt;
&lt;BR&gt;&lt;/TT&gt;
&lt;/DIV&gt;

&lt;P&gt;
これ&lt;A NAME=&quot;tex2html10&quot;
  HREF=&quot;#foot68&quot;&gt;&lt;SUP&gt;&lt;IMG  ALIGN=&quot;BOTTOM&quot; BORDER=&quot;1&quot; ALT=&quot;[*]&quot; SRC=&quot;footnote.png&quot;&gt;&lt;/SUP&gt;&lt;/A&gt;をやって出てくる
トレースバックに、
あろうことか

&lt;P&gt;

&lt;DIV CLASS=&quot;alltt&quot; ALIGN=&quot;LEFT&quot;&gt;
&lt;TT&gt;
 
&lt;BR&gt;&amp;nbsp;&amp;nbsp;File &amp;#34;/usr/lib/python3/dist-packages/xonsh/__amalgam__.py&amp;#34;, 
&lt;BR&gt;&amp;nbsp;&amp;nbsp;line 15626, in settitle
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;with open(1, &#39;wb&#39;, closefd=False) as f:
&lt;BR&gt;
&lt;BR&gt;&lt;/TT&gt;
&lt;/DIV&gt;
fuxx!!!
オイオイオイオイ、その使い方は無いだろオイオイ！

&lt;P&gt;
stdoutをですね！ダイレクトにですね！
叩いてるコードがいるんですね！！！

&lt;P&gt;
俺の言えた義理じゃないが邪悪すぎやしませんかね？

&lt;P&gt;
ということで、いまだに俺はXonshを使ってfork()をうまく使うことが出来ない。
だれか助けてくれ。

&lt;P&gt;

&lt;H1&gt;&lt;A NAME=&quot;SECTION00050000000000000000&quot;&gt;
最後に&lt;/A&gt;
&lt;/H1&gt;
新たなおもちゃを手に入れたと思って遊んでいたが、成果だけが出ていなかった。
皆さまはこのような悪い大人になってはいけませんよ？

&lt;P&gt;
それではまた。

&lt;P&gt;

&lt;H1&gt;&lt;A NAME=&quot;SECTION00060000000000000000&quot;&gt;
About this document ...&lt;/A&gt;
&lt;/H1&gt;
 &lt;STRONG&gt;Xonshを邪悪に使おうとしたが失敗した話から&lt;/STRONG&gt;&lt;P&gt;
This document was generated using the
&lt;A HREF=&quot;http://www.latex2html.org/&quot;&gt;&lt;STRONG&gt;LaTeX&lt;/STRONG&gt;2&lt;tt&gt;HTML&lt;/tt&gt;&lt;/A&gt; translator Version 2017.2 (Released Jan 23, 2017)
&lt;P&gt;
Copyright &amp;#169; 1993, 1994, 1995, 1996,
Nikos Drakos, 
Computer Based Learning Unit, University of Leeds.
&lt;BR&gt;
Copyright &amp;#169; 1997, 1998, 1999,
&lt;A HREF=&quot;http://www.maths.mq.edu.au/~ross/&quot;&gt;Ross Moore&lt;/A&gt;, 
Mathematics Department, Macquarie University, Sydney.
&lt;P&gt;
The command line arguments were: &lt;BR&gt;
 &lt;STRONG&gt;latex2html&lt;/STRONG&gt; &lt;TT&gt;-split 0 xonsh.tex&lt;/TT&gt;
&lt;P&gt;
The translation was initiated on 2017-12-20
&lt;BR&gt;&lt;HR&gt;&lt;H4&gt;Footnotes&lt;/H4&gt;
&lt;DL&gt;
&lt;DT&gt;&lt;A NAME=&quot;foot28&quot;&gt;...
どう考えてもこうやりたい&lt;/A&gt;&lt;A
 HREF=&quot;xonsh.html#tex2html1&quot;&gt;&lt;SUP&gt;&lt;IMG  ALIGN=&quot;BOTTOM&quot; BORDER=&quot;1&quot; ALT=&quot;[*]&quot; SRC=&quot;footnote.png&quot;&gt;&lt;/SUP&gt;&lt;/A&gt;&lt;/DT&gt;
&lt;DD&gt;これ実は出来るよって情報求む

&lt;/DD&gt;
&lt;DT&gt;&lt;A NAME=&quot;foot33&quot;&gt;...
挫折した。&lt;/A&gt;&lt;A
 HREF=&quot;xonsh.html#tex2html2&quot;&gt;&lt;SUP&gt;&lt;IMG  ALIGN=&quot;BOTTOM&quot; BORDER=&quot;1&quot; ALT=&quot;[*]&quot; SRC=&quot;footnote.png&quot;&gt;&lt;/SUP&gt;&lt;/A&gt;&lt;/DT&gt;
&lt;DD&gt;これも出来るなら教えてほしいと思うが・・・いやこれは無理やろ

&lt;/DD&gt;
&lt;DT&gt;&lt;A NAME=&quot;foot36&quot;&gt;...
ツイートするのが簡単になる。&lt;/A&gt;&lt;A
 HREF=&quot;xonsh.html#tex2html3&quot;&gt;&lt;SUP&gt;&lt;IMG  ALIGN=&quot;BOTTOM&quot; BORDER=&quot;1&quot; ALT=&quot;[*]&quot; SRC=&quot;footnote.png&quot;&gt;&lt;/SUP&gt;&lt;/A&gt;&lt;/DT&gt;
&lt;DD&gt;ほんとか？tweet()みたいな関数用意しとけばいいだけじゃね？

&lt;/DD&gt;
&lt;DT&gt;&lt;A NAME=&quot;foot38&quot;&gt;...
Pythonには詳しい&lt;/A&gt;&lt;A
 HREF=&quot;xonsh.html#tex2html4&quot;&gt;&lt;SUP&gt;&lt;IMG  ALIGN=&quot;BOTTOM&quot; BORDER=&quot;1&quot; ALT=&quot;[*]&quot; SRC=&quot;footnote.png&quot;&gt;&lt;/SUP&gt;&lt;/A&gt;&lt;/DT&gt;
&lt;DD&gt;そんな気がする

&lt;/DD&gt;
&lt;DT&gt;&lt;A NAME=&quot;foot43&quot;&gt;...
実際、dir()を使った解放コードはある時まで&lt;/A&gt;&lt;A
 HREF=&quot;xonsh.html#tex2html5&quot;&gt;&lt;SUP&gt;&lt;IMG  ALIGN=&quot;BOTTOM&quot; BORDER=&quot;1&quot; ALT=&quot;[*]&quot; SRC=&quot;footnote.png&quot;&gt;&lt;/SUP&gt;&lt;/A&gt;&lt;/DT&gt;
&lt;DD&gt;バージョン控えておかなかったんだよなぁ

&lt;/DD&gt;
&lt;DT&gt;&lt;A NAME=&quot;foot44&quot;&gt;...調査のために、以下のように確認してみる。
&lt;/A&gt;&lt;A
 HREF=&quot;xonsh.html#tex2html6&quot;&gt;&lt;SUP&gt;&lt;IMG  ALIGN=&quot;BOTTOM&quot; BORDER=&quot;1&quot; ALT=&quot;[*]&quot; SRC=&quot;footnote.png&quot;&gt;&lt;/SUP&gt;&lt;/A&gt;&lt;/DT&gt;
&lt;DD&gt;Pythonにおいては未知のオブジェクトを調べる標準的な手法だ

&lt;/DD&gt;
&lt;DT&gt;&lt;A NAME=&quot;foot54&quot;&gt;...
まだ、根幹の定義済み命令を置き換えると、xonshがハングアップしてしまう。&lt;/A&gt;&lt;A
 HREF=&quot;xonsh.html#tex2html7&quot;&gt;&lt;SUP&gt;&lt;IMG  ALIGN=&quot;BOTTOM&quot; BORDER=&quot;1&quot; ALT=&quot;[*]&quot; SRC=&quot;footnote.png&quot;&gt;&lt;/SUP&gt;&lt;/A&gt;&lt;/DT&gt;
&lt;DD&gt;なにやら新しいバージョンで試したら、今度はハングアップしなくなっているのかな？これは期待が持てる

&lt;/DD&gt;
&lt;DT&gt;&lt;A NAME=&quot;foot56&quot;&gt;...
Cとの結合をしようとしたらGILが働く設計にしとけばよかったじゃんか&lt;/A&gt;&lt;A
 HREF=&quot;xonsh.html#tex2html8&quot;&gt;&lt;SUP&gt;&lt;IMG  ALIGN=&quot;BOTTOM&quot; BORDER=&quot;1&quot; ALT=&quot;[*]&quot; SRC=&quot;footnote.png&quot;&gt;&lt;/SUP&gt;&lt;/A&gt;&lt;/DT&gt;
&lt;DD&gt;愚痴

&lt;/DD&gt;
&lt;DT&gt;&lt;A NAME=&quot;foot59&quot;&gt;...
表示も二重に出て、有り体に言えばバグる。&lt;/A&gt;&lt;A
 HREF=&quot;xonsh.html#tex2html9&quot;&gt;&lt;SUP&gt;&lt;IMG  ALIGN=&quot;BOTTOM&quot; BORDER=&quot;1&quot; ALT=&quot;[*]&quot; SRC=&quot;footnote.png&quot;&gt;&lt;/SUP&gt;&lt;/A&gt;&lt;/DT&gt;
&lt;DD&gt;xonshのバグではないと思うけど

&lt;/DD&gt;
&lt;DT&gt;&lt;A NAME=&quot;foot68&quot;&gt;...これ&lt;/A&gt;&lt;A
 HREF=&quot;xonsh.html#tex2html10&quot;&gt;&lt;SUP&gt;&lt;IMG  ALIGN=&quot;BOTTOM&quot; BORDER=&quot;1&quot; ALT=&quot;[*]&quot; SRC=&quot;footnote.png&quot;&gt;&lt;/SUP&gt;&lt;/A&gt;&lt;/DT&gt;
&lt;DD&gt;stdoutを無理やり止めようとしたのだ

&lt;/DD&gt;
&lt;/DL&gt;
</content><link rel='replies' type='application/atom+xml' href='http://beepcapex.blogspot.com/feeds/2541938410655892422/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/25101302/2541938410655892422' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/2541938410655892422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/2541938410655892422'/><link rel='alternate' type='text/html' href='http://beepcapex.blogspot.com/2017/12/xonsh.html' title='邪悪なxonsh(の予定だったんだけどなぁ・・・)'/><author><name>BeepCap</name><uri>http://www.blogger.com/profile/17116660131133624856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-x0Cb00yxbi37ByjzMfugi9YHgOVFwVa7Zx2IKbrM-DsSVC6nmKu5NI7n83OG5kHHw2T0nKjtptSSZT0Rl1G5so_Oq9eQ1yTOvaR_g7E-AKkbpfLfKy2gSc-Dy8GFYA/s220/kao_bigger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25101302.post-2144058519658200702</id><published>2017-12-10T22:42:00.002+09:00</published><updated>2017-12-10T22:57:19.732+09:00</updated><title type='text'>web スクレイピング隠蔽技術</title><content type='html'>&lt;H1 ALIGN=&quot;CENTER&quot;&gt;web スクレイピング隠蔽技術&lt;/H1&gt;
&lt;DIV CLASS=&quot;author_info&quot;&gt;

&lt;P ALIGN=&quot;CENTER&quot;&gt;&lt;STRONG&gt;beepcap&lt;/STRONG&gt;&lt;/P&gt;
&lt;P ALIGN=&quot;CENTER&quot;&gt;&lt;STRONG&gt;2017/12/10&lt;/STRONG&gt;&lt;/P&gt;
&lt;/DIV&gt;

&lt;H1&gt;&lt;A NAME=&quot;SECTION00010000000000000000&quot;&gt;
はじめに&lt;/A&gt;
&lt;/H1&gt;
なんか気づいたらアドベントカレンダーに登録してた。
&lt;a href=&quot;https://adventar.org/calendars/2105&quot;&gt;webスクレイピング&lt;/a&gt;の10日目だ。
beepcapである。 
&lt;BR&gt;
&lt;BR&gt;
&lt;BR&gt;
&lt;P&gt;
webスクレイピング...
最近はwebスクレイピングなどとかっこいい名前が付いているが、
昔はwebクローラといった気がする。厳密な定義がどうかは分からんのだが、
軽く調べてみても両者を明確に区別する文言は見つからない。
本記事ではwebクローラと言うことにする。&lt;A NAME=&quot;tex2html1&quot;
  HREF=&quot;#foot14&quot;&gt;&lt;SUP&gt;&lt;IMG  ALIGN=&quot;BOTTOM&quot; BORDER=&quot;1&quot; ALT=&quot;[*]&quot; SRC=&quot;footnote.png&quot;&gt;&lt;/SUP&gt;&lt;/A&gt;
&lt;P&gt;
さて、古くからwebを扱っている人間にとって、
webクローラというのは親の敵のような存在だ。
ネットワークが従量課金性であった時代では、
アップロードとダウンロード双方に回線料が発生するのだ。
クローラにアクセスされた分の料金を支払わねばならない個人サイトの運営者は
とにかくクローラを排除する必要に迫られた。

&lt;P&gt;
その検出手法と攻防の推移を紹介しながら話を進めよう。

&lt;P&gt;

&lt;H1&gt;&lt;A NAME=&quot;SECTION00020000000000000000&quot;&gt;
基本編&lt;/A&gt;
&lt;/H1&gt;

&lt;H2&gt;&lt;A NAME=&quot;SECTION00021000000000000000&quot;&gt;
初歩的なクロール対策&lt;/A&gt;
&lt;/H2&gt;
「初歩的な」と書いたが、一般的なwebクローラの攻防は大体これだ。
&lt;A NAME=&quot;tex2html2&quot;
  HREF=&quot;#foot17&quot;&gt;&lt;SUP&gt;&lt;IMG  ALIGN=&quot;BOTTOM&quot; BORDER=&quot;1&quot; ALT=&quot;[*]&quot; SRC=&quot;footnote.png&quot;&gt;&lt;/SUP&gt;&lt;/A&gt;まずさくっとwebクロールしてみよう。
きっと今回のACの他の記事にwgetによるクロールの話が出てくると思うので
仔細は語らないが、

&lt;P&gt;

&lt;DIV CLASS=&quot;alltt&quot; ALIGN=&quot;LEFT&quot;&gt;
&lt;TT&gt;
 
&lt;BR&gt;$ wget -r -l inf -k -nc -E -np http://targ.et
&lt;BR&gt;
&lt;BR&gt;&lt;/TT&gt;
&lt;/DIV&gt;

といったところだろうか。
上記は最速で取得しようとするので、
httpdのアクセスログは単一のIPアドレスでうめつくされる。
管理者側からはバレバレだ。

&lt;P&gt;
この行為への対策はIPアドレスフィルタリングとなる。
自動化して一定時間のアクセスを禁止するものから、&lt;A NAME=&quot;tex2html3&quot;
  HREF=&quot;#foot20&quot;&gt;&lt;SUP&gt;&lt;IMG  ALIGN=&quot;BOTTOM&quot; BORDER=&quot;1&quot; ALT=&quot;[*]&quot; SRC=&quot;footnote.png&quot;&gt;&lt;/SUP&gt;&lt;/A&gt;
&lt;P&gt;

&lt;DIV CLASS=&quot;alltt&quot; ALIGN=&quot;LEFT&quot;&gt;
&lt;TT&gt;
 
&lt;BR&gt;$ iptables -A INPUT -p tcp -m hashlimit -dport 80 
&lt;BR&gt;&amp;nbsp;&amp;nbsp;-hashlimit-name no_robot -hashlimit 5/s -hashimit-burst 3 
&lt;BR&gt;&amp;nbsp;&amp;nbsp;-hashlimit-mode srcip -j ACCEPT
&lt;BR&gt;$ iptables -A INPUT -dport 80 -j DROP
&lt;BR&gt;
&lt;BR&gt;&lt;/TT&gt;
&lt;/DIV&gt;

やらかしたら二度とアクセスを許さないものまで多種多様だが、

&lt;P&gt;

&lt;DIV CLASS=&quot;alltt&quot; ALIGN=&quot;LEFT&quot;&gt;
&lt;TT&gt;
 
&lt;BR&gt;$ iptables -A INPUT -s xx.xx.xx.xx/32 -j DROP
&lt;BR&gt;
&lt;BR&gt;&lt;/TT&gt;
&lt;/DIV&gt;

対webクローラの手法としてIPアドレスフィルタリングは良く使われていた。
90年代〜2000年代初頭にwebページを運営していた仲間内では
「クロール元のIPリスト」なるものがやりとりされていたりもしたのだ。
こうなってしまっては満足に収集も出来ない。
&lt;A NAME=&quot;tex2html4&quot;
  HREF=&quot;#foot25&quot;&gt;&lt;SUP&gt;&lt;IMG  ALIGN=&quot;BOTTOM&quot; BORDER=&quot;1&quot; ALT=&quot;[*]&quot; SRC=&quot;footnote.png&quot;&gt;&lt;/SUP&gt;&lt;/A&gt;そこで、次のような対策が打たれた。

&lt;P&gt;

&lt;H2&gt;&lt;A NAME=&quot;SECTION00022000000000000000&quot;&gt;
初期の対策の対策&lt;/A&gt;
&lt;/H2&gt;
これもwgetの例でいいだろう。

&lt;P&gt;

&lt;DIV CLASS=&quot;alltt&quot; ALIGN=&quot;LEFT&quot;&gt;
&lt;TT&gt;
 
&lt;BR&gt;$ wget -r -l inf -k -nc -E -np -w 1 http://targ.et
&lt;BR&gt;
&lt;BR&gt;&lt;/TT&gt;
&lt;/DIV&gt;

このコードは1秒に1回のアクセスに取得を制限するものだ。
一般的なクローラの動作といっていい。
現代の普通のサイトではクローラを拒否する理由なんて
負荷くらいのものだから、この対策で十分に効果があるし、
目を付けられてブロックされる恐れも無い。
&lt;BR&gt;世の中の大半が幸せなら、それ以上の技術はいらない。
&lt;BR&gt;
&lt;BR&gt;
&lt;BR&gt;などという甘い考え方が通用しない人たちもいる。

&lt;P&gt;
例えばセキュリティ技術者のようにログを監視している人々にとっては、
こんなふうにこれらのアクセスが見える。

&lt;P&gt;

&lt;DIV CLASS=&quot;alltt&quot; ALIGN=&quot;LEFT&quot;&gt;
&lt;TT&gt;
 
&lt;BR&gt;[水 12月 &amp;nbsp;6 08:30:03 2017] Inbound_tcp_s SRC=xxx.xxx.xxx.xxx DST= LEN=40 
&lt;BR&gt;&amp;nbsp;TOS=0x00 PREC=0x00 TTL=238 ID=45566 PROTO=TCP SPT=43146 DPT=80 
&lt;BR&gt;&amp;nbsp;WINDOW=1024 RES=0x00 SYN URGP=0
&lt;BR&gt;[水 12月 &amp;nbsp;6 08:30:04 2017] Inbound_tcp_s SRC=xxx.xxx.xxx.xxx DST= LEN=40 
&lt;BR&gt;&amp;nbsp;TOS=0x00 PREC=0x00 TTL=238 ID=45567 PROTO=TCP SPT=6666 DPT=80 
&lt;BR&gt;&amp;nbsp;WINDOW=1024 RES=0x00 SYN URGP=0
&lt;BR&gt;[水 12月 &amp;nbsp;6 08:30:05 2017] Inbound_tcp_s SRC=xxx.xxx.xxx.xxx DST= LEN=40 
&lt;BR&gt;&amp;nbsp;TOS=0x00 PREC=0x00 TTL=238 ID=45568 PROTO=TCP SPT=22012 DPT=80 
&lt;BR&gt;&amp;nbsp;WINDOW=1024 RES=0x00 SYN URGP=0
&lt;BR&gt;[水 12月 &amp;nbsp;6 08:30:06 2017] Inbound_tcp_s SRC=xxx.xxx.xxx.xxx DST= LEN=40 
&lt;BR&gt;&amp;nbsp;TOS=0x00 PREC=0x00 TTL=238 ID=45569 PROTO=TCP SPT=30153 DPT=80 
&lt;BR&gt;&amp;nbsp;WINDOW=1024 RES=0x00 SYN URGP=0
&lt;BR&gt;.
&lt;BR&gt;.
&lt;BR&gt;.
&lt;BR&gt;
&lt;BR&gt;&lt;/TT&gt;
&lt;/DIV&gt;
webクローラであることがバレバレだ。
webクローリングを阻止したい人間がいれば、排除されてそれで終わりとなる。

&lt;P&gt;
そこで、ここからが本題だ。
如何にしてwebクロールを隠蔽するのか。

&lt;P&gt;

&lt;H1&gt;&lt;A NAME=&quot;SECTION00030000000000000000&quot;&gt;
アクセスのタイミングの隠蔽&lt;/A&gt;
&lt;/H1&gt;
人間が操作しているかのようなログを残せば、機械だと見破られなければ
如何に優秀な管理者が相手であっても、これをブロックして仕舞うことは難しい。

&lt;P&gt;
例えばこれをランダム化によって回避しようとする手法がある。
wgetで言えば-random-waitという手法である。
これを行うとアクセスの待ち時間がランダム化し、
パッと見では分からなく・・・ならない。普通に怪しい。
ただし、自動解析ツールを使って監視している場合は検出されなくなることがある。
周期性をキーに監視しているツールが存在するからだ。
それでも、まぁアクセスが多くなるので、
人間に監視を促すよう警告が出る場合がある。そうしたらお陀仏だ。

&lt;P&gt;
ランダムではなく、人のような動きをクローラにはさせてやらねばならない。
&lt;BR&gt;
&lt;P&gt;
とここまで書いたが、残り締め切りまで一時間しか無いので、
巻いていこう。タイミング隠蔽を含めて、クロールが発覚しにくい手法の肝要な部分は3つある。
&lt;BR&gt;
&lt;P&gt;
人の動きを模倣するには2つの点で気をつけねばならない。
一つはアクセスする頻度だ。
先程までの話から展開させると、つまり人は文書を読んでから次のリンクをクリックするので、文書上の距離を計測すれば適切な待ち時間を算出できる。
この方法は、レンダリング後の画像を使う確実な方法と、マークアップと文を含めた文字数で算出する方法があるが、
評価し確認してみた所だと、文字数だけでもかなり精度が高い。
これはマークアップという書式の特徴だと思われる。
ただし、画像の中に文書があるような形態の場合はやはり画面上の距離を推定する必要がある。
どの程度の精度と成果をバランス良く摂るのかを検討して設計して欲しい。

&lt;P&gt;

&lt;H1&gt;&lt;A NAME=&quot;SECTION00040000000000000000&quot;&gt;
アクセス元の偽装&lt;/A&gt;
&lt;/H1&gt;
言うまでもないが、アクセス元を偽装しなければ、同じサイトに毎日現れる不審なログに気付かれる可能性がある。
とはいえ、アクセスのたびにProxyを切り替えるような手法はダメだ。
SYNのたびにProxyが切り替わるログは完全に怪しさしかないし、まともなサイトの管理者は、むしろパブリックなProxyを弾くように設定している。
ここで大事なのは、企業などからアクセスしているように見せかけることだ。
この場合、仮に頻度がある程度高くても、同じページを一斉に参照している可能性も考慮されるからだ。

&lt;P&gt;
ということで、この場合も最適解だけ書くと、
安価なクラウドサービスをレンタルし、自前のProxyサーバを立てること。
そして、一日以上、短くても数時間以上の長いスパンでProxyの切り替えをすることだ。
同じサイトに同じ人間がいることはおかしくない。
という心理上の正しさを追求すべきである。

&lt;P&gt;

&lt;H1&gt;&lt;A NAME=&quot;SECTION00050000000000000000&quot;&gt;
クロールする時間&lt;/A&gt;
&lt;/H1&gt;
最後の項目だが、これは簡単だ。
24時間ページを見続けられる人間は居ない。
あなたがクロールする時、それをアルバイトに任せることを考えて、稼働のシナリオを考えるのだ。webクローラとは隠密の世界なのである。

&lt;P&gt;

&lt;H1&gt;&lt;A NAME=&quot;SECTION00060000000000000000&quot;&gt;
最後に&lt;/A&gt;
&lt;/H1&gt;
最後に、これらのいかがわしいwebクローラのコードを貼っ付けるのと、
Apache ManifoldCFとApache Solrによって構築するwebクローリングシステムの運用方法に言及しようと思っていたのだが。
時間切れでなんにも出来てません。本当に申し訳ない。
これらの話を聞きたい方は、Twitterで直接話しかけて欲しい。
@beepcapとしていつでもリプライを待っているぞ。

&lt;P&gt;
以上

&lt;P&gt;

&lt;H1&gt;&lt;A NAME=&quot;SECTION00070000000000000000&quot;&gt;
About this document ...&lt;/A&gt;
&lt;/H1&gt;
 &lt;STRONG&gt;web スクレイピング隠蔽技術&lt;/STRONG&gt;&lt;P&gt;
This document was generated using the
&lt;A HREF=&quot;http://www.latex2html.org/&quot;&gt;&lt;STRONG&gt;LaTeX&lt;/STRONG&gt;2&lt;tt&gt;HTML&lt;/tt&gt;&lt;/A&gt; translator Version 2017.2 (Released Jan 23, 2017)
&lt;P&gt;
Copyright &amp;#169; 1993, 1994, 1995, 1996,
Nikos Drakos, 
Computer Based Learning Unit, University of Leeds.
&lt;BR&gt;
Copyright &amp;#169; 1997, 1998, 1999,
&lt;A HREF=&quot;http://www.maths.mq.edu.au/~ross/&quot;&gt;Ross Moore&lt;/A&gt;, 
Mathematics Department, Macquarie University, Sydney.
&lt;P&gt;
The command line arguments were: &lt;BR&gt;
 &lt;STRONG&gt;latex2html&lt;/STRONG&gt; &lt;TT&gt;-split 0 webスクレイピング.tex&lt;/TT&gt;
&lt;P&gt;
The translation was initiated on 2017-12-10
&lt;BR&gt;&lt;HR&gt;&lt;H4&gt;Footnotes&lt;/H4&gt;
&lt;DL&gt;
&lt;DT&gt;&lt;A NAME=&quot;foot14&quot;&gt;...
本記事ではwebクローラと言うことにする。&lt;/A&gt;&lt;A
 HREF=&quot;webスクレイピング.html#tex2html1&quot;&gt;&lt;SUP&gt;&lt;IMG  ALIGN=&quot;BOTTOM&quot; BORDER=&quot;1&quot; ALT=&quot;[*]&quot; SRC=&quot;footnote.png&quot;&gt;&lt;/SUP&gt;&lt;/A&gt;&lt;/DT&gt;
&lt;DD&gt;そっちの方が短いし

&lt;/DD&gt;
&lt;DT&gt;&lt;A NAME=&quot;foot17&quot;&gt;...
「初歩的な」と書いたが、一般的なwebクローラの攻防は大体これだ。&lt;/A&gt;&lt;A
 HREF=&quot;webスクレイピング.html#tex2html2&quot;&gt;&lt;SUP&gt;&lt;IMG  ALIGN=&quot;BOTTOM&quot; BORDER=&quot;1&quot; ALT=&quot;[*]&quot; SRC=&quot;footnote.png&quot;&gt;&lt;/SUP&gt;&lt;/A&gt;&lt;/DT&gt;
&lt;DD&gt;煽ってるんじゃないよ？それで十分なのさ。

&lt;/DD&gt;
&lt;DT&gt;&lt;A NAME=&quot;foot20&quot;&gt;...
自動化して一定時間のアクセスを禁止するものから、&lt;/A&gt;&lt;A
 HREF=&quot;webスクレイピング.html#tex2html3&quot;&gt;&lt;SUP&gt;&lt;IMG  ALIGN=&quot;BOTTOM&quot; BORDER=&quot;1&quot; ALT=&quot;[*]&quot; SRC=&quot;footnote.png&quot;&gt;&lt;/SUP&gt;&lt;/A&gt;&lt;/DT&gt;
&lt;DD&gt;同じIPから port 80への3回以上のアクセスは1秒5回まで

&lt;/DD&gt;
&lt;DT&gt;&lt;A NAME=&quot;foot25&quot;&gt;...
こうなってしまっては満足に収集も出来ない。&lt;/A&gt;&lt;A
 HREF=&quot;webスクレイピング.html#tex2html4&quot;&gt;&lt;SUP&gt;&lt;IMG  ALIGN=&quot;BOTTOM&quot; BORDER=&quot;1&quot; ALT=&quot;[*]&quot; SRC=&quot;footnote.png&quot;&gt;&lt;/SUP&gt;&lt;/A&gt;&lt;/DT&gt;
&lt;DD&gt;リトライをちゃんと仕込んでおけば前者は回避できるが、
後者をされる確率が上がる

&lt;/DD&gt;
&lt;/DL&gt;
&lt;DIV CLASS=&quot;navigation&quot;&gt;&lt;HR&gt;
&lt;!--Navigation Panel--&gt;
&lt;IMG WIDTH=&quot;81&quot; HEIGHT=&quot;24&quot; ALIGN=&quot;BOTTOM&quot; BORDER=&quot;0&quot; ALT=&quot;next_inactive&quot; SRC=&quot;nx_grp_g.png&quot;&gt; 
&lt;IMG WIDTH=&quot;26&quot; HEIGHT=&quot;24&quot; ALIGN=&quot;BOTTOM&quot; BORDER=&quot;0&quot; ALT=&quot;up&quot; SRC=&quot;up_g.png&quot;&gt; 
&lt;IMG WIDTH=&quot;63&quot; HEIGHT=&quot;24&quot; ALIGN=&quot;BOTTOM&quot; BORDER=&quot;0&quot; ALT=&quot;previous&quot; SRC=&quot;prev_g.png&quot;&gt;   
&lt;BR&gt;&lt;/DIV&gt;</content><link rel='replies' type='application/atom+xml' href='http://beepcapex.blogspot.com/feeds/2144058519658200702/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/25101302/2144058519658200702' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/2144058519658200702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/2144058519658200702'/><link rel='alternate' type='text/html' href='http://beepcapex.blogspot.com/2017/12/web.html' title='web スクレイピング隠蔽技術'/><author><name>BeepCap</name><uri>http://www.blogger.com/profile/17116660131133624856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-x0Cb00yxbi37ByjzMfugi9YHgOVFwVa7Zx2IKbrM-DsSVC6nmKu5NI7n83OG5kHHw2T0nKjtptSSZT0Rl1G5so_Oq9eQ1yTOvaR_g7E-AKkbpfLfKy2gSc-Dy8GFYA/s220/kao_bigger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25101302.post-1803281329378968720</id><published>2017-05-17T23:17:00.004+09:00</published><updated>2017-05-17T23:17:55.039+09:00</updated><title type='text'>愚痴</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
また標準テーマが気に入らなくてカスタムテーマを作ってしまった。&lt;br /&gt;
こうやってカスタムするから、引き継ぎができなくて、&lt;br /&gt;毎回標準テーマが更新されるたびに泣く泣く時間をかけてカスタムする羽目になるというのに。&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://beepcapex.blogspot.com/feeds/1803281329378968720/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/25101302/1803281329378968720' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/1803281329378968720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/1803281329378968720'/><link rel='alternate' type='text/html' href='http://beepcapex.blogspot.com/2017/05/blog-post_17.html' title='愚痴'/><author><name>BeepCap</name><uri>http://www.blogger.com/profile/17116660131133624856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-x0Cb00yxbi37ByjzMfugi9YHgOVFwVa7Zx2IKbrM-DsSVC6nmKu5NI7n83OG5kHHw2T0nKjtptSSZT0Rl1G5so_Oq9eQ1yTOvaR_g7E-AKkbpfLfKy2gSc-Dy8GFYA/s220/kao_bigger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25101302.post-7489058671502078818</id><published>2017-05-16T23:20:00.003+09:00</published><updated>2017-05-16T23:20:46.144+09:00</updated><title type='text'>cgroupを利用して処理ごとに資源を割り振る話</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
仕事でcgroupを使用したくなってちょっと調べたのですが、&lt;br /&gt;
Googleで調べると、昔&lt;a href=&quot;http://beepcapex.blogspot.jp/2011/01/debian200.html&quot;&gt;こんな記事&lt;/a&gt;を書いたことが発覚しました。&lt;br /&gt;
&lt;br /&gt;
当時は動いたのだでしょうが、現代では間違いだらけの動かないポンポコピーなので、&lt;br /&gt;
書き直すことにします。&lt;br /&gt;なお当該のパッチは現在でも形を変えて(当時ほど率直ではないものの)残ってはいるので、この対応は全くの無駄です&lt;br /&gt;
。&lt;br /&gt;
でもgoogleでcgroupの使いかたの日本語記事でこのblogが引っかかるので、訂正しておかなければならないですよね・・・。&lt;br /&gt;
&lt;br /&gt; &lt;br /&gt;
&lt;br /&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;
まず、Cgroup自体についてはRed Hat社のこの記事がとても詳しいです。&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/6/html/Resource_Management_Guide/index.html&quot;&gt;Red Hat Enterprise Linux 6 リソース管理ガイド&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt; &lt;br /&gt;
なので、私の駄文など読まずに上記のリンクを踏むのが最適解となります。&lt;br /&gt;&lt;br /&gt;しかしながら、昔シェルごとにCgroupを作る記事を書いてしまった手前更新して置かなければならないので、更新します。&lt;br /&gt;
&lt;br /&gt;
&lt;strike&gt;ああ面倒くさい。これが技術的負債というやつだ。&lt;/strike&gt; &lt;br /&gt;
&lt;br /&gt;
まず、&lt;br /&gt;
現代のディストリビューションではCgroupの資源はすでにmountされているのです。&lt;br /&gt;
なので、元の記事でcgroup用のディレクトリを作り、mountしていたが無駄です。&lt;br /&gt;
&lt;br /&gt;
例えばUbuntu 17.04 だと&lt;br /&gt;
/sys/fs/cgroup&lt;br /&gt;にすでに基本的な機能を展開済みです。&lt;br /&gt;&lt;br /&gt;ファイル操作だけでも設定できるのですが、&lt;br /&gt;
誰でも簡単に扱えるようにするためのツールを入れましょう。&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
sudo aptitude install cgroup-tools&lt;/blockquote&gt;
以上。&lt;br /&gt;
これで、基本的なcgroup制御用のコマンドが使えるようになります。&lt;br /&gt;
詳しくは、Red Hatの記事を読んでね。&lt;br /&gt;&lt;br /&gt;しかし、今回はあくまでも前回の記事の更新なので、前と同じテイストでも書いておきます。&lt;br /&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
sudo mkdir -m 0777 /sys/fs/cgroup/cpuset/users&lt;br /&gt;sudo cp /sys/fs/cgroup/cpuset/cpuset.cpus /sys/fs/cgroup/cpuset/users/&lt;br /&gt;sudo cp /sys/fs/cgroup/cpuset/cpuset.mems /sys/fs/cgroup/cpuset/users/&lt;/blockquote&gt;
はい、何やってるかというと、cgroupのcpusetというサブセットの中にusersというユーザ用のフォルダをアクセス権全開で作ります。&lt;br /&gt;しかし、cgroupは初期値では何も動作しないようになっているため、cpusetの値(基本的には環境のフル機能)をusers環境にコピーしています。&lt;br /&gt;
cgroupのフォルダは階層型の設定がファイルに仮想的にマッピングされている構造であるため、こうやって無理矢理風にコピーしても、動いちゃいます。&lt;br /&gt;
スゴイネー&lt;br /&gt;&lt;br /&gt;
あとは前回と同じスクリプトをシェルの環境設定に仕込んでください。&lt;br /&gt;
&lt;br /&gt;
.bashrc や .zshrcに&lt;br /&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
if [ &quot;$PS1&quot; ] ; then&lt;br /&gt;
&amp;nbsp; mkdir -m 0700 /sys/fs/cgroup/cpuset/users/$$&lt;br /&gt;&amp;nbsp; cp /sys/fs/cgroup/cpuset/users/cpuset.cpus /sys/fs/cgroup/cpuset/users/$$/&lt;br /&gt;&amp;nbsp; cp /sys/fs/cgroup/cpuset/users/cpuset.mems /sys/fs/cgroup/cpuset/users/$$/&lt;br /&gt;
&amp;nbsp; echo $$ &amp;gt; /sys/fs/cgroup/cpuset/users/$$/tasks&lt;br /&gt;
fi&lt;/blockquote&gt;
と追記すれば、はい、これでシェルから起動したプロセスは毎回cgroupに個別に閉じ込められることになりました！&lt;br /&gt;プロセスディスパッチのヒンテングに効果抜群で・・・&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
・・・という時代は終わりました。&lt;br /&gt;もうパッチもその後継も十分にみなさんに行き渡っていると思います。&lt;br /&gt;いまさらこのパッチが当たる前の世代のカーネルを使っている人はいないでしょう。&lt;br /&gt;
すくなくとも、cgroupが使えて、パッチが当たっていない環境は残っていないと思います。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;まぁ上記のスクリプトを一部イジることで、アプリの機能を常にCPUの70%までしか使わないようにしたり、CPUにラウンドロビンで割り当てたりと、カスタム自由なので、遊んでみてください。&lt;br /&gt;&lt;br /&gt;なお、cgourpに割り当てた資源を&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
rm -rf /sys/fs/cgroup/cpuset/users&lt;/blockquote&gt;
みたいに消そうとすると、権限がなくて失敗します。&lt;br /&gt;仮想なので。&lt;br /&gt;&lt;br /&gt;簡単なのは、先程入れたコマンドで、&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
cgdelete -r cpuset:users&lt;/blockquote&gt;
とやると一発です。&lt;br /&gt;&lt;br /&gt;でも、どうしてもファイル操作でやりたいひねくれ者のあなた。&lt;br /&gt;
そう僕。&lt;br /&gt;
&lt;br /&gt;
そんな人のためにファイル操作でも出来る方法を見つけておきました。&lt;br /&gt;
&lt;br /&gt;
資源のグループごとにrmdirで消すことができます。(盲点だったZE)&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
rmdir /sys/fs/cgroup/cpuset/users/$$&lt;br /&gt;rmdir /sys/fs/cgroup/cpuset/users&lt;/blockquote&gt;
こんな感じ。&lt;br /&gt;
&lt;br /&gt;
それでは本当にではでは。&lt;br /&gt;過去の負債を精算する記事でした。&lt;br /&gt;
さよなら！&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://beepcapex.blogspot.com/feeds/7489058671502078818/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/25101302/7489058671502078818' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/7489058671502078818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/7489058671502078818'/><link rel='alternate' type='text/html' href='http://beepcapex.blogspot.com/2017/05/cgroup.html' title='cgroupを利用して処理ごとに資源を割り振る話'/><author><name>BeepCap</name><uri>http://www.blogger.com/profile/17116660131133624856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-x0Cb00yxbi37ByjzMfugi9YHgOVFwVa7Zx2IKbrM-DsSVC6nmKu5NI7n83OG5kHHw2T0nKjtptSSZT0Rl1G5so_Oq9eQ1yTOvaR_g7E-AKkbpfLfKy2gSc-Dy8GFYA/s220/kao_bigger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25101302.post-447828155720182987</id><published>2017-02-12T21:29:00.001+09:00</published><updated>2017-02-12T21:29:34.730+09:00</updated><title type='text'>なんだかTwitterにプロモーションツイート課金してみた。</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
どうも。&lt;br /&gt;
beepcapです。&lt;br /&gt;
&lt;br /&gt;
最近この喋り出しがyoutuberっぽいって言われました。&lt;br /&gt;
そりゃああっちがネットラジオからパクってった文化ですからね！&lt;br /&gt;
&lt;br /&gt;
youtubeできるより前からラジオしてたっての。&lt;br /&gt;
もうやってないけど。&lt;br /&gt;
&lt;br /&gt;
さてさて、本題ですが、&lt;br /&gt;
Twitterで課金してみました。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;Twitterの運営が傾いてるという話は聞いてて、&lt;br /&gt;トランプが買ってくれねぇかなぁくらいに思ってはいたのですが、&lt;br /&gt;
どうやら、自分で課金することができるようなのでやってみました。&lt;br /&gt;
&lt;br /&gt;
最近Twitter社から定期的こんなメールをもらってまして、&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJEPJtisiJCXXUuQfQ-XDmi623b7FT6lKeKz5T_N9Iq5e2sIvjCnx-gCA6J5u9QtOJxVjWv5B3UVHLmhZpc0f5gKApPbpWzby5l3AKS9CkfRD69htT_ikbzpniUIMCddV4KzyNeg/s1600/Screenshot+from+2017-02-12+21%253A22%253A15.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Twitter business 宣伝メール&quot; border=&quot;0&quot; height=&quot;218&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJEPJtisiJCXXUuQfQ-XDmi623b7FT6lKeKz5T_N9Iq5e2sIvjCnx-gCA6J5u9QtOJxVjWv5B3UVHLmhZpc0f5gKApPbpWzby5l3AKS9CkfRD69htT_ikbzpniUIMCddV4KzyNeg/s400/Screenshot+from+2017-02-12+21%253A22%253A15.png&quot; title=&quot;メール内容1&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
これの「管理画面で設定を始めるをポチッと押して、&lt;br /&gt;
あとは適当に設定し、クレジットカードを登録すれば完了です。&lt;br /&gt;
&lt;br /&gt;
とりあえず、1clickいくらかも気にしてないですが、&lt;br /&gt;
一日100円いくと自動的に止まります。&lt;br /&gt;
つまり月に3000円・・・くらいの課金ですね。&lt;br /&gt;
&lt;br /&gt;
だれもクリックしないと、一切お布施にならないところが、&lt;br /&gt;
なんというか物悲しいです。&lt;br /&gt;
&lt;br /&gt;
もしみかけたらクリックしてやってください。&lt;br /&gt;
どうせここに来るだけなんで。&lt;br /&gt;
&lt;br /&gt;
ではでは &lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://beepcapex.blogspot.com/feeds/447828155720182987/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/25101302/447828155720182987' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/447828155720182987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/447828155720182987'/><link rel='alternate' type='text/html' href='http://beepcapex.blogspot.com/2017/02/twitter.html' title='なんだかTwitterにプロモーションツイート課金してみた。'/><author><name>BeepCap</name><uri>http://www.blogger.com/profile/17116660131133624856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-x0Cb00yxbi37ByjzMfugi9YHgOVFwVa7Zx2IKbrM-DsSVC6nmKu5NI7n83OG5kHHw2T0nKjtptSSZT0Rl1G5so_Oq9eQ1yTOvaR_g7E-AKkbpfLfKy2gSc-Dy8GFYA/s220/kao_bigger.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJEPJtisiJCXXUuQfQ-XDmi623b7FT6lKeKz5T_N9Iq5e2sIvjCnx-gCA6J5u9QtOJxVjWv5B3UVHLmhZpc0f5gKApPbpWzby5l3AKS9CkfRD69htT_ikbzpniUIMCddV4KzyNeg/s72-c/Screenshot+from+2017-02-12+21%253A22%253A15.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25101302.post-8399692443490290849</id><published>2016-12-17T13:26:00.002+09:00</published><updated>2016-12-17T13:32:52.466+09:00</updated><title type='text'>SO-FI</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
この記事は&lt;a href=&quot;http://www.adventar.org/calendars/1537&quot;&gt;ロックバンド Advent Calendar&lt;/a&gt; 17日目です。 &lt;br /&gt;
&lt;br /&gt;
はい皆様お久しぶりです。&lt;br /&gt;
beepcapです。&lt;br /&gt;
&lt;br /&gt;
ばんくしのアドベントカレンダーに合わせて一年ぶりに記事を書いています。&lt;br /&gt;
正直眠いです。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;さて、タイトルのSO-FIですが、ロックを演ってはいたものの、&lt;br /&gt;
ロックバンドかと言われると少々怪しい感じです。&lt;br /&gt;
&lt;br /&gt;
メンバーは&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://ja.wikipedia.org/wiki/%E5%A4%A7%E5%B3%B6%E3%81%93%E3%81%86%E3%81%99%E3%81%91&quot; title=&quot;大島こうすけ&quot;&gt;大島こうすけ&lt;/a&gt; - キーボード、作曲、編曲&lt;/li&gt;
&lt;li&gt;甲斐冴子 - 2代目ボーカル&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://ja.wikipedia.org/wiki/%E4%BD%90%E3%80%85%E6%9C%A8%E7%BE%8E%E5%92%8C&quot; title=&quot;佐々木美和&quot;&gt;佐々木美和&lt;/a&gt; - 作詞、キーボード&lt;/li&gt;
&lt;li&gt;岩切玲子 - 初代ボーカル、作詞&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&amp;nbsp; &lt;a href=&quot;https://ja.wikipedia.org/wiki/SO-FI&quot;&gt;wikipediaより&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
上記のようにボーカルは2代いるのですが、僕が好きな方は2代目の方です。&lt;br /&gt;
もともと大島こうすけというすでに業界で活躍していた大物キーボードと、&lt;br /&gt;
佐々木美和というこちらも経験のあるキーボード、&lt;br /&gt;
それにド新人の歌手という組み合わせで、&lt;br /&gt;
&quot;いかにも寿命が短そうな&quot;構成なのですが、&lt;br /&gt;
&lt;br /&gt;
実際に大変短命で、初代で2枚、2代目でも2枚しかシングルを出さずに解散してしまいました。&lt;br /&gt;
&lt;br /&gt;
まぁでも、グダグダ言わないで聞いてくださいよ！&lt;br /&gt;
ニコニコ動画などで探すと出てきてしまうのですが、ブログに転載はしかねるので、&lt;br /&gt;
Amazon置いときます。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://www.amazon.co.jp/%E3%82%AB%E3%83%83%E3%82%B3%E3%81%A4%E3%81%91%E3%82%8D%E3%82%88-SO-FI/dp/B00005F5DN&quot;&gt;カッコつけろよ SO-FI&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
バブル時代のロックミュージックとしてとても良い曲です。&lt;br /&gt;
制作年を考えるとバブルは終わってるはずなんですが、&lt;br /&gt;
時代を少し間違えちゃった感もGoodです。&lt;br /&gt;
&lt;br /&gt;
ダブルキーボードはなかなかうまく、そこに素人に毛が生えたようなボーカルが混ざるところも色々ロックです。&lt;br /&gt;
でもこのボーカルの声が良いんです。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://www.amazon.co.jp/SUPER-LOVE-SO-Fi/dp/B00005F5DO&quot;&gt;SUPER LOVE SO-FI&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
こちらもJ-ROCKといったところですが、正しく90年代スタイルです。&lt;br /&gt;
迷走が伺えます。&lt;br /&gt;
&lt;br /&gt;
こちらはアニメソングにも起用されており、&lt;br /&gt;
&lt;a href=&quot;https://ja.wikipedia.org/wiki/%E3%81%8D%E3%81%93%E3%81%A1%E3%82%83%E3%82%93%E3%81%99%E3%81%BE%E3%81%84%E3%82%8B&quot;&gt;きこちゃんすまいる&lt;/a&gt;&lt;br /&gt;
というアニメのOPとしても知られています。&lt;br /&gt;
子供向けアニメとは思えないアンバランスなOPが記憶に残っていますが、&lt;br /&gt;
正直、アニメの内容は全く覚えていません。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
こっちの曲はyoutubeなんかにも違法な動画があります。&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
ということで思いは尽きないのですが、&lt;br /&gt;
シングル２枚しかないので、これで紹介は終わりです。&lt;br /&gt;
&lt;br /&gt;
正直、今回のカレンダーでは他にも&lt;br /&gt;
X-Japan(X)とかFire Bomberとか書きたいものはいっぱいあったのですが、&lt;br /&gt;
でも他の誰ともかぶらないだろうし、僕が紹介しなければこのカレンダーを見ている人たちには一生縁がないバンド(?)だろうと思い紹介しました。&lt;br /&gt;
&lt;br /&gt;
みんなは現代イケイケのバンドを書いてくれていて、&lt;br /&gt;
非常に楽しみに読ませていただいているのですが、&lt;br /&gt;
ぜひとも過去のバンドにも興味をもってもらいたいです。&lt;br /&gt;
&lt;br /&gt;
ではでは&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://beepcapex.blogspot.com/feeds/8399692443490290849/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/25101302/8399692443490290849' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/8399692443490290849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/8399692443490290849'/><link rel='alternate' type='text/html' href='http://beepcapex.blogspot.com/2016/12/so-fi.html' title='SO-FI'/><author><name>BeepCap</name><uri>http://www.blogger.com/profile/17116660131133624856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-x0Cb00yxbi37ByjzMfugi9YHgOVFwVa7Zx2IKbrM-DsSVC6nmKu5NI7n83OG5kHHw2T0nKjtptSSZT0Rl1G5so_Oq9eQ1yTOvaR_g7E-AKkbpfLfKy2gSc-Dy8GFYA/s220/kao_bigger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25101302.post-8207363407902522849</id><published>2015-11-28T22:12:00.001+09:00</published><updated>2015-11-28T22:16:02.139+09:00</updated><title type='text'>たった半日でRaspberry Piを使った監視カメラと配信サーバを作る　Step 2</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://beepcapex.blogspot.jp/2015/11/raspberry-pistep-1.html&quot;&gt;前回&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
ということで、今回から設定していきます。&lt;br /&gt;
beepcapです。&lt;br /&gt;
&lt;br /&gt;
前回で必要なソフトのインストールは大体終わったので、設定を行います。&lt;br /&gt;
&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
Raspberry Pi 設定&lt;/h4&gt;
Raspberry Pi2ではmotionの設定を以下のように変更します。&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;画像の出力は動体検出ではなく定期的に&lt;/li&gt;
&lt;li&gt;画像のファイル名は固定（取得のたびに上書き）&lt;/li&gt;
&lt;li&gt;画像の置き場はramfs &lt;/li&gt;
&lt;/ul&gt;
そのためには、まずエディタで/etc/motion/motion.conf&lt;br /&gt;
を開く必要があります。&lt;br /&gt;
&lt;br /&gt;
raspbianではデフォルトでnanoが採用されているので、&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
sudo nano /etc/motion/motion.conf&lt;/blockquote&gt;
とします。&lt;br /&gt;
&lt;br /&gt;
とりあえず僕は以下のように変更しました。&lt;br /&gt;
&amp;lt;&amp;lt;後日設定ファイルをはりつける&amp;gt;&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
## デーモンモードを切る &lt;br /&gt;
daemon on&lt;br /&gt;
↓&lt;br /&gt;
daemon off&lt;br /&gt;
&lt;br /&gt;
## 常にキャプチャを取得する&lt;br /&gt;
emulate_motion off&lt;br /&gt;
↓&lt;br /&gt;
emulate_motion on&lt;br /&gt;
&lt;br /&gt;
## 動画の出力を停止する&lt;br /&gt;
ffmpeg_output_movies on&lt;br /&gt;
↓&lt;br /&gt;
ffmpeg_output_movies off&lt;br /&gt;
&lt;br /&gt;
## ramfsにファイルを出力する&lt;br /&gt;
target_dir /var/lib/motion&lt;br /&gt;
↓&lt;br /&gt;
target_dir /dev/shm&lt;br /&gt;
&lt;br /&gt;
## 出力ファイル名を固定する&lt;br /&gt;
picrure_filename&amp;nbsp; %v-%Y%m%d%H%M%S-%q&lt;br /&gt;
↓&lt;br /&gt;
picure_filename output&lt;/blockquote&gt;
&lt;br /&gt;
ここで、動作確認をしてみます。&lt;br /&gt;
USBカメラをRaspberry Pi2に接続し&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
sudo motion&lt;/blockquote&gt;
&lt;br /&gt;
を実行し、出力された/dev/shm/output.jpgを確認して下さい。&lt;br /&gt;
画面がキャプチャされていれば成功です。&lt;br /&gt;
&lt;br /&gt;
さて、サーバにuploadするための仕組みも作りましょう。&lt;br /&gt;
&lt;br /&gt;
以下のようにしてスクリプトを書きます。&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
nano upload.sh&lt;/blockquote&gt;
以下ファイル内&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
#!/bin/bash&lt;br /&gt;
while :&lt;br /&gt;
do&lt;br /&gt;
&amp;nbsp; scp -i &quot;azureサーバの秘密鍵&quot; /dev/shm/output.jpg azureuser@******.test-serv.cloudapp.net:/home/azureuser/output.jpg&lt;br /&gt;
sleep 1 &lt;br /&gt;
done &lt;/blockquote&gt;
秘密鍵は事前に作っておく必要があります。&lt;br /&gt;
秘密鍵の作成手順は、あとで例として載せますが、同じ手順である必要はありません。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
上のスクリプトは1秒に一回、画像ファイルを/home/azureuser/output.jpgに上書きします。&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;あとはこれらを起動時にじっこうするよう、Raspberry Pi2に登録します。&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
sudo nano /etc/rc.local&lt;/blockquote&gt;
&amp;nbsp;このファイルのexit 0 の前に以下の2行を追加します。&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
motion&amp;amp;&lt;br /&gt;
/bin/bash /home/pi/upload.sh&amp;amp;&lt;/blockquote&gt;
&lt;br /&gt;
これで、Raspberry Pi2は起動後からカメラだ撮った内容をサーバにuploadし続ける機器になりました。&lt;br /&gt;
&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
サーバ側の設定&lt;/h4&gt;
さて、Azure側では受け取った画像を公開しなければなりません。&lt;br /&gt;
今回は気取って、canvasを使いました。&lt;br /&gt;
web 1.0な人はimgタグをつかってreloadすればおしまいです。&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
nano index.html&lt;/blockquote&gt;
ここで新規に作成して&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;pre&gt;&lt;code&gt;
&amp;lt;html&amp;gt;
&amp;lt;script&amp;gt;
onload = function() {
  draw();
  setInterval(&quot;draw()&quot;, 1000);
};

function draw() {
  var canvas = document.getElementById(&#39;c1&#39;);
  if ( ! canvas || ! canvas.getContext ) { return false; }
  var ctx = canvas.getContext(&#39;2d&#39;);
  var img = new Image();
  img.src = &quot;output.jpg?&quot; + new Date().getTime();
  img.onload = function() {
    ctx.drawImage(img, 0, 0, 640, 480);
  }
}
&amp;lt;/script&amp;gt;
&amp;lt;canvas id=&quot;c1&quot; width=&quot;640&quot; height=&quot;480&quot;&amp;gt;&amp;lt;/canvas&amp;gt;
&amp;lt;/html&amp;gt;

&lt;/code&gt;
&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;br /&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;br /&gt;
こんな感じのスクリプトを仕込みます。&lt;br /&gt;
&lt;br /&gt;
上のスクリプトが何をやっているのかは見ていただければわかりますが、&lt;br /&gt;
最大限手抜きをしているので資源がもったいないとかはご容赦下さい。&lt;br /&gt;
&lt;br /&gt;
さて、index.htmlがAzureの /home/azureuserに出来たかとおもうので、&lt;br /&gt;
webサーバを立ち上げます。&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
~/thttpd-2.27/thttpd -d .&lt;/blockquote&gt;
&lt;br /&gt;
終わり！！！(※1)&lt;br /&gt;
&lt;br /&gt;
※1 Azureの場合はポートを開ける動作として、エンドポイントの設定でHTTPを開いて下さい。 &lt;br /&gt;
&lt;br /&gt;
あとは、Raspberry Pi2を起動して、サーバのwebページにアクセスすれば、&lt;br /&gt;
バッチリカメラ画像が更新されているはずです。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
さいごに&lt;/h4&gt;
どうだったでしょうか？&lt;br /&gt;
半日で出来たでしょうか？&lt;br /&gt;
&lt;br /&gt;
普段、ちょっとほしいなと思いつつも、中々ハードルが高そうで出来ないこと。&lt;br /&gt;
それを実現するのがIoTと呼ばれる、簡易組み込みの世界だと思います。&lt;br /&gt;
&lt;br /&gt;
こうやってどんどん、楽に、色々作っていけたら楽しいですよね！&lt;br /&gt;
&lt;br /&gt;
ではでは。&lt;br /&gt;
beepcapでした。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
おまけ&lt;/h4&gt;
サーバで公開鍵認証を行う方法&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
ssh-keygen -t rsa&lt;br /&gt;
cd ~/.ssh&lt;br /&gt;
cat id_ras.pub &amp;gt;&amp;gt; authorized_keys&lt;/blockquote&gt;
あとは、id_rsaをRaspberry Pi2側に転送すればok&lt;br /&gt;
&lt;br /&gt;
使いまわさないように注意。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://beepcapex.blogspot.com/feeds/8207363407902522849/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/25101302/8207363407902522849' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/8207363407902522849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/8207363407902522849'/><link rel='alternate' type='text/html' href='http://beepcapex.blogspot.com/2015/11/raspberry-pistep-2.html' title='たった半日でRaspberry Piを使った監視カメラと配信サーバを作る　Step 2'/><author><name>BeepCap</name><uri>http://www.blogger.com/profile/17116660131133624856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-x0Cb00yxbi37ByjzMfugi9YHgOVFwVa7Zx2IKbrM-DsSVC6nmKu5NI7n83OG5kHHw2T0nKjtptSSZT0Rl1G5so_Oq9eQ1yTOvaR_g7E-AKkbpfLfKy2gSc-Dy8GFYA/s220/kao_bigger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25101302.post-7560863076842655579</id><published>2015-11-28T09:37:00.003+09:00</published><updated>2015-11-28T22:23:09.916+09:00</updated><title type='text'>たった半日でRaspberry Piを使った監視カメラと配信サーバを作る　Step 1</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
「たった半日でRaspberry Piを使った監視カメラと配信サーバを作る」&lt;br /&gt;
という流行りっぽい名前で記事を書いてみようかと思います。&lt;br /&gt;
&lt;br /&gt;
beepcapです。&lt;br /&gt;
皆様お久しぶりです。&lt;br /&gt;
&lt;br /&gt;
====ここから下は隠すみたいな表記も忘れてしまった====&lt;br /&gt;
&lt;br /&gt;
さて、Twitterでふぁぼは募ったのですが、集まらなければこっちで公開した内容をあっちに貼らなければ良いだけなので、先に記事を書いておきます。&lt;br /&gt;
&lt;br /&gt;
三分間クッキングよろしくまず材料を集めます。&lt;br /&gt;
&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
材料&lt;/h4&gt;
&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Raspberry Pi2 Model B (Raspberry Piでもよし)&lt;/li&gt;
&lt;li&gt;なんかサーバ(※1)&lt;/li&gt;
&lt;li&gt;USB接続のwebカメラ(※2)&lt;/li&gt;
&lt;li&gt;LANケーブル、マイクロUSB給電ケーブル&lt;/li&gt;
&lt;li&gt;micro SDカード&lt;/li&gt;
&lt;li&gt;マウスとキーボード(※3)&lt;br /&gt;&lt;br /&gt;※1 WANから参照可能でsshが使えればなんでもいいです。(今回はAzure)&lt;br /&gt;※2 市販のwebカメラで大丈夫ですが、RPiの場合専用カメラもあります。&lt;br /&gt;※3 実働には不用です。開発のために調達してください。&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
座料は揃いましたか？&lt;br /&gt;
ない人は買ってきましょう。&lt;br /&gt;
&lt;a href=&quot;http://www.amazon.co.jp/Raspberry-Pi-NN-832-6274-Model/dp/B00T356SFO&quot; target=&quot;_blank&quot;&gt;Raspberry Pi 2 Model B&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://azure.microsoft.com/ja-jp/&quot; target=&quot;_blank&quot;&gt;なんかサーバ&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.amazon.co.jp/iBUFFALO-%E3%83%9E%E3%82%A4%E3%82%AF%E5%86%85%E8%94%B5120%E4%B8%87%E7%94%BB%E7%B4%A0Web%E3%82%AB%E3%83%A1%E3%83%A9-HD720p%E5%AF%BE%E5%BF%9C%E3%83%A2%E3%83%87%E3%83%AB-%E3%83%96%E3%83%A9%E3%83%83%E3%82%AF-BSWHD06MBK/dp/B00GZAF72U/ref=sr_1_2?s=computers&amp;amp;ie=UTF8&amp;amp;qid=1448668381&amp;amp;sr=1-2&amp;amp;keywords=web+%E3%82%AB%E3%83%A1%E3%83%A9&quot; target=&quot;_blank&quot;&gt;USB接続のwebカメラ&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.amazon.co.jp/iBUFFALO-%E3%83%84%E3%83%A1%E3%81%AE%E6%8A%98%E3%82%8C%E3%81%AA%E3%81%84LAN%E3%82%B1%E3%83%BC%E3%83%96%E3%83%AB-Cat6a-%E3%83%95%E3%83%A9%E3%83%83%E3%83%88%E3%82%BF%E3%82%A4%E3%83%97-BSLS6AFU05BK/dp/B008RVY4GK/ref=sr_1_3?s=computers&amp;amp;ie=UTF8&amp;amp;qid=1448668458&amp;amp;sr=1-3&amp;amp;keywords=LAN%E3%82%B1%E3%83%BC%E3%83%96%E3%83%AB&quot; target=&quot;_blank&quot;&gt;LANケーブル&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.amazon.co.jp/%E3%82%B5%E3%83%B3%E3%83%AF%E3%82%B5%E3%83%97%E3%83%A9%E3%82%A4-%E4%B8%A1%E9%9D%A2%E6%8C%BF%E3%81%9B%E3%82%8B%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%ADUSB%E3%82%B1%E3%83%BC%E3%83%96%E3%83%AB-MicroB-%E3%83%9B%E3%83%AF%E3%82%A4%E3%83%88-KU-RMCB2W/dp/B00FMNCXMS/ref=sr_1_23?s=computers&amp;amp;ie=UTF8&amp;amp;qid=1448668510&amp;amp;sr=1-23&amp;amp;keywords=%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%ADUSB&quot; target=&quot;_blank&quot;&gt;マイクロUSB給電ケーブル&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.amazon.co.jp/Transcend-microSDHC%E3%82%AB%E3%83%BC%E3%83%89-Class4-%E7%84%A1%E6%9C%9F%E9%99%90%E4%BF%9D%E8%A8%BC-TS4GUSDHC4/dp/B004RB30J6/ref=sr_1_10?s=computers&amp;amp;ie=UTF8&amp;amp;qid=1448669412&amp;amp;sr=1-10&amp;amp;keywords=amazon+micro+sd&quot; target=&quot;_blank&quot;&gt;micro SDカード&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
マイクロUSB給電ケーブルは100円ショップのものでも良いのですが、&lt;br /&gt;
Raspberry Pi2は比較的大食いなので、発熱などに気をつけて下さい。&lt;br /&gt;
&lt;br /&gt;
「なんかサーバ」は今回はWindows Azureを採用してみました。&lt;br /&gt;
Microsoft AzureはAWSとして使うと幸せなんです。&lt;br /&gt;
多彩な機能はぶっちゃけ使いにくいAzureですが、Linuxサーバとしては優秀です。&lt;br /&gt;
ただ、料金は240円/日くらいかかります。&lt;br /&gt;
月額7200円ですね。&lt;br /&gt;
なので、この記事を見ている方々は自身のお好きな資源を使われたほうが良いと思います。&lt;br /&gt;
&lt;br /&gt;
材料はこんなもんです。&lt;br /&gt;
&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;下準備&lt;/h4&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
下準備を始めましょう。&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Raspberrt Pi2にはRaspbianを入れておきます。&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
といっても楽をしたいので、NOOBSで入れましょう。&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;a href=&quot;https://www.raspberrypi.org/downloads/noobs/&quot; target=&quot;_blank&quot;&gt;NOOBSのダウンロード&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
上記のリンクから、NOOBSをダウンロードしてきます。&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
多分Liteでもいいのですが、標準版にはRaspbianがすでに格納されています。&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
ダウンロードしてきたzipを解凍し、フォーマット済みのmicro SDに入れます。&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
あとはRaspberry Pi2にmicro SDを挿入し、マイクロUSB給電ケーブルで&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
USB電源と接続してください。&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&amp;lt;&amp;lt;忘れなかったらここにNOOBSの画面&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;a href=&quot;http://raspi.seesaa.net/article/414754789.html&quot; target=&quot;_blank&quot;&gt;Raspberry PiのOSをインストールしてみた（NOOBS篇）: Raspberry Piでやってみた:&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
このへんの記事を参照に、Rasbianをインストールして下さい。&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
AzureにはLinuxサーバをインストールする必要があります。&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Azureを使わない人はVMでも何でもいいので、Linuxのインストールと読み替えて下さい。&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
なお、Linux側は楽をするために、Ubuntu 14.04 LTSを使っています。&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;
Azureのメニューの新規作成からこんなふうに新しいサーバを作成します。&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJKKF-ecPKXU_QL9pcj9INMEZz3lb_LGNgCq8ZZ1_gG4UkJcLOQnck5oN0IGLSiuqVvgfLCbYYUPxBOC3Ix5TjLoaJOQ6BdUSM3a5s6-DH2O9_MoLRblzQlMbY2TLFmnUrN68XMg/s1600/Azure.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;145&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJKKF-ecPKXU_QL9pcj9INMEZz3lb_LGNgCq8ZZ1_gG4UkJcLOQnck5oN0IGLSiuqVvgfLCbYYUPxBOC3Ix5TjLoaJOQ6BdUSM3a5s6-DH2O9_MoLRblzQlMbY2TLFmnUrN68XMg/s320/Azure.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
作成すると、sshdが有効になったサーバが立つので、&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
user: azureuser&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
pass: 上記画面で指定したもの&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
でsshログインができます。&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
ssh azureuser@******.test-serv.cloudapp.net&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
といった感じでしょうか。&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
ソフトのインストール&lt;/h4&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
では今回使用するソフトをインストールしていきましょう。&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;まずは、Raspberry Piから。&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Motionの導入&lt;br /&gt;&lt;a href=&quot;http://www.lavrsen.dk/foswiki/bin/view/Motion/WebHome&quot; target=&quot;_blank&quot;&gt;Motion Wiki Home  Motion - Web Home&lt;/a&gt;&lt;br /&gt;今回はビデオキャプチャとしてmotionを使います。&lt;br /&gt;motionを選択した理由は、&lt;ol&gt;
&lt;li&gt;導入が簡単&lt;/li&gt;
&lt;li&gt;定期的に画像ファイルとして出力できる&lt;/li&gt;
&lt;li&gt;同じファイルに連続して上書き出来る。&lt;/li&gt;
&lt;/ol&gt;
ということで、今回はこれを選択しました。&lt;br /&gt;
3が重要です。&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;
ではインストールします。&lt;br /&gt;
ディストリビューションはdebianベースなので、&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
sudo apt-get install motion &lt;/blockquote&gt;
終わりです。 &lt;br /&gt;
&lt;br /&gt;
次にwebサーバをAzure側に作ります。&lt;br /&gt;
といっても、Apacheとかnginxとか巨大だしめんどくさいですよね？&lt;br /&gt;
&lt;br /&gt;
ということで、&lt;br /&gt;
&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;thttpdの導入&lt;br /&gt;&lt;a href=&quot;http://acme.com/software/thttpd/&quot; target=&quot;_blank&quot;&gt;thttpd&lt;/a&gt; &lt;br /&gt;導入の理由は&lt;br /&gt;&lt;ol&gt;
&lt;li&gt;とにかく簡単に設定(?)が終わる&lt;/li&gt;
&lt;/ol&gt;
これに尽きます。&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;
こちらもAzure上のubuntuなので&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
sudo apt-get install thttpd&lt;/blockquote&gt;
とやりたいところなのですが、&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;コレではダメです。&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;なぜダメかというと、Ubuntu 14.04 TLSでは愚かなことに、thttpdが&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;パッケージに含まれなくなってしまったのです。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;仕方がないので、野良ビルドします。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;先ほどのページからthttpdをダウンロードして、ビルドします。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;wget http://acme.com/software/thttpd/thttpd-2.27.tar.gz&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;tar -xf thttpd-2.27.tar.gz&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;cd thttpd-2.27&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;./configure&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;make&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;こんなかんじでしょうか。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;さて、重要なソフトのインストールは出来たので、&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;次回から、設定と環境構築と楽しいコーディングと行きましょう。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;ではでは &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;http://beepcapex.blogspot.jp/2015/11/raspberry-pistep-2.html&quot;&gt;次回&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;/ul&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://beepcapex.blogspot.com/feeds/7560863076842655579/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/25101302/7560863076842655579' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/7560863076842655579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/7560863076842655579'/><link rel='alternate' type='text/html' href='http://beepcapex.blogspot.com/2015/11/raspberry-pistep-1.html' title='たった半日でRaspberry Piを使った監視カメラと配信サーバを作る　Step 1'/><author><name>BeepCap</name><uri>http://www.blogger.com/profile/17116660131133624856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-x0Cb00yxbi37ByjzMfugi9YHgOVFwVa7Zx2IKbrM-DsSVC6nmKu5NI7n83OG5kHHw2T0nKjtptSSZT0Rl1G5so_Oq9eQ1yTOvaR_g7E-AKkbpfLfKy2gSc-Dy8GFYA/s220/kao_bigger.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJKKF-ecPKXU_QL9pcj9INMEZz3lb_LGNgCq8ZZ1_gG4UkJcLOQnck5oN0IGLSiuqVvgfLCbYYUPxBOC3Ix5TjLoaJOQ6BdUSM3a5s6-DH2O9_MoLRblzQlMbY2TLFmnUrN68XMg/s72-c/Azure.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25101302.post-4103392962193707575</id><published>2015-01-18T04:42:00.001+09:00</published><updated>2015-01-18T04:42:23.298+09:00</updated><title type='text'>好きこそものの上手なれ</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
とってもいい言葉だよね。&lt;br /&gt;
でも上手じゃないと好きになれない段階ってあるよね。&lt;br /&gt;
&lt;br /&gt;
で、画期的な解決方法を思いついたんだよ&lt;br /&gt;
&lt;br /&gt;
好きなことしかやらなければいいのでは &lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://beepcapex.blogspot.com/feeds/4103392962193707575/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/25101302/4103392962193707575' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/4103392962193707575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/4103392962193707575'/><link rel='alternate' type='text/html' href='http://beepcapex.blogspot.com/2015/01/blog-post_18.html' title='好きこそものの上手なれ'/><author><name>BeepCap</name><uri>http://www.blogger.com/profile/17116660131133624856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-x0Cb00yxbi37ByjzMfugi9YHgOVFwVa7Zx2IKbrM-DsSVC6nmKu5NI7n83OG5kHHw2T0nKjtptSSZT0Rl1G5so_Oq9eQ1yTOvaR_g7E-AKkbpfLfKy2gSc-Dy8GFYA/s220/kao_bigger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25101302.post-2649236753792279697</id><published>2015-01-17T22:21:00.001+09:00</published><updated>2015-01-17T22:21:08.594+09:00</updated><title type='text'>bloggerへの投稿をTwitterに自動連携するようにしてみた</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
恥ずかしい男&lt;br /&gt;
beepcapです。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;タイトルの実験的記事なので、別に何も書くこと無いのですけど・・・&lt;br /&gt;
&lt;br /&gt;
そうだなぁ、&lt;br /&gt;
自由に生きるために必要なものって、&lt;br /&gt;
お金かと思ってたんですけど、&lt;br /&gt;
&lt;br /&gt;
どうも違うみたいです。&lt;br /&gt;
&lt;br /&gt;
では &lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://beepcapex.blogspot.com/feeds/2649236753792279697/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/25101302/2649236753792279697' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/2649236753792279697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/2649236753792279697'/><link rel='alternate' type='text/html' href='http://beepcapex.blogspot.com/2015/01/bloggertwitter.html' title='bloggerへの投稿をTwitterに自動連携するようにしてみた'/><author><name>BeepCap</name><uri>http://www.blogger.com/profile/17116660131133624856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-x0Cb00yxbi37ByjzMfugi9YHgOVFwVa7Zx2IKbrM-DsSVC6nmKu5NI7n83OG5kHHw2T0nKjtptSSZT0Rl1G5so_Oq9eQ1yTOvaR_g7E-AKkbpfLfKy2gSc-Dy8GFYA/s220/kao_bigger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25101302.post-2955987833854006785</id><published>2015-01-17T21:59:00.001+09:00</published><updated>2015-01-17T21:59:09.347+09:00</updated><title type='text'>景気回復</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
どうも、無為に時間を過ごすのが大好きなbeepcapです。&lt;br /&gt;
&lt;br /&gt;
でも意識して過ごしているのを無為と言っていいのかは疑問。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
さて、昨今アベノミクスかはおいといて、&lt;br /&gt;
景気回復してきましたね。&lt;br /&gt;
&lt;br /&gt;
あなたのお財布が寒いのは別にバブル期でも一緒でしょ？&lt;br /&gt;
&lt;br /&gt;
少なくともお仕事増えてきました。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;
例えば、2008年頃にはリーマン・ショックのせいで、大手のお仕事がだいぶ減り、&lt;br /&gt;
僕の前職でも今までのグループの仕事だけでは立ち行かなくなり、&lt;br /&gt;
単価の低く、リスクが高い仕事を選択せざるをえなくなり、&lt;br /&gt;
だいぶ負債を抱えました。&lt;br /&gt;
もちろん、しっかり社員に還元されました。&lt;br /&gt;
ボーナスは出ても&quot;寸志&quot;という名目で数万程度。&lt;br /&gt;
もともと年収が低かったので大変なことになりましたっけ・・・&lt;br /&gt;
&lt;br /&gt;
2011年の震災直後もお仕事減りました。&lt;br /&gt;
輪番停電の影響で工場の稼働が下がり、その分だけ次期開発計画に影響が出て、&lt;br /&gt;
社内で休息室でずっと休んでる（しかない）ような社員がでてきました。&lt;br /&gt;
&lt;br /&gt;
そうして、どんどん仕事が減っていき&lt;br /&gt;
減る分だけ、人員もカットしていき&lt;br /&gt;
今までの忙しさは、5人でやらなきゃいけない仕事を、人が2人しかいないから&lt;br /&gt;
2.5倍働かなきゃ行けないといった、そういう忙しさで、&lt;br /&gt;
正直やってられないものでした。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
でも去年くらいから今度は純粋に仕事が増え始めました。&lt;br /&gt;
僕の今の忙しさも、新規件が増えて、その対応に追われてるからです。&lt;br /&gt;
こういう、現体制を評価し、褒めるような発言が出来るのはインターネットならでは&lt;br /&gt;
と言った感じがしますね・・・。 &lt;br /&gt;
既存のメディアは敵対的な話ばかりしてる気がします。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
このまま安定してくれるといいなぁ。&lt;br /&gt;
&lt;br /&gt;
beepcapでした。 &lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://beepcapex.blogspot.com/feeds/2955987833854006785/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/25101302/2955987833854006785' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/2955987833854006785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/2955987833854006785'/><link rel='alternate' type='text/html' href='http://beepcapex.blogspot.com/2015/01/blog-post_17.html' title='景気回復'/><author><name>BeepCap</name><uri>http://www.blogger.com/profile/17116660131133624856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-x0Cb00yxbi37ByjzMfugi9YHgOVFwVa7Zx2IKbrM-DsSVC6nmKu5NI7n83OG5kHHw2T0nKjtptSSZT0Rl1G5so_Oq9eQ1yTOvaR_g7E-AKkbpfLfKy2gSc-Dy8GFYA/s220/kao_bigger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25101302.post-4470155583994700263</id><published>2015-01-16T23:40:00.006+09:00</published><updated>2015-01-16T23:41:52.242+09:00</updated><title type='text'>自分の過去記事が役に立つ</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
はいどうも連続投稿beepcapレンジャーです。&lt;br /&gt;
&lt;br /&gt;
今blogger読み返してみたら、結構役に立つというか&lt;br /&gt;
今でも僕の興味を引く記事がワンサカあるのね。&lt;br /&gt;
&lt;br /&gt;
中々上出来です。&lt;br /&gt;
&lt;br /&gt;
ということで、今現在僕がハマっているものも&lt;br /&gt;
ついでなんでここに書き残しておきますかね。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;ということで、&lt;br /&gt;
スマートフォンのブラウザに常に表示させてるページのリンクを&lt;br /&gt;
パラパラと貼っておきます&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
読解アヘン&lt;br /&gt;
&lt;a href=&quot;http://dka-hero.com/top.html&quot;&gt;http://dka-hero.com/top.html&lt;/a&gt;&lt;br /&gt;
--&lt;br /&gt;
この漫画家さんのファンなのですよ。&lt;br /&gt;
多分前に書いてた作品とかもずーっと見てました。&lt;br /&gt;
もう未公開になってしまった作品がいくつかあるのが、悲しい&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
こんな所も住めば都・ネオ！&lt;br /&gt;
&lt;a href=&quot;http://www.h6.dion.ne.jp/~tkg-tkg/&quot;&gt;http://www.h6.dion.ne.jp/~tkg-tkg/&lt;/a&gt;&lt;br /&gt;
--&lt;br /&gt;
最近激しくハマり直したTRPG読み物の最高峰。&lt;br /&gt;
ぜひガープス・ルナル リプレイは読んでください。&lt;br /&gt;
活動再開してたとは知らなんだ。&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
ログ・ホライズン - 小説家になろう -&lt;br /&gt;
&lt;a href=&quot;http://ncode.syosetu.com/n8725k/&quot;&gt;http://ncode.syosetu.com/n8725k/&lt;/a&gt;&lt;br /&gt;
--&lt;br /&gt;
アニメも絶賛放映中ですが、やはり小説としてサイトで読むと&lt;br /&gt;
想像力が掻き立てられます。&lt;br /&gt;
今まさに連載再開中なので、毎週楽しみ。&lt;br /&gt;
一つストーリが終わると、半年くらい休眠します。&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
麻布十番の老舗&lt;br /&gt;
&lt;a href=&quot;http://jin3.jp/juban/sinise.htm&quot;&gt;http://jin3.jp/juban/sinise.htm&lt;/a&gt;&lt;br /&gt;
--&lt;br /&gt;
我が実家というか今はなくなってしまった元実家の商店街の現況を&lt;br /&gt;
まとめたサイト。&lt;br /&gt;
親戚は住んでるので、まだたまに行ったりしますね。&lt;br /&gt;
冠婚葬祭で。&lt;br /&gt;
懐かしのお店がだいぶなくなってる感じ。&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
サウンドハウス&lt;br /&gt;
&lt;a href=&quot;http://www.soundhouse.co.jp/&quot;&gt;http://www.soundhouse.co.jp/&lt;/a&gt;&lt;br /&gt;
--&lt;br /&gt;
オーディオ機器を日本で手に入れるならここってくらいオーディオに&lt;br /&gt;
便利なサイト。&lt;br /&gt;
ヘッドフォンとかアンプとか買うときはまずここを確認します。&lt;br /&gt;
数年前にクレジットカード情報流出事件を起こしてから、&lt;br /&gt;
クレジット決済ができなくなりました。&lt;br /&gt;
早く復活してほしい。&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
ホントに実在する変な法律&lt;br /&gt;
&lt;a href=&quot;http://www.ceres.dti.ne.jp/chu/law/&quot;&gt;http://www.ceres.dti.ne.jp/chu/law/&lt;/a&gt;&lt;br /&gt;
--&lt;br /&gt;
法律関連でイライラした時に読むサイト&lt;br /&gt;
ホントストレス解消用。&lt;br /&gt;
これ読むと、ちょっとした法律トラブルはどうでもいい気がしてきます。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
以上かな？&lt;br /&gt;
またそのうち追加するかも。&lt;br /&gt;
ではでは&lt;br /&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://beepcapex.blogspot.com/feeds/4470155583994700263/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/25101302/4470155583994700263' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/4470155583994700263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/4470155583994700263'/><link rel='alternate' type='text/html' href='http://beepcapex.blogspot.com/2015/01/blog-post_66.html' title='自分の過去記事が役に立つ'/><author><name>BeepCap</name><uri>http://www.blogger.com/profile/17116660131133624856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-x0Cb00yxbi37ByjzMfugi9YHgOVFwVa7Zx2IKbrM-DsSVC6nmKu5NI7n83OG5kHHw2T0nKjtptSSZT0Rl1G5so_Oq9eQ1yTOvaR_g7E-AKkbpfLfKy2gSc-Dy8GFYA/s220/kao_bigger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25101302.post-8022792076774919777</id><published>2015-01-16T23:14:00.002+09:00</published><updated>2015-01-16T23:14:23.072+09:00</updated><title type='text'>完璧主義なブロガーの悩みを読んで</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
はいどうも、年に１記事も書かないbeepcapです。&lt;br /&gt;
&lt;br /&gt;
完璧主義なブロガーの悩み - かすてらすねお。（非日常編） &lt;a href=&quot;http://suneo3476.hateblo.jp/entry/2015/01/16/230037&quot;&gt;http://suneo3476.hateblo.jp/entry/2015/01/16/230037&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
これを読んで思ったことをつらつら書いてみようかと思い&lt;br /&gt;
筆を取りました。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;そもそも、ブログなんてものが日本で一般的でなかった時代、&lt;br /&gt;
僕らは文書をインターネットで発表するのに&lt;br /&gt;
HTMLでしこしこ文を書いて公開してました。&lt;br /&gt;
&lt;br /&gt;
それらはテキストサイトなんて言われ方をしていて、&lt;br /&gt;
要はコンテンツがテキストしか無いという意味でした。&lt;br /&gt;
まぁ当時テキストはインターネットに参加している人間であれば、&lt;br /&gt;
誰にでも”作れる”コンテンツでしたし。&lt;br /&gt;
&lt;br /&gt;
そんな時代からチャットが流行り、掲示板が流行り、ブログが流行り、SNSが流行り、&lt;br /&gt;
そうして、今はSNSの中でもチャット的な機能を併せ持つ”マイクロブログ”が&lt;br /&gt;
流行っています。&lt;br /&gt;
&lt;br /&gt;
でも結局、みんな自分が言いたいことを言えるスペースがほしいだけなんですよ。&lt;br /&gt;
&lt;br /&gt;
多分Twitterだから気楽で、blogだから推敲に時間がかかるとか&lt;br /&gt;
見てる人を意識しなきゃっていうのは、自分のこだわりだけで、&lt;br /&gt;
言いたいことを言いやすくするための言い訳なんですよ。&lt;br /&gt;
推敲の先に言いたいことがあるんですから。&lt;br /&gt;
&lt;br /&gt;
推敲して完璧主義を貫く、意地を通す媒体としてのブログ&lt;br /&gt;
もっと肩肘張らずに楽しんでみたらいいのではとか&lt;br /&gt;
思います。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
なんて、全く遂行しないで投稿してみました。&lt;br /&gt;
僕の言いたいことは推敲の先にないので。&lt;br /&gt;
&lt;br /&gt;
それでは&lt;br /&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://beepcapex.blogspot.com/feeds/8022792076774919777/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/25101302/8022792076774919777' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/8022792076774919777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/8022792076774919777'/><link rel='alternate' type='text/html' href='http://beepcapex.blogspot.com/2015/01/blog-post.html' title='完璧主義なブロガーの悩みを読んで'/><author><name>BeepCap</name><uri>http://www.blogger.com/profile/17116660131133624856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-x0Cb00yxbi37ByjzMfugi9YHgOVFwVa7Zx2IKbrM-DsSVC6nmKu5NI7n83OG5kHHw2T0nKjtptSSZT0Rl1G5so_Oq9eQ1yTOvaR_g7E-AKkbpfLfKy2gSc-Dy8GFYA/s220/kao_bigger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25101302.post-3263502816877521386</id><published>2013-07-22T23:39:00.002+09:00</published><updated>2013-07-22T23:39:58.275+09:00</updated><title type='text'>Minecraft1.6 ランチャーの使い方</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
はい、どうも。beepcapです。&lt;br /&gt;
&lt;br /&gt;
まずはランチャーを起動してみましょう。&lt;br /&gt;
皆様起動はできますね？&lt;br /&gt;
&lt;br /&gt;
出来ないという方。&lt;br /&gt;
&lt;br /&gt;
あなたはおそらくMojanのwebサービスにログインしていなかったのでしょう。&lt;br /&gt;
Mojanにログインしてから、そのアカウントでMinecraftにログインすると&lt;br /&gt;
以下の画面が出てきます。 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQDWtx0l2HpVCb0xorstzwVyaO0Eqv8UwMXlwG-tKuVC_p6PDHD1m3OMFmgFi3rC68WJB5BIfL7OmpcFk5kfrEoiGyMc3mpbXPAkVLBUVFSN6s5XYzJoSWEeCnj9fejzp5is234A/s1600/Screenshot_from_2013-07-22+23:29:53.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;199&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQDWtx0l2HpVCb0xorstzwVyaO0Eqv8UwMXlwG-tKuVC_p6PDHD1m3OMFmgFi3rC68WJB5BIfL7OmpcFk5kfrEoiGyMc3mpbXPAkVLBUVFSN6s5XYzJoSWEeCnj9fejzp5is234A/s320/Screenshot_from_2013-07-22+23:29:53.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ほい、左下に見えているドロップボックスがプロファイルです。&lt;br /&gt;
ここで、Minecraftのユーザ名や起動バージョンを管理します。&lt;br /&gt;
&lt;br /&gt;
New Profileを開くとこうなっています。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheDGn86yKkcjAE81nZSST1kikjfXK0pXUFf5WEZ6BcWJd0r2OyYxZhyphenhyphenodDez_hK0VJ2AJqmVYzWavIvEQc-UGrx-jc92U5sM1IEAzGT9WDj5gt2WMwmCByVBZz52WYxvsu973nxA/s1600/Screenshot_from_2013-07-22+23:32:23.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;191&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheDGn86yKkcjAE81nZSST1kikjfXK0pXUFf5WEZ6BcWJd0r2OyYxZhyphenhyphenodDez_hK0VJ2AJqmVYzWavIvEQc-UGrx-jc92U5sM1IEAzGT9WDj5gt2WMwmCByVBZz52WYxvsu973nxA/s320/Screenshot_from_2013-07-22+23:32:23.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
さて、ここで設定なのですが・・・&lt;br /&gt;
基本的には何も変える必要はありません。&lt;br /&gt;
&lt;br /&gt;
もし、最新の1.6.2以外で遊びたい方は、Use versionの右側のドロップボックスで古いバージョンのマインクラフトを選びましょう。&lt;br /&gt;
&lt;br /&gt;
適当な名前を Profile Nameに指定してSave Profileを選択すれば準備完了です。&lt;br /&gt;
&lt;br /&gt;
後は、play を押すだけ。&lt;br /&gt;
&lt;br /&gt;
れっつえんじょい&lt;br /&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://beepcapex.blogspot.com/feeds/3263502816877521386/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/25101302/3263502816877521386' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/3263502816877521386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/3263502816877521386'/><link rel='alternate' type='text/html' href='http://beepcapex.blogspot.com/2013/07/minecraft16.html' title='Minecraft1.6 ランチャーの使い方'/><author><name>BeepCap</name><uri>http://www.blogger.com/profile/17116660131133624856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-x0Cb00yxbi37ByjzMfugi9YHgOVFwVa7Zx2IKbrM-DsSVC6nmKu5NI7n83OG5kHHw2T0nKjtptSSZT0Rl1G5so_Oq9eQ1yTOvaR_g7E-AKkbpfLfKy2gSc-Dy8GFYA/s220/kao_bigger.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQDWtx0l2HpVCb0xorstzwVyaO0Eqv8UwMXlwG-tKuVC_p6PDHD1m3OMFmgFi3rC68WJB5BIfL7OmpcFk5kfrEoiGyMc3mpbXPAkVLBUVFSN6s5XYzJoSWEeCnj9fejzp5is234A/s72-c/Screenshot_from_2013-07-22+23:29:53.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25101302.post-4295935657553702481</id><published>2013-03-01T07:25:00.002+09:00</published><updated>2013-03-01T07:26:43.745+09:00</updated><title type='text'>告知とか？</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
ちょっと、今年の春終わりから夏に掛けて連載の予定があります。&lt;br /&gt;
&lt;br /&gt;
こうご期・・・・いや期待はしなくていいです。&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://beepcapex.blogspot.com/feeds/4295935657553702481/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/25101302/4295935657553702481' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/4295935657553702481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/4295935657553702481'/><link rel='alternate' type='text/html' href='http://beepcapex.blogspot.com/2013/03/blog-post.html' title='告知とか？'/><author><name>BeepCap</name><uri>http://www.blogger.com/profile/17116660131133624856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-x0Cb00yxbi37ByjzMfugi9YHgOVFwVa7Zx2IKbrM-DsSVC6nmKu5NI7n83OG5kHHw2T0nKjtptSSZT0Rl1G5so_Oq9eQ1yTOvaR_g7E-AKkbpfLfKy2gSc-Dy8GFYA/s220/kao_bigger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25101302.post-3955713685872612785</id><published>2012-04-08T02:54:00.000+09:00</published><updated>2012-04-08T02:54:43.776+09:00</updated><title type='text'>VirtualGL　その１</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
知っている人は知っている。&lt;br /&gt;
というより知らない人には全く興味が湧かないであろうVirtualGLを導入するためのメモ&lt;br /&gt;
&lt;br /&gt;
beepcapです。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;さて、早速ソースをおとしてくる。&lt;br /&gt;
&lt;a href=&quot;http://www.virtualgl.org/&quot; target=&quot;_blank&quot;&gt;http://www.virtualgl.org/&lt;/a&gt;&lt;br /&gt;
公式サイトを見ると、version 2.3が最新のようだ（なぜか最新日付は2.3b1なんだが、通常のバージョンの付けかたの常識から考えれば2.3が最新のはずだ)&lt;br /&gt;
&amp;nbsp;ので、早速おとしてきて作業用のディレクトリに格納。&lt;br /&gt;
今回は鯖側はDebian系なのだが、端末側はpuppyLinuxであるため&lt;br /&gt;
どちらでも使用可能であろうソースを参照する。&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
さて、ユーザーズガイド も同じページにあったため参照すると&lt;br /&gt;
&lt;a href=&quot;http://virtualgl.svn.sourceforge.net/viewvc/virtualgl/vgl/tags/2.3/doc/index.html#hd004006&quot; target=&quot;_blank&quot;&gt;ユーザーズガイド&lt;/a&gt;&lt;br /&gt;
ソースパッケージの&lt;code&gt;BUILDING.txtを読めとある&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;わー親切。&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;気を取り直して &lt;/code&gt;&lt;br /&gt;
&lt;code&gt;ソースパッケージの当該テキストを読むと・・・ふむふむ・・・&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;要はcmakeしろと書いてある。長々と書いてあるのは他の環境ごとの情報だ。&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;どう考えても別ファイルにしたほうが読みやすいんだけど・・・&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;いいや&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;code&gt;$ cmake -G &quot;Unix Makefiles&quot;&lt;/code&gt;&lt;/blockquote&gt;
っと&lt;br /&gt;
&lt;br /&gt;
ん？&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
CMake Error at cmakescripts/FindTurboJPEG.cmake:23 (message):&lt;br /&gt;&amp;nbsp; Could not find turbojpeg.h in /opt/libjpeg-turbo/include.&amp;nbsp; If it is&lt;br /&gt;&amp;nbsp; installed in a different place, then set TJPEG_INCLUDE_DIR accordingly.&lt;br /&gt;Call Stack (most recent call first):&lt;br /&gt;&amp;nbsp; CMakeLists.txt:250 (include)&lt;/blockquote&gt;
&amp;nbsp;はぁ・・・つまり、libjpeg-turboがないと。&lt;br /&gt;
&amp;nbsp;そういやそんなことがガイドに書いてあったな。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://libjpeg-turbo.virtualgl.org/&quot; target=&quot;_blank&quot;&gt;http://libjpeg-turbo.virtualgl.org/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
ここからおとしてインストールするっと。&lt;br /&gt;
まぁlibjpeg-turboの方は各自やってもらうとしてこれで問題なくビルドできるはずだ。&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
$ cmake -G &quot;Unix Makefiles&quot;&lt;/blockquote&gt;
&amp;nbsp;よしよし&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;nbsp;-- CMAKE_BUILD_TYPE = Release&lt;br /&gt;-- VERSION = 2.3, BUILD = 20120408&lt;br /&gt;-- CMAKE_INSTALL_PREFIX = /opt/VirtualGL&lt;br /&gt;-- VGL_BINDIR = /opt/VirtualGL/bin&lt;br /&gt;-- VGL_DOCDIR = /opt/VirtualGL/doc&lt;br /&gt;-- 64-bit build&lt;br /&gt;-- Linking with static libstdc++:&lt;br /&gt;&amp;nbsp;&amp;nbsp; /usr/lib/gcc/x86_64-linux-gnu/4.6.1/libstdc++.a&lt;br /&gt;-- Enabling X Video support&lt;br /&gt;-- TJPEG_INCLUDE_DIR = /opt/libjpeg-turbo/include&lt;br /&gt;-- TJPEG_LIBRARY = /opt/libjpeg-turbo/lib64/libturbojpeg.a&lt;br /&gt;-- Building VirtualGL server components&lt;br /&gt;-- VGL_FAKELIBDIR = /opt/VirtualGL/fakelib/64&lt;br /&gt;-- VGL_INCDIR = /opt/VirtualGL/include&lt;br /&gt;-- VGL_LIBDIR = /opt/VirtualGL/lib&lt;br /&gt;-- Configuring done&lt;br /&gt;-- Generating done&lt;br /&gt;-- Build files have been written to: /run/shm/VirtualGL-2.3&lt;br /&gt;&lt;/blockquote&gt;
出来たみたいだ。&lt;br /&gt;
&amp;nbsp;じゃあ&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;nbsp;$ make &lt;/blockquote&gt;
っと &lt;br /&gt;
ちなみにVirtualGLはpicを有効にしておいて欲しいらしく先ほどのlibjpeg-turboはwith-picを付けないとこの時点でビルドエラーになる。&lt;br /&gt;
&lt;br /&gt;
ということでビルド完了。&lt;br /&gt;
&lt;br /&gt;
使うにはgdm止めたりしなきゃいけないようなので。&lt;br /&gt;
とりあえずここらで一旦投稿。&lt;br /&gt;
&lt;br /&gt;
続きはそのうち &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beepcapex.blogspot.com/feeds/3955713685872612785/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/25101302/3955713685872612785' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/3955713685872612785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25101302/posts/default/3955713685872612785'/><link rel='alternate' type='text/html' href='http://beepcapex.blogspot.com/2012/04/virtualgl.html' title='VirtualGL　その１'/><author><name>BeepCap</name><uri>http://www.blogger.com/profile/17116660131133624856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-x0Cb00yxbi37ByjzMfugi9YHgOVFwVa7Zx2IKbrM-DsSVC6nmKu5NI7n83OG5kHHw2T0nKjtptSSZT0Rl1G5so_Oq9eQ1yTOvaR_g7E-AKkbpfLfKy2gSc-Dy8GFYA/s220/kao_bigger.png'/></author><thr:total>0</thr:total></entry></feed>