ISUCON7の予選で敗退した

Blogにまとめるまでが、ISUCON と、言うことで久しぶりにこっちに書く。 前から興味はあったけれど、参加者のブログを見る程度だった。 そんな時に、会社の同期に誘ってもらったので、ホイホイ受けてみた。 事前準備 過去問がVagrantで公開されているので、…

冬休みの読書感想文

WEB+DB PRESS vol.90 WEB+DB PRESS Vol.90作者: 江口和宏,吉田太一郎,内田優一,青山公士,石本光司,まつもとゆきひろ,おにたま,田籠聡,竹内郁雄,南川毅文,伊藤直也,佐藤太一,?橋侑久,Magnolia.K,佐藤歩,泉水翔吾,西尾泰和,中島聡,はまちや2,竹原,宮崎亮輔,安…

ElixirとRabbitMQでJenkinsっぽいサービスつくる その1

Elixirで何か作ってみたい ということで、いろいろ考えた結果、俺の考えた最強のYet Another Jenkinsをつくってみようとおもいます。 Queueの管理はRabbitMQに任せる予定なので、いわゆるPub/Sub Applicationになる予定。 ブログなので、進捗等を雑にまとめ…

pre-commitへPull Request送ったときの調査方法

pre-commitって何?という人は、こちらを先に見てください git用のpre-commit gemが便利すぎる - TakiTakeの日記takitake.hatenablog.com もしや、バグ? ignoreできないファイルがある 普段から、pre-commitを愛用していますが、中にはチェックして欲しくな…

Scottyで簡易サーバ作成

つくったもの ScottyでWeb API呼び出しを束ねる(予定)のServerを作成しました。Yesodは、俺にはまだ早かった。 構成 Web Browser -> Web Server (Scotty) -> API Server (Sinatra) SinatraでAPI Server作成 Rubyの方が慣れているので、API Server側はRuby…

Rubyが辛くなってきた俺はHaskellに浮気する

はじめに 社内で、Web API呼び出しを束ねるWeb API作成ブームだから、Haskellでブームに乗ってみようかなと。Ruby好きなんだけれど、人数が増えてくるとコードのフォーマットがバラバラになるのが辛くて、型チェックが羨ましくなったのが選択理由。 関数プロ…

Rubyの子クラスで定数を再定義したのに親の定数が参照されちゃう

ちゃう class Parent CONST = 'parent' def initialize p CONST end end class Child1 < Parent CONST = 'child' end Child1.new # "parent" "child"を期待してたら、"parent"が返ってきた!? 定数の場合、今のスコープになかったら、外のスコープから探索…

git用のpre-commit gemが便利すぎる

まずは $ gem install pre-commit # In your git repo $ pre-commit install これだけで、うっかり残念なコミットをする事故が防げます。 Git フック使ってますか? http://git-scm.com/book/ja/Git-%E3%81%AE%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4…

新人への洗礼

新人の子が離席時にPCロックを忘れている! チャンスですね ls ど定番 alias ls=sl echo 牛さんのAAに癒されます alias echo=cowsay _______ < hello > ------- \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || || xcowsayは、最近知りました。 より癒されま…

32bit Win7上でVagrant使って開発環境構築 box構築編

今日こそは boxの構築をするぞ!ってことで 最終目標は、Ubuntu-13.04 desktop上に開発環境整える2013/08/16 18:40 apt.shを修正 本日の流れ veeweeのtemplateから作成したいVMのtemplate選ぶ→definition作成 definitionを微修正 definitionを基にubuntuをイ…

32bit Win7上でVagrant使って開発環境構築 準備編

動機 備えあれば憂いなしでございます。 準備 Install Ruby http://rubyinstaller.org/ Install pik https://github.com/vertiginous/ Install Development Kit http://rubyinstaller.org/downloads/ Install veewee https://github.com/jedi4ever/veewee In…

RubyでDSL作ってみる

肝となる処理 instance_eval が便利。ブロック渡し以外にも、文字列を渡してインスタンス内のコンテキストで実行可能。 てことで DSL用のメソッドAを用意 DSLで書かれたファイルを読み込む メソッドAと同じインスタンスで、ファイルの内容をinstance_eval -_…

imagemagickをインストール

公式のFAQや、似たような記事は多数あるのですが、それでも嵌ったのでメモ残しときます。 事前準備 Install XQuartz 結果を出力するときに、ウィンドウ(X11)に出す場合は、先にXQuartzをインストールしておく必要があります。 display: delegate library sup…

バイナリ形式にするだけでメモリ節約プログラミング

比較条件に関係しない値なら、バイナリにする価値あり 小さい数値を多く扱う場合は、バイナリ(可変長表現)にすると結構小さくできます。 データ量が小さくなれば、DBからの取得速度が向上し、アプリのメモリ上にもより多くのデータを保持できるようになりま…

heroku上にsinatraで作ったアプリ上げるときのハマりどころ

herokuもsinatraも初心者な自分がハマった所と、対処法書いときます。基本は、ユーザ登録をして https://devcenter.heroku.com/articles/ruby の通りに進めていけば良いのですが HTMLのテンプレート使いたい 風の噂で、hamlがサクサク書けて良いと聞いたので…

