「CS」を含む日記 RSS

はてなキーワード: CSとは

2007-10-19

http://anond.hatelabo.jp/20071018230437

いまは東京に住んでたりするんだよね。仕事関係で期限付きの出向みたいなもんなんだけど。

で、また帰ってから引っ越すか……といわれると。それはしないと思う。

仕事、友人関係家族ってのも当然あるし、そう言うこと以外に、自分の生まれた土地が好きなんだと思う。

漠然としてて申し訳ないんだけどさ。

ネットやらCS放送やらのおかげで、田舎で暮らすのも俺にとってしんどいことでもないんだよね。

ただ、舞台とか好きなんで、その面だけは東京には敵わんよ。

だからまぁ、世の中を多少変えたいなとは思う。

子供が夢持っても、田舎だと目指しにくい夢もあるしね。それはホントに許せないから、

俺の目の届く範囲の子供にはそういうことないようにしたい。

2007-09-28

サポーター』 このジョーカーのような言葉

サポーター』の皆さん、聞いてください。

私が『サポーター』をしている川崎フロンターレに対して、こんなことを言う人がいます。

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://anond.hatelabo.jp/20070930020128

http://anond.hatelabo.jp/20071005120232

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-01

http://anond.hatelabo.jp/20070801222021

圧縮アルゴリズムそのものを新規に考えたら高校生じゃなくても随分凄いだろ。既存の技術を組み合わせて実装するぐらいなら俺も高校生の頃にやってた。

HDDの中にあるファイルを片っ端から圧縮してみたら平均してPKZipの5%増しぐらいのサイズにはなってた。だから存在価値は無かった。

そういや東大教養課程で扱うプログラミング言語Rubyになるらしいね。LLの適度なヌルさは教育向きだと思う。

でもそれ危ないよな。ジョエルのおっさんもこう言ってる。

http://local.joelonsoftware.com/mediawiki/index.php/Java%E3%82%B9%E3%82%AF%E3%83%BC%E3%83%AB%E3%81%AE%E5%8D%B1%E9%99%BA

しかしポインタ再帰の明らかな重要性以上に重要なのは、これらの学習から得られる精神的な柔軟さと、これらを教えている授業からふるい落とされないために必要な精神態度が、大きなシステムを構築する上で欠かせないということだ。ポインタ再帰には、ある種の推論力、抽象的思考力、そして何よりも問題を同時に複数の抽象レベルで見るという能力が要求される。そしてポインタ再帰を理解できる能力は、優れたプログラマになるための能力と直接的に相関している。

オールJavaコンピュータサイエンス教程では、こういった概念を扱うための頭の回転の良さを持ち合わせていない学生をふるい落とせない。程度を下げた新しい授業はどうにか切り抜けられるが、Java会計アプリケーション以上に洗練されたプログラムを作れるほどには頭の出来の良くない卒業生たちを、Java 100%スクールが量産しており、その様を私は雇用主として目の当たりにしている。そういう学生MITの6.001やイェールCS 323を決して生き抜くことはできない。最近オールJavaになったデューク大や、私と友人がひどい目に合ったCSE121の言語SchemeMLからJavaに変えたペンシルベニア大の学位よりも、MITイェールの学位に重きを置く理由がここにある。優秀な学生でもデューク大やペンシルベニア大を出た人は雇いたくないと言っているのではない。ただ優秀なのが誰なのかを見分けるのがすごく難しいのだ。かつては学生の出来がいいかどうかは、再帰アルゴリズムを数秒で書き出すことができるかとか、連結リストを操作するポインタを使った関数を、ホワイトボードに書くのと同じくらいの早さで実装できるか見れば良かった。しかしJavaスクール卒業生たちについては、彼らが躓いているのが十分な教育を受けていないためなのか、それとも優れたプログラミング仕事をするために必要な脳の部分を持ち合わせていないためなのか、わからないのだ。ポール・グレアムは彼らをほげプログラマと呼んでいる。

2007-07-21

http://anond.hatelabo.jp/20070720181745

