アラのアラアラしい日記

こっそりかいてます

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等でこちらも積極的に使っていきたいと思いました。


おしまい!

brew caskを知らなかった今までの人生を取り戻したい

こんにちは。

あと2ヶ月ほどで生まれてから24年が経つ訳ですが、
今回brew caskというツールを知って今までの人生を後悔したので、
今日はそれについて書こうと思います。

Macで何かしらのアプリをwebからダウンロードする時に、
dmgファイルをダウンロードすると思います。
このdmgファイルからアプリをインストールする時の
手順がめちゃくちゃ面倒くさいなと思っていました。

ダウンロードしたdmgファイルの中身にアクセスするには
イメージのボリュームをマウントする必要がある為、
Mac先輩が自動的にデスクトップにマウントします。

その後にアプリケーションをアプリケーションフォルダにドラッグしたりします。

また、もし必要なくなったdmgファイルを削除した場合、
dmgファイルをゴミ箱に入れるだけでなく、
デスクトップにイメージがマウントされているので
それもゴミ箱に移動してからやっと削除が出来る訳です。

もう一度言いますが
手順がめちゃくちゃ面倒くさいなと思っていました。

そこで調べてみたところ、どうやらhomebrewのcaskという
ツールがよしなにやってくれることが分かったので使ってみることにしました。

公式にも載っていますが、以下のようにインストールします。

$ brew install caskroom/cask/brew-cask

あとは欲しいアプリを探して、

$ brew cask search chrome

インストールするだけです。

$ brew install google-chrome

そうすると、ちゃんとアプリケーションフォルダ内にアプリが入ってます。
無駄なファイルも他に作られていません。

めちゃくちゃ簡単ですね!

手動とCaskの手順をまとめると以下のようになります。

Manual
  1. download dmg file from browser
  2. double click dmg file & mount diskimage on desktop
  3. drag new application to "applications" folder & install application
  4. remove diskimage from desktop
Cask
  1. seach application on terminal
  2. install application

なんかえいごになっちゃいましたがCaskの方が圧倒的に操作が少ないです。

なんで今までこんな便利なもの知らなかったんだろうな・・・

2015/01/18 追記
installしたアプリのバージョンを上げたい場合は、
もう一度同じ手順でinstallをするとそのままよしなにupgradeしてくれます。

$ brew cask install virtualbox
==> Downloading http://download.virtualbox.org/virtualbox/4.3.20/VirtualBox-4.3.20-96996-OSX.dmg
######################################################################## 100.0%
==> Running installer for virtualbox; your password may be necessary.
==> Package installers may write to any location; options such as --appdir are ignored.
Password:
==> installer: Package name is Oracle VM VirtualBox
==> installer: Upgrading at base path /
==> installer: The upgrade was successful.
�  virtualbox staged at '/opt/homebrew-cask/Caskroom/virtualbox/4.3.20-96996' (4 files, 110M)

超便利っすな〜〜〜

RaspberryPi B+ model の OSインストール から SSH接続まで

ついにゲットしましたああああ!!!
ラズパイいいいい〜〜〜!!!
ふっふーぅ↑↑↑

しかも今年の夏に発売されたばかりのB+モデルが手に入ったので、
今回はそれについて書こうと思います!

alt text

まず、Bモデルとの違いについてですが、
個人的に大きいのはUSBポートの数です。

Bの時は2つで、もっと欲しかったら
セルフパワーのハブ買ってねという感じだったので、
あ〜ぐちゃっとするな〜と思っていたのですが、
B+は4つ搭載してくれているので装着が楽 & 見た目が綺麗になりました。
あとSDカードスロットがmicroSDカードスロットになっていたり、
全体的にシュッとして(る気がし)ます。

ちなみに今回、アキバの4店舗をまわりましたがB+はやっぱり人気で
わりとどこも品薄になってきているようです。

各店舗と状況は以下の通りでした。

おみせ 状況
マルツ 売切
若松通商 4700円
千石電商 5250円
あきばお〜 5250円

alt text

使うために必要なケーブル、キーボード等を全て新しく買いましたが、それでもraspi含めて合計1万円ちょっとだったのでかなり手頃だなと思いました。

alt text

電源を入れただけなのに美しいです。

OSのインストール

まず、OSのインストールから行っていきますが、
以下のサイトが非常に分かりやすく参考にさせてもらったので、
つまずいた部分だけを書いていきたいと思います。
参考: RaspberryPi - Raspberry Pi に入門してみた。 - Qiita

SDカードを差し込んでからMacのターミナルでdfと入力すると
以下のようなディスク使用量一覧が出力されます。

