2008年3月アーカイブ

#7 とりあえずWebScrap完成しました!

   ブックマークに追加する
まだ直すところは結構あるのですが、最近時間をとれないので全部直すと大分時間が必要になってしまいます。
基本的な機能は全てできていますのでこの辺でリリースすることにします。
今後も時間をみてメンテはするつもりです。

テストは自分のGMailでしか試せていないため、別のメーラーだと上手くいかないかもしれません。
以下機能説明です。

WebScrap機能説明
・一般的なソーシャルブックマーク(共有機能はまだありません)
・会員登録時のメールアドレスにスクラップしたページの内容をメールする

まとめて読みたかったり、Webページを自分のメールアドレスに残したい時は結構便利だと思います。
ブックマークレットも用意しましたので使い方も簡単です。

それでは、以下URLより、使ってみてください。
※サーバ容量もあるので会員が増えたら、新規会員登録は停止する可能性があります。

WEBScrap - ボタンを押すだけ。お気に入りページをメールに保存!Webブックマーク管理


これで今年の目標の3つサービス立ち上げるの1つ立ち上げ完了!

Excelで指定した範囲のデータ数をカウントする(ピボットテーブルとグループ化)

   ブックマークに追加する
こちらも覚えておくとすごく仕事が速くなるテクニックの1つです。
Excelは使いこなすと本当に便利ですよね。覚書として残しときます。

例としてECで顧客ID、購入単価、注文日のデータがあるとします。

1)ピボットテーブルで購入単価のデータ個数で表示する

メニューより「データ」→「ピボットテーブルとピボットグラフ レポート」を選択する

2)作成したピボットテーブルをグループ化する

  • ピボットテーブル上でメニューから「データ」→「グループとアウトライン設定」を選択する
  • グループ化ダイアログで、自動の単位を変更し、OKをクリック
これで完了。ちょっとしたデータ分析は十分できますね。

以下サイトにわかりやすく解説されています。
Excelマニュアル ピボットテーブルの使い方2
http://www.seta.media.ryukoku.ac.jp/manual/office/excel/table/pibod2.html

#6 Railsでメッセージをフェードする(effects.js)

   ブックマークに追加する
今回は、Railsでメッセージを徐々に不透明にしていき、最後に消えるという処理を行う方法です。
scaffold等で自動生成するとflash[:notice]でメッセージが表示されると思いますが、それに対するエフェクトです。ちょっと、かっこよくなりますよ。

例は指定のrhtmlに対する処理です。

<head>
<%= javascript_include_tag :defaults %>
</head>
<<<省略 >>>
  <% if flash[:notice]  -%>
    <div id="notice">
      <%= flash[:notice] %>
      <script>
      <%= "new Effect.Fade('notice', {duration: 5})" %>
      </script>
    </div>
  <% end  -%>
<<<省略 >>>

こんなに簡単にできます。ただソースがかっこわるいんですよね。
もっときれいにできる方法があったら教えてください。

#5 railsでユーザーエージェント別でロジックを切り替える

   ブックマークに追加する
WebScrapもほとんどできているのですが、細かなところの手直しをしています。
今回はPC、モバイルで処理を分けたい時の方法です。

以下の通りで@requestオブジェクトから簡単に取り出せます。
(controllersでもviewsでもどちらでもOK)

user_agent = @request.user_agent
puts user_agent   #=> Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12 

たとえば、viewで切り替えたい場合も以下でOK!

<% if /agent/ =~ @request.user_agent -%>
  処理
<% end -%>


【参考サイト】

保守契約の種類(オンサイトとセンドバッグ)について

   ブックマークに追加する
ひさしぶりの更新です。システム開発の際に、ハードやソフトをベンダから購入するときがあります。
その際に保守契約をどのようにするかを決めるのですが、ハードでよくあるのがオンサイト方式とセンドバック方式。今日はその違いについて書きます。

【保守契約】
  • オンサイト方式
現場に担当者が来て修理するもの。センドバック方式より対応スピードがはやく、365日24時間対応や8時間対応などのプランがある。実際に担当者がきてメンテナンスするサービスのため料金はセンドバックより高くなります。

  • センドバック方式
ハードウェアに故障が発生したら、代替機を送付して故障対応するサービスのことです。代替機の発送に結構時間がかかります。先出し等のサービスで問合せ後すぐに代替機を送ってくれることもあります。

私はほとんどがオンサイト方式で契約します。サービス停止が発生すると運用がとまってしま場合がほとんどだからです。

#4 lighttpdで複数のRailsアプリケーションを立ち上げる(vartualhost)

   ブックマークに追加する
WebScrap(Railsアプリケーション)を立ち上げるのにApacheではなく、lighttpdを使おうと思います。
lighttpdを使用する理由は、Apacheは2系ではサポートされておらず、lighttpdの方が軽量で簡単ということだからです。
※それと実験的に新しいWebサーバを試してみたかったということもあります。

それでは手順は以下の通り。

1) サブドメインを設定する


23scripts.netのDNS設定で以下の設定をする

webscrap IPaddress A 

2) lighttpd.confの設定

