sinatraで使えるメタ言語

hamlやsassなどテンプレートエンジンが使えますがそれぞれどんなのか調べてみました

htmlのメタ言語

とりあえずこれを記述させる

<!DOCTYPE html>
<html>
  <head>
    <title>タイトル</title>
    <meta charset='utf-8'>
  </head>
  <body>
    <div class="main">
      <h1 id="title">ここに見出しを書く</h1>
    </div>
  </body>
</html>

haml

!!!
%html
  %head
    %title タイトル
    %meta{charset: "utf-8"}
  %body
    .main
      %h1#title ここに見出しを書く

インデントが階層を意味しシンプルな記述。使ってる人多い

slim

doctype html
html
  head
    meta charset="utf-8"
    title タイトル
  body.main
    #title
      h1 ここに見出しを書く

<,>,/>がない感じ

builder

xmlマークアップが作れる rssとか表示させるときに使える

xml.instruct! :xml, :version => '1.0'
xml.rss :version => "2.0" do
  xml.channel do
    xml.title "title"
    xml.description "description"
    xml.link "http://"
  end
end

検索がつらい

liquid

<!DOCTYPE html>
<html>
  <head>
    <title>{{ @title }}</title>
    <meta charset='utf-8'>
  </head>
  <body>
    <div class="main">
      <h1 id="title">{{ @maintitle }}</h1>
    </div>
  </body>
</html>

erbライクに埋め込みができる http://www.slideshare.net/TomohikoHimura/liquid

cssメタ言語

とりあえずこれを記述させる

body {
  background: #bbb;
}
.main #title {
  color: #e3e; 
}

sass

body
  background: #bbb
.main
  #title
    color: #e3e

入れ子にできてシンプルな記述

scss

body{
    background: #bbb;
}
.main{
  #title{
    color:#e3e;
  }
}

sassもだけど$line_color: #000;とかで定数も使える widthとかも計算させられる

less

body{
    background: #bbb;
}
.main{
  #title{
    color:#e3e;
  }
}

scssと違いが…… http://d.hatena.ne.jp/nenjiru/20111101/css_scss_less

色々調べてたら迷ってきた 検索しやすいやつ使おう

Sinatraで簡易アンテナサイト作った

Sinatraって何ですか?って状態で適当になんか作ってみまた

【初心者向け】RubyとSinatra、アンテナサイトの作り方 - 文系学生のプログラミング入門

こちらのサイトを参考にしたのですが、ただの丸写しだと面白くないので、以下を変更しました

  • simple-rssを使う
  • 複数のサイトから記事のリンクを取ってくる
  • cssでちょっとレイアウトする
環境
ファイルの構成
main.rb
public
  style.css
views
  layout.erb
  index.erb
layout.erb
<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="utf-8">
    <title>簡易アンテナサイト</title>
       <link href="style.css" type="text/css" rel="stylesheet" />
  </head>
  <body>
    <h1>簡易アンテナ</h1>
    <%= yield %>
  </body>
</html>
index.html
<ul>
    <% articles = [] %>
    <% while not @que.empty? %>
        <% url = @que.pop(true) %>
    <% rss = SimpleRSS.parse open(url) %>
        <% rss.items.each do |entry| %>
            <% article = [entry.title.force_encoding('utf-8'),entry.link] %>
            <% articles += [article] %>
        <% end %>
    <% end %>
    <% articles.each do |title,link| %>
        <li><a href="<%= link %>"><%= title %></li>
    <% end %>
</ul>

index.htmlは参考サイトのようにしてもいいのですが、今後弄れるように配列に入れました

style.css

ul {
    list-style-type:none;
}
li {
    font-size:20px;
    margin:0 0 5px 0;
    border-bottom: 2px #000 solid;
}

main.rb

require 'sinatra'
require 'sinatra/reloader'
require 'simple-rss'
require 'open-uri'
 
get '/' do
  urls = %w(
    http://mizchi.hatenablog.com/rss http://d.hatena.ne.jp/gamella/rss
  )
  @que = Queue.new
  urls.map{|url| @que << url}
  erb :index
end

get '/it' do
  urls = %w(
    http://blog.livedoor.jp/itsoku/index.rdf http://jsksokuhou.com/feed/
  )
  @que = Queue.new
  urls.map{|url| @que << url}
  erb :index
end

こんなんでこんなんができます

f:id:x6xo:20140101212117p:plain

すごく簡単に作れました。記事の投稿時間は:pubDate辺りで取れるんですがRSSによって多少違うのでそこを処理してサイト数増やせばそれらしいアンテナサイトになると思います。phpでアンテナサイトを作ったことがあるのですがそれより少ない手順で作れると思います

6xo/sinatra_simple_rss · GitHub

