【Mac】nodebrewを使ったNode.jsの環境構築

単純に公式サイト https://nodejs.org からpkgをダウンロードしてインストールが最も簡単な方法ではあるが、pythonやrubyにバージョン管理ツールが用意されているように、Node.jsにもバージョン管理ツールがあるのでそれを使うことにする。

過去にNode.jsを使っていたことがあるので、一旦環境をリセットして再度バージョン管理ツールでインストールという流れで進める。

現状のNode.jsを完全にアンインストール

MacにpkgでインストールしたNode.jsをアンインストールする手順

を参考にインストーラでインストールしたNode.jsをアンインストール。
これでpkgでインストールしたNode.jsは削除できたようだ。

しかし

$ node -v

が未だに実行できてしまう。
そこで、そもそもnodeがどこにあるのかを確認。

$ which node
/Users/***/.nvm/v0.11.14/bin/node

どうも昔の僕はnvmで管理していたようだ。最近はnodebrewがお勧めらしいのでnvmをアンインストールする。

まず、bash_profileの編集。

$ vi ~/.bash_profile

source ~/.nvm/nvm.sh

を削除。

次に.nvmフォルダを削除。

$ rm -rf ~/.nvm

最後にbash_profileの反映

$ source ~/.bash_profile

確認

$ node -v
-bash: node: command not found

完全にNode.jsをアンインストールすることができた。

nodebrewを使ってNode.jsをインストール

次にnodebrewを使ってインストールしていく。
まずhomebrewをインストール。

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”

その後、homebrewを使ってnodebrewをインストール。

$ brew install nodebrew

確認。

$ nodebrew -v

ずらずらと出力されるので完了。
次にNode.jsをインストールする。
その前に、予めディレクトリを作成しておかないとnodebrewをインストールしてもエラーになるので作成。

$ mkdir ~/.nodebrew
$ mkdir ~/.nodebrew/src

その後インストール。

$ nodebrew install-binary latest

確認。

$ nodebrew list
v7.9.0

current: none

current: noneとなっているので、

$ nodebrew use v7.9.0

で、バージョンを指定する。

補足として、
特定のバージョンを使いたい場合は

$ nodebrew ls-remote

でバージョン一覧を取得し

$ nodebrew install-binary 6.9.1

で好きなバージョンをインストールし、

$ nodebrew use  v6.9.1

でOK

その後、nodeコマンドへパスをbash_profileに保存

$ vi ~/.bash_profile

下記を追記

export PATH="$PATH:$HOME/.nodebrew/current/bin"

bash_profileの反映

$ source ~/.bash_profile

確認。

$ node -v
v7.9.0

これでNode.jsのインストールが完了。

念のためnpmも使えることを確認。

$ npm -v 
4.2.0

OK。

海外で3年間働いて、今でもめちゃ使っている英語の便利ツール活用3選

俺日記のしんじです。一人称は僕です。

ベトナムの日常生活ではほとんど英語を使う機会はないが、エンジニアとのコミュニケーションは主に英語だ。
その際、単語が思い出せなかったり、英文の妥当性をすぐに確認したい場合がある。
そんなときに便利な英会話補助ツールのうち、今でもよくつかっているPCツールの活用法を3つ紹介したい。
知っている人からすれば定番のものであるが、それゆえ一度設定してしまえば日々頻繁に使うことになるはずだ。

目次

“海外で3年間働いて、今でもめちゃ使っている英語の便利ツール活用3選” の続きを読む

オフショア開発を3年やってわかった、簡単にIT英語を学ぶ方法と重要性

俺日記のしんじです。一人称は僕です。

イギリスのEU離脱の影響で、円高基調かつ人材不足の昨今。再びオフショア開発について検討している方も多いのではないだろうか。

ベトナムでオフショア開発をはじめて3年。
オフショア開発といえば日本語を話すブリッジSE(以下BSE)を通して行うスタイルが一般的だが、実際に行ってみたところ下記の理由で個人的にはあまりおすすめできない。
“オフショア開発を3年やってわかった、簡単にIT英語を学ぶ方法と重要性” の続きを読む

CentOS7でfirewalldの基本コマンド一覧

ConoHaのVPSを契約してみた。

CentOS7を触るのは初めてだったので、firewalldコマンドについてまとめてみる。

※firewalld自動起動設定確認 enabledで設定済み
# systemctl is-enabled firewalld

※firewalld起動方法
# systemctl start firewalld

※firewalld停止方法
# systemctl stop firewalld

※firewalld自動起動設定
# systemctl enable firewalld

※firewalld自動起動解除
# systemctl disable firewalld

※firewalld設定をコマンドで追加。下記80番ポート
# firewall-cmd --permanent --add-port=80/tcp

※firewalld設定をコマンドで追加2。上記と違い、サービス名で追加することもできる。
# firewall-cmd --permanent --remove-service=http

