はてなキーワード: CSとは
いまは東京に住んでたりするんだよね。仕事の関係で期限付きの出向みたいなもんなんだけど。
で、また帰ってから引っ越すか……といわれると。それはしないと思う。
仕事、友人関係、家族ってのも当然あるし、そう言うこと以外に、自分の生まれた土地が好きなんだと思う。
漠然としてて申し訳ないんだけどさ。
ネットやらCS放送やらのおかげで、田舎で暮らすのも俺にとってしんどいことでもないんだよね。
だからまぁ、世の中を多少変えたいなとは思う。
子供が夢持っても、田舎だと目指しにくい夢もあるしね。それはホントに許せないから、
俺の目の届く範囲の子供にはそういうことないようにしたい。
『サポーター』の皆さん、聞いてください。
私が『サポーター』をしている川崎フロンターレに対して、こんなことを言う人がいます。
http://www.nikkansports.com/soccer/p-sc-tp0-20070927-261947.html
どうしてこの人に『サポーター』の気持ちを代弁されないといけないんですか?
この人に、『サポーター』の何が判るって言うんですか?
私はイランにも行った。柏にも行った。
この暴言が吐かれた等々力にも行った。
でも、「裏切られた」なんて一度も思いませんでした。
調査するなら、まず『サポーター』を調査してください。
どれだけの『サポーター』がこのチームの判断を不満に思っているかを。
チャーター機がなんだっていうんですか?
丸2日かけて往復している内の、たった4時間がなんだっていうんですか?
http://hochi.yomiuri.co.jp/soccer/etc/news/20070927-OHT1T00043.htm
この人はイランにも柏にも来ていない。
柏で、0-4で負けている試合の最後の最後まで、どれだけ必死に『サポーター』が声を枯らしたかも知らない。
なのに、どうしてこんな人にこんなことを言われないといけないんですか?
--------
さて、私はここで、
と書きましたが、私自身は、自分が『サポーター』という言葉に該当する人間なのかどうか、自信がありません。
私はインドネシアに行った『サポーター』ではない人を知っています。その人は別のチームを応援していました。
私はイランに行った『かけもちサポーター』を知っています。その人は、なんとその柏とのかけもちです。
年間チケットを持っていても、一度も等々力に来たことのない人を知っています。付き合いで買っているだけで、チームに興味は無いのです。
逆に、店先に旗を掲げているような『サポートショップ』の人でも、水土日に営業している店舗であれば、ほとんどの店の人は等々力には来られません。
この間、こんなことが書いてあるブログを見つけました。
>私はチームが強い時にしか応援しないサポーターですから、当分等々力には行きません。
強い時にしか応援しないのが『サポーター』でしょうか。
でも、その人たちはそのチームの試合を観に行くことはほとんどないでしょう。
ましてや、試合告知のビラ配りなんてしないですよね。
グッズを買って、CS中継で試合を観ていれば『サポーター』でしょうか。
そのチームのことを一心に考えていなくても、『サポーター』という言葉は使われます。
試合を観に行かなくても、『サポーター』という言葉は使われます。
チームをサポートするような具体的行動をとっているようには到底見えない場合でも、本人が『サポーター』だと言えば『サポーター』なのです。
『サポーター』ってなんでしょう。
なのに、この『サポーター』という言葉を使えば、何でも解決すると思っている人が世の中にはたくさんいます。
犬飼専務理事もその一人でしょう。
定義さえあやふやな言葉なのに、サッカー界では常に切り札なのです。
今、私が一番この言葉の意味を問いたい人たちは、『浦和サポーター』です。
犬飼専務理事の関係チームであり、最も『サポーター』という言葉を意識していそうなチームだからです。
浦和では、『We are REDS』の中に、サテライトの選手は含まれないのですか?
そういう選手がトップの試合に出たら、「裏切りだ」と感じ、心一つに応援できないのですか?
あるいは、柏の立場に立った場合、目の前の自分たちのチームが一生懸命戦った上で勝ち点3が手に入ったのに、「こんな試合は失礼だ」と憤りますか?
犬飼専務理事が言っていることはそういうことだと私は考えます。
この人が『川崎フロンターレサポーター』や『柏レイソルサポーター』とは何かを知っているわけではないのですから、
『浦和レッズサポーター』とはそういう人たちだと言っているも同然です。
あるいは、『Jリーグサポーター』はそういう人種だとJリーグは考えている、と言っているのです。
これは「失礼」には当たりませんか?
何にしろ、犬飼専務理事自身は『サポーター』ではありえないでしょう。
それとも、「チャーター機を飛ばしてやったんだから、俺も『サポーター』だ」と言いたいのかな?
追記
続きを書きました。
発祥: http://ex23.2ch.net/test/read.cgi/morningcoffee/1188654905/
Scheme という Lisp 語族の言語を用いて ℃-ute の相関関係をプログラムし、様々な角度から関係性を分析する手法を紹介していきます(ソースコードは最後に張ります)。
まずは、メンバー間の関係を「リスト」というデータ型で表現します。例えば「栞菜->愛理」という関係は
(kanna . airi)
という形で表すことができます。これに、「大好き」という情報を付加し、ついでにその関係の性質を数値化したものを加えると
((kanna . airi) (desc "大好き") (score . 1))
のようになり、関係図における一つの矢印の情報をデータ化できたことになります(暫定的に、好意は 1、良好・中立は 0、険悪は -1 の3段階で表すことにします)。
メンバー間の全ての関係性をこのデータ単位で定義し、データベース化しておくことで、色んな条件に基づいた検索やスコア計算などが可能となります。
ここで相関関係図における矢印を「リンク」と呼ぶことにして、あるメンバーから他のメンバーへどのようにリンクし、またリンクされているかを調べることができます。
(sort-nodes (number-list (from-links)))
結果:
((kanna . 6) (saki . 5) (maimi . 4) (erika . 3) (mai . 3) (chisato . 3) (airi . 2))
栞菜ちゃんがメンバー全員にリンクを張っていることが分かり、℃-ute ラブっぷりが伺えます。なっきーにも同様の事が言えます。例の「女の子が好き」発言を数値的に裏付ける結果と言えるかもしれません。
ただ、データ不足でリンク件数がまだ少ないのと、リンクの性質(好意/反感など)までは分からない点を考慮する必要があるでしょう。
同様に、リンクの終点の件数を調べてみます。
(sort-nodes (number-list (to-links)))
((chisato . 5) (erika . 5) (kanna . 4) (maimi . 4) (airi . 4) (mai . 3) (saki . 1))
えりかちゃんと千聖ちゃんが高ポイントです。メンバーからの人気や注目度の高さを示すデータですが、千聖ちゃんの場合敵対的なリンクが2件含まれている点に注意してください。
なっきーの被リンク数が極端に少ないですが、単純にデータ不足のためだと思われます。はぶら(ryとか言わないようにお願いします。
リンクに付随するスコアを計算することで、愛情の度合いを測ることができるのではないか、という考えに基づく研究です。
まず、全ての関係性を対象として、スコアがマイナスの関係を抽出してみます。
(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))
まいまいとえりかちゃんが特に堅い・一途だという傾向を読み取ることができます。
今度は組み合わせ(カップリング)の評価です。
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))
となります。若干ピンとこない部分もあるかも知れませんが、計算上は矛盾無くデータの内容を表しています。
(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)のスコアの概念を応用し、スコアの低いものが後に出力されるようにすることで、重力感覚に一致するような関係図を得ることができるでしょう。
圧縮アルゴリズムそのものを新規に考えたら高校生じゃなくても随分凄いだろ。既存の技術を組み合わせて実装するぐらいなら俺も高校生の頃にやってた。
HDDの中にあるファイルを片っ端から圧縮してみたら平均してPKZipの5%増しぐらいのサイズにはなってた。だから存在価値は無かった。
でもそれ危ないよな。ジョエルのおっさんもこう言ってる。
しかしポインタと再帰の明らかな重要性以上に重要なのは、これらの学習から得られる精神的な柔軟さと、これらを教えている授業からふるい落とされないために必要な精神的態度が、大きなシステムを構築する上で欠かせないということだ。ポインタと再帰には、ある種の推論力、抽象的思考力、そして何よりも問題を同時に複数の抽象レベルで見るという能力が要求される。そしてポインタと再帰を理解できる能力は、優れたプログラマになるための能力と直接的に相関している。
オールJavaのコンピュータサイエンス教程では、こういった概念を扱うための頭の回転の良さを持ち合わせていない学生をふるい落とせない。程度を下げた新しい授業はどうにか切り抜けられるが、Java会計アプリケーション以上に洗練されたプログラムを作れるほどには頭の出来の良くない卒業生たちを、Java 100%スクールが量産しており、その様を私は雇用主として目の当たりにしている。そういう学生はMITの6.001やイェールのCS 323を決して生き抜くことはできない。最近オールJavaになったデューク大や、私と友人がひどい目に合ったCSE121の言語をSchemeとMLからJavaに変えたペンシルベニア大の学位よりも、MITやイェールの学位に重きを置く理由がここにある。優秀な学生でもデューク大やペンシルベニア大を出た人は雇いたくないと言っているのではない。ただ優秀なのが誰なのかを見分けるのがすごく難しいのだ。かつては学生の出来がいいかどうかは、再帰アルゴリズムを数秒で書き出すことができるかとか、連結リストを操作するポインタを使った関数を、ホワイトボードに書くのと同じくらいの早さで実装できるか見れば良かった。しかしJavaスクールの卒業生たちについては、彼らが躓いているのが十分な教育を受けていないためなのか、それとも優れたプログラミング仕事をするために必要な脳の部分を持ち合わせていないためなのか、わからないのだ。ポール・グレアムは彼らをほげプログラマと呼んでいる。
いや、根性論だよ。
そういう経営っぽい文句でいうとアドビさんはソニークライシス的「MBAの会社ごっこ」で事業コアを失いかけてるだろといいたい。
Acrobatはどうだったか。競争力があると製品展開を広げてハリボテで値を吊り上げたら他社の参入を招いてグダグダのゴミ状態。
そして今度はクリエイティブでの大型合併かと思いきやシナジーも無いまま合理化もできない状態でグダグダ。
そして時代はブラウザプラットフォームってんでライト~メインストリームユーザーは保守コストの低いオンラインアプリケーションへ。
そこでまたアポロとか手形振りだして口先介入でグダグダ。アドビのサイトに行けば一連のシステムがクズだって良く分かるだろ。とりあえず動くもの売ろうぜ。
で、オレ様の財布的にはなんでライセンス形式にしたりスイート製品買った奴の方が損するんだよふざけんなよボケがと、アップグレードの度になぜか端数のソフトのライセンスがダブつくんですけどとかいろいろ。
おかしくなったのはCS出した4年ほど前じゃないか?
内情は知らんけど。
公共物か何かの時にCSだっけ?それが出てくるじゃん。あれを考えてしまったのよね。
なんか全体の三角形の大きさは変わらないから云々みたいな話。
最近すごく不思議なんだけど、なんでOYAZIさんって人気があんの?
はてなブックマーク - blogs.yahoo.co.jp:uragoe_2ch の人気エントリー
特にb:idkonichan。俺はあなたに対して密かに恋心を抱いていたわけですが、その熱情も一瞬で冷めました。そんなにOYAJIが好きなのですか?人は分かりません。
それにしてもヘッダーのキティーちゃんと言い、優雅なアバターと言い、俺はhatena利用の後でYahoo!ブログの利用を検討していたのですが、これ見てやめました。俺はゲイじゃないんだ!
ぶっちゃけ、Yahoo!に「目の毒です」って削除依頼出すと通ると思うよ。10年来のYahoo!ユーザだけどあそこ削除依頼却下したの見たことないもん。id:sweetloveさんのブログ削除騒動の件もあるしね。
ホント昔からYahoo!の体質は変化なし。
余談だけど、FC2はデザインは良い。ただ記事を売り込んでアクセスをあげたい人には向かないというかんじ。静かに書きたい人にはいいかもしれないけど。ブログジャンキーにしてもランキングにしても全く機能していない。はてブ1userにも劣るんだから噴飯ものです。
http://anond.hatelabo.jp/20070508170219 こいつをアセンブラで書こうとしていたが、
すでに
http://anond.hatelabo.jp/20070510170511 にそれっぽいものが書かれていた。
しかしデクリメントした直後に判定するならフラグですむがそうじゃないときはtest命令入れないといけないのでうまくいかんと思った。
とりあえず8086アセンブラで書いてみたが長くなったので実行ファイル(fizzbuzz.com)をBase64で下に書いておくよ。
~) ls -al fizzbuzz.com -a--rwx 98 May 11 03:28 fizzbuzz.com* ~) base64 < fizzbuzz.com uwUDuQoJvl0B/s91ErcD/st1BrpSAesOkLpLAesWkP7LdQi6VgGzBesKkLg6OivBiQSL1rQJzSH+ zXXNtQr+yXXHulYBzSG0TM0hRml6eg0KJEZpenpCdXp6DQokVU0NCiQ=
数字の表示の処理で10で割った余りを使っていたのでまずいと思って修正した。ついでに98バイトまで縮めてみた。
こんなことに時間を使っている俺はバカだ。
ソースも載せとこう。8086なんてほとんど初めてに等しいので汚いだろうけど。
CODE SEGMENT ASSUME CS:CODE,DS:CODE ORG 100H START: mov bx, 0305h mov cx, 090Ah mov si, OFFSET NUM LOOP: dec bh jnz skip1 ; 3の倍数だった mov bh, 3 dec bl jnz skip2 ; 3の倍数で5の倍数だった mov dx, OFFSET FIZZBUZZ jmp loop5 skip2: ; 3の倍数で5の倍数じゃなかった mov dx, OFFSET FIZZ jmp loopend skip1: ; 3の倍数じゃないとき dec bl jnz skip3 ; 3の倍数じゃなくて5の倍数だった mov dx, OFFSET BUZZ loop5: mov bl, 5 jmp loopend skip3: ; 3の倍数じゃなくて5の倍数でもなかった ; 数字を表示する。2桁でいい mov ax, 3A3Ah sub ax, cx mov [si],ax mov dx, si loopend: mov ah,9 int 21h dec ch jne loop mov ch,10 dec cl jne loop ; 最後のBuzzを表示する mov dx, OFFSET BUZZ int 21h mov ax, 4c00H int 21h FIZZ: DB 'Fizz', 0dh, 0ah, '$' FIZZBUZZ: DB 'Fizz' BUZZ: DB 'Buzz', 0dh, 0ah, '$' NUM: DB 'UM', 0dh, 0ah, '$' CODE ENDS END START