lxyuma BLOG

開発関係のメモ

2013-01-01から1年間の記事一覧

Backbone.jsのテストの悩みとその解決

経緯 Backbone.jsでTDD書く時に、 Model/CollectionはServerSideのようなイメージで書けるのだが、 Viewのテストがfrontend特有の事があり、結構、悩ましい。 ここでは、Backbone.Viewを中心に、 テストで悩ましい所をどう解決していくか、試行錯誤している…

jsでTDD!MochaとChaiとsinon.js入門

※この記事は社内勉強会向けの資料の下書きです。書きなぐりの下書きで見直すと最後の方の文書がヤバいので、いつか書き直します。読み辛い所は申し訳ないです。 概要 TDD テスト自動化とTDDを整理 TDDとBDDの違い Test Framework in javascript QUnit/jasmin…

Rest経由のparseを使うBackbone.Viewを自作する

parse.comはiOS/android/Backbone.js等の各clientが準備されているが、 Restの口も準備されているので、実質、どの言語からも叩く事が出来る。 公式pageの内容をまとめて試してみて、 最後にBackboneのViewに組み込んでPluginにしてみた。 そこまでのメモ メ…

ImageMagickでjpegの縦横(exifのOrientation)情報を元に画像を回転する

やりたい事 元々、iphoneのsafariで、写真uploadできる機能を作りたかった。 ※ちなみに、iOS6からsafariでも画像up可 upする時に、jpegに入ってる重力の方向を元に自動で画像を回転して保存したい。 概要 この記事では以下の話を書いて行く。 jpegのexif情報…

Marionette.jsのCompositeViewって、どこで使えばいいの?問題

ビール飲みながらダラダラ書いてるので、おかしな所は申し訳ない。 CompositeView marionette.jsには、CompositeViewというクラスがある。 CollectionViewを継承していて、 再起的な構造を持ったviewを作れる 親側もtemplateを持つ事が出来る というのが、特…

ie8で画面が真っ白になった

ie

ie8で真っ白画面 とある機能を追加改修してie8で確認したら、 ブラウザの画面が真っ白になった。 特に、エラー等も出力されなかったので、 何が起こったかさっぱり分からなかった 条件 幾つか、付けたり外したりしていくうちに、以下の条件で起きているっぽ…

grunt bower yeoman入門記事

※これは、社内の勉強会の資料の下書きです。 ここ数年で、js環境が整理されてきた。 js開発するなら、これらの知識は必須。無いとめっちゃ不便。 という事で、今日は、gruntとbowerとyeomanの話。 各ツール概説 Yeoman applicationのひな形を作る アプリ構築…

Backbone.View入門

(この資料は、社内のBackbone入門の勉強会の為に作った物の下書きです。) これから、Backbone.Viewについての入門記事を書きます。 内容としては、Backboneを初めて学ぶ人の為の噛み砕いた入門記事にするつもりです。 Backbone.Viewの使い方 基本的な使い…

普通のrailsアプリのBackboneにMarionette付けて思った事

以前書いた記事の反省を元にMarionetteに移行した。 思った以上に快適! 大規模になったらMarionette.js使えとか書いているのは嘘で、普通にBackbone使うときは、初めから使うべき。 Backboneで一番恐ろしいのは、各現場/各開発者毎に異なるオレオレ実装。オ…

Backboneでデータバインディング(stickit)

最近、angularが熱くて、twitter見てると、angular周りが活発に流れて来るのだが、 angularのウリにしてるデータバインディング、Backboneでも同じ様な事がpluginで出来る。 Backbone自体は、非常にミニマルに出来ているので、(おそらく今後も本体にこういう…

和訳:BackboneとAngularを比較する

この記事は、Victor Savkin氏の「Contrasting Backbone and Angular」を翻訳したものです。 ※本人から翻訳の許可も頂きました。 オリジナル http://engineering.nulogy.com/posts/angular-and-backbone/ 和訳自体は自信なく、細かな所は意訳しているので正確…

Marionette.js(Backbone.js)のチュートリアル with yeoman その3(Marionette.View実装編)

チュートリアルの続き。 さんざん伸ばした挙げ句、ようやくここからが、本番。 MarionetteのViewを使う。 これから作るもの 前回、新規作成formを作ったので、 新規作成したtodoを表示するViewを作る。 liタグで、一つずつのTaskを表示する ulタグで、それら…

普通のrailsアプリにbackbone適用して思った事その2

X)誰かと一緒に作業するには、やっぱり、template必要 X)逆引きは公式pageでなくて、生ソース追跡 X)生産性は短期的には高まらない。むしろ改悪する。 X)

普通のrailsアプリにbackbone適用して思った事

普通のrailsのwebアプリにbackboneを埋め込んでみて思った事等を書く。 1)Backboneを使うべきか否か? 初めに考える事。 大規模になったら使えとか、Single Page Applicationなら使えとか、色々意見あると思うが、 今時の普通のwebアプリならjsガリガリ動…

parse.comで始めるbackbone.js入門のslideをUPした

今年5月頃jsCafeで実施したBackbone.jsの入門slideをslideshareにUPした。 よくある、todoを作っていく内容なのだが、Parse.comというクラウドサービスを使う所が特徴。 これからBackboneの勉強始める方等、良ければ、どうぞ。 introduction to Backbone.js …

