dondakeshimoの丸太

データサイエンス/Webアプリケーション/

「俺,Vimmerになる!」って言ってから4ヶ月でatomに乗り換えた話するわ

言い訳を聞いてください

まずは前回記事をみていただきたいのですが,

went-went-takkun135.hatenablog.com

そう,私,この度,Mac買い換えました!!!
最高ですね。もう。前のPCはMacBook Pro 2012-midモデルだったわけですが,皆さんご存知ですか,私の元カノはまだHDDだったのですよ。物理的にも動作的にも重たかった元サヤと比べ今のこの快適さはもう。。ね!!

それと乗り換えになんの関係があるのかと,疑問に思う方がいるかもしれませんので,箇条書きにしてみました。

  • 2012モデルでは重すぎて使えなかったatomが快適に使える
  • ディスプレイがretinaになった途端,vimのUIがなんとなく残念に感じる
  • atomをベターVimとして使えるプラグインがある!

kesin.hatenablog.com

qiita.com

ということで,主な理由は,atomってなんかいかしてへん??でした。

インストー

公式から大昔にダウンロードしてきました。 ボタンを4,5回押したらインストールは終わった気がします。

パッケージインストー

以下のパッケージをとりあえず入れました。

apm list --installed --bare

Hydrogen@1.19.0
ariake-dark-syntax@0.1.3
atom-beautify@0.30.4
atom-clock@0.1.13
atom-html-preview@0.1.22
atom-monokai@0.10.9
atom-runner@2.7.1
autoclose-html@0.23.0
autocomplete-js-import@1.4.0
autocomplete-paths@1.0.5
autocomplete-plus@2.35.7
autocomplete-python@1.9.1
busy@0.7.0
busy-signal@1.4.3
clip-history@0.4.0
compare-files@0.8.1
emmet@2.4.3
ex-mode@0.15.0
file-icons@2.1.9
git-history@3.3.0
git-log@0.4.1
git-plus@7.9.3
highlight-selected@0.13.1
intentions@1.1.2
javascript-snippets@1.2.1
jquery-snippets@11.0.0
kite@0.30.1
linter@2.2.0
linter-flake8@2.2.1
linter-js-standard@3.9.1
linter-jscs@4.1.2
linter-ui-default@1.6.3
markdown-preview-plus@2.4.10
markdown-scroll-sync@2.1.2
minimap@4.29.2
minimap-bookmarks@0.4.2
minimap-cursorline@0.2.0
minimap-find-and-replace@4.5.2
minimap-git-diff@4.3.1
minimap-highlight-selected@4.6.1
pretty-json@1.6.4
project-manager@3.3.5
regex-railroad-diagram@0.19.3
show-ideographic-space@1.0.2
sort-lines@0.14.0
split-diff@1.4.3
vim-mode-plus@0.95.0
vim-mode-plus-ex-mode@0.9.1

とりあえず入れたまではいいのですが,linterとかいうのめっちゃ便利なものの,既存のファイルに対してめっちゃ怒って来てうざかったので消しました。今度ちゃんと勉強してから導入しようかと思います。(褒められて伸びるタイプなんで)

入れておけばいいかなと思ったのは,autocomplete系ですね。なんか自動補完って便利だなと思いました。笑

あとはminimap系ですね。なんかかっこよくていいなと思いました。笑

入れておく系と入れてから使う系があると思うんですけど,とりあえず shift + cmd + p でコマンドパレット出してプラグイン名を叩けば起動できて,さらにショートカットのチートシートにもなっているので,当分コマンドパレットと濃密なおつきあいをすることになりそうです。

Macの移行作業した話するわ

起動してから黒い画面を開かずに行ったこと

起動してから黒い画面を開いて行ったこと

homebrew

homebrewのインストール

homebrewの公式サイトにあるコードをコピペ

formulaのインストール

  • zshとtmux関係のインストール

    $ brew install zsh zsh-autosuggestions zsh-completions zsh-syntax-highlighting colordiff reattach-to-user-namespace tmux

  • vimのインストール

    $ brew install vim

  • PythonとNode.js

    $ brew install pyenv $ brew install pyenv-virtualenv $ brew install nodebrew

  • ここでdotfilesをcloneすると良さそう

  • 残りの細々したもの
    • heroku
    • awscli

