ブックマーク / techracho.bpsinc.jp (17)

  • CPUキャッシュがGoのコードに与える影響(翻訳)|TechRacho by BPS株式会社

    繰り返しますが、正確な図はプロセッサモデルによって異なります。ここでは見積もりのため、以下の目安で考えます。メインメモリのアクセスに60ns(ナノ秒)かかり、L1キャッシュへのアクセス速度はその約50倍高速だとします。 さて、プロセッサの世界には「参照の局所性(locality of reference)」と呼ばれる重要な概念があります。プロセッサがメモリ上の特定の場所にアクセスするとき、以下のように予測を立てます。 近い将来、メモリ上の同じ場所にアクセスする可能性が非常に高い これは「時間的局所性(temporal locality)の法則」です 近い将来、メモリ上のその場所からごく近い場所にアクセスする可能性が非常に高い これは「空間的局所性(spatial locality)の法則」です CPUにキャッシュが存在する理由のひとつが、この時間的局所性です。では空間的局所性を高めるにはど

    CPUキャッシュがGoのコードに与える影響(翻訳)|TechRacho by BPS株式会社
    nishitki
    nishitki 2020/06/24
  • ruby-packerでRubyコードをシングルバイナリにコンパイルしてみた

    ruby-packerとは リポジトリ: pmq20/ruby-packer: Packing your Ruby application into a single executable. サイト: Enclose.IO: Compiling your application into a single executable -- ここにはRuby以外にもNode.js Packerなども置かれています @pmq20さん作のruby-packerは、Rubyコードをシングルバイナリに変換して、Rubyがない環境でも実行できるようにするコンバーターです。 Evil Martiansのdipツール↓にも、ruby-packerでビルドした各種シングルバイナリ版がありますので実績はありますね。なおmacOS向けのdipのバイナリサイズは14MBでした。 docker-composeを便利にする

    ruby-packerでRubyコードをシングルバイナリにコンパイルしてみた
    nishitki
    nishitki 2020/06/05
  • 乱数について本気出して考えてみる|TechRacho by BPS株式会社

    プログラミングをやっていると、様々な乱数に出会います。乱数に関しては大勢の研究者が色々な研究結果を出しているため、種類も増え、いったいどれを使えばいいのかと悩む原因にもなります。 大勢が研究し利用している分野ですから、私以外でも大勢が乱数に関する記事を書いているため、あえて新しい記事を書く価値は高くないかもしれません。まあ、既に理解している人はここで記事を閉じるか、暇つぶし程度の感覚で読んでいただくと良いかと思います。 真乱数と疑似乱数 プログラミングの世界の中でいわゆる "乱数" として扱われることが多いのは擬似乱数です。疑似、と付くからには、これは実のところ乱数ではないと言えます。とは言え、擬似乱数を乱数でないと言ってしまうと話が終わってしまうので、疑似乱数を含む乱数を広義の乱数とします。この記事で扱うのは広義の乱数です。逆に、狭義の乱数、物の乱数は真乱数と言います。 物と言いまし

    乱数について本気出して考えてみる|TechRacho by BPS株式会社
    nishitki
    nishitki 2019/12/26
  • Gitで巨大プロジェクトを扱うときに少し便利なupdate-ref|TechRacho by BPS株式会社

    ビルドに時間がかかる(数十分~数時間以上)プロジェクトを扱うときに役立つかもしれない、Gitの小ネタです。 Gitには git help しても出てこない( git help -a すれば出る)便利なコマンドがたくさんあり(※)、そのうちの1つ update-ref のご紹介です。 ※他には例えば update-index --assume-unchanged なども有名ですね。 どんなときに欲しくなるか こんな感じの、あるヘッダファイルに多数のソースファイルが依存するプロジェクトがあったとします。 repos |- common.hpp |- source1.cpp |- source2.cpp |- source3.cpp |- source4.cpp |- source5.cpp |- ... まずは master ブランチにいます。 $ git status On branch m

    Gitで巨大プロジェクトを扱うときに少し便利なupdate-ref|TechRacho by BPS株式会社
    nishitki
    nishitki 2019/09/28
  • 楕円曲線暗号アルゴリズムを理解する|TechRacho by BPS株式会社

    お久しぶりです。yoshiです。みなさん、夏を満喫していますか? 私は溶けそうです。日の夏はとってもあつい。 覚えている方がいるかどうかは分かりませんが、以前私はRSA公開鍵暗号アルゴリズムを理解するという記事を書きました。今回はその続編(?)です。 楕円曲線について 楕円曲線、という言葉を事前知識無しで見ると、 多分こんな画像が脳裏に浮かぶと思います。違います。 楕円曲線の楕円は楕円積分から現れた言葉で、楕円積分は文字通り楕円の弧長などを求める方法なので全くの無関係とは言えませんが、少なくとも楕円曲線と楕円は別の図形です。楕円のことは忘れましょう。 実際の楕円曲線は、例を示すと以下のような曲線です。 一般化すると (ただし または ) という式で表されるこのような曲線をワイエルシュトラス型楕円曲線と呼びます。ワイエルシュトラス型、と付いているのは他のパターンもあるからで、 こんな形の楕

    楕円曲線暗号アルゴリズムを理解する|TechRacho by BPS株式会社
    nishitki
    nishitki 2019/08/17
  • モダンな開発用ターミナル環境のためのツール紹介

    エンジニアのjhondaです。入社して1年が過ぎました。 ターミナル上での開発作業が好きなので開発を快適に進めるために常日頃から使っているツールやエディタを抜粋して紹介します。 この手のツールは組み合わせることで更に便利になるので、組み合わせを含めた紹介となります。 筆者の会社での開発環境はMacですが、プライベートマシンのLinux上でも同じものを使えています。 筆者のターミナル環境は Alacritty + tmux です。 Alacritty Rust製ターミナルエミュレータ。GPUを使うので描画が高速。 https://github.com/jwilm/alacritty 同リポジトリより Rust製だからという理由なので趣味です。でもたしかに速い気がします。 tmux 言わずとしれた仮想端末エミュレータ。 https://github.com/tmux/tmux たいして使いこな

    モダンな開発用ターミナル環境のためのツール紹介
    nishitki
    nishitki 2018/12/14
  • はじめての正規表現とベストプラクティス#1: 基本となる8つの正規表現

    更新履歴 2018/10/11: 初版公開 2020/11/12: 追記・更新 1: 基となる8つの正規表現(記事) 2: 正規表現とは何か/ワイルドカードとの違い 3: 冒頭/末尾にマッチするメタ文字とセキュリティ、文字セットの否定と範囲 4: 先読みと後読みを極める 5(特別編)|と部分マッチのワナ 6: 文字セットのショートハンド 7: Unicode文字ポイントとUnicode文字クラス 8: 対象の構造を意識した「適度にDRYな」書き方 9: .*や.+がバックトラックで不利な理由 10: 危険な「Catastrophic Backtracking」前編 こんにちは、hachi8833です。 BPS社内勉強会で発表したスライドを元に、正規表現を学ぶときに最初に押さえておきたい基的なポイントを入門用にまとめました。説明では主にRubyの正規表現を使っていますが、特定の正規表現

    はじめての正規表現とベストプラクティス#1: 基本となる8つの正規表現
    nishitki
    nishitki 2018/10/15
  • VimではじめるTerminalモード|TechRacho by BPS株式会社

    terminalモードとは? :terminal で始まる新しいモード 世の中の多くのエディタがモードはインサートモード一つで十分と証明しつつあるなか追加された2つのモード vim8.1 から搭載されたエディタとコマンドの夢の懸け橋 注: vim8だとバグるそうです 何ができるの? 1. コマンドの出力結果をコピーできる! terminalウィンドウで Ctrl-w N でterminalの内容をテキストとして扱える(編集不可) このモードを 端末ノーマルモード と呼ぶ! 端末ノーマルモードでは普段と同じ操作でterminalウインドウの内容をコピーできる!便利! 2. 端末ノーマルモードからの脱出 端末ノーマルモードを終了するには i a などインサートモードに入るコマンドを打つだけ このモードを 端末ジョブモード と呼ぶ! 3. エディタで加工した内容をterminalにペーストできる

    VimではじめるTerminalモード|TechRacho by BPS株式会社
    nishitki
    nishitki 2018/09/17
  • Rails: Puma/Unicorn/Passengerの効率を最大化する設定(翻訳)|TechRacho by BPS株式会社

    まとめ: アプリのサーバー設定はRuby Webアプリのスループットやコストあたりのパフォーマンスに大きな影響を与えます。設定の中でも最も重要なものについて解説します(2846 word、13分) RubyのWebアプリサーバーは、ある意味で自動車のガソリンに似ています。よいものを使ってもそれ以上速くなりませんが、粗悪なものを使えば止まってしまいます。実際にはアプリサーバーでアプリを著しく高速化することはできません。どのサーバーもだいたい同じようなものであり、取っ替え引っ替えしたところでスループットやレスポンスタイムが向上するわけではありません。しかしダメな設定を使ったりサーバーで設定ミスしたりすれば、たちまち自分の足を撃ち抜く結果になります。クライアントのアプリでよく見かける問題のひとつがこれです。 記事では、3つの主要なRuby アプリサーバーであるPuma、Unicorn、Pass

    Rails: Puma/Unicorn/Passengerの効率を最大化する設定(翻訳)|TechRacho by BPS株式会社
    nishitki
    nishitki 2018/06/04
  • Rails: RedisキャッシュとRackミドルウェアでパフォーマンスを改善(翻訳)|TechRacho by BPS株式会社

    概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Optimize Rails performance bottleneck with Redis caching and Rack middleware 原文公開日: 2018/02/05 著者: Paweł Urbanek パレートの法則によると(少々誇張あり)、Railsアプリにおけるパフォーマンス問題の95%は、エンドポイントのわずか5%で発生していることになります。記事では、シンプルなRedisキャッシュ技法とカスタムRackミドルウェアを用いて、私のRailsアプリでエンドポイントのボトルネックを500%以上改善したときの方法について解説いたします。 ベンチマークは、Macbook Pro 2015(RAM 16GB、2.2 GHz Intel Core i7)でSiegeを使いました。productionのデータベー

    Rails: RedisキャッシュとRackミドルウェアでパフォーマンスを改善(翻訳)|TechRacho by BPS株式会社
    nishitki
    nishitki 2018/02/27
  • 開発チームを苦しめるマイクロサービス(翻訳)|TechRacho by BPS株式会社

    概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Microservices Will Mess Your Team Up 原文公開日: 2018/01/10 著者: James Thompson 「なぜAmazonはマイクロサービスに舵を切ったのか?」も参考にどうぞ。企業のトップが経営判断としてマイクロサービスを強力に推進したことが重要であると思えます。 マイクロサービスは多くのチームで人気を博しています。しかし、ソフトウェア開発のパターンは、このアーキテクチャパターンの周辺で今も流動を繰り返しています。このギャップはここ数年で相当埋められてきましたが、それでも質の低い実装を生産するチームがあまりにも多すぎます。 マイクロサービスは、しばしばモノリシック(一枚板)アプリの対極に位置づけられます。この対比は有用な反面、素朴に過ぎるとも言えます。マイクロサービスというソフトウェア設

    開発チームを苦しめるマイクロサービス(翻訳)|TechRacho by BPS株式会社
    nishitki
    nishitki 2018/02/03
  • Railsコードを改善する7つの素敵なGem(翻訳)

    概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: 7 Gems Which Will Make Your Rails Code Look Awesome 公開日: 2017/10/14 著者: Val Zavadskiy サイト: https://blog.rubyroidlabs.com/ Rubyroid Labsの別記事「Ruby on Railsで使ってうれしい19のgem(翻訳)」も合わせてどうぞ。 私たちRubyroid Labはアプリのアーキテクチャに多くの情熱を注ぎ込んでいます。手がけているプロジェクトの多くが長期にわたっているので、設計のどこかで少し油断すると、機能を1つ追加するのにプロジェクトをスクラッチからやり直す方が早い、といった事態になりかねません。こんな目には遭いたくないものです。 新しく参加したメンバーがロジック把握のためにソースコードを読みとおすだ

    Railsコードを改善する7つの素敵なGem(翻訳)
    nishitki
    nishitki 2017/10/31
  • TestProf: Ruby/Railsの遅いテストを診断するgem(翻訳)|TechRacho by BPS株式会社

    はじめに テストを書くことは、特にRubyRailsのコミュニティにおいて開発の重要なプロセスですが、テストの完了に長時間を要するようにならないと、テストスイートのパフォーマンスを気にしない傾向があります。身に覚えがありませんか? 専用のテストプロファイラであるTestProfを用いて、Railsテストのパフォーマンスボトルネックを特定して修正する方法を学びましょう。 私はEvil Martiansに入社した最初の年から、さまざまなタイプのRailsアプリケーション(モノリス、モジュリス(モジュラー+モノリス)、APIのみ、Hotwireなど)に取り組んできました。これらのアプリケーションは、どれもテストスイートの速度面に改善の余地がまだまだ残されていました。 私はテスト高速化のヒントやノウハウを集めるようになり、最終的にそのノウハウをすべてTestProfという名のメタgemに盛り込み

    TestProf: Ruby/Railsの遅いテストを診断するgem(翻訳)|TechRacho by BPS株式会社
    nishitki
    nishitki 2017/10/11
  • ベンチマークの詳しい理解と修正のコツ(翻訳)|TechRacho by BPS株式会社

    こんにちは、hachi8833です。今回の翻訳記事は、Railsを含む一般的な開発・システム管理で使えると思います。 Railsのパフォーマンス改善については、先日開催されたぎんざRuby会議01でのk0kubunさんの発表スライドと合わせて読むとさらによいと思います。 Railsアプリケーションのパフォーマンス改善手法 - k0kubun 概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Understanding your benchmarks and easy tips for fixing them 公開日: 2017/07/13 著者: Hongli Lai サイト: https://blog.phusion.nl/: Webサーバー「Passenger」で知られるオランダのPhusion社のブログです。 blog.phusion.nlより 開発者は質的にスピードを愛

    ベンチマークの詳しい理解と修正のコツ(翻訳)|TechRacho by BPS株式会社
    nishitki
    nishitki 2017/08/08
  • Jenkinsで特定のプロジェクトだけ閲覧できるユーザを作成するには|TechRacho by BPS株式会社

    morimorihogeです.ちょっと前回から間の空いた投稿になってしまいました.今回はJenkinsの話. Jenkinsの概要 JenkinsはTDD,BDDなどを使い,自動テストでCI(Continuous Integration)を回していく際に使えるCIサーバです.同等の物としては,GithubにおけるTravis CIやGitLabにおけるGitLab CIなどが挙げられます,ちなみにJenkinsは昔はHudsonという名前でした. Jenkinsの特徴としては,歴史が長いので動作自体の安定性や導入実績が十分にあること(枯れている),WARコンテナにまとまっているのでインストールが割と楽,プラグインが豊富にあり,機能拡張がやりやすいことなどが挙げられます.Travis CIはGithub専用ですし,GitLab CIは導入実績の面でまだ試行錯誤が必要そうなことや,GitLab

    Jenkinsで特定のプロジェクトだけ閲覧できるユーザを作成するには|TechRacho by BPS株式会社
    nishitki
    nishitki 2017/05/16
  • [Rails 5]実は不要なgem・使われなくなりつつあるgem(2017年版)|TechRacho by BPS株式会社

    こんにちは、hachi8833です。今回はRails 5を対象に、実はなくてもよいgemや使われなくなりつつあるgemをリストアップします。ネット上の情報が古いことに気づかずにこうしたgemを導入してしまうと後々変更が面倒になりますね。 記事は今後も継続して更新いたします。 記事と逆の、Rails 5向け厳選・定番gemリストについては以下をご覧ください。 [Rails 5] rails newで使いたい厳選・定番gemリスト(2017年版) 【募集】不要なgem・使われなくなりつつあるgem情報 こうしたgemが他にもありましたら、記事末尾のフォームまたは@techrachoまでお知らせください。確認の後、記事に追記いたします。 quiet_assets リポジトリ: evrone/quiet_assets ログチェック時に邪魔になりがちなアセット(静的ファイル)へのアクセスログを

    [Rails 5]実は不要なgem・使われなくなりつつあるgem(2017年版)|TechRacho by BPS株式会社
    nishitki
    nishitki 2017/04/20
  • 肥大化したActiveRecordモデルをリファクタリングする7つの方法(翻訳)

    更新情報: 2013/11/19: 初版公開 2021/01/08: 訳文見直し、追記 こんにちは、hachi8833です。今回は、自分が知りたかった、Active Recordモデルのリファクタリングに関する記事を翻訳いたしました。1年前の記事なのでRails 3が前提ですが、Rails 4以降でも基的には変わらないと思います。リンクは可能なものについては日語のものに置き換えています。 なお、ここでご紹介したオブジェクトは、app以下にそれぞれ以下のようにフォルダを追加してそこに配置します。 注記: 以下は使われそうなフォルダを列挙しただけであり、実際にはこの一部しか使いません。 Value Object Service Object Form Object Query Object View Object Policy Object Decorator ⚓ 肥大化したActive

    肥大化したActiveRecordモデルをリファクタリングする7つの方法(翻訳)
    nishitki
    nishitki 2017/03/09
  • 1