$ df
Filesystem    512-blocks      Used Available Capacity  iused    ifree %iused  Mounted on
/dev/disk1     487830528 224485912 262832616    47% 28124737 32854077   46%   /
devfs                370       370         0   100%      642        0  100%   /dev
map -hosts             0         0         0   100%        0        0  100%   /net
map auto_home          0         0         0   100%        0        0  100%   /home
/dev/disk2s1     7798784      6016   7792768     1%        0       0  100%   /Volumes/OKOME

今回の場合は「OKOME」がSDカードです。

そして、ここでSDカードをunmountしようとすると、

$ sudo umount /Volumes/OKOME
"umount(/Volumes/OKOME): Resource busy -- try 'diskutil unmount'"

diskutil unmountをやってみてねと言われます。
言われた通りに実行してみると、

$ sudo diskutil unmount /Volumes/OKOME
diskutil unmount - Unmount failed for /Volumes/OKOME

失敗されます。
しかもエラーの内容が出ないのでちょっと困ります。

実はこれ、色々原因があるそうなのですが、
FinderでSDカードの中身を開いていたり、
mvコマンド等でカード名を変更したりすると起こるエラーのようです。

一旦カードを正常に抜いてからもう一度トライすると上手く行きます。

OSの入ったSDカードをraspiに入れて電源を入れてみると、

alt text

こんな感じでインストールがスタートします。
IDとパスワードを入力するといつもの黒い画面が完成します!

ここからGUI画面にうつるには、以下のcommandを入力します。

$ startx

startのあとの「x」はXorgのxだと思われます。
参考: Xorg (日本語) - ArchWiki

alt text

GUIのデスクトップが表示されました。

SSH接続

まず、ネット接続にはLANが必要です。今回は無線LANアダプタを使いました。

ここで注意しなくてはならないのが、raspiと対応するSDカードがあるように、
無線LANアダプタにも対応している種類があるので気をつけてください!

接続していることは認識してもらえるのですが、
無線LANアダプタとして認識してもらえないことがあります。
対応するkernel moduleを作るなど、解決策はあるようですが手間がかかりそうなので、
最初から合ったものを買う方が早いかと思われます。
(今のところ、BUFFALOの製品は全体的に行けそうです。)

無線LANアダプタの接続を確認するには以下のcommandを入力します。

$ lsusb

ここで接続されているデバイスの一覧が出力されますが、
接続した無線LANの型番が表示されていたらきちんと認識されています。

また、ifconfigでも確認できます。
("wlan0"という表示と情報が出ていればOKです。)

続いて、IPアドレス等の設定を行います。

ネットワークの設定ファイルを編集します。
raspbianにはdefaultでviも入っていましたが
キーの操作等が安定していなかったので今回はnanoを使います。

$ sudo nano /etc/network/interfaces

固定IPアドレスに変更して、IPアドレス、ネットマスク、デフォルトゲートウェイの値を設定します。
※値は例です。

auto lo

iface lo inet loopback
iface eth0 inet static <- 「dhcp」を「static」に変更します。

address 192.168.100.101 <- IP address
netmask 255.255.255.0 <- netmask
gateway 192.168.1.1 <- default gateway

allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

続いて、DNSサーバの情報を変更します。

$ sudo nano /etc/resolv.conf

nameserver 8.8.8.8という設定のアドレス部分を先ほど設定したIPアドレスに変更します。

nameserver 192.168.100.101

2ファイルの編集が完了したら設定を読み直します。

$ sudo /etc/init.d/networking reload

無線LAN設定についてはGUIでポチポチっと終わらせてしました!

以下のサイトに画像付きで説明があります。
参考: Studio ODIN - blog風小ネタ集 > Raspberry Pi で無線 LAN 接続 (2)

いよいよSSH接続を行います。
raspi上でSSHサーバを起動します。

$ sudo /etc/init.d/ssh start

raspiが起動した時に自動的にSSHサーバも起動するようにしておくには、
以下のように設定します。

$ sudo update-rc.d ssh defaults

これらの設定を終えた後、Macから接続してみます。

alt text

うまくいきました!! ちなみに、「slogin」でも「ssh」でも接続可能です。

こんな感じで、SSH接続まで無事に完了しました〜。
こういった知識が全くと言っていい程ないので超ググりながら進めましたが、
それでもここまで1時間程度で出来たのでやっぱりraspi先輩すごいなーという感じです。
これからいっぱい触っていこうと思います!

alt text

おやすみなさい!

gccとかlibv8とかtherubyracerとかのinstallでハマった

よっし、忘れないうちに前回のエントリの続きを書いていきます!

YosemiteにOSをupdateしてから、bundle installが出来なくなったので、
エラー内容からgccのバージョンアップを行いました。

gccのバージョンアップ方法は、以下のとおりです。

$ brew tap homebrew/versions
$ brew install gcc49

homebrewを使いました。
まずは、homebrew/versionsをtapしてきて、 その中にある最新のgcc(現時点では4.9系)をinstallします。

参考: Homebrew/homebrew-versions · GitHub

