發表文章

目前顯示的是 2015的文章

如何啟用ESXi MOB在vSphere 6.0

圖片
遇到問題 如果你安裝vSphere 6.0 ESXi server完成後,想透過MOB進入了解與管理主機的狀態卻發現,無法使用了並且出現了這樣的錯誤訊息 503 Service Unavailable (Failed to connect to endpoint: [N7Vmacore4Http20NamedPipeServiceSpecE:0x1f09b228] _serverNamespace = /mob _isRedirect = false _pipeName =/var/run/vmware/proxy-mob) 如下圖所示: 這個問題主要的原因是,ESXi 6.0 預設不會啟用vSphere MOB,你必須手動啟用。 解決方式 使用vSphere Client(C#) 開啟進階設定,找到Config.HostAgent.plugins.solo.enableMob,然後勾選啟用。 使用vSphere Web Client 開啟進階設定,找到Debug Managed Object Browser enabled,然後選擇YES。 使用vim-cmd 透過SSH的方式,進入主機直接下指令修改即可。 指令: vim-cmd hostsvc/advopt/update Config.HostAgent.plugins.solo.enableMob bool true 參考連結 http://www.virtuallyghetto.com/2015/02/quick-tip-vsphere-mob-is-disabled-by-default-in-esxi-6-0.html

在Java中使用Thread的小技巧

遇到問題 在Java程式中,如果遇到需要將程式平行處理,通常會馬上想到使用Java thread來解決問題。但如果可以進一步來將問題研究一下,或許可以產生更有效率的程式碼,並且可以重複使用。 假設,目前程式處理一個List內每個item資料的行為一致,並依序處理每個item,一個接一個處理,完整處理完後在接著下一個,這樣的最大處理時間會是N(Item數目) * T(每個Item處理時間)。如果使用平行化的模式,就可以將List內的每個item處理,分散到每個獨立的thread來處理,如此ㄧ來便可加速處理,處理的理想時間會是T(每個Item處理時間) + X(overhead time)。 所以,我們會有一個List,一個處理的方法,然後,平行化。直覺的方法,使用個迴圈,加上Java thread就可以輕易使用thread來達到平行化的處理。這樣很好,然有沒有辦法可以,重複使用這樣的程式碼呢? 如果你的程式會有多個地方都需要做這樣的處理,你得不斷的重複著相同且類似的程式碼。 這邊來介紹個技巧,使用Java Generic Type、Interface和Thread來解決這樣的問題。 使用的技巧 Generic Type Interface Thread 這邊特別來說明一下,Generic Type(泛型)這個技巧。 定義泛型 [class-modifiers] class GenericsName<T1 [, T2, T3, ...]> { ...... } 泛型由泛型名稱(generic type name)、角括號 "<>"、包含在角括號內的型態參數(type parameter)組成。在角括號 "<>" 內的型態參數( Tx ) 須為某種參考型態。 建立泛型物件(Instantiating a Generic Type) 建立泛型物件須使用 new 關鍵字,並指定型態參數的值(values of the type parameters)。此種指定值的型態參數稱為 parameterized type。 範例說明 class MyHashTable<Key, Value> {  // MyHashtable 稱為

哈囉, 位元! Hello, bits !

圖片
哈囉,位元! Hello, bits ! 電腦程式本身是一堆的01位元,用來告訴電腦如何運作,電腦依據程式設定,對01位元資料進行運算處理,最後將運算結果以01位元輸出或是儲存。 說了老半天,到底01位元是什麼東西啊?有沒有比較具體的東西可以來解釋或者是呈現啊? 看見位元 我們可以使用Arduino + 三用電表來觀察位元。從影片中我們就可以觀察到位元的樣子。 透過三用電錶就可以簡單的來觀察到位元的存在。位元在電路上實際上就是兩種電位的狀態,高電位(5V)與低電位(0V)。所以要捕捉到位元的蹤跡,就是要量測到電位的變化。 實驗架設 為了要能夠觀察到位元,我們得架設個簡單的實驗電路來觀察。實驗電路主要的功能,是將位元放到一個我們可以輕易的量測到的地方,並且,以較慢的傳輸速度,讓我們可以清楚的觀察。 使用一個Arduino的電路板來當作這次實驗的實驗電路,並且寫一段簡單的程式來驅動Arduino。 實驗程式 : //設定位元的位置 int led = 13; // the setup routine runs once when you press reset: void setup() { // initialize the digital pin as an output. pinMode(led, OUTPUT); } //設定位元的傳輸速度 // the loop routine runs over and over again forever: void loop() { digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(led, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second } 實驗程式轉換成位元的樣子

如何建立Mercurial(hg) Server + lighttpd 在ubuntu

圖片
如何建立Mercurial Server運行在ubuntu server版本機器上並且透過lighttpd server執行hgwebdir CGI。 安裝的步驟如下: 1. 安裝mercurial sudo apt-get install mercurial 2. 設定hg repository 位置 cd /var/ sudo mkdir hg sudo mkdir hg/repos sudo chown -R www-data:www-data hg/repos 這個範例中,我將hg的repository建立在/var/hg/repos 3. 建立hgwebdir.cgi cd /var/hg sudo cp /usr/share/doc/mercurial/examples/hgweb.cgi . sudo chmod a+x hgweb.cgi 修改範例CGI 使用文字編輯器修改一下"config ="這個設定,改成你所指定的位置,這邊接同時設定為/var/hg/hgweb.config sudo nano hgweb.config 改為 config = "/var/hg/hgweb.config" 4. 建立hgweb.config [collections] /var/hg/repos = /var/hg/repos [web] allow_push = * push_ssl = false 5. 建立使用者密碼 cd /var/hg htpasswd -mc hgusers admin 6. 修改server modules server.modules += ( "mod_cgi" ) server.modules += ( "mod_rewrite" ) url.rewrite-once = ( "^/hg([/?].*)?$" => "/hgwebdir.cgi$1", "