ぽっかめろん

ゲームとかプログラミングとか

LINE にインターンしました

f:id:popkirby:20160902165851j:plain

インターンをしました。

概要

1ヶ月で40万円もらえます。
line-hr.jp

選考

応募→技術テスト→面接でした。技術テストで提出したのはこんな感じのものです。
github.com
github.com

前作った声優ブログの解析を少しいじって提出したりしたので(●・▽・●)終わりだよ〜かと思っていましたが、面接に通過してびっくりしました。面接ではバックエンドに興味があるみたいな話をしたと思います。
来年受かりたい人は声優ブログを題材にしたサービスを1つ作っておくことをお勧めします。

LINE内部の様子

ヒカリエの上の方にあります。

f:id:popkirby:20160830173352j:plain

キャラクターがたくさんいて可愛いです。

f:id:popkirby:20160902194716j:plain

あとはカフェがあって100円から120円で無限に糖分が摂取できます。キャラメルラテを頼み続けていました。

f:id:popkirby:20160816160439j:plain

綾鷹も無料で選べます。

f:id:popkirby:20160902175114j:plain

10円でコーヒーが無限に飲めます。カップを設置し忘れると全て虚無に消えていくので悲しい気持ちになります。

f:id:popkirby:20160808155850j:plain

やったこと

社内アプリケーションのUI作成のお手伝い + 新規で1つ作成しました。仕事でコーディングするのが初めてだったのでコードレビューなどがとても勉強になりました。

所属した部署が韓国の方・中国の方・フランスの方・タイの方という感じで東工大も真っ青なグローバル環境だったのが結構面白かったです。

感想

今まで家で寝ている人間だったので社会的な活動ができるか不安でしたが、1か月普通に仕事できたので安心しました。node.jsの本書いたマンや趣味がリバースエンジニアリングマン、OpenJDKのコミッター(こちらは福岡)などがいて強いなあと思っていたりしました。
あなたもLINEインターンに行って強みを得ましょう。

Korean ADC Runeのお話

全世界で戦争を引き起こしているKorean ADC Runeのお話をします。

Korean ADC Runeとは

パッチ6.12でのNatural Talentのバフ以降、KT ArrowをはじめとしたLCK勢が採用しているルーン・マスタリーの事を指します。

従来のルーン・マスタリー

f:id:popkirby:20160720170131p:plain
f:id:popkirby:20160720170154p:plain

新ルーン・マスタリー

f:id:popkirby:20160720170208p:plain
f:id:popkirby:20160720170222p:plain

何が違うか

数字で言えば

  • 従来
    • LS・SV 2%
    • AD 8.55
    • AS 13.5%
    • LS 1.5%
    • AD 7.7 + 0.44 / lvl
    • AP 3 + 0.67 / lvl
    • AS 14.1%

どっちがいいのか

誤差です。
ドランを持ったAshe(AD54.74+2.26/lvl)がArmor35マンを殴ると仮定するとダメージ量・回復量は次の表のようになります。

Lvl ダメージ(従来) 回復量/hit(従来) ダメージ(新) 回復量/hit(新)
1 54.48 2.72 54.18 2.44
2 56.16 2.81 56.18 2.53
3 57.83 2.89 58.18 2.62
4 59.50 2.98 60.18 2.71
5 61.18 3.06 62.18 2.80
6 62.85 3.14 64.18 2.89

誤差ですね。
レベル6の頃にはBFが1本くらいあると思うので誤差力がより大きくなります。
ちなみにレベル3のAsheが棒立ちで殴りあうとAA13発目で同時に死にます。ASの差で新Asheが勝つかもしれませんが恐らく誤差です。

結論

誤差です。
従来のルーンは誤差レベルでサステインが多いのでレーンが楽な気分になると思います。
新ルーンは誤差レベルでダメージが出るのでLHが取りやすい気分になると思います。

dotfilesを管理するツールを作ってる(現在進行形)

以前dotfilesの管理方法の妄想をしましたが、妄想を実現するためにツールを作りました。

GitHub - popkirby/chiery: manage dotfiles like collecting clovers