dotfiles

$ cd ~
$ git clone https://github.com/dondakeshimo/dotfiles.git
$ cd ~/dotfiles
$ ./symlink.sh
$ cd ~
$ mkdir .vimbackup

zsh

qiita.com

oh-my-zshはもう古いらしいから新しいものを検討しなければならないかも

tmux

バージョンが変わってたから,.tmux.confの中身を一部分書き直し

qiita.com

vim

NeoBundleのインストール

$ mkdir -p ~/.vim/bundle
$ git clone git://github.com/Shougo/neobundle.vim ~/.vim/bundle/neobundle.vim
$ vim
$ :NeoBundleInstall

git

初期設定

$ git config --global user.name "俺の名前"
$ git config --global user.email 俺のメアド@example.com

ssl発行

qiita.com

Python

$ pyenv install 3.5.3
$ pyenv install anaconda3-4.1.1

後は,tensorflow使ってるディレクトリまで行って,

$ pip install -r requirements.txt

opencv

$ conda install -c https://conda.anaconda.org/menpo opencv3 

それぞれ仮想環境をpyenv-virtualenvで作成

Node.js

$ mkdir -p ~/.nodebrew/src
$ nodebrew install-binary stable
$ nodebrew use stable

$ npm install -g grunt
$ npm install -g bower
$ npm install -g yo

それぞれのディレクトリで

$ npm install

データ移行について

写真とiTunesと漫画

容量でかいやつは昔のMacから外付けHDDに全部ぶち込んどいた

その他持ってきたいもの

そんなになかったけど,基本的にAir dropで持ってきた。まじで早くて引く。

TensorFlow Object Detection API をしこたま教育してやるわ[GCP編]

概要

went-went-takkun135.hatenablog.com

上記の記事の続きです!
TensorFlowの物体検出ライブラリを使う環境構築は終わったと思って、しばらくいろんな画像見せて遊んでました。たまに突っ込みどころ満載の判断してくるcocoちゃんも可愛いんですけど、やっぱり自分色に染めた学習済みモデルが欲しいなと思ってしまいました。少し調べたら、今の環境じゃ足りずにまだなにやら環境構築せなあかんとのこと。罠やな。ということで、環境構築しながら書いてる忘備録です。

Google Cloud Platform

最初にGCP(Google Cloud Platform)のプロジェクトを作れと言われます。初心者プログラマなので当然GCPのアカウントなんぞ持っておりません。ということで登録から

GCPのアカウント登録

book.mynavi.jp

この記事で丁寧に解説してあったので詳しいやり方は割愛します。Google Playでクレジットカード登録してたらめっちゃ楽に作れてしまった。

GCP SDKのインストー

今回初めてSDKがなんの略か調べました。その名も
Software Development Kit
なるほどでしたね。さて、インストールですが、下記ページの対話型でやりたいと思います。なぜなら、一番簡単そうだから!macならざっくり言うと、

Installing Cloud SDK  |  Cloud SDK Documentation  |  Google Cloud Platform

  • コードをダウンロードして手動でインストー
    • 自分の好きなバージョンを選べる
  • shell上で対話型インストー
    • 自分の好きなバージョンは選べない

の2パターンだと思います。

curl https://sdk.cloud.google.com | bash (or zsh)

ってシェル上で打ち込めばインストールがスタートします。そのまま全部yを押しました。
なんかかっこいいインストール画面が全て終わってしまうと、次はシェルを再起動しましょう。

exec -l $SHELL

最後に

gcloud init

ってコマンドを打つと、

  1. 自分のGoogle アカウントの選択
  2. 自分のプロジェクトの選択(数字押せばおっけー)

    [1] (既存のプロジェクト名)
    [2] new project

  3. Google compute engineを利用するか(Y/n) 当然Y

  4. コンピュータの選択→asia-northeast1にした(確か東京)

で初期設定完了です!!

GCPAPIを有効化