ApacheでいうところのvartualHostの設定は、lighttpdでは、$HTTP["host"]で設定します。
ちなみに今回はサブドメインでrailsアプリケーションを切り替えましたが、URIで変更することも可能です。
※その場合は$HTTP["url"]を使用する
※今回はサブドメインでの設定例

$HTTP["host"] == "webscrap.23scripts.net" {
  var.servername               = "webscrap.23scripts.net"
  accesslog.filename          = "/var/log/lighttpd/" + var.servername + "/access.log"
  server.errorlog             = "/var/log/lighttpd/" + var.servername + "/error.log"
  server.document-root      = "/webscrap/public"
  server.error-handler-404   = "dispatch.fcgi"
  fastcgi.server             = ( "dispatch.fcgi" =>
                               ( "webscrap" =>
                                 (
                                   "socket" => "/var/run/webscrap.fcgi.socket",
                                   "bin-path" => "/webscrap/public/dispatch.fcgi",
                                   "bin-environment" => ( "RAILS_ENV" => "production" )

                                 )
                               )
                            )
}
はじめは、以下のsocketエラーが発生しましたが、”socket”の設定をしたら直りました。

2008-03-15 10:12:08: (mod_fastcgi.c.2703) fcgi-server re-enabled: unix:/tmp/application.fcgi.socket-0

3) lighttpdの再起動

再起動して、指定したドメインにアクセスしれば正常に画面が表示されます


/etc/init.d/lighttpd restart

Apacheモジュールも結構使いたいため、今後はApache+lighttpdで構築しようと思います。

【参考サイト】
非常に参考になりました。より詳細にlighttpdの設定方法がわかります。

#3 RailsでActiveRecord のエラーメッセージを日本語化する(ActiveHeart)

   ブックマークに追加する
ブログの更新も大分滞っていました。仕事が忙しくてなかなかWebScrapも作成する時間があまり取れないんですよね。おおよそ機能はつくれたのでいくつか、忘れないようにメモしときます。

今回は、Railsのエラーメッセージを日本語化するというもの。
Ruby-GetTextを使うのが一般的のようですが、今回はそこまできっちり作らなくても良いかなと思いActiveHeartを使用しました。以下手順載せます。すごい簡単ですよ。

まず以前にSubversionをインストールしてますので、railsコマンドで生成したフォルダで以下実行。


$ ruby script/plugin install http://svn.rails2u.com/public/plugins/trunk/active_heart/

+ ./active_heart/init.rb
+ ./active_heart/lib/active_record_messages_ja.rb
+ ./active_heart/lib/iso2022jp_mailer.rb
+ ./active_heart/lib/trans_sid.rb

これだけでエラーメッセージが日本語化します。すごく簡単ですよね。
テーブルのカラム名はそのままですので、その場合はmodelに以下設定をすればOK

set_field_namesでカラム名と表示文字列をマッピングする

例)
class Bookmark < ActiveRecord::Base
  set_field_names :title => 'タイトル', :url => 'URL'
  validates_presence_of :title, :url, 
                        :message => "が未入力です"
end

これで日本語化はOKです。ちなみにActiveHeart自体は非推奨とされており、Ruby-GetTextを使用するようにコメントされていますね。確かにサービスのグローバル化を考えればその方が良いと思います。
私はActiveRecordのエラー文言を日本語にしたいだけでしたので他のモジュールはコメントアウトしました。
一応そちらも記載しておきます。


warn 'ActiveHeart is obsolute plugin!'
warn 'Please use Ruby-GetText or jpmobile'

require_dependency 'active_record_messages_ja'if defined? ActiveRecord::Base
# Comment Out!
#require_dependency 'trans_sid' #require_dependency 'iso2022jp_mailer' if defined? ActionMailer::Base

【参考サイト】

[Excelで仕事術]特定のレコードだけの合計を求める(SUMIF, SUM+IF+配列数式)

   ブックマークに追加する
またまた、Excelシリーズです。特定のレコードだけの合計を求めたいときってありますよね?
そういったときに使える小技です。これも忘れちゃうのでメモっときます。以下2つの例

1) 商品の売上データから特定のカテゴリ(本)のみ集計する

これ正直ピボット使えばできるのですが、関数の方が手軽にできるときがあります。

※A列、カテゴリ=「”本”」とあるB列、売上金額を合計する
SUMIF(A:A, "本", B:B)


2) 商品の売上データから特定のカテゴリ(本)で東京のものを集計する

今度は条件が2つになります。SUMIFでは条件を1つしか指定できないので配列数式をつかいます。

※A列、カテゴリ=「本」でB列、地域=「東京」のC列売上金額を合計する
SUM(IF(A1:A10="本", IF(B1:B10="東京", C1:C10)))
入力後、Ctrl + Shift +  Enter を押せばOKです。


【参考サイト】
SUMIF関数で複数条件指定:Excel エクセルの使い方-関数/計算式-数学・統計

このアーカイブについて

このページには、2008年3月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2008年2月です。

次のアーカイブは2008年4月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

あわせて読みたいブログパーツ
フィードメーター - ウェブ-HACKS 「とりあえずやってみよう!」ブログ   
track feed
  • SEO対策 
  • _ 
  • _ 
  •  
  •  

このブログはクリエイティブ・コモンズでライセンスされています。