What have you found for these years?

2009-12-12

zzz

想睡。
進度應該有趕上吧..?

工作

難得洗完澡有點可以輕鬆一下的心情,捨不得睡。
工作也算是有一小段時間了,稍微寫一下跟想像中,或是理想不太一樣的情況。

1. 想用薪資衡量能力,似乎很不準,沒有完全的直接關係。
而事實上,倒也不見得真的不好,有些心情上的事情是要顧慮的,
並沒有那麼單純。基本上仍然覺得不要太誇張也夠用即可。

2. 士氣與用心程度往往比能力要來得重要許多。
當然前提是能力不能差得太誇張。但我想既然都來到這了,
基本的能力一定會有吧?

3. 大家都知道要做,卻沒有人願意主動做,這種事一天到晚在上演。
有些人喜歡說出社會你就知道了之類的話。就我的感覺,
在學校裡做得比較好的情況搞不好還比較多?
可能說的人待在太菁英的地方,又或是學校生活一整個糜爛吧...?

4. 把事情做好有時候是真的會得罪很多人。
當然作法很多種,有很得罪人的方式,也有多數都能諒解的方式。
能做到怎麼樣,就是選擇與功力的問題了...
有句話讓我印象很深:「他的世界和平,你的世界就毀滅」

5. 一個懂你心意,行為模式也不會互斥的的合作對象往往比大部份的事都重要。
因為溝通與勉強配合的成本,一向是很高,很高,很高的....
除非只是想炒短期,那作法往往會變得完全不同。


我不知道我是否能接受各種說法,不過大部份的事都是願意分享的。
如果想聽的話。或是就讓我喃喃自語就好。如果那是比較輕鬆的話。

==
明年再來跟上面的項目印證看看...

estiah Novice

這一個禮拜都沒機會好好打... 結果現在 AP 累積到 600 了。
有趣的是,原本以為到 Lv 20 時會不夠 Int 100, Dex 80
但現在是 Lv 19 Progress to next level (24/25)

HP 247
SP 29
Pow 40
Dex 81
Con 85
Int 98

幾乎是完美拿捏啊!囧
其實我根本沒有算啊,純粹是運氣好而已。也因此人離 Zeal 有點遠...
還要好幾天才走得到。升 Lv 20 後,會有一堆技能可以重練。
我想先停在這,等到有時間後再好好打。

至於分身 Monadicat 好可憐,開了沒時間打... 只好先都亂按。

Monad in C++

這些整理一下丟到嵐達網好了...
不過我現在累翻了,晚點再整理 >< 現在只是筆記下來,
因為不想一直留在 tab 上。
FC++: Functional Programming in C++

Monad 的部份在這 FC++ Monads

==
這幾天老林丟太多東西,消化不完 XD
很多都覺得值得筆記一下...

Monad in C#

天啊,好累 ><
Abstracting over 'M'
希臘文 :o
用這翻譯軟體:Language Translator
雖然不知道有沒有翻對,但基本上非常通順...