https://console.cloud.google.com/flows/enableapi?apiid=ml.googleapis.com,compute_component&_ga=1.73374291.1570145678.1496689256

ここでちょいちょいっと指示に従えば有効化できます!

Google Cloud Storage (GCS) bucket の作成

https://cloud.google.com/storage/docs/creating-buckets

今度はこのサイトの指示に従ってbucketを作成しましょう。割と適当に名前とかつけました。

これにてGCP周りの環境構築は完了です!次はデータセット取ってきて何やらかんやら!

WEBの入門書を読んでやったわ

WEBとはなんなのか

最近勉強しましたが、なんか凄いらしいですね、web。今回は上記のことを知るために以下の二冊をざっと読みました。

真面目に書くと、基本的にはwebではてなやらQiitaやらで調べてコーディングしたいんですけど、わからない単語とか仕組みとかが大量に出てくると面喰らうじゃないですか。だから準備としてその分野の入門に当たる書籍を読むのがいいかなと考えています。書籍のメリットは体系的にまとまったものが多いこと。筆者の責任感が強いこと。儲けたいがために頑張っていること。などです。逆にweb記事のメリットは最新の情報をただで得られることだと考えています。ということで、入門中の入門っぽいやつを読んでみました。

Webを支える技術

よかったところ

総評として、めっちゃよかったです!webの歴史、ブラウザ戦争、いろいろな規約やら何やら。基本的なことはこれで学べたと思っています。とりあえず、web関係のweb記事を読んでももう面くらわない!ってところまではきましたし、いまブログを書いているこの状況が何をしている状況なのかも理解できました。いまからサーバにPUTリクエストを送りつけてやりますよ!

よくなかったところ

よくなかったかなという点は、データフォーマットの話が結構長くて読むのが辛かった割には全く即戦力になる知識じゃなさそうだったことですね。あとはこの本を読んだからといって何かが作れるわけではないということも悲しいところです。

まとめると

前半だけ読んでおけば良い説浮上してますが、とってもよかったと思います!

Webアプリエンジニア養成読本

よかったところ

こっちは読みきったら即何かしらを作れることを目的に作られていました。作者が4編それぞれ違う人だったのも少し面白かったです。一番よかったと思うところは次に読むべき書籍が書かれていたことです。結局、書籍の推薦は主観ですし、書籍の良し悪しも主観なので、本を書くほど高名な方々の主観を知ることができるのはとてもよかったです。

よくなかったところ

全体的に浅めの記述で実践的でした。ここからは主観なのですが、浅めで実践的なものはweb記事で出回ってるので、本として買うのはあまりあれだなと感じました。もちろんとても丁寧で書いてある内容自体はとてもよかったです。これからの自分が買う書籍選びの軸の一つを気づかせてくれたということにします。

まとめ

とんでもないアイデア思いついて、とりあえず早く作ってみたい。もしくは、なーんもアイデアないけど、web関係の実践的知識はお遊び程度でほしいかなーくらいの人にはぴったりな気がしました。

以上

本読んで、気が向いたらまたレビューします!

vimをカスタマイズしてやったわ[set編]

筆者が設定しているsetコマンドを逐一説明して自分が忘れなくするための記事です

vimのsetコマンド

vimには4つのモードがあります。

  • ノーマルモード
  • インサートモード
  • コマンドモード
  • ヴィジュアルモード

これらのうちのコマンドモードにおいて

:set ~~~

となるコマンドが多数存在します。例えば、

:set number

と打ち込むと、左端に行数が出現します。

:set nonumber

と打ち込むと消えます。
おおおぉぉぉ!便利!ってなるコマンドが多数存在するのですが、vimを起動するたびに無数のsetコマンドなんて打ってられるだろうか?(いや、無理(反語))

そこで

前回も少し登場しました ~/.vimrcに気に入ったsetコマンドは打ち込んでいきます。~/.vimrcとはvimが起動されるたびに最初に読み込まれるファイルなので、ここに

:set number
:set ruler

とか打ち込んでおくと起動した時にはすでにnumberがsetされてしまっているということになるのです。これは、まさに、便利!

