UNIX歴史講座/スクレイピングハンズオン

きょうは座学とハンズオンのハシゴでした。
ハシゴは結構疲れることを学んだ。

平成生まれのためのUNIX&IT歴史講座 〜jus黎明期編/UNIX Fair編〜 – connpass

これです。

登壇されていた 岸田孝一さん(jus初代会長)
シグマ作戦の初代リーダーもしていたと知って驚きました。

花の手配の関係上、名前は知っていたので
実物がみたいなあとおもって行ったのだけれども
想像以上の、歴史の生き証人といった感じだった。

1970年代当時、UNIXのライセンス料は1台目が43000ドルで
当時230円/ドルだったため
ライセンス料だけで約一千万円して
今の物価で考えると気が遠くなるような値段だなとおもいました。

導入している企業や団体も少なくて
当然root権限をもっているもごくわずかで
「root権限をもっているひとの会」
のような集まりもあったらしい。
root権限って普通にあるものじゃなかったのか…

コードをネットからDLもできなかったので
(そもそもインターネットが無い)
コードを手打ちして性能を見るなどしていたという話を聞いて
できないことが多すぎてびびりました。

日本UNIXユーザ会(jus)が主催していたUNIX Fairについて
セミナーへの参加費が9万円だとかで
最近だと無料のセミナーが溢れているのに
当時の会報には
「 参加費が5桁に収まったのが画期的」
と書かれていて、感覚が違うの。たっか!ってなった。

Bill Joy氏の講演があって

> ジョイの最大の貢献としてはviエディタとCシェル(csh)の開発がある。

Wikipediaより引用

ものすごいひと呼んでいるなあとおもった。
viエディタの開発者、、、ふつうに講演聴きたい。

「平成生まれの」と銘打ってはありましたが
参加者はほとんど昭和生まれのように見えました。
面白かったけどなぁ。

司会の方がとても上手くて
司会が本職ではなく、普段はフリーランスエンジニアの
日本UNIXユーザ会幹事(元会長)という肩書きの方なのに

会場のメインな視聴者でもある
昭和生まれの方々にも通じるようなジョークもまじえつつ
平成生まれが置いてきぼりにならないように
解説的な合いの手を入れて進めてくださったので、手腕に感動しました。
すごい


そのあとは、そのままスクレイピングのハンズオンです。

[秋葉原] 初心者向けPython入門会 スクレイピング編 (初心者大歓迎!) – connpass

教材はこちらをつかいました。

https://github.com/KengoTobita/python_scraping

PCの🍎マークに重ねてラズパイのスッテカー貼ってあるので
さっそく
「素敵なラズパイですね!」
ってやりとりしました。
実はMacBookというオチ付きです。
特にPython系の勉強会では、必ずといって良いほど触れてもらえるし
ラズパイのひとで覚えて貰えるので
目印になって良いかもしれない。

レベル感的にはちょうど良いくらいで
ライブラリや関数名など
「見覚えあるぞ」
ってものも増えてきたの。
今後も継続してPythonやphp触っていきたいなあ。

慣れれば慣れるほどできることが増えていくの楽しい。

最後に講師の方が紹介してくれたツールが

https://github.com/scrapinghub/portia

GUIでスクレイピングできるon Dockerみたいなツールらしい。
これはちょっと試してみたいぞ。
また後日やってみたらblog書きます。

とりあえず勉強会に参加しすぎなアホみたいな感じになってきたので
しばらく大人しくします。疲れちゃうしねぇ

機械学習でタイタニック乗客の生存予測してみる

機械学習使っても技術的負債を残しにくいAWSのインフラ構成 – Qiita

機械学習でシステムを作ることができる人は世の中にたくさんいますが、作った後に運用したり保守したりする人がいるということまできちんと考えてシステムを作れる人はどれだけいるでしょうか。

エンドユーザーがハッピーになるからといってやたら高度な機能を作りまくって、考えなしに高利子なシステムを本番環境に乗っけてはならないと思っております。

上記サイトより引用

データのとり方、保存方法や保存先などの選定
今後、例えば機械学習をしたいとおもったときに
どのような構成にしていくかを考えられたら良いなあとおもったの。
機械学習について、なにも知らないより
どういった仕組みなのかくらい把握しておきたいなあということで
少しずつ勉強中です。
今日はKaggleに挑戦してみました。


【Kaggle初心者入門編】タイタニック号で生き残るのは誰?

この記事を参考にしながら進めた。
今回はJupyterNotebookの代わりにGoogleのColaboratoryを使ってみました。

Google Colabの使い方まとめ – Qiita

Google Colabの知っておくべき使い方