Recently a formalism search (in C#) so that I can have a
generic-reusable definition of a Monad. What is missing from
.Net generics is the ability to have a level of abstraction
Type Constructor. As an example of this abstraction, presenting
the generic definition of a Monad through my two favorite
languages.

是 Haskell and Scala.
After some experimentation and study, reached the following code.

不過 C# 懶得細看了(或是說沒空?),只是覺得很有趣。
拿來當寫 Monad in Scala 的參考吧。

2009-12-11

VarArgs in Haskell

沒記錯的話好像是在 PLT 板看到,然後在嵐達網上提起這件事
就有人匿名貼了這份連結。又由於 ptt 全文搜尋不便嘛,
嵐達網東西也不會很多(汗顏),全部翻一下總算是找到了。

做道題娛樂一下
(對不起我轉繁體,因為 mac 版 firefox 碰到簡體字的話,字型會亂跳...)

唔,倒是才發現作者跟 AvgTree in Haskell 裡提到的作者是一樣的。
搞不好那個匿名連結也是本人貼的...? XDD 這樣世界還真的是有夠小!?
畢竟上篇提到的先寬度標記裡他就有發言過,所以是滿有可能的。
原本的 assignment 是這個 AFP Assignment 7

btw, 練 Haskell 真的有種回到過去的感覺,回到當年學 C 的感覺...
當然不是在說 Haskell 哪裡跟 C 像,而是那種懵懵懂懂,都還在摸索的感覺。
後來練 ActionScript 和 C++, 基本上都差不多是線性學習吧?
Ruby 也不用多說,基本上沒什麼難的,要指數成長甚至都沒問題。

但 Haskell... 就常常碰到瓶頸,卡住而發呆。而且卡住的時間,
應該也遠比最早學 C 的時間還要來得長了。一開始學時,
大概是 data structure 卡最久吧?不太懂 stack 要幹嘛。

我覺得這樣還滿有趣的,重新回到最初的初學者狀態,
也可以體會那種忽然間頓悟的感覺 XD

離題了...... 不過話說回來,如果能在國外念那些東西也滿好的。

回主題.. 裡面還有提到,有另一個更深入的玩法在這:
Functions with the variable number (of variously typed) arguments
又是 Oleg 啊!!真是什麼地方都看得到他的蹤影 XD
而且他網站上的東西都用 public domain,
有時候會覺得神人的東西很多都直接放成 public domain.. XD

總之就是把 count 和 zero 重新複習了一次。光是看懂真的沒用,
還要多練習,否則很快就會忘記了。來看看他 type inference...
首先我是取名為 Blackhole:

class Blackhole a where
zero' :: a
count' :: Integer -> a

假設現在有:
count "" 2 id :: Integer
....
很累,有空再推導一次好了。這邊先跳過。

翻了一下 Oleg 那篇,想到確實可以做 list generator
gen 1 2 3 :: [Integer] -- [1, 2, 3]
過程不多說了,試很久... 而且還是有參考 Oleg 的作法。
我不知道 class GenList a r | r -> a 裡的 | r -> a
是什麼意思,加了才能過。extension 要開 -XFunctionalDependencies
還有其他兩個分別是 -XMultiParamTypeClasses -XFlexibleInstances
也是改天再來查什麼意思... 其中還試到了 -XFlexibleContexts
但最後的成果似乎不需要開這個。可能需要看一下這個吧:
7.8. Other type system extensions
class GenList a r | r -> a where
gen' :: a -> [a] -> r

instance GenList a [a] where
-- gen' = (:)
-- gen' = curry $ reverse . (uncurry (:))
gen' x xs = reverse (x:xs)

instance GenList a b => GenList a (a -> b) where
-- gen' :: a -> [a] -> (a -> b)
gen' x xs = (flip gen') (x:xs)

