タグ

Rubyに関するgam-22のブックマーク (143)

  • Rubyの会社でなぜRust? Cookpadがマイナー言語を採用するまで - ログミーTech

    2018年2月10日、恵比寿ガーデンプレイスザ・ガーデンホールにて、「Cookpad TechConf 2018」が開催されました。クックパッドエンジニアやデザイナーがどのようにサービス開発に取り組んでいるのか、またその過程で得た技術的知見について公開します。続いて登場したのは小林秀和氏。「Rubyの会社でRustを書くということ」と題して、現在比較的マイナー言語であるとされるRustを用いるに至った経緯や知見を語ります。 なぜRubyの会社でRustを使うのか 小林秀和氏:日はCookpad TechConfにお越しいただき、ありがとうございます。私の発表は、今話題のRustについてです。みなさんはRustを知っていますか? あるいは書いたことがありますか? 書いたことがあるという方、挙手をお願いしてもよろしいでしょうか? (会場挙手) ちらほらいますね。ありがとうございます。ご覧の

    Rubyの会社でなぜRust? Cookpadがマイナー言語を採用するまで - ログミーTech
    gam-22
    gam-22 2018/05/09
    タイトルを読んでRustってマイナー言語だったのか?と思った。よさそう“クックパッドではRubyだけではなく、状況に適切な言語を使ってクールに課題を解決しています。”
  • DeNAのゲーム開発を支える Game Backend as a Service

    【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発日マイクロソフト株式会社

    DeNAのゲーム開発を支える Game Backend as a Service
    gam-22
    gam-22 2016/11/29
    DeNaは最近はRubyなのか
  • slack-reaction-decomoji/import.rb at master · oti/slack-reaction-decomoji · GitHub

    gam-22
    gam-22 2016/10/08
    mechanizeを使ってRubyでSlackの絵文字をスクリプトでアップロードする例
  • RubyKaigi 2016 基調講演レポート Ruby3 Typing | Goodpatch Blog

    RubyKaigi 2016が始まりました!スポンサーであるグッドパッチもエンジニア数名で京都に来ています。 早速、今朝発表されたRubyの父Matzによる基調講演のレポートをお送りいたします。 Ruby3の柱 東京オリンピックの年にリリースすることを目指して開発されているRuby3には大きく3つの柱があります。 型(Typing) パフォーマンス(Performance) 並列処理(Concurrency) 今回の基調講演は、この中のひとつ「型」についての話です。 プログラミング言語の変遷 まずはじめに、プログラミング言語の「型」という側面についての振り返りがありました。 プログラミング言語にも時代によって流行りがあり、それは振り子のように繰り返されています。 かつては動的言語のSmalltalkやLispがあり、次に静的言語のJavaが流行し、JavaScriptRubyのような動的

  • Python と Ruby と typing - methaneのブログ

    うーん、structural subtypingとダックタイピングは同じものなんだろうか。— Yukihiro Matsumoto (@yukihiro_matz) 2016年9月8日 https://t.co/5Rv86piThC wikipediaによると似て非なる物のようですね。 https://t.co/VwIg39h5M0— INADA Naoki (@methane) 2016年9月8日 この話題について補足しておきます。なお、僕はTAPL脱落組なのであまり正確性は期待しないでください。 背景 Ruby Kaigi で Matz が Ruby3 に向けて考え中の静的型について話されたようです。 少し前から、 Python でも Guido が Dropbox での大量のコードベースを改善していくために type hinting がほしいということで PEP 484 を始めました

    Python と Ruby と typing - methaneのブログ
    gam-22
    gam-22 2016/09/10
    Structural Subtypingはこういうものだったのですね
  • Railsでbefore_filter/before_actionがアクションを中止する仕組みを読んでみる | TechRacho

    2013.08.06 Railsでbefore_filter/before_actionがアクションを中止する仕組みを読んでみる 大昔のRailsでは、before_filterでfalseを返すとそこでchainが終わる、とやっていた気がしますが、今はそういうコード見ないですよね。 Rails 4だとこんなノリでbefore_actionでredirectして はいおしまい、ってやりますよね。 class UsersController < ApplicationController before_action :my_authenticate_admin def my_authenticate_admin unless current_user.admin? redirect_to root_path end end end 当然、以後のbefore_actionやactionは実行さ

    Railsでbefore_filter/before_actionがアクションを中止する仕組みを読んでみる | TechRacho
    gam-22
    gam-22 2016/06/28
    すっきりしたー(Rails4でも変わってないことを期待) “なぜredirect_toするとそこで止まってアクションが実行されないのか、せっかくなので読んでみましょう”
  • Rubyで秒から「時:分:秒」を出力する方法 - 惰眠と論理と指揮棒と

    2014 - 07 - 11 Rubyで秒から「時:分:秒」を出力する方法 Ruby 「100」は「0時間1分40秒」ですね。 これどうやって求めるのが一番簡単なのん? やり方はたくさんあってどれがいいのかわからない。。。 とりあえずやってみて一番簡単だったものがコレ sec = 100 Time .at(sec).utc.strftime( " %X " ) => " 00:01:40 " 解説 Time.at Time .at( 100 ) 上記コードで生成されるのは 1970 - 01 - 01 09: 01 : 40 +0900 というTime オブジェクト 「+0900」で分かるようにTime オブジェクトの タイムゾーン は地方時となります。 なんで1970年1月1日なのかの説明は省きます。 utc Time .at( 100 ).utc 地方時になるのが嫌だったので、

    Rubyで秒から「時:分:秒」を出力する方法 - 惰眠と論理と指揮棒と
  • ソースコードの減らし方 - 基本的な考え方と10個の方法 - クラウドワークス エンジニアブログ

    ステップ数で評価が決まる現場では全く役に立たないテクニックではありますが、ソースコードの減らし方について紹介したいと思います。 開発Div. エンジニアのayasudaです。 2014年の夏にジョインし、会社名と同じサービス、クラウドワークス の開発に携わっています。 ご覧の通り、消したソースコードの方が多いので、ステップ数換算だとマイナスの働きしかしてませんね! 記事では、特に Ruby on Rails の運用されているプロダクトコードにおける、ソースコードの減らし方について紹介していこうと思います。 基的な考え方 ソースコードを減らすときの大原則は「ボーイスカウト・ルール - プログラマが知るべき97のこと」です。 普段、ソースコードを触るときに、一つでも良いので簡単な改善を入れる。これを積み重ねるのが大事です。 一度に一気に直そうとするのはあまり良くありません。大抵の場合、デグ

    ソースコードの減らし方 - 基本的な考え方と10個の方法 - クラウドワークス エンジニアブログ
  • RubyでMySQLに繋ぐためのruby-mysqlとmysql2 - たごもりすメモ

    このエントリは MySQL Casual Advent Calendar 2011 - MySQL Casual の10日目の記事です。 こんばんは。tagomorisです。さとしです。タゴモリスの s はさとしの s です(実話)。Twitterで #さとし というハッシュタグが流れるたび、ひそかにびくっとしてます。 RubyからMySQLに繋ぐときにどうするの、ととりあえず gem search -r mysql とかやると思います。そして大量にあれこれ出てきてどうすればいいんだ! という気分になると思います。そういう気分になったことがあるので、現状を簡単にまとめてみました。 ruby-mysql 昔からの定番ですね。作者は id:tmtms のとみたまさひろさん。rubygemsとか使われる前から Ruby/MySQL というライブラリ名で知られていました。Googleで検索するとト

    RubyでMySQLに繋ぐためのruby-mysqlとmysql2 - たごもりすメモ
    gam-22
    gam-22 2016/02/02
    "とりあえず gem search -r mysql とかやると思います。そして大量にあれこれ出てきてどうすればいいんだ! という気分になる"
  • ハッシュは頻繁に参照する値を最後に入れると高速 - まめめも

    明日から RubyKaigi なので、ちょっとした小ネタを一つ。 例えば、0 から 9999 までをハッシュに順に入れます。 h = {} 10000.times do |n| h[n] = true end このとき、h[9998] や h[9999] は、h[0] や h[1] より高速です。 どのくらい高速かというと、 1_000_000_000.times { h } # 40.8 sec (ループ自体の速度) 1_000_000_000.times { h[9999] } # 57.2 sec 1_000_000_000.times { h[0] } # 89.1 sech[0] は 89.1 - 40.8 = 48.3 nsec 、h[9999] は 57.2 - 40.8 = 16.4 nsec ということになります。なんと 3 倍も速い。*1 なぜこんなことが起きるのか ハ

    ハッシュは頻繁に参照する値を最後に入れると高速 - まめめも
    gam-22
    gam-22 2015/12/12
    “Ruby でこういう小手先の高速化とか考えるのは不毛だからやめた方がいい”
  • Ruby 2.2.0 Released

    Posted by naruse on 25 Dec 2014 We are pleased to announce the release of Ruby 2.2.0. Ruby 2.2 includes many new features and improvements for the increasingly diverse and expanding demands for Ruby. For example, Ruby’s Garbage Collector is now able to collect Symbol type objects. This reduces memory usage of Symbols; because GC was previously unable to collect them before 2.2. Since Rails 5.0 wil

    gam-22
    gam-22 2014/12/25
    今年ももうこんな季節か
  • Rubyでドキュメントを書く RDoc vs YARD vs TomDoc - { Blog not Updated }

    Rubyでドキュメント書くときは標準ライブラリで入ってるRDocを使う人が多いかもしれませんが他にもドキュメントのフォーマットがあるのでいろいろ比較してみた。 下記コードの詳細は https://github.com/natsumesou/ruby-doc こちらを御覧ください。 RDoc RDocは特にフォーマットというのが無いので良くも悪くも自由にかける(String)は自分で勝手につけただけで生成されたドキュメントでも文章として扱われるだけ。 # 人間を表すクラス class Person # - first_name - 名前 attr_reader :first_name # - last_name - 苗字 attr_reader :last_name # - gender - 性別 attr_reader :gender # - age - 年齢 attr_reader :a

    Rubyでドキュメントを書く RDoc vs YARD vs TomDoc - { Blog not Updated }
  • 分別のあるRubyモンキーパッチャーになるために

    Rubyのクラスはオープンです。つまりRubyのユーザが既存のクラスを開いて自由に実装を弄ることができるのです。組み込みクラスとてその例外ではありません。 既存のクラスを開いてメソッドを追加したり再定義したりすることを、業界用語で「モンキーパッチ」といいます。モンキーパッチという語には明らかに批判的・軽蔑的ニュアンスが含まれていますが、多くのRubyistはそれにひるむこと無く良くモンキーパッチします。何しろドアはいつも開いてるんですからねぇ。 るびおのモンキーパッチ モンキーパッチャー「るびお」は、製作中のライブラリで多次元配列の要素に頻繁にアクセスする必要が生じました。これには通常、Array#[]または#atを使って次のようにアクセスします。 irb> arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] irb> arr[1][2] => 6 irb> a

    gam-22
    gam-22 2014/12/07
    今更だけど refine ってこう使うのね
  • Rubyに型を付けるHaskellというgemを作ったヨ!

    2020/12/27追記 https://www.ruby-lang.org/ja/news/2020/12/25/ruby-3-0-0-released/ => Ruby3.0.0にRBSとTypeProfと用いた静的解析に対するソリューションが提供されました。 今後はこちらのエコシステムをガンガン盛り上げていきましょう💪 あいさつ P.S. 12/11 HaskellからRubypeにgemを変更しました こんにちは. 寒さが一段と厳しくなってきた事もありまして心を温めるGemを作りました. Rubyの振る舞いを汚染する事無く型保証の恩恵をゆるふわ受けられるgemです (型をつけるとか型保証という言葉をこの文脈ではメソッドの引数返り値のクラスを実行時にチェックするという意味で使っている.) 得体の知れないGemで抵抗感があるかもしれませんが、コード自体は50行以下の薄いGemなので気

    Rubyに型を付けるHaskellというgemを作ったヨ!
  • Rubyのmoduleをmix-inする際のincludeとextendの違いをシンプルな例で理解する

    Rubyのclassにmoduleをmix-inする場合に、moduleをclassにincludeした場合とclassをmoduleでextendした場合で何が違うのか? よく判らなくなるのでシンプルな実例でまとめます。 「モジュールがクラスメソッドではなく、インスタンスメソッドを定義しているとき、これらのインスタンスメソッドは、ほかのクラスにミックスインできる」(「プログラミング言語Ruby」261ページ)とあります。そして「モジュールをミックスインするための通常の方法は、Module.includeメソッドだが、Object.extendを使う方法もある」(同262ページ)となっています。includeとextendで何が違うの? となり、時どき理解の足りない書き方をしてNoMethodError: undefined method...のような例外をだしてしまうことがあります。そこ

  • 革命的に速いRubyアプリケーション・サーバー「Raptor」リリースへ | ソフトアンテナ

    革命的に速いとされるRuby用の新しいアプリケーション・サーバー「Raptor」のサイトが公開され期待を煽っています(Hacker News)。 公式サイトによると、RaptorはRailsやSinatraなどを動かすための新しいアプリケーション・サーバー。最適化されたHTTPエンジンにより従来のアプリケーションサーバーと比較して高速に動作し、Unicornの最大4倍、PumaとTorqueboxの最大2倍の速度で動作するとのこと。 現在まだ何もダウンロードできるものは公開されたおらず、パブリックベータ版のリリース日は2014年11月25日に設定されています。メールアドレスを登録しておくと、状態が更新されるか、あるいは第三者のレビューが公開されたときなどにメールで連絡してくれるようなので気になった方は登録してみてはいかがでしょうか。 ちなみに誰が開発されているかということに関しても「We

    革命的に速いRubyアプリケーション・サーバー「Raptor」リリースへ | ソフトアンテナ
    gam-22
    gam-22 2014/10/23
    ふーむ。これはなんだろう。
  • [Rails] STI(Single Table Inheritance)でコントローラも一つに纏める | DevelopersIO

    Rails で STI(Single Table Inheritance)を使った時の、コントローラの実装をどうするか?という事について書いてみたいと思います。 STI(単一テーブル継承)とは オブジェクト指向の基概念として、あるクラスを元にサブクラスを定義する継承があります。 この継承は、プログラミング言語ですとと予め機能が提供されていることが多いですが、 RDB ですとテーブル構成によって表現する場合があります。 *1 今回使う STI は、一つのテーブル内に継承関係にあるクラスのカラムを全て持ってしまう方法です。 例として Player クラスを継承した Footballer クラスと Cricketer クラスがあるとします。 親クラスに共通のプロパティ、子クラスがそれぞれのプロパティを持っていますが、これを STI で表現すると以下になります。 テーブルのレコードがどちらの型に

    [Rails] STI(Single Table Inheritance)でコントローラも一つに纏める | DevelopersIO
  • RubyKaigi 2日目まとめ #rubykaigi - くりにっき

    昨日に引き続き当日中にうp完了! 昼間電源休憩しつつある程度まとめていてよかった、、、、*1 会期中+αの感想エントリ Keynote: Coming soon... 「Coming soon...」がセッションタイトル 過去のRubyConfのkeynoteでしゃべったrubyの新機能(未来)に関して、どれだけ実現したか・どれくらい時間かかったかの振り返り rubyconf 2001からruby2.0のことを話していて実際にリリースしたのは10年後 -> { } のラムダ式の書き方は最初文句言われたが、いざ入れたら評判よかった。 他の人の印象を信じてはいけない 個人的にはlambdaがtypoしやすいのでアロー演算子の方をよく使ってる 実現率は 15/22 ≒ 68%。他の機能は言っただけで終わってる OSSコミュニティはサメのようなものなので泳ぎ続けなければ死んでしまう Ruby 3.

    RubyKaigi 2日目まとめ #rubykaigi - くりにっき
  • Ruby 2.1.0 以降のセマンティックバージョニングについて

    Posted by zzak on 21 Dec 2013 Translated by makimoto Ruby 2.1.0 以降、Semantic Versioning (日語訳) に寄せたバージョニングに移行することを決定しました。 Ruby に、より明確で適切なバージョニングスキーマを提供するため、われわれは以下のポリシーに段階的に移行します。 ポリシーの変更 このポリシーは、 ruby-lang.org の管理者である柴田博志 (@hsbt) の提案にもとづくものです。 バージョンスキーマ MAJOR: MINOR リリースで対応できない互換性のない変更がある場合に増加する。 特別なイベントのために予約される。 MINOR: クリスマスごとに増加する。 API レベルでの非互換がありえる。 TEENY: API 互換性を維持するセキュリティフィックスやバグフィックス。 2.1.

    gam-22
    gam-22 2014/09/06
    “MINOR: クリスマスごとに増加する。”
  • GitHub製Resqueを使用したRubyでのバックグラウンド処理(バッチ処理) - Masatomo Nakano Blog - Web開発を極める

    そこそこの規模のWebシステムになってくるとバックグランド処理(batch処理)は欠かせないものになってくる。メールの送信、データの日次、月次、年次処理、削除(フラグ)データのpurgeやバックアップ、等々いろいろな物が出てくる。 現在はBackgrounDRbを使っているが、いろいろといまいちなので今回Resqueを評価してみた。ちょっと触った段階での第一印象をメモ。 まず、バッチ処理系で評価のポイントになってくる部分はなんだろうかと考えてみると、なんと言っても見通しのよさと異常系の処理だと思う。画面系と違い、バッチ処理は「見えにくい」ところで実行されるので、その二つが特に大事になってくる。「知らないうちに止まっていました」では困るのがバッチ処理。 たとえば、 異常時の処理無視?管理者に通知?リトライ? 復旧処理タスクの削除(問題を修復後)リトライ 状態の監視いくつのJobが残っているか

    gam-22
    gam-22 2014/09/03
    バイト先で使う機会があったのでメモ。普通に使いやすかった。