リクルートのインターンで負けてきました
まとめ
型環境、そもそもなんのことだかよくわかってないのにどうしてこうなった!!!!お茶大生!!いい加減にしろ!!!!
— がんま (@ganmacs) 2015年2月18日
— がんま (@ganmacs) 2015年2月23日
概要
http://recruit-jinji.jp/winter-internship2015/
リクルートホールディングスのApplication Engineerコースに行ってきました。 ぼくはApplication Engineerコースの中の「インフラ/DB/バックエンドエンジニア」コースに申し込みました。 日程は2月1日から2月23日までで、コードを書くだけで15万もらえて人のお金で美味しいごはん食べられて交通費、宿泊費まで出る最高な感じでした。 やったこととか選考方法とかは他の人が書いているのでそちらを見てください。
リクルートインターンの良かったところ
僕が思ったインターンの良かったところを書きます
ずっとコード書いていられる
最初の3日間を企画を考える+座学に使います。 あとは、基本的にずっとコード書いていてよかったので開発に集中できてとてもいい環境でした。 聞きたいことがあればメンターがチームに1人ついているので聞くこともできてこれもまたいい環境だなと思いました。 また、週に1回メンターとの時間も設けられていたりもしました。
とにかくうちのチームのメンター氏はいい人で非常に勉強になることが多かったです。
AWS使い放題
AWS上にアプリをおいて開発するのでAWSが使い放題でした。 これが本当によくて自分はAWS使ったことなかったんですが試して壊してを繰り返せたりして勉強になりました。
使い放題だったこともあり、てきとうにインスタンスを立ち上げてitamae走らせてすぐインスタンス壊すみたいな無駄なことができます。最高です。
インターン中に企画がある
インターン中に「天下一自動化大会」っていうの企画が1日あってそれが結構楽しかったです。 この企画は自分の身の回りで自動化できそうなことを自動化して一番良さそうなやつを決めるみたいなあれです。
僕はchef使って環境構築自動化したのとemacsからコマンド一つでgithubのコミットひらけるプラグイン作りました。
美味しいご飯が食べれる
ご飯の参考画像です 天国
ほかにもみんなが書いてくれるはず
実際やったこと
バックエンド1人、フロントエンド2人のチームで「デートコース共有アプリ」をつくりました。 フロントエンドの2人が頑張ってくれて気づいたらミュゼっぽいおしゃれランディングページとか出来てました。(本番だとフォントととかもちゃんとしてる)
僕はすこしRailsかいてあとはインフラやってました。 サーバの構築にitamaeを使ったり、サーバのテストとしてserverspec使ったり、capistranoとcircle ci使ってデプロイ自動化したりして最高に楽しかったです。
その辺で得た知見はまた別エントリで残したいと思います。
来年あるかしらないけど行くと良さそうな人
- あたりまえだけどエンジニアになりたい人
- エンジニアの友達が周りにいない人
- 2月暇で死にそうな人
- 寿司が食べたい人
感想
選考とかあるけど実際ちょろいしみんなインターン行って寿司と15万ゲットした方がいいと思いました!!!
どう考えても完全にうちのチームが一番最高だった!!!!
他のインターン生が書いた参加ブログ
「Recruit Holdings Winter Internship 参加」って書けばいいと思ってる他のインターン生のブログです
surround.vimのEmacsバージョン作りました
surround.vimのemacsバージョンみたいな感じです. emacsバージョンを探したんですがなかったので悔しくて作りました.
リポジトリ
ganmacs/emacs-surround · GitHub
設定
1.どうにかして入れます
caskの場合はCask
ファイルに以下を追加
(depends-on "emacs-surround" :git "https://github.com/ganmacs/emacs-surround.git")
cloneしてくるのは
$ git clone https://github.com/ganmacs/emacs-surround.git
こんなかんじでロードパスが通ってるところにおいてください.
2.設定ファイル
init.el
に以下を追加.
(require 'emacs-surround) (global-set-key (kbd "C-q") 'emacs-surround)
使い方
変更
囲まれた文字列を変更したいときC-q '"
と打つと
'He|llo World'
ダブルクォートをシングルクォートに変更します.
"Hello World"
削除
囲まれた文字列を削除したい場合はC-q d "
と打ちます
"He|llo World"
そうすると以下のようになります
Hello World
挿入
文字列を囲みたいときはC-q i (
かC-q ( <return>
とうつと
He|llo World
文字列で囲みます
(Hello) World
または,込みたい範囲をリージョンで囲むと以下のように囲むこともできます
(Hello World)
カスタマイズ
emacs-surround-alist
に囲むペアのリストを渡すと任意の文字列で囲むことができます.
例えば以下のコードをinit.el
に書くと{
で囲むときにスペースを入れることができます.
(add-to-list 'emacs-surround-alist '("b" . ("{ " . " }")))
つまり,以下のrubyのブロック内にいる状態でC-q {b
とすると
[1, 2, 3].each {p |1+i}
前後にスペースが入った{
になります.
[1, 2, 3].each { p 1+i }
終わりに
問題があれば教えてください
参考
emacs-dayone作った
なぜ
Macにはdayoneというmarkdownで日記をかけるおしゃれUIのアプリがある. 文章はemacsで書いて,読むときだけdayoneを使いたい. emacs-dayone
入れ方
- Day One Toolsを入れます.
- cask使って自分の環境に入れる
- あとは適当にキー割り当ててつかう
- (READMEにかいてある)
使い方
- 範囲指定していない時は現在のバッファがすべてdayoneに保存されます
- 範囲指定してる時は指定範囲のみdayoneに保存されます
emacs-git-grep作ってました
emacsにパッケージ管理をel-getからcaksに変更した際に自分で作ったemacs-git-grepにゴニョゴニョした時に思い出した
発端
- mizchiさんの Atomのコード読みまくったので、git-grepの結果へジャンプできる拡張を作ってみたを読んで便利そうだった
- もともとhelm-git-grpeがあったんだけど重かったかなんかで使う気にならなかった
デモ
実際
- 初めて作ったのでたしかemacs-helm-agのコードとか参考に書いてあるコードをかなり真似て作った気がします
- helm使ってるのに名前に入ってないのはどうなんだろうってずっと思ってる
感想
めっっっっっっっちゃ便利でした
参考
with-eval-after-loadとrequireとautoloadとadd-hookと
発端
違いは何だ!!
まとめ
違ったら教えてください
- 起動してずっと使ってる ->
require
- 起動時には必要ないけどmodeごとでは使う ->
autoload
- ライブラリでのsetqとかの設定 ->
add-hook
- ライブラリでのdefine-keyとかの設定 ->
with-eval-after-load
調べた感じ
autoload
とrequire
は使うタイミングは似てる?autolad
は必要なときに読んでくるので起動時に必要ではないものを設定するといいrequire
はこれが呼ばれたタイミングでライブラリ読むので起動時必要なものだけにしたほうが良さそう
起動時にjs2-modeが呼び出される
(require 'js2-mode) (add-to-list 'auto-mode-alist '("\\.js$" . js2-mode))
初めてjsファイルを開いた時にjs2-modeが読み出される
(autoload 'js2-mode "js2-mode" nil t) (add-to-list 'auto-mode-alist '("\\.js$" . js2-mode))
eval-after-load
とwith-eval-after-load
とadd-hook
の違い
eval-after-load
とwith-eval-after-load
の違いはwith-eval-after-load
はemacs24.4から新しく入ったマクロでprogn
使わなくて良くなった- add-hookはバッファを呼び出すたびに呼ばれる
eval-after-load
は最初に設定しているライブラリがloadされるたびに呼ばれるが2回目以降は早いらしい
This macro arranges to evaluate body at the end of loading the file library, each time library is loaded. If library is already loaded, it evaluates body right away. 15.10 Hooks for Loading
- setqとかはadd-hookがよくてdefine-keyとかはwith-eval-after-loadかな?
参考
YosemiteにEmacs24.4いれてみた
Yosemiteにする際についでにクリーンインストールしたので設定しなおした記録
書くこと
Emacs24.4をYosemiteに入れたところ
inline patch当てなくていい人は1と5だけやればいい
- 1 何はともあれまずはEmacsを取ってくる
$ curl -L -O http://ftpmirror.gnu.org/emacs/emacs-24.4.tar.gz $ tar zxvf emacs-24.4.tar.gz
- 2 今回はinline-pathもあてようと思うのでそっちも取ってくる
$ curl -L -O http://plamo.linet.gr.jp/~matsuki/mac/emacs-24.4-20140417-inline.patch
- 3 パッチ当てるとビルドするときにライブラリが必要になるのでいくつか入れる
$ brew install autoconf automake
- 4 パッチ当てる
$ cd emacs-24.4 $ patch -p1 < ../emacs-24.4-20140417-inline.patch
5 ビルドする
$ ./configure --with-ns --without-x | make -j2 | make install
以上でnextstep/Emacs
ができてるはずなので/Application
以下に移動すると使えるようになる
困ったところ
1. helmがmakeできない
helmが(require 'cl-lib)
してるんだけど,そんなものはないって怒られる
原因
makeするときは/usr/local/bin/emacs
の方を使っているのが原因っぽかった
/usr/local/bin/emacs
のバージョンが21くらいでcl-lib
が入ったので24からなのでほんとにそんなものはなかった
Cocoa Emacsにしなかったらこんなことにはならなかったな?
解決策
バージョンが24以上のemacsを入れる
brew install emacs
2. zlcが動かない
(wrong-number-of-arguments (2 . 4) 0)
こんなかんじのエラーが出る
以下に詳しくのってた
zlc-minibuffer-complete
の(completion--do-completion)
を(completion--do-completion (minibuffer-prompt-end) (point-max))
にすれば動くようになりました。
らしい
参考
emacsでScala環境設定
Scala開発環境の覚え書き
前提
インストール
brew で入れたもの
- scala
- sbt
el-getでemacsに入れたもの
実際
brew を使って要りそうなものを入れる(sbtが何なのかよくわかってないけどなんかみんな入れてた)
brew install scala brew install sbt
emacsにはel-getでscala-mode2とensimeを入れる
scala-modeもあったんだけどscala-mode2のがemacs24向けらしい
設定
パスは通ってるのでemacsの設定ファイルに以下を書くだけ
(require 'scala-mode2) (require 'ensime) (add-hook 'scala-mode-hook 'ensime-scala-mode-hook)
~/.sbt/0.13/plugins/plugins.sbt
に以下をついか(なかったら作る)
resolvers += Resolver.sonatypeRepo("snapshots") addSbtPlugin("org.ensime" % "ensime-sbt" % "0.1.5-SNAPSHOT")
ちょっと書いて見よう