投稿

1月, 2016の投稿を表示しています

ヤフーデータサイエンスワークショップに行ったメモ

イメージ
角田直行さん Data infrastructure at scale
Yahoo のインフラの話 規模の紹介 100以上のサービス 日本の7割の人が使ってる Dub ブラウザごとにカウントしたアクセス数5億
支えるデータインフラ データパイプラインにおいて 使用しているツール テラデータ Storm Hadoop  Oracle MySQL Cassandra  ロギング対象 15000 nodes Hadoop 7000nodes
スマスマ会見時トラフィック 200億リクエスト 去年の同じ日で60億弱だから3倍以上。

これからの挑戦 指数関数的な扱うデータの増加 Hortonworks と協業してHadoop の改善 オープンソースへの貢献 オープンハードウェアへの貢献 Open compute project 海外データセンター 電力的なコスト


爆速機械学習サービス応用編 Arxive.org(間違っとるかも) ベイジアンフィルタ的な話。

Kibana + elastic search  http://qiita.com/hiyuzawa/items/bad1a7e29fc8d1820bea
なぜビッグデータが選挙の予測を可能にするのか ヤフービッグデータレポート 検索クエリは人の興味関心の分析に向いている 感情分析はtwitter の方が向いている 必要な目的に応じて様々な目的に対応したデータを活用する

Python で Slack bot の実装をしてみた

Slack の bot ツールでは以下の curl コマンドでメッセージ送信ができる。

Example$> curl --data "Hello from Slackbot" $'https://<hoge>.slack.com/services/hooks/slackbot?token=<token>&channel=<channel>' ok token をパラメータ設定して、データをおみやげにして POST すればメッセージが送られるとのこと。
かなり簡素(Authとか不要)なので勉強のため、Python スクリプトでメッセージ送るスクリプトを書いてみた。
使い勝手とかマジで糞だけど python に慣れるためということで。。

https://github.com/ks6088ts/SlackTool


だいぶ脱線して、以下のこともついでに勉強してた

json ファイルの読み書き
tokenとか見ちゃダメなパラメータ群はまとめて json ファイルに。
Pythonの基礎 ファイル(JSON)の読み込み編
これ参考にしてしまったけど、本来は with 使ってスコープ外れたらリソース開放みたいにナウい感じに書きたい。

Optionparser 機能
help とかあったほうがいいよねと思いたち、追加で実装。
使い勝手がまだ糞だけど使えることは確認した。
必須オプションが抜けてたら死ぬ機能は無いんかな。。。?
https://github.com/ks6088ts/SlackTool/commit/ef2272ca434f2548e1c7195785615558991c0747

パッケージ生成
slack の仕様に依存する処理はまとめてパッケージにしてみた。
ユーザーコード側には抽象化したインタフェースを提供する意図で。
__init__.py をおいて、from package import file_name って感じにロードすればOK
https://github.com/ks6088ts/SlackTool/commit/1bf346bb3d23d0b4601a5df01d6f966d028c156d


とりあえずスクリプトは動いた。
あとやりたいことはこんな感じかな。

- unitte…

cURL で web 上のコンテンツを自動ダウンロードする

イメージ
$ curl http://example.com/index.html -O すればダウンロードできるとかいうけど、
実際はそんなうまくいかない場合もある。
某動画サイトで cURL つかって動画のダウンロードを上記要領でやったらうまくいかなかった。


Chrome の developer tool 使って、Network タブからどんな HTTP リクエストがやり取りされているか見てみた。
やたらリダイレクトされてた。


-L つければ余裕かとおもいきやそうでもなかった。
Header を偽装すれば行ける?いやいけない。


こまったのでいろいろ調べてたら、
Chrome にはユーザー操作で発生したリクエストを cURL コマンドで教えてくれる便利機能があった。

Chrome Feature: Copy as cURL
(LORNAJANE Blog より引用)

右クリックでコピーして terminal にペーストして Enter。
万事解決した。
とりあえず複雑な処理してたら -L つけて、
データ取得のために -O つければ幸せになれます。

HTML ソースから、ファイル名の規則とかディレクトリの構成を推測すれば、
欲しいものだけ連番ダウンロードできて幸せになれたりします。
ということで
curlコマンドで連番サイトの全データを取得する もリンクしておきます。


