見習い魔法使いの日常

果たして魔法が使える日は訪れるのか!?

論文読みの準備

前回の更新からもう1ヶ月以上空いていることに驚きです。

少し気持ちが入れ替わったというか、最近やっていることを軽くまとめて更新していこうと思います。
今まではでかい記事を書こうとして、少しずつまとめていたものの結局最後までたどり着かなくてお蔵入りしてたので。

最近ツイッターで見かけた、こちらのスライドを参考に論文を読むための準備を整えました。

www.slideshare.net

僕もいくつか英語論文を読みましたが、英語力のなさも手伝ってそれはもう多大な時間をかけて最初から最後まで読んでましたね。
それも一回では理解できないので、なんども。

何本か読んで行くうちに、論文中でも重要そうな箇所とそうでもない箇所があることに気づいていましたが、それでも一応全部目は通すから時間はかかるかかる。
上記のスライドを見て、読み方をパクることにしました。

せんせもいってました「世の中、パクリ学習ですよ!!」(<-いい意味です)

今のやり方は無駄が多し!!

ということで、最後のスライドの文書をLatexで作りました。

早速スタックされた論文5本くらいを読んでいきます。

Ubuntu16_04にDropboxを入れた

サーバ側とファイルをあれこれするのがめんどくさくなったので、クラウドストレージサービスを用いてイライラを解消することにしました。

手順としてはこちらのページのまんまです。
www.dropbox.com

$ cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf -
$ ~/.dropbox-dist/dropboxd

あとはスクリプトを落としてきて、パスを通してあげます。
僕はホームディレクトリに .bin を作ってそこにあれこれ入れています。

# 個人の好み
$ mkdir .bin && cd .bin
$ echo '~/.bin:PATH' > ~/.zshrc
$ exec $SHELL -l
$ wget -O dropbox "https://www.dropbox.com/download?dl=packages/dropbox.py"
$ chmod 750 dropbox
$ dropbox
Dropbox command-line interface

commands:

Note: use dropbox help <command> to view usage for a specific command.

 status       get current status of the dropboxd
 throttle     set bandwidth limits for Dropbox
 help         provide help
 puburl       get public url of a file in your dropbox\'s public folder
 stop         stop dropboxd
 running      return whether dropbox is running
 start        start dropboxd
 filestatus   get current sync status of one or more files
 ls           list directory contents with current sync status
 autostart    automatically start dropbox at login
 exclude      ignores/excludes a directory from syncing
 lansync      enables or disables LAN sync
 sharelink    get a shared link for a file in your dropbox
 proxy        set proxy settings for Dropbox

$ dropbox start

Dropboxは他のサービスと比べると容量は少ないですが、今回の用途ではそれほど必要としないので問題ありません。

線形代数の勉強してます

本を読んだら感想をブログに書こうと思ってはや、4ヶ月。
これまでたった一冊の本も完読することができてませんでした。

平行して同時に読み進めているのはいくつかありますが...。
教授に「参考書に1週間もかけるな!!」って言われたのを思い出します。

早速本題へ。

今日はとある事情により図書館で時間を潰そうと立ち寄ったところ、「マンガでわかる線形代数」という本に目が止まりました。
中を見ると登場人物の女の子がたいそう可愛いではないか。
それに、中も絵(マンガ)がメインで、線形代数の全体像を掴むのに適してるかも。

ということで全部読みました。

全体像を掴むことが目的だったので、本の全てを理解するほど深くは読み込まず、2時間かからないくらいで読めてしまいました。
うむ、満足。

別の教材を使って線形代数を勉強していますが、字・数式ばかりでなんちゃって理系の僕には辛かったんですよ。
マンガ本は敬遠しちゃう傾向があったのですが、副教材としては素晴らしいかもしれないですね。

とりあえず、完読一冊目!!

線形代数をやるに至った経緯とかは、本命の別教材を終えた時にでも書こう。

図書館に来て、適当な本を読むのも案外楽しいかも。

www.amazon.co.jp