最高のレコメンド

 先日とあるサイトで手いにれたレコメンドシステムは最高だった。よくあるレコメンドと違って、僕が洗濯機を買ったら他の洗濯機を薦めてきたりはしない。買った時点で僕は世界で最も新しい洗濯機が欲しくない人間だ。程度の低いシステムにはそれがわかってない。だから僕に新しい洗濯機を薦めてくる。代わりにそれは新しい洗濯機に必要な洗剤やネットを薦めてくれた。
 それからの買い物は最高だった。僕が買うべきものはすべてレコメンドシステムが教えてくれた。僕が買うべき本。僕が買うべき音楽。僕が買うべき煙草。すべてが僕にぴったりだった。それは僕がものを買うごとに僕がどんな人間なのかを理解してシステムを改良していく。
 あるとき僕は気づいた。最近買い物をするといつもある商品が画面の端にレコメンドされているのを。僕は試しにその商品ページを見てみた。まさに僕が欲しいものそのものだった。やはりこのレコメンドシステムは最高だ。僕はさらにこのレコメンドシステムを信頼するようになった。
 それからも僕はこのレコメンドシステムを使い続けた。相変わらず僕に最適の商品を見つけ出してくれる。最高だ。
 ある日友人が家に来た。彼は僕の部屋を見て一言放った。
「あれ? 趣味が変わっちまったのか」

それでもぼくはマイナーを選ぶ

ぼくが無意識的にメジャーを避けてるなと記憶している最初の出来事は小学生の頃だった。当時はハリーポッターが日本でも発売され、テレビで連日取り上げられ大ブームとなっていた。ぼくもクラスの人間たちが読み始める少し前に手に入れて読んでいた。それなりに面白いと思っていたと思う。そして、クラス内でもぼちぼち流行りだした。学校では読書の時間がありそこにハリーポッターを持ってくる生徒も増えていた。そしてあるクラスで普通のある男子生徒に「君も読んでるんだ」と言われた瞬間、彼と同じ括りにされた感じがして、ぼくの中でハリーポッターはどうでもいいものに成り下がった。続きとかどうでもいいやと思って、夢中で読み漁る同級生を少し覚めた目で見てた。
これがぼくのメジャーとマイナーの出会いだった。僕はどこかでメジャーに所属してはダメだみたいな思いを持っている。
それからも中高と進むに連れ女子が浜崎あゆみが好きだとかモーニング娘がどうとかで派閥を作っていた時も、ぼくは餓鬼レンジャーが好きだとか言ってた。ここで僕が恐れるのは「餓鬼レンジャーなんてめちゃくちゃ有名じゃん」というツッコミを自分で入れてしまうことだ。特にHIPHOP周辺をあさっている間その存在は大きくなっていく。そうするとまたメジャーとマイナーが出てきて僕は他のアルファとかいいよねと言ってしまうのだ。(ここでのHIPHOPはあくまでも例えなので適当にプログラムとその言語とかで置き換えてほしい)
ある時ぼくはそれに気づいて、どうやらぼくの中でメジャーと判断したものにはぼくの触手は伸びにくい、ということを頭に入れるようになった。若干の中二病の残滓も入ってる。
メジャーのものに触る必要がある時は適当に別の言い訳をしていて、例えばパズドラだったら、なんでこんなに流行ってるのか知りたいから始まって、普通にやるのはアレだから最初の丸っこい団子みたいなキャラだけでちょっとやってみるか、みたいな感じで始めた。もうやってない。なんかやり込みみたいだけどそうしないとぼくの中でどこか納得出来ないのだ。
さて、そんなぼくにも趣味趣向があってぼくはそれが好きだから、時折それが全体でどんな立ち位置なのかを再確認したりする。お前が買ってる雑誌、ジャンプに比べたらどうよ?周りでそんな音楽聞いてる奴いたか?
ネットでいくらでも同じ趣味の人間を探せる今そういうある種のノイズを意識的に入れるのも必要なのだと思う。

google trends を使って秋アニメ声優の検索数を比較してみた

タイトルまんまです
以下参考
unofficial Google Trends APIで2008年度No.1グラビアアイドルを計算する方法 - Future Insight

ソース
6xo/trends · GitHub

2013年10月1日から12月21日までの検索数でくらべてます
”新田恵海”の検索数を1とした場合の比率です

f:id:x6xo:20131221224234p:plain

キャストの発表時が一番検索されるだろうことを考えるともう少し期間を増やしても良かったかなと思います
来年辺り2013年活躍した声優でもランキングされれば、それを使って調べてみるのも面白そうです

Tumblrをtaberarelooでリブログできない対処

さて朝からTumblrに投稿できないどうやらTumblrの仕様が変わってtaberarelooがエラー吐いてるらしい
とりあえず以下で応急処置
taberarelooのパッチに
Taberareloo 用パッチ: Tumblr のポストの仕様変更に対応させる。
を当てる
ピン立てて連続投稿するとエラーになる模様、まあ自分の使用には問題ない。ありがたい

「コンピュータが仕事を奪う」読んだ

コンピュータの登場により人間の仕事は少なからず減ったし、膨大な計算を任せることができるようになった。ではコンピュータにできない仕事とはなにか。その一つとして、コンピュータには難しいが人間には容易な仕事があげられる。例えば画像に何が写ってるかを判断することだ。そしてその報酬は著しく低く人間はコンピュータの奴隷となってしまう。
それから抜け出すには数学の言葉が必要だと述べる。数学の知識があれば、コンピュータが苦手な仕事かそうでないかを判断できる。例えばGoogleページランク。無数のWebページから重要なページのランクを付けるアルゴリズムとしてコンピュータの理解できる言葉へとした。
これを言語化されていない何かを言語化すると表現している。

新しい答えは新しい定義の元に。