サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Pixel 9
babie.hatenablog.com
Cycle.jsは長期ケイゾク案件箱に入ったので(Clojure/Omからやるぞ)今作ってるサービスはReact/Flumptで作ることにした。なので、Flumptの素振りでおなじみTodoMVCを作った。 ここです→babie/flumpt-todomvc。 動かすには git clone して npm install して open index.html してください。 さっき一通り動くようになったとこでリファクタリングも何もありゃせんが、今日はもう疲れたので終わり。「なんでこうなってないんだよ!」ってのがあったら(あると思います)、プルリク・イシュー下さい歓迎。いや、まぁ1ファイルに詰め込んでるんでそれ以前の問題ですが。そういえば、FlumptのPromiseフレンドリーで画面がシパパパッって変な更新しないみたいな強み、全然活かしてないですね……。IndexedDBぐらい使えば良かっ
Reactive Programming With Rxjs: Untangle Your Asynchronous Javascript Code 作者: Sergi Mansilla出版社/メーカー: Pragmatic Bookshelf発売日: 2015/12/25メディア: ペーパーバックこの商品を含むブログを見る Reactive Programming with RxJSの電子書籍版を買って勉強しています。目的は気になっているJavaScriptフレームワークCycle.jsを理解するためです。この本の最終章にもCycle.jsのさわりが書いてあるっぽいので楽しみにしています。ただ、Rx/Cycle.jsはとある優秀なエンジニアが採用しながらもプロジェクトが頓挫しておりダメなアレかもしれません。ただ、Rxがどこまで使えるかどうかわかりませんが、ストリームの扱いは今後の糧になっ
なんかActiveRecordが中間テーブルにid付けるのに反対する人たまに見るんだけど、俺は付けた方がいいと思う。というのは、Web APIがすっきりするから。 例えば、followships って中間テーブルがあったとして、カラムに followee_id, follower_id って名前を付けるとしようじゃないか。(followship, followee 共に造語です。-shipsを付けて関係を表し、-ee を「される人」-er を「する人」に付けるのが個人的な趣味なのです。interviewee/interviewerの関係ね。話題が逸れるけど俺は書く!オススメはしません) で、フォロワー作るときはいいとして、フォロワー削除するときのAPIにidナシとidアリじゃ違いが出るじゃんね。 DELETE /users/1/followships?followee_id=256&fol
Heroku で Rails 3.1 アプリを git push heroku master するとこんなエラーが出ることがあると思います。 -----> Preparing app for Rails asset pipeline Running: rake assets:precompile rake aborted! Failed to connect to a master node at localhost:27017 Tasks: TOP => environment (See full trace by running task with --trace) Precompiling assets failed, enabling runtime asset compilation Injecting rails31_enable_runtime_asset_compilati
Rails のモデル名変更スクリプトを、まだ名前を明かせぬ人と一緒にペアプロして作った。 全テスト、オールグリーンなので、多分大丈夫。まぁでも Git などの SCM は必須だねぇ。当然、無保証です。 あ、テーブル名・カラム名変更は誰か追加して完全版作ればいい。ウチは今 MongoDB なんで必要ないんすよー。 実行はこんな感じ。 $ rails runner ./script/rename Old New 肝心の内容は以下。 あー、変数名は before/after じゃなくて old/new の方が良かったなー。適当に直すがよろし。 script/rename: #!/usr/bin/env ruby # coding: utf-8 old = ARGV[0] new = ARGV[1] if old.blank? || new.blank? STDERR.puts "Usage: r
4人で鋭意開発中のプロダクトですが、TechCrunch Tokyo 2011 スタートアップバトルの審査に落ちました。 この度はTechCrunch Tokyo 2011スタートアップバトルにご応募いただきま してありがとうございました。 厳正な審査を行いました結果、誠に残念ながら、貴社サービスにつきまして はご期待に添えない結果となりました。今回も多くの方からご応募をいただ き、審査員一同、大変苦慮した上での決定であることを申し添えさせていた だきます。 なお、今回のTechCrunch Tokyo 2011ではスタートアップ業界をさらに盛り 上げるべく、多くのコンテンツをご用意いたしております。 スタートアップバトルへのご登壇はお願いできず残念ですが、ぜひとも会場 にお越しいただき、今後のサービスに生かせるネットワーキングなどを行っ ていただければ幸いです。 お申込み: http:/
目標: Ubuntu 10.04。安定版なのよー。多分新しいやつでも大丈夫。 Nginx 使う。ちょっぱやらしいんで。 RVM 使う。Redmine の要求する Ruby 1.8.7 はともかく、Rails 2.3.11 ってどういうことよ!ってわけで汚したくないんで。 REE(Ruby Enterprise Edition)使う。メモリ抑えたい。 Passenger の Nginx モジュール使う。 Redmine は 1.2.1。 いやー、色々なブログを放浪しましたが、結局4.5時間ぐらいかかってしましましたよ。お客さん、ラッキー!これが、最短だ!! # Nginx(の起動スクリプト)インストール(本体は使わない) $ aptitude install nginx # MySQL インストール $ sudo aptitude install mysql-server libmysql+
「スタートアップの共同創業者を募集します 2」 の続きでございます。 応募総数8名の中から、共同創業者2名が決まりました! 思った以上に集まりましたね。正直3名ぐらいかと思っていました。ご応募してくださった皆さん、ありがとうございました。いや、ブログで共同創業者募集、意外といけますよ、これ。良い人が多くて選択に苦しみました。 アイデアを話すに当たっては、免許証などによる本人確認と、音声の録音による簡易秘密保持契約も考えていましたが、声の調子やノリなどから判断して不要としました。ぶっちゃけ、面倒くさかったし、空気悪くしてやる気削がれるのは嫌だった。 そして、ゆるい繋がりを経て、デザイナー1名も決まりました。パチパチパチパチ。アイコン自力作成とか気が重かったんですが、これでマネジメントとプログラミングに専念できます。 株の配分は、協議の末、俺51%固定、デザイナー5%固定、残り44%を2人のプ
はてブの方で色々疑問に思ってる方がいるようなので、軽く答えておきますね。 募集要項などは「スタートアップの共同創業者を募集します 1」を御覧ください。 「あえて創業するなら自分のアイデアをやりたいと思う人ばかりだと思う」 いやー、全くその通りですね。でもそういう人は私が一緒にやりたい人じゃないんですよ。傲慢なんで、アイデアは私の方が量も質も優れていると思っている。ウェブ見てる印象では、プログラミングできない人は技術を理解できてなかったり、名は伏せますが、○○みたいに「インターネットの倫理」を簡単に踏み越えてしまったりで危ない。プログラミングできる人は基本アイデアがしょぼい。アイデアはないけど、技術力はあって、でっかく稼ぎたい人がいればいいな、と思っています。 「本当なら起業アイデアを公開して仲間を集めるべきなんだが。」 オウフ!Yes!ごもっともです。シリコンバレーでもアイデアごときでND
今、温めている有望なアイデアを一緒に形にしてくれる、Stay hungry, Stay foolish な共同創業者を募集します。 なぜ募集するかというと、 一人でやっているとサボる。スピードアップしたい。 違う視点が欲しい。 プログラマの友人はそれなりにいるが、みんな身持ちが堅い。ほら、周りオッサンが多いから子持ちでリスク取れなかったり。 かの有名な Y Combinator では、一人で応募すると、共同創業者を探してこいと言われるらしい。 からです。 募集の締切は10月19日(水)いっぱいとさせて頂きます。幸運の女神の前髪は短いです。う〜ん、でもまぁ、25時とかでも起きてるし受け付けると思う。とりあえず話だけでもいいんで、気軽に声かけてください。 共同創業者になるからには私がどういった人か把握したいと思います。長年、このブログやTwitter(@babie)の読者ならば必要ありませんが
heroku gem が入っているのは当然として。heroku_san っていう複数環境マネジメントアプリがあるんですが、Stack が最新の cedar じゃなくて、デフォルトの bamboo-mri-1.9.2 になっちゃうので序盤は手動でやることにしました。 heroku create の際、--remote オプションを付けます。そうすると .git/config に各環境のリポジトリが登録された上 Heroku のセットアップができます。 $ heroku create appname-staging --remote staging --stack cedar $ heroku create appname --remote production --stack cedar 上の例では、http://appname-staging.herokuapp.com/ と http:/
なんかさくらのVPSが勝手にリスタートしたみたいで、MongoDBが起動しなくなった。 モッピー知ってるよ、--repair コマンド使えばいいんだよね。 $ sudo mongod --dbpath=/var/lib/mongodb --repair あれれー?mongodb.lock ファイル消えないし、起動できないし。 ググると、公式 Ubuntu パッケージの場合はちょっと対処法がちがうっぽい: $ sudo rm /var/lib/mongodb/mongod.lock $ sudo -u mongodb mongod -f /etc/mongodb.conf --repair $ sudo /etc/init.d/mongodb start これでいけた。ふぅ・・・
Spork は、起動時に Rails 本体だけでなくアプリケーションもガーッと読み込むので、Model や Routes を変更しても、終了・起動しないと反映されない。これでは autotest なんか使っている時めんどくさいので、ちょっと設定を変更した。 最初はこっちを参考に変更しようと思ったんだけど、こっちの方が追加行数が短いので、後者にした。 spec/spec_helper.rb Spork.each_run do # This code will be run each time you run your specs. load "#{Rails.root}/config/routes.rb" Dir["#{Rails.root}/app/**/*.rb"].each { |f| load f } end うん、できた。
jQuery で、 $("#target").keypress(function(event) { if ( event.which == 13 ) { //更新... } }; とか書けるじゃないっすか。13 は [Enter] のキーコードね。 それで、capybara でどうやってテスト書いたもんかなぁと色々試行錯誤して、@nukusuさんに教えてもらっちゃったりして、できた: page.execute_script(<<-JS) $("#target").attr("value", "ABC"); $("#target").trigger({type: "keypress", keyCode: "13"}); JS 長いこと懸案事項だったので助かりました。 なんで今までできなかったかというと、jQuery の公式ドキュメントが間違っていたから: // Create a new jQ
「モバゲーが退会しても個人情報を削除してくれない 3」の続きでございます。 長々とお待たせして申し訳ございません。進捗はありませんが、なぜ進んでいないかの現在の報告をさせて頂きます。 これからのアクションですが、3ステップを予定してます。1は時間を作ればすぐにできるのですが、2と3がちょっと物入りなんですね。個人的な問題なのですが、近々、貯蓄をだいぶ消費する予定がありまして、2,3に当てるのはちょっと不安というか難しい状況なんですね。なら1だけでもすぐやればいいじゃないかというのはあるのですが、1と2,3は間を空けずにやりたいというのがありまして、活動をストップさせて頂いています。で、貯蓄が回復するのを待ってということになるんですが、回復するかどうかはちょっと賭けみたいなところがありまして、長い暗黒時代が待っているやもしれません。目論見としては3ヶ月ぐらいで復活するかなぁ、もうちょっとかか
http://turntable.fm/ このサービスはヤバい、ふと気づくと恐ろしい時間経ってるし、寝不足になるし、中毒性がある。麻薬かよっていう。一応知らない人のために順を追って説明するけど、近づかないほうがいいよ。マジで。 概要を簡単に説明すると、誰でも DJ になってパーティーを開けるというものです。おわり。 まずサービスを利用するには、Facebook アカウントが必要。さらに、自分の Facebook 友達が既にログインしたことあれば入れる。Twitter で入りたいって人がいて、Facebook 友達になったんだけど、すぐには入れなかったって。ソーシャルグラフにキャッシュが効いているのかな、わかんないけど。1日置いたら入れたりするみたい。あとログインできるFB友達の数も関係あるとかなんとか。 入ったら、部屋の名前や今流れている曲名を見て適当な部屋に入室するか、自分で部屋を作る。
「モバゲーが退会しても個人情報を削除してくれない 2」の続きでございます。 はじめにお断りしておきますが、進展なしでございます。私のアクションのみです。 前回、なぜ削除の要請に応えられないか理由を聞いてみましたが、返事が2週間きませんでした。元から答えてもらえるとは思ってなかったんですが、id:nihen / @nihen さんが「個人情報の保護に関する法律」の第二十八条(後述)を指摘してくれましたので、再度メールを出してみました。 なお、nihen さんは、別に私の活動を応援しているわけでなく、逆に私の主張は通らないだろうという考えでありながら、中立的な観点から指摘してくれただけですので、私の主張に異を唱える方も nihen さんを攻撃しないようお願いします。 私からモバゲー事務局への返信: 件名: Re: お問い合わせについて[スマートフォン] 差出人: <xxx@example.jp
どうも皆さんこんにちは、GW返上で頑張る babie でございます。日中にキャッキャウフフ行楽してる奴は殺人光線を浴びて死ぬ。 Rails のインテグレーションテストで一般的となった Capybara ですが、JavaScript のテストには選択肢が色々あります。envjs, selenium, akephalos, celerity, culerity などなどです。迷いますねー。 ですが、当方、Ruby 1.9.2 p136 on VPS の関係のため、 envjs ―― 依存してる johnson が Ruby 1.9 系列ではコンパイルできないので× selenium ―― X ごっそり入れるのイヤなので× akephalos ―― 依存してる HTMLUnit が jQuery 1.2 までしか対応してないので× celerity ―― JRuby 専用なので× culerit
「モバゲーが退会しても個人情報を削除してくれない」の続きでございます。 多分、今日の昼間に会議があったと思うので、先のメールでこっちの提案を書いとけば良かったなーと後悔しつつ。「退会してから90日後にメールアドレスと携帯電話番号部分だけNULL埋め」が、モバゲーも開発コストがそれほどかからず(簡単なスクリプト書いて1日1回走るcronセットするだけ)不正を防げて、元ユーザーも安心で一番いいかなーと思っていたんですが。 モバゲー事務局から私への返信: 差出人: support <support@mbga.jp> 件名: お問い合わせについて[スマートフォン] 日時: 2011年4月25日 19:40:07JST 宛先: <xxx@example.jp> 返信先: support <support@mbga.jp> モバゲー事務局です。 このたびは、ご連絡が遅くなり申し訳ございません。 ご連絡
あー、どっから話せばいいかな。正直にそもそものところから書くのが公平でしょう。あれなんすわ、Twitter でウオッチしてる人はわかるとおり、ぼくオカマなんすわ。女装も女っぽい言動もしてないけど、心は女というか、似合いさえすれば女の子の格好したいんすわ、ゲームのキャラやアバターは必ず女性にするんですわ。ネカマと言ったほうが正しいかな。 んで、ちょっと前にウェブ業界の調査と好奇心でモバゲーに入会しました。あ、スマートフォン版です(私の所持端末は iPhone 3G)。その際、あとでアバターは自由に着せ替えられると思って、性別の欄は「男性」にしたんすわ。戸籍上、男性だし。そしたら、アバターいじろうウフフと思ったら、男性形固定で女性形にできないんすわ。 んで、しょうがないから別アカウント作ろうと思って、別のメアドでアカウント作った。そこで立ち塞がるのが「携帯電話番号認証」。携帯電話番号を入力して
github を利用しようかなーと思ったんですけど、複数人で秘密リポジトリが使えるプランは、零細企業には高いっすわー。ということで、せっかく遠隔ペアプログラミング用にさくらのVPSを借りているので、そこに Git サーバーを立てることにしました。 インストール: $ sudo aptitude install gitosis あ、Ubuntu なので。他のディストリビューションは知らん。 初期化します。同時に設定を嬲れるユーザーの公開鍵を登録します: $ sudo -H -u gitosis gitosis-init < ~/.ssh/id_rsa.pub 設定は、gitosis サーバーから gitosis-admin というリポジトリを clone して、編集して、commit して、push することで行います。 以下では sample というリポジトリを、私と test@examp
ペアトレーニング用に V8 のシェルが欲しかったんだけど、libv8-2.0.3, libv8-dev にはどうも付属されてないようなので、しょうがないからコンパイルした。x86_64 環境だからちょっと苦労した。 $ sudo aptitude install subversion scons $ cd ~/dev/ $ svn co http://v8.googlecode.com/svn/trunk/ v8-read-only $ cd v8-read-only $ sudo aptitude install ia32-libs lib32z1-dev lib32bz2-dev lib32readline-dev $ sudo ln -s /usr/lib32/libstdc++.so.6.0.13 /usr/lib32/libstdc++.so $ scons d8 console
さくらのVPS ってデフォルトではファイアーウォールの設定何もされてないという記事をみて驚愕した。と、よく考えたら Ubuntu 10.04 LTS を再インストールしたから、どっちにしても初期状態だな。 とりあえず確かめた。 $ sudo iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination オウフ、デフォルトは空なのか…… iptables の設定めんどくせぇなーどうしようかなー、と思っていたら、どうも Ubuntu では ufw という
Ruby on Rails Tutorial Learn Rails by Example は大変よろしい教材で重宝しているのだが、Chapter 11 User microposts の 11.5 Exercises 設問 8 に付記されたコード: Listing 11.42. A helper to wrap long words. が大変よろしくない。 app/helpers/microposts_helper.rb module MicropostsHelper def wrap(content) raw(content.split.map{ |s| wrap_long_string(s) }.join(' ')) end private def wrap_long_string(text, max_width = 30) zero_width_space = "​"
ネオコンなるものがあるそうなので調べたら、autocomplpop を置き換える neocomplecache なる Vim スクリプトパッケージがあった。とっくに時代は塗り替えられていたらしい。 アンインストール&インストール: $ vimana remove autocomplpop $ vimana install neocomplcache ~/.vimrc に以下を追記: " Use neocomplcache. let g:neocomplcache_enable_at_startup = 1 " Use smartcase. let g:neocomplcache_enable_smart_case = 1 " Use auto select "let g:neocomplcache_enable_auto_select = 1 " Use camel case comple
「Vim-users.jp - Hack #22: XMLの閉じタグを補完する」を参考にして、HTML/XML の閉じタグを </ が入力されたときに自動的に補完するようにした。 ~/.vimrc に以下を追記: augroup MyXML autocmd! autocmd Filetype xml inoremap <buffer> </ </<C-x><C-o> autocmd Filetype html inoremap <buffer> </ </<C-x><C-o> autocmd Filetype eruby inoremap <buffer> </ </<C-x><C-o> augroup END Rails を使うことが多いので、eruby ファイルにも適用されるようにした。
「()の閉じ括弧などを自動的に閉じる - bless {category => 'vim'}, shift - vimグループ」経由「gist: 269208 - GitHub」の設定を頂き、プログラムの入力などで便利なように、() {} [] の後ろの括弧を自動的に補完するようにした。 元々の設定は、<> も補完するようになっていたが、「Vim で XML/HTML の閉じタグを自動入力するようにした - LazyLoadLife」が効かなくなるので、<> 補完については省いた。 ~/.vimrc に以下を追記: inoremap ( ()<ESC>i inoremap <expr> ) ClosePair(')') inoremap { {}<ESC>i inoremap <expr> } ClosePair('}') inoremap [ []<ESC>i inoremap <exp
※ 追記したので最後まで読んでね。 「Ruby の end を自動的に入力する Vim スクリプト改め autoend.vim - ursmの日記」に従い、Ruby の end を自動補完する plugin を導入した。 コードを見て分かるとおり、Vim の Ruby 拡張を使って書いてあるために、vim-ruby パッケージが必要。私の環境は Ubuntu なのだが、vim-ruby パッケージはダミーパッケージのようで、インストールしようとすると、vim-nox, vim-gtk, vim-gnome のどれかを入れろと言われた。Vim 自体をインストールするときに vim-full パッケージが見つからないなーと思っていたが、vim-full は生まれ変わって、環境別にこの3つのどれかを入れろってことらしい。VPS なので vim-nox 一択。 変更は特にない。 ふんげー便利! i
※ 追記したから最後まで読んでから実行してね。 VPS から autotest の Growl の通知を受けたい。autotest-growl は Linux 対応してるのかしら?と思ってソースを見たら、どうも notify-send というコマンドに依存しているらしい。 Ubuntu では libnotify-bin というパッケージを入れれば notify-send が入るらしいのだが、こいつが Manpage を見る限りどうもリモートホストに対応してないっぽい。 調べると、ruby-growl というパッケージに growl ってコマンドが付いているらしい。んでこれは Pure Ruby 製で libなんたらとかインストールしないでいい上に -H オプションでリモートホストに対応してるらしい。いいぞ!こいつのラッパースクリプトを書こう! $ gem install ruby-grow
次のページ
このページを最初にブックマークしてみませんか?
『babie, you're my home』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く