2005年2月3日 星期四

我的搖滾大夢

在輔大聽音樂的那段時光,我想會是這輩子最美好的記憶吧

說起聽音樂
從國小國中剛好趕上那逐漸逝去的民歌潮,收音機裡播放的都是吉他伴奏為主
的校園民歌。市區裡,貼著吉他招生的教室,也是一個接著一個開,看著堂哥
抱著吉他彈彈唱唱,總會不知不覺露出羨慕的眼神,直到某一個無聊的寒假,
學會了吉他基本四和弦,聽音樂就像是吃飯睡覺,變成了生活中的一部份。
再跨到西洋音樂領域,是堂姐的那一張張光美西洋排行榜,真正著迷搖滾樂,
則是在大一住進輔大理二舍時開始。

住在宿舍裡,總是在每個寢室裡串來串去,每個人都有自己喜歡的樂團與音樂
風格,剛入門的的我,聽的是Bon Jovi , Cinderella,還有大家很熟悉
的Europe,阿龍的桌上是整排的Iron Maiden卡帶,人俊著迷的是
Helloween,而西瓜聽的就多了,一些老東西,怪裡怪氣的他都聽..也算是
受到他們寢室生物系學長的影響吧!!
一時之間彷彿開了竅,W.A.S.P、Van Halen、Deep Purple、大量的搖
滾樂改變了自己聽音樂的習慣。

出了新莊到台北,哪裡是我們最常逛街的地方?
在中華路的佳佳唱片行,找著沒有代理的經典專輯,翰江文化的三星卡帶,可
以憑著卡帶上封面恐怖的程度,猜測是不是可以發掘的新樂團,那時候大伙聽
的是重搖滾,手上彈的還是民謠與古典,一直到大一快結束的那個暑假,幾個
死黨決定抽籤選樂器,我選到吉他,西瓜練鼓,人俊練Bass,還有ZUB還經常
來插花玩雙吉他..當9月暑假結束再回到學校,也開始了我們玩團的搖滾大夢。

亞邁樂器,就在高雄火車站前,整個暑假跟人俊到那上課,老師教的是台語歌
(似乎跟搖滾樂兜不起來),"愛拼才會贏"是第一首練的歌,像那卡西,不過
套起來也算是吉他,鼓,貝斯都到位了

再回到台北,海國樂器開始學搖滾Riff,印來的整本小林克己教本,還有西
門町萬年4樓的新知坊,那裡一堆的日文吉他雜誌還有樂團的套譜,就像是把
唱片裡那一段一段狂飆的旋律複製到自己的手上。

大二下學期跟西瓜幾個搬到明志路的中興別館,整層的公寓,大大的客廳,
躺在客廳沙發上,沒有課的下午就這樣抱著吉他看電視,一直相信只要努力
的練習教本上的基本功,有一天一定可以彈的跟Yngwie Malmsteen一樣
快,西瓜有個無聲的練習鼓,墊個紙箱當大鼓,搬出音箱,在客廳可以克難
式的玩起"愛拼才會贏",也可以滿足那種大家一起搭歌的滿足感,還記得那
年 Metallica的同名專輯 橫掃排行榜,但也在Nirvana一掛的西雅圖之
音即將興盛之際,Heavy Metal 逐漸沒落。

大三那年搬到輔大貴子路書局樓上的那段時光,除了上課外,玩樂團練吉他
似乎是生活中最重要的一件事。
房門上貼的是Iron Maiden的海報,書架上除了一大疊的卡帶就是那好不
容易蒐集來的樂團套譜Young Guitar雜誌,身上穿的當然是黑色T-SHIRT
,牛仔外套上是跟阿龍手印的Metallica 圖騰,西瓜與人俊都留了長髮,
搖滾客似乎就該是一襲黑衣黑褲與及肩的長髮。
小小一個長型的房間扣掉床,走道也只是一張草席的寬度,書桌的後面就放
著音箱與一整箱的boss效果器。記得自己最喜歡坐在地上靠著牆邊,抱著
我的Ibanez..反覆又反覆的做音階練習,就是要讓自己的手指頭能跟上唱
片的速度。有時候ZUB,西瓜來,大家就各自抱著吉他找地方塞...
音樂 真是無限的美好...

