アルゴリズム図鑑 絵で見てわかる26のアルゴリズム 作者:石田保輝,宮崎修一翔泳社Amazon アルゴリズム図鑑を眺めていて、二分ヒープ構造は優先度付きキューに使われることを知った。面白いなーと思うと同時に、そういえば二分ヒープ構造の実装をしたことがなく、あまり理解できていないことに気づいた。そこで簡単にRubyで実装をしてみたのでメモ。簡単なテストケースを作ったので多分合ってると思うけど、もしかしたらバグっているかも... 二分ヒープの詳細は二分ヒープ -Wikipediaも参考。 【2023/01/03 14:01追記】要素数が1の時に要素が空にならないバグがあったので修正しました。コメントありがとうございます。https://github.com/shibayu36/algorithms/commit/6c2ce588f7bc7fb890c6a560c7ab062c6f531a9a

この記事は Money Forward Engineering 2 Advent Calendar2022 18日目の投稿です。 こんにちは。マネーフォワード関西開発拠点でマネーフォワード クラウド会計Plus (以下会計Plus)のエンジニアをしているぽっけです。 この記事では、私が行った高速化について紹介します。 私は最近Railsアプリケーションの高速化を行っており、ある画面のレスポンスタイムを50%以上削減しました。そしてこの改善はRubyレベルの変更のみで達成しました。 この記事での「Rubyレベルの変更のみ」は、MySQLやRedis、WebAPIなどへのアクセスには全く手を入れず、Rubyのプロセスが消費する時間のみを変更した、ということを意図しています。MySQLなどへのアクセスは通常ボトルネックになりがちな箇所です。今回そこに手を入れずに高速化を達成できたのは、1つ
HELLO WORLD〜 はじめに こんにちは、永和システムマネジメントの自作CPUおじさん、はたけやまたかし( @htkymtks )です。 今回はRubyを使った小さなRISC-Vシミュレータの作り方をご紹介します(以前もシミュレータの記事を書いたのですが、シミュレータに大幅に手を入れたので、それに対応したHDリマスター版です) リポジトリ (今回ご紹介するシミュレータのリポジトリはこちら) thata / rv32sim https://github.com/thata/rv32simRISC-VとはRISC-VはCPUの命令セットアーキテクチャ(ISA)のひとつで、使用料のかからないオープンソースライセンスで提供されていることや、命令セットの美しさから最近注目を集めています。 仕様RISC-Vの仕様にはワード幅(32ビット、64ビット)や浮動小数点数サポートの有無など、いくつ

転職・求人情報サイトのtypeエンジニアtype スキル なぜソフトウエア後進国の日本で、Rubyは成功したのか? 生みの親・まつもとゆきひろが語った五つのポイント 2021.09.06 スキルRubyまつもとゆきひろ 日本発で世界的に使われているソフトウエアは、残念ながらそう多くはない。その数少ない成功例の一つが、プログラミング言語「Ruby」だ。Rubyによって開発された有名Webサービスは、日本だけでなく世界中に数多くある。 では、なぜRubyは成功できて、他の多くの日本のソフトウエアは成功することができなかったのか。2021年9月4日に開催された「typeエンジニア転職フェア ONLINE」では、Ruby開発者である、まつもとゆきひろさんに開発の背景や成功の要因を語ってもらった。 まつもとさんの経験に裏打ちされたメッセージは、新たなソフトウエアやサービスをつくろうとするエンジ

Matzことまつもとゆきひろといえばプログラミング言語Rubyの作者なのだが、技術的にはともかく政治的にはツイッターを見ていてとてもつらい。 「高度プロフェッショナル制度」について 高度なスキルを持つと自負し、高い裁量が欲しい私のような労働者を野党が目の敵にしてることはよく分かった。実に残念だ。— Yukihiro Matsumoto (@yukihiro_matz) March 1, 2018 「定額働かせ放題」とも呼ばれ、専門性も裁量性も低い業種への拡大が懸念される「高度プロフェッショナル制度」について、問題点を理解せず反対する野党を揶揄。 「IT 業界を苦しめたいか、生産性を高めるのを阻害したい勢力」について 軽減税率といい、改元といい、サマータイムといい、IT 業界を苦しめたいか、生産性を高めるのを阻害したい勢力が政治をコントロールしている陰謀論を信じたくなるな。— Yukihir

Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 【はじめに】自己紹介とご挨拶 こんにちは、@CPAKOといいます。 普段は公認会計士として監査法人というところで働いておりますが、ひょんなことからプログラミングを学んでいる趣味趣味エンジニアです。 今回がQiita初投稿となりますが、自分が実際に勉強をしていて、**「これが無料なの?」**と思った教材やハンズオンの一覧をまとめていきたいと思います。 基本的に興味が爆散した結果、デザインからフロント、サーバーサイド、インフラ、DB全部手を付けているので、取り留めが無いことをお許しください。 また、秘伝のたれのように継ぎ足し継ぎ足しで書いて

