gaaamiiのブログ

悪気なく間違ったことを書いている時があります。コメントやTwitter、ブコメなどでご指摘ください

10年戦えるデータ分析入門借りて読んでる

こちらも借りて読んでる。

自分は最近、社内で非エンジニア向けSQL勉強会をやっていて、間違えたこと教えたりしたらまずい。なので、こういう本はとても助かる。

第1章

読んだ。なんでSQL必要なの的なイントロ。

第2章

読んだ。

第3章

読んだ。以下のようにサンプル取得するやつ知らなかった

select *
from users
where random() < 0.01;

第4章

読んでる。

第5章

第6章

第7章

第8章

第9章

第10章

第11章

OpenSSH実践入門借りて読んでる

SSHよくわからない」と会社の日報に書いたら、ボルダリングPython好きな先輩が、OpenSSH実践入門を貸してくれた。

OpenSSH[実践]入門 Software Design plus

OpenSSH[実践]入門 Software Design plus

借りパクせずに早めに読み切るためにブログに読んだ内容を書いていく。

1章

  • OpenSSHはOpenBSDの開発チームによって開発されたOSS。手元のMacman ssh ってやると、名前が ssh -- OpenSSH SSH client (remote login program) になっているのでいつも使ってるsshクライアントはこれだったんだなと認識した。
  • プロトコルバージョン1と2がある。
  • どちらのバージョンも、セッション確立の際にホスト認証(クライアント側が接続先のホストが正しいかを確認)とユーザ認証(サーバ側が接続元のクライアントがただしいか確認)を行う。

公開鍵認証について

いまGithub使うときとかに使ってるやつ。使い始めにどういうものか調べたはずなのにしばらくいじらないうちにどういうものか忘れていたので、改めて理解するために下に図を書いておいた。

公開鍵認証の流れ

f:id:shgam:20170903122618p:plain

秘密鍵があればsshできることを確認

理解が曖昧な時は、「ssh-keygen したときに id_rsaとid_rsa.pubってのができたから、id_rsa.pubってのも必要そう」みたいな認識だったけど、上の図のように、ホスト側に登録しておくものなので、接続のときにユーザ側の ~/.ssh に置いておく必要はないはず。そのことを確認しておく。

# .sshに秘密鍵と公開鍵がある状態でgithubへssh接続
~/.ssh$ ls
config      id_rsa      id_rsa.pub  known_hosts
~$ ssh -T git@github.com
Hi gaaamii! You\'ve successfully authenticated, but GitHub does not provide shell access. # 認証に成功した
~/.ssh$ ls
config      id_rsa      id_rsa.pub  known_hosts
# 秘密鍵のファイル名を変えてしまう
~/.ssh$ mv id_rsa private_key
~/.ssh$ ssh -T git@github.com
Permission denied (publickey). # 認証に失敗した

# 秘密鍵のファイル名を戻す
~/.ssh$ mv private_key id_rsa 

# 今度は公開鍵のファイル名を変えてみる
~/.ssh$ mv id_rsa.pub aaaaa.pub 
~/.ssh$ ssh -T git@github.com
Hi gaaamii! You\'ve successfully authenticated, but GitHub does not provide shell access. # 認証に成功した
# 公開鍵がなくても認証された

2章

  • インストールとか設定周りの話。iOSでもSSHクライアント何かしらあるので使えるのを知った。なんか入れとこう
  • 設定は.sshに置いたファイルに書き込むよ的な話
  • sshコマンドの使い方
    • ssh -v [ホスト] とかやると認証方式とか諸々がわかる
    • ssh-keygen -y -f id_rsa とかやると秘密鍵から公開鍵の再生成できる
    • ssh-agent を使うと、中継するサーバに鍵をおかなくても多段SSHができる(ssh-agentの基本 - Qiita を読んで理解)
  • ssh [host] ls みたいな感じでコマンド実行して即ログアウトみたいな使い方もできる
  • scpとかsftpの使い方も紹介されてる。あまり興味ないのでざっくり読み飛ばした。

3章

  • TCPポートフォワーディングの話。
    • 何一つ意味がわからない。そもそもトンネリングってなんなんだ。

4章

TODO

5章

TODO

6章

TODO

7章

TODO

感想

TODO

書き途中です。

何か思い出すための通知はすべてTwitter botに任せたい

何か覚えておきたいことがあっても、何かしら強制的に思い出させる仕組みがないと忘れてしまう。興味が薄いことや面倒で忘れたいことほど、その傾向はひどい。