YAPC::Kansai2017に参加!!

 2017年3月4日のYAPC::Kansaiに参加してきました。このイベントが私にとって初YAPCになります。普段刺激のない生活を送っているため、こういったイベントで様々な方のトークやLTで得られた刺激は自分の殻を破る大きなチャンスだったと感じています。今回のブログでは新しく気がついたことをテーマに3つの項目に分けて書きました。

1.パフォーマンスについて

 私の拝聴したトークでは、Webアプリのパフォーマンス向上という内容を含んだものが多かったように思います。ミドルウェアの極力排除や、キャッシュの導入の検討などこれら全てが新たな知見となりました。これらは、学生という身分で好き勝手に書いている私にとって、今までこれらをかけらも検討したことがないことに気がつきました。はじめは考えていたような気もしないでもないですが、最終的に動けばオーケー状態です。別のトークでホワイトハッカーの話がありましたが、パフォーマンスを極限まで向上させてこそ、社会で役立つエンジニアだと感じています。私もスクリプトが動いたところで、一息いれパフォーマンスに関して検討する習慣を取り入れていきます。最後に、しかしお金をかければパフォーマンスは上げられるという話を聞いて、学生にはまだ早い?大人の事情もあるのだと感じました。

2.バージョンについて

 次に普段全く意識してないと感じたことがバージョンです。Perlのバージョンに関してのトークを聞いてそう思いました。あるバージョンから使えなくなるとか、新しい機能が追加されるなど正直全く気にしたことがありません。単に、最新を入れる不具合があったら落とすというのが私です。OSの標準Perlのバージョンが異なるなどありましたが、それによって各OSのバージョンにあったスクリプトを書かないといけないとすると確かに大変。お恥ずかしい話ですが、新たなバージョンがリリースされたら、変更点も意識するよう頭の片隅に留めておきます。

3.Perlについて

 最後はPerlについて、YAPCPerlが大元のイベントです。関西にこれだけの人が集まる気かっけとなったPerlの魅力というものは凄まじいものだと参加して、改めて思い知りました。Perlに関して笑いが起こるたびに私も楽しくなりましたね。一番感動したのは、Perlの良いところを理解してPerlを駆使している人たち。多くのプログラミング言語の特徴を理解し要所要所で使い分けて運用している人はどの言語もある程度かけるそうです。普段は色々書いていてもやっぱりPerlが好きなんですね。

まとめ

 うーん、読み返すと技術的な気づきはしょぼい気もしますが...精神的には数多くの刺激を受けることができて大収穫です。このイベントに来なければきっと考えなかったことや見落としていたことがたくさんあります。また、学生が社会人の中に混じるのもいい経験になりました。全体を通じてひしひしと感じたは、必死に食らいついていくこと。新しい技術がどんどん出てきて、皆さんそれらの知識に幅広く精通していました。多くの人が分かっている中で分かっていないのは完全な努力不足。学生生活も残り1年になってしまった。残りの時間、悔いのないよう精進し続けます。

 最後になりましたが、スポンサー企業の皆様、個人スポーサーの方々、運営スタップ及び参加者の皆様ありがとうございました。

Goを始めてちょうど一ヶ月。go doc は素晴らしいぞ!!

Goを勉強し始めてちょうど1ヶ月となりました。
といっても、まだ使っているわけではないため初歩的なことしか書けません...。

今日はGoを勉強していく中で便利と思ったことを書こうと思います。

はじめに、Goの学習状況について。
利用した本は以下のものです。

https://www.amazon.co.jp/プログラミング言語Go-ADDISON-WESLEY-PROFESSIONAL-COMPUTING-Donovan/dp/4621300253/ref=sr_1_4?ie=UTF8&qid=1480901701&sr=8-4&keywords=golang

本を全部読んだわけではないのですが、Goの初歩的な文法は抑えられていると思います。この後、インターフェースをやり、噂のゴルーチンとチャネルをやる予定です。


では、メインのgo docについて。
ドキュメント読む時は、Goの公式サイトにアクセスしてドキュメントを読んでいました。

ある日公式サイトが落ちてドキュメントが読めないという状況で、友人から紹介された方法に感動しました。

% godoc -http=:8080

これで、ローカル環境に指定したポートでサーバがたち、htmlでドキュメントを読めます。

