サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
災害への備え
doruby.kbmj.com
■ はじめに Railsには便利なgemがたくさんあり、この中にはロジックだけでなく画面のデザインであるViewを含んだものが数多くあります(たとえばActiveAdminやDevise、Comableなど)。これらをこのまま利用できれば楽ですが、認証のための項目を増やしたいとか商品価格の横には定価を載せたいとか、やりたいことが増えてくるとその一部に手を加えたくなるケースが少なからずあります。 通常Viewは一部分だけを変更することが不可能で、カスタマイズを行う場合はファイルを丸ごと置き換える形で対応することになります。ただしこの手法には、gemのバージョンアップの際にViewの更新を追うことができなくなってしまう、という欠点があります。 今回はこの欠点を補いつつ既存のViewをカスタマイズするためのgem「Cosme」を紹介します。 ■ 使い方 1. gemのインストール bundler
■ Tomcat起動が起動しない・・・ ある日、これまで正常に起動していたTomcatが起動しなくなりました。 ログを見ると以下の出力。 Cannot load JDBC driver class 'oracle.jdbc.OracleDriver' java.lang.StackOverflowError at java.util.Stack.empty(Stack.java:96) at sun.misc.URLClassPath.getLoader(URLClassPath.java:283) at sun.misc.URLClassPath.getResource(URLClassPath.java:168) at java.net.URLClassLoader$1.run(URLClassLoader.java:194) at java.security.AccessContro
環境 Rails 4.1.4 Ruby 2.1.2 with_optionsのif model内で、バリデーションを書く時に、特定の場合のみバリデーションを動かしたい場合、ifを用います。 validates :test_id, length: { minimum: 50 }, if: test? def test? return false if hogehuga == 'hogehuga' true end 特定の場合のバリデーションが、1つの場合上記で問題ありません。 しかし、特定の場合のバリデーションが複数ある場合、それそれにifをつけるのは大変です。 そこで使用するのが、with_optionsになります。 with_options if: :test? do |v| v.validates :test_id, length: { minimum: 50 } v.validate
ObjectId型の_idを前方検索する $whereについて 検索条件の指定方法いろいろ Mongoidのセレクション以外での指定方法 aggregateでgroup_byする ■ ObjectId型の_idを前方検索する ▼サンプルデータ > db.members.find(); { "_id" : ObjectId("54daf7307da4107a3694f5af"), "name" : "hoge", "count" : 1, "status" : 1123, "created_at" : ISODate("2015-02-11T12:20:18.766Z"), "updated_at" : ISODate("2015-02-11T12:20:18.766Z"), "deleted_at" : 0 } MongoDBの_idはObjectId型になるので、 単純に「/^54d/」
■ Rails 4.2 にアップデートすると他のマシンからサーバーにアクセスできなくなる? 「rails s」で起動するサーバーの IP アドレスはもともとは「0.0.0.0」でしたが、 Rails 4.2 から「localhost」になっているようです。 この影響で他のマシンや、ホスト OS から立ち上げたサーバーにアクセスできない! ということがあります。 ■ 解決方法 いままで通りにアクセスできるようにするには簡単で、「rails s -b 0.0.0.0」のような オプションを指定するだけです。オプションの詳細は「rails --help」で確認できます。 rails s #=> 'http://localhost:3000' で起動するため外部からアクセス不可 rails s -b 0.0.0.0 #=> 'http://0.0.0.0:3000' となり、いままで通りアクセス可
プログラミング言語Scalaは、昨今注目が集まっている「関数型プログラミング」を実際のプロジェクトで実践するのに適した有力なプラットフォームです。本エントリではScalaの概要について紹介します。 Scalaとは スイス連邦工科大学のMartin Odersky教授によって開発されたプログラミング言語です。 Scala(スカラ)という名前は、言語設計の理念であるスケーラブル(Scalable)という言葉からとられています。 特徴について箇条書きでいくつか挙げると JVM(Java仮想マシン)で動作し、Javaで書かれたライブラリやクラスを利用することができる 静的型付け+型推論を行いJVM用のclassファイルにコンパイルされる オブジェクト指向と関数型プログラミングの双方をサポートする(マルチパラダイム) Java8で導入されたラムダ式などの高度な機能をを簡潔な文法で使うことができる
■ 1.Gemfileに「 gem ‘barby’」と記述してbundle install $ vim Gemfile ================= gem ‘barby’ ================= $ bundle install ■ 2.バーコード作成用のclassを作成 class Barcode require 'barby' require 'barby/barcode/ean_13' require 'barby/barcode/ean_8' require 'barby/outputter/png_outputter' def initialize(number, type = :ean_13) @number = number.to_s @type = type end # PNG形式でデータURIスキームを生成 def to_png_image 'data
■ 概要 【環境】 Mac OS X 10.6.8 POWって何? PowとはMac OS Xで使用できる設定不要なRackサーバです。 では他のサーバに比べて何が便利なのか。 1. 面倒な設定が不要 →ApacheやNginxだと設定ファイルを修正したりしないといけませんが、それが不要。 2, メンテナンスも不要 →システムファイルを書き換えない自己完結型のサーバです。 3. 複数のサーバを起動しておくことが可能 →railsサーバ等だと別アプリを起動する場合はポートをずらしたりしますが、Powでは必要ありません。 4. 自動停止/自動起動 →15分間アクセスが無い場合は自動で停止します。そして次のアクセス時に自動起動。 ■ アプリケーションの登録 さてアプリケーションの登録です。まず手動で行う方法です。 ユーザのホーム直下に .pow というディレクトリが作られているので、 そこに登録
Rails4にBootstrapを導入するのは、とても簡単です。 だが、いざ本番環境にデプロイしたら、glyphiconが表示されないという不具合に見舞われました。 自分がベストだと思う導入方法と対処方法をメモします。 続きはこちら http://doruby.kbmj.com/taka/20140726/_Rails4_Bootstrap_assets_precompile_glyphicon_
■ この記事について サーバでの作業にはかかせないログの監視。 tail -fは多くの方が利用されていると思います。 台数が少なければいいのですが、増えてくると一台ずつ サーバにログインして→"tail -f "とタイプして・・・ が面倒になってきます。 今回はこの手間を省くスクリプトを作成しようというのがテーマです。 ■ プログラム作成 いきなりですが、以下のように作成しました。 #!/usr/bin/env ruby #-*- coding: utf-8 -*- require 'rubygems' require "net/ssh/multi" SSH_CONFIG = File.join(ENV['HOME'], ".ssh/config") def main(hosts, paths) Net::SSH::Multi.start do |session| hosts.each d
■ この記事について メンテナンスや日々の確認のために ちょっとしたスクリプトを書くことがあります。 データなどを確認したい場面では タブ区切りでのテキストを出力していましたが データ量が大きくなると視認性が悪くなります。 そこでコンソール上でも表を出力したい! となります。 ※記事内でソースコードを変更する箇所がありますが、利用する場合は自己責任でお願いします。 ■ formatador rubygemsでインストールができる formatador を使うこととします。 簡単な使い方は以下の通りです。 #-*- coding: utf-8 -*- require "rubygems" require "formatador" data = [ {:name => "taro", :age => 30}, {:name => "hanako", :age => 25} ] Formatad
受 験 日 : 2013/8/31 合 否 : 合格 試験番号 : RY0-100 受験言語 : 日本語 取 得 点 : 88点 合 格 点 : 75点 問 題 数 : 50 試験時間 : 90分 受験目的 : 自分のスキルアップ 勉強形態 : 独学 実務経験 : 半年 勉強前のレベル : Silver合格+Rails経験半年 本試験のレベル : Silverよりかなり難しいが、Javaプログラマ(OCJP)試験より簡単 何度目の挑戦か : 1回目 ■ 【使用教材】 Ruby リファレンスマニュアル(オンラインのドキュメント) Ruby公式資格教科書 Ruby技術者認定試験Silver/Gold対応 メタプログラミングRuby ■ 【勉強方法】 Ruby公式資格教科書 教科書のとおりに、Gold範囲をしっかり読む。 ガイドの説明をしっかり読んだほうが効率的です。 3章、4章、5-9~5-
# crm configure property stonith-enabled="false" no-quorum-policy="ignore" default-action-timeout="240" default-resource-stickiness="200" ↓ # pcs property set stonith-enabled="false" no-quorum-policy="ignore" default-action-timeout="240" default-resource-stickiness="200" # crm configure rsc_defaults resource-stickiness="INFINITY" migration-threshold="1" ↓ # pcs resource rsc defaults resource-s
■ 破壊的メソッドとは Stringクラスのインスタンスメソッドなどで定義されている、インスタンス自身を変更するメソッドです。 たとえば文字列の末尾に含まれる改行を消したい場合、 irb> text = "テスト\n" irb> text.chomp #=> "テスト" irb> text #=> "テスト\n" のように「chomp」メソッドを使って実現できます。このときインスタンスであるtext自体に変更はなく、「chomp」のあとにtextを呼び出すと改行がついたままであることが確認できます。 これに対して破壊的メソッド「chomp!」の場合は、 irb> text = "テスト\n" irb> text.chomp! #=> "テスト" irb> text #=> "テスト" と、text自体に変更が加わっていることがわかります。 本稿では、このような破壊的メソッドを自分で定義する
■ 概要 【環境】 Mac OS X 10.6.7 JMeter2.9 Rails2.0からCSRF対策として、Formに自動的にauthenticity_tokenが付加されるようになりました。 JMeterでPOSTする際などもこのauthenticity_tokenを正しくセットしないとアプリケーション外からのリクエストとして弾かれてしまいます。 ■ テスト計画構成と正規表現抽出 例えばテスト計画の下に「ログイン」というスレッドグループがあるとします。 さらに、その下に「ログイン画面」と「ログインアクション」という2つのサンプラー(HTTPリクエスト)がぶら下がるような設定です。 テスト計画 ・ログイン ・ログイン画面 ・ログインアクション この場合、authenticity_tokenはログイン画面のFormに自動的に付加されていることと思います。 authenticity_tok
みなさま、はじめましてえーきち。。です。 このブログではprogramに特化した話題より 有益なtipsや各種ツールの話題をつらつら書いていこうと思います。 そんな内容ですので みなさま気楽に目を通していただければと思います。 今日紹介するのは「firefox」+「Greasemonkey」+「AutoPagerize」を使った ページ閲覧時のストレス軽減tipsです。 googleなど何らかのページを検索+表示した際には 通常、ページ下部まで移動したあと"次へ"や"2ページ目"を押下し遷移する必要がありますが これを使うとページ下部に、先に読み込んだ次の候補のページ、を表示してくれるものです。 では詳細を firefox:http://mozilla.jp/firefox/ firefoxはブラウザソフトですね。 カスタマイズが非常に強力なブラウザですが詳しい説明は省きます。 greas
MongoDBとNagiosをPacemakerで起動制御出来るようにした時のメモです。 ApacheやMySQL等は専用のスクリプトが用意されていますが、MongoDBとNagiosのは無くて、作るのも労力なので、汎用的に使えそうなanythingで代用しました。 ●Pacemakerリソース追加 既にyum updateしてcrmコマンドが無くなっているので、pcsを使います。 crmの方は、yum updateしたらcrmコマンドが無くなった!(pcsコマンド対照表)も参考にしてください。 MongoDBの場合 Nagios Pluginのcheck_tcpを使って、死活監視をしています。 # pcs resource create mongodb ocf:heartbeat:anything params \ user="mongodb" \ binfile="/us
require 'thinreports' ~~~~~~~~~~ ~~~~~~~~~~ def pdf_download #Reportオブジェクトの生成、先ほど作ったレイアウトの読み込み report = ThinReports::Report.new :layout => "/public/pdf_layout" #新しいページを作る際にここが呼ばれます report.events.on :page_create do |e| e.page.item(:page_num).value(e.page.no) #現在のページ数入力 end #PDFを生成するときにここが呼ばれます report.events.on :generate do |e| e.pages.each do |page| page.item(:page_total).value(e.report
rick No26です。 ついこの間、サーバの容量が圧迫されduコマンドなどで調べても全然使用していないのにdfでみると使用率80%近くいっていたことがあったので、解決方法を紹介します。 環境 CentOS 5.4 dfの値 # df -h Filesystem サイズ 使用 残り 使用% マウント位置 ???秘密??? 113G 83G 24G 78% / ・・・省略・・・ ???秘密??? 379G 220G 140G 62% /var
TestLinkはテスト管理システムの1つです。 以前から気になっていたけど、やっと導入したので、その時のインストール手順とお奨めチューニングを記載します。 Excel管理の課題からは解放されたけど、TestLinkもかゆい所に手が届かないので、上手く付き合っていく必要はあります。 その辺は別の機会に記載します。 ●TestLinkダウンロード $ cd /usr/local/src $ sudo wget http://sourceforge.net/projects/testlink/files/TestLink%201.9/TestLink%201.9.4/testlink-1.9.4.tar.gz/download $ sudo wget http://mattari.sumomo.ne.jp/wp/wp-content/uploads/2011/08/TestLink
他社様より scp / sftp を使用してファイルアップロード頂きたいとき、単にユーザアカウントを発行しポート制限を解除するのみの場合、 ssh ログインによるコマンド実行や上位階層への移動といった心配が発生します。そこでファイル転送専用にアカウント作成を行うこととなります。 ■ § 手順概要 sftpしか行えないユーザを所属させる sftponly グループを作成します。 sftponly グループに所属する sftpclient ユーザを作成します。 sshサーバ側で sftponly グループは sftp しか行えないように設定します。 sshサーバを再起動し完了。 ※ グループ名 sftponly・ユーザ名 sftpclient は環境に合わせて作成してください。 ■ § 手順 ※ root ユーザで実施します。 1. グループ作成 コマンドの実行を行えなくする為のグループを作成
よしだです。 今回はオープンソースのネットショップ構築アプリ「[http://ec.appirits.com/:title=エレコマ]」を、たった1コマンドで展開できるツール「elecoma-vagrant」を紹介します。 続きはこちら http://doruby.kbmj.com/hyoshida/20130628/_elecoma-vagrant
■ 問題の原点 まず、世に存在するvpsやクラウドシステムには、基本的には2種類の構成が存在している。このうちコンテナ型と呼ばれる構成では、予め必要とされてるsshやメールなどの基本的な内容が初期段階より構成されており、コンテナを選択するだけですぐにシステムの構築が出来る、手軽さが売りになっている。このコンテナには、予めsshが組み込まれていることが多く、そのため管理者のpasswordがデフォルトで決めうちになっている場合も多い。管理者のpasswordをデフォルトで放置していた場合、外部からの攻撃によって、あっさりと侵入を許してしまうことがある。 本題は、ここからだ。このsshが最初からインストールされている=ホストキーが最初から入っている=同じコンテナを使う限りホストキーは変わらない。ということになる。 また、vpsやクラウドシステムが大規模になればなるほど、この傾向は強まり、/16
#include #include "libpasori.h" int main(void) { pasori *p; felica *f; uint8 d[16]; p = pasori_open(NULL); pasori_init(p); f = felica_polling(p, 0xfe00, 0, 0); felica_read_without_encryption02(f, 0x170f, 0, 0, d); printf("%d¥n", d[14]*256+d[15]); pasori_close(p); return 0;} require 'dl/import' module Pasori extend DL::Importable dlload '/usr/local/lib/libpasori.dylib' typealias 'uint8', 'unsigned
はじめまして、su10です。Flex向けのフレームワークであるPureMVCについて学んだことを自分なりにまとめて解説していきたいと思います。(2012/5/25更新) ■ PureMVCあるある 「うちはPureMVC使ってるから勉強しといてね」 「わかりました」 数時間後… 「(ネット上にわかりやすい説明ない…「Cairngorm」って何だよ…帰りたいよ…)」 こんなことってよくありますよね。自分の場合は「とりあえずコード読んだらわかるだろう」と思ったらhandleNotificationが一体何なのかわからず、目から汗をかきそうになりました。 ■ PureMVCの基本 まずはPureMVCとは何か?最初に書きましたが、PureMVCはFlex向けのフレームワークです。Flex向けといってもJavaやC#向けもあるらしいので、これを機会に理解しておけば夢が広がります。そもそも「フレーム
■ 1000台を超えるプライベートクラウドの作成方法 まず、1ホストで、1000台を超える規模のプライベートクラウドを設置する場合、HPCと呼ばれる(Hi Performance Computer)と呼ばれる、通常お目にかかることの出来ないシステムを用意する必要がある。通常のサーバーでも出来なくは無いが、かなり注意して構築しなければ、すぐにシステムが破綻してしまうだろう。 ■ 構成の要 ストレージについて まず、ディスクにはそれぞれDisk I/Oキャッシュと呼ばれる、書き込み時に情報を蓄えておくメモリが存在する。しかしながら、このメモリは、単一のコンピューターが使用するのであれば問題ないが、1000台ものVMが一斉にアクセスした場合、一瞬で枯渇してしまう。通常のディスクの場合、多くても、128Mバイト程度しかこれを有していない。また、ディスクRaidを構成している場合に於いても、搭載して
■ はじまり 最近携わっている Rails 3 アプリの自動テスト(RSpec)が、すべて完了するのに1時間半かかるようになってしまいました。 5〜10分で終わっていた頃はファイルに変更を加えるたびにすべてのテストを確認できていましたが、それが難しくなってきたので Guard を導入することにしました。 Guard を利用すれば、変更のあったファイルに関連するのみを効率よくテストすることができます。 ローカルでは Gurad で自分が編集した部分のみテストして、リモートの jenkins などですべてのテストを確認、ということをできるようにするのが今回の目的です。 ■ Guard のインストール というわけで、さっそく Rails 3 アプリに Guard を導入していきます。 bundlerを利用している場合は Gemfile ファイルに下記の行を追加します。 group :develo
■ Googleリーダー終了 Googleリーダーが7月にサービス提供終了するとの一報が飛び込んできました。 私としては粛々と代替サービスに乗り換えることにいたしました。 ■ 移行手順 エクスポート&インポートのわずかな作業で移行できました。 前準備 netvibesにアカウント登録をしておきます。 facebookアカウントが利用できるほか、 netvibes上でサインアップも可能のようです。 Googleリーダーからフィード情報をエクスポート Googleリーダーをブラウザで開き歯車マーク→リーダーの設定をクリック エクスポート/インポート→Download・・・をクリック 別ページに遷移するのでダウンロードをクリック ダウンロードをクリック フィード情報のアーカイブファイルのダウンロードがはじまります。 アーカイブファイルを展開すると中にsubscriptions.xmlというファイ
画面をタッチした状態で指を「素早く動かす、弾く」動作 この2つの動作を組み込むことで、ネイティブアプリのようなスムーズな動きが実現できます。 ■ sample.css body {margin:0;padding:0;} #slider { position: relative; width: 320px; } #slider a:focus { outline: 0; } .slider-view { position: relative; border: 1px solid #bbb; width: 320px; /* スライダーで表示するエリアの大きさ */ height: 360px; overflow: hidden; /* 必須 */ } .slider-container { position: absolute; top: 0; left: 0; background-co
次のページ
このページを最初にブックマークしてみませんか?
『Ruby on Railsのシステム開発|技術解説ブログ『DoRuby!』』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く