読者です 読者をやめる 読者になる 読者になる

Spark Streaming最初の一歩

はじめに Spark, SQL on Hadoop etc. Advent Calendar 2014 15日目です。 3日目の記事でもSpark Streamingは紹介されていましたが、私のほうではより初心者向けの基本的な内容を記述しておきたいと思います。 Spark Streamingとは リアルタイムログ検索エン…

AngularJSの素晴らしさを整理してみる

久々のブログになります。 3年ほどJavaScriptを利用した開発をしてきましたが、最初はなぜJavaScriptでMVCフレームワークが必要なのかいまいちわからず、いろいろ試行錯誤してきました。 今日はタイトルの通りAngularJSが素敵だなということを書きたいのです…

DBのインデックスメモ

それなりに件数の多いデータをRDBで扱うと問い合わせするカラムにはindexをつけると性能が大幅に向上します。そんなときバッチなどである特定のカラムにwhere句を設定するとき複合インデックスをつけると性能がさらによくなります。 付け方は以下のようなコ…

SilentCloseに対する対応について

概要 WebSocketを利用した場合、長時間接続していると知らない内に接続がきれていることがあります。 詳細はこのあたりが詳しいです。 僕の環境でもSilentCloseに多分なったので事象と対応をまとめておこうと思います。 SilentCloseがおこるとどうなるか Sil…

WebSocket備忘録

社内でWebSocketに関する勉強会をやってきました。今回WebSocket自身を調べ直したことでだいぶ自分の勉強になりました。 普段アプリケーションを書く上であまり気にならないですがプロトコルの中身を知っておくことは重要であまりその辺りを書いている人もい…

初めてのpull request

Githubを利用してpull requestを送ったら受け取ってもらえてとてもうれしかったです。 今後も続けていきたいのでなんでpull requestを送ったのか思いを残しておきます。 どんなpull requestを送ったのか。 em-websocket-clientで利用されているWebSocketのバ…

yeoman+AngularJS+testacularでEnd to endテストする

テスト実行の組み合わせ AngularJSを利用してます。 ドキュメントが豊富で覚えやすく、テストシナリオも実行できるというのがとても気に入っています。 また、開発ツールyeomanというツールも気にいっていて、便利に使っています。 今日はyeomanを利用してテ…

dstatのalias

web-socket-jsのFlash接続について

web-socket-jsとは WebSocketに対応していないブラウザに対してFlashを利用して擬似的に WebSocket接続を行うもの。 socket.ioなどのライブラリはWebSocketに対応していないとFlashやLong Cometに置き換えるがweb-socket-jsは一貫してWebSocketを貫き通す。…

ActiveSupportのHash拡張

active_support/core_ext/hash/ 以下をざっとみてみた。 slice.rb sliceは引数の要素を含むHashを返しslice!はオブジェクトごと書き換える。 extract!は引数のkeyを削除し、戻り値は削除したHash。 irb(main):001:0> require "active_support/core_ext/hash"…

ActiveSupportのRange拡張

active_support/core_ext/range/ 以下をざっとみてみた。 include_with_range.rb Range#include_with_range?(val)はvalがRangeじゃなかったら単純にincludeしてるかを 判断し、Rangeだった場合はレシーバの範囲内に収まっているかどうかを検証する。 irb(mai…

ActiveSupportのArray拡張

active_support/core_ext/array/ 以下をざっとみてみた。 prepend_and_append.rb appendに unshift -> prependにalias張る。 access.rb 要素にアクセスしやすいヘルパーみたいなもの。 Array#forty_two っていつ使うんだろ・・・ irb(main):012:0> require "…

MySQLの対応方法

[rails] uninitialized constant MysqlCompat::MysqlResの対処法 rails2.3.9とかでアプリを動かそうとすると上記のエラーが出てはまったのでメモ。 周りの人たちはだいたいmac 64bit化したことで起きてたようですが、 当方32bit redhat + ruby 1.8.7とかで発…

Notificationsの使い方

FirefoxでNotification を利用できるようになり、(Chromeはデフォルトで実装されてる)今後実装する機会も多くなりそうです。Google先生に聞いてみるとdesktopifyが有名ですが中身を見ると自分で実装した方が早い気がしてます。簡単に以下使い方をメモで残…

Thorで書いたタスクのテストをする方法

Thorでタスクを書くとそのメソッドが普通のRubyのようには呼べません。それでもやっぱりテストは書きたいのでThorのspecをいろいろ見てたらありました。 # encoding: utf-8 require "rubygems" require "thor" require "rspec" require "stringio" class Sam…

extendの使い方

今まではincludeは全てのインスタンスに対して機能を追加したいときに利用して、extendは特定のインスタンスのみに機能を追加したい場合に使うものと思っていたけどextendはクラスメソッドを追加したいときにも使える事がわかったので、メモしておく。 modul…

socket.ioのイベント一覧

