サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
アメリカ大統領選
mugenup-tech.hatenadiary.com
皆さん、こんにちは。プルリクで間違った指摘をして大反省中 の osada です。 プルリクで間違った指摘をして大反省中です。 下記のコードで、何を指摘したか、お分かりになるでしょうか? class NotificationJob < ActiveJob::Base queue_as :default def perform(notifiable, user) notifiable.notify(user) end end こんなことを言ってしまったのです。 オブジェクトを丸ごとシリアライズすると、redis の容量を圧迫し、 シリアライズ・デシリアライズにも時間が掛かるので、 クラス名とidを渡して、job の中で取り出して使って下さい。 この発言には2つ、間違いがありました。 1つ目は、オブジェクトが丸ごとシリアライズされると思っていたこと。 2つ目は、ActiveJob は クラス名と
こんにちは、MUGENUPの倉成です。 僕はRailsを使い始めてあと少しで丸2年になるのですが、初めの頃は覚えることがたくさんあって、とても大変だった記憶があります。 今回はそんな中でも、Railsで初めてWebプログラミングをする人向けに、コントローラのアクションであるnew,create,showについて解説してみたいと思います。 この記事ではソースコードは説明のため、実際にscaffoldされたコードを抜粋、もしくは省略されているコードを挿入して取り上げます。 なお、使用するコードは rails g scaffold user name:string email:string postal_code:string address:string で生成されたコードを元にしており、モデル・ビュー・コントローラはこれを使うことにします。 それではnewから見て行きましょう。 def ne
こんにちは、MUGENUPアルバイトの倉成です。 今回は僕が前々から気になっていた、フォームからファイルを送信するときのおまじないenctype="multipart/form-data"について調べてみたので、得られた知識をまとめて見ようと思います。 また、マルチパートの情報を検索していると、HTMLのフォームだけではなく、メールのマルチパートの情報に当たることも多くありました。 調べてみると、HTMLの仕様と電子メールの仕様が似ているのは、どうやら歴史的な経緯があるようなので、後半ではインターネット成長の歴史についても少しだけ触れてみようと思います。 multipart/form-data: ファイルを送るおまじない それでは、フォームでファイルをアップロードするシチュエーションを考えましょう。 ファイルアップロードをする場合input要素は<input type="file" />を
こんにちは、MUGENUPの倉成です。 最近はWebアプリでもデスクトップ通知が出来るものが増えていますよね。 今日はそんなデスクトップ通知の実装を取り上げてみようと思います。 便利なライブラリ デスクトップ通知はブラウザによって実装が異なり、各ブラウザの対応は手間がかかるので、今回はクロスブラウザ対応を簡単にできるHTML5-Desktop-Notificationsを使います。 他のデスクトップ通知のライブラリにはnotifyもあり、こちらもHTML5-Desktop-Notificationsと同じくらいのStarが付いているようです。 使い方 さて、ここからはHTML5-Desktop-Notificationsの使い方をREADMEにそって ブラウザ対応状況の確認 ユーザーに通知の許可を求める 通知を発行 の3段階で説明していきたいと思います。 なお、本記事はこのコミット時のコー
MUGENUPの倉成です。 今回はRailsのCallbackであるafter_createとafter_commitの処理順番を改めて確認し、処理順番を誤解していた事によって僕が遭遇した問題ついて記事を書こうと思います。 シチュエーション ブログ記事の新規投稿があった時、購読者に対してメールを送信する。 ブログの投稿時に通知のメールを送信するような場合、記事の投稿に必要な最低限の処理のみを行い、購読者へのメール送信などリアルタイムな処理が必要でないものは非同期で処理することで、レスポンス速度を向上させることが出来ます。 非同期処理を行うためのライブラリとしてはresqueやsidekiq、delayed_jobなど幾つかのものがありますが、弊社ではこの用途にresqueを使っているので、この記事では特にresqueを取り上げて説明します*1。 実装 さて、上の要件の実装として、僕は以下の
初めまして!MUGENUPアルバイトの倉成です。こちらで書く初めての記事として、今回は僕が初めて作ったVimプラグインとMUGENUPエンジニアのエディタ事情について紹介しようと思います。 僕自身はMUGENUPでアルバイトを始めてから、Emacs, SublimeText, RubyMineといろいろなエディタに手を出していましたが、現在はVimに落ち着いています。 もちろん、それぞれのエディタには一長一短があり「他で出来たことがこっちでは出来ない」というようなことはよくありますよね。 後置記法を支援するプラグイン そんな中でも、RubyMineを使っていた時に便利だと思った「bodyが1行のif, unless, while, until文を後置記法に変換する*1」ことがVimではできず、軽く調べてもプラグインが見つからなかったので、自分で作ってみることにしました*2。 Github:
皆さん、こんにちは。MUGENUP の osada です。 今回のテーマは、 Chrome 拡張を作ってみた JS の BLOB として、画像をダウンロードする GitHub 経由で、S3 に POST する の3点です。 読者ターゲットは、 画像は S3 に置きたいけど、管理はしたい 人や、 <input type="file"> を使わずに画像をPOSTしたい 人です。 注: 一部画像にモザイクを掛けてあります。copyrightを守ります Yammer から GitHub に 開発部では、社内コミニケーションツールとして、Yammer を使っています。 Yammer は社内専用の Facebook のようなSNSです。 そこに LGTM な画像置き場を作っているのですが、Yammer の URL をそのまま GitHub に投稿しても表示できません。 Yammer は会員制でクローズ
皆さん、こんにちは。MUGENUP の osada です。 いきなりですが、問題です。 def if_expression(flag) if flag "NG" else "OK" end end Ruby は 最後に評価された値が返る と言われていますね。 では、上記のメソッドで if_expression false の返り値は、何ですか? はい、正解です。OKが返ってきますね。 ちょっと長いので、リファクタリングしましょう。 def if_modifier(flag) "OK" "NG" if flag end さてもう一度。 if_modifier(false) の返り値は、何ですか? Ruby は 最後に評価された値が返る と言われていましたよね? はい。正解です。nil が返ってきますね。 え、"OK"じゃないのかって? いいえ、後置if は if とは全く違います。 右辺の条
皆さん、こんにちわ。MUGENUPの narikazu です。6月2日にRSpec 3.0.0がリリースされました(Myron Marston » RSpec 2.99.0 and 3.0.0 have been released!)。RSpec 3.0.0での変更点はMyron Marston » Notable Changes in RSpec 3あるいは、その日本語訳のRSpec 3の重要な変更 - 有頂天Rubyをご参照下さい。 ここでは、弊社Railsプロジェクト(Rails 3.2.18)でのRSpec3.0.0へのアップデート手順を記述いたします。この記事が皆さんのアップデート時の参考になれば幸いです。 アップデート手順 アップデート手順は以下の記事を参考に致しました。 既存のRailsプロジェクトをRSpec 3.0にアップグレードする際の注意点 ~RSpec 3は怖くない
皆さん、こんにちは。MUGENUP の osada です。 いきなりですが、 gem の内部を書き換えたい! と思ったことはありませんか? globalize というgem が、内部で has_many :translations, dependent: :destroy を実行するのですが、このdpendent: :destroyを止めたい、という要望から発生した、 gemの内部の挙動をオーバライドする方法のご紹介です。 想定する読者は、ruby を使い始めたばかりで、オープンクラスやメタプログラミングを使ったことがない人です。 概要 dpendent: :destroyを止める方法として、下記の方法を紹介します。 オープンクラスを使ったパッチを当てる module_evalを使ってパッチを当てる has_many を再定義する (Rails 3.2) destroy 用のメソッドをオー
こんにちはMUGENUPの伊藤です。 2014年5月15日(木)に開催された「Qiitaの中の人とQiita:Teamを使う人と共に理想のチームについて考えてみませんか?」というイベントでQiita:Teamを使う人としてお話させていただきました。 MUGENUPでは昨年の夏頃からQiita:Teamを使っています。 以前にはIncrementsさんに事例として取り上げていただきました。 Qiita:Teamを使った議事録の共有・保存で仕事の効率化をめざす MUGENUP CTO 伊藤勝悟氏 - Qiita Blog イベント当日はIncrements代表取締役の海野さんと二人で「チーム」「組織」「情報共有」「コニュニケーション」と言った切り口から各社でどのような取り組みをしているかについてお話させていただきました。 ここでは弊社のコミュニケーションについて起こった問題と解決のためのトライ
2014年5月14日 13時00分 修正 タイトルが誤解を招くものだったので、「なぜ URL に www を付けるのか。または、サブドメインなしでは CNAME が使えない件」から変更致しました。併せて、画像に Public IP と Private IP の明記を行いました。 皆さん、こんにちは。MUGENUP の osada です。 今回は、スケールアウト時にELB(Amazon Elastic Load Balancer) を使うときの注意点についての記事です。 といっても、インフラ・エンジニアには自明のことと思いますので、読者の対象は インフラ・エンジニアではないけど、インフラもやるというベンチャーならではのエンジニア向けです。 要旨 ELBにはEIPなどのAレコードを関連付けることが出来ず、ドメインとサーバーを結びつけるには提供されるCNAMEを使う必要があります サブドメイン無
皆さん。お久しぶりです。MUGENUP の osada です。 某死にすぎるゲームの1周目をクリアしたので、戻ってまいりました! 目標を達成するために大事なことは観察力である、ということを思い知らされるゲームでした。 さてそんな今回は、Rails 3.2 の includes に関するバッドノウハウの共有です。 弊社 okuda が、トライ・アンド・エラーの末に見つけた、バグの解説になります。 Rails 4 系 をお使いの方には不要ですので、何かの話のネタになれば幸いです。 includes は LEFT OUTER JOIN と eager loading の 2 種類がある Railsでは、includes は 2種類の使い方ができます。 1. eager loading 2. LEFT OUTER JOIN 通常の使い方だと、(1) の eager loading となり、 whe
みなさん、こんにちは! 2週間ぶりのご無沙汰、MUGENUP の osada です。 ruby 2.1.0、Rails 4.1 で開発した、みなゲー編集部が正式リリースとなりました! よろしくお願いします。 さて、そんなRails 4.1の新機能として、プレローダーspringが標準装備となりました。 本日はspringとparalell_testsを併用する方法についてのお話です。 要旨は下記となります。 PARALLEL_TESTS_EXECUTABLEを設定して、paralell_testsにspringを使わせない bin/rspecを書き換えて、始めのプロセスだけspringを使う FailuresLogger を使って、失敗したテストを再実行する RuntimeLoggerを使って、テストのグループを平均化する では、よろしくお願いします。 PARALLEL_TESTS_EXE
新年あけましておめでとうございます! MUGENUP の osada です。 2014 年は挑戦の年、ということで、MUGENUP でも新しい事業を初めています。 ゲームライター・編集者募集中|みなゲー みんなで作るゲーマー向けの攻略サイト「みなゲー」。 その攻略記事を書いてくださる方を募集しています。 スマホゲームなら俺に任せろ!という豪の方、攻略記事を書いてみませんか? 開発部でも、新しい挑戦としてRuby 2.1、Rails 4.1 で開発を初めています! 新機能 enum Rails 4.1 に enum という新機能が実装されました。 Ruby on Rails 4.1 Release Notes — Ruby on Rails Guides class Conversation < ActiveRecord::Base enum status: [ :active, :arch
皆さんこんにちは!「太鼓式マッサージ?面白そう!」と思ったら「タイ古式マッサージ」でした。MUGENUP の osada です。名前って難しいですよね。 ところで、ActiveSupport::Concern の ClassMethod で定義したクラス変数が、どこにあるか、ご存知ですか? # app/models/concern/item_module.rb module ItemModule extend ActiveSupport::Concern module ClassMethods def my_module_method @@concern_class_variable ||= "concern_class_variable" end end end # app/models/item.rb class Item < ActiveRecord::Base include It
皆さんこんにちは!遅れてきた最年長ルーキー MUGENUP の osada です。 さて皆さんは初めてオープンクラスという概念を知った時、驚かれませんでしたか?私はとても驚きました!だって、基本クラスさえもオーバライド可能なんですよ? [コラム]オープンクラスとは? 同名でクラス定義を行うと、クラスの再定義(上書き)ではなく、クラスへの追加拡張になる仕組み。 class A def a "a" end end a = A.new raise unless a.a == "a" raise if a.respond_to?(:b) # b というメソッドはない # 同名のクラス定義は拡張になる class A def b "b" end end raise unless a.b == "b" raise unless a.respond_to?(:b) # b というメソッドがある # a
皆さんこんにちは。スーパーのビニール袋は濡れタオルを触ってから開ける方、MUGENUP の osada です。 今回はexpect について調査したことを書きたいと思います。 ターゲットは、rspecが上手く書けなくて、気が付くと3時間もテストを書いている、というようなrspec初心者です(実話)。 中間管理職 expect さん では、本題のexpectです。まずは問1から。5秒で答えてください。 describe Person do it "should be a instance" do expect{Person.new}.to be_a(Person) end it "should be a instance" do expect(Person.new).to be_a(Person) end end 問1 両方テストが通る 上のテストが通らない 下のテストが通らない 両方通らな
皆さんこんにちは! 株式会社 MUGENUP 開発部の osada です。 弊社 で使っているフレームワークは Ruby on Rails ということで、 テストで使用する change マッチャ について調べたことを書きたいと思います。 ターゲットは change でテストを書きたい rails 初心者の方です。 かくいう私もrails歴は半年もなく、初心者の皆さんと一緒に勉強出来ればと思います。 ですがその前に、MUGENUP 開発部って何をやっているの?ということで、 簡単にご紹介したいと思います。 MUGENUP とは? 株式会社 MUGENUP は、イラストを必要とする企業さんから発注を受けて、クリエイターさん達とアートディレクターが連携して、イラストを作成しお届けしています。 それらの各工程「受注、工程分割、担当割り当て、イラストの修正や相談」などの全てを MUGENUP WO
このページを最初にブックマークしてみませんか?
『MUGENUP技術ブログ』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く