読者です 読者をやめる 読者になる 読者になる

素人技術日記

プログラミング初心者が技術ネタ中心で書くブログ。

2017/04/28

はじめに

情けないことに続けたいと言って3日で途切れてしまった悲しみから蘇った。

大学が始まると友達と飲んだり、夜に急いで終わらせなければいけないことがでてきてペースがつかめなかった。。

こんなところで言い訳している時点でダメ人間ではあるのだが、気を取り戻して再開することにした。

スクレイピング

機械学習を学んでいるのだがその際にスクレイピングの一つもできないとデータを集めるのにも困難なので、スクレイピングの方法を勉強している。

pythonだとurllibという標準ライブラリがあって非常に簡単にサイトの中身をダウンロードすることができるし、beautifulsoup4というライブラリを使用するとhtmlをぱぱっとパースしてくれるのですごい(笑)

あとsessionを使うためのrequestsもあるし、PhantomJSからブラウザの真似をしてみればもっと色々な情報にアクセスできるのでこちらも勉強している。

tty

本日始めてttyという概念を知った。

ずっと知らないでdocker run -it hogeとかやってたけど、改めて調べてみたときにAllocate a pseudo-TTYとか書いてあってなんじゃこれって感じで学ぶことになった。

このサイトで雰囲気をつかめた。

wa3.i-3-i.info

画像表示とかで

他の人ってコマンドラインから画像開くなるときにどうしてるのかすごい気になる。。

自分はalias pdf='evince'とかを設定してpdfを開いて見てるんだけど(この辺のコマンドすぐ忘れるのでw)

自分はguiを使うのカッコ悪いと思ってる年頃なのだが(実際にコマンドラインの方が早い気もするし)、他の方はどうしてるのかなーと。

何か知見があれば教えていただきたい。

sed

sedのパターン指定を区切る文字は、/ (スラッシュ) 以外でも問題ないことがわかった。

sed コマンドは「s」の直後に指定した文字を区切り文字として認識するみたいで、特に / 自体がパターンに含まれる場合は、/ の代わりに % や | などを区切り文字に使用すると、/ をエスケープする必要がなくなるらしい。

環境作ってる時にsedをエディターにすることが多いので、今後もこのテクニックは便利に使わせてもらう機会が多いだろう。

shellscript.sunone.me

2017/03/25

実装

本日は予定が詰まっていたり、睡眠を確保したりして十分に時間がとれなかった。

(それに加えてやる気が起きなかったというのも正直あるけど。)

情けない結果になってしまったが、その分明日早くから時間を確保して取り掛かりたい。

意味論的展開

色々な背景があって2年前くらいに購入した本。

ジャンルにするとデザインに分類されると思う。

2年前の時点では自分の知識が不足していたのか、この本を読みきることができずにいた。

久しぶりに読んでみたらギリギリ読むレベルに達していて非常に良書っぽい雰囲気を感じている。

デザインの本ではあるものの哲学的な要素を多分に含んでいる。

今後ブログで取り上げるつもりは特にないが、もし大発見があれば紹介していきたい。

Splatoon2

相変わらず良く出来ていた。

射会ではローラー強い現象が発生していてローラーを選択する人が多かった印象だが、ガチがスタートすればほぼ現在通りの分布に落ち着くのではないだろうか。

私はマニューバーを多く使ったが、扱いが簡単でいい結果も残せた。

楽しい。以上。

2017/03/24

Python環境設定続き

少し汚れてしまったOSをもう一度クリーンインストールしても良かったが学校の履修に関してなど何かとやることが多く、ここで環境が安定しなくなったら困るので、GWあたりに綺麗にすることにした。

せっかく綺麗にするならなんのディストリビューションを入れるのかも考えたいし。

現在の環境はxubuntu16.04なんだけど、もう少し面白い(ニッチな)やつ使ってみたいかも。

Ubuntu系統が入れるの簡単で甘えてしまうけど、勉強も兼ねてArchとかかな。

話が逸れたけど、そんなこんなで自分の環境少し汚してもいいかと思いPythonを元の環境に戻した。

matplotlibの描画ができなくて一瞬焦ったけど、すぐにどうにかできた。

ある程度潔癖症をやめれば流石に構築はすぐだった。

下の2つの記事が非常に参考になった。

dragstar.hatenablog.com

qiita.com

ゼロから作るDeep Learning

勝手に魚本と読んでる本。 3日目にしてやっと取り掛かることができた。

今日は3章まで。 多分この本は後から難しくなると思うので今のところは問題ないが若干不安。。

ニューラルネットワークの最も基本的な考え方とpythonの扱い方を覚えたって感じ。

ただバッチ処理に関しては書ける自信がない。

というかNumpyって本当にいろんな使い方があって、Pythonの最もおいしいところなのに全然慣れない。

下の資料のような基本的な書き方についても勉強できてよかった。