第一次練團是在信義路的米傑遜,黃瑞豐開的店,我的Ibanez也是在這裡
買的,之後就每個禮拜固定到博愛路的YAMAHA練團,一票人騎著車從新莊
到台北,背著吉他背著貝斯走在街上,就覺得自己還蠻酷的..嗯嗯...有點
樂團的樣子了雖然彈的還是很爛。喜歡在團練室裡的那份感覺,可以用力的
打鼓,把吉他的音量操到最大也不怕被鄰居抗議,而聽到鼓聲及那強大的吉
他聲,那樣的快感,我想是沒有別的東西可以取代的。

自己玩玩,開始想要搞社團了,總覺得這樣美好的音樂應該讓大家都知道
我們幾個同學,在宿舍找同學幫忙電腦排版,做好傳單,到各系所的公佈欄
張貼,那個懷抱著崇高的搖滾夢,想把學校裡想玩樂團的都聚集起來,玩出
些什麼東西,不過在學校卻無法找到一個可以讓大家可以練團的地方。
當時還動腦筋動到中美堂,想去挖個地方當團練室,讓大家有個可以用力敲
打的地方。後來進了搖滾音樂研究社,收容了我們心裡小小的夢想。
繼續在校內招集樂手..終於實現了在學校辦一場搖滾演唱會的想法。

在那當下,輔大裡除了已經有幾個成形的樂團,更有許多獨立樂手,透過了
搖研社湊成了幾個團,當時就決定好以每個樂團做5首歌的形式,在學校辦
一場正式的現場搖滾音樂會。我想每個人都是發自內心的喜歡音樂,這場表
演的PA費用,都是由樂手們共同分攤。
表演那天,11點多趕到現場,PA開始架起音響設備,在中美堂外的階梯上
是一票穿著黑衣黑褲的長髮青年,心裡的感動 是那逐漸成型的想像,為了
那天的表演,為我們的樂團取了個只用一天的名字NMR
(Nuclear Monster Rock)聽起來很酷,也是化學系學生才知道的縮寫
字母,這一切似乎是很順利的逐步發生,我們也即將作第一次的完整樂團表
演。
不過悲慘也幸運的事情發生了,當天的表演時間剛好是我們有機化學的考試,
我們樂團幾個幾乎都重修有機化學........已經當了一年了,可不能到大
四還在修有機吧...等考完試回到廣場..發現整個現場的電源都被關掉了..
原因是太吵..。

中美堂位於學校後門,聽說,聲音到前門都聽的到,然後就是一片混亂的場
面...最後一切結束了。準備了好久,還是沒機會上去叫一下,不過也許沒
上去也是好的,自己的技術還是那麼破,沒上去,還能讓自己留些美好的回
憶。

隨著大三結束,這場搖滾夢也接近尾聲,大四大家開始準備研究所考試,也
不再去團練室,我早就決定不再繼續考研究所,開始到音樂系修古典吉他,
到大傳修電子音樂,畢業當兵,到台東,還是帶著我的電吉他一起過去,退
伍後,回家工作兩年,再上台北工作,除了帶著電腦,我的電吉他,音箱,
效果器還是佔了我一半的行李,這幾年彈琴的時間少了,但留下的還是聽音
樂的習慣,聽音樂似乎是一輩子不會忘記的習慣,搖滾夢似乎是醒了,
但現在還是能回味那份,曾經留下來的美好與快樂。

搖滾是什麼?一種生活態度吧!!
---僅以本文獻給..西瓜..人俊..ZUB.帥妹..我們一起做過的一場夢----

2005年1月19日 星期三

FCS--Server端與Client端method觸發與data廣播概念

在FCS的應用上常會需要讓Client與Server間的資料傳遞與method呼叫,以下幾點概念應該可以避免
呼叫method沒反應或資料沒傳到你要的地方等狀況發生