Marionette.js(Backbone.js)のチュートリアル with yeoman その2(Modelと基本View側実装編)

marionette.jsのチュートリアルの続き。 ここからが、メインである、marionette.jsの話。 前回に引き続き、gruntを起動している状態で進める事。 もし、起動していなければ、gruntを起動する。 model ここから、クライアント側のプログラムを書いて行く。 初…

GooglePlaceApiを使ってみるメモ。

以下、GooglePlaceApi使ってみたメモ。 GooglePlaceApiとは Googleが提供する位置情報のAPI。 GoogleMapでもできるじゃんと思うかもしれないが、 GoogleMapの検索でひっかかる場所は殆ど地名。 細かな店舗/有名スポット等々はGoogleMapではひっかからない。 …

casperjsのtestが通らない。

今、casperjsを公式docの通り、testすると、うまく動かない。 FAIL TypeError: 'undefined' is not a function (evaluating 'casper.test.begin') # type: uncaughtError # error: "TypeError: 'undefined' is not a function (evaluating 'casper.test.begi…

Marionette.js(Backbone.js)のチュートリアル with yeoman その1(準備からサーバー側実装まで)

Marionette.jsのチュートリアルを書く。 特に、yeoman製のgenerator-marionetteを使って、 railsみたいに、楽しながら、進めていく。 量が多くなったので、何度かに分けて書く。 この記事は、yeomanによる準備から、node+expressによるサーバー側まで。(bauc…

Bandit algorithmsのまとめ

最近、A/B testingの文脈で出て来るBandit algorithmsのまとめ。 Bandit Algorithms Bandit Algorithmsは、 ①機械学習の中の ②強化学習の中の ③n腕バンディット問題に対する④Algorithm。 ①機械学習 人間の学習行為を自動化して実現する方法の事。 ②強化学習 …

jscafe(javascript勉強会)の資料をslideshareにupした

ずっと、やろうと思っていながら、やってなくて、 せっかくの連休なので、この気になっていた事をやった! 何をやったかと言うと、javascriptの勉強会の資料をUPした! Marionette.js Backboneのライブラリー。 まだ、日本語の情報が少ないので、色々手助け…

yeomanでbackbone+express+mongoDBのfullstackな環境を一発で構築する話

node.jsで環境作ろうと思って、yeomanを入れるも、 サーバーサイドからクライアントサイドまでfullstackで準備されたものが無い。 generator-backboneはclientだけ generator-expressはbackendだけ これじゃ、困る。 自分で作らないといけなくて面倒くさい。…

railsのsessionのあれこれからMongoDBのTTL collectionまで

session storage railsのセッションはいつもどこに入れるか迷っていた。 それが、MongoDBのTTL collectionでどうにか解決されそうなので、そこまでのメモ。 1)クッキー railsのセッションは、デフォルトで クッキーにbase64エンコードされて全部入ってる。 …

mongoDBでReplica Setを使ってるときのversion upgrade

概要 ReplicaSetを組んだmongodbのversionを新しいものにupgradeするやり方のまとめ。 point secondary(arbiter) -> primaryの順で、一台ずつ落としてbinを差し替えていく secondaryを落としている時、primaryが動いているので、特にアプリに影響は無い prim…

IE8でlocation.hrefが取得できない

ie

事象 IE8のjavascriptでlocation.hrefが取得できない事があった。 何度かやってみると、玉に取れたり、取れなかったり。 ※versionは、Internet Explorer 8.0.7601.17514 原因 どうやら、IE8は画面上の要素(画像とか)のロードが終わった後に、 location.href…

polymerの話(GoogleのWeb component使ったjavascriptのlibrary)

polymer.js Google IO 2013で発表されたweb componentを使ったjavascriptのライブラリ Video Web Components in Action 概要 Web componentに対応/非対応に関わらず利用できるようにしたjsのライブラリ。 この考え方をPolyfill(ポリフィル)と呼ぶそうです…

python製aws command line interfaceを使う

AWS

AWS command line interface (python) をmacで使うまで。 これなに? http://aws.amazon.com/jp/cli/ よくでてくるbash製のclientより使い易い。 出力もjsonで整理されてて綺麗。 準備 AWSの画面からSecurity Credentialsを探して Access Key ID Secret Acce…

ie8でoverflow:scrollでerror

ie

IE8で、AJAX処理してポップアップを出す処理を動かしたら、 ウィンドウズ側からのポップアップでエラーが出てきて、 強制的にIEを終了させられてしまった。 詳細を見てみるとこんな感じ。 問題の署名: 問題イベント名: APPCRASH アプリケーション名: iexplor…

jQueryでのuseCaptureの扱い(addEventListenerの引数)

今、javascriptの勉強会用の資料を書いているのだが。 target.addEventListener(type, listener [, useCapture]); のuseCaptureについて、 jQuery内でどう使われているか調べてみたら、 面白かったので、そのまとめ。 useCaptureとは? addEventListenerを書…

jenkins+github+rails環境構築その1:jenkins構築

Jenkins + github + rails 環境 centos 6.2 rails 3.1 jenkins 1.510 githubのpushをトリガーにして、railsのtestを実行させるまで。 jenkins installから起動まで jenkins install 公式page通りinstall https://wiki.jenkins-ci.org/display/JENKINS/Instal…