デフォルトでは、gccは/usr/bin/にありますが、
新しくinstallしたgccのシムリンクを/usr/local/bin/に貼ると安心です。

$ which gcc
/usr/bin/gcc
$ ln -s /usr/local/bin/gcc-4.9 /usr/local/bin/gcc
$ ln -s /usr/local/bin/g++-4.9 /usr/local/bin/g++
$ which gcc
/usr/local/bin/gcc
$ gcc --version
gcc (Homebrew gcc49 4.9.1) 4.9.1
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

こんな感じの結果が得られると思います。

このあとにbundle installをすると、

~~~~(略)~~~~
checking for main() in -lpthread... yes
checking for main() in -lobjc... yes
checking for v8.h... no
*** extconf.rb failed ***
~~~~(略)~~~~

今度はv8がないよ!というエラーが出ました。

システムに既にインストールされているv8をbundlerが読むように設定しました。

$ bundle config build.libv8 --with-system-v8

しかし、このあとにまたbundle installをすると、
今度はtherubyracerがインストールできないよと怒られます。

色々調べみた結果、localの中に2つのバージョンのlibv8が存在していることに気づきました。

libv8をアンインストールしてから、v8をインストール、
そのあとにtherubyracerをインストールすることでbundle installが成功しました。

$ gem uninstall libv8
$ brew install v8
$ gem install therubyracer

v8はjsの実行エンジンなのですが、
それをrubyから使っちゃおうぜというのがtherubyracerだそうです。
環境に応じて必要なv8を提供してくれるのがlibv8です。

やー、べんきょうになりました。

Yosemiteにしたらbundle installが出来なくなった話

こんにちはこんにちは!!わたしあらちゃん!

先日MacOSYosemiteにしました!
そしたらbundle installが出来なくなりました!!やったー!!

やろうとしていたのはrailsの中のbundle installですが、
こんな感じのエラーが出ました。

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

    /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb
checking for rb_thread_blocking_region()... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
        --with-opt-dir
        --without-opt-dir
        --with-opt-include
        --without-opt-include=${opt-dir}/include
        --with-opt-lib

~~~~(略)~~~~

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:1003:in `have_func'
        from extconf.rb:3:in `<main>'


Gem files will remain installed in /Users/USERNAME/development/APPNAME/.bundle/ruby/2.0.0/gems/nio4r-1.0.0 for inspection.
Results logged to /Users/USERNAME/development/APPNAME/.bundle/ruby/2.0.0/gems/nio4r-1.0.0/ext/nio4r/gem_make.out
An error occurred while installing nio4r (1.0.0), and Bundler cannot continue.
Make sure that `gem install nio4r -v '1.0.0'` succeeds before bundling.

nio4rのインストールでエラーが出ました。
「mkmf.logを見てね」と書いてあるので見ててると、

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/include/ruby-2.0.0/ruby/ruby.h:24:10: fatal error: 'ruby/config.h' file not found

logの中の一行に上のような内容が書いてあって、
確かに対象のディレクトリからconfig.hというがファイルが消えていました。

他の方々のブログでも書いてありましたが、
解決方法としてはxcodeのcommand line toolsもバージョンアップしていたようなので、
xcodeもupdateする必要がありました。(普通にapp storeにありました)

また、brew doctorをしてみたらhomebrewも
最新版にupdateする必要があることが判りました。

Warning: Your Xcode (6.0.1) is outdated
Please update to Xcode 6.1.
Xcode can be updated from the App Store.

Warning: Your Homebrew is outdated.
You haven't updated for at least 24 hours. This is a long time in brewland!
To update Homebrew, run `brew update`.

xcodeをupdateしてから再度bundle installをしてみたら、

Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/c++/4.2.1
Unable to find a compiler officially supported by v8.
It is recommended to use GCC v4.4 or higher

またエラーが出ました。

半ギレで見てみると「gccのバージョンを4.4以上にしてね」ということなので、 現在のgccバージョンを確認してみると、

$ gcc -v
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/c++/4.2.1
Apple LLVM version 6.0 (clang-600.0.54) (based on LLVM 3.5svn)
Target: x86_64-apple-darwin14.0.0
Thread model: posix

4.2でした。
※今のところxcodeを入れた時のデフォが4.2のようです。
参考: UsingTheRightCompiler – MacPorts

というわけでhomebrewで最新版のgccをinstallしました。

ちなみに今回のxcodeのupdateは1時間10分程度、
gccのインストールは1時間30分程度でした。
やたら長かったんだけどこんなもんなのかな・・・

あと、このupdateで他にもgcc, g++とか、libv8, therubyracerのインストールまわりで
めちゃくそハマったので忘備録としてそのあたりについて今度書きたいと思います(白目)

おやすみなさい
_(┐「ε:) (:3」∠)_

追記: この記事の続きを書きました。