興味があるはずの技術的なことも、普段使わない知識だとせっかく本を読んでも次の日には忘れていたりする。たとえば最近DNSの本を読んだはずなのに、ドメインに関するLTを聴いたときに、Zone ApexのApexってどういう意味?というのがすぐ思い出せなかったりした(ぐぐって「頂点」という意味だったのを思い出した)。立派な記憶力を持つことが目的ではなく、必要なことを必要なときに思い出せる程度でいいので、なにかいい方法はないか。

トイレに貼り紙

考えてみたら、トイレに貼り紙をしておく方法を思い出した。受験勉強や資格勉強のときなどはたいていこれをやって、良い感じだった気がする。しかし、日々の細かい予定やら忘れそうなこと全てを、トイレの貼り紙に詰め込むことは現実的じゃない。代わりに、トイレ的な場所をiPhoneの中に見つければいいのでは、と思った。

Twitter botに任せればよさそう

自分の場合はこれがTwitterだった。トイレの場合は考えるより先に身体がトイレへ行くように促してくるけど、Twitterもどういうわけかそれに近い感覚になってる。Twitterを開くときに、情報が欲しいとか誰かに何かを伝えたいとか、そんなことを考えていない。じゃあTwitter botに予定通知やら思い出したいこと通知を任せればいいのでは。

IFTTTで Google CalendarTwitterを連携

予定であれば、Googleカレンダーに予定を入れて、それをTwitterbotアカウントにツイートさせればいいと思った。IFTTTでその設定ができる。Googleカレンダーの予定が始まったときに@付きのツイートが自分に飛んできていれば、Twitterを開いたときに今自分が何をしているべきなのか気が付く。

f:id:shgam:20170813191703p:plain

そのほかやりたいこと

  • Scrapbox
    • Scrapboxのメモをランダムでとってきて定期的にツイートさせたい。IFTTTで出来ると嬉しいけど今は出来ない。何か作るしかない。
  • RunKeeper
    • 走った記録も自分宛にツイートさせたい

検討したけど諦めた方法

iPhoneのpush通知

一生懸命見ずに通り過ぎてしまうので、あれをちゃんと活用するのは自分の場合無理そう。

メール

メールも流してしまうのでだめ。

なにがしたいのか

「◯◯を管理するアプリ」みたいなのがたくさんあって便利なんだけど、それすらも続けられないダメ人間なので、ジャンキーな情報がだらだら流れるところにその通知を集めれば少しはセルフマネジメント的なことがうまくいくのではないかという試み。

ISUCON7出るぞ

ISUCONに出ることにした。100万円欲しい。

ISUCONとは

Iikanjini Speed Up Contest。LINE株式会社主催。今年で7回目を迎える。

何をするのか

ウェブアプリをいい感じに速くする。ベンチマークをとってスコアが高いチームが勝ち。

チーム

2人〜3人。ポッドキャストの宣伝がてら、くもキャストというチーム名でふるかわくんと出ようと思っている。もう1人誰か誘った方がいいんだろうか。

やばさ

まともなスコアを取れるイメージが全く湧かない。 過去問の環境がVagrantfileで配布されてるのでとりあえずvagrant upしてruby実装(sinatra)のやつを動かしておお〜と言ってる段階。

ねらい

100万円欲しい

休日の丸の内は人が少なくて良い

昨日は久しぶりの外食、昼からビール飲みたい、でもデートなのできれいめなところで飯を食いたいという感じだったので、丸の内の東京ビアホール&ビアテラス14というところでビールを飲んできました。休日の丸の内はとにかく街に人が少ない。それでもって道やら建物がきれいで飯もうまいのでとても良い感じでした。店内はそれなりに賑やかでちょうどよかったし、何より牛すじピザが美味しかったです。

r.gnavi.co.jp

帰りは有楽町の無印良品涼んで買い物をして帰宅。

こういう人混みを避けるデートプランみたいなものを誰かまとめて欲しいけど、人混み嫌いの人たちが集まるデートスポットみたいなのが出来てしまったらそこに人混み嫌いの人の人混みができてしまって本末転倒っぽい。

スタディプラス株式会社に入社して1年経ちました

スタディプラス株式会社に入社して1年経っていたので急いで1年を振り返りたいと思います。

やってきたことざっくり

ウェブフロントエンドの方をやらせてもらってきて、今もウェブフロントエンドの方をやらせてもらってます。とてもやりがいを感じてます。

やってきたこと詳しく

https://studyplus.jpAPIと切り離されているので、僕らウェブチーム(二人)は基本的にはAPIからもらったデータをごにょごにょしたりユーザーがブラウザ上で起こした行動をAPIサーバーへ伝えるというようなことをやってます。

アプリケーションとコンテンツのSEOを考慮した苦肉の策的な data-xxx 属性

