Python環境をMac Bookに
Mac bookにPython環境を構築するときは、yumではなくてbrewで。yumはYellow Linux向けのパッケージ管理システムでec2サーバーなのでcentOSなどを選んだ場合に使えるものです。ちなみにMac Bookには最初からPythonがインストールされていますが、バージョン管理、外部ライブラリー管理などを用意にするために以下の方法で環境を整えました。
brewのインストール
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
$ brew update && brew upgrade
pyenvのインストール
$ brew install pyenv
$ echo 'export PYENV_ROOT="${HOME}/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="${PYENV_ROOT}/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
$ exec $SHELL -l
$ vim .~/.bash_profile :bashの確認
アナコンダのインストール
$ pyenv install -l :インストール可能なライブラリー確認
$ pyenv install anaconda3-4.1.1 : 最新のアナコンダをインストール
$ pyenv global anaconda3-4.1.1 :有効にする
pythonのバージョン確認
$ python --version
$ pip list
pipのupgrade
$ pip install --upgrade pip
おまけ:bottleを使って簡易サーバー環境をつくる
まずは、プロジェクトとなるフォルダーを作って、そのディレクトリ下でbottleをインストールする。そして、そこにindex.pyファイルを入れて実行して完了。
$ mkdir myapp
$ pip install bottle
$ mv index.py
index.pyの中身
from bottle import route, run, template @route('/hello/<name>') def index(name): return template('<b>Hello {{name}}</b>!', name=name) run(host='localhost', port=8080)
$ python index.py
http://localhost:8080/hello/world にアクセスして見れていれば成功!
参考サイト:
Bottle: Python Web Framework — Bottle 0.13-dev documentation
アメリカでアメリカ企業で働くなかでの英語雑感と対策
シリコンバレーに越してきて2週間目に突入しました。こちらは、Thanks Giving(感謝祭)ということで、木金が休日となり4連休です。人生はじめてのThanks Givingは、どこのお店も切り上げ営業で、会社支給のサービスアパートメントでゴロゴロしております。"Happy Thanks Giving!"とか言われても笑。
2年半勤めたシンガポールオフィスが自分の最初の海外生活だったのですが、こちらで一週間強働いてみて、やはりコミュニケーションが鬼門である。シンガポールの最初の一ヶ月の辛さと比べるとまだ和らいではいるものの、終わりなき道である。高ければ高い壁の方が登ったとき気持ちいいと言う人もいますが、この壁の高さには終わりがあって登ったとき気持ちがいいことを切に願う。シリコンバレー×英語で検索すると、皆さん苦労されながらも戦っている。頑張るぞぅ。
Product Manager に求められるスキルについて(Communication編) - シリコンバレーで働く文系のBlog
英語で働くために:英語の学び方 – 石川彩子のシリコンバレー生活
先週非常に感動したことは、アメリカ人の異なる意見に対する好意的理解。業界でも有名な弊社のVPに対して会議中に質問したところ、当たり障りない回答だったので、再度指摘しつつ自分の意見を述べる場面があった。会議終了後に、"Keep on fighting"と笑顔で僕のもとへ来てくれた。アメリカは、大した国だなぁと勝手に感動してしまった。You gotta fight for your right to partyとな、バイBeastie Boys。
仕事におけるコミュニケーションは、頑張れば届く感覚
- チームが自分以外英語ネイティブ(アメリカ人8人、シンガポール人1人、日本人1人)。シンガポールのときのチーム(アメリカ1人、オーストラリア人1人、インド1人、シンガポール人4人、フィリピン人1人、日本人1人)と比べて、偏りがある
- カウンターパートが全員アメリカ人。シンガポールのときはアジアの各国のオフィスと仕事をしていたので、非ネイティブが多かったが、今はカウンターパートが全員本社にいるため
- マーケティング職のため、会議、レポートが中心
- 会議での要点は、シンガポール生活のおかげでだいぶ理解できる
- 会議中の発言は当たり障りない感じではできてはいる
- アメリカ人の発言したがりは本当に凄い。この会議のメンバーで話しても絶対決まらない、わからないことでもガンガン話す。それ意味なくねって思ってまう
仕事以外での英語、まじでキチぃ
- ランチ、ディナーでの会話が鬼門。アメリカのセレブ、政治、ドラマ、スタートアップなどtopicがどんどん変わる
- ウィットに富んだ冗談が理解できない。ジョークを言えない
- セクハラ発言に厳しい。例えばシンガポールでニュージーランド人の同僚がよくShe is hot chick と言っていたので、ディナーでShe is hotと発言したら、空気が一瞬凍った。ここでは、She is attractiveというのが正しい表現であったようだ
対策
- 意見を発する:会議でも、政治でも、映画の感想でも、ご飯の味でも、意見がないことはその場において存在価値がないこと。付加価値生めてなくてもいい。賛成でも反対でも意見を持って発言ことは重要だ。と実体験として学んだ
- アドリブソロの練習:どう伝えるか。話しをするときに、常に頭を整理して話をすることは重要であるが、話す内容まで細かく整理してからでは、タイミングが遅れて入れないことがある。ここ最近は、大枠だけを決めて会話に飛び込み、口に任せて話す意識をしている。最後までたどり着けないときもよくあるが、練習。これは、ギターのアドリブに似ている感覚。ギターのアドリブが出来るようになるには、1)ひたすらコピー、2)スケールの暗記、3)頭でソロフレーズを理解する 4)場数を踏む 5)気持ちが頭を介さずに手に伝わりだす だとすると、英語のアドリブソロの場数を踏んでいるステージです。
- ニュースチャンネルを見る:基本テレビは嫌いで、テレビのない生活をしてきたが、アメリカのニュースチャンネルは、英語学習と時事ネタ収集において非常に有効だと思うので、毎朝ながら見をしている。連日、テック系企業のニュースは多いです。
- ランチは誰かと食べる:社内でもウマの合う奴、合わない奴はいるものの、カジュアルな会話の場数を踏むためにはランチは最高の機会なので、自分から積極的に誘って会話する。
- ナレッジ蓄積:教養と知識は言葉と文化を超えることは、シンガポール生活で大いに役に立ったので、常にスキルを磨く。一般教養とプログラミングとデータ分析の勉強はずっと続けましょう。
- 常にポジティブに:日本に帰ると30代に突入すると自分を否定できなくなって卑屈になる奴と出会うことがある。ネガティブな人といると気が重くなるので、常に前向きに謙虚に行く。その点、弊社のアメリカ人は本当にみんなポジティブで目がギラついている。最高。
アメリカ生活、まだまだこれから!
シリコンバレー本社で働くことになりました
シンガポールを離れ、今週からシリコンバレー本社で働きます。
Rを使ってユーザーのログデータの分析。URL編
やりたいこと
ユーザーのログデータから取ってきたパラメータ付きURLを分割して集計する。
パッケージのインストール
install.packages("dplyr")
library("dplyr")
csvファイルの読み込み
url <- read.csv("/Users/yuyu/downloads/view.csv", header=TRUE)
正規表現で分割する関数を定義
div <- function(x){return (strsplit(x, split="\\/\\?id=|\\&") )}
分割できるようにデータ型を文字列にして、分割
res <- lapply(as.character(url$uri), div)
配列から欲しいデータを抽出する関数を定義
get <- function(x){ return (x1[2]) }
実行
list <- lapply(res, get)
データの最初だけ表示:head(list)
書き出し:write.csv(list2, "list2.csv", quote=FALSE, row.names=FALSE)
集計:table <- table(list)
ディレクトリ確認:getwd()
メタ文字 特殊な意味を持つメタ文字はその前に バックスラッシュ記号をおくことで表現される。メタ文字は . \ | ( ) [ { ^ $ * + ? である
抜き出し
> hits <- grep ("\\?id=", uri)
> uri[hits]
置き換え
sub(".*\\?id=([0-9]+)", "\\1", contenthits)
分割
strsplit(id1, "\\&")
参考サイト:
オススメのデータ解析学習サイト:DataCamp
今週、前職の韓国人の同期からすごーく久しぶりに連絡がありました。
12月にハーバード大学の統計学のマスターを卒業する予定で、アメリカで職探しをしている模様。韓国のヨンセ大学で学士、ハーバード大学で修士。どんだけやねん。
ここ数ヶ月は、データ分析系の仕事に手を広げており、SQL, Hiveを触っていました。
Step.1が、テーブルを作る、データを引っ張る
だとすると、
Step.2は、引っ張ったデータを分析する
です。
というわけで、Rをもう一度やり直したいとハーバード修士に相談したところ、以下のサイトを紹介してもらいました。
DataCamp
Monthly: $29
Yearly: $300
感想
無料のトライアルがあるので、ひとまずそれでRを触っていますが、とても良い!
ローカルでRを使うときは、環境整備してターミナルでコマンドを叩いてという感じなのですが、ウェブ上に直接打ち込んで、コンソールに結果も出てくる。UIが綺麗で楽しくなります。
ビデオも英語で、語学勉強にもなります。最初から英語で覚えてしまった方が汎用性が高く良いです。
マジで、大学生の時にこんなサイトがあったら良かったなぁ。
Linux バージョン管理システム
今日は、バージョン管理システムを学びました。
分散型で開発を進めていくときにメリットを発揮するようです。
分散型バージョン管理
各開発者はレポジトリのコピーを “クローン” し、自身のハード ドライブ上にそのプロジェクトの 完全な 履歴を持ちます。このコピー (または “クローン”) には、オリジナルのすべてのメタデータが含まれています。
メリット
- チェンジセットのプッシュやプル以外の操作の実行は非常に高速です。理由は、ツールがアクセスする必要があるのはリモート サーバーではなくハード ドライブだからです。
- 誰の目にもさらされることなく、新しいチェンジセットのコミットをローカルで行えます。チェンジセットのグループの準備が完了したら、それらをすべて一度にプッシュできます。
- プッシュとプル以外のすべての操作はインターネット接続なしに行えます。したがって、飛行機の中でも作業できます。また、複数のバグ修正を 1 つの巨大なチェンジセットとしてコミットする必要はありません。
- プログラマーはプロジェクト レポジトリの完全なコピーをそれぞれ持っているため、変更を同時に 1 人か 2 人のプログラマーと共有してフィードバックを得てから、その変更を全員に公開できます。
コマンドラインインターフェース
- Git
- Marcurial
Marcurialの使い方
$ hg feature ブックマーク名 : ブックマーク作成
$ hg bookmarks :どのブックマークにいるか表示
$ hg update ブックマーク名 : ブックマーク切り替え
参考:
バージョン管理とは : 集中型 vs. DVCS - Atlassian Japan
Mercurial 対 Git:なぜ Mercurial を選ぶのか? - Atlassian Japan
おまけ
-ls -la : 隠しフォルダ・ファイル(.から始まるやつ)も全て表示される
Amazon ec2でサイトを公開する
Amazon ec2でサイトを公開してみます。
1) apatchが入っていることを確認する
$ httpd -v
Server version: Apache/2.4.23 (Amazon)
Server built: Jul 29 2016 21:42:17
2) /var/www/html/ ディレクトリーにファイルを入れる
ローカルからAWSにアップロードするとき
2段階を取るのは、/bar以下は、sudo権限なので、一度にアップできなかったためです。
2-1) ホーム以下にアップロード
scp -i ~/.ssh/秘密鍵 アップしたいファイルの場所 ホスト名@IPアドレス:送りたい場所
2-2) AWS内で/var/www/htmlにアップロード
mv: ファイルを移動、ファイル名前を変更
ということで、無事にできました。
さて、LinuxってOSなのかと思ってたのですが、Linuxパッケージの総称だそうで、以下のような種類があるみたいです。
- CentOS
- Fedora
- Debian
- Ubuntu
AWSでサーバーの種類を選ぶ画面で確かに出ていたような。。また一歩deepになってきた。