一.Server端method如何被呼叫
Server端上要能讓Client所呼叫觸發的function,需定義在Server端的Client物件上
你可以用prototype方式去extend 原本Client 類別的method,讓Client類別所產生的
instance都擁有該method
例:
Client.prototype.newfun=function(){}
你也可以把這function定義在單一Client instance下,

例:
application.onConnect(newClient)=function(){
.....
newClient.newfun=function(){}
}

二.Client端的method如何被呼叫
在Client端上要讓Server端可以呼叫的function,一定要定義在Netconnection上
例:
nc=new NetConnection();
.....
nc.myfun=function(){}
三.send或call這兩個method在使用上有何差異?如何使用

call:這method在Client端上可使用的是netconnection物件,在Server端上可使用的是netconnection與Client物件

  1. 在Client端利用netconnection.call來觸發執行Server端上Client 物件的method

  2. 在Server端上利用Client物件.call來觸發Client端上netconnection上的method

  3. 在Server端上使用netconnection.call時,這時這server的角色就像一個client端一樣,是在觸發另一個Server
    端上Client 物件的method


send:在Client端上可使用這method的包含SharedObject與netStream。 send這個method很有趣,他讓你由client端去啟動所有同在client端的function,但因為在觸發function時可以帶
參數過去,這個特性是可以讓你利用來做小量資料的廣播的,要廣播給所有人接收到的資料,並不一定就要放在
SharedObject內,利用其onSync來做同步,有時用send也是一個很簡單的做法,如何定義

  1. 在netStream或SharedObject上定義好method "myfun"
  2. 利用netStream.send("myfun")或sharedobject.send("myfun",myvar)可讓所有client上的"myfun"都會被觸發


四.幾種可能的互動型態範例

  1. Client端對Server端傳送data或呼叫執行Server端function
    應用範例:一個簡易聊天室,聊天內容只存在Server端的變數內,不使用SharedObject存放
    呼叫Server端的message這method來處理client傳上去的msg這對話內容

    Client端:
    nc.call("message", null, msg);
    Server端:
    application.onAppstart=function(){
    application.chat_content="";
    }
    application.onConnect=function(newClient){
    .......
    newClient.message=function(msg){
    application.chat_content+=msg;
    }
    }

  2. Client端對所有Client廣播data並執行指定Client端function
    應用範例:以之前在站上回覆過的問題為例,一個clinet要輸入一個網址url_txt,要讓所有的client都
    會開啟這網址的網頁

    Client端:
    先定義一個附掛在so上的method
    lobby_so.openPage=function(receive_url){
    getURL(receive_url);
    }
    利用send就可讓所有client接收到這網址並開啟
    lobby_so.send("openPage",url_txt);

  3. Server傳送data給特定Client
    應用範例:當有使用者連線上server,當使用者資料驗證正確時,接受其連線一方面要client去執行指定的function跳到某頁或讓某mc出現...,同時又要把server端的資料帶過去
    說明:server只回應正在與server做互動的那個client,如以上範例,server只會去觸發請求連線的該client去執行指定的function,其他client不會有反應

    Server端:
    application.onConnect=function(newClient,pwd){
    if(pwd=="ok"){
    application.acceptConnection(newClient);
    newClient.call("get_message",null,message);
    }else{
    application.rejectConnection(newClient,errObj);
    }
    }
    Client端:
    ........
    nc.get_message=function(message){};

  4. Server廣播data給所有Client
    應用範例:當有人斷線時,由server端廣播所有client,讓所有client都能同步更新client名單
    說明:以上範例來說,當clinet無預警的斷線,只有Server上的application.onDisconnect 這handler會被觸發,也就是說你需要在這handler內寫一些程式去廣播通知給所有的client
    如何廣播?有以下兩種做法

    1. 把資料放在remote SharedObject物件內,只要SO物件內容更動,即自動觸發Client端的so.onSync
      將線上人員名單寫在remote SharedObject物件內,當有人斷線,只要把so內該筆資料剔除掉,因為so內容改變,
      因此所有Client端的so.onSync 這handler將被觸發,即可達到你要更新資料的目的

      Server端
      application.onDisconnect=function(newClient){
      userlist_so.setProperty(newClient.name,"");
      }
      註:相對的當server端無預警的斷線,client端可由nc.onStatus這handler內由判斷info.code 來取得資訊

    2. 當資料不是存在so內時,只是存在server端的一個變數上,可以善加利用application.clients來對所有client廣播
      以下會觸發所有client端上的client_fun,並把server上的sendvar變數帶過去

      server端,
      application.onDisconnect=function(newClient){
      for(var i=0;i<application.clients.length;i++) {<br />
      application.clients[i].call("client_fun",null,sendvar);
      }
      }
      Client端
      nc.client_fun=function(myvar){ }