インストール
npm install -g chiery
使い方
  • 最初にとりあえず: chiery init
  • githubからインストール: chiery install popkirby-dotfiles/vim この時にpostintall hookでchiery postinstallを走らせることで、指定した感じにsymlinkが貼られます。
  • 一覧: chiery list
  • 編集したい: chiery edit vim
  • パスが欲しい: chiery get vim
手法

npmがgithubからpackageを取ってこれることと、npmの機能の一種であるscoped packageを利用して実装しています。 chieryに投げる設定はpackage.jsonchieryフィールドに全て突っ込んでいます。installとかはnpmにぶん投げています。 edit, list, getあたりもpackage.jsondependencyを見ているだけです。

緒方智絵里ちゃん

緒方智絵里ちゃん

JavaScriptの行末セミコロン

一種のポエムです。自分は行末セミコロンを書かない派です。

仕様

英語版はここです。

和訳

  1. パース中に文法上許可されないようなトークン(offending token)に出会って、かつ以下の条件のどれか1つ以上を満たしていればセミコロンを挿入する
    • offending tokenとその前のトークンの間に1つ以上のLineTerminatorがある
    • offending token}である
    • 1つ前のトークンが ) であり、セミコロンを挿入時にそのセミコロンが do-while 文の最後となるセミコロンとして扱える
  2. EOF
  3. パース中文法としては正しいが、文法の定義で "[no LineTerminator here]" が入っている場所に LineTerminator が出現した場合、パースしているトークンの直前にセミコロンを挿入する

ただし、セミコロン挿入後に空文となるか、for文のヘッダーのセミコロンになる場合は挿入しない

3番目が引っかかりやすいポイントですね。

  return
    true;

とかの奴です。ひとまず ReturnStatement, ThrowStatement, ArrowFunction, YieldExpression に注意すれば問題ありません。

逆に挿入されなくて困るパターンとしては

a = b + c
(d + e).print()

if (a > b)
else c = d

が挙げられています。「行頭にカッコを置かない」ことを守ればよさそうです。最近はあまりIIFEも書かないので困ることも少なそうです。

dotfiles 管理手法の妄想

例によってdotfilesをgithub上で管理していますが、どうもしっくりこないので現在考えている妄想を備忘録的に書いておきます。

現在の不満点

dotfilesの編集が面倒

できるだけホームディレクトリにファイルを展開したくないけど、いちいち vim dotfiles/vim/rc/encoding.vim みたいに書くのが面倒。

これは vim プラグインを書いて解決するべき問題かもしれないです。

そもそもの話として、設定ファイルを分割すると編集は面倒なので、分割をやめるかもっと厳格に分割方法を決める必要がありそうに思えます。

branch を用いた変更がお辛い

例えば最近 vim が true color 対応しましたが、1週間試してみようと vim/true-color みたいなブランチを切って vimrc を書き換えたとします。その間、tmux のアップデートにより何らかの機能が追加され、そちらも試してみようと tmux/new-feat ブランチを切ろうとします。

このブランチはどこから生やすべきでしょうか。あとでやっぱり true color はやめようとなった場合、tmux の新規機能ブランチはどう扱うのか……みたいな話になって面倒そうです。

vim/true-colorから生やした場合、masterへのmerge前にrevertするとか、cherry-pickするとか、歴史を改変するとかはどれも辛い手法に見えます。

masterから生やすとそもそも2つの変更が共存できません。

誰か同一リポジトリでできるいい感じの手法を知っていたら教えてください。

妄想している解決方法

後者の解決にしかならないですが、手法としては homebrew とか vim-plug 系みたいなのと似た手法を考えています。

例えばpopkirby-github/vimのようなリポジトリを作って、それをclone、所定のインストールスクリプトの実行、みたいなことをするツールを作成することを考えています。

変更時はそれぞれのリポジトリでブランチを切ればいいという考えです。

前者は考え中ですが、vim 上で :dote的なコマンドを作ることを考えています。

#RECRUIT_CODE とかいうのを解いてみた

大体Q3に1時間30分ぐらい使った。そこまでは真面目にやってました。

感想

英単語を使う方が悪い。