始めての体験に思わず感動。
これで、ネットが無くてもプログラミングできるじゃないか!!

この感動を誰かに伝えたいという願望にかられ、別の友人に伝えたところ...。
「わざわざ、htmlで見る必要あるの?godoc で観れるでしょ 」
との言葉をいただきました。

確かに( 笑 )

思えば、perldocもそうやって使ってました。

ここでふと思ったのが、pythonではこういう機能を使ったことがないということ。

調べてみると、下の記事でわかりやすく説明されてました。
http://symfoware.blog68.fc2.com/blog-entry-884.html

まとめると、大抵のプログラミング言語にはドキュメントを簡単に読める環境が出来上がっているということ。
そして、ドキュメントを読みましょうということですね。

いつの間にか、Goと関係ない方向に行ってしまいました。

次は初心者がゴルーチンとチャネルを触ってみたって記事を書きたいと思います。
また、年内にghqの読み会をやりますので、そのことについても書けたらいいかな。

GithubのSSH Key の設定

今まで、作成したプログラム置き場としてGithubを使ってきましたが、ごちゃごちゃしてめんどくさかったので自分なりに綺麗にしてみました。

そのメモです。結構はしょってます。

SSH Key の設定

$ ssh-keygen -t rsa -C "email@address"                         
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/user_directroy/.ssh/id_rsa): github
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 


これでgithubgithub.pubファイルができるので、これらを~/.sshに移動させます。

$ mv ./github* ~/.ssh/

次はGithubSSH Keyを登録します。
ユーザ情報からSettings -> SSH and GPG keys でいけます。

New SSH Key で 適当なtitleを設定し、SSH Key を貼り付けます。
貼り付ける内容は以下の出力をコピペすればいいでしょう。

$ cat ~/.ssh/github.pub

Github上での設定が完了しましたら、あと少し!!

$ ssh -T git@github.com -i ~/.ssh/github

これで、成功すればSSH Keyの登録完了です。

(おまけ)

最近友人からghqというツールを紹介してもらいました。
クローンしたリポジトリを ~/.ghqで管理してくれというありがたいものです。
私にとっては非常に便利ですので、おまけで。

詳しい情報は以下を参考に。
Goで書かれているそうで、落ち着いたら一度読んでみたいですね。

github.com

では、brewを使って入れていきます。

$ brew install ghq

無事完了しましたら、早速使っていきます。

$ ghq get repository-URL
$ ghq list

私はかなりずぼらなので、どこにクローンしてきたのか忘れて探したりすることもあったのですが、これでもその労力はなくなったと思っても良いでしょう。

といっても、Githubで開発経験はありませんし、しばらくは作成したコード置き場になりますが...

ではでは

plenv入れました!!

しばらくの間中途半端にしていたPerlの学習を本格的に始めることになりました。

数日前、Perl製のAmon2というWebフレームワークを使ったのですが、ソースコードが全く読めなくてびっくり!!

Perlはメインではなくサブとしてのんびり学習してきましたが、現状私のPerl力の低さが判明しましたので、近日中は本腰入れてやろうと思ってます。

ということで、システムのPerlではなくplenvをいれて使おうとしたのですが、うまく切り替わらなかったりしたので、メモを残しておきます。

至らない箇所などありましたら加筆、修正します。


まずは必要なものをインストールして、パスを通す。

brew update
brew install plenv
brew install perl-build
echo 'if which plenv > /dev/null; then eval "$(plenv init - zsh)"; fi' >> ~/.zshrc
echo 'export PATH="$HOME/.plenv/bin:$PATH' >> ~/.zshrc

Perlのバージョンを指定してインストール。

plenv install --list
plenv install 5.18.0

ちょっと時間がかかりますが、完了後バージョンを切り替えましょう。

plenv rehash
plenv versions
plenv global 5.18.0
perl -v

この時にきちんとバージョンが切り替わっていることが確認できれば安心。
私はここでうまく切り替わらなくて時間がかかった。

できればcpanmも入れてしまいましょう。

plenv install-cpanm
cpanm --self-upgrade # cpanmのアップグレード

これで、とりあえず環境は整ったかな...という感じ。

さて、やるぞ!!