vimのsetと私

今回はここからスタートです笑

""""""""""""""""""""""↲
" plugin関係なし↲
""""""""""""""""""""""↲
" vimの見た目系↲
set ruler↲
set number↲
set title↲
set showcmd↲
syntax on↲
" 空白系↲
set autoindent↲
set smartindent↲
set shiftwidth=2↲
set expandtab↲
set tabstop=4↲
set ambiwidth=double↲
set list↲
set listchars=tab:»-,trail:-,eol:↲,extends:»,precedes:«,nbsp:%↲
" カーソル系↲
set whichwrap=b,s,[,],<,>↲
set backspace=indent,eol,start↲
set virtualedit=block↲
" ファイル操作系↲
set noswapfile↲
set hidden↲
set wildmenu↲
set backupdir=$HOME/.vimbackup↲
" 文字列系↲
set nrformats-=octal↲
" 検索系↲
set ignorecase↲
set smartcase↲
set hlsearch↲
set incsearch↲
set wrapscan↲
""""""""""""""""""""""↲

見た目系

ruler

右下に現在どの位置にいるかを示してくれる欄が出現します。便利なのでとりあえず入れとけ系ですね。

number

とりあえず入れとけ系第2弾ですね。左端に行数を入れてくれます。問題点を強いていえば、tmuxのコピーモードの時に邪魔です。

title

とりあえず入れとけ系第3弾!その名の通り開いているファイル名を表示してくれます

showcmd

確か一番下にちゃんとコマンドを表示するとかそんなんだった気がするけど…すみません!勉強不足というか、なんというか、とりあえず入れとけ系第4弾!!笑

空白系

autoindent

前の行のインデントと自動で合わせてくれます。わいは毎回tab押したいんやーーーーー!って人はオフにしておきましょう。デフォルトでonだそうです

smartindent

前の行の末尾の文字で勝手に判断してインデントをつけてくれます。これってautoindentと競合しないんだな。

shiftwidth=2

自動インデントでずれる幅です。師匠の2を受け継ぎました。

expandtab

tabを押してできた空白を半角スペースにするというものです。最初から書いてたんでアレなんですけど、この設定なかったらtab空白みたいな馬鹿でかい空白が生まれるんですかね。

tabstop=4

これはtabキーを押した時に半角スペース何個入れるかです。師匠の4を受け継ぎました。

ambiwidth=double

全角スペースを半角スペース二つに置き換える的なやつだった気がするぜ!

list

空白やら改行やらを可視化してくれるのである!地味に便利!

listchars=tab:>>-,trail:-,eol:↲,extends:>>,precedes:<<,nbsp:%

長い!空白文字を如何様にして可視化するかというやつです!

カーソル系

whichwrap=b,s,[,],<,>

折り返しでカーソル移動ができる!行頭でh押したら1行上の末尾に行ける!

backspace=indent,eol,start

backspaceキーをどこでも使えるようにするにはこの設定を入れねばならぬのだよ

virtualedit=block

空白行にもカーソルを移動できるようになるとかそっち系!よくわかってない!

ファイル操作系

noswapfile

なんかvimを使ってるとvimが勝手にswapファイルなるものを生成してるんですよ。鬱陶しくなったら作るな!バカ!と言ってやりましょう。

hidden

重複してファイルを開ける的なやつだった気がしますが、ちゃんと恩恵に預かったことはないです。

wildmenu

多分なんですけど、:eとかでファイル探してるとかに、中途半端なところでtab打って限界まで補完してくれた後、その後ろどうするって表示してくれるやつですね。便利

backupdir=$HOME/.vimbackup

backupファイルを作る場所を指定しております

文字列系

nrformats-=octal

0スタートの数字も10進数で扱ってください。普通の人間は16進数など使わんですよvimさん。

ignorecase

検索をかける時に大文字小文字の区別をなくしてくれるらしい!

smartcase

これをignorecaseと一緒に書いておけば、大文字を書いた時だけ大文字小文字を区別してくれるらしい!

hlsearch

high light searcdです。検索結果がハイライトされます

incsearch

インクリメントサーチができます。Google検索みたいに、Enter押す前から書き込まれてる分で検索を始めるやつです。

wrapscan

最後の検索結果から次に行くと最初の検索結果に飛びます。

以上

サクッと書くつもりが結構多くて、
しかもとりあえず書いてた的なの多すぎてこんな冗長で中身のない記事を書く結果となってしまいました。反省していま…せん。忘備録なので!笑

次回はプラグイン編ですかね!

vimをカスタマイズしてやったわ[初期設定編]

vimと私

読み飛ばしてくれて結構です。

vimについて超適当な感想

  • かっこいい
  • バカ早い,かつクソ早い
  • 初心者には敷居が高い(ゆえにかっこいい)
  • エディタ戦争でEmacsと殴り合っていたが現在優勢?
  • IDEに引けを取らない高機能(にできる)
  • 自分色に染められて楽しい
  • 使っていたら最もそれっぽい気がするエディタ
  • サーバをいじるなら、どうせ使わねばならぬ日が来ると言われた
  • 超かっこいい

vimと出会うまで

筆者は1年前まで助教授に勧められるままにEmacsを使っておりました。全くカスタマイズしていないありのままのイーマックスです。
そのような時にプログラミングの師匠と再開し、エディタは何を使っているか尋ねたところ、「最近はAtomがイカしてる」と言われました。早速使ってみたものの、筆者のPCが弱すぎて動作がもっさりしていたこと、卒論時期のコーディングはssh接続したLinux PCで行っていたことから、Atomを使うことをしばらく放棄していました。
卒論期を終え、本格的にプログラミングを始めることを決め、環境構築を始めました。その折、師匠にずっと相談していたのですが、「基本はAtomがオススメだけど、本気出すなら、iTerm + tmux + vimもあつい」と言われました。そんなんやるしかないやん。
vimって当時、gitで遊んでた時に突然出てきて、パニックにさせられてから多少嫌煙したんですけど、調べてみたら情報の嵐。こんなに使ってる人おるねんなと思ったら、勇気が出てきました。それから四苦八苦しながら設定して使ってみたらあら不思議、なんていうんですかね、「」ですかね。自分で作ったものだから使ってるだけで楽しくなってきて、現在vimmerとして生きてます

vimの導入

homebrewでインストー

ここからは忘備録、いや自分もほとんど忘れてるんですけど笑 次やるときのために最初から書いておこうかと

  • Mac OSX ElCapitan
  • Homebrew 1.2.4

macにはデフォルトでvim入ってるんですけど、何かいろいろちゃんとインストールしてきた方が都合いいらしいので、homebrew使って新しく入れました!

$ brew install lua
$ brew install vim --with-lua

PATHを通す

インストールした後、デフォルトのvimではなく、インストールしたvimを使うためにPATHを通す必要があるらしいです。まずはデフォルトのvimのPATHを確認

$ which vim
$ /usr/bin/vim

なんかシステム系の実際に使うやつとかはbinディレクトリーにだいたい入ってますよね。バイナリーの略らしいですね!(最近調べた)
うんちくは置いておいて、~/.bashrcに以下を追記します

export PATH=/usr/local/bin:/usr/bin

で、更新します

$ source ~/.bashrc
$ which vim
/usr/local/bin/vim

これでとりあえず味付け0のvimなら使えるようになりました

NeoBundle

NeoBundleとは

プラグイン管理ツールです。Pythonのpip、Rubyのgem、Macのhomebrew的な感じの理解で大丈夫なはずです!

NeoBundleダウンロード

まずはNeoBundleをダウンロードしてきす。…その前に忘れずにダウンロード先を設定しておきましょう。~/.vim配下にbundleディレクトリを作ってgitでどーんです!

$ mkdir -p ~/.vim/bundle
$ git clone git://github.com/Shougo/neobundle.vim ~/.vim/bundle/neobundle.vim

vimrcの設定

設定ファイルをいじっていきます。それっぽいです。
~.vimrcファイルに

set nocompatible
filetype plugin indent off

if has('vim_starting')
    set runtimepath+=~/.vim/bundle/neobundle.vim
endif

"""""""""""""""""""""""
" NeoBundle begin
"""""""""""""""""""""""
let g:neobundle_default_git_protocol='https'
call neobundle#begin(expand('~/.vim/bundle')) 
NeoBundleFetch 'Shougo/neobundle.vim'

" ここからプラグイン
NeoBundle 'Shougo/unite.vim'
" ここまで

call neobundle#end()
""""""""""""""""""""""
"NeoBundle end
""""""""""""""""""""""

filetype plugin indent on

まるまるコピペしちゃってください! 筆者が設定した時に世に溢れていた記述が少し昔のものだったので散々ここでエラー吐かれた記憶があります。もしかしたらすでに上記の設定も古い可能性があるのでその時はすみません。笑

[試しに] プラグイン「unite.vim」のインストー

さて、一旦 .vimrcを閉じましょう。
(vimで開いていて閉じ方がわからない!ってなったあなたへ(少し前の自分)【esc】 or 【Ctrl + [ 】でノーマルモードに入って、【:wq】で保存して閉じます。)
そして再起動、再び

$ vim

で起動してください。ここからNeoBundleを使います。

:NeoBundleInstall

はい、これでunite.vimインストール完了です!おめでとうございます!上記のインストールコマンドを打つと .vimrcに書き込んだプラグインの中から新しく書き込まれたものを見つけ、インストールしてくれます!

:NeoBundleUpdate

これでアップデートもできちゃいます!
いろいろな記事で

:NeoBundleClean

ってコマンドも見かけると思うんですけど、これは亡くなったらしいです。.vimrcから消したいプラグインの行を消去すれば、vim開始する時に読み込まれないらしいので、そのまま放置で良いと思われます。どうしても消したければ、NeoBundleがプラグインを溜め込んでるディレクトリまで潜って削除してこいとのことです!

お疲れ様でした!!

近日中に[set編]を公開します

公開しました

went-went-takkun135.hatenablog.com

よろしくお願いいたします!

GitHubが賢くて助かった話

dotfiles管理

dotfiles管理ってかっこいいなと思って、結構前にgithubにdotfilesレポジトリを作っていました。dotfiles管理が何かと言うと、各種設定ファイルをgitで一括管理してしまおう!というやつですね!設定ファイルのほとんどが.(ドット)から始まるのでこの呼び名というのは誰しもがそりゃそうだろという名ネーミングだと思います。メリットは

  • 設定ファイルをいじったけど昔の状態に戻したい時
  • 新しいパソコンでの環境構築を一発で終わらせたい時

これらのことがささっとできてしまうことですね!あとは友達にこの設定どうなってるん?って聞かれた時にURLをはっつけておけばいいのは楽かもしれないです!(初心者なのでそんなこと聞かれたことない笑)

筆者の愚行をGitHubが救ってくれた話

ここからがメインストーリーです。今回、awsのアクセスキーを環境変数に入れておいてという指令が私のインターン先からくだされ、教えに忠実に、

export ~~~

と.zshrcに直接書き込んだわけですね。そして、そのまま何も考えずに

$ git add .
$ git commit -m "~~~"
$ git push origin master

かましてやりましたね。全世界にawsのアクセスキー大公開ですよ。。。そしたらgithubさんから何やらメール!

Aws apikey exposed on Github message by GitGurdian

なんだなんだ。何かのスカウトか??全くーー!と思って読んでみて2秒で青ざめる顔。速攻でexportした場所消して平静を装いました。そんなに長いこと公開してないし、そもそも筆者のレポジトリに人が来ることあると思えないし、大丈夫だったと信じたいですね。
何にも大丈夫でなかったですね。awsのアクセスキーがロックされてしまったので多大なる迷惑をおかけしました。鍵の扱い本当に注意しなければ。。

みなさん!githubにパスワードとか絶対ダメですからね!!(いや、誰もせんやろ。。)

とはいえ、毎回awsキー打ち込むのは不便なので、~/.zshrc.awsというファイルを作成し、.zshrcないで

source ~/.zshrc.aws

とすることでその場をしのぎました。