サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
AIで何ができる?
blog.kasei-san.com
前提 どちらもアプリケーションサーバ(アプリケーションを動作させるためのサーバ) アプリケーションサーバーは送られてきたリクエストに対して、rubyやphpなどを実行して、動的な処理をした結果を静的な要素に変換してwebサーバーに返すためのもの。つまり、動的なサイトを動かす上で必要なもののうち、静的ではない部分を作ってくれるもののイメージ。 qiita.com それぞれ、rackというwebアプリとアプリケーションサーバ間のインターフェイスの仕様&実装に準拠していて、それを使ってRailsと通信を行っている(Railsも、もちろんrack準拠) Railsアプリの動かし方の違い Unicorn: マルチプロセス Puma: マルチプロセス & マルチスレッド どちらも、1つのアプリケーションサーバで複数のRailsプロセスを起動して、処理の効率化を図っている Pumaは更に、プロセスをマル
これはなに やたら重くなった MacBook Air mid 2011 (memory 4GB, strage 250GB) をサクサクにするまでの苦闘の記録です 古いMacBookに発生した、つらみあふれる現象 ログイン画面を開いてからパスワードを入力するまで1分ほど待たされる 起動してからブラウザを開くまでやたら時間がかかる 何もしていなくてもメモリを3GBくらい専有されている 上記を解決し、ネットサーフィンくらいなら何も支障がない状態になりました! そのために、いろいろチューニングした結果をまとめます MacBook Air mid 2011をサクサクにするためにやったこと 以下の3つです ストレージの空き容量確保 CPUを無駄に食うプロセスの整理 memoryを無駄に食うプロセスの整理(主にChrome) ストレージの空き容量確保 なぜ空き容量確保が必要か? もし、ストレージの空き
と思って調べたら、Rails ガイドに、 スコープでのメソッドの設定は、クラスメソッドの定義と完全に同じ (というよりクラスメソッドの定義そのもの) です。どちらの形式を使用するかは好みの問題です。 と、言われたので、 特に必然性は無いらしい ちなみに、 引数を使う場合はクラスメソッドを推奨するそうです スコープで引数を使用するのであれば、クラスメソッドとして定義する方が推奨されます。クラスメソッドにした場合でも、関連オブジェクトからアクセス可能です。 あと、適当にぐぐったら「以前の時代は特別なものだったけど、今は別に使わなくてもよいのでは?」という話を見つけて、それもそうかという気持ちになりました Ruby on Rails ActiveRecord scopes vs class methods - Stack Overflow 追記 こちらの記事の「追記」にあるように「 Active
ビルド docker-compose build # Build or rebuild services 起動、停止 docker-compose up # Create and start containers docker-compose up -d # デーモンとして起動 docker-compose start # サービスを開始 docker-compose restart # サービスを再起動 docker-compose stop # サービスをstop docker-compose kill # サービスを強制終了 コマンド実行 # 起動中のコンテナでコマンド実行 docker-compose exec ${service_name} ${command} # コンテナを作成してコマンド実行(実行後コンテナを削除 docker-compose run --rm ${serv
DBはPostgreSQLで、他に余分なgemを入れなければこんな感じ FROM ruby:2.5.0-alpine COPY Gemfile* /myapp/ WORKDIR /myapp RUN apk upgrade --no-cache && \ apk add --update --no-cache \ postgresql-client \ nodejs \ tzdata && \ apk add --update --no-cache --virtual=build-dependencies \ build-base \ curl-dev \ linux-headers \ libxml2-dev \ libxslt-dev \ postgresql-dev \ ruby-dev \ yaml-dev \ zlib-dev && \ gem install bundler &
今日やること data volume を理解し直す data volume ってなんぞ ボリュームは、Dockerコンテナによって生成され、使用されるデータを永続化するための推奨されるメカニズムです docs.docker.com Dockerコンテナの中のファイル/ディレクトリは、コンテナが終了すると削除されてしまう そのため、永続化したいデータがあるときに、data volume を使う data volume は、ホストのファイルシステムに作成されるディレクトリで、コンテナにマウントされる (普通は /var/lib/docker に生成されるらしい) また、特定のホストのディレクトリと紐付けることも可能で、その場合、ホストの特定のディレクトリをコンテナから参照できる (開発環境では主にこの使い方をするはず) data volume は、起動時の --volume (-v) オプショ
先に結論 pumaは worker * スレッド の数だけコネクションを使う しかし、ActiveRecordのコネクションプールの数はデフォルトで 5 なので大抵不足する コネクションが不足すると、DBへの接続リクエストは待ち状態に 待ち状態のまま一定時間が経過すると、ActiveRecord::ConnectionTimeoutError が発生 なので、ActiveRecordのコネクションプールを増やす必要がある コネクションプールとは? 予め(今回の場合は)DBに接続しておいて、必要に応じてその接続を貸し与える仕組み ActiveRecordのコネクションプールを増やす方法 config/database.yml の connection_pool で設定 production: <<: *default database: <%= ENV['DB_NAME'] %> usern
いつもはkey-valueストアでやっているので、cookie sessionを使うとなった時に心配になったのでメモ 先に結論 sessionは保持される 理由 cookie sessionは、ブラウザ側でsessionの情報を保持して、サーバ側に情報を持たないから cookieおさらい cookie : webサーバと、ブラウザ間で情報を管理するプロトコル(RFC6265) key=value で情報を保持 リクエスト/レスポンスヘッダでやりとりする 適用範囲 : path, domainを指定可能 domain 未指定の場合、発行したdomain上でだけ受信可能 有効期限 : 未指定の場合ブラウザを閉じたら終了 session webサーバとブラウザで情報を管理する仕組み ログイン情報とか、カートに何が入っているかとか cookie session sessionの情報をcookieを
この記事は feedforce Advent Calendar 2016の6日目です!! www.adventar.org 昨日は、tjinjin の ドラッカー風エクササイズをチームで試してみました でした cross-black777.hatenablog.com 期待マネジメント大事ですね。 ウチのチームも一度やってみたら面白いかもしれないですね... さて、実用的な記事はやってもらえたので、私の方は技術ネタでお茶を濁したいと思います! Amazon Polly で遊ぼう! 先日の AWS re:Invent 2016 では、色々なサービスがローンチされてすごかったですね! 今日はその中から、音声読み上げサービスである Amazon Polly で遊んでみようと思います! Amazon Polly ってなあに? 公式blogに詳しい解説がありました Amazon Polly – 文章
それ用のgemがある jugend/amazon-ecs Amazon ECS is a generic Ruby wrapper to access Amazon Product Advertising API. APIキーを用意 本当はIAMを使ってProduct Advertising APIだけ使えるキーを作るべき ただし現在、IAMの中にProduct Advertising APIが無い 仕方ないのでルートキーを使う羽目に → Amazon Product Advertising APIで使うシークレットアクセスキーを取得する | kwLog サンプルコード require "rubygems" require "amazon/ecs" require "pry" # 初期設定 Amazon::Ecs.configure do |options| options[:AWS_ac
概要 rails c 等を叩く時に、毎回Railsの初期化を行わなくなるので、開発速度が向上するよ!! Springサーバが起動して、変更を監視して必要に応じて再ロードする Rails4.1以降は標準で入っていて、勝手に起動したり終了したりしてる http://railsguides.jp/4_1_release_notes.html SpringはRailsアプリケーション用のプリローダーです。アプリケーションをバックグラウンドで常駐させることで開発速度を向上させ、テストやrakeタスク、マイグレーションを実行するたびにRailsを起動しないで済むようにします。 Rails 4.1アプリケーションに含まれるbinstubは「spring化」されています。これは、アプリケーションのルートディレクトリでbin/railsおよびbin/rakeを実行すると自動的にspring環境をプリロードす
先にまとめ RailsのMVCと原義のMVCは異なる ビジネスロジックはModelに実装する Skinny Controller, Fat Model RailsにはFat Modelをリファクタリングする仕組みが色々あるよ MVCの目的 コードの再利用性と関心事の分離 コードの再利用性 : ビジネスロジックをModelに詰め込むことで、コードの再利用性を上げる 関心事の分離 : 役割を分けることで見通しを良くする MVCの役割 本来のSmalltalkにおけるGUIアプリ開発の場合 RailsのMVCとは違うところがあるので注意!! Model データの保持 ビジネスロジックの実行 データの変更をViewに通知 View ユーザインターフェースの表示 Controller 入力をModelへのメッセージに変換して、Modelに伝える 処理の流れ 何かしらの入力イベントをControlle
各バージョンの寿命ってどんなもんなの? 先に結論 現在更新されているのは、2.1 と 2.2 2.0はセキュリティFixのみ(メンテナンスモード) メンテナンスモードは1年間(2.0 は 2016/02/24 に終了予定) 1年に1回、クリスマスにマイナーバージョンが上がる 2015/12/25 に 2.3 が出る予定 明言されていないけど、2.0 を見る限り、マイナーバージョンはリリースから2年でメンテナンスモードに入る様子 多分 2.3 がでたら、2.1 はメンテナンスモードになるんじゃないかなぁ(憶測) 最近のRubyの各バージョンの動向 2012 2012/07/01 : 1.8.7 メンテナンスモード開始 2013 2013/02/24 : Ruby 2.0.0-p0 リリース 2013/06/30 : 1.8.7 メンテナンスモード終了 2013/12/25 : Ruby 2.
そもそもDNSってなんだっけ? Domain Name System IPアドレスと、ドメイン名( www.google.com とか)の紐付けを行うサーバ DNSサーバは2種類 コンテンツサーバ (権威DNSサーバ) IPアドレスと、ドメイン名の紐付けを回答するサーバ キャッシュサーバ コンテンツサーバの内容をキャッシュするサーバ DNSは分散構成 トップレベルドメイン(.comとか)から、階層構造にいくつものDNSサーバが立っている 特定のDNSサーバが管理するドメインの範囲のことを ゾーン と言う 一番上のDNSサーバを DNSルートサーバ という ドメイン取得の流れ DNSサーバが自身が知らないドメインを調べる場合 ルートサーバに問い合わせを行う ルートサーバは、特定のゾーンとDNSサーバの組み合わせを持っているので、「そのゾーンならば、このDNSサーバに問い合わせろ」という回答を
これは何? レスポンスタイムが遅くて辛いけど原因が特定できないときに役立つツールをまとめてみました Rails以外でも使えるものも一緒くたに書いているけど、気にしない! やらないこと それぞれのツール詳細な説明 気が向いたら個別記事を書く 環境 Rails 4.2.* ruby 2.3.* New Relic パフォーマンス監視サービス 運用フェイズ アクション実行時にどの処理にどれだけ時間が掛かったかをメトリクス収集してくれる 参考 newrelic - New Relic の各製品紹介: New Relic ってアプリケーションパフォーマンス監視ツールじゃないの? - Qiita 以降のツールは基本的には開発、テスト時に使用するやつです rack-mini-profiler パフォーマンス計測ツール(gem) アクション実行時に、ブラウザにレンダリングに掛かった処理の時間を表示してくれ
これはなに? 2015年の冬コミにて、ニンジャスレイヤーの合同誌「ニンジャ学会」を作りました 各メンバーの活躍により素晴らしい内容の本になり、無事完売もしたのですが、 自分自身、合同誌の取りまとめをするのは初めてで、色々と手間取ることが多かったので、今後の為にチェックリストを作ってみました 合同誌を作る予定の人も参考にできるように作ったつもりですので、よかったらご参考にどうぞ 前提条件 本の内容と、参加予定のイベントは決まっている 主にコミケ向けです 最初にこころがけ 主催者の独断で決めるべし メンバーと相談する場合も、最初に主催者案を話してそれに合意を取るという形にする 意見から求めると中々決まらず大変(特にweb上だけで相談する場合) ただし お金のことについては、全員の合意をきちんと取ること トラブルの元になるので、ここはしっかりと 手の内は明すべし ただ「こうする」と伝えるのではな
はじめに Rails4.2系の話です いろいろある Railtie ActionMailer ActionPack ActionView ActiveJob ActiveModel ActiveRecord ActiveSupport Railtie Railsの中核部分 Railtieに基づいたプラグインの組み合わせで、Rails機能を拡張できる ActionControllerなども、そうやって実装されているらしい Railtieを使ってプラグインを作れる 参考 Ruby - Gem、Railtieプラグイン、Engine(full/mountable)の違いとそれぞれの基礎情報 - Qiita Rails - Railtie, Engine 関係資料 - Qiita Twiwt:Blog / jugyo : Railtie に関するドキュメントを訳した Railtie と Engin
Rubocopって何? bbatsov/rubocop Rubyの静的コード解析器 ruby-style-guideを遵守させる 問題点について自動的に修正してくれる Rubocop入れると何が良いの? ruby-style-guideという標準的なコーディングスタイルガイドにコードが準拠する 可読性up 不穏なコードが減る結果、バグの元が減る コーディング規約を設定ファイルにできる コーディング規約違反を自動的に検出/修正できる -新規メンバーが入った時に、そのプロジェクトのコーディングスタイルに合わせることが容易 特に初心者に有用という意見が多い インストール # Gemfile gem 'rubocop', require: false 使い方 $ bundle exec rubocop 設定ファイル カレントディレクトリに.rubocop.ymlを用意する #.rubocop.ym
自分は便利だから使いたいけど、他の人にまで強制するのはなんだなーって思うgemを開発時に使いたい時どうするかメモ 概要 環境変数BUNDLE_GEMFILEで使用するGemfileを設定できるので、個人用のGemfileを用意する 前提 direnv/direnvを使ってること やりかた Gemfile.localに個人的に使用したいgemを書く #Gemfile.local eval_gemfile "Gemfile" gem "pry" 環境変数BUNDLE_GEMFILEを設定 echo "export BUNDLE_GEMFILE=./Gemfile.local" >> .envrc Gemfile.localをglobal gitignoreに追加 リポジトリに入れないように cat <<EOS >> ~/.gitignore Gemfile.local Gemfile.loca
CircleCIってなに? SaaSのCIツール SasS Software as a Service 必要な機能だけサービスとして切り出したソフトウェア インターネット経由でサービスを提供するのが一般的 CI Continuous Integration 継続的インテグレーション ビルドやテストを継続的に実行していく為の習慣 Jenkins じゃダメなの? Jenkins ツライ 設定がめんどいので属人化しがち ダウンタイムがあったりするとリリースできなくなるので大変 それを自社サーバで管理とか、監視やら運用に人的コストがかかってつらい サーバ環境が同一なので、異なる環境で動作するアプリのテストができない そこでCricleCIですよ テスト毎に仮想環境を立ち上げられる 他サービスとの連携が豊富 HitHub Slack heroku 等... それなりに安定している とはいえ、AWSと
Rubyの推奨/必須バージョンの推移 Rails 3 : 1.8.7以降必須 Rails 3.2 : 1.8.7最終ブランチ Rails 4 : 1.9.3以上必須。2.0推奨 Rails 5 : 2.2.1以上必須 シンボルのガーベージコレクトを宛てにしているらしい 今更ながらだけど、4系は2.0推奨なのね Railsガイドを見ると、最新のrubyを入れれ。くらいしか書いてない Rails をはじめよう | Rails ガイド メジャーバージョンアップの変遷 Rails1 キーワード : DRY, CoC CoC: 設計より規約 Rails2 キーワード : RESTful SOAPからRESTへ 2010/08/29 : Rails3 キーワード : Modularity Rails2とRails3.1の橋渡し的な位置付け Merbとの合流 → RailsとMerbの合流についてあれこ
このページを最初にブックマークしてみませんか?
『blog.kasei-san.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く