冬休みの読書感想文

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) これもあったな。 な…

範囲選択内のリンクを開く

プログラムのリハビリ中。 一瞬、for文の書き方忘れて焦った。。 document.addEventListener('DOMContentLoaded', function() { document.body.addEventListener('mouseup', function() { var selection = window.getSelection(); if (selection.rangeCount …

諸君、私は奈々様が好きだ

諸君、私は奈々様が好きだ 諸君、私は奈々様が好きだ 諸君、私は奈々様が大好きだ POWER GATEが好きだ innocent starterが好きだ ETERNAL BLAZEが好きだ 残光のガイアが好きだ Silent Bibleが好きだ 新宿コマ劇場で さいたまスーパーアリーナで 日本武道館で…

Vimana使ってみた、、い

vim

Vim script manager「Vimana」が便利すぎる。 を見てインストールしてみました。 # git clone git://github.com/c9s/Vimana # cd Vimana # perl Makefile.PL # makeで、makeファイルねーよと言われてしまった。 id:mattn さんからのアドバイスで、incディレ…

Symfonyで環境の違いを考慮した設定方法

symfonyのインストールディレクトリが違う 三項演算子なりswich文なりで、パスを動的に書き換える。 ヒットする可能性が高い順に調べることで、比較回数を減らすよう考慮すべし。 web/index.php

hoge.cssをhoge.css?20100110にするタスク作った

なぜクエリー文字列を付加するのか せっかくCSSやJSを変更しても、ブラウザのキャッシュが残っていて変更が反映されない場合があります。そんなときによく使われるテクニックが、ファイル名の後ろにクエリー文字として更新時間を追加するというものです。こ…

imagesファルダ下にあるfavicon.icoを参照させる方法

apacheのエラーログ見たら、File does not exist favicon.icoの嵐で参ったよ。 早速favicon.icoを作成して設置しました。 faviconを設置 通常は、 <link rel="shortcut icon" href="/favicon.ico" /> こんな記述なんですけれど、今回はimagesフォルダ下のfavicon.icoを参照させたかったので 'shortcut icon',</link>…

トランプ配り

10分でコーディングに挑戦した。 無駄ばかりのプログラムで25分かかってしまった。 ちょっとマシなのを考えてみた。 Cards = { deal: function(numPlayers, deck) { var players = []; if (numPlayers > deck.length) { for (var i = 0; i < numPlayers; i…

フォームの値からURLルーティング用のURLを作成するjQueryプラグイン

元々は、symfonyのキャッシュがGET, POSTリクエストだと作成できないので、フォームの値をURLに埋め込もうとして作りました。 URLルーティングとは /user?name=TakiTake&age=24のようなURLを /user/name/TakiTake/age/24と表現すること。 使い方 genUrlを呼…

cronでデータをダンプして樹海行きを回避する方法

誤って、DROP DATABASEしちゃった!クエリーログも無い! ______ |←樹海| . ̄.|| ̄ オワタ┗(^o^ )┓三 || ┏┗ 三  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄とならないために、cronで定期的にデータをダンプする方法です。 crontabに処理を登録 $ crontab -eコマンドでc…

symfonyで動的にDBを切り替える方法

あるデータは、現在使っているのとは別のデータベースに入れたいなぁ。 という時に便利なハックです。 DBの設定追加 databases.ymlにdatabase1用の設定(doctrine)が既にあるとして、新たにdatabase2用の設定を追加します。 all: doctrine: class: sfDoctrine…

coLinuxに拡張パーティション追加

デフォルトの4GBでは足りなくなったので、追加した。 自分はFedora使っているのでFedoraという名前のフォルダや設定ファイルが出てきますが、適宜読み替えてください。 coLinux側 shutdown rebootだと追加したパーティション認識しなかったので、完全に落と…

symfonyでユーザ認証にLDAPを利用して失敗したら自分とこのDB見に行く

's0.foo.net', 'username' => 'CN=user1,DC=foo,DC=net', 'password' => 'pass1', 'bindRequiresDn' => true, 'accountDomainName' => 'foo.net', 'baseDn' => 'OU=Sales,DC=foo,DC=net' …

symfonyでユーザ認証にLDAPを利用する

前提条件 普段のユーザ認証には、sfDoctrineGuardPluginを利用している LDAPまわりは、Zend FrameworkのZend_Ldap利用する Zend Frameworkを用意する http://framework.zend.com/ 今回は、最新版(1.9.5)を使いました。 symfonyへZend Frameworkの場所を明…

文字コード指定して無いサイトは爆発しろ

例えUTF-8で記述されていても、 <meta http-equiv="Content-Type" content="text/html charset=utf-8"> この一行が無いだけで、文字化けの原因になる。 せっかく、テキストノード取ってきて色々やろうとしても文字コード指定が無いだけで文字が化ける。 下のコードはこのままじゃ化けます。<head>の下で文字コード指定すれば正常に表示</head></meta>…

ニコニコ動画のメニューに毎時ランキングへのリンク追加するグリモン

欲しかったので、ちょちょいと書きました。 嘘。文字化けでつまづいた。 モノは、ここ ソース // ==UserScript== // @name addHourly // @namespace http://d.hatena.ne.jp/TakiTake/ // @include http://www.nicovideo.jp/* // @require http://jqueryjs.go…

symfonyでCSS,JSを絶対パスで読み込ませる

view.ymlでstylesheetsを指定すると相対パスで読み込まれます。普段はこれで問題ないのですが、絶対パスで読み込ませたい場面に遭遇したのでメモしときます。 解決方法 view.ymlに記述するファイル名を絶対パスで記述する。 まんまですね。 パス取得 symfony…

みんなの就職活動日記でAutoPagerizeを有効に

2009/09/01 21:50くらいに追記 早くも添削されてた。(?:bbs|\?action=bbs) -> (?:\?action=)?bbs bbsが重複してるから、?action= があってもなくても良しにすればスッキリ。なるほど id:os0x さんに助言をいただいたので早速修正。string-length(@class)=0 -…

jQuery UIを使ってiframeをリサイズできるようにする

jQueryとjQuery UIがあれば大抵のことはできるのですが、意外なことにiframeのリサイズができなかったので、できるようにしてみました。 といっても、jQuery UIのResizableにiframe用の処理追加しただけです。 デモ iframeをdivで囲む Resizableは、リサイズ…

やったーCSSでスライムできたよ

css

CSSの角丸を使ってスライム作ってみました。 firefoxでご覧下さい。デモ こんな感じ 画像用意しなくていい! CSSなんで、JavaScriptで弄べる! なかなか面白いプロパティですなぁ。

PHPをソースからコンパイルしたらPEARでエラー吐いて涙目

php

どんぴしゃな答えがありました。 http://d.hatena.ne.jp/uzulla/20090626#p4 # pear search db Notice: Undefined variable: available in PEAR/Command/Remote.php on line 500 PHP Notice: Undefined variable: available in /usr/share/pear/PEAR/Command…

coLinuxのカーネルを2.6.22.18から2.6.25に上げた(完)

2009/07/16 coLinuxを20080820-Snapshotに変更したら、無事起動した。新しいSnapshotだと、driver versionが13で起動し無かったみたい Windows Windows XP SP3coLinux Linux colinux 2.6.22.18-co-0.8.0 #1 PREEMPT Wed May 20 20:52:39 UTC 2009 i686 i686 …