2005年1月7日 星期五

FCS--Flash Communication Server簡易設定

以下提供在安裝完成Flash Communication Server後,做一些簡易的設定修改,可以讓Server的維護與使用較為便利
一.說明
設定檔均放在C:Program FilesMacromediaFlash Communication Server MXconf目錄下

  1. conf目錄下內建_defaultRoot_目錄,與server.xml檔案
    server.xml內涵括整個server的設定,如設定管理者帳號密碼,在這Server上包含多少Adapter,Adapter有哪些VirtualHost,
    而這些VirtualHost允許哪些帳號使用。
    _defaultRoot_目錄名稱即是預設之Adapter名稱,若你在伺服器上設定多個Adapter,即會有多個目錄,當然你若只是使用個人Developer版本的FCS,是不允許你使用多個Adapter。

  2. 在Adapter目錄(_defaultRoot_)下會有一個內建_defaultVHost_目錄與一個Adaptor.xml檔案
    Adaptor.xml內涵括目前所在Adapter的設定,主要是設定這Adapter內的host要使用哪個ip哪個port來進行連線。當你的Server上有多個Adapter時,每個Adapter間絕對不可同時使用相同ip相同port號,否則會發生衝突,而致系統異常。
    _defaultVHost_目錄名稱即是預設之VirtualHost名稱,當你在這Adapter內設定多個VirtualHost,則需要有多個與所設定VirtualHost同名的目錄存在。

  3. 在VirtualHost目錄(_defaultVHost_)內包含application.xml與vhost.xml兩個檔案
    vhost.xml內設定了包含,這VirtualHost所要使用的application目錄,application.xml內設定了要套用在application的設定。



二.如何增加server管理者帳號?
管理帳號是寫在server.xml內在<admin>往下找會看到<UserList>,server可以有多少管理帳號,就會有幾組的<User></User>。
name放的是使用者帳號,<Password encrypt="true">內是已編碼的的密碼資料,你可以將encrypt設成false,即可直接填入密碼,不做編碼,不過不建議這樣做,可以透過以下兩個方式設定編碼之密碼。

  1. 透過FCS提供之管理介面,在"Admin Users"項目下方加入或修改密碼

  2. 使用Server Management Action Script寫一個管理用的flash檔,利用指令addAdmin(admin_name, password)即可做到,至於Server Management ASD如果你有FCS光碟裡面就有,若無則需要到Macromedia網站下載,FCS Help內並無這份資料。



三.如何指定FCS使用指定IP,指定port
開啟Adaptor.xml,修改<HostPort>192.168.0.2:1935,443,80</HostPort>,使用rtmp連線server時即可將server ip設成192.168.0.2,然後連線會依序找,1935port是否可用,若port 1935被擋,會接下來找port 443,再不行就會走port 80

四.如何指定application所在位置
系統安裝好,application的位置都是預設在C:Program FilesMacromediaFlash Communication Server MXapplications下,也就是說你要連線的ap目錄都要放在這裡,通常這樣的管理是比較不方便的,我會把ap要建置的目錄放在其他好維護的地方
開啟Vhost.xml,找到<AppsDir>填入你放的目錄,以下是我的設定
<AppsDir>d:www_rootfcs_ap</AppsDir>

