2012年4月9日 星期一

七大前景看好的程式設計語言

想做企業應用開發的程式人員,如果不學習Java、不學c#或PHP等主流程式設計語言,那將是愚蠢的事情。但像Ruby和Erlang那種過去主要針對特定領域的程式設計語言,如今也已成為企業應用的開發語言。



在企業級程式設計語言領域,主流語言總是博大精深。程式碼主要由少數幾種主流程式設計語言來撰寫,一些場合用Java,另外一些場合用c#或PHP;有時,在像遊戲程式設計這樣追求高性能的任務中,重量級程式設計人員會動用C++或其他通用程式設計語言,所有應用程式都通過SQL語言與資料庫打交道。想做企業應用開發的程式人員,如果不學習上述的程式設計語言,那將是愚蠢的事情;然而令人驚奇的是,有一些原本屬於特定領域專用的程式語言,現也正在企業應用領域異軍突起。

除了那幾門主流語言之外,針對日益增長的通用性問題,目前有好幾種程式語言也開始提供解決方案─甚至連持續雄霸一方市場的老式專用程式語言也是如此。這些語言都提供自動排版程式碼等拼寫功能,以免讓程式設計師被括弧、大括弧等重重嵌套給搞糊塗。

儘管以下七種特用的開發語言可提供在主流開發語言不能直接找到的特性,但其中有很多語言卻還是得依賴於主流語言才能存在。如其中一些語言就得運行在Java虛擬機器上,以便於充分利用Java團隊的資源;而當微軟設計C#語言的時候,它就很明確地是以營造跨語言虛擬機器運行環境為目標,這些細節雖有助於部署,但對程式師而言似乎幫助不大。

不管怎麼說,這七種程式設計語言目前正在企業應用中快速地嶄露頭角,現在也許該是考察它們優勢的時候了!

Python
喜歡使用Python的主要是兩種人:那些痛恨括弧的人和科學家。第一類人幫助創立了這種更容易閱讀、類似Perl的新語言,但又避免了C語言系列那種到處充斥著前後配對的括弧…等問題,造成程式碼不易閱讀的毛病。在飛速發展了幾年後,這項解決方案已經足夠完善,以至於能成為Google應用開發引擎首選的開發語言。格式清晰的Python具有在雲端運算環境中擴展所需要的那種結構,而這正是企業級計算所面臨的最大挑戰。


至於Python會在科研實驗室中普及的原因,則有點難以解釋,因為它並不像Stephen Wolfram專為數學家所開發的Mathematica軟體,Python並未提供任何可明確滿足科學家需要的資料結構和元素。Python之父Guido von Rossum認為,Python之所以在實驗室受到歡迎,可能是因為「科學家在解釋實驗結果時,經常需要即興進行,所以他們會被能讓他們很快地進行工作,並且馬上就能看到結果的動態語言所吸引。」。


當然,Python還擁有大量科學家可能需要的函式庫,如NumPy和SciPy就是其中兩個最知名,透過開放原始碼專案方式而衍生出,專為科學計算而設計的函式庫案例。


像製藥公司那樣的科學技術產業,並不是唯一把Python用於研究的企業。如今很多華爾街的金融公司都很倚重數學分析,也經常聘請大學裡那些習慣使用Python程式設計的科學家。Python在華爾街如此受歡迎,以致於有人甚至建議在債券的招股章程中,必須包含一個用於指定投資人如何得到回報的Python演算法。

Ruby
也許有人會爭辯說Python和Ruby算不上是僅限於特定用途的「小眾」語言,但事實上,若從企業的角度來看,它們仍然是很有應用發展潛力的工具。這也就是說,Ruby─或更確切地說是RoR(Ruby與Rails框架的組合,Ruby on Rails),在建立系統原型方面越來越流行,它是隨著Web2.0的爆發而進入企業應用開發領域,而其中有不少網站一開始都是以Ruby起家。如以提供線上應用軟體,並曾被美國科技雜誌《Wired》評選為「2008年10大最值得關注的創業公司」─37signals.com 即是真正使用Ruby部署其程式碼。


Ruby成功的秘訣,在於其「慣例優先原則 Convention over Configuration (CoC)」的理念。舉例來說,當我們在命名一個foo的變數時,資料庫的相應欄位也會同時自動命名為foo。因此,RoR會是建立系統原型的絕好工具,它讓你只需在一個地方輸入foo,其餘的自動資料表格網頁建立、讀取、更新和刪除(CRUD)的處理工作(Scraffloding),RoR則自動接手進行。