RMagick の ImageMagick 7 対応 作業をするにあたりWindows 環境でも簡単に使えるようにインストールまわりを昨年末くらいからやってました。備忘録がてら作業ログを残しておきます。Ruby のWindows 環境は 2 種類存在しております。RubyInstaller に代表される GCC を使用する MinGW 環境 ActiveScriptRuby のようにMicrosoft Visual Studio でビルドされた mswin 環境 MinGW 環境RubyInstaller からRuby+Devkit 2.6.0-1 をダウンロードしインストールします。RubyInstaller なのですが途中でメンテナーが代わりパッケージング方法が変わったのか、Ruby+Devkit 2.4.5-1 とそれ以前のバージョンとで挙動が違っていました。Fix
昨日、RubyのJITの性能改善のためのパッチを入れた。github.com JITすればするほどRailsが遅くなる問題Rubyの次期バージョンである2.6には、バイトコードをCのコードに変換した後、gcc/clangでコンパイルして.soファイルにしdlopenすることで生成コードのロードを行なう、MJITと呼ばれるJITコンパイラが入っているのだが、マージしたころのツイートにも書いていた通り、Railsで使うとより多くのメソッドがJITされるほど遅くなってしまうという問題があった。 結果、"MJIT slows downRails applications"というチケットが報告されることとなり、昨日までの5か月の間閉じることができなかった。 元の構成 対策を始める前のMJITは大雑把に言うとこういう感じだった。メソッド1つごとに1つの.soファイルが作られ、ロードされる。 無制

はじめに こんにちは。ゆうすけです。 僕はRailsエンジニアとして内定後、勤務が始まるまでの1ヶ月で技術書13冊(金額にして3.4万円(汗))を読んできました。 内定先のマネージャーにおすすめされた本も多く、Railsエンジニアに転職を検討されている方、実務レベルの知識を習得したいという方の参考になればと思い、1ヶ月で読んできた本を紹介します。 無料でPDFが公開されているものもあるので、是非参考にしてみてください。 当然ですが1ヶ月で全てを理解出来た訳ではなく、今後繰り返し読んでいこうと思っているので、自分の現状の備忘も含めて書きました。 はじめに 読んだ本 基礎知識 Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus) プログラミング一般 プリンシプル オブ プログラミング3年目までに身につけたい一生役立つ101の原理原則 オブジェ

2017年12月25日、プログラミング言語Rubyの新バージョンである「Ruby 2.5」が公開された。Rubyの新バージョンは例年、クリスマスにリリースされる。翌日の26日には「Ruby 2.5リリースパーティー」が開かれ、Rubyの開発者(コミッター)がRuby 2.5の改善点を披露した。Ruby 2.5の最大の特徴は処理の高速化。様々な箇所が高速化のために改良されている。また、2020年のリリースを目指している「Ruby 3.0」の機能を実現するための準備も同時に実施しているという。 冒頭ではRubyのオリジナルの開発者であるまつもとゆきひろ氏がテレビ電話で参加。開発がリリースのギリギリまで続いてしまった点を反省した。「せめて11月までにまとめておくべきだった」(同氏)。また、クリスマスリリースはプレゼントという意味があるものの、家族を持つコミッターが増えてきたため、「少し前の22

前提知識Rails アプリにおいて、テーブルの追加やカラムの追加は簡単なものの、カラムの削除やリネームは慎重に行う必要がある。たとえアプリからそのカラムを参照してないとしても、いきなりカラムを削除するとエラーになる可能性が大いにある。 というのもRails にはスキーマキャッシュというものがあり、テーブルのカラム情報をモデルがキャッシュしているからだ。このキャッシュはたとえばいわゆる N+1 クエリ問題を避けるために includes (eager_load) するときに参照される。 SELECT 句で t0_r0 のような機械的に別名が振られるようなクエリを見たことがあるRailsエンジニアは多いと思う。 機械的に全カラムを取得するためにスキーマキャッシュを利用しているため、このようなクエリが実行されてる中でカラムを削除したりリネームしたりすると、スキーマキャッシュをもとに並べら
Rubyのリファクタリングでオブジェクト指向設計に沿った美しいコードになるまでの方法を書いた。 元ネタはこちらのBen Orenstein氏のリファクタリングで、そこに私なりの解説とコードを加えた。かなり追加したのでOrenstein氏の原型とはだいぶ違う箇所もあるがオブジェクト指向設計とリファクタリングに対する考え方は同じなはず。github.com 全3回に渡ってリファクタリングする。 「イケてない」から「マシ」にするためのリファクタリング 「マシ」から「いいね」にするためのリファクタリング 「いいね」から「スゲーいいね」にするためのリファクタリング 今回は1.の「イケてない」から「マシ」にするためのリファクタリング。 イケてないコード 以下にあるのがなんかイケてないコード。一応動くし、テストもパスしている。でもそのコード品質は平均よりちょっと下。 範囲を指定してその間の売上の総合計