めでたしめでたし。

Django 高速学習

参考になったページ:

Python Django チュートリアル
 読みやすい。
 このチュートリアルを追ったリポジトリがこれ。自分の復習用。
https://github.com/ks6088ts/DjangoTutorial

ファイルの文字コードをUTF-8に変換
 "UnicodeDecodeError: 'utf-8' codec can't decode byte" 的なエラーが出た。
 template として使っていた html ファイルのエンコーディングが違ってたというオチ。
 utf-8 に変換ってどうやるんだと困ったときに参照。

Test-Driven Development with Python
 テスト駆動開発と Django が同時に学べるすぐれもの。
 地味にテスト実装とか参考になるのでおすすめ。
 私はいきなりこれを読んだけど、日本語文献ということで Python Django チュートリアルの記事をはじめに読むのをおすすめします。


EC2 上で Django on python3 の開発環境作る話。

GitHubにSSH接続できるようにする方法     1  sudo yum update -y
    2  cd ~/.ssh/
    3  ssh-keygen -t rsa -C test@gmail.com
    4  sudo yum install -y emacs git
    5  emacs ~/.ssh/config
    6  chmod 600 id_rsa config
    7  cat id_rsa.pub # 公開鍵を github 側に登録
    8  ssh -T git@github.com

===============================================

Python3.4 のインストール Amazon Linux AMI 2015.03 Release Notesに従う。 $ sudo yum install python34-virtualenv -y
Python2->Python3 への変更処理
$ python --version Python 2.7.10 $ sudo alternatives --set python /usr/bin/python3.4
$ python --version Python 3.4.3 $ pip --version pip 6.1.1 from /usr/lib/python3.4/dist-packages (python 3.4)
===============================================
dotfiles の設定

   36  git clone git@github.com:username/dotfiles.git    37  ln -s /path/to/dotfiles/.emacs.d ~/ ===============================================
番外編
Test-Driven Development with Python
amazon linux上に、firefoxをインストール Selenium 上でのテストコード実行のため
===============================================

TravisCI で Github のリポジトリを自動テストに通す

簡単な yaml ファイル書くだけで自動で CI が回る、そんな時代。
https://docs.travis-ci.com/user/languages/python

TravisCI とのインタフェース

.travis.yml をリポジトリルートに置く。
python のコードをテストしたかったけど、いろいろテスト環境作るために依存モジュールのインストールスクリプトを書く必要がある。

依存モジュールの吐き出し
Python テスト環境の切り出しのために依存しているモジュールのピックアップが必要だったので以下のコードで環境を吐き出す。
$ pip freeze -l > requirements.txt

吐き出したモジュール群は
$ pip install -r requirements.txt
でインストールできる。これを .travis.yml の install: に書けば OK

Github のリポジトリにバッジつける
TravisCI のページに行って、バッジクリックすると Markdown のコードが取得できる。
これをREADME.md に追記すればOK.

wget でルーターに Basic 認証してみる

Basic認証
wget で Basic 認証を試してみる。 # Buffalo のルーターで Basic 認証して再帰的にページをダウンロード $ wget --http-user="root" --http-passwd="" http://192.168.11.1/ -r

Django で静的ファイルを参照できるようにする

Django で生成される動的なコンテンツと、静的ファイルベースで作成されたページ群を分離してリポジトリ管理するための更新作業メモ。

方針
- 静的ファイルのページ群をDjangoプロジェクトから切り出す
- Django のリポジトリに外部リポジトリとして追加する

Django 側の設定
project/settings.py に以下のコードを追加
# Static files directory
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static/static_repo"),
]
外部リポジトリの追加
$ git submodule add <リポジトリのURL> <生成先>
生成先を project/static/static_repo とする。

リポジトリのクローン
外部リポジトリは --recursive つけると自動的に clone してくれる
$ git clone git@github.com:username/repo.git --recursive

emacs の dotfiles を github で運用してみる

* Github に .emacs.d 以下のコードを置く https://github.com/ks6088ts/dotfiles
GitHubにSSH接続できるようにする方法 上のリポジトリを適当なディレクトリに clone (ここでは ~/repo/dotfiles)
* シンボリックリンクを貼る $ ln -s ~/repo/dotfiles/.emacs.d ~/