Wednesday, September 7, 2011

Okinawa.rbの勉強会に参加してきました

記憶が風化する前に、書いておかなくては。 

技術的な話はしようにもできないのでシンプルに基本プログラマじゃないヒトからの感想。 

僕は昨年何かプログラムというものを始めようと思って、「簡単」をキーワードにいろいろ調べ続けてほんのちょっとだけperlに寄り道してからRubyにたどり着きました。「簡単」とか「カンタン」とか記事タイトルに入ってるものはそりゃあもうなんでも読んでいきました(プログラムもせずに。。。)。実際は全然簡単じゃあないんですけどね。以前に比べて簡単になったという話なだけで。

なので他の言語の歴史とかいいところや問題点がよくわかっていません。つまりRuby(というか最近の話)がすべての世代なのです。「こんなことがこんなに簡単にできるんですよ」ということも僕からすれば普通(にむつかしいこと)になっているという状況。でもこの年でニュータイプになってしまってるのがちょっと恥ずかしくも嬉しかったりしました。

エディタや環境についての話で盛り上がるのも生で見るのが初めてで、横で聞いているだけでちょっとプログラムが上手になったような気になりました。勉強会って、自分があんまわかってなくても、いいメンバーに恵まれたらそれだけでモチベーションを上げてくれるし、ほんといいもんですね。 

もちろん貰ってばかりだと悪いので、自分が今まで得てきた開発とはちょっと外れたウェブの知識を総動員してお返ししたいと思っています。まあそれもたいしたことはないんですが。。。まあでも開発というのは自分が思っている以上に限定された分野なのかもしれないという印象も受けました。デザインやインターフェイス、最適化などの部分は通常は入ってこないのが開発なのかなと思ったり。 

ということで、待望のOkinawa.rbが始まりました。そのたぶん第一回目に参加の感想でした。なんとかついていきたいと思っています。ただ発起人まわりの方々はrubyに留まらない、もっと自由な枠な集まりを心に描いているようで、その辺りは自分の身の丈にあった内容かどうかを見極めつつも積極的にがんばりたいと思います。 

興味のある方はまずはOkinawa.rb | Google グループに参加してみるといいと思います。まだオフィシャルブログとか固定URLもないかんじで流動的ですが、じきに落ち着いてくるんじゃないかと思います。ぜひ参加お待ちしています!初心者枠参加者と、それを支えてくれるやさしい先輩がたくさん集まりますように。。。

(初心者ビーム出し過ぎかもですが、これも初心者を誘い込むため!かな。。)

Wednesday, July 27, 2011

目の前のコードを楽しもう

まつもとゆきひろさんのtwitterで紹介されていたRubyマスターへの道のスライドから。

プログラミングの楽しみとは

「動いた!!」


「あんなに上手くできたら楽しいだろうな」?

幸せは現在にしかない
目の前のコードを楽しもう


調子に乗って原 悠さんの本も買おうと本屋でぱらぱらとめくってみたけど全然無理そうだったのでまたいつか。

Rubyで作る奇妙なプログラミング言語 ~Esoteric Language~
原 悠
毎日コミュニケーションズ
売り上げランキング: 282166

Saturday, April 23, 2011

ページ内のすべてのアンカータグにクリック計測用のタグを自動で追加する[Jquery][analytics]

参考にさせてもらったページ
外部リンクのクリックをGoogle Analyticsのイベントトラッキングに記録するJavaScript(jQuery使用)
個人的に使うことが多い9つのjQuery・JavaScriptスニペット

ページのURL、上の階層のid名、遷移先のURLを取得してanalyticsのイベントトラッキングで見ることができます。以前はアンカータグひとつひとつにonclickなんちゃらを入れていたので、それに比べると手品のような手軽さです。

ページ内で正しくidが使われていればこれだけで大体把握はできるはずです。inputボタンのクリックも拾うようにしています。input要素の場合は遷移先URLは空欄で上がってきます。

 jQuery(function($) {
 var _thisUrl = $(location).attr('href');
 $.each($('a,input:image,input:submit'), function() {
 var _thisId = $(this).closest("[id]").attr("id");
 $(this).click(function() {
  _gaq.push(['_trackEvent', _thisUrl, _thisId, $(this).attr('href')]);
  });
 });
});

Thursday, April 21, 2011

[ruby][SEO] ローカルに落としたサイトデータから全htmlのtitle、meta description、keyword、見出しタグを抽出してcsvに一発保存

サイト内の全htmlのtitle、meta description、keyword、見出しタグを一覧でcsvに書き出します。自分の環境では一応動いていますが、いろんなサイトのスクリプトを見よう見真似で作ったので他の環境でどのくらい使えるものなのかはわかりません。

自分が管理しているサイトではDescriptionやKeywordの大文字小文字が混在していたためエラーが出ました。rescueを初めて使ってみたところなんとか動きました。これが正しい使い方であればいいのですが。というかもっと簡潔にやる方法があれば教えてください。

以下の方法で使っています。
1.Sitesucker(OSX用)でサイトをローカルに保存。(オプションで画像やサウンドファイルなどの重いファイルを除外しておかないとサイト規模によってはすごく時間がかかります。)
2.ダウンロードしたフォルダにスクリプトを持っていってそこで実行。

require 'rubygems'
require 'hpricot'
require 'open-uri'

#改行削除メソッド
def erasebr (str)
     str.gsub!(/\n/, "")
end

#書き出しファイル名はドメイン名+csvtype+今日の日付
puts "ファイル名の先頭に入れる文字を入力してください!例)ドメイン名など半角英数"
name = gets.chomp

#書き出しメソッド
def makecsv (domain_name, csvtype)

#ファイル名は:ドメイン名+csvtype+タイムスタンプ
timestamp = Time.now.strftime("-%Y%m%d-%H%M%S")
csv_name = domain_name + "-" + csvtype.to_s + timestamp + ".csv"
puts "書き出しファイル名: " + csv_name

#ファイルタイプ(通常はhtml)
ext = "html"
text_array = Dir.glob("**/*.#{ext}")

open(csv_name, "w") do |f|
     # 全ファイル内のtitle、description、keywords、見出し要素を取得
     text_array.each do |file|
          doc = Hpricot( open(file).read )
            title = doc.at('title').inner_html
            # casesensitiveエラーを入れ子でrescue
            begin
              description = doc.at('meta[@name="Description"]')['content']
             rescue
                  begin
                   description = doc.at('meta[@name="description"]')['content']
                 rescue
                   description = "NO"
                  end
             end
            begin
              keywords = doc.at('meta[@name="Keywords"]')['content']
            rescue
                   begin
                   keywords = doc.at('meta[@name="keywords"]')['content']
                 rescue
                   keywords = "NO"
                 end
            end
            hone = doc.at('h1').inner_html
            htwo = []
            (doc/"h2").each do |d|
             htwo << d.inner_html
            end
         
          #改行を削除
          erasebr(title)
          erasebr(hone)
          erasebr(description)
          htwo.each { |c| c.gsub!(/\n/, "")}

      #要素ならべて書き込み
      if csvtype == "nokwd"
          s = file, ",title,#{title}", " ,description,#{description}", ",h1,#{hone}", ",h2,", htwo.join(","), "\n"
          else
        s = file, ",title,#{title}\n", " ,description,#{description}\n", " ,keywords,#{keywords}\n",
                 ",h1,#{hone}\n", ",h2,", htwo.join("\n,,"), "\n\n"
       end
       f.write s
     end
end
end

#keywordあり: kwd
#keywordなし : nokwd
makecsv(name, "kwd")
makecsv(name, "nokwd")


初さらしです。
動いた時は感動しました。