gen :: (GenList a r) => a -> r
gen = (flip gen') []

其實原本是不想寫得跟 Oleg 一樣,但改到最後居然變一樣了...
雖然 arg 順序是不同啦,所以才有 flip.
原本寫成 gen' :: a -> [a]
發現這樣 GenList a (a -> b) 會產生出 [a -> b] 明顯不對。
切出 r 變成 gen' :: a -> r 則發現少了累加的參數?(細節忘了 ><)
再改成 gen' :: a -> r -> r 則導致累加的東西變成 [a -> b]
然後就改到跟 Oleg 一樣了 XD...

累昏了,反正就先筆記...

2009-12-10

The Y Combinator (Slight Return)

updated 2009-12-13: 浪打王版

The Y Combinator (Slight Return)
Tiger got to hunt,
Bird got to fly;
Lisper got to sit and wonder, (Y (Y Y))?

Tiger got to sleep,
Bird got to land;
Lisper got to tell himself he understand.

— Kurt Vonnegut, modified by Darius Bacon

有點懶得細看,因為很長,不過大致翻了一下,這篇講得非常清楚明白,
而且大抵上講的都是對的。之所以說講的是「對」的,因為發現很多人
誤解了 y/fixed-point combinator... 雖然名詞用錯或許不是大問題,
但我們終究需要使用名詞溝通,有誤解會造成困擾的。(有誤用會造成誤解的)

我想這篇可以算是不錯的教學吧,連一些常見的誤解都解釋了。

****************
Mike Vanier 寫了一篇非常詳細的 Y Combinator 說明:
The Y Combinator (Slight Return)
開頭引用了一段很有趣的話:
Tiger got to hunt,
Bird got to fly;
Lisper got to sit and wonder, (Y (Y Y))?

Tiger got to sleep,
Bird got to land;
Lisper got to tell himself he understand.

    — Kurt Vonnegut, modified by Darius Bacon

什麼是 Y combinator? 如果我們不能 refer 自己,不能在 function 裡面引用自己的名字,那要怎麼做遞迴?Y combinator 就可以做到。由於這篇講得非常清楚且詳細,也說明了一些常見的誤解,因此非常推薦還不是很熟悉 functional programming 的人閱讀,可以和自己的理解相印證看看。

曾偶然在有些地方看到有人把 y f = f (y f) 也當成 Y combinator 的實作,例如這篇裡面的 y: Fixed point combinators in C++ 但事實上 y f = f (y f) 本身就是 explicitly recursive, 就像 The Y Combinator (Slight Return) 前面的一句話:
A combinator is just a lambda expression with no free variables.

而在 f (y f) 裡的 y 就已經是 free variable 了... 雖然名詞用錯或許不是大問題,但我們終究需要使用名詞溝通,有誤用會造成誤解的。

AvgTree in Haskell

想到之前在 flolac 聽到穆老師講過一個很神奇的 tree traversal,
大概的感覺就是先做出一個假想值,然後把這假想值用在各種地方,
先把結構建好,然後需要取得值時,忽然間就得到答案了。
有一種其實在哪裡都可以是全知全能的感覺...

google 半天找到這個(抱歉,幫你訂正了 evaluation 的拼法)
Two examples of lazy evaluation

照著上面的感覺自己寫了一次,在想應該就是這個吧?
原本我們會需要先把值都算出來,然後再重新把整棵樹建出來。
現在這樣只要先假設我們有最後的值,就能一邊算一邊建立。
事實上,正確的思考法或許是,我們根本就沒有在「計算」,
而是本來就有那樣一個答案在那裡,宣告出來,就可以直接用了。

噢,其實我上一篇就有提到嘛。
1306. 11-30 powerset (2)
自己都忘了........ @@... 去翻才忽然發現。

另一題則來自嵐達網先寬度標記
看來我該找時間試試的。(以下的程式基本上跟文章裡的是一模一樣的)

module AvgTree where

data Tree a = Leaf a
| Node a (Tree a) (Tree a)
deriving Show

avgTree :: (Fractional a) => Tree a -> Tree a
avgTree t = result where
(result, sum, count) = avgTree' t
avg = sum / count
avgTree' (Leaf n) = (Leaf avg, n, 1)
avgTree' (Node n a b) = (Node avg left right,
n + suma + sumb,
1 + counta + countb) where
(left, suma, counta) = avgTree' a
(right, sumb, countb) = avgTree' b

-- Node 6.0 (Leaf 6.0) (Node 6.0 (Leaf 6.0) (Leaf 6.0))
test = avgTree (Node 6 (Leaf 7) (Node 8 (Leaf 9) (Leaf 0)))

wondering or wandering

看到 lay out on an open field of grass,
忽然在想,或許目前的狀況是調整不來的,
每天睡不滿十小時就容易覺得疲倦,我已經無法分辨究竟是
身體疲倦還是精神疲倦了,只知道睡得不夠而精神不好,
很容易就會使得自己想多用些時間,而使得睡眠時間更少,
然後不斷重複...

