ホーム ブログ ページ 58

Google Analtyicsのイベントトラッキング機能について

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

アクセス解析チームの中林です。
本日はGoogleAnalyticsイベントトラッキング機能について簡単にお話ししたいと思います。

■イベントトラッキングとは?

PVが「表示されたページの閲覧数」であることに対してイベントトラッキングは該当するボタンやリンクの「クリック数」となります。

■イベントトラッキングで可能になったこと
クリック数の計測が可能に! ※過去も仮想URLを付与することで、クリックを計測は可能でしたが   外部リンクやPDFに仮想URLを付与した場合、仮想のPV数が   増えてしまうといったことがあり、分析用のプロファイル作成が必要でした。

   仮想URLの設定方法は過去記事から→Google analyticsでPDFファイルをカウントする方法
イベントの詳細な分析が可能イベントトラッキング内で、「カテゴリー」、「アクション」、「ラベル」、「値」と設定できるので、より詳細な分析が可能となります。

■イベントトラッキングの記述方法・書式
イベント ※GoogleAnalyticsのトラッキングコードは、イベントよりも上位に記述する必要があります。

◇用語説明

    ● カテゴリー(必須項目)⇒ イベントごとのグループ名
    ● アクション(必須項目)⇒ ユーザーの行動、任意の文字列、
    ● ラベル        ⇒ URL、メモ等、任意の文字列、
    ● 値          ⇒ クリック時の値(数値)を設定できます。
     ※「値」はコンバージョンにおけるコンバージョンバリューのようなものです。