※firewalld設定をコマンドで削除。下記80番ポート
# firewall-cmd --permanent --remove-port=80/tcp

※firewalld設定更新。各種追加変更を行った場合は必ず。
# firewall-cmd --reload

※firewalld設定をファイルで確認。直接編集してもOK。ただし、ここにport設定があっても、reloadしてないと反映されないので注意
# vi /etc/firewalld/zones/public.xml

※firewalld設定を確認。reloadすると反映される。
# firewall-cmd --list-all

以上。

【Swift】画像をクリップボードにコピーしてペーストするまで

画像をコピーしてペーストする方法を調べた時に、下記のような方法をみつけたが、これだとうまく動かない。

let image = UIImage(named: "logo.jpg")
UIPasteboard.generalPasteboard().image = image;

なので、下記のような方法で実装する。
カスタムキーボードから利用する際は、予めフルアクセスの許可をとる必要があるので、権限を確認する処理も追記した。

    //タップイベント
    func onClickMyButton(sender: UIButton) {
        if(!self.isOpenAccessGranted()){
            //フルアクセスが許可されていない場合。
            println("フルアクセスが許可されていません")
        }
        if let textDocumentProxy = self.textDocumentProxy as? UITextDocumentProxy {
            autoreleasepool {
                let image = UIImage(named: "logo.jpg")
                
                //the Pasteboard is nil if full access is not granted
                let pbWrapped: UIPasteboard? = UIPasteboard.generalPasteboard()
                if let pb = pbWrapped {
                    var type = UIPasteboardTypeListImage[0] as! String
                    if (count(type) > 0) && (image != nil) {
                        pb.setData(UIImagePNGRepresentation(image), forPasteboardType: type)
                        var readDataWrapped: NSData? = pb.dataForPasteboardType(type)
                        if let readData = readDataWrapped {
                            var readImage = UIImage(data: readData, scale: 2)
                            println("\(image) == \(pb.image) == \(readImage)")
                        }
                    }
                }
            }
        }
    }
    
    
    //フルアクセスがきちんと許可されているか確認するためのメソッド
    func isOpenAccessGranted() -> Bool {
        return UIPasteboard.generalPasteboard().isKindOfClass(UIPasteboard)
    }

参考:http://stackoverflow.com/questions/27307156/copy-image-with-uipasteboard-swift

【Swift】カスタムキーボードで削除ボタンを実装する

カスタムキーボードで、削除ボタン(バックスペースボタン)を実装しようといろいろ調べてみると、単純にaddTargetで削除処理を呼び出せばいいというわけではなく、削除ボタンを押し続けた際の動きなどいろいろ考慮しないといけないようで、少しSwift初心者にはハードルが高そうだ。

ネット上にいいサンプルコードがないか探してみたところ、GitHubにうってつけのコードを発見。

https://github.com/archagon/tasty-imitation-keyboard

英語キーボードを全てコードで実装しているらしい(すごい)。各アイコンもベジエ曲線などを使いを見事に表現している。

とりあえず、削除の処理の部分のみを抜粋し、自分のプロジェクトに適用してみる。

“【Swift】カスタムキーボードで削除ボタンを実装する” の続きを読む

【Swift】カスタムキーボードで地球儀アイコンを表示させる

iOSのシステムキーボードの切替ボタンはこのように地球になっている。
スクリーンショット 2015-08-21 22.31.14

カスタムキーボードを作る際は、この切替ボタンがデフォルトではテキストになっており、地球アイコンを使いたいなら自前で用意する必要がある。
その方法として1,絵文字を使う方法、2,ベジェ曲線を使って描画する方法を記す

“【Swift】カスタムキーボードで地球儀アイコンを表示させる” の続きを読む

【Mac】Vagrantをインストールし、Apache、PHP、phpMyAdmin、MySQLインストールまで

俺日記のしんじです。一人称は僕です。

目標

VagrantをMacにインストールし、Apache、PHP、phpMyAdmin、MySQLなど基本ソフトインストール。接続確認まで。
“【Mac】Vagrantをインストールし、Apache、PHP、phpMyAdmin、MySQLインストールまで” の続きを読む

【Ansible】lineinfileのinsertbefore、insertafterについて

構成管理ツールAnsibleについてメモ。

iptablesの設定ファイルのように、文末にCOMMITを残しつつ、その上に新しい行を追加したいような場合。

こう書けばOK。冪等性も保証。

    - name: ポート解放
      lineinfile: >
            state=present
            backup=yes
            dest=/etc/sysconfig/iptables
            insertbefore='^COMMIT'
            line='-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 6379  -j ACCEPT'
      sudo: yes

vagrantを使わず、さくらサーバーでテストを行っているが、そのせいでplaybookの実行テストにものすごく時間をかかっているのかもしれない・・・。