6のグループ化なんてグループ化じゃねぇって!(イミフww

リンクとかグループとかその辺の扱いはCSでは格段にUpしてる。会社CSで家6.0なんだけど、6.0の使い勝手の悪さにいつもイーッってなる。

2007-07-20

http://anond.hatelabo.jp/20070720164125

ああ、なるほど。

確かにCSになってからDTPユーザ以外の方を向いてリーチを伸ばしているような感じはしていた。

http://anond.hatelabo.jp/20070720152816

いや、根性論だよ。

そういう経営っぽい文句でいうとアドビさんはソニークライシス的「MBA会社ごっこ」で事業コアを失いかけてるだろといいたい。

Acrobatはどうだったか。競争力があると製品展開を広げてハリボテで値を吊り上げたら他社の参入を招いてグダグダゴミ状態。

そして今度はクリエイティブでの大型合併かと思いきやシナジーも無いまま合理化もできない状態でグダグダ

そして時代はブラウザプラットフォームってんでライト~メインストリームユーザー保守コストの低いオンラインアプリケーションへ。

そこでまたアポロとか手形振りだして口先介入でグダグダアドビサイトに行けば一連のシステムがクズだって良く分かるだろ。とりあえず動くもの売ろうぜ。

で、オレ様の財布的にはなんでライセンス形式にしたりスイート製品買った奴の方が損するんだよふざけんなよボケがと、アップグレードの度になぜか端数のソフトライセンスがダブつくんですけどとかいろいろ。

おかしくなったのはCS出した4年ほど前じゃないか?

内情は知らんけど。

2007-07-19

http://anond.hatelabo.jp/20070719153908

公共物か何かの時にCSだっけ?それが出てくるじゃん。あれを考えてしまったのよね。

なんか全体の三角形の大きさは変わらないから云々みたいな話。

2007-06-21

中学のときコピッたソフトと、クリエイティブっていうのに憧れたおかげで、

PhotoshopIllustrator、AfterEffects、Flashとか使えるようになって

通報しますた…というのは嘘で。私もやっとINSが始まるか始まらないかの頃、ネットで知り合った人にPhotoshopCDをもらってだだハマり。それから色々と勉強して、今は仕事WEB制作やってます。あのCD運命変えたかと思うと、ネット恐い。

でもあんな高価なソフト普通の生活してたら触れる機会ないから、有り難かった。今は会社の経費でCSだのCS2.0だのちゃんと買ってるから許してADOBEちゃん。

2007-05-14

OYAJIさんとYahoo!ブログのこと

最近すごく不思議なんだけど、なんでOYAZIさんって人気があんの?

はてなブックマーク - blogs.yahoo.co.jp:uragoe_2ch の人気エントリー

特にb:idkonichan。俺はあなたに対して密かに恋心を抱いていたわけですが、その熱情も一瞬で冷めました。そんなにOYAJIが好きなのですか?人は分かりません。

はてなブックマーク - こにのブックマーク

それにしてもヘッダーのキティーちゃんと言い、優雅なアバターと言い、俺はhatena利用の後でYahoo!ブログの利用を検討していたのですが、これ見てやめました。俺はゲイじゃないんだ!

Yahoo!ブログ - 楽しむYahoo!ブログの作り方♪

ぶっちゃけYahoo!に「目の毒です」って削除依頼出すと通ると思うよ。10年来のYahoo!ユーザだけどあそこ削除依頼却下したの見たことないもん。id:sweetloveさんのブログ削除騒動の件もあるしね。

LOVE 2.0* - Yahoo!ブログの強制削除

LOVE 2.0* - Yahoo!ブログCSからの回答

ホント昔からYahoo!の体質は変化なし。

余談だけど、FC2デザインは良い。ただ記事を売り込んでアクセスをあげたい人には向かないというかんじ。静かに書きたい人にはいいかもしれないけど。ブログジャンキーにしてもランキングにしても全く機能していない。はてブuserにも劣るんだから噴飯ものです。

seesaaはもうブログを見た瞬間なんか使いにくそうなイメージ。まあイメージですけど。

とすると次回はgoolivedoorあたりがいいのかなと検討中はてな最近ガラが悪くてイヤ

2007-05-11

fizzbuzz.com

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

2007-05-09

地上波以外のもちゃんと見てるじゃん

http://anond.hatelabo.jp/20070509202849

2ちゃんねる

……てのは冗談として、ようつべは? Gyaoは?

うちにはBS/CSもあるけど、雨風に弱いのが欠点

それに、BS/CSにだって「糞みたいな番組」は多いし、CSプロモショッピング以外の番組は金がかかるし。

BS/CSで本当に見たい番組が決まっている人以外にはあんまりおすすめしない。

自分の場合、NHK BS2で昔の映画とか宝塚歌劇とかアニメとか見たかったからBS入れたけど。

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