RoR網站主要致力於關聯式資料庫資料的分類。較知名例子有從組合論壇、討論群組和行事曆功能的37signals中,所生成的Basecamp、Backcamp及Campfire等網路應用。RoR可用來處理這些資料庫表的展現格式,以及決定什麼樣的資訊才會被顯示出來。此外,通過Ruby的命名慣例(naming convention)功能,開發人員無需投入大量的重複勞動工作,很容易地便可產出高品質的程式碼模版。


不少企業商用等級(production-grade)的Ruby網站是跑在基於JVM由Java實現的版本JRuby之上,由於JRuby的用戶可得到JVM在處理多執行緒方面的諸多強大好處,這對於有大量使用者需要同時上線併行的企業級部署環境,會有極具價值的助益。


MATLAB
語言原本為數學家求解線性方程組而發明,但由於今日組織需要分析數量越來越龐大的資料,使得企業日益表現出對MATLAB的青睞。許多用於對廣告、歌曲、網頁進行流量分析的較複雜的統計技術,都依賴於類似MATLAB求解的線性規劃演算法的威力。


可以預見的是:MATLAB的使用將隨著網站日誌檔的增長而擴大。對人們來說,要在首頁查看瀏覽列表只是一項簡單的工作,但它背後卻需要統計人員絞盡腦汁從一堆複雜的路徑中進行分析,才有可能得出那個指標。比如說,人們是不是更有可能在週一或週五買衣服?不良品的產生率是否跟生產線有關聯?


出品MATLAB的MathWorks提供了多種白皮書,顯示出工程師如何利用該工具來尋求統計答案。比如Toyota車隊計畫通過分析風洞試驗和其他實驗室試驗來應對北美NASCAR房車賽,而加拿大的生物診斷研究所正在尋求治療燒傷的最佳療法。


也有很多同類開放原始碼專案項目在處理這類工作,包括像是Octave、Scilab、Sage和前面提及的Pytho函式庫─PySci。所有這些工具都有助於人們進行試圖理解和預測客戶行為的複雜統計分析─這對現在的公司來說已經習以為常的工作。

JavaScript
無論如何,JavaScript都不是一門含糊的語言。不管怎麼說,它都可能是這個星球上編譯次數最多的語言,因為只要人們一上網路瀏覽器,就得下載其中的JavaScript腳本並解譯執行。儘管事實如此,甚至還有越來越熱門,基於Ajax的精巧Web應用出現,但JavaScript卻仍很少被認為能用於重量級的應用。


這方面不乏嘗試的先例,如Netscape早在1996年就試圖讓JavaScript成為其伺服器平臺的通用語言,但最終只在瀏覽器中實現。Aptana,這方面的擁護者之一,在Jaxer沒得到市場的接納後便停止了開發。AppJet,一家側重研發的小公司,計劃使用Java所撰寫的JavaScript庫─Rhino來簡化伺服器端的程式設計,則在2009年被Google收購,現在似乎已經轉向別的項目發展。


儘管如此,JavaScript的新應用仍比比皆是。例如,CouchDB便不使用SQL進行查詢,取而代之的是兩個JavaScript函數:Map函數用來選擇,Reduce函數用來把需要的一切打包。而Node.js則是一個稍後出現,更令人鼓舞的伺服器端JavaScript框架,復活了用戶端和伺服器端程式設計兩全其美的古老夢想,這個框架採用Google為瀏覽器開發的V8 JavaScript引擎,以自行決定輸出資料的格式。


在每個人們需要少量腳本(scripting)功能之處,JavaScript找到了新的用武之地。對於大型應用的開發者來說,這是提供用戶創建子應用的最簡單方式之一。我們可以預期,JavaScript繼續在企業應用上發揮作用,特別是一次只需編寫一小塊程式碼的時候。。

R
如今統計分析越來越倚重於「R」,雖然一些純粹主義者仍沿用其原本的名稱─「S」語言,至於Tibco公司所銷售的商業版卻稱為「S-Plus(S+)」。


未來不可能再出現一個S++,因為S+語言本質上可說是附帶統計計算函數和視覺化統計結果的LISP或Scheme語言強化版本。如果老闆想要電腦從數十億行的日誌檔中尋找模式、叢集和預測性變數,R或S是很受歡迎的解決方案。


就像瑞士小刀一樣,R也是編寫處理巨量資料集合(big data set)數值和統計程式的有力工具─如果從其可處理的資料集合量來看,比擬為瑞士軍用砍刀或許更為適合。Tibco的子公司─Spotfire的S+產品高級主管Lou Bajuk-Yorgan說,該軟體有不少使用者主要是將其用於研究商業經營或工程項目如何有效或為什麼失效。另外還有一個例子,則是用該軟體分析天氣模式,以確定安裝風力發電機的最佳地點。