Google Colabとは、Jupyter Notebookを必要最低限の労力とコストで利用でき、ブラウザとインターネットがあれば今すぐにでも機械学習のプロジェクトを進めることが可能なサービスです。

上記サイトから引用
  • PythonやNumpyなど、機械学習で必要なほぼ全ての環境がすでに構築されている。
  • 書いたコード(ノートブック)は、グーグルドライブで保存される。

そして、Colaboratoryの画面こんな感じです。


次に、Kaggleに接続してアカウントを作成。

Kaggleとは

Kaggleは企業や研究者がデータを投稿し、世界中の統計家やデータ分析家がその最適化モデルを競い合う 
予測モデリング及び分析手法関連プラットフォーム及びその運営会社である。

ということで、まずは

https://www.kaggle.com/c/titanic/submissions

このページのRolesに同意して
「Join Competitions」をクリックしてコンペティションに参加します。

https://www.kaggle.com/c/titanic/data

こちらからデータをDL

Colaboratory

from google.colab import files 
files.upload()

https://www.kaggle.com/ユーザー名/account

ここのページから
「Create New API Token」をクリックしてDL

!mkdir -p ~/.kaggle 
!mv kaggle.json ~/.kaggle/

ダウンロードしたAPI Tokenをupします。

!chmod 600 /root/.kaggle/kaggle.json
!kaggle competitions download -c titanic
import pandas as pd 
import numpy as np 
train = pd.read_csv("./train.csv") 
test = pd.read_csv("./test.csv")

このあとはふむふむしながら手順通りにやってみます。
後半の大事そうな部分をピックアップしました。

# scikit-learnのインポートをします 
from sklearn import tree
# 「train」の目的変数と説明変数の値を取得 
target = train["Survived"].values 
features_one = train[["Pclass", "Sex", "Age", "Fare"]].values 
# 決定木の作成 
my_tree_one = tree.DecisionTreeClassifier() 
my_tree_one = my_tree_one.fit(features_one, target) 
# 「test」の説明変数の値を取得 
test_features = test[["Pclass", "Sex", "Age", "Fare"]].values 
# 「test」の説明変数を使って「my_tree_one」のモデルで予測 
my_prediction = my_tree_one.predict(test_features)
# 予測データのサイズを確認 
my_prediction.shape
#予測データの中身を確認 
print(my_prediction)
# PassengerIdを取得 
PassengerId = np.array(test["PassengerId"]).astype(int) 
# my_prediction(予測データ)とPassengerIdをデータフレームへ落とし込む 
my_solution = pd.DataFrame(my_prediction, PassengerId, columns = ["Survived"]) 
# my_tree_one.csvとして書き出し 
my_solution.to_csv("my_tree_one.csv", index_label = ["PassengerId"])
ls 
gender_submission.csv my_tree_one.csv sample_data/ test.csv train.csv
!kaggle competitions submit -c titanic -f my_tree_one.csv -m "Message"

↑最後まで進んだらKaggleのTitanicSubmossionsページに飛んで
「My Submissions」をクリックしたら競技終了です。

わーい👏

とりあえずやってみたので
あとは内容理解に努めようとおもいます。

Laravel

phpやりたい欲が高まったので
Laravelに手を出しました。

インストール 6.0 Laravel

ここを参考に進めました。
しょっぱなふるい日本語版でのバージョンで進めてハマったの。


理由http://laravel.jp/のクイックスタートのリンク先が、何故か
ドキュメントメンテナンス期間の終了したLaravelのバージョン4.2だったから。ぷんすか

なので、少し丁寧めに手順をまとめました。

https://getcomposer.org/download/

Composerのダウンロード手順に従って4行ぶんコピペ
インストーラーを実行した後、composer.pharのある層で下記を実行してパスの設定完了。

$ mv composer.phar /usr/local/bin/composer

composerコマンドが使えるようになったので
LaravelインストーラーをDL

$ composer global require "laravel/installer"


パスの通し方いつも忘れるのでまとめ

$ export PATH=追加したいパス:$PATH

今回のものだと~/.composer/vendor/binディレクトリへパスを通してくださいという指示があったので

$ export PATH=~/.composer/vendor/bin:$PATH

これを永続化させるため

$ vi ~/.bash_profile 
export PATH=~/.composer/vendor/bin:$PATH

Laravelをインストール

$ composer create-project --prefer-dist laravel/laravel blog


設定ハマったポイント

ふるい日本語版では

app/config/app.phpファイルと、その中の記述を確認しておいたほうが良いでしょう。

と書かれていますが
最新のバージョンではapp以下にconfigディレクトリはなく
appと同じ階層に

config/app.php

があります。
もし以前のバージョンを使うのであれば
念のためGitHubでオリジナルのソースコードと差分を確認しておいたほうが良さげです。

