イヤホンを買った
もう何個目かわからないくらいイヤホンは買ってる。といってもオーディオマニアとかそういうのではなく、単純になくすからだ。高いやつでそれをやっちゃうと後悔が大きいので、いつも安めのやつを買うようにしている。Beatsとか買っちゃってなくしたらきっと立ち上がれなくなる。イヤホンは消耗品として割り切るようにしている。
イヤホンに求める条件
オーディオマニアではないといってもささやかながらこだわりがある
- L型プラグ
- 赤い
- 安い
L型プラグは外せない。イヤホンを買い替える理由は無くすというのが不動の一位だが、断線というのもそれに追随している。断線個所する場所はプラグ付近とイヤーピース付近だと思うのだが、そのプラグ付近への断線リスクをL型プラグは低減してくれる。なので、買ったイヤホンをL型じゃないという理由で返品をしたこともある。
その他の理由は個人的な趣味とか懐具合ですね。なぜだかイヤホンは赤という固定概念が昔からありまして買ってきたイヤホンは全部赤いですね。ほかのイヤホンでいいなと思っても赤がカラバリにないというだけであきらめたりもします。安いというのもよくなくすからからという理由で高いのは買いません。予算としては1500~2000円くらいでいつも考えてます。
よっぽどの低品質でなければ音はまったく気にしません。いい音で聴きたい場合はポタアンつけたり、ヘッドホンします。でも家を出る場合は荷物になるのでもっていきません。予算にあげたこのあたりの価格帯ならば聞くに堪えないクソ音を出すイヤホンは無いんで。
オーディオテクニカ CK330M
ということで、今回買ったのはこれ。オーディオテクニカ「CK330M」。価格としては税込で1800円くらいだったと思う。
オーディオテクニカ カナル型イヤホン(レッド)1.2mコード ATH−CK330M RD
- ジャンル: ヘッドホン・イヤホン
- ショップ: コジマ楽天市場店
- 価格: 1,948円
L型だし、赤いし、安いし最高じゃないですか。さすがオーディオテクニカ。音も問題ない。ただ、コードが固いかな。固いからしまう時に少しコードが暴れてポケットとか、ケースとかに収まってくれない時がある。でもそれは裏を返すと断線に強いという長所なのかも。
ということで、しばらくはこれと付き合っていきます。
Ubuntu16でapt updateするとhashsumエラーが出る
普段使っているUbuntu15が2016/7/28でサポート切れしていた。ということでUbuntu16をこれからは使っていこうかと。LTSだし。
apt updateができない
Ubuntu16のインストールまではさっくり終わったのだが、apt updateするとハッシュサムがあわないから更新しなかったよというメッセージを受け取った。これでは使えないではないか!ということで調査の旅に出たわけだが、どうやらバグだということまでは分かった。このバグがフィックスされたとしてどうやって適用したらいいのだろうか?頼みのaptが死んでいるのに、、、
apt.confを編集
askubuntuで解決策を見つけた。どうやらプロキシ関連のバグという事なので、apt.confにプロキシの設定をちょっと入れるだけで解決するとの事。
/etc/apt/apt.conf
Acquire::http::No-Cache true; Acquire::http::Pipeline-Depth 0;
この後にapt updateしたら通った。apt upgradeをしてみたら300近く更新が見つかった。ということで、これで解決。いつもの環境にするのに時間がかかるんだろうなぁ。
医療を疑え 代替医療のトリック
サイモン・シンによるシンプソンズ関連の本が出るときいてワクワクだったけど、そういえばこれを未読だったことを思い出した。サイモン・シンファンの風上にも置けないな。
- 作者: サイモンシン,エツァートエルンスト,Simon Singh,Edzard Ernst,青木薫
- 出版社/メーカー: 新潮社
- 発売日: 2010/01
- メディア: 単行本
- 購入: 38人 クリック: 1,000回
- この商品を含むブログ (115件) を見る
目次 第1章 いかにして真実を突き止めるか 第2章 鍼の真実 第3章 ホメオパシーの真実 第4章 カイロプラクティックの真実 第5章 ハーブ療法の真実 第6章 真実は重要か?
代替医療はプラセボである
代替医療を臨床医学の見地からそれぞれ批判していくスタイルで本は進む。しかし、どの代替医療にしても効果が見られていてもプラセボ以上のものでは無いとまでしている。鍼や、カイロプラクティック、そしてハーブも何かしらの効果はあると思っていたのだが、その効果も本書ではプラセボだよと喝破する。
僕からしたらこれらの代替医療は補助的な効果を期待していたのだけど、施術する方としては万能医術として施しているのだとは思わなかった。鍼やカイロプラクティックなら、肩こりとか腰痛とかその辺の治療には効きそうなものだが、風邪にも効きますとか、内臓疾患にも効きますとかとか言われたらそら眉唾だろうと思いそうなものだが、日本とその他の国では意識に違いがあるのだろうか?
プラセボは悪か
コラーゲンを多く含む食事を前にしてプルプル~と言っている人をよく見かけるが、そんな時にただのタンパク質だよ、コラーゲンを食べても希望しているコラーゲンにはならないよと口に出して言いたくても、そこはぐっとこらえる。それは野暮だからだ。しかしプラセボによって効果がもしかして出るのでは?とちょっと思う。これがコラーゲンになるかならないかぐらいならかわいいものだが、こと医療に対してはなんとも躊躇してしまう。だが「病は気から」ともいい、患者に期待を持たせる事はいいのではないだろうか。本書の中でも「祈りは効果ある」と非科学的な事を持ち出すぐらいなので、プラセボの効果を完全には否定していない。
ホメオパシーへの徹底的な批判
第3章でふれながらもそれ以降でも折に触れてホメオパシーをくさしている。他の代替医療の話題をしながらもホメオパシーを引き合いに出して批判する姿は恨みでもあるのかと思うくらいだ。こればっかりは救いようも無いくらいインチキだと確信しているからなのだろう。何らかの成分を何万分の1に希釈したレメディを薬だと出されたら、効果はまったく期待できないと思うだろう。脱水症状には効くという皮肉がとても面白い。
代替医療に力を入れるチャールズ皇太子に対して、扉でチャールズ皇太子にささぐと書くなんてよっぽどの警鐘を鳴らしたいのだと思った。
サイモンシンにはずれなし
とにかくこの人の本は面白い。シンプソンズの本もきっと期待を裏切らないだろう。
それにしても「ビッグバン宇宙論」から「宇宙創成」に変わったようにこの本も文庫本になると「代替医療解剖」に代わる。出版界ではよくある話なんだろうか?
- 作者: サイモンシン,エツァートエルンスト,Simon Singh,Edzard Ernst,青木薫
- 出版社/メーカー: 新潮社
- 発売日: 2013/08/28
- メディア: 文庫
- この商品を含むブログ (30件) を見る
- 作者: サイモン・シン,青木薫
- 出版社/メーカー: 新潮社
- 発売日: 2006/06/22
- メディア: 単行本
- 購入: 2人 クリック: 51回
- この商品を含むブログ (133件) を見る
- 作者: サイモンシン,Simon Singh,青木薫
- 出版社/メーカー: 新潮社
- 発売日: 2009/01/28
- メディア: 文庫
- 購入: 12人 クリック: 394回
- この商品を含むブログ (130件) を見る
Scrapyチュートリアル
インストール
前回記事より。 dragstar.hatenablog.com
プロジェクトの作成
まずはプロジェクトを作る
scrapy startproject tutorial
ツリー構成はこんな感じ
tutorial/ ├── tutorial │ ├── __init__.py │ ├── items.py │ ├── pipelines.py │ ├── settings.py │ └── spiders │ └── __init__.py └── scrapy.cfg
一番上のディレクトリをホームとする
Itemの作成
スクレイピングした結果をItemクラスに保持することになる。items.pyにItemを定義する。
# items.py import scrapy class MyItem(scrapy.Item): title = scrapy.Field() link = scrapy.Field()
どういった情報を保持していくか、用途に合わせて項目を定義していく。
Spiderの作成
実際にスクレイピングをしてくれるSpiderを作る。処理の中でItemにデータを入れるのを忘れずに
# spiders.py import scrapy from scrapy.selector import Selector from tutorial.items import MyItem class MySpider(BaseSpider): name = "MySpider" #spiderに名前を付ける。実行時に使う allowed_domains = ["test.com"] start_urls = [ "http://www.test.com/foo/bar" ] def parse(self, response): item = MyItem() sel = Selector(response) ## この辺でスクレイピング処理を書いていく item['title'] = sel.xpath('//html/head/title/text()').extract() item['link'] = sel.xpath('//a/@href').extract() yeild item
コツとしてはFirefoxとかで対象サイトの要素をあらかじめ見ておくと希望するものにたどり着きやすい。よっぽどのサイトでなければCSSとかちゃんとやってるのでクラス指定とかID指定とかするとよりいい感じで取得できる。
shell
scrapy shellを動かして試しながらの使い方がおすすめ。xpathの使い方に慣れることができる。また、Itemにどんな感じで帰ってくるかも確認できるのでその後のpipeline作成にも役に立つ。
scrapy shell "http://www.test.com"
Pipelineの作成
スクレイピングした結果を料理するのがPipeline
# pipelines.py class MyPipeline(object): def process_item(self, item, spider): # Spiderが実行されてitemに格納されるのでitemをDBにいれるなりなんなり t = item['title'] link_list = item['link'] # listで帰ってくると仮定 for l in link_list: print(l) return item
パイプラインを有効にするにはsettings.pyを変える。コメントアウトされているので外して、作ったpipelineを指定する
# settings.py ITEM_PIPELINES = { 'tutorial.pipelines.MyPipeline': 300, }
jsonとかで出力できるので、必要なければpipelineはなくてもいい。
実行
例は実行して結果をjson形式に出力するコマンド
scrapy crawl MySpider -o output.json
CSVで出力するコマンド
scrapy crawl MySpider -o output.json
CSVに出力するやりかた。拡張子で勝手に判定してくれる
scrapy crawl MySpider -o output.csv
他にもログを残すやり方とか
scrapy crawl MySpider --logfile scrapy.log
スケジューリング
と、うまくいったら勝手に実行してほしいですよね。スケジューラはcrontabでもなんでもいいけど、実行するときのシェルスクリプトにちょっと手間取った。
export PATH=$PATH:/home/xxxx/.pyenv/shims cd tutorial scrapy crawl MySpider --logfile scrapy.log
こんな感じにした。うまくscrapyへのパスを指定しないと「scrapyなんてコマンド知りませんけど」ってなる。僕の場合はpyenvを使っているのでscrapyのパスも/home/xxxx/.pyenv/shimsにあったのでそれを指定した。which scrapyとかで探せばいい。あとはプロジェクトのホームディレクトリに移動して実行コマンドを打つ、といったスクリプト。実行権限も必要に応じて。
最後に
クローラは自動ゆえ便利だが、頻繁に実行すると当然相手サーバにアクセスすることになる。先方に迷惑がかからない程度に節度をもってやりましょう。こんな事件も昔にあった事ですし、、、