Erlang
你的伺服器需要同步回應許多獨立的併發訊息嗎?你需要把這些請求分發到不同的CPU或位於世界各地的伺服器上嗎?在實務上,這會是企業運算中最難定義的部份。而Erlang,由Ericsson Computing Laboratory科學家發明的開放原始碼語言,則擅長處理這些任務。

這種語言把較少副作用的傳統函數程式設計與用來編譯生成機器碼的現代虛擬機器結合在一起,其特殊的語言結構會強迫程式師,以易於擴展到多核和多機器上的方式撰寫程式碼。現在不僅有很多用Erlang來開發的Web伺服器和CouchDB,而許多以JavaScript替代SQL語法來開發查詢語句的資料庫,也多半是使用Erlang來撰寫。

CouchDB只是個開端,目前有許多處理「巨量資料」的專案管理者正構建具備強大延展性,並可存儲大量資料的系統。如Hibari,這套來自Gemini行動公司的開放原始碼專案項目,可提供失敗後能自動恢復鍵值對應一致性,並具備相當延展性的儲存叢集。而函數程式設計結構,則能使創建可同時有效處理多個連接的大型應用,變得更為簡單。

Cobol
稱Cobol為小眾語言也許不太公平,因為它畢竟曾經一度是商業應用的主流語言。以在早期大型機上發現了第一個軟體錯誤而聞名的Grace Murray Hoppe於1959年主持創建了這套語言,之後進行了幾百次的改進,這使得今日的Cobol程式師可以使用物件導向擴展、自我修改的程式碼,以及其他許多程式設計的噱頭。


但這些改進並未使Cobol贏得某些圈子的尊重,正如著名的電腦科學家Edsger Dijkstra所言:「使用Cobol等於摧殘心靈,其教學應視為刑事犯罪。」但大型主機廠商並不理會這一點,仍就在繼續發展Cobol。如IBM發佈的Cobol 4.2企業版,但它可以很容易地被編號為147.2甚至是588.3。Cobol程式師喜歡這門程式設計語言類似自然語言的語法,即由名詞和動詞構成從句和主句─一種可令人聯想到Ruby的技術。


儘管很少有學校再給新程式師教授Cobol,但這種語言還是尚未退役,因為有不少公司仍在繼續投資其Cobol應用。根據Dice.com求職網站的一次最近職位搜索顯示,有580份工作提及Cobol,而1,070份提及Ruby。大部分的職位似乎涉及財務(資產管理)和門診掛號統計(醫療資訊化)。雖然這是一些首先採用電腦進行幕後處理的領域,但有些工作仍然得需要人來處理。


運行在JVM或.net運行環境的Cobol版本,使得企業從大型主機移植程式碼到Linux系統成為可能。想使用更便利的IDE整合式開發環境的Cobol程式師,可以搜尋Eclipse的外掛程式─這是一個有獲得新支援的計畫項目。

CUDA extensions
作為可程式化的顯示卡大規模平行作業的函式庫,CUDA extensions並非純技術意義上的語言;本質上它僅是C語言的延伸。不過,一些重量級程式師為了在遊戲中渲染逼真的血液飛濺畫面,開始嘗試大規模平行架構;而另一方面,這些大規模平行運算再編碼迴圈的存在,也意味著程式設計師得重新考慮許多既有的C或C++基本程式設計規則,這些都讓CUDA extensions顯得更有價值。

一般會採用CUDA extensions的場合有機器視覺、大量模擬和巨量統計運算等應用項目。而大規模平行計算所自然造成的許多資料分析問題,則使得GPU運算潛力不容忽視。從Nvidia公司最近的一次研討會上,我們可發現該公司正致力將CUDA的應用範圍延伸到包括計算流體力學、電腦視覺、資料庫和資料探勘、金融和分子動力學等利基市場。從那份長長的名單就足以解釋:為什麼它會讓重量級程式師很感興趣。

「很明顯,GPU的發展已達地球逃逸速度。」(譯註:地球逃逸速度即太空船飛離地球的最小初始速度,又稱第二宇宙速度)。Dan Vivoli 說這句話的意思,是指GPU的應用已經不再局限於3D遊戲等領域,而有了更廣闊的發展空間。Nvidia的高級副總裁Dan Vivoli在Nvidia會議上說,在科學家發表了關於為什麼GPU的平行電腦機制能在這些領域有效的論文後,「現在圖形處理晶片的應用,應該已經遍佈所有科學學科和工業領域。」

2011年10月17日 星期一

Foobar2000的各式Plugin