Ruby onRails を開発する環境を Ubuntu上に構築するためのガイダンスです。 特にEclipseにおけるシングルステップ デバッギング環境の構築を目標としたガイダンスです。 3日以上悩みました。そして、一端は投げ出しました。その時の環境はUbuntu12.04でした。もしかすると違うバージョンではうまく行くのかもしれないと思い、思い切ってUbuntu13.10をクリーンインストールしてみた。 最初はうまくいかず、戸惑ったが、RubyMineをインストールしたあと、Eclipseを起動してみるとなんと設定したブレークポイントでブレイクするではないか!!あまりに嬉しくて小躍りしてしまった。 その後。じゃあ Ubuntu12.04でも Ubuntu14.04(dailybuild)でもデバッグできるんじゃねーの??と思い、あれこれ試行錯誤してみたら、どのバージョンでもEclip
RailsでCSV/Excel/OpenOfficeのアップロード機能の実装方法について説明します。 動作確認Ruby 2.1Rails 4.1 Roo 1.13.2 目次Railsプロジェクトの作成CSVのインポート機能の実装Excelのインポート機能の実装 1.Railsプロジェクトの作成まず、Raislのプロジェクトを作成します。rails newcsv_import_test cdcsv_import_testそして、必要なコントローラー、ビュー、モデルを作成します。rails g controller Products indexrails g model Product name:string price:integer released_on:date rakedb:migrateCSV出力するためのデータを作成します。 #db/seeds.rb

第1章 字句解析と構文解析 第2章 コンパイル 第3章Rubyはどのようにコードを実行するか 第4章 制御構造とメソッドディスパッチ 第5章 オブジェクトとクラス 第6章 メソッド探索と定数探索 第7章 ハッシュテーブル:Ruby内部の働き者 第8章 Lispから借りてきたアイデア 第9章 メタプログラミング 第10章JRuby:JVM上のRuby 第11章 Rubinius:Rubyで実装されたRuby 第12章 MRI・JRuby・RubiniusにおけるGC 付録A さらにそのほかのRuby仮想マシン 日本語版序文 序文 謝辞 はじめに 対象読者 検証にRubyを使う どのRuby処理系なの?本書の構成 第1章 字句解析と構文解析 字句解析:Rubyを構成する言葉 parser_yylex 関数 実験1-1:Ripperを使ってさまざまなRubyスクリプトを字句解析する 構文解

インフラストラクチャー部の成田(@mirakui)です。Rails の OR マッパーである ActiveRecord ですが、みなさんどのように運用していますか? ActiveRecord を使うと、SQL を直接扱うことなく、抽象化された表現でRDB にアクセスできるので、アプリケーションの開発効率という観点ではメリットが大きいです。 一方で、 ActiveRecord が駆使されているアプリケーションをサーバに配置してプロダクションとして運用する立場からすると、いくつかの問題に突き当たります。 まずはクックパッド本体アプリケーションにおける、最新の rake stats をご覧ください。 +----------------------+-------+-------+---------+---------+-----+-------+ | Name |Lines | LOC
昨日、人生の転機 -Rails で行こう! の中で「ソフトウェア作りが嫌いだ」と言い切ってしまったことが引っかかっている。 私の職業生活でもっとも多くの時間を注いだのがソフトウェア作りだ。その作業に対して、実際のところ、好きとか嫌いとか一言で割り切れるはずがない。複雑な感情を持っているというのが正直なところだ。 私の職業プログラマのとしての最大の欠点は、ソースコードに対して強い美意識を持たずにいられなかったところだろう。生来の生真面目な性格が災いし、私の基準で美しいとはいえないソースコードを敵視しすぎた。 簡単な例を挙げよう。 うるう年を計算するアルゴリズムを考えてみる。うるう年とは、「4で割り切れて、かつ100で割り切れない年。ただし、400で割り切れたら、やはりうるう年」である。 def leap_year?(y) (y % 4 == 0) && ((y % 100 != 0) |
1リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く