2015年9月3日 星期四

php開發工具: Netbeans 常用功能分享 - 忽略不必要的檔案

本文懶人包:

有兩種方式可以忽略專案中的檔案
  1. tools->options->miscellaneous->ignored files pattern
  2. project properties->ignored folders

前面 Ped 介紹了幾種運用Netbeans的方式,相信大家在越用越得心應手後已經不斷把自己手邊的專案加入netbeans管理了吧?

越來越多的專案

這個時候相信大家在開啟Netbeans的時候都會發現速度明顯的越~來~越~慢~~,更煩人的是當在 openProjects 的時候甚至連檔案清單都開不出來,之後還會對所有檔案在背景進行掃描,Ped 自己遇到的狀況是,少則數分鐘多則近十分鐘,搜尋檔案時速度也變慢,Ped 這次就是要分享如何減低這個延遲的情況,畢竟,生命有限,把這些時間拿去玩樂不是很好嗎?XD

opprojects時點選專案只會出現Initializing ...等字樣

  • 忽略專案中的資料夾(單一專案)
首先要知道,這一切都是檔案太多造成的,開啟需要時間、掃描需要時間、搜尋也需要時間,但是很多cache、圖檔、文件檔根本沒必要掃描,我們也不會用IDE去編輯,這些檔案就是在那占著茅坑而已,Ped 在這個做法就是忽略它們,跟git、svn 的ignore差不多,首先如下圖在專案上右鍵後點選Properties選項,
點選專案屬性選項

進到Igonre Folders中,下圖中的Add Folder就可以設定哪個資料夾會被忽略了,像 Ped 就把images、cache、files之類的資料夾給忽略掉了,


這時候再重新開啟Netsbeans的話會發現速度已經變快了,但是如果有一堆專案的話不就得設到天荒地老、海枯石爛,光想到都懶了。

  • 忽略專案中特定名稱的檔案(所有專案)
還好,這部分Netbeans也想到了,在選單 Tools -> Options -> Miscellaneous 中的 Ignored Files Pattern 就是為了解決這個問題而存在的,

ignored file 在 toolbar中的option

設定此pattern即可忽略特定檔案
Ignored Files Pattern 是使用正規表達式去設定,下面是 Ped 自己設定的Ignore pattern已經包含大多圖片、cache的名稱:

^(CVS|SCCS|vssver.?\.scc|#.*#|%.*%|_svn|cache)$|\.jpg|\.png|\.gif|\.svg|\.bmp|\.ico|~$|^\.(?!(htaccess|git.+|hgignore)$).*$

不盡完善的話,Ped 順便提供一個好用的正規表達式工具,如有需要歡迎自行調整取用。

但請確認規則無誤,一旦被忽略的檔案或資料夾,之後在netbeans中都是搜尋不到的,前一個方式設定的資料夾亦同。

  • 最簡單根本的方式 - 只開啟需要的專案
進行到這邊開啟專案時應該都回復正常水準了,但是 Ped 的經驗是專案只會越來越多,遲早有一天檔案又會爆掉,這時最有效又最簡單的方式就是關閉其他用不到的專案,別讓它們常駐在projects選單中,請別太順手按了delete鍵,這會刪了該專案的資料,其實在每個專案的右鍵選單即有 close 這個選項,

close project button
養成好習慣,最近用不到的就先關起來,要用再去File->open project開啟,總之,掃描的檔案越少,玩樂的時間越多!XD

相關文章:php開發工具: Netbeans 編輯器 - 簡介與安裝

2015年8月1日 星期六

[一起讀書吧] 創智慧 - 理解人腦,打造智慧機器


打造智慧機器!聽到這副標題你該不會已經拿起工具準備就緒了吧?!可惜得讓你失望了,這可不是另一本機器人製作聖經 XD,請別忽略理解人腦這句副標題,這本書的主題主要還是放在從神經層次對新皮質如何產生智慧提出一個理論,不過作者的確是想找人和他一起造一部,有興趣可以看一看,說不定你會跟他很合拍。
首先,想製造智慧機器,總得先搞清楚,智慧是甚麼?

演化來的智慧 

許多老生長談都會被賦予智慧的稱號,大家應該都略懂略懂,不過這種時候常常也都不知道彼此說的到底是不是同一種意思,會不會你說鹽他拿糖。

在行為主義的影響下,有一陣子智慧被當作了黑盒子,以制約實驗而言,聽到鈴聲狗就會流口水,為什麼會流口水?從鈴聲到流口水這之間狗在想甚麼?不重要。只管輸入與輸出的結果,但是智慧的重點並不是最後做了甚麼,今天看了本書,看完的瞬間人們就已經理解了裡面的內容,之後不管是去小憩一下或是說故事給別人聽都不會改變已經理解的事實,理解內容當下才是智慧運作的重要時刻。

因此作者從神經科學的角度提出自己的看法:智慧就是一種記憶並做預測的能力,他稱作記憶預測模型,皮質時時刻刻都平行的自動化的提取出過去的記憶,而非進行運算,有時對方說了一句話,常常還沒說完就知道他要說的下個字是什麼就是如此,這樣才有辦法運用傳輸速度這麼慢(晶片快了10的好幾次方倍)的神經元這麼快速做出反應,他提到了幾點還算有趣,像是新皮質的特性。

新皮質的特性

序列性的儲存與提取方式讓我們很難倒背英文字母,說故事也是照著順序比較好說,一不小心還會照著看到時的順序把當下不重要的細節也一起講出來;當看到窗簾下有一隻腳,我們在腦中自然地會補完後面有一個人,這種自體連結性是經由學習而來,當多個想法被連結成一串時就被稱作思想;最有趣也很神秘的是所謂不變的表徵,可以想成是記憶在我們在腦中的索引(好像還是不太貼切),如果今天一首歌是C大調,用電腦去辨識,它會記錄每個音符,再去比對這些音符是否和記憶庫中那首吻合,今天彈奏者突然用D大調彈奏電腦就會認為這是不同的兩首歌,人類就算只聽過C大調版本,仍會說出同一首歌的歌名。這些特性也是當時電腦很難模擬的,那有辦法讓這樣的智慧運行在人造的機器上嗎?

人工智慧

人工智慧研究領域從來沒打算這麼做,傳統的人工智慧並沒有打算理解人類智慧的運作模式,他們的說法是,演化中沒有出現輪子,但人類發明的輪子還比腳更適合長途運輸,飛機也比翅膀更有效率,但作者認為這樣的方式只能解決特定問題,沒辦法類化,比如沒法拿一個下棋人工智慧幫你開車,而且除了某些規則明確的領域外(ex.下棋)當時沒有太大的進展,電腦還是難以解決一些人類可以輕易地做到的事情,因此他致力於研究神經科學,希望把智慧從新皮質中抽取出來,就像軟體一般安裝到人造硬體上,理論上如果將神經元與其間的突觸關係用矽晶片取代即可達成,一但達到,速度極快的晶片能比神經元更有效率、容量更大、又能輕易複製,加上能安裝上各種人類感官無法企及的感應器,屆時的應用相當的廣,但作者也認為這不是短時間內可以達到的目標。

這本書的內容作者2003時在TED中也有做過介紹,在過了十年後,作者在2013的 google tech talk 上有列出六點他發展這種軟體時的原則,已經有提出了一些簡單的成果,能夠預測一些工廠能源消耗等,當然還不是完成品,但看成果似乎還算準確,但在今天google無人車等擁有強大AI的成果慢慢浮現的今天,書中所述的這種擬人的智慧是否有辦法與其競爭(研究資源等)還未可知,但光對智慧究竟在神經生理層次上可能是怎麼樣運作可以略知一二就相當有趣了不是嗎?



2015年4月11日 星期六

[一起讀書吧]泰利的街角



在自由的經濟體系下,只要勤奮努力都有機會到階級的頂端。所謂的美國夢是美國文化的重要價值,但在這本書之中我們可以看到這種階級流動的崩毀,在底層的階級中所擁有的資源是如此的稀少,遑論提供足夠的資源供給家庭,在結構下出現一個又一個破敗的家庭,階級的世襲在歷史上已經不是第一次出現,既得利益者甚至將此合理化、制度化,中古歐洲封建制度、種性制度、禮法制度,而出現在泰利故事中的不就是他們所崇尚的美國夢嗎?

美國夢對於泰利這群街角住民,在某些程度甚至比百年前訴諸宗教的老梗解釋還要殘酷,以種性制度來說好了,今天你會成為賤民是因為上輩子做錯事,這輩子好好做人修身養性,還可以期待來生;但是泰利他們對自己為何身處社會底層的解釋卻被限定在:你沒用!這一切被歸咎在個人之上,沒有別的理由可以推諉,這也造就了龐大的心理壓力,現在的人憂鬱症會這麼嚴重也許與此脫不瞭干係。

加上社會對整個階級的刻板觀點,底層被化約成好吃懶做,他們的標準形象是好手好腳卻又不願意為自己的明天做打算,簡單的被歸類於失敗者,這並不是只有社會底層會發生的問題,整個社會依據職業、收入等簡單易懂的方式劃分階級,弔詭的是,這些街角的人通常被歸類為叛逆的一群人,但大社會的價值觀卻形塑了他們對自己的看法,以職業而言,為了保護自己的自尊,他們與周遭的人同樣看不起自己的職業,行動上以不屑重視工作的態度來因應,在失去了當今自我認同的重要標誌,街角的人們轉而訴諸其他的方式證明自己,最直接的就是人際關係。

街角的人們很急切的希望擁有質量並重的人際網絡,很不幸的是,資源的稀少性卻讓這些關係相當脆弱,無論是家庭抑或友情,在這些關係中也能看到暴力涉入的程度相當的高,畢竟暴力是最快令人被重視的一種方式,原本陌生的路人,平常可能連抬頭都懶得看他,當他持槍對著人時,他就會受到前所未有的關注。街角的故事中,甚至可以看到當妻子被毆打時,會將之視為丈夫重視自己的一種評估方式,畢竟除此之外,丈夫難以達到這個角色所應有的功能,又是一個街角絕望氛圍下所出現的價值。

整本書的年代背景在1960年代附近,但時至今日,整個階級繼承似乎越來越往街角靠攏,甚至擴大,失去希望的人們開始追逐眼前容易滿足的快樂,藥物成癮等社會問題層出不窮,高品質勞動力的易取得,使的教育也逐漸褪去能夠造成階級流動的外衣,也有相當多的人意識到這種狀況,但在短期內似乎難以改變,但至少需要意識到,這群社會最底層的人們也是結構下的受害者,而不是不斷的去檢討他們,畢竟異地而處時,我們的表現不見得會比他們好多少,就像 Alain de Botton在TED演講中所引述聖奧古斯丁的話:按地位來論斷人是一種罪。只以職業、收入來評斷一個人常常會忽略身為一個人應有的重要價值的。

最後,推薦Alain de Botton 這部關於成功哲學的演講,如果可以也許能夠對失敗更加寬容,也祝大家都能定義出屬於自己的成功


2015年3月17日 星期二

[前端工具]好用易學的 Bootstrap - 簡單的成串class

這套 Twitter 出的 CSS framework 相信很多人都久仰大名,這陣子因為進行需要 RWD 的專案將它拿來把玩一下,整個驚為天人,來跟大家分享一下:

官網下載或是用CDN掛上 bootstrap.min.css、bootstrap-theme.min.cssbootstrap.min.js後就可以開始使用,

用法非常簡單,常常只要按照想要的樣式把 class 串成一長串(所以才叫鞋帶吧 XD),以按鈕作為例子:

原本長這樣: <button> </button>


給予指定類別: <button class="btn btn-danger btn-lg">button</button>


class 後面那一長串的意思依序是:

  1. btn: 這個 button 要長得像我 bootstrap 風格的按鈕,就算是<a><input> 我也會讓它變成這副德性。
  2. btn-danger: 危險的顏色就是要讓它紅紅的,顏色都幫你調好了啦。
  3. btn-lg: lg 就是 large 看起來就會大大的。sm 的話呢? 有看過格雷就知道的吧(誤)。
基本上的用法大概就是這樣,舉凡:grid、表格、導覽列、下拉選單、圖片輪播甚至icon都是把HTML排一排 class 設一設就可以收工, 不用自己設太多 css 就可以有一個質感不錯的畫面,而且還是響應式的網頁,不滿它的樣式的話也可以自己再去改css,無怪乎它會這麼火紅,真的是救了許多沒有設計天分的人們!

說到icon順便提一下,其設定也相當簡單,

<span class="glyphicon glyphicon-user"></span>


本來以為這icon是圖,但如果去看 css 的話只會看到以下這段,
.glyphicon-user:before {
  content: "\e008";
}

原來它是一種圖標字型,既然是字型想當然可以調整字體大小:
<span class="glyphicon glyphicon-user" style="font-size:72px"></span>

有夠簡單吧 ^^

w3cschool 和 bootstrap官網 還有更多的範例和介紹,有需要可以看範例邊改邊學,相信很快就可以做出一個很 bootstrap 風格的網站了(雖然好像有點氾濫了 XD)。

bootstrap 還有一個很好的地方,就是他的程式碼都是開放的,對 HTML5、CSS3、js 有興趣的人多研究研究可以從裡面學到很多。

2015年2月27日 星期五

[一起讀書吧]念力 - 讓腦波直接操控機器的新科技‧新世界


念力。當初看到這本書的書名的時候真以為是本魔術教學手冊或是宗教神蹟的宣傳之類的,真是很容易讓人誤解阿XD
細看之後,還真的是本魔術成果介紹,作者團隊已經可以讓猴子完全不用動手,操作機械手臂、螢幕游標,甚至讓兩隻老鼠能夠不必說話(是說老鼠本來就不會說話啦XD)就能進行某種程度的溝通,這些,不是比魔術更像魔術嗎?

認知行為的神經生理基礎來自於整個大腦的合作互動


神經心理學在多年的發展受限於技術等原因,功能性定域論 在一段時間內成為主流,各種人類的認知功能皆是由於神經元各司其職後的結果,視覺有視覺神經元、聽覺有聽覺神經元,甚至當看到你祖母時活化的那些神經元也可稱作祖母神經元,藉由紀錄單一神經元的活動再去界定其功能,腦傷也常用以作為其論據基礎,比如布洛卡區損傷所造成的失語症就是一個明例。

但作者 Miguel Nicolelis 不斷主張,重點不是這些功能分區,認知來自於所有神經元的交互運作,也就是所謂的大腦風暴,神經元負責的功能沒有想像中那樣僵化,會隨著所進行的功能進行一種動態的調整,比如干擾盲人的視覺神經元,卻會影響實際上只需要用到觸覺的點字辨識,可見大腦的分區具備相當可塑性,布洛卡的報告常來自於對中風等大腦疾患,極可能是大規模的大腦損傷,導致不同神經元間的連結中斷而難以溝通所導致。

基於此種看法,作者團隊改變過去僅記錄單一神經元的作法,同時記錄上百個神經元的活動,並以此作為行為的辨識,成功的使猴子能夠只透過思考去進行機械手臂運動、滑鼠鼠標操作、機械人行走,甚至讓兩個腦之間藉由機器能夠溝通,一百個神經元在數以億計的大腦中,卻能有如此代表性,這也令腦機介面的實作更為可能,也可能更加拓展了對於自我的想像。

腦內對於自我的地圖並未被實際身體範圍所侷限


球拍當作身體的一部分。
這句話中的球拍可以替換成許多其他工具:菜刀、筆、螺絲起子,這些工具都會成為人體的延伸,相信這是許多人都有過的經驗,人所感覺到的自己也是不斷動態在改變,並非止於感覺神經的末梢,幻肢就是常見到的例子,車禍斷手的病人明明手已經不存在,卻不斷感受到它仍被輾壓。那當人能夠遠端操作機械手臂,機器又能回饋其感受時,自我的末端就已經從皮膚擴張到了機械手臂上,作者所進行的再行走計畫,就是想讓癱瘓的病人將自我延伸到人造的外骨骼之上(有看過明天過後的應該都了解甚麼是外骨骼 XD)。甚或當人與人之間的感知、思考、決策能夠透過機器而連通時,人與人之間自我的相互交融,在這樣的腦網相連中,你中有我,我中有你,那又會是一個怎樣的自我概念呢?

相對性腦的限制


  1. 固定能量預算限制
  2. 身體限制
  3. 個體歷史紀錄
作者對於相對性腦的限制雖然偏哲學層次但也相當有趣。固定能量限制認為當每個人能夠通過腦的血流量都有極限,所能發揮的腦功能自然就有一個瓶頸;每個人又都僅能靠著本身的五感與外界進行互動,身體限制導致我們永遠無法見著世界的全貌;個體從出生以至於結束,每個人經歷著獨特的歷史紀錄,所想望的自然也難以跳脫出個人記憶,甚至於所處時代,但這些限制是否會在自我的擴張後被打破,這又是一個值得觀察的問題。


這本書描述的遠景相當具有想像空間,也呈現了不少神經心理學研究,有些描述得比較細部,不是本領域的讀者可能要多費點心,沒時間想直接 End 的人們,也可以看看TED這部演講,作者在裡面簡單扼要的把書中的重要研究都已經陳現出來了,不管用甚麼方式,一起來體驗這場進行中的魔術盛宴吧。


2015年1月28日 星期三

[踩雷回報] Laravel Quick Start

今天心血來潮想完整的照著 Laravel Quick Start 跑一次,
由於開發環境是 win7 安裝 Homestead 的過程困難重重,
先直接從 Laravel dojo 載了wagon 體驗,卻因此在設定 route 時遇到一個雷。
如上圖的設定 routes.php 後發現只連的到 '/' ,卻連不到 user ,localhost/user 總是開啟404頁面,除非直接連localhost/index.php/user 才能吃到 route 中的設定,似乎是沒啟動 pretty urls 機制,歸納一下找到的處理方式,使用 Apache 的話可以參考看看,
  1. 先去 httpd.conf 設定 AllowOverride All ,這裡是為了對目標路徑的 url 進行重寫時從.htaccess 中讀取重寫規則 ( wagon 中已預設開啟)
  2. <Directory "/var/www/laravel/public">
        AllowOverride All
    </Directory>

  3. 在public中建立 .htaccess 檔,內部描述重寫規則,以下參考 laravel 官網 install pretty urls
Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

主要是quick start 中沒有註明這段,不小心會錯過,設定好後就可以正確的導向 localhost/user 了。

2015年1月27日 星期二

[PHP 語法實測] 取得當前路徑或檔案名稱

想取得當前路徑和檔名有許多方法,
這裡針對 __DIR____FILE__basename()dirname()
幾個方法進行實測

輸出:
        D:\xampp\htdocs\phpSyntaxLab\index.php
        D:\xampp\htdocs\phpSyntaxLab
        index.php
        index
        phpSyntaxLab
        phpSyntax
        D:\xampp\htdocs\phpSyntaxLab
        D:\xampp\htdocs
        D:\xampp\htdocs

__FILE__取得當前位置的路徑以至完整檔名;

__DIR__ 則可取得除了檔名之外的完整路徑;

basename() 可用以忽略完整路徑,僅取得檔案名,
其會取得在最後一個 \ 斜線符號後方的字串,儘管其為資料夾名,而非檔名也會被擷取,
第二個參數可鍵入副檔名,如此取得結果即不包含副檔名,其作用類似於 preg_replace('/.php$/');

dirname(__FILE__) 與 __DIR__ 都會取得檔案系統中的完整路徑,
讓兩種方式各跑一百萬遍輸出:

      dirname(__FILE__) cost 0.4360249042511 seconds
      __DIR__ cost 0.088005065917969 seconds

__DIR__較dirname(__FILE)快了近五倍。

但由於dirname() 取值方式為取至最後一個斜線之前的字串,
使用dirname(dirname(__FILE__))可相當方便的取到再更上一層的路徑。

需特別注意的是, __DIR__ 只有在 php 5.3之後的版本才可使用

2015年1月25日 星期日

[PHP 語法實測] time V.S. microtime function

time 可取得自1970年1月1日00:00:00到目前時間的秒數;
microtime 也可做到同樣的事,只是其取至微秒數。
兩者回傳都是秒數,當時間需要進行加減運算時相當方便。

輸出:
            microtime:0.22268100 1422235329
            microtime(true):1422235329.2227
            time:1422235329
            time cost 0.19701099395752
            microtime cost 3.2161841392517

microtime() 會將小數點前後秒數以空白為分界切分回傳,使用前需用preg_split() 等function 切分,
microtime(true) 則僅回傳一個float值,
time() 僅回傳整數秒,
兩者的執行效率比較上,各執行1000000遍,time() 比 microtime() 快了至少 15 倍有餘,
當然在僅執行一次時這差別應該是微乎其微,看大夥需求使用囉。