勢いで「この模様にピンときた人は……ジェネレータ」なんてものを作ってみました。 http://shakenbu.org/yanagi/stripe/
時刻記録サービス「タイムカード.in」をリリースしました。
「タイムカード.in」は、タイムカードをモチーフにしたウェブサービスで、作成した「タイムカード」に対して ウェブやメールで時刻を記録することのできるサービスです。
ウェブ上でボタンを押して時刻を記録することもできますが、カードごとに固有のメールアドレスにメールを送信することによっても時刻を記録することができるので、 例えばケータイメールなどで手軽に記録ができるのではないかと思います。
興味のある方はぜひ触ってみていただければと思います。
余裕があったら、ウェブ画面のケータイ対応もやってみたいですね。
以下、トップページに書いてある「使い方」をここにも書いておきます。
最初にログインを行ないます。以後の操作は、ログイン後のマイページより行ないます。
まず、時刻を記録するためのカードを作成しましょう。ここでは、帰宅時刻を記録するための「帰宅」カードを作成してみます。(↓)

カードに時刻を記録するには、ウェブ上でボタンを押す方法と、メールを送信する方法があります。
ウェブ上でボタンを押す方法は見た目の通りです。
メールで時刻を記録するには、まずカードの設定画面から更新用メールアドレスを確認します。(このスクリーンショットに表示されているアドレスはサンプルですので利用できません)(↓)

ここに表示されているメールアドレスにメールを送ると、その時の時刻がカードに記録されます。(↓)

更新用メールアドレスが分かると誰でもカードに時刻を記録できてしまうので、このアドレスは秘密にしてください。
更新用メールアドレスは再生成することもできます。再生成を行なうと、それまでのアドレスは無効になります。
ノベル属性コミュニティサービス novelz.net をリリースしました。
これはどういうサイトかといいますと、例えばライトノベルを中心としたノベル系コンテンツに対して
などといったことができるサイトです。
属性をつけることができるというのは、例えば、「ツンデレなラノベ」みたいなタグ(属性)を作って、 それにあてはまる本はどれ、というのをみんなで投票しあえたりするというものです。
当面のイメージとしては、CinemaScapeですとかErogameScapeの ノベル版、みたいな感じを想像してもらえると、そんなに外れてないんじゃないかと思います。
今後の構想としては、例えば持ってる本を登録できるようにしておすすめの本を出せるようにするとか、 属性関係でいろいろ考えてみるとか、まぁいろいろとやってみたいなと思ってます。
というわけで、興味のある方はぜひ触ってみてください。よろしくお願いします。
今さらながら、map.resources を触りだしました。
Rails 2.0 だと map.resources で has_many が使えるようなのですが、
map.resources :articles, :has_many => [ [:comments, {:controller => :article_comments}] ]
のように controller を指定するには
--- /usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7707/lib/action_controller/resources.rb 2007-10-02 11:40:29.000000000 +0900
+++ resources.rb 2007-10-03 18:59:47.000000000 +0900
@@ -426,7 +426,9 @@
name_prefix = "#{options.delete(:name_prefix)}#{resource.nesting_name_prefix}"
Array(options[:has_many]).each do |association|
- resources(association, :path_prefix => path_prefix, :name_prefix => name_prefix, :namespace => options[:namespace])
+ assoc, opts = Array(association)
+ opts ||= {}
+ resources(assoc, opts.merge(:path_prefix => path_prefix, :name_prefix => name_prefix, :namespace => options[:namespace]))
end
Array(options[:has_one]).each do |association|
でいいのかなぁ。
あ、でもネストできるんだから、無理に has_many で書かなくても
map.resources :articles do |article| article.resources :comments, :controller => :article_comments end
でいいのか。
mixi の画面が白すぎて見づらいので、Stylish で目にやさしそうな感じにしてみました。