我也不知道究竟是真的需要睡得更多,還是有其他地方能夠改善,
使得其實不用那麼多也就足夠了。如果這樣是最好,畢竟總覺得時間
不夠用。而就像迷人的睡眠世界還是睡眠的迷人世界那本書所說的,
如果你睡得比較少,總得要想辦法打發那些多出來的時間。

只是忽然覺得,或許事實上需要的是放假,遠離電腦或什麼的?
然而現實總是卡在那,不知不覺,不,應該說討厭處理一些麻煩事的我,
就寧可蒙起雙眼,裝做什麼都沒看到也什麼都沒聽到。
轉眼間就變成現在這個樣子了。與其說我沒什麼選擇的自由,
不如說我承擔不起選擇的自由所要付出的代價吧?

厭倦了待在辦公室。

於是我才能理解為什麼 github 的人說沒辦法朝九晚五。
我找不到前往辦公室的理由,其實。
既然反正都是自己埋頭苦幹,聯絡也都嘛是 email gtalk redmine,
我不懂到底在幹嘛。只覺得自己只像是每天醒來張開眼睛,
每天睡覺閉上眼睛,沒什麼為什麼,只是你必須這樣做。

最近,事實上或許該說這幾年?
有時候會覺得吃東西只是為了填飽肚子,不,
應該說是消除飢餓那種不舒服的感覺。
因此就會有種猛把食物往嘴裡塞的感覺,
不知道在急什麼,只覺得趕快吃完就對了,感受不到其他任何東西,
或是因為覺得太急而喘。諷刺的是我卻吃得遠比一般人慢很多。

我不知道自己在幹嘛。只知道這好像是最後的一點時間。
等會爬到床上後,就得面對接下來一連串的困擾。
因此,趁現在還能有多一點自己的時間的時候,多用一點。
那種燃燒生命的感覺很遭,但卻覺得是必要的 trade off.
不,這應該不是原因,而是某種結果。

可惡,好累好難思考...

好啦反正就這樣。等會不知道會不會昏倒在路上...

喔對了,想到一件事。剛剛試著 build rubinius,
我堅持要 enable llvm... 但 clang 的 llvm rubinius 沒辦法用,
而 macports 的 llvm-gcc42 又 build 不起來。

雖然聽說 xcode 有 llvm, 但卻一直找不到,
想說自己明明就有安裝!!google 半天才查到,
原來 apple 把東西丟到 /Developer/usr/bin 裡面了! @@
llvm 就放在裡面。真詭異,啊 gcc 就有放在 /usr/bin 裡面,
llvm 卻放在那邊,害我 PATH 還要額外設過去,這不是找麻煩嗎..?

而且我找不到 headers ???
只好用 macports 的 llvm header + apple llvm-gcc

compile 不會很久,但是 llvm 的東西,如 llvm-link,
opt, llc, 好幾個都非常吃記憶體,會吃到 2G, 整台電腦幾乎卡住,
CPU 有時候也會完全吃到滿。