社内の開発環境とローカルの開発環境の連携方法

どんな時に便利か? 全てのサービスをローカル環境として構築できれば良いのですが それがあまり現実的ではなく、基本は外部のアプリを利用して 一部アプリだけローカルのアプリを利用したいとい時に便利です。 ローカル環境構成図 PAC(Proxy Access-Control…

魔術でデプロイ

1文字に飽きたら、詠唱でも 準備 # ホームディレクトリへ移動 function I(){ cd ~/ } # バックアップ function Steel(){ cp /usr/local/tomcat/webapps/UBW.war ./UBW.war } # リリースファイルをSTGサーバから取得 function Unknown(){ scp stg:UBW.war ~/U…

1文字シリーズ

毎日、毎日タイプするコマンドならば、タイプ数を減らすに限るよね。 抜けてるところには、何を入れよう? 1文字alias alias a="sudo aptitude" alias b="" alias c="cat" alias d="diff" alias e="echo" alias f="find . -type f -name" alias g="grep" ali…

node.jsでsocket通信

みんな大好きエコーサーバ Install websocket server module % npm install websocket-server Server side httpとwsプロトコルで、返す値を変えられる。 サーバの監視用にする、クライアント側のコードを返すなどの利用方法が考えられる。 var http = requir…

カスタムfindコマンド

alias f="find" でも、そこそこ便利だけれど .gitディレクトリを、検索対象外にしたいときに f . -name .git -prune -print となり、長いし忘れやすいので #!/bin/bash case $# in 1) path='.' name=$1 ;; 2) path=$1 name=$2 ;; esac #echo "find \"$path\"…

node.jsを使ってWebページからテキストを取得

jsdomモジュール使うと、http周りの記述しなくて良いから楽だね。 レスポンスヘッダもしくは、メタ要素で指定された文字コード見てUTF-8に変換すれば もうちょっとましになりそう。 ソース // getText.js var jsdom = require('jsdom'); function removeElem…

JSON形式の設定ファイルに対する変更をリアルタイムに反映する方法

JSON形式の設定ファイルに変更があったら動的に変更を読み込みたいな ということで、 var fs = require('fs'); var conf = null; var filepath = '/path/to/file'; // 設定ファイルを再読み込みする関数 // 第二引数で、同期か非同期かを選べる function rel…

annotatable-http-proxyを作ろうと思う

大学の頃 任意のサイト(主に授業の教材)のHTMLコンテンツに対してメモを書けるようにし それをユーザ間で共有することで、学習支援しようという研究してた。 実装方法 WebサーバにGET/POSTリクエストでメモを書き込みたいサイトのURLを送る WebサーバがURL…

node.jsでproxyサーバ

node.jsのインストール https://github.com/ry/node/wiki/Installation 0.5.0-preになってる! % node -v v0.5.0-pre httpサーバを立てる リクエストは、GETの当て決め サーバから受け取ったレスポンスをそのままブラウザに返す。 var sys = require('sys'),…

XMLの差分取得2

textNodeの中身消去して、XMLの構造だけを比較するバージョン #!/usr/bin/perl use strict; use warnings; use utf8; use LWP::UserAgent; use XML::Simple; use XML::DOM::XPath; use Text::Diff; binmode(STDOUT, ':utf8'); my $content1 = get('http://se…

XMLの差分取得

今日は、Windows XP環境で実施。 cpanが使えるということで、"Strawberry Perl"をインストールしてみた。 http://strawberryperl.com/ んで、はてなのサーチAPI叩いてみたよ。 #!C:\strawberry\perl\bin use strict; use warnings; use utf8; use LWP::UserA…

APIからXMLデータ取得してそのまま標準出力

perlとも友好関係を結ぼうと試し中 #!/usr/bin/perl use strict; use warnings; use LWP::UserAgent; use XML::Simple; my $ua = LWP::UserAgent->new; my $r = $ua->get('http://search.hatena.ne.jp/keyword?word=ABC&mode=rss&ie=utf8&page=1'); binmode(…

iMac上に開発環境整える

逐次付け足していく予定 サマリー 参考書籍 Install Java Install Eclipse Add Eclipse Plugin Google Web Toolkit Cypal Studio Install Tomcat Install PostgreSQL 参考書籍 Windows用だし、情報古いんで、あくまで参考程度 Struts2 フルスタック化&Webア…

インストールメモ

Vim できれば、新しいのが良い。 Mercurialから落とすか Mercurialインストール # yum install gcc python python-devel python-setuptools # easy_install mercurial ncurses-devel必要なんで入れとく # yum install ncurses-devel いよいよVim落としてきて…

JavaScriptでN進数変換しようとしたら、不思議な振る舞いに出会った

追記 [0-9]\.[0-9]*だと、少数点として扱われて [0-9]\s+\.だと、ドット演算子として扱われるからか SyntaxErrorのところは、数字もしくは空白文字が来るべき箇所に、その他の文字が来たからエラー吐いてるのね。 あと 7['toString'](2) これもあったな。 な…