最終更新: 2011-03-04T22:27+0900
認証結果(GET/POSTデ
Bloggerの解。
表示名には、OpenID プロバイダから Google に送信されたあなたの名前が使用されます。表示名がない場合は、OpenID の URL から表示名の取得を試みます。
Blogger で OpenID を使用してコメントを書き込む - Blogger ヘルプ
こういう割り切りが必要なのかな。でも Yahoo!!!なんかは味気ない URLしか返してこないよね(※1)。mixiしか聞かない、表示名が取得できた
※1 知らぬ間に AX(Attribute Exchange)に対応してた。「Yahoo! JAPAN、OpenIDでプロフ
※2 も
閑話休題。nonceをワンタイムでなく時限式にするしかないのだろうか。タイムアウト
OpenID Providerへコメントの全文ごとユ
最終更新: 2011-03-02T05:24+0900
何も考えずにコ
generators = [ lambda{ n = 0 lambda{ n+=1; n*(n+1)/2 } }.call, lambda{ n = 0 lambda{ n+=1; n*n } }.call, lambda{ n = 0 lambda{ n+=1; n*(3*n-1)/2 } }.call, lambda{ n = 0 lambda{ n+=1; n*(2*n-1) } }.call, lambda{ n = 0 lambda{ n+=1; n*(5*n-3)/2 } }.call, lambda{ n = 0 lambda{ n+=1; n*(3*n-2) } }.call, ] # 数を準備 d4polynumbers = generators.map{|g| () while (p = g.call) < 1000 a = [p] a.push(p) while (p = g.call) < 10000 a } # 端緒(の集まり) bunch_of_chain = d4polynumbers[d4polynumbers.size-1].map{|p| [[p, d4polynumbers.size-1]] } # 端緒を伸ばすもの extender = lambda{|chain, pool| xx = chain.last.first.to_s[-2,2] ( (0...(pool.size)).to_a - chain.map{|_| _.last } ).map{|i| [i, pool[i]] }.map{|i, nums| nums.find_all{|num| num.to_s[0,2] == xx }.map{|num| chain + [[num, i]] } }.inject(&:+) } # 伸ばしていく (d4polynumbers.size-1).times{ bunch_of_chain = bunch_of_chain.map{|chain| extender[chain, d4polynumbers] }.inject(&:+) } # 輪っか? bunch_of_cyclic_chain = bunch_of_chain.reject{|chain| chain.first.first.to_s[0,2] != chain.last.first.to_s[-2,2] } # 出力 bunch_of_cyclic_chain.each{|chain| puts chain.map{|a,_| a }.join("\t") puts chain.map{|_,b| "P#{b+3}" }.join("\t") puts "sum: #{chain.map{|a,_| a }.inject(&:+)}" }
先は長いのにもう失速してる。「良いもの。悪いもの。: Project Eulerを100問解いてみた」テトレ
中学生の時に の一の位は何かという問題が出た。でも Problem 188は何乗したらいいかもわからない。下手の考え休むに似たり
最終更新: 2011-08-08T21:28+0900
目当てはペルソナ機能。OpenIDは自分が何者かを名乗るためのもので、また他人に自分の名を騙らせないためのものだと思
OpenIDについて認証結果(Webアプリに対する GET/POSTリクエスト)の改ざんを防ぐ仕組みと再利用を防ぐ仕組みを勉強した。再利用が悪なのかはわからないけど。
日記デ
Cookieには openid.claimed_idを保存しておいて、ダメ元で JavaScriptに immediateモ
最終更新: 2011-02-20T21:45+0900
10%未満
def prime? x return false if x < 2 return true if x == 2 quo, rem = x.divmod(2) return false if rem == 0 t = 1 while t < quo t += 2 quo, rem = x.divmod(t) return false if rem == 0 end return true end x, t = 1, 0 primes_on_diagonals = 0 loop{ t += 2 3.times{ x += t primes_on_diagonals += 1 if prime? x } x += t puts "#{primes_on_diagonals} primes out of #{2*t+1} (#{100*primes_on_diagonals/(2*t+1)}%, side length=#{t+1})" exit if 100 * primes_on_diagonals / (2*t+1) < 10 }
encrypted_text = [79,59,12,...,22,73,0,0] # last 2 elements are padding. text = "" 0.step(encrypted_text.size-1, 3){|i| text += (encrypted_text[i+0] ^ (71 ^ " "[0])).chr text += (encrypted_text[i+1] ^ (79 ^ " "[0])).chr text += (encrypted_text[i+2] ^ (68 ^ " "[0])).chr } text.chop!.chop! # remove padding puts text puts "sum: #{text.bytes.inject(:+)}"
1を満たす素数を発見しながらそれを使
# 寝る前にやる。
寝てしま
ち
def prime? x return false if x < 2 return true if x == 2 quo, rem = x.divmod(2) return false if rem == 0 t = 1 while t < quo t += 2 quo, rem = x.divmod(t) return false if rem == 0 end return true end set012 = [[],[3],[]] require 'mathn' Prime.new.each{|prime| break if 10000 <= prime dmod3 = prime.to_s.bytes.inject(0){|sum,byte| sum+byte-?0 } % 3 set012[dmod3] << prime } set1, set2 = set012[1], set012[2] set2[0] = 3 # set1 = [3,7,13,...] # set2 = [3,5,11,...] make_group_of_two = lambda{|set| pair = {} 0.upto(set.size-2){|i| (i+1).upto(set.size-1){|j| if prime?("#{set[i]}#{set[j]}".to_i) and prime?("#{set[j]}#{set[i]}".to_i) (pair[[set[i]]]||=[]) << set[j] end } } return pair } group1, group2 = make_group_of_two.call(set1), make_group_of_two.call(set2) extend_group = lambda{|g| group = {} g.each_pair{|rest, last1s| # rest + one of last1s = group last1s.each{|last1| next1s = last1s gg, out = rest.clone, last1 gg.size.times{|i| gg[gg.size-1-i], out = out, gg[gg.size-1-i] next1s &= g[gg]||[] } if ! next1s.empty? group[rest+[last1]] = next1s end } } return group } group1, group2 = extend_group.call(group1), extend_group.call(group2) # sets of 3 primes group1, group2 = extend_group.call(group1), extend_group.call(group2) # sets of 4 primes group1, group2 = extend_group.call(group1), extend_group.call(group2) # sets of 5 primes printer = lambda{|rest, last1s| last1s.each{|last1| puts %[#{rest.inject(&:+)+last1}:\t#{rest.join("\t")}\t#{last1}] } } group1.each(&printer) group2.each(&printer)
分単位の時間で答えはでたけどもその五つ組の合計が意外に大きくて、10000以上の素数を組に加えても最小の組み合わせになりうる。計算量の増大の仕方がひどくて、これ以上桁数を増やして試行するのは無理だというのに。
じ
が 3の倍数の整数 qは 3の倍数です。
たしか 4の倍数についても同じような判定規則があ
たしか 5の倍数についてもどこかの桁を見るだけで(略
4は 100を作るから下2桁だけ。5は 10を作るから下1桁だけを見ればいい。
一番時間を食
とりあえず、今の素数判定より賢い素数判定があるのはわか
最終更新: 2011-02-13T04:35+0900
7500の正の約数は何個あるか。
Fラン大学の実態:ハムスター速報
素因数の数を数えてしま
復習~。
コメントに↑そのまんま書いてあ
最終更新: 2012-12-12T02:17+0900
適当にカスタマイズして設置した。
XHTML化キ
閲覧不可能にな
<script>タグの中であif(a && b) {}
とか置換してしま
scriptタグが解釈できないブラウザなんて PCを手に入れた当時から持
<script><!-- --></script>
なんて最初から書かなか
<script>/*<![CDATA[*/ /*]]>*/</script>
コメントで囲うのは JavaScriptとして正しくあるため。より字数の少ない行コメントにしないのは、なにかでエラ
但し書きを付けても無駄。HTMLと日本語は混ぜるな危険。中途半端な HTMLの隠蔽は悪。tDiaryスタイルと etDiaryスタイルより Wikiスタイル。
自業自得。さすがに、タグに挟まれた部分に & や <, > を放置してたわけではない。
<a href="ttp://hoge/script.cgi?a=b&c=d"> <img src="ttp://hoge/script.cgi?a=b&c=d">
すべてこの形の & がエラ
それにしても、ちらちら目に入る古い日記が恥ずかしくて死ねる。読む人間も、そもそも読める内容もないのであえて気づかぬふりで放置するけども。
最終更新: 2011-02-12T22:42+0900
Bignumはできれば使いたくない。aが 100未満なので 8桁ずつ。
answer = [0, 0, 0] # sum, a, b 1.upto(99){|a| digits = "1" 1.upto(99){|b| sum = 0 carry = 0 0.step(digits.size-1, 8) {|i| l, r = [0, digits.size-i-8].max, digits.size-i carry, digits8 = (digits[l...r].to_i * a + carry).divmod(100000000) digits8 = "00000000#{digits8}"[-8,8] digits[l...r] = digits8 digits8.each_byte{|byte| sum += byte - ?0 } } if carry != 0 digits8 = carry.to_s digits = digits8 + digits digits8.each_byte{|byte| sum += byte - ?0 } end if answer[0] < sum *answer = sum, a, b end } } p answer
とかいいながら Bignum。
count = 0 numer, denom = 1, 1 1000.times{ numer, denom = numer + denom + denom, numer + denom count += 1 if numer.to_s.length != denom.to_s.length } p count
最終更新: 2011-02-10T23:58+0900
経過 | 荷物受付 | 02/10 | 12:36 | 金沢物流システム支店 |
経過 | 発送 | 02/10 | 12:36 | 金沢物流システム支店 |
最新 | 配達完了 | 02/10 | 12:06 | ○○センタ |
受付は昨日のはずだ。このせいで一切のトラ
最終更新: 2011-02-11T00:59+0900
Fix: 検索(ツ
ールバ ー)を使うとプラグインコマンドが実行される(2)
検索ボ