Foobar2000的各式Plugin
裝了幾個foobar的plugin與DSP component
簡記一下~
crossfeed和4front headphone:
都是修正 耳機只聽到一邊聲道,而產生的聽覺定位錯誤(疲勞)
continuator:
Let foobar volume fades in/out when switching songs.
msnalt:
Let foobar interactive with msn's showing playing songs.
convolver:

「Playback」>「DSP Manager」>「Equalizer」(等化器)(我沒使用)
別人調整好的範本
http://sjeng.org/ftp/fb2k/eq_presets.zip
「Equalizer」>「Load Preset」(進入範本解壓縮的目錄),範本副檔名為*.feq,譬如選擇「輕貝斯」(Soft Bass.feq)模式 >「開啟」>「Save all」

「Playback」>「DSP Manager」>「Resampler(PPHS)」
按下右方窗格「Target sampling rate」,選擇「48000」,並勾選右方的「Ultra mode」,按下「Save all」。
為什麼要改成48KHz?原因是為了減少音效卡轉換的失真。一般的歌曲取樣頻率為44.1KHz,但是在Intel制訂AC97的規格時,把音效卡的內定取樣頻率設為48KHz,這樣一來不管你的歌曲是怎麼取樣,都會被強制轉成48KHz,中間便出現了失真,所以我們先利用軟體改成取樣方式為48KHz,來減少失真以加強音質。

□Convolver
Impulse檔下載
http://sjeng.org/foobar2000.html
Convolver可視為通用版的音色音場DSP,它的原理是取一個標準的脈衝響應(Impulse Response)檔案,經過處理之後再錄回去,處理的方式可以是在某個環境下播放、經過某台機器來放、用軟體合成等等。之後只要在Convolver外掛裡載入這個處理好的檔,就能立即將音樂變成處理時的環境。聽起來蠻玄的,但除了模擬教堂那種效果之外,Convolver也可模擬某些機器的音色,像是真空管擴大機等等,非常好玩。上面的網址裡有很多玩家做好的Impulse檔案,載入之後就會立刻變聲,尤其是真空管擴大機的效果,強烈建議試試看!
下載Impulse檔之後,從「Convolver」下按「Load impulse file」就可載入,如果聽到爆音,則取消勾選「Auto level adjust」,並把下面的level adjust往左邊調。

最後,要讓剛才的設定都能生效,選左方窗格的「Playback」>「DSP Manager」,用「<=」將剛才有設定的選項自右邊移到左半部設定才會被載入啟動。
DSP是foobar2000的精華所在,原本只有一個「Volume Control」(控制音量),但右邊有許多DSP外掛可供選擇,foobar2000 DSP的原則是「下面影響上面」,所以記得把「Volume Control」留在最下面。


Related link:
http://stephan.kochen.nl/proj/foobar2000.html
http://blog.yam.com/woodyizie/article/4991126
http://www.yohng.com/headphones.html

2011年10月16日 星期日

[轉貼 + 整理] Win7 硬碟不斷讀寫問題

先聲明:
請自行判斷是否有風險再做...
我也是根據這上面說的判斷後再照著操作 (目前還沒出現藍屏)
最好有先做過還原! 或手邊有隨時可以重灌的OS片...
當然: 搞出問題... 別問我~ 我也不是專業的...
底下自然有滄者高手回文給出更完整建議和解釋...

-----------------------------------------------------
windows7下有幾個系統服務非常瘋狂的讀盤,可以號稱是「硬碟殺手」:它們就是Disk Defragmenter,Windows Defender,以及Windows Search。這些都是什麼服務呢,有什麼用呢?


Disk Defragmenter是整理磁碟碎片的,Windows Defender是防禦間諜軟件的,Windows Search是提供索引服務的,這幾個系統服務雖然具有一定作用,但從「成本-效益」的角度來分析,特別是考慮到它們對硬碟的「殺害」程度,並不是很理想。磁碟碎片整理完全可以在需要的時候手工進行;索引服務停止後,文件搜索速度似乎並未受到多大影響;防間碟功能其實各種殺毒軟件都有。

感覺有些並沒有用吧!!那就禁用它,開始吧:

1. WIN+R運行Services.msc

2. 找到

Windows Defender服務並點擊「禁用」

Windows Search服務並點擊「禁用」


徹底解決win 7狂讀硬碟的問題

關閉Volume Shadow Copy服務,在win 7里很多文件、文件夾看內容裡都有一個早期版本 選項,我想這個功能對絕大多數人都沒有用吧?Win+R打開services.msc ,找到Volume Shadow Copy,設置為禁用


解決方法1

Win+R 運行以下命令:

net stop sysmain

為了保護你的硬碟,安裝完win 7必須做的幾件事情

