アラのアラアラしい日記

こっそりかいてます

homebrewの最新バージョンでscreenがinstall出来なくなった時の対処法

こんばんわ!!
2日かけてバグと戦うような情弱エンジニアです。精進が必要です。

homebrewを新しくインストールし直したら、brew searchしてもscreenが検索結果に出なくなりました。
今日はその対処法です。
utf-8パッチ付きのものをインストールすると、出なくなっていた絵文字等も表示されるようになります。
まずはtapします。

brew tap rcmdnk/homebrew-rcmdnkpac

続いてインストールです。

brew install screenutf8 --utf8

これでscreenが無事にインストールされるはずです。
また、ターミナルを再起動すると所々おかしかった動作も正常に動作するようになると思います。
誤作動がある方は是非お試しください〜

vimを使っている人はみんなctagsで幸せになれる権利を持っている

こんにちは!飲み過ぎてよくお腹を壊す人です。

結構長い間vimを使って開発をしているのですが、じょうよわなのでこの間初めて知りました。

開発中にどこから呼ばれてるのか分からないクラスやモジュールとかをgit grepしてたんですけど、
ctagsが超便利すぎて泣いて喜んだのでメモです。

まずインストールです。macの場合はctagsというコマンド自体は最初から入っていますが、
バージョンが古いのか、なんだか仕様が若干違うのでhomebrewでinstallし直すと良いと思います。

$ brew install ctags

設定ファイルは.ctagsに書きます。

ctagsのインストールが完了したら、"tags"というindexファイルを作成します。
ソースのあるディレクトリで以下のようなコマンドを入力します。

$ ctags -R

tagsというファイルが存在していたら成功です。
また、jsファイルはデフォルトだと

ctags: Warning: ignoring null tag in XXXX.js

っていうエラーが出るので、
gist.github.com
こちらのリンク内の内容を.ctagsに追加すると、jsファイルもtagsに含めてくれると思います。

あとはvimで開いているソースコードの中で、
調べたいワードにカーソルが乗っている状態でCtrl + ]をすると、
対象のファイルが出てきます。(カーソルも名前の一番先頭にあります。)

また、デフォルトの設定だと、今までの開いていたファイルの上に出てきちゃうので(:b#で戻れますが)これがなかなか厄介です。

なので以下の設定を入れると、新しいタブでファイルが出てきます。

map <C-]> :tab split<CR>:exec("tag ".expand("<cword>"))<CR>

gist.github.com
こちらを参考にさせて頂きました。

これでより幸せな開発環境を手に入れることが出来ました。幸せです。

ドキュメントはこちらです。
CTAGS

git statusでsyntax checkをしよう

こんばんわ!
膝に痛みを感じた瞬間に痛風だと思った情弱です!

最近は少しだけPHPを触るようになってファッションPHPヤローみたいな生活をしている訳ですが、
Rubyに体が慣れてしまってどうしてもお昼ご飯を忘れたおばあちゃんのノリでセミコロンを忘れるので、

git statusの時についでにsyntax chackするように.gitconfigにaliasを追加しました。
結構ごりごりです。

gist21c13200bae7d489896b

内容としては、git status --shortで編集済みのファイルパスを取得して、
その中でphp拡張子がついているファイルがあればphp -lで文法チェックをしている流れです。

PHPの場合はphp -lで文法チェックができますが、コマンドを打っているだけなので他の言語でも使えます。
Rubyでもruby -wcとかで同じように表示されると思います。

ただ、.gitconfigにshellscriptを書く場合は記号をエスケープする必要があるので
普通に新しいファイルに同じ内容を書いて、それをaliasで読み込む方が正直やりやすいです。

[alias]
  st = "!f(){ . git_syntax_check.sh };f"

こんな感じ

ただ、設定ファイルをこれ以上増やすのが嫌だったので.bashrcに関数を追加してその関数を
.gitconfigから呼ぼうとして色々試してみたのですがなかなか上手くいかなかったのでこの方法にしました。

.gitconfigのaliasから他のshellscriptファイルの関数を呼ぶナイスな方法を知っている方がいたらぜひ教えてくださいスリスリ

screenのペーストバッファをclipboardにも共有させて幸せになろう

こんばんわ。アラです。

ソースコードの中のfunctionをググりたかったり、
メモしておいたものをそのままチャットで伝えたかったりするときなどに、
毎回マウスで選択してコピーして・・・ってやるのがとても面倒だったので、
screenのペーストバッファをclipboardにそのままコピー出来るようにしました。

方法は以下の設定をbashrcに入れるだけです。

流れとしては、screenでコピーしたものをbufferfileに保存して、
そのファイルの中身をcommandでclipboardに入れています。

Macじゃない人はpbcopy以外でもclipboardにコピーするcommandをpipeで繋げると同じようにいけると思います。

私は職場でSynergyを使ってMacWindowsのマウスとキーボードを共有しているのでが、
Macで開発、Windowsで資料作成というシーンがわりと多かったのでこれはとても便利です。

秒速で幸せになれるので是非お試しください!

ubuntuのapt commandが頼もしくなって帰ってきててすごい

先日久しぶりにubuntuを触っていたら、package管理で気づいてしまいました。

すっかりMacのhomebrewに慣れてしまっていたので、
brew searchの乗りでapt-get searchと打ち込んでみると

$ apt-get search git
E: Invalid operation search

怒られました。

ふぁっ?!ってなって探してみると、

