僕 bats 好きなんですよ。なので Test-Kitchen でめっちょテスト書きます。なんとなくふわっとした複合的な要件は Serverspec で書きます。どちらにせよ、アプリじゃ無くてインフラなので、普段の25倍くらいは書きたいところです。 そんでいっぱしのレシピが書けて、クックブックが仕上がって、 git push して、そのあといろんなやり方で実際の環境、成果物をつくりますよね。自分の場合 docker のコンテナと IAM と Vagrant BOX にします。 VPS や自前のハードウェアに展開することが全く無いので、実際の論理マシンに直接 Chef を流すことが今はないのです。 なので、作るのは今 packer を gradle で動かして作ってます。 そこまではいいんですが、じゃあそこで例えば Vagrant の Box ができあがったとして、これもう一回、レシピ作った
Ubuntu でずいぶん前に作ってた Packer の json で CentOS 用の box 作ろうと思ったら途中でハングした感じになってた。どうも reboot したとき、その script は exit するのだけど、 sshd やら network やらはまだちょっとの間生きているので Packer が次の script を走らせてしまうみたいだ。 Ubuntu の時は大丈夫だったのはなんでだ?。ただの奇跡かな。 reboot の実装違うとかかな。 で、ドキュメントとソース見たら、 ssh が切れたらすぐに次のスクリプトには進めなくなる上に、最大で start_retry_timeout 時間分待って再接続して次のスクリプトから進めてくれるということだったので、 #!/bin/bash -eux systemctl stop sshd reboot 当然こんな感じになりました。ば
OSX 10.9.3 で最新の brew で go を入れました。 検索すると比較的活発な intelliJ のプラグインがあったので入れました。 File > Project Structure から新しく SDK を設定せよというのでパスを入れるんですが「スカッ」って感じで何も起こりませんし追加もされませんしエラーも出ません。 悲しくなったので検索したら、 SDK として追加するのは /usr/local/Cellar/go/1.3/libexec でした。 あと GOROOT と GOPATH 入れろってこのプラグインうるさいんです。 .bash_profile とかで入れるといちいちターミナルから起動するのいやなので、 launchd さんが /etc/launchd.conf か $HOME/.launchd.conf を起動時にぶちかましてくれるということなので、 setenv
すっかり Windows での仕事に慣れたので、これまではそういうものだからと最初から諦めていたことも少しだけ調べてみたりしています。 cmd.exe で ANSI colors cmd.exe 上でも ANSI 色エスケープシーケンス出力を視覚的な色に変換したいです。例えば awsome print の出力だとか。 ansicon adoxa/ansicon ありました。2005年からありました。さらっと書いてあるウェブサイトの方からバイナリをダウンロードし、シンプルには PATH を張って cmd.exe 中から ansicon を実行です。 素晴らしい。 ConEmu しかしよく考えたら ConEmu が対応してないはずが無いです。てかたまに色付いてるの見ます。実際公式にも対応してるって書いてあるし、 ConEmu の中で H:\>type "C:\Program Files\Con
今朝、クロネコさんの荷物問い合わせ結果画面をリロードしつつ「配達中」ステータスになるのを待っていたら、なんかこれは人間のやることじゃないぞと思い立ち、 Chrome の Extension を書きました。 それがこれ、クロネコヤマタブルです。 しかしこの Extension 自体はどうでも良く、詰まったりへえと思ったところを書きます。 background の js では cross origin な XHR が使える https://github.com/oogatta/kuronekoyamatable/blob/master/main.js#L25 普通に使えちゃうんですね。 var xhr = new XMLHttpRequest(); xhr.open('POST', 'https://api.pushover.net/1/messages.json', true); xhr.o
事情あってクリーンインストールしたので Windows 8.1 に ruby を入れ直そうと思ったが、 RubyInstaller に 2.1 が来ないのと、 Windows のことだしいつ RubyInstaller の更新止まってしまうか分からない。最低限のことはサードパーティに頼らず自分で出来た方が良いよなと思いやってみたら(ある程度は)できた。 Visual Studio 2013 Express for Desktop 入れる。 開発者コマンド プロンプト for VS2013 を立ち上げる。スタートメニューの "Visual Studio ツール" ってとこに入ってた。 実はこの "開発者コマンド プロンプト for VS2013" って %comspec% /k ""C:\Program Files (x86)\Microsoft Visual Studio 12.0\Com
code https://gist.github.com/oogatta/7208821 <!DOCTYPE html> <html> <head> <script src="test.js"></script> </head> <body> </body> </html> var isFunction = function(object) { // only with 'typeof' return typeof object == 'function'; }; // run in one thread. piled up karma var result = ''; for ( var i=1; i<12; i++ ) { // the number varies. I'm not sure why. It might be the defference between 32bit a
とても簡単 「自分の開発環境用だし、既存の Configuration Management System の資産が無いのに使っても意味あるかな?」 とか思ってましたが、意味も何もとんでもなく簡単なので、「環境構築のコマンドをメモっておく」くらいなら Vagrantfile 書いたほうがいいんじゃないかって感じでした。その後 Chef やら Ansible に移していく、っていうスケールの道もありますし。 例えば Vagrant が配布してる裸の precise 64bit ボックスを使って、既に rbenv で動いている rails のルートディレクトリから独立した開発環境を立ち上げるには… # -*- mode: ruby -*- # vi: set ft=ruby : VAGRANTFILE_API_VERSION = "2" $apt_script = <<SCRIPT echo
こんなゆるふわでファウルな HTML があったとしまして <!DOCTYPE html> <html> <head> <meta charset=utf-8 /> </head> <body> <div id="firstunko"> <p id="unko">unko</p> </div> <div id="secondunko"> <p id="unko">unko</p> <p id="unko">unko</p> <p id="unko">unko</p> <p id="unko">unko</p> <p id="unko">unko</p> </div> </body> </html> これに対して、さらにゆるふわな以下のような JS を走らせますと console.log(document.querySelectorAll('#unko').length); // 6 cons
$ git clone -b [branch] --single-branch [remote-repository]でした。 古い文章だと $ mkdir test $ cd test $ git init $ git remote add [remote] [remote-repository] $ git fetch [remote] $ git co [branch]って書いてるのもあるけど、これだと remote tracking branch がリモートリポジトリにある全ブランチ分できてしまうのに対し、 --single-branch ではその時 -b で指定したブランチ分のみできる。 --single-branch で clone すると、それ以降の git fetch [remote] でも --single-branch した時のブランチだけが fetch されて来ます。
一昨日書いた、 IE10 で JavaScript から localStorage を使おうとすると「アクセスが拒否されました( Access is denied )」エラーで実行時エラーになる問題 - oogattaの勉強日記 に id:sakurai_youhei さんからコメントいただきました。ファイルの権限の問題なら、 ProcessMonitor でファイル I/O の様子を見てみると良いと。なるほど!! 帰ってきて、壊れてる方のアカウントにログインして、早速見てみました。判明しました。 C:\Users\oogatta\AppData\LocalLow\Microsoft\Internet Explorer\DOMStoreに書き込めてない。 oogatta はユーザ名です。 そもそも、これまでずっと AppData\Local を見ていました。 LocalLow ってなんだ…
動作サンプル消しちゃったの直しました。 以下の内容は、『 mixi Engineers' JavaScript Advent Calendar 2012 』の12月19日分として投稿したものの転載です。内容に差異はありません。 bfcache について覚えて帰ってもらいます。 こんばんは。日々、一体お兄ちゃんだけど愛さえあれば関係ないのかどうなのか、そこのところについて確認作業を怠らないものです。 今日、偶然にもこれを閲覧してしまったみなさまには、近代ブラウザの誇る謎機能、 bfcache について覚えて帰っていただきます。どうぞよろしくお願いいたします。 bfcache (正式名称なのか、別名なのか定かではありませんが Back-Forwad Cache とも呼ばれます)をおもむろに Google さんに検索いただくと、権限のありそうな回答は Using Firefox 1.5 cach
ペアリング 昔 Ubuntu 10 くらいの頃に買って、 Bluetooth ペアリングがどうしてもできなくて泣き寝入りして会社の引き出しの奥にしまった Magic Trackpad ですが、 http://ubuntuforums.org/showthread.php?t=2080770 12.10でも依然としてできねえというスレが立ったりしてアレなんですが、しれっと「 blueman-manager を使えばできたよ」と書いてある。そこで入れてみました。 ペアリングできました。 「信頼できる機器としてマークする」ってやると、ログオフログインしても大丈夫。通知エリアに2つ Bluetooth のマークが出てるのがダサいけど、とりあえず仕方ない。動くだけで嬉しい。 デュアルモニタで上下と左右の比率がおかしい しかし、左右にデュアルモニタにしてる環境なので、左右にめっちゃ速くて、上下に遅いと
メモリが16Gもある会社のワークステーション。というわけで tmpfs で /tmp にマウントしちゃってるわけですけど、 Google Chrome のキャッシュディレクトリは $HOME/.cache/google-chrome だった。 これは freedesktop.org で決めているディレクトリルールのうち、 XDG_CACHE_HOME という環境変数のルールに従っていて、これがセットされていればそこ、無ければ $HOME/.cache/ を使うからね。という事らしい。 へぇーと思ったので、試しに /tmp 以下に設定してみる。とりあえず深く考えず ~/.profile に書いてみる。 失敗。 えー、と思ったので検索。 ~/.xprofile というのを作って書くともっと早い段階らしい。再起動。 export XDG_CACHE_HOME="/tmp/.${USER}/cac
目次 はじめに 定義 グローバルコード上の this 値 関数コード上の this 値 Reference 型 関数呼び出しと非 Reference 型 Reference 型と null の this 値 コンストラクタとして呼び出された関数での this 値 関数呼び出し時に手動で this を指定する 結論 参考文献 はじめに この章では、実行コンテキストに直接に関係するもうひとつのテーマについて考察します。議題は this キーワードです。 ご承知の通りこのトピックはとても難しく、時に異なる実行コンテキストにおける this 値の決定について議論の的になるポイントです。 多くのプログラマにとって、プログラム言語における this キーワードとは、オブジェクト指向プログラミングに密接に結びつき、コンストラクタによって新たに生成されるオブジェクトまさにそれ自体を参照するものとして考えら
JavaScript Advent Calendar 2011 (オレ標準コース)4日目の id:oogatta です。どうもどうも、いやどうも。 最近丁度 ES Wiki を眺めていて、面白いことになってるなあ。変態的なことになってるなあ。と楽しく見ていた OOP パラダイム周りのいくつかの手法(定義、継承、 mixin 、 trait )について、 ES.next または Harmony で議論されているものをご一緒に調べながらご紹介したいと思います。 ECMAScript3 さて、復習としてまずは ES3 での OOP パラダイムの実装についてですが、これはもう Dmitry 先生の ECMA-262-3 in detail. Chapter 7.1. OOP: The general theory. を読んでくださいというか、気持ちよく丸投げしたいところですが、翻訳すると言ってまだ
iOS5 で type="number" の input 要素に数字を入力した時の処理が仕様により即したものになったようで、単純に言うと、本当に「数字・実数」にのみ使うものになった。例えば!郵便番号には!使えない! 俺!仕事で!郵便番号に!使ってた!! 047 とか入力するとなんと 47 にされるし、 1408 とか入力すると 1,408 とコンマが入ったりする。コンマがサーバに飛ぶかどうか確認しないくらいカクッとなった。そりゃ郵便番号入力欄でコンマ入ったらダメだろ…。 びびって即座に直しました。でも iOS5 出てから結構経ってしまった…。 User agents must not allow the user to set the value to a non-empty string that is not a valid floating point number. って書いてある
久々のブランクスクリーン 症状としては、 VMware Workstation 8 をインストール済み Ubuntu 11.04 から 11.10 にアップグレード アップグレード処理完了後の初回の再起動は起動してくる(ただし、その際起動時に "waiting for network configuration" と出て、 "60 seconds longer" とか出て、 "without full network configuratioon" とか出て、起動にやたら時間がかかる)。 何かのアップデートが自動で当たり、もう一度再起動を要求される。 再起動する。 上記のネットワークに関するエラーがまた出る。 真っ黒な状態になる。終わる。 Ubuntu 側のディレクトリ構成の移行を、 VMware のファイル群が阻んでしまう結果らしい…。 対処法としては https://bugs.laun
HackerNews で取り上げられていた 9 Awesome SSH Tricks を見て知らないことだらけでびっくりしたので、会社の .ssh/config を初めていじってみる。というか、ファイル自体存在しなかった。 Host 会社のサーバ 会社のサーバ User 会社のサーバ用のユーザ Host * Compression yes CompressionLevel 7 Cipher blowfish ServerAliveInterval 600 ControlMaster auto ControlPath /tmp/ssh-%r@%h:%p最後の2行がキモ。 自分の場合、ターミナルで ssh しつつ Emacs が tramp しているので常にサーバに対して2本コネクションを張っているわけですが、これを設定したら後から繋ぎに行く方の接続が爆速に。 そのコネクションを使ってポートフ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く