昨日からnode.js+socket.ioでチャットアプリを作り出しました。簡単に作れて楽しいのだけどサーバ側のeventで"message"しか受け取れないのかしらと疑問に思ってどうせならついでにsocket.ioのドキュメントをちょっと見てみました。ドキュメントは4/14日時点…

はまったから書いておこう

なんかコードまで追った気がするので書いておこう。rails3ではmysqlと接続するときmysql2というライブラリを使うんだけどmysqlとrailsアプリのサーバが違う場合直IPで指定すると接続のときこける。おぼろげなんだけどコードおったら名前解決できないとだめだ…

jQuery Templateを使ってみた

ちまたで噂のjQuery template apiを使ってみました。Bookmark一覧のソートをサーバからHTMLで返していたのをjsonで返すようにしてjQuery Templateで置き換えるようにしています。実装例大分コードがすっきりしておすすめです!

240 Search, Sort, Paginate with AJAX

Search部分の実装 SortとかAjax周りの実装

235: omniauth part1

実装例omniauth簡単でいいです。 中身見ないとなんも理解できないけど。

250: Authentication from Scratch

試しに実装してみた。ユーザ作成部分 ログイン・ログアウト周り

kaminariでpaginationを実装してみた

結構簡単に実装できました(基本的なとこしか触ってないけど)

MapReduceの次世代について

The Next Generation of Apache Hadoop MapReduce( http://developer.yahoo.com/blogs/hadoop/posts/2011/02/mapreduce-nextgen/ ) の和訳です。自分めもなので結構適当です。 最初に 膨大なデータを利用する際は小さいクラスタを多数利用するよりも少ないけ…

[railscasts] New gem with bundler

概要 これからはbundlerあれば新しいgem作れるよっていうお話。 使い方 bundle gem #{gem_name} でひな形作れるらしい。

Gravatar

概要 RailsアプリからAvatarのイメージをどうやってとってくるかっていうお話。 使い方 helperで定義すればいい。Avatar使ってないから今いち興味わかなかった。

Beanstalkd and Stalker

概要 Railsアプリでバックグラウンドでjobを起動するライブラリ。 使い方 beanstalkdとbeanstalk-client(ruby gem)を用意する必要あり。 後で書く。

cmakeを初めて使った。

MySQL5.5をソースコードからインストールしようと思ったらAutotoolsからCMakeに変わってた。オプションはこのWikiを見るとよい。

rails3でcucumber-rails0.4.0.beta1を使うとちょっと大変だった

Rails(3.0.3)からcucumber-rails(0.4.0.beta1)を使うまでが慣れてなくて大変だったのでメモしておく。 railsプロジェクト作成 $ r new hoge -d mysql ※ r = rails Gemfile編集 group :test do gem 'rspec-rails', '~> 2.2.0' gem 'webrat', '~> 0.7.2' gem '…

[http://wiki.opscode.com/display/chef/Chef+Basics:title=Chef Basics]を訳しました

Chefを使うならどのような機能をもっているか把握するべきです。このページでは機能の概要を説明し、それらの詳細のリンクがついています。 Modeling Your Infrastructure Nodes nodeはChef-clientを実行するhostです。Chefからみたnodeの主な役割は変数と実…

Anatomy of a Chef Runの訳

Anatomy of a Chef Runを訳しています。 Anatomy of a Chef Run Chefを動かすならChef-clientの実行の仕組みは覚えておいた方がいいですよ。 Convergence Chef-clientやChef-soloでプロセスを呼んだときは"Convergence"リソースを呼ぶ必要があります。Conver…

Architectureの訳

Architectureを訳してみます。 Server Architecture Chef-serverは以下の機能から成り立っています。 Chef server WebUI, node, clientからHTTP API リクエストを受け付ける Chef server web ui WebベースのChef-server管理ツール。 CouchDB Chef serverのデ…

Chef-clientの訳

Chef-clientを訳してみます。 Chef Client Chef-clientはChefができることを大体どこでも実行できます。Chef-clientは署名付きリクエストをREST形式でChef-serverに送り、COOKBOOKをコンパイルして実行します。 Clients do work for one or many Nodes Chef-…

Rspec 2.2を触っての変化

ちょっとだけ触った。覚えているうちに書いておく。 コマンドがspec->rspecに rspecたたいときにカレントディレクトリ以下のlibとspecがLOAD_PATHに自動で加わる テスト対象ファイルを呼び出すのが簡単 なぜかwikiのとおりautotestが走らない(PROJECT_ROOTの…

Net::SCPはあまり利用しないようにしよう

便利でよく使っているのですが極力使わないようにしようと思います。 30Mを超えたあたりからうまいことSCPのsessionが切れなくなる compression, rekey_packet_limit, rekey_blocks_limitを設定してもだめ Net::FTPだとうまくいくんですよねぇ。

APIの認証について

pemっていうファイルで認証しているのはなんとなくわかる。このなんとなくを解消したいと思う。本エントリはWikiの誤訳だと思ってほしいです。 API Clients nodeデータはChef serverからの認証リクエストによって別々に管理されており、それはすなわちAPI Cl…

ファイルのコピーを試してみました

Chefでcookbook内でファイルをコピーしてみました。サーバ上のファイルをコピーするときと利用するリソースが違うのでまとめておきます。 サーバ上のファイルをコピーする場合 以下のような設定でできる気がします。 file "/tmp/pochi.txt" do content IO.re…

Passenger利用の際にApacheの設定ファイルに追加するもの

PassengerRuby Rubyのパス ex) /usr/bin/ruby PassengerRoot Passengerのパス ex) /Library/Ruby/Gems/1.8/gems/passenger-2.2.15/ PassengerMaxPoolSize Railsの最大インスタンス数 ex) 10 PassengerPoolIdleTime passengerによって生成されたインスタンス…