https://github.com/laravel/laravel/

パーミッションの設定もappの下にstorageディレクトリはなく、同じ階層にあります。
storageにあるディレクトリ全部に対し、Webサーバーによる書き込みアクセスができるように設定して下さいとありますが

$ ls -al 
drwxr-xr-x 5 username staff 160  9 10 01:26 storage

なので、パーミッションの設定も最新のLaravelであれば不要です。
Laravelのサーバーを走らせて

$ php artisan serve

下記にアクセスします。

http://127.0.0.1:800

わーい👏

深淵をのぞく時、深淵もまたこちらをのぞいているのだ。

WordPressの情報&HPに埋め込んであるGAで
誰が何月何日の何時にblogやHPを見に来ているのか、だいたい把握できているの。
深淵をのぞく時、深淵もまたこちらをのぞいているのだ。

誰がサイトに来ているかの解析ツールの徹底は、高校生の頃からです。
定期訪問者は、ほぼ全員誰か把握していたしIPアドレスに名前を紐づけて登録しておいたの。
blogを見に行くときはUserAgent書き換えてCookie消して、proxy経由で見にいく(いかない)。

たかがblogやHPにGA入れている時点で
オーバースペック感あるけれども
試してみたかったんだもん😆

今日はてんこ盛りなのでblogの内容を分割しました。

Laravel

機械学習でタイタニック乗客の生存予測してみる


systemのlogいつもわからなくなるのでまとめです。


Mac

$ tail -f /var/log/system.log

Ubuntu

$ tail -f /var/log/syslog

ディストリビューションや設定によって違うので
基本/var/log以下をみて確認する。

台風

低気圧で朝からダウンしていた🙄

台風は風の音がこわかったあ。

途中地震もきてリビングからキッチンに逃げた(謎)

不安で1日そわそわしていたのでつかれた😔


全然はなし変わるけれど

即席でラズパイで何かシステムつくれるのいいなあ

あこがれる

AWS制覇して自作コンピューター終わったらラズパイやりたい。

やりたい🙋‍♀️

花とIT共通点

DATADOG🐶Tシャツもらったあ
ちょうかわいい
これはかわいい
わーいわーい😃♡

三連休は台風だし衣替えして
どんすわのDockerfile読むやつやって
Laravelやりたあい

平成生まれのためのUNIX&IT歴史講座 〜jus黎明期編/UNIX Fair編〜

[秋葉原] 初心者向けPython入門会 スクレイピング編 (初心者大歓迎!)

14日勉強会ハシゴするんかい〜
って、ノリで申し込みをしてしまったので
むりそうだったらキャンセルするかんじかなあ。
台風は去っているとおもうのだけれども。

というか、IT関連会社の代表や顧問の名前
「みたことあるなあ」
ってことがおおいの、
花の手配していたときに見ることがおおかったからだと気づいたの。

慶弔関係の花をWEBから依頼するような会社って
都内の大きな企業だったり、業務を効率化したりしている会社がおおくて
IT系の大きめな企業の社長、役職のひとの名前を
申し込みのたびに、間違いのないよう念入りに確認するので
覚えたんだなあってかんじです。

花とITまさかの共通点(?)みつけてしまった。

「花屋さんからインフラ屋さんっていみわからん、共通点なくない?毎日お世話しなきゃとかの水やり的な?」
って言われたことあったの。
サーバーに水やり。。。。
難易度高いけれども、上手に効率よく水やりできるようになりたいなあ。

そういえば中華ランチに誘われて行ったの。
「AWS触ったことないけど有資格者です」
ってひとがいてびびった。
LPICとかAWSの資格系の参考書
Linux覚えたての頃に少し読んだけど秒でねむくなったの。
先日少し読んだら
「わかるかもー!もう少しがんばれば面白いかも」
「たぶん手で動かしながら覚えて、ある程度身についてから勉強しないと眠いなあ」
と感じたので、触ったことないのに暗記できるのすごい。

なんか他の資格もほしいとか言っていたけれども
他の資格とる前に、AWSさわった方が良いのでは!
と、おもいました🙋

しかし
「サーバーをたててもセキュリティ面が不安」
と話していて
確かに、わたしも最初のころ
乗っ取られからのAWS破産の話をいろいろと聞いて
セキュリティのことひたすら調べたなとおもいだしました。

マイニングに使われて高額な請求がくるだけなら
まだ被害者側だし
AWSに経緯を説明すれば支払わなくても良いになるけれど

国の主要施設などへの攻撃や
不正アクセスの踏み台に利用されたら
それらの行為に加担したということで、自宅に警察がくるの
怖すぎるし、きちんと調べようっておもったの。