1. 關閉Volume Shadow Copy服務,在win 7里很多文件、文件夾看內容裡都有一個 早期版本選項,我想這個功能對絕大多數人都沒有用吧?Win+R打開services.msc ,找到Volume Shadow Copy,設置為禁用

2. 關閉所有分區的系統還原:在我的電腦 內容 高級裡關閉所有分區的系統還原

3. 關閉所有分區的 磁碟清理 計劃任務,在磁碟槽上點內容,找到工具 ,立即重組,排程設定,把「計劃磁碟重組工具」的鉤去掉

4. 關閉包含大塊文件的文件壓縮和索引,在磁碟槽/文件夾上點右鍵,取消索引文件以加快搜索速度,在文件夾上點右鍵,內容,高級,關閉「壓縮文件以節省空間」「索引文件以加快搜索速度」

5. 關閉win Search服務。

6.關閉Superfetch服務



解決方法2

「關於「win 7使用時,硬碟燈老是會閃」的解決方法

很多朋友安裝vista後,開機後會出現很長一段時間的硬碟燈狂閃的現象,而且電腦也變得很慢,打開「進程管理器」,cpu利用率是不是很高,幾乎100%。這時留意看一下一個是否有一個名為「taskeng.exe」的進程的cpu利用,如果它很高,恭喜你,可以用我的方法解決:

1、左下角的「開始」--「所有程式」--「附屬應用程式」--「系統工具」,找到「工作排程器」並運行。

2、在「工作排程器」的左邊依次展開「工作排程器程式庫」--Microsoft--win,並在其下找到「MObilePC」項,點擊後中間會出現兩個任務名稱HotStart和TMM。

3、雙擊TMM,在彈出的框中選擇「觸發器」標籤,在其下的看到「登錄時」,雙擊他,再次彈出一個框「編輯觸發器」,在最下方有一個「啟用」選項是打勾的,去掉其前面的勾,確定退出。

4、重啟電腦,看看硬碟燈是否還會在開機後30秒後狂轉,打開「進程管理器」,再看看是否還有「taskeng.exe」長時間100%的cpu利用率。如果開機後30秒後電腦不在狂讀硬碟就一切OK了!

5、如果開機後仍然有超過1分鐘的狂轉和「taskeng.exe」的100%,再次進入「任務計劃程式」,將前7項(如果你要使用「Media Center」,就不停它的)中的所有計劃任務全部取消,再重啟,看看,一般就OK了。

經過以上操作,如果一切正常,你的電腦速度應該會有所提高,不會再像以前哪樣開機後超慢!內存使用也會減少很多!

-----------------------------------
後文:
速度提升....要用啥測?
不過倒是感覺硬碟 喀喀運作的頻繁機率降很多了...聽到HD喀喀聲時,當然電腦會頓
之前光只是上網硬碟也再跑...跑心酸喔! (劣者 我已經網頁暫存檔放Ramdisk)
不過微軟用意當然是 優化磁碟碎片...
老話一句.. 看倌自行怎辦前? 風險自己承擔....
硬碟資料可是很難救回唷~~~ = =||

關於電視尺寸與觀賞距離嗎?

32吋~1366*768 最佳觀賞距離 = 54.5 / 768 * 3400 ≒ 241公分=2.4米
37吋~1366*768 最佳觀賞距離 = 61.3 / 768 * 3400 ≒ 271公分=2.7米
42吋~1366*768 最佳觀賞距離 = 67.3 / 768 * 3400 ≒ 298公分=3.0米
42吋~1920*1080 最佳觀賞距離 = 64.6/ 1080 * 3400 ≒ 203公分=2.0米
46吋~1920*1080 最佳觀賞距離 = 71.0/ 1080 * 3400 ≒ 224公分=2.2米
52吋~1920*1080 最佳觀賞距離 = 79.2/ 1080 * 3400 ≒ 249公分=2.5米


何謂最佳?
就是能看到它的特質~它的好~
所以Full HD機種會比HD機種的距離更近~

視角的計算方式很簡單~
假定物體寬 W~距離 L~視角就是 atan (W / 2L) * 2~
例如...在 100釐米以外 30 釐米寬的物體~
水平視角就是 atan (30 /(2*100))*2 = 17.06 度~
垂直視角的計算依此類推...
atan (30 /(2*100))*2/pi*180~
但是各尺寸是有分16:9與4:3喔!

小弟的算法說最佳觀賞距離~倒不如說最遠的最佳觀賞距離!
真的要以公式去算!
32"~1.16m
37"~1.34m
40"~1.46m
42"~1.55m
46"~1.71m
52"~1.92m