templateリソースを試しました

前回の続きをやります。まずはchef-client呼び出して"hello, chef!"ですかね。 Hello, chef 表示専用cookbookを作ります。 $ knife cookbook create MESSAGE作成されたMESSAGEのディレクトリにいき、${MESSAGE_DIR}/recipes/default.rbを以下のように記述し…

webuiのパスワード忘れてしまったとき

忘れたときにした対応をメモ。 コードをいじる ${chef-server-webui}/app/controllers/user.rbっていうとこに以下のメソッドがある。 def login_exec begin @user = Chef::WebUIUser.load(params[:name]) raise(Unauthorized, "Wrong username or password."…

Triggerを利用するときに気をつける事

Triggerって? MySQLでテーブルに処理をしたとき、データの追加・更新・削除が行われる前後に行う処理を設定するもの。多分MySQL5.0以降で利用できる。 気をつける事 すごい便利な機能なんですが、トランザクションが明示的に指定できない。これ結構痛いです…

追加機能を既存Apacheに追加する場合

たまにApache触りますが忘れちゃうのでメモしておきます 前提 ${APACHE_DIR}/bin/httpd -l で mod_so.c があること ${APACHE_DIR}/bin/httpd -M でso_module(static)ってなっていること 組み込み方 以下のようなコマンドで組み込みます。 $ ${APACHE_DIR}/bi…

infoScoop opensource 2.2.0RC1をインストールしてみる

本家のサイトに書いていますが備忘録的に残しておきます。 環境 OS: Redhat MySQL: 5.1.34 GlassFish: 2.1系 前提 環境が一通りインストールできていること 本家サイトよりダウンロードしていること DB作成 今回はiscoopっていう名前で作成します。 $ mysql …

Apacheをchef経由でインストールできるようにする

運用管理ツール?「Chef」をいろいろ使ってみますの続きです。Apacheをchef経由でインストールできるとこまでがんばりたいです。 復習 前回やったとこは、以下のことです。 Chef-Clientをインストール Chef-Serverをインストール Chef-Serverを動かしてChef-S…

ActiveRecord::Relation Walkthrough

Railscastみたら覚えた事をすぐにブログに出すようにしてます。今回はActiveRecord::Relationの動きを追ってます。すごい勉強になった気がします。 ActiveRecord::Relation Rails3.0ではArel利用してQueryを遅延的に評価するようになっています。whereやjoin…

運用管理ツール?「Chef」をいろいろ使ってみます

Puppetとよく比較されるChefですが個人的にはPuppetの書き方がどうしてもなじめなかったのでChefをインストールしてみました。ChefのWikiでインストール方法に書いてあるのでそこまではスキップします。(couchDBとかapache-solrとかRabbitMQとかMerbとか結…

初めてProxy経由でリクエスト送ったから記念にプログラム書いておこう

livedoorさんが提供しているお天気APIをプロキシ経由で利用してみた。 require 'net/http' uri = URI.parse('http://weather.livedoor.com/forecast/webservice/rest/v1') proxy = Net::HTTP::Proxy('xxx.xxx.xxx.xxx', '8080') req = proxy.new(uri.host) r…

Passengerのインストール時にrakeがないといわれたときの対応

Passengerを入れようとして、passenger-install-apache2-moduleをたたくとrakeがないっておこられた。gem listするとあるのになんでかなぁと思っていたのだけどなんかgemの設定値と実際にはいっているとこが違うのが原因みたい。Passenger自体はgem envで出…

Sortable table columns

概要 Viewでtable表示するときにRails3.0でどうやって項目ごとにsortするかというおはなし。 やり方 Controller側でorderっていうのを使ってView側に渡す。 View側ではlink_toメソッドで:sort=>:nameみたいな感じでつける。 directionは同じカラム名でアクセ…

dynamic attr_accessible

概要 attr_accessorをアクセスされるもの全てに設定しておくと、 セキュリティ的に問題があるかもしれないので必要なときだけ Modelでアクセスを制御したいよねというものだと理解した。 やり方 Modelではattr_accessibleに設定せず、 mass_assignment_autho…