たてたらすぐ落とせば良いのだけれども
継続してサービスを展開するのであれば
セキュリティは避けて通れないなあとおもいました。

ゆるく計画

現金もってなくて
お昼は学食で最安値を攻めれば足りるし良いかあ
って考えていたら焼肉ランチに誘われて
カードあるし大丈夫。。
っておもっていたのに

「ランチはカード使えません」

といわれて
ランチ代借りてしまった😢返さなきゃ

最近20時とかに帰宅して
いつの間にか寝てて
朝の3時とかに目が覚める、笑
おばあちゃん並の早寝早起きです。

Dockerファイル少し読んでいて
一つ一つの行を読むの楽しいなあってなる。
趣味サーバーに置いてあるSNSのDockerfileも読んでみたの
DockerからEC2に直置きしたいなーって言っていたけれども

データ適当にローカルなどにdumpして
Dockerfile参考に構築しなおすのやれば良いのでは!

思いついちゃった〜
わーい😃

念のため、戻せるようにEC2のスナップとっておこう。
そして最悪データ飛ぶかも、メンテ数日かかるかものアナウンスして構築しなおしだなあ。

というか、EC2にマストドン立てている系のblog参考に
先に構築やってみちゃうのも手かもしれない。
しかしバージョンが違うのネックだな。
そう考えるとバージョン上げるのは引っ越し後が良いのかもしれない。

徒然

意外とできた、わかってきた
っていうのが重なって
今のところ大丈夫なんだけれども

これ一人で続けていて完成させられる気がしない
っておもうと、この時間の意味あるのかしらと考えてしまう。
基礎ができていない状態なのがつらいんだよなあ

基本的なPCの仕組みやネットワークの構造がイマイチわかっていない気がする。
必要になったときに都度調べるスタイルで進めている。
体系的に学びたいなあとおもうので手段を考えようとおもいます。

技術に走るとどうしても独りよがりになってしまう傾向がある気がする。
帰属意識を強くもちたい。

周囲のひとが変わると
そのひとたちをよく観察するようになるのと同時に
自分自身の変化というか、今まで知らなかった部分が見えてくるの
面白いなあとおもった。

「このひとこういうところ凄いなあ」
っていうのが日々あって楽しい。

「企業に合わせようとしてくるひとは、結局企業側が合わせないといけなくなる」
というのが今日の印象的なフレーズだった。
逆説的だなあ。

就活するとき、相手の企業がどれだけレガシーな環境だろうと
技術力をつけてぶん殴れば変わっていくのでは?
とか安易に考えていて

実際にそんなこと超絶大変だと今はおもうのだけれども
(それくらいゴリラな精神力というか
俺が改革してやるみたいな精神って
もっと煙たがれるのかとおもっていたの)
意外とハマる相手にはハマるのだなあと感じた。

なかなか自分の考えを会話の中で話すの苦手なところがあるの。
正直に伝えているつもりでも
正確に伝わっていなかったら意味半減するので
そういった面での技術も身につけたいなとおもいました。

脳内自動整理機能

寝る前まで
わからんわからんってウンウン考えておくと
次の日に何故か理解が深まっているので

寝ながら脳内自動整理機能、侮れないなと思いました。
オートオルガナイズツールonブレーンだよ。

k8sに思いを馳せて眠ろうと思います。
ついにO’Reillyのk8s入門を買ってしまった。
以前、Java女子部主催のk8sハンズオンに参加する前日
あまりにも不安で衝動買いしかけた本です。

ううう
これ表紙なんだろう?
シャチ的な何かかな。

職場の先輩と珈琲トークで盛り上がったので
明日の朝、余裕があったらコーヒー豆を挽いて持参しようかなあ
って目論んでいます。

涼しくなると挽きたてホットコーヒー飲みたくなるね。

苦戦中

どんすわアプデか
dumpとってDockerからおろして再接続&再設定か
って延々と言っている気がする。
Dockerから降ろしたいです。
降ろせるかなあ。

いまの職場になって
仕事に夢中になり時間を忘れてタイムスリップ現象が頻繁に起こるので
朝ごはんを食べなくても働けてしまうのでは
ってかんじする。
お腹空かない。
正確には、没頭するとお腹空いていることに気づかないので気をつける。

わからなくて絶望感になることもあるけれども
「たぶんここまではできる」
を見極めて
なにかerrorが起きた場合に切り分けがしやすいよう計画を立てて
ハマったらどうするかまで考えておくと
だいぶ安心だと思った。自分が。

いままで趣味サーバーで独学でやってきたときは
わりと
「わからんとおもったら即諦めて次!」
ってテンションでやっていたので
達成感だとかの報酬系を、自分で用意するのに苦戦中です。