「文字化け」を含む日記 RSS

はてなキーワード: 文字化けとは

2007-11-08

Re: オブジェクト指向におけるFizzBuzz問題

http://blogs.wankuma.com/episteme/archive/2007/11/08/106927.aspx

かなりテキトー。エラー処理とかしない。


package Animal;
sub new      { bless { cnt => 1 } , $_[0] }
sub Sound    { printf "%s\n", $_[0]->{voice} x $_[0]->{cnt}  }
sub SetCount { $_[0]->{cnt}   = $_[1]; $_[0] }
sub SetVoice { $_[0]->{voice} = $_[1]; $_[0] }

package Dog;
use base qw/Animal/;
sub new { $_[0]->SUPER::new->SetVoice('Wan') }

package Cat;
use base qw/Animal/;
sub new { $_[0]->SUPER::new->SetVoice('Nya-') }

my $animal;
$animal = Dog->new;
$animal->Sound;
$animal->SetCount(3);
$animal->Sound;
$animal = Cat->new;
$animal->Sound;

わん、にゃーが文字化けしたのでローマ字で。

2007-10-20

http://anond.hatelabo.jp/20071019153453

よもや、レスがついてるとは思わなかった。

興味を持ってもらえてサンクスです。

entry = diary.entry('20070712231804')

エントリー指定してたからなんなんだろうと思って。

editもできるってことなのかな?

書き込んだあとの編集機能はいまんとこなし。

上記は指定したidエントリを引っ張ってくる。

# get entry from id
entry = diary.entry('20070712231804')

# puts entry title
puts entry.title

# puts entry content
puts entry.content

で、そもそもRubyに詳しくない自分からするとちゃんとした使い方がそれでもわからない。

バカでごめんねなんだけど、どうやって使えばいいの?

たとえば、エントリタイトル一覧(1ページ目だけだけど)を出力するなら

diary = Masuda::Diary.new

diary.entries do |entry|
  puts entry.title
end

こんな感じかな。

新しいエントリを登録するなら

diary = Masuda::Diary.new

diary.login('my_id', 'my_pass')
diary.post('koko wa title ne', <<EOS)
koko ni kizi no honbun wo kaku
EOS

とか。

ずらーっと増田らしきものを読み込む。

そりゃそうだわなと思いながら文字化けの山。

文字化けなのは、たぶん増田エントリ(UTF-8)をそのまんま取得しているせいだと思う。

なんでスクリプトを実行するときにフィルタを通すとか

~$ ruby hoge.rb | nkf -Ws

出力するときにSJISに変換するとか。

require 'rubygems'
require 'masuda'
require 'kconv'

diary = Masuda::Diary.new
diary.entries.each do |entry|
  puts entry.title.tosjis
  puts entry.content.tosjis
end

あと

session[:diary] = diary.raw

diary = Masuda::Diary.restore(session[:diary])

の...って何でしょうか??

Masuda::Diary#rawインスタンスシリアライズするメソッド。

ログイン済みのインスタンスシリアライズしてセッションにつっこんどいて、次のリクエストでも使いまわすとか。

わかりづらい文章で申し訳ない。

2007-10-19

http://anond.hatelabo.jp/20071018142959

解説ありがとう

いや、書き込むっぽいなとは思ったんだけど、

entry = diary.entry('20070712231804')

エントリー指定してたからなんなんだろうと思って。

editもできるってことなのかな?

それともdiary.rawあたりでよみこむアンカーかなにか?

で、そもそもRubyに詳しくない自分からするとちゃんとした使い方がそれでもわからない。

バカでごめんねなんだけど、どうやって使えばいいの?

例えば自分windowsなんで、使い方に書かれてるスクリプト拡張子rbにして保存して、

masuda.rbの保存されているところにぶっこんでコマンドラインから実行してみた。

ずらーっと増田らしきものを読み込む。

そりゃそうだわなと思いながら文字化けの山。

diary.login('my_id', 'my_pass')

diary.my_entries.each {|entry| puts entry.content }

diary.post('Ruby is ...', <<EOS)</p&gt;

A dynamic, open source

programming language with a

#...

EOS

ここらへんにid/passやらタイトル、本文を書けば書き込めるのかもしれないけど、

毎回スクリプトを書き換えるって感じなのかな?

書き込みに成功|失敗したらその日の増田が表示されるのかな?

あと

session[:diary] = diary.raw

...

diary = Masuda::Diary.restore(session[:diary])

の...って何でしょうか??

[]yomutonougakusarimasu 5/5 キモさにかけてははてな村と良い勝負ですねm9( ・3・)