azuuun-memorandum.hatenablog.com

qiita.com

また明日時間を見つけて取り掛かる予定。

Splatoon2試射会

4時から試射会に参加予定なので楽しみ。

明日は午前中から用事があるので仮眠してから取り掛かりたい。

WiiUSplatoonも最近はほとんどやってないので腕がなまってる気はするけど、全力で楽しんでくる。

2017/03/23

dockerについて

結局Dockerfileからホストのディレクトリをマウントする方法はなさそうだった。

そこで複数コンテナは建てないがdocker-composeを使うことにして「めでたし、めでたし」としたかったが、GUIの部分で詰まった。

魚の本を勉強していると昨日書いたが、この本ではmatplotlibでグラフを書くのでGUIの環境を整えてあげなくてはならなかった。

調べてみたらDockerでGUIを使えるようにする記事はいくつか発見することはできたが、matplotlibが必要とするPyQt4がどうしても導入できなくて諦めてローカルの環境でやることにした。

PythonバージョンのQtがあることを恥ずかしながら初めて知ったので若干驚いた。(なぜか書籍はあんまり発達してない。みんなC++を普通に使うのかな?)

Python環境構築

今までneovimの超有名プラグインdeniteを使用するために適当にセッティングしたぐらいで、真面目に環境組んだことがなかったので少し調べてみることに。

(そもそもdocker使うのでローカルの環境を気にする必要もないと考えてたし)

調べると

pyenvが必要かどうかフローチャート - Qiita

こんな記事が出てきた。

「pyvenvとか知らないぞ。俺も脳筋でpyenv使ってきてた。」と思いpyvenvを調べた。

あんまりいい資料がなかったが

Python: pyenv, pyvenv, virtualenv – What’s the difference? | Abu Ashraf Masnun

この資料が割と分かりやすかった。

要は、

pyenvはPythonのバージョンマネジャーで、様々なバージョンや実装(CPython以外)をインストールできる。 pyvenvはPython3.4から導入された、他のプロジェクトと干渉しない仮想環境を作るツール。

ということなのだろう。(pyvenvなんて本当にコンテナ使うなら不必要な気もするが)

調べたのでpyenvを捨ててしっかりと環境を構築し直そうと思ったら、deniteが反応してくれなくて困ってる。

情けないことに今日も環境構築に時間を取ってしまい終了。

deniteは今までできていたことを考えると削除する際に失敗して溜まったゴミが悪さをしてる可能性もある。

OSを入れてから半年ぐらい経っているし、新学期も始まるのでここで一つクリーンインストールするのもありかもしれない。

2017/03/22

ブログ開設

今まで何度かブログを書こうと始めてみたけど結局長続きしなかった。

コンテンツが決まってなかったことが原因だと感じたので、技術のことを中心に書くと決めればできるのではないかと思った次第。

モチベーションとしては内容を濃くするよりも続けることに重きを置いてます。

真面目に勉強し始めたという点ではプログラミング歴1年未満のド素人(何行かJS書いたことがあるぐらいで、本当に書いてない人ですw)なので、間違ったこともガシガシ書いてしまいそうだけど多めに見ていただきたいです。

Rubyのしくみ

現在読んでる本。

あらかた読み終えたけど、ブロックとかRubiniusの説明があんまり頭に入ってこなかったので読み直したいと思ってる。

そのあたりが重要そうな雰囲気もあるし。

RubyRailsからプログラミングを始めたので馴染みがある。(というかまともに書けるのRailsぐらい)

言語処理系の本ではMatzの本が新しくて人気だけど、自分は一度挫折している。

コンピュータ・サイエンスの基礎の部分を最近勉強したし、この本も読んだので読めるようになっていると嬉しい。

青木さんのコンパイルの本は少し古いかもしれないけど良い本と書いてあったので、そっちから取り掛かってもいいかもしれない。

docker

魚の本を勉強しようと思っているのですが、anacondaを入れろって書いてあったのでdockerの公式レポジトリにあるanacondaのイメージを引っ張ってきた。

volumeに関しての知識がなくて、ホストのファイルをどうやってコンテナにマウントすればいいのか迷った。

結果としてdocker公式を読みなおしたことで理想通りの挙動は見せてくれたけど、Dockerfileでの書き方がわからずコマンドで解決しているのでどうにかしたい。

現在は

docker run -it -v ~/machine-learning:/var/ml pencilrocketman/anaconda コマンド

こんな感じでmachine-learningディレクトリを/var/mlにマウントしてる。

docker-composeを使えばできそうみたいな雰囲気があったけど、今回の場合複数コンテナ建てないから使うのかっこ悪いし上手にいかなかった。。

ホスト環境の使い慣れたneovimで開発したいので結構重要な問題。

この問題絶対解決法があるはずなので明日以降も探して行きたい。

そして早く本題であるDeep Learningの勉強がしたい。