タグ

ブックマーク / kray.jp (15)

  • DocBaseの同時編集機能を実現しているアルゴリズム – KRAY Inc.

    はじめに 皆さんはGoogleドキュメントやHackMDを使ったことはあるでしょうか。これらのツールは「ネット越しに同時に複数の人で1つのドキュメントを編集できる」という特徴を持っています。お互いの編集がリアルタイムに反映されるので、相手が何を書くのかを意識することなく、簡単にドキュメントを複数人で編集することができます。これを実現するためには、同時編集に参加しているユーザ全員の編集内容がネットワークの延滞に影響されることなく、それぞれの編集内容をうまい具合にマージして反映してくれるような賢いアルゴリズムが必要になります。今回はこのアルゴリズムに関して書きます。 編集内容のマージとは 編集内容をうまい具合にマージしなければいけないケースを考えてみます。 AさんとBさんが次のドキュメントを同時編集するとします。最初は、お互いブラウザ上では次のように見えています。当然、この状態ではお互いに見え

    DocBaseの同時編集機能を実現しているアルゴリズム – KRAY Inc.
  • git pull と git pull --rebase の違いって?図を交えて説明します! | KRAY Inc

    はじめに こんにちは、クレイの亀井です。ここ最近一気に気温が上がりましたね。顔に重点的に汗をかくタイプの私には憂な季節がやってまいりました さて、今月正式リリースしました(!) DocBase プロジェクトではクレイ外部のデザイナーの方と一緒に開発しています。SourceTree で Git を使っている方で、軽いデザイン修正などは弊社の Rails プロジェクトに直接手を加えてプルリクエストを送ってくれます。 こちらのデザイナーさんに「プルリクエストを送る際は、作業ブランチで git pull --rebase origin master してから送ってもらえますか?」とお願いすると「pull はわかるんですけど、この --rebase ってなんですか?これつけると何が変わるんですか?」と質問がきたのです。 作業ブランチで git pull --rebase origin master

    git pull と git pull --rebase の違いって?図を交えて説明します! | KRAY Inc
    a2ikm
    a2ikm 2016/03/19
  • Amazon S3のStatic Web Hostingにアクセス制限をかけて使ってみる

    残暑が長引いていますが、朝晩だいぶ涼しくなってきましたね。秋になり、6月から育ててきたヒマワリが枯れました。水をやらなかったからですが。 S3を利用したWebホスティング ということでAmazon S3のStatic Web Hostingです。Webサーバ不要で静的サイトを設置できます。便利です。ベースがS3であるが故、安価、安定、そしてどんなにアクセストラフィックが増えても重くなりにくい(従量課金ですが、Webサーバでスケールアウトするより遙かに低コストです)、などの特長を持ちます。連携できるCMSも増えてきました。 ここでは簡単に初回設定、並びにstaging環境などで必要となる、アクセス制限の方法について書いてみたいと思います。 利用開始までの手順 登場から日が経っていることもありご存じの方も多いと思いますが、Static Web Hostingを使うまでの流れをおさらいしておきま

    Amazon S3のStatic Web Hostingにアクセス制限をかけて使ってみる
  • RailsのデプロイとUnicornのトラブルシューティング

    デプロイしたけど何かおかしい? 先日、Unicornを採用しているウェブアプリで問題が発生しました。デプロイした最新のコードが実行されているように見えますが、時々古いコードの挙動を見せるのです。 今回はそのトラブルシューティングの一部始終を紹介しながら、Unicornのホットデプロイ(ダウンタイムなしでアプリケーションを更新すること)の仕組みをおさらいします。担当は私、去年KRAYに入社しました@irohirokiです。よろしくお願いします。 問題 まずはデプロイ先のサーバにSSHして、Unicornのプロセスを調べてみました。 $ ps ax -H PID TTY STAT TIME COMMAND 3159 ? Sl 0:00 unicorn master (old) -c unicorn.conf -D 3162 ? Sl 0:00 unicorn worker[0] -c unic

    RailsのデプロイとUnicornのトラブルシューティング
  • Rails 4のturbolinksについて最低でも知っておきたい事

    Rails 4のturbolinksについて最低でも知っておきたい事 (追記)turbolinksに関するセキュリティ上の懸念について turbolinksとは、ページ遷移をAjaxに置き換え、JavaScriptCSSのパースを省略することで高速化するgemで、Rails 4からはデフォルトで使用されるようになります。 高速化は大歓迎なのですが、JavaScriptのイベントの起き方が変わるため、Rails 3までの書き方をしているとまず間違いなく問題が起きます。しかも、Rails 4ではデフォルトの機能ですので、最新版を使いたいなら必ず知っておかなければいけません。 エントリではturbolinksを使うために絶対に知らなければいけないことを分かりやすく紹介したいと思います。 動作 turbolinksの動作は、すごく大雑把に言うと以下の通りです。 リンクのclickイベントをフッ

    Rails 4のturbolinksについて最低でも知っておきたい事
  • Webサイト&WebアプリのRetina対応方法まとめ

    こんにちは。 会社からMacBookPro Retinaディスプレイモデルを支給されました浅海です。 Retinaディスプレイ、非常に快適なのですが、Retinaディスプレイに最適化されていないWebページやアプリケーションでは、ビクセルベースで作られている部分がすこしぼけたように見えてしまいます。 特に文字を画像にしている場合なんかは、かなり気になります。 Retinaディスプレイは既にiPhoneで使われているほか、一部のAndroidもRetina相当の解像度を持っているモデルが登場しており、モバイルWebサイトやWebアプリがRetinaディスプレイを意識した作りになっていることはよく見られるようになりました。 これからもPCなど、Retinaディスプレイ対応のニーズは増えるだろうと思い、対応方法をまとめました。 目次 imgタグ CSS JavaScript Google Map

    Webサイト&WebアプリのRetina対応方法まとめ
  • ActiveRecordで行ロックをかける方法

    行ロックとは 行ロックとは、テーブルの同一レコードに対して、複数同時に更新できないように制限する仕組みのことです。 Ruby on RailsのActiveRecordには2種類のロック方法があります。 楽観的ロック(Rails依存) 悲観的ロック(DBMS依存) それぞれの違いや使い方について解説していきたいと思います。 楽観的ロック 楽観的ロックとは、DBMSの機能に頼らずロックバージョンをレコードに保存しておくことで、取得時と変更時にロックバージョンに変更がないか確認し、変更があった場合は例外を発生させる方法です。 ロックするタイミング データ更新時 データを複数同時に取得することができるが、途中で更新されていた場合は、更新できない 仕組み テーブルにlock_versionフィールドを追加する lock_versionが書き換わっていたらActiveRecord::StaleObj

    ActiveRecordで行ロックをかける方法
  • MVCについて考える

    はじめに こんにちは。今年の3月からKRAYに入社した阿部です。 ブログには初登場になります。 今日は、昨今のアプリケーション開発では誰もが耳にしているであろうMVCパターンを取り上げます。(以下MVCと呼びます) 開発者それぞれで理解や解釈が違っていることが多く、しばしば議論を呼び起こします。「ぼんやり」と理解したままの方も多いのでは無いでしょうか? 私もある程度、開発で実践してみるまでは、なかなか良い形でMVCを適用することが出来ずにいました。皆様のMVCへの理解を少しでもクリアに出来れば幸いです。 定義をおさらい MVCは図で示されることが多いですね。 Wikipediaを見るとMVCの典型的な相関図が掲載されています。 (Wikipedia語版 Model View Controller より) Wikipedia英語版にも掲載されているこの図ですが、かなり上のレイヤから見た考

    MVCについて考える
  • Titanium Mobileで画像の複数選択モジュールを作ってみた

    モジュール開発 最近忙しくて全然ブログ書けていなかったのですが、先日初めてTitanium Mobileのモジュール開発をした時にはまったりしたのでメモとして残しておきます。 クレイでは森山がブログを書いていたり、ダニーが仕事で使っていたりと多少実績はあるのですが、私自身は全くさわったことがありません。必要に迫られて、いきなりモジュール開発をすることになったのですが、Objective-Cさえわかっていれば意外に簡単にできるし、いろんな拡張が出来るので、かなり楽しかったです。 もしかするとTitanium Mobileでバリバリ開発している人から見ると、作法がなってないとか、変な動きをしてるとかあるかもしれませんので、その時はぜひ教えていただけると嬉しいです。 Titanium Mobileに関連した記事 近頃話題の Titanium Mobile でラクラク iOS アプリ開発してみた

    Titanium Mobileで画像の複数選択モジュールを作ってみた
  • WordPressを100倍速くする! MySQLの調整やnginx proxy cache | KRAY Inc

    [追記1] 最後で説明しているproxy cacheの設定を修正しました。 [追記2] nginx proxy cacheでキャッシュしない場合の処理を変更しました。 [追記3] スマートフォンや携帯で閲覧した時にキャッシュしない設定を追加しました。 はじめに 大げさな題名ですが、今回はWordPress単体を速くするのではなく、データベースやWebサーバなどの調整、またnginxのproxy cache機能を使って速くする話になります。 サイトの構成によっては、proxy cacheは使えないかもしれませんが、使わなくても5倍程度速くすることはできましたので、参考にしていただければと思います。 今回行うチューニング一覧 DBを最適化するプラグインを導入する APCを導入してPHPを速くする MySQLを速くする 重いWordPressプラグインを外す nginx+FastCGIにする W

    WordPressを100倍速くする! MySQLの調整やnginx proxy cache | KRAY Inc
    a2ikm
    a2ikm 2011/06/22
    FastCGI + nginx proxy cacheが効果的なのか、apacheから移ってみようかな
  • Titanium Mobile開発で参考になる5つのURL

    はじめに 最近Titanium Mobileで開発をはじめましたダニーです。こんにちわ。 今回はTitanium Mobile開発でよく分からないことを調べたりするのによく使ってるサイトを紹介したと思います。 Documentation Guides Appcelerator Wiki http://wiki.appcelerator.org/display/guides/Home/ 開発元のドキュメントです。ここは読んだほういいと思います。 Titanium Mobile 1.6.0 API Documents http://tidocs.com/mobile/latest/ Titanium MobileのAPIを検索できます。http://railsapi.com/みたいに検索できて使いやすいです。 Titanium MobileのAPIの実装がどうなってるかはiPhoneだとTit

    Titanium Mobile開発で参考になる5つのURL
  • [Rails] Nested Object Forms を使って多対多の関係をスマートに編集

    はじめに もりやまです。 先月の震災の日の記事以来となってしまいました。まずは被災されたみなさまに、心からお見舞い申し上げます。 弊社ではだにーが宮城県出身なのですが、ご家族には大事なかったようで一安心です。 昨夜も大きな余震があってまだまだ落ち着かないですが、みんなでまた再建しましょう! さて今回は、導入されたのは Rails 2.3 なのでもう目新しくもないですが、has_many :through で多対多に関連付けされたモデルを、Nested Object Forms を使って編集する方法がようやく理解できたのでまとめてみました。 そもそも Nested Object Forms って何? あるモデルを編集するためのフォームの中に、そのモデルと has_many 等で関連付けされた別のモデルを合わせて編集できるようにするための機能です。 これを自力でやろうとすると、 関連付けされた

    [Rails] Nested Object Forms を使って多対多の関係をスマートに編集
  • そろそろnode.jsについて一言書いておくか | KRAY Inc

    はじめに 毎年サーバーサイドJavaScriptが流行ると言ってるみなさんこんにちはダニーです。 ということで、node.jsをはじめてみました。 Twitter Streaming APIで取得したデーターをWebSocketで 接続したクライアントに出力するデモを作成したので紹介したいと思います。 今回のデモについて 今回作成したデモは node.jsのHttpClinetでTwtter Streaming APIでTwtterからデータを取得して、 node.jsのWebSocket Serverでそのデータを接続してきたWebSocket対応ブラウザに送信するということを やっています。 Twitter Streaming APIで取得できるようにする。 動かすのにhttp-basic-authが必要です。 npm install http-basic-auth streaming

    そろそろnode.jsについて一言書いておくか | KRAY Inc
  • Rails3でどう書けばいいかわからない時、参考になる7つのURL

    はじめに Rails3.0.0がリリースされて、2ヶ月(2010年10月末現在)。皆さんRails3ライフを満喫していますか? Rails3がはじめてという方、マニュアルやリファレンス探しに苦労されていませんか? Rails3でコードを書いていると、どうかけばいいのかな?ということもしばしばあって、自分なりに参照するサイトなどがまとまってきたので、今日は自分が参照する順番に、URLを晒していきます。少しでも参考になれば幸いです。 もくじ Rails Searchable API Doc Google – Search by date Rails 3 Ropes Course Railscasts – rails-3.0 episodes Ruby on Rails Guides Github – Search: rails3 example O’REILLY – Rails3 in a N

    Rails3でどう書けばいいかわからない時、参考になる7つのURL
  • 1時間でツイッターサービスを作ろう!

    はじめに どうもKRAYの芳賀です。 今日はツイッターサービスをスピーディーかつ無料で作るお話です。 僕は日頃趣味でツイッターサービスを作っているのですが、アイデアを着想したその日のうちにプロトタイプを作って動かすことができるくらいにノウハウが溜まってきました。 仕事が終わってからのプライベートな時間だけでも、1週間から1か月もあれば1つサービスがリリースできる感覚がつかめたので、必要最低限の機能を備えたサービスを短時間で作れないだろうか?と時間を計測しつつ実践してみたところ、なんと1時間で完成できたので、その手順を紹介します。 開発の流れ まずは開発の流れを説明します。 ツイッターアカウントの用意 まずツイッターのアカウントが必要になるので、まだ持っていなければ取得しましょう。サービス用に改めて取得してもいいですね。 サーバの用意 作成したウェブアプリを設置するサーバを準備します。PHP

    1時間でツイッターサービスを作ろう!
  • 1