五.如何設定影音資料的虛擬目錄
如果有預錄好的mp3或flv影片檔要播放,這些要做streaming的多媒體檔案須放在FCS上,而不是在Web Server,可指定較易維護的目錄來放置檔案,並設定虛擬目錄名稱。
開啟Vhost.xml,找到<VirtualDirectory>,內可依需求設定多個stream虛擬目錄,以下我使用兩個目錄分別來放video與audio
<Streams>video;D:www_rootfcs_streamvideo</Streams>
<Streams>audio;D:www_rootfcs_streamaudio</Streams>
將mysong.mp3放到D:www_rootfcs_streamaudio即可在程式內用mystream.play("mp3:audio/mysong")播放

2004年12月15日 星期三

電腦遇難記....我的硬碟..

今天早上天氣很好,
邊吃早餐邊看UDN News,奇怪螢幕不動了..只聽到桌下的電腦硬碟嘎之嘎之的響
心裡一陣莫名恐懼..這下大條了,立刻關掉電源,等了一下,再啟動,還嘎之嘎之的響,我看是真的完了,
趕緊去借了螺絲起子,拆硬碟下來拿到別的機器上做測試,打開機殼一看,硬碟根本就拔不出來
IBM 6824-P8V主機,光CPU風扇就把硬碟抽取的空間卡死了,怎麼把硬碟拿出來?難道要先把CPU的風扇都卸下嗎?
看樣子也不是,拆了CPU兩根大螺絲,就是一點都不為所動,折騰了半天,投降了,找人問吧...
原來答案就是,先將CD-ROM卸下,再把前方面板掀開,就可直接由前方抽出硬碟了..太久沒組裝電腦..不知道現在都長成這個樣子
把硬碟掛到別的電腦上,BIOS還是抓不到,再試著進BIOS自己把磁軌資料寫入,還是不行,看樣子真的沒救了...我5年的資料.....
只好乖乖的找一顆空的硬碟裝到電腦上,開始重裝系統,直到現在算是把該用軟體與server都搞定,
還在想如何救原來硬碟的資料,打電話問同學,說把硬碟拆開(這樣ibm就不保固了,自己要認賠一顆)..裡面的皮帶與線路調一下
bios可能可以抓到..再趕快copy出來,聽起來難度頗高,那給人送修呢?MIS給我一個資訊,救1Mb200塊...天哪 ,我裡面資料至少20G
真的還假的......趁IBM維修人員來換硬碟前,再想想吧
第一次硬碟掛的這麼慘,以前Seagate硬碟掛掉都還有些徵兆...唉...哀....

2004年11月29日 星期一

The Innocence Mission 等3張CD入手

暨上週六在合友買了Bossa nova Dream Pop 2005選集後,就想著要去把裡面的幾張專輯敗回來,
聽Loou說本週進的六張在大眾玫瑰就有進,也就不用再跑到敦南誠品找,騎著摩扥車到最近的公館玫瑰。
二樓前衛花園的試聽架上,果然全部都已經發行了,雖然出門前已經想好買哪幾張,還是戴起耳機,對架上
的CD逐一試聽,代理的幾張來自西班牙CD,讓自己會忍不住下手採購,最後還是先買了計劃中的3張

圖片引用自AllMusicGuide
Hope Sandoval & the Warm Inventions的Bavarian Fruit Bread專輯
在收齊了Mazzy Star的各張專輯,卻因為只有3張而覺得有些遺憾,早期的opal作品在網路上亦是難找,
只有這張Hope Sandoval個人專輯與EP,算是在網路上可以很容易的購買,買這張是真的很划算,與直接
向Amazon訂進來,至少也省了200塊,且這次的發行版本還附贈一張Bonus CD包括了"At The Doorway Again"與"Suzanne"兩張EP的內容,實在是太值得了!!


圖片引用自AllMusicGuide
Camera Obscura的Underachievers Please Try Harder專輯
是在選集中除了the innocence mission外,另一個非常喜愛的聲音,現在這張CD這躺在我的Player內撥放著


圖片引用自AllMusicGuide
the innocence mission的 Now the Day Is Over專輯
在聽過the innocence mission的500 miles後,我想這個月,他的音樂都會一直在我身邊出現

>>歌曲播放-<<


>>歌曲播放-<<