$ apt-get --help
~~(略)~~
Commands:
   update - Retrieve new lists of packages
   upgrade - Perform an upgrade
   install - Install new packages (pkg is libc6 not libc6.deb)
   remove - Remove packages
   autoremove - Remove automatically all unused packages
   purge - Remove packages and config files
   source - Download source archives
   build-dep - Configure build-dependencies for source packages
   dist-upgrade - Distribution upgrade, see apt-get(8)
   dselect-upgrade - Follow dselect selections
   clean - Erase downloaded archive files
   autoclean - Erase old downloaded archive files
   check - Verify that there are no broken dependencies
   changelog - Download and display the changelog for the given package
   download - Download the binary package into the current directory

packageを探せそうなcommandがありません。
実はこれ、探すときはapt-cacheというのを使います。

$ apt-cache search OKOME

ちなみにapt-cacheは他に以下のようなコマンドが使えます。

$ apt-cache --help
~~(略)~~
Commands:
   gencaches - Build both the package and source cache
   showpkg - Show some general information for a single package
   showsrc - Show source records
   stats - Show some basic statistics
   dump - Show the entire file in a terse form
   dumpavail - Print an available file to stdout
   unmet - Show unmet dependencies
   search - Search the package list for a regex pattern
   show - Show a readable record for the package
   depends - Show raw dependency information for a package
   rdepends - Show reverse dependency information for a package
   pkgnames - List the names of all packages in the system
   dotty - Generate package graphs for GraphViz
   xvcg - Generate package graphs for xvcg
   policy - Show policy settings

なんかわかんなくなっちゃうな〜と思いながら調べていたら、
ubuntu14.04からapt commandというものが出たという情報を仕入れました。

このapt commandは、今までapt-◯◯◯と入力していたそれぞれを、
一つに統合してくれています。要するにbrew searchのノリでいけます。

aptと入力すると以下のようにヘルプが表示されます。

$ apt
apt 1.0.1ubuntu2 for amd64 compiled on Oct 28 2014 20:55:14
Usage: apt [options] command

CLI for apt.
Basic commands:
 list - list packages based on package names
 search - search in package descriptions
 show - show package details

 update - update list of available packages

 install - install packages
 remove  - remove packages

 upgrade - upgrade the system by installing/upgrading packages
 full-upgrade - upgrade the system by removing/installing/upgrading packages

 edit-sources - edit the source information file

検索もapt search OKOMEと打てるので楽勝です。

search-result
しかも検索結果やinstall中の表示も色分けされていて、
見やすくなっています。

とても使いやすくなっていて心がぴょんぴょんしました。
まだ基本のところしか使っていませんが、これから色々見ていこうと思います。

あと、Macでの開発をメインに行っていましたが
vagrant等でこちらも積極的に使っていきたいと思いました。


おしまい!

コマンドから突然のジェネレータつくりました

とても久しぶりの投稿です。

夏に負けていました。

最近メッセなどでもよく使うのでcommandから突然のアレをつくれるようにしました。
しにたいとおもいます。


f:id:wknar0311:20140907023116p:plain

$ sudden okome

こんな感じで出来るようにしました。


まず、引数からバイト数を取得します。
文字数ではなくバイト数にしてるのは半角と全角でフレームの大きさが違ってしまうからです。

aliasで引数の取得は出来ないのでfunctionをつくります。

function sudden {
  byte=`expr length "$1"`
}

地味にハマったのですが、環境によってexpr lengthはダブルクォーテーションつけないと読んでくれないことがあって、構文エラーになります。


上のフレームが「人」
真ん中「> okome <」
下「Y^」

それぞれ2byte, 2+1+1+2byte, 2byteあるので、
それに沿って適当に割ったり足したりをします。

function sudden {
  byte=`expr length "$1"`
  frame=`expr $byte / 2 + 2`
}


このframeという変数を使って、枠を表示させていきます。

c=0
while [ $c -ne $frame ]
do
  echo -n "人"
  c=`expr $c + 1`
done


あとはその他をいい感じに表示させるだけです。

最終的にこんな感じになりました。

gist7db337ce7146c1b703e8
狂気の沙汰っぽくなりました。



という訳で、結果です。


f:id:wknar0311:20140907023625p:plain
okome!!!!


f:id:wknar0311:20140907023630p:plain
onigiri!!!!


f:id:wknar0311:20140907023634p:plain
ア!!!!



おしまい!健康大切に!

xclipがいい感じ

こんばんわ夏ですね。

暑いので保冷剤を持って会社に行こうとしたら家を出た瞬間に溶けました。



今回はコマンドの結果をクリップボードにコピーするように使えるコマンドを知ったので書きます。

xclipです。Macでいう、pbcopyのような感じで使えます。



http://i.gyazo.com/5b60cccfae76583a265ec66cbbc667c6.png
こんな感じで、結果をコピーしたいコマンドのあとにパイプでxclipして、


http://i.gyazo.com/a1212225926f067c72ff25b385ed4ebf.png
option o で出力してくれます。




http://i.gyazo.com/fb5c7df16ed4bbd51ad865587f47b9a1.png
色んなオプションがあります。



ただ、xclipは長いので、xcでaliasつけました。



ちなみに、このxclip、まじで普通のクリップボードの役割を持っていて、

http://i.gyazo.com/5f6e951d493869641fac99b902407011.png
どこかからコピーしてきた文字もちゃんと拾ってくれます。




おしまい!おやすみニッポン。