lxyuma BLOG

開発関係のメモ

centos7でunix domain socketが読めない

最近、goji(golang web framework)触り始めていて、 centos7のnginxからunix domain socket経由で、 gojiに繋ごうとしても繋がらなかった。 原因はすごい下らない単純な理由だったが、メモ。 ※ちなみに、よくあるsocketファイルのuser/権限の話ではない。sys…

varcharとtextの違い(mysql innodb)

mysqlの可変長文字列を扱う、varchar型とtext型の違いの話。 古い情報が混在していたので、ちょっと整理してメモ。 myisamの頃の話 sizeが違う 行の中身がdataか(varchar)、dataへのポインタか(text) 参照挟むので、performanceの違いがあった(varcharが早い…

androidのcanvasのCORSが動かない

経緯 canvasを画像に変換したかった。(toDataURL) しかし、canvas内の画像をCDN経由にすると、 後述のとおり、ブラウザのsecrity policyにひっかかり画像に変換できない。 そこで、Cross Origin Resource Sharing(CORS)を使って、これを回避したかった。 こ…

createjs,canvasでハマるところ2014

経緯 先日、初めてcreatejs使ったスマホ向けwebアプリ作ってリリースした。 まあ、予想通り、createjs、canvasにいろいろハマった。 はまったところは、gistにメモしておいたので、ここにも整理して乗っけておく。 なお、類似blog記事多数あり、俺もほとんど…

isucon4予選やってきた

isucon isucon4予選やった。 言語は、せっかくの機会なので勉強して、Goで。 初めのscoreは1223点で、 最終的に、26631点まで伸ばして、2日目の17位で終わった。 つまり、予選通過ならず、敗退してしまった。 ここまでやった事でlog等から思い出せるだけを記…

Server-Sent Eventsまとめ。ハイパフォーマンスブラウザネットワーキング16章

まだ、社内でO'Reillyのハイパフォーマンスブラウザネットワーキングの読書会をやっていて、 自分が、16章のserver sent eventsやるので、その下書き。(前の資料もいつかblogにupする) ※ちなみに、書いてる事を単にまとめてるわけではないので、ご注意を。…

digital oceanにspdy付きのnginx構築する

経緯 spdyをちょっと試してみたい。 digital ocean使って、spdy付きのnginx構築してみた。 これは、そのメモ。 前提 digital ocean CentOS 6.5 x64 を選んだ nginxインストール yum install wget gcc pcre-devel gd-devel perl cd /usr/local/src/ wget http…

androidでHTML5 audio使ったHLS形式のストリーミング再生が上手くいかない

スマホのブラウザ上で、音声のstreaming配信がしたい。 そこでhtml5 audioでHLS形式のURL(*.m3u8)指定して再生した時に 動かないandroid端末が一部あった。その対応した話。 結論は、単に、audio.type指定すれば良かったというだけの話だけど、 せっかくなの…

Marionetteからractiveへ

昨日、天下一クライアントサイドJS MV*フレームワーク武道会で話してきた。 以下、そのスライドです。 今日は 自分が現場で使ってきた FWの変遷の軽ーい話をする 元々 Marionette.js使ってた 振り返ると、実装が冗長になってしまった 何を言ってるか?という…

IT勉強会の会場探し

もう、長い事、jsCafeというjavascriptの勉強会をやっていて、 最近、お世話になってた会場がオフィスになってしまったので、 改めて、会場を探した。 IT勉強会の会場探しは、結構、面倒くさいし、大変。 他に会場探してる方の役に立つかもしれないので、そ…

coffeescriptの使いどころ

最近、普通の現場で、coffeescriptの使いどころが分かってきた。 今日は、そのメモと、最後に設定(また、gulpとkarmaの話)を軽く書いておく。 railsとcoffee 自分は、ずっと、rails環境にいたので、coffeescriptで書いてた。 通常のコードも、テストコードも…

最近のjsテスト/ビルド環境

最近のテスト環境 最近、ブログ書かないうちに、また、 自分のjs周りのテストやビルド環境が変わってきた。 具体的には、karmaとかgulpとかに変わった。 今日は、 その環境にしてどうだったか?とか、 設定ファイル(gulpfile)とか書いてみる。 去年と今年と …

1章レイテンシと帯域幅:ハイパフォーマンスブラウザネットワーキング

今、社内でO'Reillyの 「ハイパフォーマンスブラウザネットワーキング」 ハイパフォーマンス ブラウザネットワーキング ―ネットワークアプリケーションのためのパフォーマンス最適化作者: Ilya Grigorik,和田祐一郎/株式会社プログラミングシステム社出版社/…

gulp vs Grunt

概要 gulpの入門記事を以下に書いて行きます。 目次 gulpとは gulp sample gulp支える技術(Streamと並行性) grunt vs gulp どっち使う? gulp.jsとは いわゆるフロントエンド周りの task runner build tool Gruntあるでしょ その通り いわば、Gruntの簡易版 …

Ractive.js入門

これは、jsCafe18で話したSlideです。 概要 これから、「Ractive.js」という js上でReactiveなUIを とてもsimpleにbuildするためのlibraryの話をします 目次 reactive programming ractive.js 他のframeworkとの比較 Backboneに入れてみる そもそもReactive …

Backbone.jsとMarionette.jsで発表してきた

BackboneとMarionetteの発表してきた。 実践Backbone.Marionette 現場の悩みと解決まで from Ryuma Tsukano 結構現実的な内容で、色々個人的に試行錯誤している所を含んでおり、多分賛否ありそう。 まあ、こういうドロドロした話もたまには有っても良いかと…

linuxカーネルのセマフォについて

アルゴリズムとデータ構造についてOSSから勉強する会 という勉強会に行ってきた。 これは、とある掲示板の書き込みにOSSで使われてるアルゴリズムが書かれている物があって、 これを元に、皆で読み解いて行こうという企画。 カーネル読むという意味でも、ア…

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…

ruby on railsでA/Btestその2:split使う

(追記:slideshareにsplitまとめたので、良ければどうぞ。 http://www.slideshare.net/ryumatsukano/rails-ab-testing-by-split-gem ) splitというgemを使って ruby on rails3(3.1〜)で A/B testするまで。 ※ちょっとお酒が入っているので、 読み辛かった…

railsのmodelで***_path(resourceのURL)を使う方法

ruby on rails 3.1のmodel内から、例えば、post_path(id)のような、 viewでリンク先としてresourceのURLを指定するのと同じ方法で呼び出す方法。 対応 Rails.application.routes.url_helpers.posts_path と、書く。 参考 http://stackoverflow.com/questions…

ruby on railsでA/Btestする。その1。

railsでA/Btestするまでの話。 A/Btest 複数パターンの画像等を準備して、 利用者の反応を探るアプローチ。 静的なWebデザインだと、 多分、optimizelyか、googleか、使ってる? A/B test出来るWebサービスは沢山あるので、ググると良いかと。 動的ページで…