和式interふぉん ぼぶ http://59.xmbs.jp/washiki/ http://59.xmbs.jp/_ppic_/138/fbf93d.jpghttp://59.xmbs.jp/_alpic_/3/145/55bb7c.jpg http://59.xmbs.jp/_alpic_/5/863/a2b86a.jpg http://59.xmbs.jp/_alpic_/4/839/9c2a93.jpg http://59.xmbs.jp/_alpic_/4/63/61ca3d.jpg 携帯用サイト?ちょっと画像が小さいのはそのせいなのか小さいいせいでちょっと分かりづらいけれど下手ではないと思うアーティスティックと言うかそんな方向に行きたいのかあまり女の子って可愛い感じな絵ではないかな 忘れカバン なめ茸 http://www.geocities.jp/swm60cs/ http://www.geocities.jp/swm60cs/e/eban060614.jpg http://www.geocities.jp/swm60cs/e/etya070720.png http://www.geocities.jp/swm60cs/e/etya070712a.gif http://www.geocities.jp/swm60cs/e/raku070803.jpg 映姫 ツンデレアリス ニーソ 合同に参加しているとのこと筆で色を置いて行く感じの塗りが特徴的 デジタルなのは分かってますが髪型変えて違う服装だと誰なんだかさっぱり わすれな部屋 あゆみ とおる http://www.remus.dti.ne.jp/~kagamino http://www.remus.dti.ne.jp/~kagamino/picture/picture130.jpg http://www.remus.dti.ne.jp/~kagamino/picture/site_title01.jpg http://www.remus.dti.ne.jp/~kagamino/picture/picture129.jpg http://www.remus.dti.ne.jp/~kagamino/picture/DSC01017.jpg 東方花札とか言う品を持って行くようですオリエンタルで合っていると言えばそうだけれどまだトランプの方が使用頻度が高い気がするいやどうせコレクターアイテムでどっちもどっちなのは分かってるけど 頭身の高い絵は描かないのかな ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 一部文字化けして飛べないところがあるかもしれないけれどそれはユニコードのせいだから諦めてください なんかおかしいと思ったらルビが邪魔検索してて気付いたがすごく邪魔 どこかでガチャ列が出来て周囲のサークル大迷惑だったとかとか言う話しでああそりゃそうだなと少し思ったこともついでに書いておく出来るようなら配慮を 出来ないなら死ね レミリア・スカーレット合同誌 例大祭5予定 http://araha.bufsiz.jp/kikaku/remigoudou.htm 毛玉合同 http://hakureiin.hp.infoseek.co.jp/kedama.html 東方花札合同制作企画 http://www.remus.dti.ne.jp/~kagamino/hanahuda.html アリス合同誌2 http://project-raiden.hp.infoseek.co.jp/munekyun2.htm ??東方ニーソ合同誌?? http://syunkinden.web.fc2.com/top/kneesocks.htm バトルオンリー http://reticulian.sakura.ne.jp/battlegoudo.html レミ×咲合同企画 http://remilia.sc/ 東方4コマ合同誌 4コマスペカ劇場http://www.eonet.ne.jp/~yonaki/4komasupeka3/supeka3kokuchi1.html 紅楼夢で出てまともというか見れそうなのはレミ×咲合同かカプっているのが我慢できるようならだけれどこればかりはもう諦観を抱いて行くしかない 余計ななにか ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓←←← ↓  ↑ →→→↑ なげーよと思ったら俺の勝ちえーなんだろう人が増えたせいなのかいや前から多いけどさらに増えたのか合同誌のページ埋めくらいでしか見なかったようなレベルのそれこそ俺より下手なんじゃないかという人が個人で本出していてこれなら俺もなんて思ったりすると地獄にまっ逆さま中途半端なものとか増えてもと思っているのにわざわざそれ以下なもの自分で増やすことは無い嫌いなものは人のネタ漫画を描く人全般二次創作全部ですね二次創作大好きですよ三次創作的なものです他の作品のネタと掛け合わせるものこっちはまあ少しなら別に良いんですよただ焼肉ケーキとかそういう組み合わせとか無いだろうと別々にならともかく混ぜては食わないだろう完全に人のネタおんぶ抱っこで満足か金になればそれでいいかそうだな嫌い物は嫌いなもの好きなものは好きなもの両方別に見ます ええ理想としては袈裟まで嫌うが心まで行き届いた人間ですがこんな事書いてどうしようってんだーろいんステーキが食いたい腹減ったああねむいだるいうざい頭痛い本スレをどうにかしてくれ

そろそろサイボウ●ラボブログついてひとこと言っておくか。

技術者ってこんなもんなのか?って思ってもみたんだけど株主として一言。

子会社とはいえサイボウ●って上場企業の冠を背負ってるんだからあんな個人サイトに大人げなく食いつくなよ。

ハッキリ言ってみっともないよ。

「あの会社ってそういう大人げないイヤな人がいる会社なんですね」

万一そう思われた場合にどれほど会社に風評被害がでるか空気読めっての。

なんか青野さんの人柄のよさが会社の雰囲気としてイメージ貢献してるのと全く逆だよね。

記事のレベルが気に入らないんならよりレベルの高い記事を書いて、あっちのサイトには触れずにSEOで上位に入れるようにしたらいいんじゃね?

見る人が判断して自然淘汰させりゃあいいじゃん。

そんなことウダウダかくならチラシの裏匿名ブログにかいてろっての。

というかあのサイトはあくまで初心者向けなんだしあのレベルで十分じゃないの?

複雑なコードなんて初心者には理解できないだろうし、理解できる人ははなからあのサイトユーザーじゃねーし。

普通ある知度かけるようになったあとはあんなサイトニュース記事系しかみねーだろ?

つーかいいかげんサイドバーの人気エントリ一覧がopera文字化けするのくらい直せっての。

http://labs.cybozu.co.jp/blog/ディレクトリインデックスが表示されるのもやめろっての。

技術会社だろ?

2007-10-03

恥ずかしい思い出を思い切って晒す

ことで、さっさと忘れるという魂胆。

  • ある田舎駅の前の、民家の入り口にずっとおばちゃんが座ってるので、てっきり店かと思って入ってしまった。「炭酸飲料ありますか」と聞いてしまったし