但最後卻有 linking error :(
我不確定到底是哪裡出錯,因為那 message 實在太長了,
長到連要找東西在哪都很難。不過我成功找到最上面了,
似乎是
llvm::AliasAnalysis::pointsToConstantMemory(llvm::Value const*)
然後上面還有一堆 ld warning, 說很多 .o .a 的 architecture 不對。
搞不清楚那些是 link 錯檔還是 build 方式錯誤...
只是覺得很怪,之前 llvm 都是直接就能用,這次怎麼問題那麼多。

quotes from Alice (0)

though i'm very tired, too many things stack on my head,
i just need to pop some of them, or there would be a stack
overflow... i am trading this with tomorrow.

there're many interesting sentences in
Alice's Adventure in Wonderland, i am quoting them here to
make me figure them out more. i don't have a clue about
other parts of the two stories, due to too many words
are not in my dictionary (or brain: word -> meaning),
and i am not finished the second story, that is
Through the Looking-Glass.

in first impression, it's a bit boring that sometimes
i don't know what is the author willing to say.
it's just like a random fantasy, yes, random, just like 42.
but i can imagine if back to that time, it would impress
people, for the first one in history.

i don't know. The Lord of the Rings make me feel bored as well.
though i've only watched the movies, never read the books.
i don't care if it is the first one or not. i wasn't there.

enough of junkie words....
i should write in Chinese instead.

p.48
"Come up again, dear!"
I shall only look up and say "Who am I then? Tell me that first,
and then, if I like being that person, I'll come up; if not,
I'll stay down here til I'm somebody else"

p.98
the last time she saw them, they were trying to put the
Dormouse into the teapot.

p.111
'I quite agree with you,' said the Duchess; 'and the moral of
that is - "Be what you would seem to be" - or if you'd like
it put more simply - "Never imagine yourself not to be otherwise
than what it might appear to others that what you were or might
have been was not otherwise than what you had been would have
appeared to them to be otherwise."'
'I think I should understand that better,' Alice said very
politely, 'if I had it written down: but I'm afraid I can't
quite follow it as you say it'

lsd and lld

lsd: short hand for ls -d and strip non-hidden files.
sometimes i just want to list all hidden files,
since a plain ls lists all non-hidden files.
lsd + ls = ls -a

function lsd -d 'list all hidden files'
if test $argv
set argv $argv/.
else
set argv '.'
end
ls -d $argv*
end

lld: nothing special, same as above and replace ls with ll
not sure how to merge the two, but it just works...
function lld -d 'list all hidden files'
if test $argv
set argv $argv/.
else
set argv '.'
end
ll -d $argv*
end

see config.fish

mate-git and mate-gem

mate-git: open a project for a git repository,
this would include dot started hidden files,
such as .gitignore and .vimrc, .gemrc, etc.
should be better than `mate .` or `mate path`

function mate-git -d 'mate a project'
set cwd (/bin/pwd)
if test $argv
cd $argv
end
# here we are removing depth>1 path
# and tr remove quotes, and sed add back quotes
mate (git ls-files | tr -d '"' | sed -E 's/([^/]*)\/?.*/"\1"/g' | uniq)
cd $cwd
end

mate-gem: short hand for opening a gem directory,
should be better than `mate ~/.gem/ruby/1.9.1/gems/rack-1.0.1`
i always need to look into gems' sources, this is helpful.
i am so tired of tab tab tab... i just want a `mate-gem rack`
function mate-gem -d 'mate a gem'
set path (gem which $argv)
if test $path = "Can't find ruby library file or shared library $argv"
echo $path
else
mate (echo $path | sed -E 's/([^/]*)\/[^/]*\/[^/]*?\.rb/\1/g')
end
end

see config.fish

2009-12-09

[HD]自主制作アニメーション『the TV show』

[HD]自主制作アニメーション『the TV show』
這太經典了。節奏感非常好,畫面很流暢,而且漸進效果很不錯 XD
後面大混戰很容易讓人想笑 XD

算了不說太多了,言語會讓人先入為主 XD

Rails middleware

目前要試的是 hack rails session id, 跑:
~/p/r/photo *master> rake middleware
可以看出 2.3.5 確實是 rack based
(in /Users/godfat/project/roodo/photo)
use Rack::Lock
use ActionController::Failsafe
use ActionController::Session::MemCacheStore,
#<Proc:0x00000100e81e38@(eval):8 (lambda)>
use Rack::Facebook
use ActionController::ParamsParser
use Rack::MethodOverride
use Rack::Head
use ActionController::StringCoercion
use ActiveRecord::ConnectionAdapters::ConnectionManagement
use ActiveRecord::QueryCache
run ActionController::Dispatcher.new
(可是不要把 config.ru 藏起來好嗎?)
另一方面,調查:
actionpack-2.3.5/lib/action_controller/middlewares.rb
可以看到其實他是用特製的 application builder...
是 ActionController::MiddlewareStack::Middleware
actionpack-2.3.5/lib/action_controller/middleware_stack.rb
可以看出來他的 use 的用法變化之多,弄得非常複雜,
能吃 String, Class, 或 Proc (lambda)
這個 Middleware 也不是真的 Middleware,
他是 Middleware builder, call Middleware#build
才會產生真正的 middleware.
Middleware#klass 也跟 Middleware#@klass 完全不同...
Middleware#klass 會檢查 @klass 的型別,
而這個 #klass 來自外面的 use 的第一個 argument,
也就是 String, Class, or Proc.
但 Middleware#initialize 時又會把 @klass 洗掉......

超混亂的啦!
@klass 可能是 klass 也可能不是,不同時機下會不同。
在 initialize 之前可能不是,在之後則因為 initialize 而會是。
(這應該切成兩個 method 吧?共用很混亂)
Middleware.new 也被改寫,如果是自己則 do nothing,
不是自己則 allocate + initialize

其實這已經比之前的好了...
rails 之前其他程式更恐怖,這已經算單純的了。
我覺得 datamapper 用 assert_kind_of 還是比較好...
用錯了的話一下就知道了,而不是搞半天發現不知道到底哪個用法才是對的。

接下來可以看怎麼改 session id 了...

Maybe Monad in Scala

失敗,擇日再挑戰... 現在這樣難用到爆炸。
而且 pattern match 不了 Void (Nothing)...
他看不出來為什麼 Void 是 Monad[b] 的 subtype?
啊 Void extends Monad 為什麼不是?? >_<
而且 >>= 的 type 不能自己判斷,還要自己寫太笨了吧...
要我每次 >>= 都要寫明 Monad[b] 是什麼 monad 也太.....
Scala 終究無法成為 Haskell 嗎? @@

trait Monad[+a]{
def >>=[b, c <: Monad[b]](f: a => c): c
}

abstract class Maybe[+a] extends Monad[a]{
override
def >>=[b, c <: Monad[b]](f: a => c): c = this match{
// case Void => Void
case Just(a) => f(a)
}
}
case object Void extends Maybe[Nothing]
case class Just[+a](aa: a) extends Maybe[a]

println(Just(1).>>=[Int, Just[Int]]((x: Int) => Just(x * 2)))

==
* 另一方面,今天狀況很不好,還有待調整 ><
* computer science 不知不覺就聊得很兇... 結果進度全亂了 囧>
* bah, 我快累昏了,要睡要睡要睡,啥屁話以後再說

2009-12-08

時間分配

唉,不爽,關機了乾脆又開機,反正都是晚睡了,筆記一下時間分配。

把一天分成四塊,早上、下午、晚上、半夜。
切割的標準則是,早餐、午餐、晚餐、睡覺。
早餐到午餐之間,視為早上。
午餐到晚餐之間,視為下午。
晚餐到睡覺之間,視為晚上。
睡覺到早餐之間,視為半夜。

排序分別是照上面的排序,則:


週六: zzz, cdb, cdb, zzz
週日: zzz, roo, iis, zzz
週一: roo, roo, i|?, zzz
週二: roo, roo, i|?, zzz
週三: roo, roo, c|?, zzz
週四: roo, roo, c|?, zzz
週五: zzz, !|?, ???, zzz

|: or
cdb -> 3: cardinalblue
iis -> 2: institute of information science
roo -> 9: roodo
zzz -> 10: sleep
!!! -> 0.5: choose delayed one
??? -> 3.5: nothing...

這樣看覺得睡眠不足咧... @@ 不到三分之一。

2009-12-07

嗯... 今天早上狀況 ok, 下午 ok, 晚上普通,現在不是很好。
希望明天可以保持。嗯,原因不明。或許跟下面那段有關?

*

罷,確實也該再試一次忍住,儘管或許哪天又不行吧
反反覆覆或許也確實比停住不動要來得好,宛若龍族所說
那時沒有這樣的感覺,但後來確實有一些這樣的想法
事情有了變化才會前進,哪怕是變糟了,其他相關的事也才能一起動作
與其一直耗著,早點毀滅確實也沒什麼不好...

除非現在只有一件事,而其他都完全不重要
也許吧...

*

c++ rvalue reference 讓人好困惑,算了,
有用到的機會的話再追究吧...
haskell 碰多了就覺得 c++ 這樣走入複雜度,
其實只是造成不必要的困擾,在泥沼裡面打混罷了...

我想 c++ 應該可以用其他角度重新來過的
或許,d 嗎?

*

我記得我還有很多很多想講的
但是現在想不起來......
噢,想到一個,不過那想寫成額外一篇
那這廢話就到此...

但我好累,改天好了 囧>
筆記一下是想說 Monster 的繪本。

2009-12-07

換 theme

決定把用很長一段時間的 Phantasea gmail theme 換掉了。
原因很簡單,顏色對比太低,辨識新信舊信,還有讀信時不是很便利。

先換 Turf 試試,暫時沒空細看。

另兩個一個用 High Score, 一個用 Mountains.
還有一個不明原因不能換... @@

久違的早晨

有這樣的感覺...

先寫點文件。

Alligator Eggs!

Alligator Eggs!
這還真有趣,尤其裡面的描述,雖然有點莫名其妙,但還滿生動的。
我看了半天,才忽然發覺,其實這可以真的拿來教小孩 lambda calculus.
因為其實這並不是很困難的東西,如果有個具體的概念與規則可以類比,
我想確實是可以這樣試試的。(雖然我不知道學這有啥用?邏輯訓練之類的?)

原本都是把他當搞笑在看,所以就沒想到這層

ptt PLT 板 stopcrying 貼了影片,有人寫了程式輔助玩這東西...
(是說,還是印出來玩「建構式」lambda calculus 比較有趣吧? :p)
Alligator Eggs revisited

天之痕

日前看到楓舞軒轅電子報第四十九期

其實我完全想不起來自己是玩到哪個結局了。
但是根據上面的形容,應該是打到所謂玉兒結局,
因為我記得是打師父沒錯。怪哉,我以為兩個結局沒什麼差別,
只差在結尾不一樣?實際上還是有一點差嗎?

我一直滿想重打一次的,因為沒什麼印象了,
只記得感覺不錯。不像軒轅劍參是走馬看花,
就像一般遊戲這樣打過去而已。當然,每個人喜好不同,
我也只打過三和天之痕兩個,其他都沒打過。
也很清楚天之痕因為進度的關係,音樂其實作得很混,
但至少我是覺得很好聽.. 主題音樂也是有優勢的。
而三的音樂花色多很多,尤其一開始的氣氛做得很好,也無庸置疑。

唔,怎麼說。
雖然這種 RPG 真的做爛了,但氣氛做得很好,
遊戲本身不要太差,就能讓人一直回想。
可以把他當成一種電影或小說,媒體本身沒什麼變化,
所以注意力會放到其他東西上。另一種方式吧。
至少對我的胃口就是了。也是難得覺得對中國題材比較感興趣的。
這點也是講到爛了...

可是後面就沒有接觸呢。不知道,少了點什麼契機吧。
或是講得強烈些,那種心情。那種可以坐下來,有一點娛樂的心情。
確實是很久很久都沒有了。再加上某些心理障礙...

扯遠了。
其實我本來只是想說記不起來自己打到哪個結局,
還有三代橫越很多地方,這點確實是滿不錯的。
現在聽聽三代的音樂,彷彿還能拉回一些那時候的感覺,
不,應該說是,那種身在遊戲中的感覺,不是那時候。
那種無限可能與另一個世界的感覺,我猜?
這大概也是我迷戀 RPG 的原因吧。當然,指日式的。
日式的往往比較唯美一點... 歐美式的又是另一回事了。
事實上卻有「遊戲」感得多。或是說,那種真正的 RPG 精神。

*

為什麼要是悲劇?真是個好問題... 實在答不上來。
如果說悲劇比較容易感動,這個理由我實在不怎麼能接受。
又不是自虐或是無病呻吟... 還是徹底的心理變態?

但我是覺得純粹的喜劇確實不容易感動,或是說有虛假感。
現實從來沒那麼好,如果沒有一點共鳴,是覺得很難感動。
天之痕很悲嗎?是覺得還好,雖然確實算是 bad ending 沒錯。

電腦線圈是 good ending 啊,甚至連一點 bad 都沒有,
唯一死的人在第一話之前就死了,後來也沒有人真的受什麼傷過。
甚至所有人都從陰影中走出來... 之歡樂的。但我可不會說他是喜劇。
而是,那種會為了裡面的角色,沒有走到那種下場而鬆口氣。

也許不可否認悲劇比較簡單吧。就像如果每天都很美好,
那也不容易記得那種美好感。沒有悲傷,也不會知道什麼是快樂。
所以我想是比較容易應該沒錯吧?
然而只是做那些確實沒什麼挑戰性,是嗎?
尤其要讓人體會到那種平凡與平常的好,實在是非常不容易。
或許那是因為我們總是會希望好,還要更好吧。
每天走到馬路都是綠燈,真的會想到運氣這麼好?
但如果反過來,卻又會一直覺得倒楣。
我一直覺得所謂莫非定律只不過是如此,好的事忘了,壞的事卻印象深刻。
或許是因為需要改進壞,而好只要持續,所以要記下壞吧?
嘖,這不正是讓人感到痛苦的原兇嗎?不滿足...

*

我不知道那種玩遊戲的心情是否還能夠再有
好笑的是,有時候回想起來,再微不足道的過去也會覺得懷念
得失心重的我,就會覺得那些東西不會再回來,永遠無法再體會
只能在記憶中重建,或是從別人口中重建,而這個別人是一個很小的集合
想到這裡,不免一片茫然
看別人的回憶,亦有這種茫然感
想當年...
看范光陵的《電腦和你》的開頭,忽然有這樣的感覺

end, 不知道講啥了
倒是 sky crawler 又忘記看了......

2009-12-06

Agda on Redmine on Heroku

失敗...

因為覺得 Open Foundry 的 wiki 實在有點難用,
除了修改需要填寫數字的 CAPTCHA 外(這個字我永遠拼不對...),
反應速度超級慢,版面也像是用 iframe 嵌進去的感覺,
也不知道要怎麼新增頁面?剛剛試在已存在的頁面上加入 wiki link,
然後連過去才能新增。按列出所有頁面,很慢以外,有時候還會有 server 錯誤...

再加上沒有 source browse 不太方便,又只支援 svn 和 cvs.

所以試了一下,看能不能在 heroku 上架 redmine.
結果是失敗,而且原因不明。

首先當然 heroku 上面沒有灌 darcs,
好沒關係,反正之前我很暴力地把 darcs repo 轉成 git 了,
花了我好幾天的運算時間..... 在這篇:1201. 10-12 darcs-to-git
我忘記有沒有說明後續了,反正後來真的是跑了好幾天。

於是我把 redmine clone 下來,然後把這個 git repo,
整個當成 bare repo 塞到 redmine 裡面!放在 Agda.git 裡面。
然後竄改 redmine 讀取 path 的方式,硬在前面加個 Rails.root.
這樣一來,就能指到正確的 git repo 位置:

/disk1/home/slugs/95379_56e4575_4da9/mnt/Agda.git

很不幸的是,在我自己的電腦上跑得起來,但在 heroku 上沒反應。
這應該是 read-only 的操作才對,其他都是寫入資料庫。
需要 fs 操作的動作,我全部暴力 comment 掉了。

結果居然不行... orz 而且還原因不明 @@
稍微 google 一下好像也沒看到有人設起來。
幾個 demo 都沒有設 repository.

唔唔,揪~~~竟該怎麼辦才好?



All texts are licensed under CC Attribution 3.0