完成にはほど遠いのですが、自分が満足したのでこれでとりあえず終了。
@namespace url(http://www.w3.org/1999/xhtml);
@-moz-document domain("mixi.jp") {
body {
background-color: #fcfae9 !important;
}
.listBox01 div.contents{
background-color: #f7f1cf !important;
}
.listBoxUtility01 {
background-color: #f8d88c !important;
}
#bodyContents div.heading02 {
background-image: url(http://img.mixi.jp/img/basic/heading/body_main_area001.gif) !important;
}
#bodyContents div.contents {
background-color: #f7f1cf !important;
border: solid 1px #f8d88c !important;
}
#bodyMainArea .groupList01 {
background-color: #f7f1cf !important;
background-image: none !important;
}
#bodyMainArea div.iconList03 ul li .iconState01 {
background-color: #f7f1cf !important;
}
#communityIntro {
background-color: #f7f1cf !important;
border: solid 2px #f8d88c !important;
}
#communityMemberList .contents {
padding: 0 !important;
}
#communityLinkList .contents {
padding: 0 !important;
}
table.iconListTable {
background: none !important;
background-color: #f7f1cf !important;
}
table.iconListTable tr {
background: none !important;
}
div.contents div.list_bottom {
background-color: #f8d88c !important;
margin: 0 !important;
width: 268px !important;
}
div.list_bottom div.utilityLinks01 {
margin-right: 0.5em !important;
}
div.titlebar02 {
background-image: url(http://img.mixi.jp/img/basic/heading/body_side001.gif) !important;
}
dl.bbsList01 dd.bbsContent dl {
background-image: none !important;
background-color: #f3e4c8 !important;
}
dl.bbsList01 dd.bbsContent dl dd {
background-color: #f7f1cf !important;
padding-left: 1em !important;
}
dl.commentContent01 {
background-image: none !important;
background-color: #f3e4c8 !important;
}
dl.commentContent01 dd {
background-color: #f7f1cf !important;
padding-left: 1em !important;
}
div#profile ul {
background-color: #f7f1cf !important;
}
div#profile ul li {
background-image: none !important;
border-bottom: solid 1px #f8d88c;
padding-bottom: 0.4em;
}
div#profile ul li dl {
background-image: none !important;
}
#intro div.contents dl dd {
background-image: none !important;
}
div.txtconfirmArea {
background-color: #f7f1cf !important;
}
.diaryHistory dd {
background-color: transparent !important;
}
.txtEditArea {
background-color: transparent !important;
}
object {
display: none;
}
embed {
display: none;
}
}
RubyKaigi2007 に参加しました。
スタッフのみなさん、本当におつかれさまでした。
はてなロゴマークが、クリエイティブコモンズライセンスで公開された。 http://d.hatena.ne.jp/hatenadiary/20070529/1180419796
これに対して、はてなロゴマークのライセンス表示がひどいというエントリがあった。 「CCライセンス Attribution-NonCommercial-ShareAlike だと言っているけど実際はそうじゃない」という主旨のようだ。
自分も別のところでちょっと気になったところがあった。
はてなロゴマークを使ってみよう では「具体的な使用例」として
はてなロゴを利用したTシャツを作成し、知り合いに実費で配布する
という例が挙げられている。
しかし、CC ライセンスにおいての「NonCommercial」は完全な無償を要求していて、配布に際して実費を徴収することを許していない。
http://creativecommons.org/licenses/by-nc-sa/2.1/jp/legalcode
第5条 j. あなたは、本作品又はその二次的著作物を営利目的で利用してはならない。 デジタル・ファイル共有その他の手段による本作品又はその二次的著作物とその他の作品との交換は、 作品の交換に関連して金銭的報酬の支払いがない限り、営利を目的とするものとはみなさない。
第5条で、「営利目的」とありますが、作品の製作や流通に当たって必要な実費の請求は営利目的に入りますか?
第5条で、「営利目的」とありますが、作品の製作や流通に当たって必要な実費の請求は営利目的に入りますか?
頒布者と受領者の間で金銭のやりとりがある場合には、それが実費であっても営利目的に含まれます。
はてなロゴマークについて言えば実費を徴収しても問題ないのだろうけれど、 それは CC ライセンスの運用とは異なるということには気を付けないといけない。
動画のある部分にだけ集中してコメントが付くことがよくあるので、 グラフにしたら面白いかと思って作ってみた。 (こういうのは GUI できれいに出すと見栄えがしてよさそうだけど)
でもこの proxy、どうやらレスポンスを全部読み込んでからじゃないと レスポンスを返さないらしく、動画をストリーミングで見れなくなってしまったので 実用性はゼロ。
#!/usr/local/bin/ruby
require 'webrick'
require 'webrick/httpproxy'
require 'uri'
require 'rexml/document'
SECTION_COUNT = 20
HIST_TOP = 30
def draw_hist(values, section_count, note)
max_pos = values.max
hist = Array.new(section_count, 0)
values.map{ |e| (e.to_f / max_pos * section_count).to_i }.each{ |e| hist[e] += 1 if hist[e] }
max_value = hist.max
hist_dots = hist.map{ |value| (value.to_f / max_value * HIST_TOP).to_i }
puts '-------------------------------'
puts note
hist.zip(hist_dots).each do |value, ndots|
puts '%4d |%s' % [value, '*' * ndots]
end
puts '-------------------------------'
end
handler = Proc.new do |req, res|
if req.host =~ /msg\d+\.nicovideo\.jp/ && req.path == '/api/' && res.content_type == 'text/xml'
xml = REXML::Document.new(res.body)
positions = xml.root.get_elements('chat').map{ |e| e.attribute('vpos').to_s.to_i }
if !positions.empty?
sec = positions.max / 100
note = "thread: %s, max time: %d:%.2d" % [xml.root.get_elements('thread')[0].attribute('thread'), sec / 60, sec % 60]
draw_hist(positions, SECTION_COUNT, note)
end
end
end
s = WEBrick::HTTPProxyServer.new(
:BindAddress => '127.0.0.1',
:Port => 8080,
:Logger => WEBrick::Log::new(STDERR, WEBrick::Log::FATAL),
:ProxyContentHandler => handler
)
Signal.trap('INT') do
s.shutdown
end
s.start
リリースされました。 http://jp.rubyist.net/magazine/?0019
今回は、cairo の記事の編集でお手伝いをしました。
自分は 1.upto(100) が真っ先に頭に浮かんだのだけれども、 ちょっと見てまわった範囲では、Ruby では 1..100 を使う人が多いようで興味深かった。
Before...
_ TrackBack [http://bestxxxonline.info/oldyounglesbiansex/toying.html s..]
_ TrackBack [http://bestxxxonline.info/freehardsex/toying.html adult se..]
_ TrackBack [http://bestxxxonline.info/lesbiansexsite/hairy.html pics a..]