studyplus.jp は記事コンテンツや大学情報ページのようなSEOを気にしないといけないページと、ユーザーが勉強記録をつけるためのアプリとしてのページを一つのアプリケーションとして管理しています。そのため、アプリケーションの大半をJS側で管理するようなウェブフロントエンドではなく、Rails側にSlimテンプレートをたくさん書いて、表示のロジックをRails側のヘルパーやデコレーターで全部やるみたいな部分もあります。RailsとJS側フレームワークの共存はとても単純な仕組みでやっていて、<hoge data-hoge="{ 'my-json': 'my-value' }"></hoge>みたいなものを書いて、コンポーネント側の初期化の際にこの data-hoge の中身をパースしてコンポーネントのプロパティに流し込んでいます。とても低コストで済んでいます。同じようなHTMLをRails側にもJS側にも書かないといけないのが難点ですが、それ以外はそれほど困ることもありません。どこか他の会社でも同じことをやってた気がします。

CSSつらい

CSSはとにかくつらい。知らない人が書いた巨大なシェルスクリプトと同じくらいつらい。

class名を増やさないようにCSSフレームワークの変数をカスタマイズする形でデザイナーのデザインを当てていきつつ、それ以外の最低限について自前CSSを書いていくのが良い気がしている。逆に、CSSフレームワークを使わない場合はCSSフレームワークのような良い感じのclass命名を良い感じにする努力が必要になりそう。正直studyplus.jpの昨年末のリニューアルでは良い感じでできなかったので今になってCSSに苦労している部分があるかなと思っている。

不具合に引っ張られて忙しくなる問題から学んだデグレ防ぐためのテストの大切さ

昨年末急いで作って出して入れてしまった不具合に引っ張られてつらいみたいな場面が何度かあった。リニューアル後の機能開発をしている最中に不具合の報告が入って、謝って急いで直す。しかし不具合を直すのは予定にないので、機能開発の時間が減っていく。不具合を直すのは機能開発より難しかったりするので、どんどん時間が減っていく。うあああ、、ということでテスト書かないとあかんなという気持ちが高まった。やってみて単純に効果があったのはRailsのコントローラのテストで、とりあえず時間がなくても render_views して 200返すことを確認するだけのテストを書いておけば、なんかしらでエラーになるデグレを入れてしまった時に「ああコケたわ」といって気付ける。とても当たり前なことを書いてるような気がするけど、自分の学びとしては、デグレを防ぐためのテストというのがポイントで、たとえばRailsのバージョンをあげたときにどこでエラーが出るかすぐ分かるというのはとても心強い。誰だって書いた瞬間にブラウザで赤いRailsのエラー画面が出ていたら気付くけど、デグレはいつのまにやら起きてて怖い。

まとめ

はてブで話題になってるような記事ばかり読んでいるとこういう素朴な経験がすごいダサい感じがしてブログ書けてなかったけど、1年振り返ってみると色々失敗やら学びがあったなあという気がする。そしてこういう学びがある仕事ができることも、昨年の自分を思い出すと、エンジニアとしてずいぶんいい環境に移ったなと思える。各ポジション募集がありそうなので興味の有る方はぜひ「gaaamiiの紹介で来た」と言って入社してください。以上です。

www.wantedly.com

決まった時間に勉強をする習慣づけをするためのScrapboxを作成しました

決まった時間に勉強をする習慣づけをするためのScrapboxを作成してみました。

参加したい方いらっしゃいましたらTwitterのDMかなんかで招待リンク送ります。

詳しくは以下をご覧ください。

scrapbox.io

趣味開発進捗だめ(3)

引越し先の物件を探しているせいで何一つ手をつけられなくなってしまった(言い訳)。

趣味開発進捗(10日目)

リンクを書き込めるようにした。

これを使ってる。

github.com

ちゃんとデフォルトで noopener が指定されてる。

趣味開発進捗(9日目)

http://i.gyazo.com/21c798838f3437d1a21d64c1ff435111.gif

ドロップダウン内にリンクをおさめてよく見る感じにした。右上になにかするためのボタンを置いた。

趣味開発進捗(8日目)

このままだとまた趣味開発プロジェクトを放置してしまうと思い、おもむろに ng serve した。

すると、これまで動いてたつもりのアプリケーションが動かなくなっていた。node_modulesの一部が腐っていた(どういうことだ)。解決したのでメモに残せてよかったが、これといった進捗はない。

scrapbox.io

scrapbox最高

id:daiiz さんに勧められて、すっかり感化されてしまった。

情報が育っていく感じがすごい。新しく得た情報が既存の知識と結ばれて強化されていくような感じがする。scrapbox最高、ウェブ最高という気持ちになってる。

https://scrapbox.io/gaaamii/