2009-01-01から1年間の記事一覧

自分の小さな「箱」から脱出する方法

たまには技術以外の話題を。 人間関係やチームの活動におけるトラブルを根本解決する、という内容。 特に興味深かった点は、次の2点です。 自分が箱に入ってしまうこと 「こうすべき」という自分の感情に逆らった行動をとることを、『自分への裏切り』と呼ぶ…

イベントハンドラからrailsのAjaxアクションを呼び出す

RTMの設定みたいに、ラジオボタンをポチポチ押したらrailsのAjaxアクションが実行されるコードを書いていて思ったこと。 イベントハンドラから、JavaScript関数ではなくrailsのAjaxアクションを呼び出したい場合には、remote_function メソッドを使います。 …

Gitから学ぶ仕事のしかた

現在railsのコーチングをして頂いている先生が、Gitを奨めて下さいました。 実際のバージョン管理も体験させて頂き、基本的な使い方は何となくわかってきたのですが、考え方の面で特に勉強になっています。 WEB+DB PRESS Vol.50 特集『はじめてのGit』 より …

簡易アラーム(カウントダウン)

rubyでカウントダウンアラームを作ってみました。 実行時に「○○分」の数値を引数として渡す 10分前に1回、5分前に3回、時間になったら10回ビープ音が鳴る ビープ音を鳴らすには? Windows環境のため、rubyプログラム中で echo ^G コマンド(バッチファイルに…

テキストボックスのテキストを全選択&編集不可にする

テキストボックスの中身をコピペしやすくするためには、下記をオプションで指定するのがよいでしょう。 (サンプルを示したいのですが、はてダでは表示できないようです) クリックするだけで全選択: onclick="this.select()" 中身のテキストは編集不可: r…

HashでArray#map!(collect!)のようなことを実現する

意外とハマったのでメモ。 例えば、配列の各要素を数値から文字列に変換したいと思ったら、map!(collect!)メソッドを使って実現できます。 array = [1, 2] array.map!{|item| item.to_s} #=> ["1", "2"] では、これと同様のことをハッシュで行う(各キーに…

WEBデザイン ユーザビリティ

そういえばWEBアプリのリデザインを担当したことがあり、そのとき読んだ本のメモが出てきたので、まとめました。 実際に読んだのはこちらでしたが、現在は改訂版が出ているようです。 ユーザビリティ ユーザビリティの基本概念 有効さ(なにかを目的として操…

子コントローラで特定のフィルタを無効化する

親コントローラで定義した before_filter / after_filter はすべての子コントローラに継承されますが、「この子コントローラではフィルタを外したい」ということがあります。 これは skip_before_filter / skip_after_filter を使って実現でき、オプション(…

コールバックメソッドのカプセル化

複数のテーブルの任意のフィールドにおいて、レコード保存時に同一の処理を行いたかったので、before_saveメソッドをカプセル化するハンドラを作成しました。 共有したいコールバックメソッドを定義したハンドラクラスを、app/models下に作成 class Hoge def…

プロセス名からプロセスをkill

プロセスをkillするのに、プロセス番号ではなくプロセス名を指定する方法はないんか? と探していて、便利コマンドに出会いました。 Linux コマンド 勉強中 - pkill プロセス名、プロセスの属性を指定してシグナルを送信する・プロセスを停止する 例えばこの…

ActionMailer基礎とヘルパーの指定

コードリーディングの際にActionMailerに触れたので、覚え書き。 ActionMailer基礎 メーラクラスapp/models/hoge_mailer.rb class HogeMailer < ActionMailer::Base def fuga() … end def piyo() … end end メールテンプレートapp/views/hoge_mailer/fuga.rh…

Twitterからmixiボイスへのポスト

自分で書いてみようかと思っていたのですが、rubyスクリプトを公開している方がいらっしゃったので拝借しました(笑) ちなみにrubyのバージョンは1.8.6です。 ライブラリをインストール $ gem install mechanize $ gem install rubytter Mechanizeインスト…

マイグレーションファイルに外部ファイルのロジックを持ち込んではならない

以前railsで、『あるテーブルのレコードの配列を取ってきて、その配列の順番を数値として既存フィールドに上書きする』というのをマイグレーションで実行したことがありました。 このマイグレーション(VERSION=1 とします)でやらかしていたことが後から判…

ERBでcase文を使うとsyntax errorになる問題

railsのビューで <% case params[:action] %> <% when 'hoge' %> ほげ <% when 'fuga' %> ふが <% end %> としたら、"syntax error, unexpected tIDENTIFIER, expecting kWHEN" というエラーが出ました。 次のように書かなければならないようです。 <% case …

特定のディレクトリ以下のファイルを対象に文字列置換【find編】

こちらの記事にフィードバック頂きまして、「findコマンド使ってもできますよ!」とのこと。 $ find . ! -name '*\.log' | xargs grep -l str_before | xargs sed -i 's/str_before/str_after/g' # 置換不要なログファイル等を除外 # 残りのファイルについて…

Railsのログ監視&デバッグをcoLinuxで行う

ログの監視 Windowsでrails開発していた頃は、デバッグ方法の一つとしてコマンドプロンプト×pメソッドを利用していました。 が、coLinux開発だとコンソールには何も表示されない! => 嘘。これは -d オプションで立ち上げた場合でした。 いちいちログファイ…

特定のディレクトリ以下のファイルを対象に文字列置換

railsアプリ内のある文字列を一気に置換したかったので、アプリのルートディレクトリで次のコマンドを実行しました。 $ grep -lr str_before ./ | grep -v '\.log' | xargs sed -i 's/str_before/str_after/g' # 置換前の文字列を含むファイルをすべて表示 #…

【Rails:6】コントローラとビュー(応用編)

セッション セッションあるユーザからのリクエストを、他ユーザのものと区別するための接続情報。通常サーバは、複数のリクエストを受け取ったとき、すべて独立したものと見なします。ユーザのログイン状態を保持したい場合などは、ユーザとサーバの接続状態…

【Rails:7】データベースとモデル(応用編)

リレーションシップ リレーションシップテーブルとテーブルの関連のこと。 外部キー別のテーブルの主キーを参照するフィールド。 参照先テーブル(entries) id(主キー) title 1 8/1の日記 2 8/2の日記 3 8/3の日記 参照元テーブル(comments) id entry_i…

【Rails:8】セキュリティとAjax

セキュリティ SQLインジェクションWEBアプリケーションに対して、不正にデータを操作したり、任意のSQL文を実行させてしまうような攻撃。 危険な式次のように、変数を直接SQL文に埋め込むコードは危険です。 # params[:owner_name] = "hoge" のとき Mail.fin…

Hpricotを使って、文字列に含まれるHTMLタグを取得

先輩にHpricotというライブラリを教えて頂いたので、これを使ったモジュールを作ってみました。 やりたいこと 特定のタグ以外は非推奨タグとする 文字列strに含まれるHTMLタグを調べる 非推奨タグが含まれていたら、その部分(開始タグ〜終了タグの文字列)…

【Rails:4】MVCの連携

フォームとモデル フォームとモデルの連携レコード(モデル)⇔コントローラ⇔フォーム(ビュー) フォームの作成(ビュー) <% form_for :mdlname, @objname, :url => {:action => actname, :id => @objname}, :html => {:class => 'formname'} do |form| %> …

【Rails:5】テスト

テストとは テストアプリケーション開発において、ソフトウェアが正しく機能するかどうか調べる作業。テストスクリプトには、仕様書/設計書としての役割もあります。railsではテストが重視されており、テストに必要な機能が用意されています。 単体テスト(t…

HTMLタグ周りのヘルパーメソッド

HTMLタグだけエスケープしないヘルパーメソッド railsではよく、XSS攻撃対策としてhメソッドを使いますが、はてダのようにHTMLタグをタグとして認識させたい場合、hメソッドは使えません。 HTMLタグだけタグとして認識させ、その他の危険要素はエスケープで…

【Rails:3】データベースとモデル

データベースとモデル リレーショナルデータベース データベース モデルオブジェクト レコード(行) ひとつのデータ フィールド(列) データの属性 テーブル レコード×フィールドの集合 ORM(Object-Relational Mapping)データベースのレコードとオブジェ…

【Rails:2】コントローラとビュー

HTTPの基礎 HTTP::ブラウザとサーバが情報を送受信するための通信手段 リクエスト(ブラウザがサーバに送る要求) GET /ctr_name/index HTTP/1.1 (以下、ブラウザとサーバに関する情報=HTTPヘッダ) … … レスポンス(サーバがブラウザに返す応答) HTTP/…

【Rails:1】Ruby on Railsの概要と導入

Ruby on Railsについて 『Ruby on Rails』とはRubyでWEBアプリケーションを開発するためのフレームワークのひとつ。デンマーク人のプログラマ、David Heinemeier Hansson(デビット・ハイネマイヤ・ハンソン)氏がオープンソースソフトウェアとして開発しま…

rakeが終了したらビープ音で知らせる

rake走らせて別の作業をしていると、終了したことに気づかず十数分放置・・・みないなことがよくあるので、rakeの終了をビープ音で知らせてくれるシェルスクリプトを書きました。 【環境】 railsアプリ:: /home/admin/apps/hoge 【スクリプト】 /home/admi…

windowsXPでフォルダを開くとき、常にツリー表示する

フォルダをショートカットリンクから開いたりするとツリー表示にならなくて、毎回【表示】⇒【エクスプローラバー】⇒【フォルダ】するの面倒・・・。 と思っていたら、ちゃんと方法がありました。 エクスプローラバーでフォルダのツリー表示をいつも利用する…

coLinux起動と同時にシェルスクリプトを実行する

coLinuxログイン後、railsアプリのWEBrickを自動起動する - L’Isle joyeuseの記事について、 「コマンド打たずに自動起動させる方法もありますよ!」とレスポンスを頂きましたので、調べてみました。 【環境】 自動起動させるスクリプト:: /home/admin/rub…