タグ

Rubyに関するakiramazのブックマーク (27)

  • Golangの defer をRubyでも使いたい - たごもりすメモ

    前にRubyでtry-with-resourcesが使いたいという話を書いてそのときにリリースしたgemもあるが、人類の安全に・便利にリソースを解放したいという欲求には際限がない。 try-with-resources は便利なんだけど欠点がないわけではなくて、リソースの確保と解放を一ヶ所でまとめてやらないとネストが深くなる。複数箇所に分けて書くならネストも2段になってしまう。 これはこれで整理されたコードを書く圧力になるので悪くない面もあるんだけど、とはいえもうちょっと自由にやりたい、いい方法は無いもんか、という話。 defer ある。Golangの defer が便利そう。defer foobar って書いとくと、そのスコープを外れるときに自動的に foobar の内容が実行される。あるスコープのどこに何度書いてもいい。これは便利。 # GolangのdeferのままRubyにもってき

    Golangの defer をRubyでも使いたい - たごもりすメモ
  • Ruby誕生25周年を祝うイベント「Ruby25」開催。まつもと氏にサプライズでお嬢様ふたりから花束贈呈

    まつもと氏「これまでたくさんのRubyのイベントがありましたが、私自身が開催しようと言ったことはありませんでした。ただ、Rubyの4分の1世紀はエポックメイキングなことだと思ったので、やってみたいねと言ってみたら、あれよあれよと立派なイベントになり、大変ありがたく思っています」 「ソフトウェアの誕生とはなんでしょう? ソフトウェアには物理的実体はない、概念上の存在です。じゃあ、Rubyはいつからあるのか? 私の中でRubyはいつ生まれたのかと考えると、おそらく、Rubyという概念が生まれたとき、それは名前が重要なので、Rubyという名前が生まれたときではないかと思います。 私は昔からプログラミング言語に関心があって、とうとうプログラミング言語を作ろうと考えたときに、会社の先輩とどんな名前にしようかと相談しました。名前というのは重要で、名前をつけた日こそがRubyの生まれた日ではないかと思い

    Ruby誕生25周年を祝うイベント「Ruby25」開催。まつもと氏にサプライズでお嬢様ふたりから花束贈呈
  • コードを書くのは好きだけどインフラ弱いって人は、まずItamaeを触ってみるといいと思う - Speee DEVELOPER BLOG

    概要 はじめまして、17 新卒エンジニアの中嶋です。 イエウール のサーバサイドの開発を行っています。 コードを書くのは好きだけど、インフラ・ミドルウェア系は弱い感じのエンジニアです。 これまで趣味では、Heroku や Elastic Beanstalk でシュッとデプロイして済ましていたので、AWS、ネットワーク、ミドルウェアあたりの知識が皆無でした。 先日、イエウールのホスティング環境が、IDCFrontier から AWS へ移行しました。 tech.speee.jp このようなインフラ移行に関わる機会は、そう多くあることではないので、これに便乗してインフラにちゃんと触れてみようと思いました。 そこで、少しでもインフラに近づくべく、社内で実績のあったプロビジョニングツール Itamae を使って、イエウールのサーバ構成の一部を、できる範囲でコード化しました。 結果、コードを書くのは

    コードを書くのは好きだけどインフラ弱いって人は、まずItamaeを触ってみるといいと思う - Speee DEVELOPER BLOG
  • 最近のruby-core (2017年1月) - Money Forward Developers Blog

    こんにちは。卜部です。最近のPython-devが始まりましたね。すごい。 こちらの連載は先月はお休みしてしまったのですが、引き続き頑張ります。 ruby-coreというRuby体の開発の議論がされているメーリングリストで、最近興味深かったトピックを紹介していきます。 最近のruby-core (2016年11月) 最近のruby-core (2016年10月) 最近のruby-core (2016年9月) 最近のruby-core (2016年7月) 最近のruby-core (2016年6月) 最近のruby-core (2016年4月) 最近のruby-core (2016年3月) 最近のruby-core (2016年2月) [#12852] URI.parse can't handle non-ascii URIs Railsがよく ?utf8=✓ とかいうクエリをつけてきます

    最近のruby-core (2017年1月) - Money Forward Developers Blog
    akiramaz
    akiramaz 2017/02/02
    19年もののバグ
  • 静的解析ツール「RubyCritic」のUIが良くなっていたので紹介したいです! - パラボラアンテナと星の日記

    この記事は feedforce Advent Calendar 2016 - Adventar の2日目の記事です。 1日目は 源義経のシンプルな考え方が好き - Marketing book でした。良い話だ。(ちなみに大河ドラマが平清盛だった年は、我が家では後白河院の評価が高かったです。懐かしい。) RubyCriticのご紹介 rubyエンジニアなのでrubyのことを書きます。 RubyCriticはrubyコードを静的解析するツールです。rubygemで提供されています。 単純な使い方としては、$ gem install rubycritic するなりbundler使うなりしてインストールし、 $ rubycritic . を実行します。$ rubycritic ./app ./lib のように、指定のディレクトリだけを対象にして実行することもできます。 実行すると./tmp/ru

    静的解析ツール「RubyCritic」のUIが良くなっていたので紹介したいです! - パラボラアンテナと星の日記
  • ISUCON6 オンライン予選に出て惨敗してきました。 - 日頃の行い

    9/17(土) にISUCON6の予選に出てきました。 isucon.net 最終結果は0点です。ただただ悲しいです。 予選前に3年目で選行けないなんてエンジニアじゃないとか言いましたが、 生きていて大変申し訳ないです(´;ω;`)ウッ… 僕らのチームのピークは一番最初に回したベンチが4000点弱くらい行って一瞬トップ10に載ったことでしょう。 チームメンバー チーム名は dark で由来はコミュニティ名からです。 メンバーはそのコミュニティにいるhoto17296とjp_taku2でした。 来年こそ・・・ 方針とかやったこととか ちゃんと計測する 去年ここが甘かった 今年は出来た気がする 頻繁に打つコマンドはMakefileに書く 2回くらい打ったら追加してました この辺も去年同様でよかった 使用言語はRuby 初めjsで行こうとしたんですが、starをつける所がバグってたっぽい?ので

    ISUCON6 オンライン予選に出て惨敗してきました。 - 日頃の行い
  • Ruby超入門(前編)

    こんにちは。 この連載では、ちょっと変わったRuby入門を書いていきます。 想定読者は、Rubyを学びたいプログラミング初心者です。 Ruby以外の言語でプログラミングしたことがあると理解がはかどると思いますが、 Rubyを知らなくてもわかるように、なるべく丁寧に説明していくつもりです。 Rubyをある程度知っている読者には、最初の数回は退屈かもしれませんが、 回を重ねていくにつれ、より深くRubyを知ることができるはずです。 Rubyとは? Rubyは「プログラミング言語」です。 プログラミング言語とは、コンピュータにやらせたい仕事を書くための言語です。 つまり、Rubyを覚えて、Rubyでコンピュータへの指示を書けば、 コンピュータはその指示を実行してくれます。 この指示書のことを「プログラム」と言い、特にRubyで書かれたプログラムを「Rubyプログラム」と言います。 ところで、Ru

    Ruby超入門(前編)
  • Rubyを2.0から2.3にバージョンアップした効果とか - トレタ開発者ブログ

    インフラをチョメチョメしている佐野です。今日はRubyを現最新バージョンの2.3.1にアップデートしたのでその効果について書きます(2.0、とっくにEOLですしね...)。gemのバージョンアップはserizawaニキがやってくれました。結論から言いますと、 CPU使用率が劇的に下がり、メモリ使用率が少し上がった。 サーバ台数削減できる。 です。 CPU 9/6の昼過ぎくらいに2.3に切り替えたのですがそれ以降、CPUが下がっていることがわかります。 メモリ メモリについては使用率が上がっています。 2.3 2.0 何が使っているのかというと、Ruby2.3なプロセスのメモリ使用量が全体的に増えました。次のtopコマンドは左ペインが2.3、右ペインが2.0なのですが、rubyないしbundleとなっているものがunicorn, sidekiqになります。これら全般的に2.3の方がメモリ使用

    Rubyを2.0から2.3にバージョンアップした効果とか - トレタ開発者ブログ
  • 可変性の回避 ― Rubyへの関数型プログラミングスタイルの適用 | POSTD

    稿では、関数型プログラミングのコンセプトを実用的な方法でRubyのコードに盛り込む方法について紹介します。これは、私が「関数型プログラミングのスタイル」と呼んでいるものです。 私が言う「実用的」とは、関数型プログラミングのスタイルを取り入れた後もなお、コードの見た目や印象にRubyの特徴が残っていることを意味します。Rubyは、Haskellではありませんし、Haskellであるべきでもありません。考え方としては、この言語の性質を 利用しよう とするものであって、それに反することをするわけではないのです。出来上がったコードは、Rubyユーザにとって簡単に理解できるものであるべきです。うまくいけば、使い慣れているものよりも簡単と感じていただけるはずです。 では、可変性を回避する利点、方法、欠点、そして可変性の回避が適切ではないケースについて見ていきましょう。 なぜ可変性を回避するべきなのか

    可変性の回避 ― Rubyへの関数型プログラミングスタイルの適用 | POSTD
  • mrubyでテキストエディタ書いてる - スペクトラム

    大体動くようになってきたので公開。 github.com きっかけは、まず最初にkiloがあった。 github.com kiloはredis作者が作った、C言語で書かれた超ミニマムなテキストエディタだ。*1 「このコードを読めば、ベーシックなテキストエディタの実装方法が分かるはず」 と思って実装を読み、大体わかったので試しにRubyで書いてみるかとはじめてみたのが始まりだった。 そのうち「mrubyでも動くようにしてみるか〜」と思って、 必要そうなmruby-io-consoleを書いた。 というわけで、riloはkiloを参考にして、rubyでもmrubyでも動く(ように今のところなっている)超ミニマムなテキストエディタ。という感じだ。 今後の展望は ワンバイナリで動くようにする riloはriloで書く 対応プラットフォームを増やす カラースキーマをプラグインで書けるようにする vi

    mrubyでテキストエディタ書いてる - スペクトラム
  • Rubyのリファクタリングでイケてないコードを美しいオブジェクト指向設計のコードへ改良するための方法 - その1 - ベルリンのITスタートアップで働くジャバ・ザ・ハットリの日記

    Rubyのリファクタリングでオブジェクト指向設計に沿った美しいコードになるまでの方法を書いた。 元ネタはこちらのBen Orenstein氏のリファクタリングで、そこに私なりの解説とコードを加えた。かなり追加したのでOrenstein氏の原型とはだいぶ違う箇所もあるがオブジェクト指向設計とリファクタリングに対する考え方は同じなはず。 github.com 全3回に渡ってリファクタリングする。 「イケてない」から「マシ」にするためのリファクタリング 「マシ」から「いいね」にするためのリファクタリング 「いいね」から「スゲーいいね」にするためのリファクタリング 今回は1.の「イケてない」から「マシ」にするためのリファクタリング。 イケてないコード 以下にあるのがなんかイケてないコード。一応動くし、テストもパスしている。でもそのコード品質は平均よりちょっと下。 範囲を指定してその間の売上の総合計

    Rubyのリファクタリングでイケてないコードを美しいオブジェクト指向設計のコードへ改良するための方法 - その1 - ベルリンのITスタートアップで働くジャバ・ザ・ハットリの日記
  • 漢数字が数字順にソートされない理由を調べてみた - give IT a try

    はじめに:「なぜ漢数字は数字順に並ばない!?」 先日、こんなツイートをしたところ、結構たくさんの人にリツイートされました。(執筆時点で50件以上) 「漢数字はソートしても数字順に並ばない」という事実を生まれて初めて知った。まさかのサプライズ。 pic.twitter.com/Eqx3ltIfHs— Junichi Ito (伊藤淳一) (@jnchito) 2014年11月27日 「なぜ漢数字は数字順に並ばないのか」という問いに対して、表面的な回答をするなら「数字順に並ばないのは、数字の大きさではなく文字コード順でソートされているから」ということになります。 いや、もちろんそれはわかってるんです。 問題は「そもそもなんで数字順に文字コードを振らなかったの!?」ということです。 感覚的には「一郎、二郎、三郎」って並んでほしいじゃないですか。でも、プログラム上でソートすると「一郎、三郎、二郎」

    漢数字が数字順にソートされない理由を調べてみた - give IT a try
  • Rubyのチートシート / アクティブサポート

    Railsで使いまくりActive Supportなので、そんなにまとめがいが無いし、沢山あるのでまとめられないけれど、代表的なモノをとりあえずまとめておく。 blank?やpresent?やtryなんかは省略する。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

    Rubyのチートシート / アクティブサポート
  • NHK 番組表 API を触る為の Ruby クライアント作った - Kōenji

    NHK 番組表 API が公開されたので RubyAPI ライブラリを作った インストール 下記コマンドでインストール出来る gem install nhk_program 使い方 こんな感じで使える client = NHKProgram.new(api_key: 'YOUR_API_KEY') # 明日のNHK総合1の番組表取得 data = client.list('130', 'g1', Date.today + 1) # 違う書き方 # data = client.list('東京', 'NHK総合1', :tomorrow) data.list.g1.each do |program| # 何かする end # 明日のNHK総合1のアニメの番組表取得 data = client.genre('130', 'g1', '0700', Date.today + 1) # 違う

    NHK 番組表 API を触る為の Ruby クライアント作った - Kōenji
  • Rubyのチートシート 変数 / クラス / モジュール

    Rubyをさわり始めた時に戸惑ったインスタンス変数やクラスインスタンス変数なんかのためのチートシート。変数、クラス、モジュールの使い方についてざっとまとめてみた。RailsでGemばっかり使ってると忘れるんだよなー。 登場人物はこんな感じです。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 9

    Rubyのチートシート 変数 / クラス / モジュール
  • Ruby言語仕様、メタプログラミング【パーフェクトRuby】

    GWでまとまった時間をとれているので、『パーフェクト Ruby』を久々に読み直しています。Rubyを深く勉強したいと思った時に、それに答えてくれるすばらしいだとあらためて思いました! この記事は「Part2言語仕様、Part3メタプログラミング」を読んでいる中で忘れたくない部分を備忘録メモしただけの記事です。 (05-10 17:30) メタプログラミング再勉強 catch :triple_loop do loop do puts 'one' loop do puts 'two' loop do puts 'three' throw :triple_loop end end end end #=> one two three と出力して終了

    Ruby言語仕様、メタプログラミング【パーフェクトRuby】
  • Charming Python: Functional programming in Python, Part 3

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    Charming Python: Functional programming in Python, Part 3
  • 新MacBook ProにインストールしたCUIアプリ

    MacBook ProにインストールしたCUIアプリ 新MacBook ProにインストールしたMacアプリ24に続いて、インストールしたCUIアプリもご紹介。 Homebrew Mac用のパッケージ管理ソフト「Homebrew」。ターミナルから以下のコマンドを入力するとインストールできます。Gitがインストールされてないとインストールできないと思うので、事前にXcodeをインストールしておきましょう。(Homebrewのインストール中にコマンドラインツールのインストール画面が表示されると思います。) ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)" インストール後に以下のコマンドでインストールされたバージョンが確認できます。 brew -v rbenv Rubyのバージョン管理ソフト「

    新MacBook ProにインストールしたCUIアプリ
  • markdown->TeXの変換だけで卒論を仕上げるのに便利だったツール10個まとめ - mizchi's blog

    卒論書き上がったので環境を後続の人類のためにどうやって作ったかメモっておく。 環境はMacだったけどMacTeX以外たぶんLinuxでもいける。その指導教員に入れられたmacportsのTeXTeXShopを窓から投げ捨てろ。というのが要旨。 MacTeX MacTeX - TeX Users Group http://tug.org/mactex/ 2014年において他の環境を入れる必然性は殆ど無い。これ一。 iconv この時代sjisを扱うのは人生をムダにするだけなので、研究室の秘伝タレたるtexもまずutf8に変換。 その後 ¥ を \ に置換するのは必要だったけどオプションでどうにかなるのかもしれない。 iconv -s -f SHIFT_JIS -t UTF-8 hoge.sty > hoge.utf8.sty pandoc markdowntexに変換できるツール。革命

    markdown->TeXの変換だけで卒論を仕上げるのに便利だったツール10個まとめ - mizchi's blog
  • メタプログラミングをして割に合うかの判断基準:処理を1箇所に局所化できるか - 2014-01-16 - ククログ

    毎日他の人のコミットをながめる文化で生活していると、理由は浮かばないけど「ん?このコミットはなんか気になる」と感じるようになります。それは、新しいことを知ることができたコミットだったり、真似したくなるようなコードが入っているコミットだったり、なんかまずそうな気がするコミットだったり、様々です。 「ん?」と感じてコミットを見直してみても、何が気になったか自分でもすぐにわからない場合があります。そんなとき、気になったことをコミットした人に伝えるために、コミットへのコメントをまとめ始めます。「コミットした人に伝えるため」というように、他の人に伝えようとすることがポイントです。他の人に伝えるためにまとめようとすると、思いの外なにが気になったかまとまるものです。 今回は、メタプログラミングを使ってコードを整理したコミットで「ん?」と感じたときのことについて紹介します。このおかげで「メタプログラミング

    メタプログラミングをして割に合うかの判断基準:処理を1箇所に局所化できるか - 2014-01-16 - ククログ