_| ̄|     ((○

  • 歌を一人で熱唱しているのを家族に見られた

_| ̄|○

  • 寝坊という理由だけで、嘘をついて学校を休んだことがある((たまにはつらくても行くときあるけど))

_| ̄|   ((○

  • 駅の立ち入り禁止区域に入ってしまい、運転士に指摘された((もちろん悪意ないし知った時点でその場から離れたけど))

_| ̄|        ((○

_| ̄| ((○

ここからDelphi

  • Delphiをはじめたとき、何も読まずにprocedure Form1.OnClick(Sender: TObject);に「a = "はじめの第一歩"」とか打ってエラーが出たので、やっと調べたが、型と変数の定義という初歩で挫折し、アンインスコしたことがある((ちなみに今では普通に何も読まなくても簡単なメモ帳作れるレベル))

_| ̄|   ((○

  • Delphiの初歩を少し覚えたとき、自分でプロシージャ作ったら、フォームに置いてあるコントロールアクセスできなくて、3日迷って、思い切って2chで質問。そんでもって30分で解決((ちなみにこれが生まれてはじめての2chへの書き込み))

_| ̄|       ((○

ちなみにこんな感じのプロシージャだった

procedure test;

begin

Label1.Caption := 'テストだよん!';

end;

ちなみに語尾が「だよん」だとかのなのは、今もやってる個人的なルールっぽいもの。

_| ̄|  ○

あーすっきりした!

2007-09-29

なんか不思議

はてな匿名ダイアリーじゃない、普通はてなダイアリーだと「波文字」は文字化けしないんだ。

バグ?それとも、やっぱり記述方法が間違っているのだろうか。。。

2007-09-27

[]11日目

前回までのあらすじ

[Ruby]10日目

http://anond.hatelabo.jp/20070925223241

id/passの再発行を申請したら届いたのはなんとブログid/passだった!!

はたして締め切りに間に合うのか!!


はい、間に合うはずもありませんね。

夏休み宿題夏休みがおわってからやる主義の増田ですこんにちは

一応エントリーだけはしておきました。

サービス開始できてないけどな!


今日Ruby(正確には24時間ぐらいまえの)

next if  :nextcontinueみたいな感じ。この表記に違和感

unless  :こんな書き方にはなにかなじめない。

一行if文が嫌いな増田には余計耐えられない。

@user = params[:id].nil? ? @myuser : User.find(params[:id])

こういう書き方が嫌い。意味わからん。

画像DB格納で苦戦

正直嵌った。

win環境がどうのがいけなかったのかと、

あれこれいじってみたのだけど、そうではなかったようだ。

start_form_tagに :multipart => true がぬけていた。

あと、{}で引数位置指定しないといけないんだと…。

http://techno.hippy.jp/rorwiki/?HowtoUploadFiles
http://www.fdiary.net/ml/rails/msg/1375/0/
start_form_tag({:action => 'create'}, :multipart => true)

これは結構やりがちなミスかもしれない。

ちなみに、本のサンプルも間違っていたので余計嵌った。

image_tagで拡張子なしのファイルを読み込むと勝手png拡張子がついてくる。

おかげさまで表示されない。

http://mumrik.air-nifty.com/blog/2007/05/16_r185r186_6.html

どうやら画像ファイル拡張子が指定されていない URL だと自動的に png として扱うよ、ということらしいので、image_tag のところで url_for( ) した部分に追加修正をしてみる。

url_for(:action => 'xx', :id => 'xx', :extension => '.jpg')

対処療法でしかない。これだとjpgしかできないので正直どうしたものか。

:content_typeを一応保存しているので後から拡張子をつくることもできるが、

きっとなにかいいものがそのうちできるはず!!というかあるはず!!

→時間がなかったのでうっちゃった

redirect_back_or_defaultの使いどころに悩む。

ruby画像を描画させているばあい、画像にもどってしまうからだ。

この挙動は最初意味わからなかったぜ。

→時間がなかったので最初の画面に飛ばして誤魔化した

テーブルでjoinで名前だけでももってきたいとき、元のテーブルにはどうやって別名つけたらいいんだろう??

例えば、user名をuserテーブルからくっつけてもってきたい場合rubyは次みたいな

感じになるんだけど、正直気持ち悪い。

@catchcopy_pages, @catchcopy = paginate :catchcopies,

:conditions => contitions_str,

:select => 'catchcopies.id,user_id,users.login,catchcopies.catchcopy,catchcopies.created_at,vote,catchcopies.updated_at,item_id',

:joins => 'left outer join users on user_id = users.id ',

:order => 'created_at DESC' ,

:per_page => 10

ところでSchema.rbとかみるかぎりFKにも指定されていないんだが、大丈夫なのだろうか。

belongs_toとかではそこまでやってくれないものなのか。

ちなみにmigrateファイルでのalterとかの書き方はまだわかっていない。できるのかもしらない。

大会サーバアクセスできた

パスワードメールで送ってもらってアクセスできるようになった!

ftpは公開してないのね…? FTPあけてくれよ!!!

しかたないのでSSHアクセス

われながら情けないが、SSH越しのファイル転送のしかたがわからなかった。

rcpもscpもうまくできない。

これが環境の問題なのか、自分が悪いのか、やりかたが悪いのか、

問題の切り分けがそもそもできないので諦めた。

SSHで向こうのコマンドからrcpを蹴ってるってことはこっちが開けてないとダメってことだよね?

こっち閉じてるもの…。

wgetは生きていたので他のレンタルサーバー経由ファイルを取得。

ちなみにrcpができないのであげっぱなしさ!

が、しかし。unzipがはいってない。

tarで圧縮して、

tar xvf xxxx.tar

unzipがないのでzがつかえない。

フォルダの権限設定などをして、ローカライズ

せっかく

ENV['RAILS_ENV'] ||= 'production'

みたいなymlがあるのに、

dispatch.cgi

dispatch.fcgi

に書かれた

#!c:/ruby/bin/ruby

#!/usr/bin/ruby

に変更しなきゃいけないのは、何かあれだなと思った。

これかえてまわってたら本番とローカルで世代が分岐しちゃうじゃないか…。

ちなみにmysqlのソケットの位置も違うようなので、

/tmp/mysql.sock

socket: /var/run/mysqld/mysqld.sock

をymlに設定。

できればconfファイルフラグの書き換えだけで乗り換えしたかった。

最近linuxとかにもめっきり触っていなかったのでコマンド表を一生懸命見た。

witch ruby でインストールフォルダを割り出したり、

・・・findというコマンドが思い出せないときは情けなかった。

viコマンドも同様。

そうこうしながら設定完了

本番環境テスト動作

あれ、動かない・・・500エラーが出てる。

wget経由でdispatch.cgiをそのまま配置したのが原因でした。

中身みたらcgiエラー出力が書いてあった。

中継サーバで動いちゃったみたい。tarで固めてからわたしなおしましたとさ。

うごいたーー!!

でも、登録すると文字化けしている。

SQLで中身をみる。中身も文字化けしている。

おかしいなぁ……。

SQL>status

DBがlatin1になっていた…。

CREATE DATABASEも権限ないし…。

my.cnfも読み込み専用だった。

alter database XXXX DEFAULT CHARACTER SET utf8;

alter table XXXX DEFAULT CHARACTER SET utf8;

みたいな悪あがきもしてみたけど適わぬ夢。

SET NAMES utf8;

でもコネクションのところあたりでやってあげたいのだけど、

こういうときにRailsみたいなのは何がどこにあるのかわからない。

しょうがないので運営に問合わせしてみました。

ratin1は正直太刀できるきがあまりしない。

感想

unixとかlinuxとかそこらへん全然わからん…。

8日(のんびり)の勉強と2日(ほぼ徹夜)と1日(半日)のサーバー設定で、

アプリっぽいのはできあがった。

が、どうなのさ・・・。RonR

また今度Ruby感想でもくっちゃべるよ。

[Ruby]タグでもひいておくれ。

なんていうか消化不良。

もっとちゃんとしたものつくりたいな……。

2007-09-07

ようこそ、℃-uteLisp の世界へ

発祥: http://ex23.2ch.net/test/read.cgi/morningcoffee/1188654905/

はじめに

Scheme という Lisp 語族言語を用いて ℃-ute相関関係プログラムし、様々な角度から関係性を分析する手法を紹介していきます(ソースコードは最後に張ります)。

まずは、メンバー間の関係を「リスト」というデータ型で表現します。例えば「栞菜->愛理」という関係

(kanna . airi)

という形で表すことができます。これに、「大好き」という情報を付加し、ついでにその関係の性質を数値化したものを加えると

((kanna . airi) (desc "大好き") (score . 1))

のようになり、関係図における一つの矢印の情報データ化できたことになります(暫定的に、好意は 1、良好・中立は 0、険悪は -1 の3段階で表すことにします)。

メンバー間の全ての関係性をこのデータ単位で定義し、データベース化しておくことで、色んな条件に基づいた検索やスコア計算などが可能となります。

例 1: リンク状況の調査

ここで相関関係図における矢印を「リンク」と呼ぶことにして、あるメンバーから他のメンバーへどのようにリンクし、またリンクされているかを調べることができます。

関係の中からリンクの起点を抽出してソートしてみると

(sort-nodes (number-list (from-links)))

結果:

((kanna . 6) (saki . 5) (maimi . 4) (erika . 3) (mai . 3) (chisato . 3) (airi . 2))

栞菜ちゃんがメンバー全員にリンクを張っていることが分かり、℃-ute ラブっぷりが伺えます。なっきーにも同様の事が言えます。例の「女の子が好き」発言を数値的に裏付ける結果と言えるかもしれません。

ただ、データ不足でリンク件数がまだ少ないのと、リンクの性質(好意/反感など)までは分からない点を考慮する必要があるでしょう。

例 2: 被リンク状況の調査

同様に、リンクの終点の件数を調べてみます。

(sort-nodes (number-list (to-links)))
((chisato . 5) (erika . 5) (kanna . 4) (maimi . 4) (airi . 4) (mai . 3) (saki . 1))

えりかちゃんと千聖ちゃんが高ポイントです。メンバーからの人気や注目度の高さを示すデータですが、千聖ちゃんの場合敵対的なリンクが2件含まれている点に注意してください。

なっきーの被リンク数が極端に少ないですが、単純にデータ不足のためだと思われます。はぶら(ryとか言わないようにお願いします。

例 3: 愛情度の評価

リンクに付随するスコアを計算することで、愛情の度合いを測ることができるのではないか、という考えに基づく研究です。

まず、全ての関係性を対象として、スコアマイナス関係を抽出してみます。

(filter-nodes (lambda (n)
		(< (score-relation n) 0)))

結果:

(((kanna . chisato) (desc "愛理に手出すんじゃねぇよ") (score . -1))
 ((saki . chisato) (desc "愛理に手出すんじゃねぇよ") (score . -1)))

件数だけを得ると

(length (filter-nodes (lambda (n)
			(< (score-relation n) 0))))
2

僅か2件です。

良好・中立的な関係

(length (filter-nodes (lambda (n)
			(= (score-relation n) 0))))
8

愛に満ちた関係

(length (filter-nodes (lambda (n)
			(> (score-relation n) 0))))
16

非常に多いです。舞美ちゃんの「℃-ute同士でラブラブなんですよ」発言(例のラジオ)を数値的に裏付ける結果と言えるんじゃないでしょうか。

次に、メンバーごとのスコアを算出してみます。Lisp 的には以下のようにフィルタリングと畳み込み (fold) で計算することができます。例えば

(foldr (lambda (n acc)
	 (+ (get-score n) acc))
       0
       (filter-nodes (cut to? <> 'kanna)))

栞菜ちゃんに対するリンクスコアが得られます。結果:

3

上式を一般化して一挙にメンバー全員に適用してみると

(sort-nodes (map (lambda (x)
		   (cons x (score-loved x)))
		 (all-members)))

結果:

((airi . 4) (kanna . 3) (mai . 2) (erika . 2) (maimi . 2) (saki . 1) (chisato . 0))

愛理ちゃんが好意を寄せられやすい傾向が伺えます。

今度は逆方向のスコアを計算してみると

(sort-nodes (map (lambda (x)
		   (cons x (score-loving x)))
		 (all-members)))
((kanna . 3) (maimi . 3) (chisato . 2) (airi . 2) (saki . 2) (mai . 1) (erika . 1))

まいまいえりかちゃんが特に堅い・一途だという傾向を読み取ることができます。

例 4: 相性の調査

今度は組み合わせ(カップリング)の評価です。

2点間相互のリンクスコアを加算したものを「相性」と考えられるものとします。最大値 (互いに好意を寄せている場合の数値) は現在スコアリング方式では 2 です。例えば

(score-between 'kanna 'airi)

の値は

2

となります。1 であれば一方通行と考えます。

関係性が未定義の場合もあるので 0 のものを除外して算出すると

(sort-nodes (filter (lambda (n)
		      (not (= (cdr n) 0)))
		    (map (lambda (n)
			   (cons n (apply score-between n)))
			 (all-combinations))))
(((chisato mai) . 2)
 ((chisato airi) . 2)
 ((airi kanna) . 2)
 ((saki kanna) . 2)
 ((kanna maimi) . 2)
 ((erika maimi) . 2)
 ((saki airi) . 1)
 ((saki erika) . 1)
 ((kanna mai) . 1)
 ((maimi airi) . 1)
 ((saki chisato) . -1)
 ((kanna chisato) . -1))

となります。若干ピンとこない部分もあるかも知れませんが、計算上は矛盾無くデータの内容を表しています。

参考までに、スコア 1 の相互関係の中身を見てみると

(map (lambda (p)
       (find-relation (cons (caar p) (cadar p))
		      identity))
     (filter (lambda (n)
	       (= (cdr n) 1))
	     (map (lambda (n)
		    (cons n (apply score-between n)))
		  (all-combinations))))
(((kanna . mai) (desc "喰ってやるよ") (score . 1))
 ((saki . airi) (desc "好き") (score . 1))
 ((maimi . airi) (desc "良き妹") (score . 1))
 ((saki . erika) (desc "彼氏にしたい") (score . 1)))

のようになります。

まとめ

以上の調査を経て気になった問題点を列挙してみます。

特に最初の点に関して、「百合的」なるものの質的評価がなかなか難しいと感じました。例えば「大好き」も「良き妹」も同じ 1 と評価してしまっているのが妥当かどうか、といったことです。

また、スレにて与えられた情報を評価・分析する方法としては有効だとしても、逆方向のフィードバックの手段がなかなか見つからないというのが三つ目の問題です(技術力不足とも言います)。(注:画像化の方法が分かりました。追記参照)

最後に、プログラムソースを示します。実行には PLT Scheme が必要です。文字コードUTF-8 で保存した上で、(load "c-ute.ss") としてください。文字化けする場合はターミナルUTF-8 を表示できるよう設定する必要があります。がんばってください。

プログラム

c-ute.ss:

(require (lib "etc.ss")
         (lib "list.ss")
         (lib "26.ss" "srfi")
         (lib "delete.ss" "srfi" "1"))

;;; Utilities

(define true? (compose not not))

(define (ignore _) #f)

(define fif
  (case-lambda
    ((predicate consequent)
     (fif predicate consequent ignore))
    ((predicate consequent alternative)
     (lambda (x)
       (if (predicate x)
           (consequent x)
           (alternative x))))))

(define (concat! xs) (apply append! xs))

(define (mapconcat f lst sep)
  (let lp ((str (f (car lst)))
           (lst (cdr lst)))
    (if (null? lst)
        str
        (lp (string-append str sep (f (car lst)))
            (cdr lst)))))

(define (slice-string str len)
  (let lp ((res '())
           (str str))
    (if (<= (string-length str) len)
        (reverse! (cons str res))
        (lp (cons (substring str 0 len) res)
            (substring str len)))))

(define (break-string str len)
  (mapconcat identity (slice-string str len) "\\n"))

;; NOTE: input and output ports have to be either file-stream or #f
;; (i.e., cannot be a string port)
(define (run exe opt in out)
  (let-values (((p p-i p-o p-e)
                (subprocess out in #f exe opt)))
    (subprocess-wait p)
    (close-input-port p-e)))

;;; Database

;; http://ja.wikipedia.org/wiki/%E2%84%83-ute

(define names
  '((erika . "えりか") (maimi . "舞美") (saki . "早貴") (airi . "愛理")
    (chisato . "千聖") (mai . "舞") (kanna . "栞菜")))

(define (symbol->name sym)
  ((fif true?
        cdr)
   (assq sym names)))

(define nodes '())
(define edges '())

(define (relate from to desc score)
  (let ((n (cons from to)))
    (or (find-relation n
                       (lambda (r)
                         (let ((d (assq 'desc r))
                               (s (assq 'score r)))
                           (set-cdr! d (cons desc (cdr d)))
                           (set-cdr! s (+ score (cdr s))))))
        (begin
          (set! nodes (cons n nodes))
          (set! edges (cons (cons n `((desc ,desc)
                                      (score . ,score)))
                            edges))))))

(define (find-relation n k)
  ((fif true? k)
   (assoc n edges)))

(define (related? x y)
  (find-relation (cons x y) (lambda (_) #t)))

(define (from? n x)
  (eq? (car n) x))

(define (to? n x)
  (eq? (cdr n) x))

(define flip-relation
  (case-lambda
    ((n)
     (and (related? (cdr n) (car n))
          (cons (cdr n) (car n))))
    ((n k)
     ((fif true? k)
      (flip-relation n)))))

(define (get-score n)
  (cdr (assq 'score n)))

(define (get-description n)
  (cdr (assq 'desc n)))

(define (describe-relation n)
  (find-relation n get-description))

(define (score-relation n)
  (or (find-relation n get-score) 0))

(define (print-node . ns)
  (for-each (cute find-relation <>
                  (lambda (r)
                    (display
                     (format "| ~a => ~a  (~a)~%"
                             (caar r) (cdar r)
                             (mapconcat (lambda (s)
                                          (string-append "\"" s "\""))
                                        (cdr (assq 'desc r))
                                        ", ")))))
            ns))

(define (iter-nodes k)
  (let lp ((nodes nodes))
    (unless (null? nodes)
      (k (car nodes))
      (lp (cdr nodes)))))

(define (filter-nodes p)
  (let ((ns '()))
    (iter-nodes (fif p
                     (cut find-relation <> (lambda (n)
                                             (set! ns (cons n ns))))))
    ns))

(define (from-links)
  (map car nodes))

(define (to-links)
  (map cdr nodes))

(define (all-members)
  (delete-duplicates! (from-links)))

(define (all-pairs) nodes)

(define (ordered-pairs)
  (concat! (map (lambda (x)
                  (map car
                       (sort (filter-nodes (cute to? <> (car x)))
                             (lambda (x y)
                               (> (get-score x) (get-score y))))))
                (sort-nodes (map (lambda (x)
                                   (cons x (score-loved x)))
                                 (all-members))))))

(define (all-combinations)
  (let lp ((cs '()) (ns nodes))
    (if (null? ns)
        cs
        (let ((n (car ns)))
          (lp (if (member (list (cdr n) (car n))
                          cs)
                  cs
                  (cons (list (car n) (cdr n)) cs))
              (cdr ns))))))

;; number-list :: [a] -> [(a . Int)]
(define (number-list ls)
  (let lp ((ns '()) (ls ls))
    (if (null? ls)
        ns
        (let ((x (car ls)))
          (lp ((fif not
                    (lambda (_) (cons (cons x 1) ns))
                    (lambda (n)
                      (set-cdr! n (add1 (cdr n)))
                      ns))
               (assq x ns))
              (cdr ls))))))

;; sort-nodes :: [(a . Int)] -> [(a . Int)]
(define (sort-nodes ns)
  (sort ns (lambda (x y)
             (> (cdr x) (cdr y)))))

(define (diff-nodes ms ns)
  (let lp ((ds '()) (ns ns))
    (if (null? ns)
        (sort-nodes ds)
        (lp (let* ((n (car ns))
                   (m (assq (car n) ms)))
              (cons (cons (car n)
                          (- (cdr m) (cdr n)))
                    ds))
            (cdr ns)))))

(define (get-total-score x p)
  (foldr (lambda (n acc)
           (+ (get-score n) acc))
         0
         (filter-nodes (cut p <> x))))

(define (score-loved x)
  (get-total-score x to?))

(define (score-loving x)
  (get-total-score x from?))

(define (score-between x y)
  (+ (score-relation (cons x y))
     (score-relation (cons y x))))

(define (-> x)
  (display (format "~%Links from [~a]~%" x))
  (iter-nodes (fif (cut from? <> x)
                   print-node)))

(define (<- x)
  (display (format "~%Links towards [~a]~%" x))
  (iter-nodes (fif (cut to? <> x)
                   print-node)))

(define (<-> x)
  (display (format "~%Reciprocal links for [~a]~%" x))
  (iter-nodes (fif (cut to? <> x)
                   (lambda (n)
                     (flip-relation n
                                    (lambda (m)
                                      (print-node m n)))))))

(define (<=> x)
  (display (format "~%Reciprocal matches for [~a]~%" x))
  (iter-nodes
   (fif (cut to? <> x)
        (lambda (n)
          (flip-relation n
                         (lambda (m)
                           (if (ormap (lambda (x)
                                        (ormap (lambda (y)
                                                 (equal? x y))
                                               (describe-relation m)))
                                      (describe-relation n))
                               (print-node m n))))))))

(define (<?> x)
  (let ((to (assq x (number-list (from-links))))
        (from (assq x (number-list (to-links)))))
    (display (string-append
              (format "~%Link statistics for [~a]~%"
                      x)
              (format "| ~a => ~a (love ~a)~%"
                      x
                      (cdr to)
                      (score-loving x))
              (format "| ~a => ~a (love ~a)~%"
                      (cdr from)
                      x
                      (score-loved x))))))

(define (info x)
  (for-each (cut <> x)
            (list <- <-> <=> -> <?>)))

;;; GraphViz (http://www.graphviz.org/) support

(define graphviz "C:/Program Files/ATT/Graphviz/bin/dot.exe")

(define (nodes->dot ns)
  (string-append "digraph cute {\n"
                 ;;"\tordering=out;\n"
                 ;;"\trankdir=LR;\n"
                 "\toverlap=true;\n"
                 "\tnode[fontname=\"msgothic.ttc\"];\n"
                 "\tedge[fontname=\"msgothic.ttc\",fontsize=9];\n"
                 (let lp ((str "") (ns ns))
                   (if (null? ns)
                       str
                       (let* ((n (car ns))
                              (s (score-relation n)))
                         (lp (string-append
                              str
                              (format "\t\"~a\" -> \"~a\""
                                      (symbol->name (car n))
                                      (symbol->name (cdr n)))
                              (format "[label=\"~a\",color=\"~a\","
                                      (break-string
                                       (car (describe-relation n))
                                       7)
                                      (cond ((> s 0) "red")
                                            ((= s 0) "green")
                                            (else "blue")))
                              (format "style=\"bold~a\"];\n"
                                      (if (and (not (= s 0)) (< s 1) (> s -1))
                                          ",dashed"
                                          "")))
                             (cdr ns)))))
                 "}"))

(define (write-dotfile dot file)
  (and (file-exists? file) (delete-file file))
  (with-output-to-file file
    (lambda ()
      (display dot)))
  file)

(define (dot->png dot png)
  (call-with-input-file (write-dotfile dot "c-ute.dot")
    (lambda (in)
      (and (file-exists? png) (delete-file png))
      (call-with-output-file png
        (lambda (out)
          (run graphviz "-Tpng" in out)))))
  'done)

;;; Setup database

;; Based on:
;; http://ex23.2ch.net/test/read.cgi/morningcoffee/1188654905/116-142
(begin
  (relate 'maimi 'erika "大好き" 1)
  (relate 'maimi 'kanna "良き妹" 1)
  (relate 'maimi 'airi "良き妹" 1)
  (relate 'maimi 'mai "姉妹" 0)
  (relate 'erika 'maimi "一番可愛いよ" 1)
  (relate 'erika 'kanna "仲間" 0)
  (relate 'erika 'chisato "おソロパジャマ" 0)
  (relate 'kanna 'erika "仲間" 0)
  (relate 'kanna 'maimi "好き" 1)
  (relate 'kanna 'saki "喰ってやるよ" 1)
  (relate 'kanna 'mai "喰ってやるよ" 1)
  (relate 'kanna 'airi "大好き" 1)
  (relate 'kanna 'chisato "愛理に手出すんじゃねぇよ" -1)
  (relate 'saki 'maimi "荷物整理" 0)
  (relate 'saki 'erika "彼氏にしたい" 1)
  (relate 'saki 'kanna "興味がある" 0.5)
  (relate 'saki 'chisato "愛理に手出すんじゃねぇよ" -1)
  (relate 'saki 'airi "好き" 1)
  (relate 'airi 'kanna "受け入れる" 1)
  (relate 'airi 'chisato "最近親密" 1)
  (relate 'mai 'erika "保護者" 0)
  (relate 'mai 'maimi "姉妹" 0)
  (relate 'mai 'chisato "恋人" 1)
  (relate 'chisato 'erika "おソロパジャマ" 0)
  (relate 'chisato 'mai "恋人" 1)
  (relate 'chisato 'airi "最近親密" 1))

;; query relations / draw graphs

(if (file-exists? graphviz)
    (dot->png (nodes->dot (ordered-pairs))
              "c-ute.png")
    (for-each info (all-members)))

追記(グラフ描画について)

Graphviz というソフトによって関係図を可視化できる、ということを教えていただきました(既に上プログラムを実行すると自動的に関係画像を作成するようにしてあります)。ここでは技術的な観点から幾つか注意点を挙げておきます。

まず、Scheme プログラムから Graphviz を動かす方法について。コマンドラインからの起動のように、プログラムへのオプション文字列で入出力ファイルを指定する方法ではどうも上手く行きませんでした。調査の結果、入出力ファイルポートScheme 側で用意しておく必要があるようです。処理系によって異なりますが、PLT Scheme の場合 subprocess という関数を次のように呼び出します。

(subprocess output-port input-port #f "/path/to/dot.exe" "-Tpng")

ここで output-port は png画像ファイルへの出力ポート。input-port は dot ファイルグラフの定義ファイル)の入力ポートです。エラーポートは必要無いでしょう (#f)。

dot という名前の実行ファイルが、関係図のような有向グラフを描画するプログラムです。最後にオプション文字列として出力形式を指定します(png, jpeg, gif, etc.)。

次に dot ファイルScheme で書く方法ですが、以下の基本的な有向グラフの書式

digraph g {
  A -> B;
  B -> C;
  C -> A;
}

を理解すれば、後は実直に Schemeデータを当てはめて format 関数等で変換するだけです。

(string-append
 "digraph g {"
 (format "~a -> ~a;" (car node) (cdr node))
 "}")

問題は、ノードを配置する順番によって出来上がる画像が変わってくる、ということです。

より見た目に分かりやすくするための工夫としては、相互にリンクするノード同士が dot ファイル上でも近接して出力されるようにすると良いでしょう。関連の強いものが画像の上でも近くに表示されるようになります。

また上述(特に例3)のスコア概念を応用し、スコアの低いものが後に出力されるようにすることで、重力感覚に一致するような関係図を得ることができるでしょう。

2007-08-09

http://anond.hatelabo.jp/20070808235325

良く分からんが頑張った!

で、できれば結論をまとめてくれ。文字化けしてるし中文は読めん。

日曜早朝のテレビキリスト教系らしき宗教枠で「暗いと不平を言うよりも…」とあるのは聖書に原典があるのかと思ったんだが関係ないのか?

2007-07-22

[]C#にあるようなプロパティもどき

getter/setterを関数で書くと、後ろに()を付けないといけないから格好悪い!!

って人にオススメ

template<typename T>struct _property{

  virtual operator T() = 0;

  typedef T _t;

};

class asdf{

  int foo;

public:

  struct __foo : _property<int>{

    asdf &parent;

    operator _t(){

      printf("親クラス(?)のメンバへのアクセスが面倒...");

      return parent.foo;

    }

    __foo(asdf &p) : parent(p){}

  }y;

  struct : _property<char*>{

    operator _t(){

      printf("ここに副作用付き処理を書ける!?\n");

      printf("この関数が参照を返せばgetもどきも実装できる!?\n");

      return "ふひひひ!やったね!!";

    }

  }x;

  asdf(int v) : y(*this){ foo = v * v - v - v; }

};

void p(char*s){ printf("\n増田はこちらを振り返ると、\n悲しそうな顔をしてこう言った\n「%s」\n", s); }

int main(){

  asdf a(127);

  //生でprintfに渡すと型推論が行われない

  //それ以外の関数だったら問題ないかも

  p(a.x);

  printf("\n");

  //どうしてもと言うならキャストすべし

  printf("\n%d\n", (int)a.y);

  return 0;

}


VC8で動作確認してるよ!

はっきり言って普通にgetter/setter書くよりも手間多いね!

あとcppシンタックス表示使うと文字化けしちゃうから引用ブロックに入れておいたよ!

2007-07-07

http://anond.hatelabo.jp/20070707204147

言語化に必要な時間や労力と、言語の多様性の価値とは別モノだよ。

それから、コンピュータ世界における言語の表現方法を考えるなら、はじめから他言語サポートを目論んで制作されたのでなければ、海外サービス等で文字化けするくらいのことを特別視する必要性は無いんじゃないかな。日本語(というか、二バイト文字)対応っていうのは、英語圏では必要のない技術を使ってるわけだし、無頓着なっちゃうのも仕方無いと思うよ。喩えるなら、クロスプラットフォームクラス作ろうとしてたのについついリトルエンディアンな処理系しか考慮していなかった、後から気付いたけど直すの面倒って場合だとか、クロスブラウザ目指していたのに、ついついグラフィカルブラウザのみ考慮していた、テキストブラウザや音声ブラウザ存在に後から気付いたけどテスト環境整えるのが面倒だし、そもそも少数派だし……ってくらいで、別に意地悪して切り捨ててたり、言語を強制する目論みではないと思う。

史観でものを言っている。

http://anond.hatelabo.jp/20070707200510

かつて実際にそういうような流れがあった。それはe-mailの世界。本文はまだしもヘッダに2バイトコードを入れるのはマナー違反だ、とされており、それを鵜呑みにした日本人まで日本語のSubjectを鬱陶しがった。実際問題として、本文はMIME変換されているからいいようなものの、ネット上を通過してくる間に1箇所でも7バイトコード環境が介在すればヘッダは文字化けしたから、マナーというか制御不可能な危険を避けるならSubjectに日本語を使用するべきではなかった。

現状は見ての通り。

よって、2バイトコード環境も多言語サポート環境ネットの帯域も、悉くなんとかなってしまっている今、歴史が繰り返すことはない。

因みに太平洋戦争時に日本方言が超難解な暗号として使用された実績があることはあまりに有名だが、本題とはあまり関係がない。

2007-06-26

http://anond.hatelabo.jp/20070626005915

マジレスすると文字化け回避のためのもの。「京」だとEUCに確定する。ほかにも「美乳」とかあるぜ。

2007-05-23

もう。今回だけだからね

http://www.youtube.com/watch?v=HGlQuhaw5cU

http://www.youtube.com/watch?v=VVwXFpi0LL0

大阪よいとこ一度はおいで。  癶(;゜;??;゜:;癶)癶 ....

文字化けするよー。わんぱくなおしてーーー!!

2007-05-01

http://anond.hatelabo.jp/20070501154914

エントリーを消したニートの人ですけど、自分はエントリーあんまり消さないよ。元エントリー文字化けがあったので消しました。生活費は、うーん特定されそうなので秘密で。

2007-04-20

あれ?これって

base64の文字列ですよね?と思ってデコードしてみたけど、文字化けしたのしか出てこなかった。

もう一度よく見るとただの16進数でしたね。ごめんごめん。圧縮してるのかな?

[]RubyRuby on Rails

Ruby RDoc Documentation

rubyとは - はてなダイアリー Rubyとは - はてなダイアリー

はてなブックマーク - はてな - Rubyとは

「ruby」を含む日記 - はてなダイアリー

Ruby

「Ruby」に関する画像、動画、ブログ記事のタグ検索結果

Google ブログ検索

買売システム開発記録とか何とか

Rubyで投資システムを作る日記

spacecadetの日記

RubyForge: One-Click Ruby Installer: Project Info

RDE(Ruby Development Environment) - Ruby??J??????????

#!/usr/bin/ruby -Ks

# print "Content-Type: text/html;charset=UTF-8\n\n"

p "表示"


Rails Rails Framework Documentation

http://127.0.0.1/mysql/

http://127.0.0.1:3000/ http://127.0.0.1:3000/recipe/list

http://127.0.0.1:3001/ http://127.0.0.1:3001/recipe/list

http://127.0.0.1:3001/account/signup http://127.0.0.1:3001/test

http://127.0.0.1:3001/item

Hot Chips (delete) Snacks 2004-11-11

Ice Water (delete) Beverages 2004-11-11

Killer Mushrooms (delete) Snacks 2005-09-13

満足せる豚。眠たげなポチ。:Rolling with Ruby on Rails - Japanese Translation - p1

満足せる豚。眠たげなポチ。:Rolling on Ruby on Rails - Japanese Translation - p5

BookmarkOnInstantRails

ITmedia エンタープライズ:第1回 Instant Railsで始めるWindows環境のRails (1/2)

developerWorks Japan

developerWorks Japan

DROP TABLE IF EXISTS `items`;

CREATE TABLE items (

id int(11) NOT NULL auto_increment,

login varchar(80) default NULL,

password varchar(40) default NULL,

PRIMARY KEY (id)

);

えぇてるのぉと:Railsでログイン認証 - livedoor Blog(ブログ)

8 app/views/test/index.rhtmlの編集

<h1>Test#index</h1>

Welcom <%= @session['user'].login %>!

Login Generator (1) - Nowhere Near

config/environment.rb に以下の行を追加する。

module LoginEngine

config :salt, "your-salt-here"

end

Engines.start :login

http://techno.hippy.jp/rorwiki/?Wiki%A4%F2%BA%EE%A4%C3%A4%C6%A4%DF%A4%EB%2F%A5%E6%A1%BC%A5%B6%A1%BC%A4%F2%C7%A7%BE%DA%A4%B9%A4%EB

パパブログ: RoR : login_generator : login中のユーザ情報の取得

@session['user'].id

@session['user'].login

@session['user'].password

で、idやloginが取得できる。

ちなみにidActiveRecordおなじみのidで、

loginがログイン名、passwordパスワードになる。


MySQL-Front download

環境変数

;C:\nonidata\InstantRails\ruby\bin;

cd C:\nonidata\InstantRails\ruby\bin

C:\nonidata\InstantRails\ruby\bin>gem install login_generator

Successfully installed login_generator-1.2.2

C:\nonidata\InstantRails>cd C:\nonidata\InstantRails\rails_apps\cookbook

C:\nonidata\InstantRails\rails_apps\cookbook>ruby script/generate login Account

create lib/login_system.rb

C:\nonidata\InstantRails\rails_apps>cd C:\nonidata\InstantRails\rails_apps\cookbook

C:\nonidata\InstantRails\rails_apps\cookbook>ruby script/generate controller test

exists app/controllers/

[Ruby] Rails(ActiveRecord)の多対多関連 - yuum3のお仕事日記

has_one

has_many

belongs_to

has_and_belongs_to_many

habtm と has_many :through (ActiveRecord)

ヽ( ・∀・)ノくまくまー(2006-01-20)

ActiveRecord の歩き方 - Association 編(1) - Rails で行こう! - Ruby on Rails を学ぶ has_many :comments

developerWorks Japan  has_one :address

Rubyist Magazine - RubyOnRails を使ってみる 【第 3 回】 ActiveRecord

create メソッドを使うこともできます。create は new したあと save (DB に格納) します。


Rubyist Magazine - RubyOnRails を使ってみる 【第 4 回】 ActionPack

find(:all, :conditions => ["user_name = ?", user_name])

find_all(["user_name = ?", user_name])

find_all_by_user_name(user_name)


Part2 Rubyに学ぶ「Ruby on Railsの正体」:ITpro

book = Product.find_or_create_by_name_and_price('book', 2079)

リスト7●productsテーブルからnameが'book',priceが2079であるようなProductオブジェクトを読み取り,存在しなかった場合はデータベースレコードを新規作成する処理


RoR Wiki 翻訳 Wiki - HowToUseLegacySchemas

恣意的で複雑なクエリや、主キーを持たないテーブルにはfind_by_sqlを使う

テーブルが論理的な主キーを持たないなら、

find_by_sqlを使えば主キーを全く指定しない曖昧で複雑なクエリを実行も実行できる。

Post.find_by_sql ["SELECT * FROM posts WHERE author = ? AND created > ?", author_id, start_date]


エディタ utf8

文字化け

ヽ( ・∀・)ノくまくまー(2006-10-11)

チュートリアルを動かしてみる - 肩書「シニアコンサルタント」のつぶやき

Railsでソーシャルブックマークを作ってみようか(第1回) - 坊やがゆく

ようこそ<%= @session['user'].login %>さん

@session['user'].id


Railsでソーシャルブックマークを作ってみようか(第2回) - 坊やがゆく

Railsでお馴染み37signalsのURLが凄い件について:TKMR.blog.show

URLにキーワードを含めことでSEO対策になるかも、でもそれだけ:TKMR.blog.show

http://127.0.0.1:3001

http://127.0.0.1:3001/recipe/list

tetraの外部記憶箱 - Instant Railsのインストール , 追記:phpMyAdminの日本語環境設定 , 未踏ソフト記事

[Ruby]PHP VS Rails (Ruby on Rails)

2007-04-13

http://anond.hatelabo.jp/20070413135718

RFC的には正しくないけど

(少なくとも私の環境では)文字化けせずに届いてるし

メールの通信パケット節約してる。

サービス提供元に「RFC違反だ糞 直せ糞」ってゴネたところで

誰一人特をしない問題だと思うんですが

ここの住人の皆様は静観 or モヒカン

そうこうしてるうちに今週のぶんが届いちゃった

2007-04-06

test

「から」を変換:??

Shift+^:??

「記号」から変換:??

どれが文字化けするんだ?全部かな?

---

全部ばけたああああ

2007-02-11

[]

増田で波線(~)を使いたいのに文字化けして困っている人に朗報!

以下の文字列をIMEに登録してください、入力文字列は「にょろ」とでもしてください、僕はそうしてます。

  • &#65374; (実際に使うときは半角で)

ああ、これで憧れのにょろを思い存分増田で使える……。~~~

みなさんも、お試しあれ。

2007-01-06

活字の字形

「辻」のしんにょうの点が一つだ二つだといっている人たちは、そもそも活字のしんにょうにはくびれがないことをなぜ問題にしない。

払いが止めになっただけでやれ文字化けだと騒ぐ人たちは、全国の北さん、北村さん、北山さん、北川さん、etc.のために活字の「北」の二画目が突き抜けていることを問題視すべきではないのか。

2007-01-04

ちなみに

文字化けするのは波長音(なみせん)とハイフン(マイナス)ね。

これはDBに格納するタイミングでのエンコードがこけてるだけな気もするが。。

ログイン ユーザー登録
ようこそ ゲスト さん