トップ 追記

活動日誌

2005|02|03|04|05|06|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|03|04|05|06|10|
2008|04|

2008-04-06

ノベル属性コミュニティサービス novelz.net をリリースしました

ノベル属性コミュニティサービス novelz.net をリリースしました。

http://novelz.net/

これはどういうサイトかといいますと、例えばライトノベルを中心としたノベル系コンテンツに対して

  • 属性をつける
  • レーティング評価をつける
  • 感想を投稿する

などといったことができるサイトです。

属性をつけることができるというのは、例えば、「ツンデレなラノベ」みたいなタグ(属性)を作って、 それにあてはまる本はどれ、というのをみんなで投票しあえたりするというものです。

当面のイメージとしては、CinemaScapeですとかErogameScapeの ノベル版、みたいな感じを想像してもらえると、そんなに外れてないんじゃないかと思います。

今後の構想としては、例えば持ってる本を登録できるようにしておすすめの本を出せるようにするとか、 属性関係でいろいろ考えてみるとか、まぁいろいろとやってみたいなと思ってます。

というわけで、興味のある方はぜひ触ってみてください。よろしくお願いします。


2007-10-03

map.resources :has_many で controller を指定する

今さらながら、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

でいいのか。

Tags: Rails

mixi の色を変えてみた

mixi の画面が白すぎて見づらいので、Stylish で目にやさしそうな感じにしてみました。

20071003-mixi.jpg

完成にはほど遠いのですが、自分が満足したのでこれでとりあえず終了。

@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;
}


}
Tags: mixi

2007-06-25

Hiki 0.8.7 リリース

Hiki 0.8.7 をリリースしました。

Hiki 実行権限が削除可能な任意のファイルを削除可能となる脆弱性を修正しています。 お手数ですが、Hiki をご利用の方はアップデートをお願いします。

0.8.7 には、この脆弱性修正以外にもさまざまな変更が加わっているのですが、 この脆弱性を修正する 0.8.6 へのパッチも別途公開しています。 すぐに 0.8.7 への更新が難しいという場合には、このパッチをご利用下さい。

Tags: Hiki

2007-06-11

RubyKaigi2007 に参加

RubyKaigi2007 に参加しました。

  • 「愛」重要
  • ノベルティがバッグなのはよかった
  • 最近るりまのお手伝いから離れてしまっていたので、また作業をしていきたい
  • Dave のスピーチがとてもすばらしかった
  • スピーカーの Mac 率がとても高かった。自分もノート PC 買うときは MacBook にしようかなぁ。(いつになるかわからないけど)

スタッフのみなさん、本当におつかれさまでした。

Tags: Ruby

2007-05-30

クリエイティブコモンズライセンスにおける NonCommercial

はてなロゴマークが、クリエイティブコモンズライセンスで公開された。 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 ライセンスの運用とは異なるということには気を付けないといけない。

本日のツッコミ(全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..]


2007-05-27

ニコニコ動画のコメント数グラフを表示する proxy

動画のある部分にだけ集中してコメントが付くことがよくあるので、 グラフにしたら面白いかと思って作ってみた。 (こういうのは 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
本日のツッコミ(全100件) [ツッコミを入れる]

Before...

_ TrackBack [http://superpopka.info/freesexstorypic/interracial.html se..]

_ TrackBack [http://banglive.info/japansextour/nylon.html news]

_ TrackBack [http://banglive.info/amateuralluresex/hardcore.html free a..]


2007-05-19

Rubyist Magazine 0019 号

リリースされました。 http://jp.rubyist.net/magazine/?0019

今回は、cairo の記事の編集でお手伝いをしました。

Tags: Ruby

2007-05-11

FizzBuzz 問題

自分は 1.upto(100) が真っ先に頭に浮かんだのだけれども、 ちょっと見てまわった範囲では、Ruby では 1..100 を使う人が多いようで興味深かった。

本日のツッコミ(全99件) [ツッコミを入れる]

Before...

_ TrackBack [http://superpopka.info/japananalsex/hairy.html hairs style..]

_ TrackBack [http://superpopka.info/freesexdownloads/interracial.html i..]

_ TrackBack [http://superpopka.info/msnwebcamsex/interracial.html free ..]


2007-04-30

twroute

twitter の friends をたどって、ある人からある人まで何 hop で到達できるかを調べるサービスを作ってみたらどうだろうかと思い立ったのだけど、 ダイクストラ法による探索ルーチンを組んでみたら Web サービスに使うにはあまりにも遅くて断念中。

(あとで書く)

Tags: twitter

2007-04-26

累乗が遅い件

累乗が遅いらしいので、 どこから遅くなったのかを ruby_1_8 ブランチで調べてみました。

ruby 1.8.5 時点では問題はありませんでしたが、 次のコミット以降 core dump するようになり、

r10880 | matz | 2006-09-08 01:35:59 +0900 (金, 08  9月 2006) | 9 lines

* numeric.c (fix_plus): addition in Fixnum will never overflow
  long.  a patch from Ondrej Bilka <neleai at seznam.cz>.
  [ruby-core:08794]

* numeric.c (fix_minus): ditto.

* bignum.c (rb_big_pow): eagerly truncate resulting bignum.
  [ruby-core:08794]

これを修正した

r10898 | matz | 2006-09-10 00:27:34 +0900 (日, 10  9月 2006) | 5 lines

* bignum.c (rb_big_mul0): bignum multiplication without
  normalization.

* bignum.c (rb_big_pow): use rb_big_mul0().  [ruby-dev:29547]

のコミット以降、累乗が遅くなっているようです。

追記

改善されたようです。ruby-dev:30736

Tags: Ruby

トップ
Written by Kouhei Yanagita <yanagi at shakenbu.org>