詳細は 2日でできる!JavaScript トレーニング - mixi Engineers' Blog に書きました。
研修資料をつかって講義するのは来週なので、楽しみですねー!
詳細は 2日でできる!JavaScript トレーニング - mixi Engineers' Blog に書きました。
研修資料をつかって講義するのは来週なので、楽しみですねー!
こんばんは、最近Slackのbotを開発していて、同期から「それ、hubotでできるよ」と聞いて一度死んで転生した(;♥;)です。今回は周りのエンジニアがシビれる環境構築コマンドを作成してみましょう!
なんと、下のコマンド一発で環境構築できるんですよ? シビれますね!
$ curl -sL dot.orgachem.com | sh
なお、内容はさくらVPS向けに書いております!
サブドメインを追加
サブドメインの登録には時間がかかるので先に済ませておきましょう。
私はさくらでドメイン(orgachem.org
)を取得したので、さくらからdotfiles
用のサブドメイン(dot.orgachem.org
)を追加します。
お名前comの方は、お名前.comでサブドメインを登録する - Wrap Disital Worldが参考になりそうです。
githubで.bashrc
などをまとめたリポジトリ(dotfiles
)を作成
既にdotfiles
系のリポジトリがある方は 3 に進んでください。
githubに.bashrc
や.vimrc
などをまとめたdotfiles
というリポジトリを作成します(例:OrgaChem/dotfiles)。まず、サーバーにアップロードする設定ファイルを~/.dotfiles
にまとめます。
$ mkdir ~/.dotfiles
$ cd ~/.dotfiles
$ mv ~/.bashrc .
$ mv ~/.vimrc .
...
次に、githubで新しいリポジトリを作成します(new repositryからできます)。リポジトリの名前はdotfiles
にしておきましょう。
$ git init
$ git add ~/.*
$ git commit -m "Initial commit"
$ git remote add origin https://github.com/YOUR_ACCOUNT/dotfiles.git
$ git push -u origin master
4行目のYOUR_ACCOUNT
は、あなたのgithubアカウントに書き換えてください。
インストール用のシェルスクリプトを用意
次に、インストール用のシェルスクリプトを用意しましょう。2行目はおまじないです。
#!/bin/sh
# Thanks, @kaorimatz!
set -e
set -u
setup() {
dotfiles=$HOME/.dotfiles
has() {
type "$1" > /dev/null 2>&1
}
symlink() {
[ -e "$2" ] || ln -s "$1" "$2"
}
if [ -d "$dotfiles" ]; then
(cd "$dotfiles" && git pull --rebase)
else
git clone https://github.com/YOUR_ACCOUNT/.dotfiles "$dotfiles"
fi
has git && symlink "$dotfiles/.gitconfig" "$HOME/.gitconfig"
has git && symlink "$dotfiles/.zshrc" "$HOME/.zshrc"
has vim && symlink "$dotfiles/.vimrc" "$HOME/.vimrc"
}
setup
下から9行目のYOUR_ACCOUNT
もあなたのgithubアカウントに書き換えてください。
次に、下から4行目〜6行目のシンボリックリンクを張る部分は、設定ファイルに応じて書き換えてください。
このスクリプトを ~/.dotfiles/setup.sh
に保存します。
$ cd ~/.dotfiles
$ git add setup.sh
$ git commit -m "Add setup script"
$ git push
サーバー(さくらVPSなど)にnginxを立てる
次に、curlコマンド curl -sL dot.hoge.com
で先ほどのセットアップ用スクリプトをダウンロードできるようにWebサーバーを準備します。今回はnginxを使います。サーバーにログインしたらnginxをインストールしましょう。
(サーバーで実行)
$ sudo rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
$ sudo yum install -y nginx --enablerepo=nginx
$ sudo service nginx start
$ sudo chkconfig nginx on
nginxの設定をおこないます。下から4行目のexample.com
をあなたのドメインに書き換え、下から2行目のYOUR_ACOUNT
はあなたのgithubアカウントに書き換えてください。
$ sudoedit /etc/nginx/conf.d/default.conf
server {
listen 80;
server_name localhost;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
server {
listen 80;
server_name dot.example.com;
rewrite ^ https://raw.githubusercontent.com/YOUR_ACCOUNT/dotfiles/master/setup.sh;
}
この設定は、dot.hoge.com
でアクセスしてきたクライアントをhttps://raw.githubusercontent.com/YOUR_ACCOUNT/dotfiles/
にリダイレクトさせるものです。
nginxを再起動します。
$ sudo service nginx restart
終わり
$ curl -sL dot.YOUR_DOMAIN.org | sh
いかがでしたか? これであなたもシビれる環境構築が始められますね!
この利用コンセプトを披露してくれた@kaorimatz、このインストール方法の注意点についてアドバイスにしてくださった@supermomongaさんに感謝!
Nodeの代表的な認証モジュール「Passport」の解説ページを(勉強ついでに)邦訳しました(邦訳版ページ)。
@merborne さんのエントリ「英語圏のオープンソースプロジェクトにおける翻訳ドキュメントの問題点とその解決のための一方策」に触発されて対訳機能をつけてみました。パラグラフの末にある» 原文
を押すと、対訳が下に表示されます(下図)。
大学の頃の研究が、オーストリアで開かれていたMoMM2013という国際会議のショートペーパー部門で表彰されました。うれしい! ただ、(~♥~)は既に大学を卒業してしまった身なので、英語論文を書き上げたのは先生です。つまり、私の論文が表彰されたというよりかは、私の研究アイデアが認められた、という印象ですね。先生に大感謝です。
MoMMはモバイルコンピューティングとマルチメディアを取り扱う国際会議です。モバイルのMo+マルチメディアのMMで、MoMMというわけです。この国際会議では研究初期のアイデアなどを発表するショートペーパー部門があり、この部門で私の研究テーマ「同時押し暗証番号認証」が表彰されました。
当時の私の研究テーマは、暗証番号認証をなんとかしてより安全にすることでした。いろいろな認証方法を考え、あーでもないこーでもないとやっていたそんなあるとき、研究アイデアの元となるアイデアをひらめきました。
「複数の数字を同時に入力できたら、入力できるパターンが増えるんじゃないか?」
続きを読むこの記事では、JavaScript - Client Side - Advent Calendar 2013の23日目の記事です。
さて、googkit を使ってカンタンに Closure Library での開発をはじめる方法を紹介します。
googkit は Closure Library を使った開発を手助けするツールです。私が前に開発した Webアプリケーション「piine! 」も Closure Library + googkit を使っています。
では、本題の googkit の説明に移る前に Closure Library の説明から始めましょう。
そもそも Closure Library ってばすごいライブラリなんですよ!!(白目
パリッとキマったクラス指向
var Child = function() {
goog.base(this);
};
goog.inherits(Child, Parent);
おまかせ依存管理
goog.require('foo.bar');
foo.bar.FooBar(); // これだけで foo.bar モジュールが利用できる!
質・量ともに類を見ないライブラリ群(30MBくらいある!)
// 配列処理はもちろん
goog.require('goog.array');
goog.array.forEach(arr,
function(elem, index) { console.log(elem, index);});
// ときどき欲しくなるこんなのも
goog.require('goog.crypt.base64');
var base64str = goog.crypt.base64.encodeString('Hello, World!');
Closure Compilerとの相性バツグン
Closure Compiler の機能をフルに活用できるのは Closure Library だけ!
なんかAltJSよりもすごい部分があるような……?
ま、まさか!
AltJSなんていらなかったんや…!