例えば下記のようなグローバルナビゲーションとローカルナビゲーションが同一URLのサイトがあったとします。
(例)KBMJ(http;//www.kbmj.com)同一URLのクリック計測

グローバルナビゲーションとローカルナビゲーションのクリック数を計測したいけれどリンクのURLにパラメータをあまりつけたくないサイト管理者も多いと思いますので、
グローバルナビゲーションとローカルナビゲーションのクリック数を計測する場合にイベントトラッキングを使用する例を記述してみます。

●グローバルナビゲーション(例)
onClick=”pageTracker._trackEvent(‘Top-page’, ‘inner-link’, ‘G_navi_solution’);” />

●ローカルナビゲーション(例)
onClick=”pageTracker._trackEvent(‘Top-page’, ‘inner-link’, ‘L_navi_solution’);” />

上記の例では
カテゴリーに、「どこのページ」か。アクションに、「内部リンク、外部リンクの区分け」ラベルに、「クリックした個所」を記述しています。
こうすることで、GoogleAnalyticsの「コンテンツ」>「イベントのトラッキング」でデータを取得することが可能となります。
これで、余計なパラメータをつけたり、仮想URLによるPV数の増加なく、どこが一番利用されているかということをGoogleAnalytics上で取得が可能となります。    あくまで、一例なのでもっと良いカテゴリーやアクションのラベルの設定があると思います。非常に便利な機能なので、ぜひぜひ使ってみてください。

KBMJ GoogleAnalyticsのスクールも開催中です!

Google Analyticsスクールでは、セミナーやブログではお伝えしきれない細かな設定方法やアクセス解析手法について、徹底的に解説いたします。 少人数のスクール形式だから、状況やレベルに合わせてインタラクティブに、より詳しく、実用的な活用術を徹底指導いたします!

vimのお気に入りプラグイン

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

vimにプラグインを入れてさらに便利に使いましょう!

中でも、コメントアウトのトグルができるプラグインなど、

お気に入りのプラグインをいくつか紹介してみます。

**svn-diff.vim

http://www.vim.org/scripts/script.php?script_id=978

svn commit時、コメント入力画面と共にsvn diffが表示されます。

mオプションを使わないでcommitし、SVN_EDITORがvimの場合に有効です

しっかりdiffしてもデバッグ行消し忘れ等よくありますが、

このプラグインがなければさらに忘れそうですので助かります。

EnhCommentify.vim

http://www.vim.org/scripts/script.php?script_id=23

拡張子別にコメントアウトをトグルします。

shift+vで範囲選択し、\cなどで実行できます。

erbファイルなどもトグれますので助かります。

qbuf.vim

http://www.vim.org/scripts/script.php?script_id=1910

シンプルなバッファ切り替えプラグインです。

以下のような感じで.vimrcに設定すると切り替えメニュが呼び出せます。

	let g:qb_hotkey = "<space><space>"
	

j/kで選んでEnterのような操作で切り替えができるので、

開いてるファイルが少なければ、とても早いです。

その時、改行が半角スペースになった

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

改行コードとは、まことにややこしきもの。
気付きし時には元の形を留めざる事、少なからずや。
あな、事件はクチコミの確認画面にて起こったのでございました・・・・・

以下、今回の検証環境です。

【機能】
・ASPサービスのクチコミ機能。ユーザのページにティッカーを埋め込むタイプ。
・入力フォームからクチコミを投稿し、確認画面を表示した後、データベースに保存する。

【仕様・条件】
1. ASPサービスである等の諸事情により、セッションは使わない。
2. データベースには、改行コードはタグ変換せずそのまま保存する。
3. フォームが送信された段階で、用意してあったERBテンプレートに入力内容を渡し、
  結果を確認画面用htmlとして保存。
4. 確認画面に遷移し表示要求が来たら、3で保存したhtmlの内容を確認画面として返す。

まあ、ごちゃごちゃ書きましたが、簡単に説明すると、
例えば、あらかじめ用意されている確認画面用のテンプレートは以下のようなものです。〜〜 表示部分 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
<table>
<tr>
<td>レビュー</td>
<td><%= (h @review).gsub(/\r\n|\n|\r/, “<br/>”) %></td>
</tr>
</table>
〜〜 フォーム部分 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
<form>
<input type=”hidden” name=”review” value=”<%= h @review %>”>
</form>

@reviewがユーザが入力/送信したレビューの内容です。
表示部分ではレビューの改行コードを<br>タグに変換して出力し、
フォーム部分では本登録用にhiddenで同じ内容を埋め込んでおきます。
このテンプレートに、送られてきた入力内容@reviewが渡され、rubyが実行された結果を
htmlとして保存。確認画面としてそのhtmlをユーザ側のページに返すという仕組みです。

そもそもこのやリ方がダメ!とかあるかと思いますが、
今回はあくまでこの方法でやる場合の検証なので、あしからず。
ていうか、やりたいんで。これで。

さて、この方法で確認画面を表示すると、表示の方はきちんと改行されて表示されました。
で、そのまま投稿ボタンを押して送信し、「投稿ありがとうございました」の完了画面が
出たので、いざ投稿された内容を確認してみると・・・・・
あれ?改行コードが半角スペースになってるぞ?

フォーム送信から確認画面を介さず直接データベースに叩き込んだところ、
その場合はきちんと改行コードのまま保存されてました。
てことは、確認画面にhiddenで埋め込んだところが怪しいっぽい。

html化された時点で改行コードがどうなってるのかは定かじゃありませんが、
いろいろ調べた結果、HTMLユニコード(10進)に変換すれば良さそうだと判明。
hiddenの箇所をこう変更してみた。<input type=”hidden” name=”review” value=”<%= (h @review).gsub(/\r\n|\n|\r/, ‘&#13;&#10;’) %>”>

これで再度投稿を試みたところ・・・・・
よし!ちゃんと改行コードとして保存されたぞ。

ちなみに、「&#13;&#10;」はwindowsの改行コードで、Mac、Unixはそれぞれ
「&#10;」「&#13;」になるそうです。
どうせ出力時に<br>タグに変換するため、データベースに保存する改行コードは
何でも良かったもので。

[Ruby] yield ってどんなもの?

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

ご無沙汰してます。トマトです。
自分自身もよくわからなかった、ruby の yield について
理解がてら説明してみます。

yield とは?

一言で行ってしまうと、 ブロックに処理を引き渡してくれる役割をもっています。
文字で書くと非常にわかりづらいので、
実際に動作を見てみましょう。。。

  def test
puts "#################"
puts "yield実行前"
puts "#################"
yield(1,2)
puts "#################"
puts "yield実行後"
puts "#################"
end

test do |x,y|
my_sum = x+y
puts "#{x}+#{y}=#{my_sum}"
end

こんな感じのコードを書いたとすると、 実行結果は下記の通りになります。

  #################
yield実行前
#################
1+2=3
#################
yield実行後
#################

実行結果を見る通り、yield を記述した箇所で
ブロックに処理を引き渡して実行しているのがわかります。
上記はすごく単純な例になりますが、少しでも理解の助けになればと思います。

Tempfileを使ってリソースを有効活用

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

とあるテーブルのいくつかのカラムをTSVファイルに書き出し、
ダウンロードするという処理が重かったので
Tempfile等を使って少し軽くした。

※Tempfileの説明はリファレンスを参照。
http://www.ruby-lang.org/ja/man/html/tempfile.html

Before


# 細かい処理は省略。
# あくまで例なので、connection.executeでやればいいじゃんというのは無しで。。。
# Item は Model Class。

def download
 colnames = Item.column_names

 buf = String.new
 buf << colnames.join("¥t")
 buf << "¥n"

 Item.all.each do |item|
   buf << colnames.map do |col| item[col] end.join("¥t")
   buf << "¥n"
 end

 send_data(buf, :filename => "items.tsv")
end

これだと、Itemのサイズが数百万レコード等、巨大な場合、
Item.all と buf 辺りでメモリを大量に消費しそう。

Item.allだと一度に全てのItemのインスタンスを保持するが、
別に上記処理の場合、小分けしても問題ないね。
# yieldとか使って1行ずつ読み込んだ方がさらにいいかも?

そもそもファイルを生成し、最終的に出力するのだから、
一時的な情報(buf)は、メモリではなくファイルに書き出し、
そのファイルをそのまま渡した方がリソースを有効活用できる。

という訳で↓

After


DEV_NUM = 1000

def download
 colnames = Item.column_names

 temp = Tempfile.new('items')
 temp.puts colnames.join("¥t")

 for i in 0..Item.count/DEV_NUM
   Item.all(:limit => DEV_NUM, :offset => i*DEV_NUM).each do |item|
     temp.puts colnames.map do |col| item[col] end.join("¥t")
   end
 end

 temp.close
 send_file(temp.path, :filename => "items.tsv")
end

処理速度は余り変わらないものの、
取りあえず、メモリ馬鹿食いでプロセスが落ちる事は無くなった。

よかったよかった :)

P.S.
残されたファイルの消去は。。。cronで削除かなぁ

list-style-imageを使わずにリストマーカーに画像を使う

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは、maiです。

今回は初心に返って、ごく簡単で使いどころが多い「リストマーカーを画像にする」について。

リストマークを画像にする場合、
list-style-imageというプロパティが既にありますが、
これを使うとちょっとズレたりしちゃうのでデザインとしてちょっと…ということがあります。
そういうズレを防ぐためにも、リストマークを画像にする時は
backgroundで入れてしまいましょう。

具体的にはこんな感じ↓

◆list-style-imageを使った場合

 cssの記述自体は簡単ですが、テキストに対して上ズレしちゃってます。

li { list-style-image: url(../list-mark.png); }

◆backgroundを使った場合

cssはlist-style-imageに比べてちょっと記述が増えますが、位置をバッチリ調整できます。
天地の位置をcenterに指定することで、細かく指定しなくてもほぼ中央に配置することができます。
左のpaddingは画像の幅+余白の3pxを取り、上下のpaddingは今回はlist-style-imageを使った場合の余白にあわせて調整しました。

li {
    padding: 1px 0 2px 23px;
    background: transparent url(../list-mark.png) no-repeat left center;
}

◇リストのテキストが長くなってしまうとき

上記の記述だと、テキストが長くなったときにリストマークの位置がliの高さに対して中央になってしまうので
テキストが2行以上になりそうな時は、単位em(1em=1文字分の長さ)を使って調整します。

li {
    padding-left: 23px;
    background: transparent url(../list-mark.png) no-repeat left 0.1em;
}

emを使うことで,フォントサイズを変更する必要が出たときに
画像の位置を調整し直す手間を減らすことができます。

PostgreSQL 8.3 以降からの postgresql.conf を、サーバースペックによるデフォルト値を設定し、パフォーマンスチューニングする

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは、O2 です。

今回は、postgresql の設定ファイル(postgresql.conf) に関しての、私が最近設定している

デフォルト値を公開しようと思います。

実際、インストール直後の設定では、「ロースペックのマシン環境でも動作する」設定の為

最近のサーバースペックにあった、デフォルト値を記述してみようと思います。

とは言っても、私が扱っている最近のサーバーのメモリは、8GB、16GB、32GB で、さらに

PostgreSQL 8.3以降を使用しているので、PostgreSQL 8.3以降での、メモリ3パターンでの

デフォルト値を紹介します。

注意.あくまでも、私が割り出したデフォルト値ですので、どのように使用するかによってチューニングは

必要になりますので、参考にご使用ください。

説明の前に

 PostgreSQL 8.2 以降かな?(間違っていたらだれか指摘してね)、設定値関して

 shared_buffers などのメモリ設定が、MB(メガバイド)や、GB(ギガバイト)という単位で

 設定できるようになっている為、設定しやすくなっています。

共通

 max_connections = 200

  log_destination = ‘stderr’

  logging_collector = on

  log_directory = ‘/var/log/postgresql’

  log_filename = ‘postgresql-%Y-%m-%d.log’

  log_min_messages = info

  log_error_verbosity = verbose

  log_line_prefix = ‘%t:%r[%p-%v]’

  log_autovacuum_min_duration = 0

  autovacuum = on

  log_lock_waits = on   deadlock_timeout = 30s

メモリ:8GB の場合

  shared_buffers = 2GB

  work_mem = 32MB

  wal_buffers = 512KB

  checkpoint_segments = 16

  random_page_cost = 3.0

  effective_cache_size = 2GB

メモリ:16GB の場合

  shared_buffers = 3GB

  work_mem = 32MB

  wal_buffers = 512KB

  checkpoint_segments = 16

  random_page_cost = 3.0

  effective_cache_size = 3GB

メモリ:32GB の場合

  shared_buffers = 8GB

  work_mem = 64MB

  wal_buffers = 512KB

  checkpoint_segments = 32

  random_page_cost = 3.0

  effective_cache_size = 8GB

※今回の設定は、サーバーをDB専用にした場合を想定して書いてます。

Merbを使ってみる

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは。T氏です。

最近は、ようやくRailsの開発にも慣れてきました。

慣れてくると、Rails以外のフレームワークも使ってみたいな、なんて思ったりします。

そこで、以前から気になっていたMerbのインストールから起動までをご紹介したいと思います。

まずはインストールからです。

*ここでは、rubyとgemはインストール済みを前提とさせて頂きます。

merbのインストール

  # 約50個近くインストールされるので注意 
$ sudo gem install merb
Password:
Building native extensions.  This could take a while...
Successfully installed addressable-2.0.2
Successfully installed extlib-0.9.12
Successfully installed data_objects-0.9.12
Successfully installed dm-core-0.9.11
.....
.....
.....
Successfully installed merb-1.0.12
  # デフォルトはsqliteなので、
# mysql を使いたい方はこちらをインストール
$ sudo gem install do_mysql
  # postgresを使いたい方はこちらをインストール
$ sudo gem install do_postgres

これでインストールは完了です。

次にプロジェクトを作成してみましょう。

プロジェクトの作成もコマンド一つで行えます。

  $ merb-gen app test-merb
Generating with app generator:
[ADDED] Rakefile
[ADDED] app/controllers/application.rb
[ADDED] app/controllers/exceptions.rb
[ADDED] app/helpers/global_helpers.rb
[ADDED] app/models/user.rb
[ADDED] app/views/exceptions/not_acceptable.html.erb
[ADDED] app/views/exceptions/not_found.html.erb
[ADDED] autotest/discover.rb
[ADDED] autotest/merb.rb
[ADDED] autotest/merb_rspec.rb
[ADDED] config/database.yml
[ADDED] config/dependencies.rb
[ADDED] config/environments/development.rb
[ADDED] config/environments/production.rb
[ADDED] config/environments/rake.rb
[ADDED] config/environments/staging.rb
[ADDED] config/environments/test.rb
[ADDED] config/init.rb
[ADDED] config/rack.rb
[ADDED] config/router.rb
[ADDED] public/javascripts/application.js
[ADDED] public/stylesheets/master.css
[ADDED] merb/merb-auth/setup.rb
[ADDED] merb/merb-auth/strategies.rb
[ADDED] merb/session/session.rb
[ADDED] .gitignore
[ADDED] public/.htaccess
[ADDED] tasks/doc.thor
[ADDED] public/javascripts/jquery.js
[ADDED] doc/rdoc/generators/merb_generator.rb
[ADDED] doc/rdoc/generators/template/merb/api_grease.js
[ADDED] doc/rdoc/generators/template/merb/index.html.erb
[ADDED] doc/rdoc/generators/template/merb/merb.css
[ADDED] doc/rdoc/generators/template/merb/merb.rb
[ADDED] doc/rdoc/generators/template/merb/merb_doc_styles.css
[ADDED] doc/rdoc/generators/template/merb/prototype.js
[ADDED] public/favicon.ico
[ADDED] public/images/merb.jpg
[ADDED] public/merb.fcgi
[ADDED] public/robots.txt
[ADDED] tasks/merb.thor
[ADDED] spec
[ADDED] gems

Rails経験者なら、見た事があるようなファイルが生成されていますね。

最後にルートディレクトリに移動して、merbの起動をしてみましょう。

起動は下記のコマンドで行えます。 

  $ merb

しかし、ここで一点注意が必要です。

私の環境では実行時に下記のエラーが出ました。

   ~ 
~ FATAL: The gem data_objects (= 0.9.11, runtime), [] was not found
~  

どうやら見つからないようです。

これは、設定ファイル(config/depencies.rb)を見ると、

下記の記述がありますので修正する必要があります。

   #do_gems_version   = "0.9.11"
do_gems_version = "0.9.12" # gem list --local | grep data_objectsでバージョンを確認

これで、改めて起動すると無事に立ち上がります。

今日はmerbのインストールから起動までご紹介致しました。

ご覧いただき、ありがとうございました。

rails2.2のbutton_to_function

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

rails2.2にてformの入れ子ができないようで、でもどうしても1formに複数ボタンがあり、 複数アクションにしたい場合はどうすればよいか。 調べましたところ、button_to_functionを使いましたら、jsでディレクトリの指定ができるようです。ただ、button_to_functionは名前通りbuttonですのでフォームをsubmitする必要がない時、使えると思います。詳しくはrailsのapiドキュメントをご参照いただければと思います。…

Andorid開発環境構築

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

今回はAndroidアプリの開発環境構築しましたので手順を投稿します。

OSはmac10.5です。

大きく分けて下記2項目を行いますが,すでにeclipseの環境が
ある前提で話を進めていきます。

・ android仮想デバイスのインストール
・ eclipseにandroid開発用のプラグインをインストール

1,android仮想デバイスのインストール
   下記よりandroids sdk をダウンロード
    http://developer.android.com/intl/ja/sdk/1.5_r3/index.html
    
    任意のディレクトリに展開(今回はアプリケーションフォルダに展開しました)
    パスを通す
    $export PATH=$PATH:/Applications/android-sdk-mac_x86-1.0_r2/tools

    次にAndroid Virtual Deviceの作成
    $android create avd –name myroid  –target 3
        –name のあとには デバイスの名前
        (–target 1 なら Andorid1.1)
        (–target 2 なら Andorid1.5)
        (–target 3 なら Andorid1.5をベースにGoogleApls)

     今作成したデバイスの起動
    $emulator -avd myroid
   
2,eclipseにandroid開発用のプラグインをインストール
   
   ここからはeclipse上で作業を行いプラグインをインストールします。
   Eclipse 用 ADT プラグインのインストール、eclipseのバージョンによって
   違うようです。(eclipse3.5がリリースされていたので3.5で構築をしました。
   ちょっと重い気がしますが問題なく動作しております)

   eclipseのバージョンが3.3の場合
      → https://dl-ssl.google.com/android/eclipse/
   eclipseのバージョンが3.4の場合
      → https://dl-ssl.google.com/android/eclipse/

   Android DDMSとAndroid Development Toolsにチェックを入れインスール
   eclipseの再起動を行えばプラグインが反映されます。

今回は開発環境構築を行いましたので、次回の投稿ではサンプルをご紹介できればと思います。

Ethnaの動作イメージ。

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

Ethnaがどんな動作をしているか追っていきましょう!

  1. クライアントはControllerクラスにアクセスする。
  2. アクセスされたControllerクラスは、クライアントのリクエストに対応する処理が定義されているAction Class(という名前の)オブジェクトを生成し、実行します。
  3. Action Classオブジェクトは処理(バリデーションやDBとのやりとり等)を実行し、結果をControllerオブジェクトに返します
  4. ControllerオブジェクトはAction Classが返した結果に対応するビューオブジェクトを生成します
  5. ビューオブジェクトはHTMLをクライアントに対して表示する

Model・View・Controllerとは?

MVCとは、処理の中核を担当する「Model」、表示・出力を担当する「View」、入力を受け取ってその内容に応じてViewとModelを制御する「Controller」のことで、

この3つの要素を用いてシステムを実装する方式をMVCモデルと呼びます。

Ethnaでは、このModelに含まれる箇所が、Actionclassになります。

といった感じで、それぞれの役割を切り離すことで、仕様変更の影響を受けにくいし、機能ごとの役割が明確化されるんですね。

画像があれば、理解しやすいと思うんですが、用意できなくてスミマセン、、…

MacでOracle Instant Clientを利用する

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

先日Snow Leopardが発売されて、私もアップグレードしてみました。OSの起動、停止が早くなり、とても満足です。ただ…

問題もあって、残念ながら以前書いた記事(http://doruby.kbmj.com/8y/20090505/Mac_OS_X_Leopard__Oracle_)のインストール方法が使えなくなってしまいました。原因はSnow LeopardのJavaのバージョンとLeopardのJavaのバージョンが違うためぽいです。ごにょごにょしたら解決しそうですが、今回はさっぱりあきらめて、Railsで単にローカルマシンから別サーバのOracleへつなぐところまでをやってみました。

MacPortsから

	%port search oracle-instantclient
	oracle-instantclient @10.2.0.4.0 (databases)
	    Oracle database connection libraries
	

上記をインストールします。ただし、そのままインストールしようとしても駄目で、instantclientのzip自体は自分でダウンロードしてくる必要があります。

http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/intel_macsoft.html

上記から”instantclient-basic-10.2.0.4.0-macosx-x64.zip “と”instantclient-sdk-10.2.0.4.0-macosx-x64.zip”をダウンロードし、/opt/local/var/macports/distfiles/oracle-instantclientへ配置してください。

その上でインストールを行います。

	% sudo port install oracle-instantclient
	

これはあっけなく終わる筈です。で、実際Railsから接続する為に activerecord-oracle_enhanced-adapter (1.2.1) などもgem からインストールする必要があるのですが、実際の接続に使う ruby-oci8 1.0.6(200909時点stable最新)もインストールします。

このインストールですが、先ほど入れたoracle-instantclientのありかをきちんと教えてあげないといけないです。なので

	% export DYLD_LIBRARY_PATH=/opt/local/lib/oracle
	% gem install ruby-oci8 -v 1.0.6 -- --with-instant-client
	

DYLD_LIBRARY_PATHを設定した上で、ruby-oci8にinstantclientを使うオプションをつけてインストールする必要があるみたいです。

これで無事別サーバのOracleなどに接続できる筈です。

Flash Lite 1.1 のファイルサイズ(容量)を節約する9の方法

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

Flash lite 1.1 の開発を行う際に誰もが悩むのが、100KBのファイルサイズ制限の中で
いかにリッチなコンテンツを制作するかという部分ではないでしょうか。
今回は、表示側(グラフィック等)と制御側(スクリプト)に分けて、
ファイルサイズを節約するポイントをまとめてみました。

■グラフィック

(1)グラフィックはベクターで描く?画像を読み込む?
グラフィックをベクターにするか画像にするかは、そのグラフィックによって
ケースバイケースです。

実際には、画像とベクターの容量を見比べながら四苦八苦してみることに
なりますが、基本的な切り分けとしては、単純なパスの図形等は画像よりも
ベクターのほうが容量を節約できるので、ベクターで描くようにします。

逆に複雑なパスのベクターはアンカーポイントが沢山存在するため、画像よりも
容量を食う場合が多々あります。
ただし、シェイプの最適化を行って、見た目に影響が出ない程度にパスを単純化
することで、ガクっと容量が減ることもしばしばあります。
複雑なグラフィックの場合は、時間はかかりますが画像と見比べながら
調節していくと良いかと思います。


(2)読み込む画像の画質を調整
読み込む画像に関しては、読み込む前に画質や色数をある程度落としておく
ことも重要です。
PhotoShopやIllustrator等で保存する際に、画質のスライドバーを調節するか
カラーパネルで余分な色を削っていきましょう。
画質落とし過ぎかな・・・と感じるくらいでも、実機で表示してみると
意外と綺麗に表示されたりします。
画像形式はGIFかPNGがおすすめです。


(3)インスタンスを有効に使いまわす。
各所で使用するグラフィックはできるだけインスタンス化して使い回すことで、
ファイルサイズを削減できます。
また、同じ形状のグラフィックで色だけが違うもの等は色だけ変えて
使いまわすこともできます。
この辺りの節約術は、デザインの段階でも気にしながら作業を行う必要がありそうです。


■その他、表示側

(4)フォントはデバイスフォントを使用
フォントはデバイスフォントを使用することでファイルサイズを節約できます。
フォントサイズはキャリアや機種によってまちまちですが、12pxか24pxに
設定することで、キャリアや機種ごとの表示の差異は非常に少なくなります。


(5)無駄なフレームは使わない
空のフレームでも削除してみるとファイルサイズがを若干削減できる場合があります。
削ることができるキーフレームやトゥイーンで使用しているフレームを何フレームか
削ると更に効果があります。


■スクリプト
スクリプトの記述量が多ければ多い程ファイルサイズに影響します。

(6)共通化できるスクリプトはフレームアクションに。
同じような処理をしているスクリプトはフレームアクションにしてしまい、
callで呼び出して実行することで、記述量を減らすことができます。

※Flash Lite 1.1 では、functionが使用できないため、この call を度々
利用しますが、引数や戻り値は使えません。
引数や戻り値となる値はグローバル変数として保持しておくのが良いかと思います。


(7)変数名、フレームラベル名等

様々な箇所で記述される変数名、フレーム名だからこそ短くすればするほど、
ファイルサイズを節約できます。
理想としては、1〜3文字程度が理想と各所で言われていますが、
かえって難解なソースになることもあるかと思いますので、
切り詰めすぎずにほどほどに。


(8)URL等の長い文字列は変数に。
基本中の基本かとは思いますが、URL等、ソースの各所で使用する長めの
文字列は変数にいれて使い回すことで記述量を削減できます。


(9)for文等で動的に生成できる変数が沢山ある場合はベタ書きしない
for文等で動的に生成できる変数名、値が沢山ある場合は動的に作ってしまいましょう。
こうすることで生成された変数はメモリに持たせることができますので、
ファイルサイズを圧迫しなくて済みます。

以上、ファイルサイズに困ったら、一度上記の内容で実践できることがないか

見直してみるのはいかがでしょう。

本当は、最近流行っているタイトルっぽく 「Flash lite 1.1 のファイルサイズを節約する10の方法」とかにしたかったのですが・・・いまいち流行りに乗り切れずに9個止まりでした。。。

googleAnalyticsでonclickで複数ドメイン計測とtarget=”_blank”が使えない不具合

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

アクセス解析チーム中林です。
 
GoogleAnalyticsで複数ドメインを計測する場合、

GoogleAnalyticsではタグやリンクにちょっとした修正が必要となります。

詳しくは↓こちらをごらんください。
Google Analyticsで複数ドメインのサイトを計測する方法
http://doruby.kbmj.com/UsabilityAnalytics/20090416/Google_Analytics_2_1

今日は複数ドメインのサイトを計測する場合の注意点についてのお話です。

■通常のリンクの場合
上記のサイトにありますが、

Google Analyticsでは複数ドメインを計測する場合に
トラッキングコードの他に、ドメインをまたぐリンクに下記のように修正が必要となります。

<a href=”http://ga.kbmj.com/” onclick=”pageTracker._link(this.href); return false;”>同ウインドウ</a>

 ■targetで指定する場合

target=”_blank”
onclick=”pageTracker._link(this.href);

の二つの関数を使用すると関数同士が競合してしまって
うまくウインドウを開くことができなくなってしまいます。
(もしくはGoogleAnalyticsに正くデータが送られなくなってしまいます。)

×間違い<a href=”http://ga.kbmj.com/” target=”_blank” onclick=”pageTracker._link(this.href); return false;”>別ウインドウ</a>

○正しい
<a href=”http://ga.kbmj.com/” onclick=”window.open(pageTracker._getLinkerUrl(this.href),’_blank’); return false;”
>別ウインドウ</a>

上のリンクでは下記の関数を使用しています。


onclick=”window.open(pageTracker._getLinkerUrl(this.href),’_blank’); return false;

これによって、別ウインドウで開くとともに
Google Analyticsでデータを正しく取得することができるようになります。


ブラウザのセキュリティ設定を「高」にしている場合や
javascriptを防ぐセキュリティソフトを使用している場合は
上手く行かないことがあるようです。

参考になりましたでしょうか。

ではでは失礼いたします。

ファイラの選択(Windows)

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは

みなさんファイラをつかっていますか。
ファイラを使うとファイルの操作が早くなるのでおすすめできます。Windowsはファイラの種類が豊富で自分にあったファイラを選べます。

たくさんありますが、今回は私がつかっていてオススメな
テキストベースの2画面ファイラを1つを少しだけ紹介します。

「あふ」は0.3秒くらいで起動するファイラです
こういうインタフェースで操作します。


とっつきにくそうですし、実際とっつきにくいですが、いいです


この2画面ファイラ、Windows標準のエクスプローラと一番違うことはなにかといえば、
ファイルの操作(コピーや参照など)をすべてキーボードでできることです。腕がつかれません。

基本的に矢印キーでカーソル移動し、1キーでファイルをコピーしたりエディタで開いたりできます。
これだけで腕の移動距離を15cm少なくできるため、1ヶ月ではその30倍に達しますのでとても楽です。



矢印キーが遠いと感じる方はviライクにj/k等にバインドしましょう。私はそうしています。
「あふ」の紹介ではなく2画面ファイラの紹介になってしまいましたが、いいです。


最後にwindowsでおすすめなファイラを挙げます。「あふ」の他にもオススメできますので見てください。

キーボード派
あふ(早くて多機能)
だいなファイラ(FTP接続可能)
Paper Plane xUI (軽くて多機能でわかりにくい)

マウス派
X-Finder(右クリックの多機能ぶり)
まめfile(かわいい)
MDIE(エクスプローラライク)

まだありますけど、オススメできるのはやっぱりPaper Plane xUI なのでぜひ使ってみてください。

Cisco 基本的なモードについて

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは、tibaです。

今回は、Ciscoルータ/スイッチの基本的なモードについて紹介します

ルータ/スイッチの設定には、CLI(Command Line Interface)を使用しますがCLIにはいくつかのモードがあります。モードによっては受け付けないコマンドもあるので、理解しておく必要があります。

ユーザーモード

 プロンプトでは、「Router>」と表示されます。

  • このモードでは、一般ユーザーが基本的なテストコマンドを実行したり、システム情報を表示させたりできます。
  • 確認できる情報には制限があり、全ての情報を表示することはできません。

特権モード

 プロンプトでは、「Router#」と表示されます。

  • このモードでは、管理者がシステムの動作確認をしたり、全てのシステム情報を表示し確認することができます。
  • 特権モードとはLINUXのroot権限の様なものです。

グローバル設定モード

 プロンプトでは、「Router(config)#」と表示されます。

  • このモードでは、ホスト名やパスワードなどシステム全体にかかわる設定をすることができます。
  • ユーザーモードと特権モードでは情報を見る事はできますが、設定のすることができません。
  • このモードから他の設定モードに移行することができます。

ライン設定モード 

 プロンプトでは、「Router(config-line)#」と表示されます。

  • このモードでは、回線(コンソールやtelnetなど)に関する設定をすることができます。
  • 個々の回線にログインパスワード設定するのもこのモードです。

インターフェース設定モード

 プロンプトでは、「Router(config-if)#」と表示されます。

  • このモードでは、IPアドレスの設定など、ルータのインターフェースにかかわる設定をすることができます。
  • インターフェースごとに無効・有効にする設定や速度などのモード設定などができます。

ルータ設定モード

 プロンプトでは、「Router(config-router)#」と表示されます。

  • このモードでは、ルーティングプロトコル(ネットワークの経路情報を交換するためのプロトコル)などの設定をすることができます。

以上が、Ciscoルータ/スイッチの基本的なモードです。

各モードの意味を理解することで設定・確認の時にスムーズに作業を行うことができるので、覚えておきましょう。

AdWordsとGoogle Analyticsの連携方法

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

AdWordsとGoogle Analyticsの連携方法

はじめまして、アクセス解析チームのK山です。

初回の今日はAdWords広告とGoogle Analyticsの連携について説明したいと思います。

AdWordsアカウントをGoogle Analyticsに登録

これは、AdWordsとGoogle Analyticsのログイン用メールアドレス(以下、アカウントといいます)が異なっている場合の設定となるため、同一のアカウントを使っている場合は「AdWordsとGoogle Analyticsの連携設定」へ進んでください。
異なるアカウントを使っている場合はGoogle Analytics上で設定を行う必要があります。

◆AdWordsのアカウントを管理者として登録する。

①Google Analyticsにログイン後、プロファイルを選択し「ユーザーマネージャー」、「ユーザーを追加」の順にクリック。

ユーザーマネージャー
ユーザーを追加

②メールアドレスにAdWordsのアカウントを入力し、アクセスタイプをアカウント管理者にした後、変更を保存。

アカウント登録

AdWordsとGoogle Analyticsの連携設定

両者間でのアカウントの設定が済んだら、次にAdWordsの管理画面からGoogle Analyticsと連携するための具体的な手順を説明します。

 ◆AdWordsの管理画面でGoogle Analyticsのアカウントをリンクさせる。

①管理画面の「Analytics」のタブをクリックし、「Google Analyticsのアカウントを持っています。このAdWordsアカウントにリンクしてください。」をチェックし次へ。

アカウントのリンク

②連携させるGoogleAnalyticsのアカウントをプルダウンメニューから選択。その下のチェックボックスは2つともチェックをしアカウントのリンクをクリック。

アカウントをリンク

最後に、リンクさせたGoogle Analyticsのアカウントが正しいか確認し完了となります。

確認作業

以上でAdWordsとGoogle Analyticsの連携方法の設定は完了です。これで、Google AnalyticsでAdWordsの費用データも見る事ができるようになり、そのデータを元にROI分析も可能となります。

Google Analyticsをさらに活用するためのAdWordsとの連携方法でした。

WindowsにLinux開発環境を構築する方法

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

はじめまして。エンジニア初心者のlietoです。

WindowsにLinux開発環境を構築する方法を紹介します。
今回、VMwareで作成した仮想サーバの中にCentOSでLinux開発環境を構築していきたいと思います。

①VMwareで仮想マシンを作成


VMwareの「Create Virtual Machine」から、設定条件を選択して作成を進めます。

OSの設定では、それぞれ下記を設定してください。
Operating System:Linux operating system
Version              :Red Hat Enterprise Linux 5 (32-bit) ※CentOS5.3(32bit)使用のため 

全ての設定が終わったら、「Finish」を押して作成完了。

(設定例)

仮想マシンが作成できたので、次にCentOSを導入します。

②仮想マシンにCentOS導入

  1. isoイメージ(CentOS-5.3-i386-bin-DVD.iso)をダウンロードします。
  2. 「Summary」の「CD/DVD Drive」の「Edit」をクリックし、「ISO Image」を選択し、「Browse…」リンクからダウンロードしてきたisoイメージを選択します。
  3. 「Console」の画面上をクリックし、仮想マシンを起動。(Powered On)
  4. 再度「Console」の画面上をクリックし、しばらくするとインストールが開始します。

【仮想マシンでの操作】

インストールの前に、仮想マシンでの操作方法を説明します。

・カーソル移動「Tabキー」

・選択「Spaceキー」

・決定「Enterキー」

・仮想マシンから自分のマシンにマウスを移動させたい場合「Ctrlキー」+「Altキー」 【インストール】

インストール画面が立ち上がったら、「Enter」を押して、インストールを開始します。

  1. CDメディアのチェックをするか聞かれますが、ここは「Skip」で飛ばしちゃいましょう。
  2. 言語の選択・キーボード設定では日本語を選択します。
  3. あとの設定は、自分の構築したい環境に合わせて設定してください。

 ※「すべてのデータを消去して、このドライブを初期化しますか?」と警告が出てきた場合、「はい」を選択して問題ないです。

全ての設定が終わったら、20分程でインストールが完了するので、再起動します。

再起動をしたら、セットアップ画面が立ち上がるので、セットアップをしていきます。

 【セットアップ】

セットアップは、自分の構築したい環境に合わせて設定してください。

(設定例)

  1. ファイアウォール:無効 ※警告「はい」
  2. SELinux:無効 ※警告「はい」
  3. 日付と時刻:現在の日時に合わせる
  4. ユーザーの作成:入力事項を入力し、ユーザーを作成
  5. サウンドカード:そのまま次へ
  6. 追加のCD:そのまま次へ

全ての設定が終わったら、終了します。

VMwareに戻り、仮想マシンを起動してください。

③仮想マシンでCentOS起動

設定したユーザ名とパスワードを入れて起動してください。

これでLinux開発環境導入完了です!

④その他

『VMware Tools』

VMwareで「VMware Tools」をインストールすると、

「Ctrlキー」+「Altキー」を押さなくても、仮想マシンから自分のマシンにマウスを移動できるようになります。

また、仮想マシンと自分のマシンの間でコピーなどができるようになります。

とても便利なので、インストールすることをおすすめします。

簡単でしたが、WindowsにLinux開発環境を構築する方法を紹介しました。

それでは、また次回に。。

[Ruby] RGhost(Ruby Ghostscript)を用いたPDF生成入門

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは。

今回はRGhostを紹介しようと思います。

RGhost(Ruby Ghostscript)とは、PDFや画像(JPGなど)の生成ができるRubyライブラリです。検証環境Windwos XP
Ruby 1.8.6
Ghostscript 8.63

RGhostインストール前にする事
 RubyライブラリをしようするためRuby及びRubyGemsのインストールが必要です。
また、RGhost(Ruby Ghostscript)は、GhostscriptをレンダリングしてPDFなどを生成するためインストールが必要です。
RGhostのインストールgem install rghostサンプルをPDFで出力する方法
require ‘rubygems’
require ‘rghost’
RGhost::Config::GS[:path] = Ghostscript(gswin32c.exe)のパス指定
#例: RGhost::Config::GS[:path] = ‘C:\gs\gs8.63\bin\gswin32c.exe’
RGhost::Config.is_ok?.render :pdf, :filename => ‘is_ok.pdf’#サンプル(PDF生成)
RGhost::Config.environment_fonts.render :pdf, :filename => ‘environment_fonts.pdf’#サンプル2(PDF生成)
生成されたもの[サンプル1(PDF)サンプル2(PDF)]
サンプルをJPGで出力する方法
require ‘rubygems’
require ‘rghost’
RGhost::Config::GS[:path] = Ghostscript(gswin32c.exe)のパス指定
#例: RGhost::Config::GS[:path] = ‘C:\gs\gs8.63\bin\gswin32c.exe’
RGhost::Config.is_ok?.render :jpg, :filename => ‘is_ok.jpg’#サンプル3
RGhost::Config.environment_fonts.render :jpg, :filename => ‘environment_fonts.jpg’#サンプル4
生成されたもの[サンプル3(JPG)サンプル4(JPG)]簡単なPDFを生成する
require ‘rubygems’
require ‘rghost’

include RGhost RGhost::Config::GS[:path] = ‘C:\gs\gs8.63\bin\gswin32c.exe’
#base作成
doc = Document.new
#表示
doc.show “Row 1”
#改行
doc.next_row
doc.show “Row 2”,:color => :red
#表示+改行
doc.show_next_row “Test 1”
doc.show_next_row “Test 2”,:color => :blue
#x行目に移動(下記は10行)
doc.goto_row 10
doc.show_next_row “test 10”
doc.goto_row 9
doc.show_next_row “test 9”
doc.goto_row 12
#2倍表示
doc.scale(2,2)
doc.show “test +5”
#pdfで出力
doc.render :pdf, :filename => ‘rghost_sample.pdf’
生成されたもの[サンプル(PDF)まとめ
サンプルを用いたりすれば、簡単にPDFを作成できました。
他にも色々な事ができそうなRubyライブラリなので今後もいろいろためしてみようと思います。

Code Golf(フィボナッチ数列)

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは。

今回は、Rubyを使ったフィボナッチ数列のCode Golfを 行ってみました。

Code Golfとは

より少ないバイト数で課題をプログラミングする事を言います。
要するにいかに少ない文字数でプログラムを書けるか競う遊びです。

http://golf.shinh.org/p.rb?Fibonacci+Numbersの問題をやってみました。

・問題

f(1)->1

f(2)->1

f(x)->f(x-1)+f(x-2)

print f(1) to f(46)

以下にプログラムを短くしていった過程を示します。

まず、普通にフィボナッチ数列の定義通りにやってみる。

f=[];p f[1]=1;p f[2]=2;(3..45).each{|x| p f[x]=f[x-1]+f[x-2]}

できるだけ短いソースで書いてみる。

p 1;p a=b=1;22.times{p a+=b;p b+=a}

ここからはどうにか短くできるように頑張る。

a=b=1;23.times{p a;a+=b;p b;b+=a}

a=0;b=1;46.times{p a+=b;b=a-b}

a=0;b=1;46.times{p -a+=b=a-b}

p a=b=1;45.times{p b+=a=b-a}

最後のソースを軽く説明すると、フィボナッチ数列は1つ前の数と2つ前の数を足していくものですがこのソースでは、

(1つ前の数字+1つ前の数字ー2つ前の数字)

を表示させていっている感じです。

今回は最終的に28文字までしかできませんでした。24文字が一番短いらしいのですが、4文字とどきませんでした。今後、頑張りたいと思います。

この様なプログラムを書くのは、とてもおもしろいので皆さんも是非チャレンジしてみて下さい。

Ethna インストール

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

はじめまして。 KBMJのdelikuです。

初回ということで、PHPのフレームワークの1つEthnaを紹介したいと思います。

■そもそもフレームワークってなに?

 フレームワークとは、アプリケーションの「ひな形」や「骨組み」であり、開発する際に頻繁に必要とされる汎用的な機能をまとめて提供し、アプリケーションの土台として機能するソフトウェアのことです。

 ■Ethnaの特徴

 ・MVCモデルに基づくフレームワーク

 ・ethnaコマンドによるファイル生成

 ・アクションフォームクラスによるフォーム値の自動検証

 ・テンプレート変数の自動サニタイズ ごちゃごちゃと書いていますが、詳細は以下のhttp://ethna.jp/index.php?ethna:Ethnaに載っています。

 ■Ethnaのインストール 本日のメインの話に移ります。

・ http://ethna.jp/ethna-document-tutorial-install_guide.html

  上記URLのインスト-ル手順を参考にするのもアリです。

◆Pearコマンドによるインストール

 これが一番楽ちんな方法です。

 $ pear channel-discover pear.ethna.jp

 $ pear update-channels 最新版がほしいなら以下のコマンドを実行。

 $ pear install http://pear.ethna.jp/pear/Ethna-2.5.2009062201.tgz

 安定版がほしいなら以下のコマンドを実行。

 $ pear install -a ethna/ethna

 ちなみに2009/06/16に 開発版 Ethna 2.5.0 preview4 と 安定版 2.3.7 が配布されています。 2.5.0以降からutf-8に対応しています。 

 pearコマンドを利用すればご覧のように簡単にインストールできてしまいます!

最近人気な記事