「俺,Vimmerになる!」って言ってから4ヶ月でatomに乗り換えた話するわ
言い訳を聞いてください
まずは前回記事をみていただきたいのですが,
went-went-takkun135.hatenablog.com
そう,私,この度,Mac買い換えました!!!
最高ですね。もう。前のPCはMacBook Pro 2012-midモデルだったわけですが,皆さんご存知ですか,私の元カノはまだHDDだったのですよ。物理的にも動作的にも重たかった元サヤと比べ今のこの快適さはもう。。ね!!
それと乗り換えになんの関係があるのかと,疑問に思う方がいるかもしれませんので,箇条書きにしてみました。
ということで,主な理由は,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のインストール
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
oh-my-zshのインストール
$ curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sh
oh-my-zshはもう古いらしいから新しいものを検討しなければならないかも
tmux
バージョンが変わってたから,.tmux.confの中身を一部分書き直し
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発行
Python
$ pyenv install 3.5.3
$ pyenv install anaconda3-4.1.1
後は,tensorflow使ってるディレクトリまで行って,
$ pip install -r requirements.txt
$ 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に全部ぶち込んどいた
その他持ってきたいもの
TensorFlow Object Detection API をしこたま教育してやるわ[GCP編]
概要
went-went-takkun135.hatenablog.com
上記の記事の続きです!
TensorFlowの物体検出ライブラリを使う環境構築は終わったと思って、しばらくいろんな画像見せて遊んでました。たまに突っ込みどころ満載の判断してくるcocoちゃんも可愛いんですけど、やっぱり自分色に染めた学習済みモデルが欲しいなと思ってしまいました。少し調べたら、今の環境じゃ足りずにまだなにやら環境構築せなあかんとのこと。罠やな。ということで、環境構築しながら書いてる忘備録です。
Google Cloud Platform
最初にGCP(Google Cloud Platform)のプロジェクトを作れと言われます。初心者プログラマなので当然GCPのアカウントなんぞ持っておりません。ということで登録から
GCPのアカウント登録
この記事で丁寧に解説してあったので詳しいやり方は割愛します。Google Playでクレジットカード登録してたらめっちゃ楽に作れてしまった。
GCP SDKのインストール
今回初めてSDKがなんの略か調べました。その名も
Software Development Kit
なるほどでしたね。さて、インストールですが、下記ページの対話型でやりたいと思います。なぜなら、一番簡単そうだから!macならざっくり言うと、
Installing Cloud SDK | Cloud SDK Documentation | Google Cloud Platform
の2パターンだと思います。
curl https://sdk.cloud.google.com | bash (or zsh)
ってシェル上で打ち込めばインストールがスタートします。そのまま全部yを押しました。
なんかかっこいいインストール画面が全て終わってしまうと、次はシェルを再起動しましょう。
exec -l $SHELL
最後に
gcloud init
ってコマンドを打つと、
- 自分のGoogle アカウントの選択
自分のプロジェクトの選択(数字押せばおっけー)
[1] (既存のプロジェクト名)
[2] new projectGoogle compute engineを利用するか(Y/n) 当然Y
- コンピュータの選択→asia-northeast1にした(確か東京)
で初期設定完了です!!
GCPのAPIを有効化
ここでちょいちょいっと指示に従えば有効化できます!
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
とすることでその場をしのぎました。