Malwarebytes は、驚くべき成長を見せています。1年以上前にこのシリコンバレーの会社に入社して以来、私の主な仕事は急成長するセキュリティ企業の力となるシステムの設計と開発です。日々数百万人が利用する製品をサポートするために必要な、全ての基盤をつくります。私は12年以上、アンチウイルスとアンチマルウェアに関わるいくつかの会社で働いてきました。毎日処理する膨大なデータのせいで、これらのシステムがどれだけ複雑なものになるかを理解しています。 面白いことに、ここ9年ほどで私が携わったWebのバックエンド開発のほとんどは、Ruby on Railsが使われていました。誤解されないように言っておきますが、私はRuby on Railsが大好きですし、すばらしい環境だと思っています。しかし、Rubyでシステムを設計し始めると忘れてしまうのは、マルチスレッド化や並列化、高速化、メモリオーバーヘッ
しばらくLinuxネタが続く・・。 近いうちに最近出たJava8ネタを書いてみようと思います。が、もう少しLinuxネタにお付き合いください。 前回はsshdを対象に親プロセスをkillした場合の動作を確認した。 killされたプロセスの子プロセスは孤児プロセスとなり、カーネルによって自動的にinitプロセスの子として扱われる事を説明した。(この動作を「リペアレンティング」と呼ぶ) 今回はこの続き。 Linuxで作業していてCtrl+Cしてプロセスを終了した場合、フォアグラウンドのプロセスやその子プロセスも一緒に終了する。 ということは、子プロセスは孤児として扱われず、リペアレンティングされていないことになる。 今回の記事ではこの振る舞いの違い(リペアレンティングされるか否か)に着目し、kill -SIGINTコマンドとCtrl+Cの違いについて考えていく。 そもそもkillコマンドやCt
A lightning talk from Scottish Ruby Conference 2014. More…
Ruby で Amazon Product Advertising API を試したくなって gem を漁ってみたら、amazon-aaws と amazon-ecs の2つを見つけた。 どちらも API を素直にラップしていて筋が良さそうだったけど、amazon-aaws の方は AccessKey や SecretKey を .amazonrc っていう別ファイルに記述しなければいけないのが個人的に気に入らない。一方、amazon-ecs ではブロックで設定を記述できる。amazon-ecs を試してみようかな。 amazon-ecs を使って、Amazon で Ruby の書籍を検索するスクリプトを書いてみた。 require "amazon/ecs" # Amazon Product Advertising API へのアクセスに必要なキーを設定 Amazon::Ecs.confi
このブログにAmazonのリンクを貼りたくなったので、ASINを入力するとAmazonから書籍のサムネイルや著者情報などを抜き出す機能を実装するために、Amazon Product Advertising APIを使ってみることにしました。 ■ インストール gemなので、コマンド一発です。 require 'amazon/ecs' Amazon::Ecs.options = { :associate_tag => '[your associate tag]', :AWS_access_key_id => '[your developer token]', :AWS_secret_key => '[your secret access key]' } # API呼び出し res = Amazon::Ecs.item_lookup("4088767624", :response_group
rbenv と RVM との違い 列挙してみる。 rbenv は RVM と違ってシェルにコマンドをロードしない → 代わりに $PATH を追加するだけで使えるrbenv は RVM と違ってシェルコマンドを上書きしない(RVM は cd などを RVM 独自のものに置き換える)rbenv は RVM と違って設定ファイルが無い → どのバージョンを使うかの指定のみrbenv は RVM と違って Ruby をインストールしない(rvm install 相当の機能が無い) … 代わりに自分で好きに Ruby をインストールできるし、rvm install 相当の ruby-build を使うこともできるrbenv は RVM と違って gemset の概念がない … 代わりにアプリケーション毎の Bundler を使ったほうがいいよrbenv は RVM と違って他の gem を変更する
Ruby on RailsでDev環境は使ったことあるけど、test・prod環境を考慮した環境構築をしたことがない人にお勧めの内容です。 サーバー構成図 サーバーの役割 リバースプロキシサーバー(ホスト名:rp01) ロードバランサ機能を使ってWEBサーバ二台に処理を振り分け、アクセスを1台のサーバーに集中させない WEBサーバーを外部から隠せることでセキュリティ面の向上 WEBサーバー(web01、web02) webサーバーを2台用意することでアクセスが1つのサーバーに集中しないため、レスポンスを早くできる マスターDBサーバー(db01m) DB内容をもう1台のDBサーバー(スレーブ)へリアルタイムにコピーし、障害でマスターが停止したときはスレーブに切り替える スレーブDBサーバー(db01s) 読み込み専用のサーバー。書き込みをしない分レスポンスが早くなる マスターの内容を常にコ
Rubyでデーモンを作ってみます。 test.txtファイルに1秒ごとに"test"と書き続けるデーモンです。 # daemon.rb require 'fileutils' require 'logger' class DaemonTest def initialize @term = false @logger = Logger.new(STDOUT) @logger.info "daemon start..." @pid_file_path = './daemon.pid' @file = "./test.txt" end def execute File.open(@file, "w") do |f| loop do f.puts "test" f.flush break if @term sleep 1 end end end def run daemonize begin Si
コミケの列に並んでたあたりのころから Docker 本格的に使ってます。このサイトもさっき Docker でデプロイするような感じにしました。 Docker の利点と欠点で 開発環境の配布が容易にできる プロダクトのデプロイにつかうにはなにかとキツい みたいな意見をわりと頻繁にみかけるのですが、逆じゃねえかと思ってます。これ開発環境の配布に使うの無理でしょ。各コンテナ使い捨て前提なんだし。 Docker をデプロイに使う際の問題点としては以下があります Dockerfile に 42 個しか命令かけないみたいなやつ なんだかんだでコンテナのビルドに時間がかかる コンテナの管理とかどうするのか リバースプロキシの設定とかどうするのか 一個目に関しては頑張ってください。僕はセットアップ用やデプロイ用のシェルスクリプトを ADD して RUN させるようにしてます。シェルスクリプトセットアップ
配列の追加・取り出しに関する4つのメソッド(unshift, shift, pop, push)がいつも混乱するので絵で整理した。 絵にすれば覚えられそう!いちお練習のため、自分がよく使うRuby, PHP, JavaScriptでコードも書いた。 ・いずれの言語においても上記4つのメソッドは似たような名前で存在しており、用途も同じ。 ・いずれの言語のいずれのメソッドも破壊的メソッド。 ・言語、バージョンによってメソッドの返り値は異なる。 という具合だった。 Ruby ruby 1.9.2 # unshift a = [1, 2, 3] b = a.unshift 0 p a #[0, 1, 2, 3] p b #[0, 1, 2, 3] # shift a = [1, 2, 3] b = a.shift p a #[2, 3] p b #1 # pop a = [1, 2, 3] b =
クラスメソッドの定義 Rubyでクラスメソッド(=クラスオブジェクトの特異メソッド)を定義するには、いくつかの方法があります。 たとえば、Hoge クラスオブジェクトに hoge() メソッドを定義する場合、 1. クラス定義内でクラスオブジェクトに特異メソッドを定義 class Hoge def self.hoge() end end 2. クラス定義内で特異クラスに対してメソッドを定義 class Hoge class << self def hoge() end end end 3. クラス定義外でクラスオブジェクトに特異メソッドを定義 class Hoge end def Hoge.hoge() end 4. クラス定義外で特異クラスに対してメソッドを定義 class Hoge end class << Hoge def hoge() end end いずれも外部から Hoge.h
Application_Timeouts CONTRIBUTORS DESIGN FAQ HACKING ISSUES KNOWN_ISSUES LICENSE Links NEWS PHILOSOPHY README SIGNALS Sandbox TUNING unicorn_1 Unicorn Configurator HttpServer OobGC PrereadInput StreamInput TeeInput Util Worker Methods #after_fork #after_worker_exit #after_worker_ready #before_exec #before_fork #check_client_connection #client_body_buffer_size #default_middleware #early_hints #list
../ 2024-08-19 20:26 - Unicorn/ 2023-10-03 17:15 - examples/ 2023-10-03 17:15 - files/ 2023-12-30 01:23 - public/ 2021-03-12 20:34 - Application_Timeouts 2023-10-03 17:15 3K Application_Timeouts.html 2023-10-03 17:15 6K CONTRIBUTORS 2023-10-03 17:15 1K CONTRIBUTORS.html 2023-10-03 17:15 5K COPYING 2023-10-03 17:15 34K ChangeLog 2020-04-22 02:00 42 ChangeLog.html 2020-04-22 02:00 230 DESIGN 2023-10
GoFのデザインパターンとは、「プログラミングのベストプラクティスを体系化したもの」です。このベスト・プラクティスをしっかりと理解して設計すれば、ソフトウェア設計の効率を高めることができます。またデザインパターンが「プログラミングの思想」の共有をよりスムーズにしてくれます。先人たちの試行錯誤の結果を効果的に利用して、プログラミングをもっと楽しんでしまいましょう! 🗻 デザインパターンのポイントGoFのデザインパターンには下のプリンシパルがあります。 変わるものを変わらないものから分離する インタフェースに対してプログラミングし、実装に対して行わない 継承より集約 委譲、委譲、委譲 必要になるまで作るな(You Ain’t Gonna Need It./YAGNI) 🤔 デザインパターン一覧 アブストラクトファクトリ ビルダ ファクトリメソッド シングルトンパターン アダプタ コンポジッ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く