我需要大家

我不知道有多少人會看到這個Blog,我還滿好奇現在看到這些文字的人是誰,

我稍微說說我自己好了,我是個資訊工程的研究生,但也快要畢業了(只要我能順利完成最後的幾個專案與論文)~

平常接觸很多軟體開發工具如VS2005、RAD、RSA...,程式語言也碰很多,如ASP.Net、VB、J2EE、 J2SE、C#、C++...

因為身處的環境,東也碰,西也碰,只要專案有需要,連OSGi的程式也開發,

雖說軟體在台灣真的還滿辛苦的,有人還說賣雞排還比我們賺,不過寫軟體真的還滿有趣的~(前提是沒人逼你在什麼時間點完成~)

所以踏入後就一直窩在程式與開發的工作中~(都快便宅男了)

我喜歡用Blog記事,所以把一些東西都記在這,如果你有看到我的文章內容,歡迎與我討論,

甚至隨便貼一個相關文章的連結對我而言都有用~(我也都是從Google找一些相關連結貼在下面的~)

Web 2.0好多研討會

今天去參加在台大辦的 超越web2.0在企業之應用 研討會,第一個感覺就是~掛上Web 2.0人就特別多~

第二個感覺就是,雖然是收費活動,不過服務品質項是一般的網聚,服務的人員感覺經驗稍閒不足,從一開始簽到,中午訂的餐點數量問題,還有些小細節...ps.有的人有拿到這期數位時代~我居然沒有~嗚~借來看內容不錯~

不過既然是參加研討會,最重要的還是演講內容~

讓我印象比較深的幾個主題

談到Yahoo User Interface Library (YUI) 與 AJAX兩個重點,YUI是我第一次聽到的東西,大致聽完感覺是滿好用的東西,簡單來說就是簡化開發Java Script的一些程式碼,並且結合CSS讓網頁互動性加強,另外還提供AJAX的支援

另外洛可可的演講也很令人深思,感覺是個向心力很強的團隊,以理想為中心的Flash設計團隊,聽他們從另一個角度來談Web 2.0,比起那些大公司說的都還要更有Web 2.0共同創作,展現自我的感覺

總結來說,這次研討會感覺的出來主辦人很想把活動辦好,找了些贊助廠商,拼命用贈品回饋付了600元參加的人,不過總覺得比起我之前參加的活動少了些專業感,不過也或許是想營造輕鬆的感覺吧,演講方式也十分輕鬆,像是與大家聊天分享經驗的感覺~

我下星期五還有個Web 2.0的研討會要去聽,果然Web 2.0很熱門,但像是洛可可這樣腦袋清楚的團體或是公司有多少呢...

參考連結

用VB讀寫文字檔的簡單函式

以下是我常用的VB檔案讀寫函式,我自己覺得還滿方便的

程式碼

丟給它路徑與new好的ArrayList就可以讀檔了,讀出來後ArrayList中會都是String,每個String代表一行,寫入也是反向動作,如果寫入的路徑不存在會自己產生目錄

修改encoding就可以設定寫入的編碼,預設用UTF8

Imports System.IO
Public Class MyFileIO
Public encoding As System.Text.Encoding = System.Text.Encoding.UTF8

Public Sub fileReadLine(ByRef path As String, ByRef fileData As ArrayList)
    If Not fileData Is Nothing And Not path.Equals("") And System.IO.File.Exists(path) Then
        Dim readfile As New System.IO.StreamReader(path, encoding)
        Dim str As String
        str = readfile.ReadLine()
        While Not str Is Nothing
            fileData.Add(str)
            str = readfile.ReadLine
        End While
        readfile.Close()
    End If
End Sub

Public Sub fileWriteLine(ByRef path As String, ByRef fileData As ArrayList)
    If Not fileData Is Nothing And Not path.Equals("") Then
        Directory.CreateDirectory(path.Substring(0, path.LastIndexOf("\")))
        Dim writefile As New System.IO.StreamWriter(path, False, encoding)
        Dim i As Integer
        Dim str As String
        For i = 0 To fileData.Count - 1
            str = fileData.Item(i)
            writefile.WriteLine(str)
        Next
        writefile.Close()
    End If
End Sub
End Class

相關

如果要取得應用程式所在路徑可用:

 Dim path as String = System.Windows.Forms.Application.StartupPath + "\"

如果是Web App的話則使用

 Dim path As String = Server.MapPath("~/")

相關連結

從Google Pages Creater到Blogger

我原本是在Google pages Creater中寫得技術札記的,

不過越寫越多就會發現功能還是有差,雖然頁面排版Google pages creater的編輯器比Blogger方便很多,不過就功能性Blogger還是比較多~

所以經過百般考慮還有測試後,終於決定換到這了,順便提供我換到這的過程要點給大家參考

挑Blogger的原因

我其實有到處看看各家BSP的功能還有效能~決定換這裡的幾個原因

  • 這裡有提供Free tagging(標籤)的功能,其他的大都還沒有提供
  • 這兒跟Pages Creater都是Goolge旗下的,感覺比較穩
  • 它的備份聽說還滿方便的,雖然還沒試過
  • 有提供一些介面方便排版與新增元件
  • 可以客製化的地方也不少

不過當然有缺陷,例如範本要修起來其實還滿困難的(因為我幾乎可說是不懂CSS) ,而且文章跟首頁居然必須用同一個樣板,這樣功能表就每頁都有,有點多餘(有人知道如果解決請告訴我)

還有文章編輯器太笨了

Blogger的設定

首先,申請了Blogger後,可以發現有三個主要功能,張貼、設定、範本

在【設定】的【格式】中,有個【轉換分行符號 】,主要用來補足它笨笨的編輯器,不過反而造成我文章編寫的困擾,所以我選【否】

在【設定】,另一個可以注意的就是【權限】, 可以讓你的朋友也成為這個Blogger的作者,就可以共同製作這個Blog

Blogger的範本

主要是設計整個版面配置,可以用拖拉點選的方式,也可以搭配修改CSS(HTML)

通常可以先利用【挑選新範本的功能】,大至決定配色排版,覺得不夠還可以去網路上找,如Blogger templates

然後用【修改HTML】來做細部的調整,例如我做了下面這些設定

  • 在title之前加上下面這段以利瀏覽器判斷 <meta http-equiv='Content-Type' content='text/html; charset=UTF-8' />
  • 因為我打算讓它的版面隨使用者的視窗變大小,所以修改了body的min-width
    body {
    margin: 0;
    text-align: center;
    min-width: 790px;
    background: #ce8b43 url(http://www.blogblog.com/thisaway/bg_body.gif) repeat-x left top;
    color: $textColor;
    font-size: small;
    }
  • 然後修改outer-wrapper、header-wrapper、main-wrapper、sidebar-wrapper、footer-wrapper的background與width,讓版面大小跟著變化
    #outer-wrapper {
    margin: 0 auto;
    width: 99%;
    text-align: left;
    font: $bodyFont;
    }
    
    #header-wrapper {
    padding-bottom: 15px;
    background: #634320;
    }
    
    #content-wrapper {
    position: relative;
    width: 99%;
    background: #f7f0e9;
    }
    
    #main-wrapper {
    display: inline;
    float: left;
    margin: 0 0 0 3px;
    padding: 0;
    width: 75%;
    word-wrap: break-word;
    overflow: hidden;
    }
    
    #sidebar-wrapper {
    display: inline;
    float: right;
    margin: 0 3px 0 0;
    width: 22%;
    color: $textColor;
    line-height: 1.4em;
    font-size: 90%;
    background: url(http://www.blogblog.com/thisaway/bg_sidebar.gif) repeat-x left top;
    word-wrap: break-word;
    overflow: hidden;
    }
    
    #footer-wrapper {
    padding-top: 15px;
    background: #634320;
    clear: both;
    }
  • 其他的就是額外像是code的外觀
    code {
    display: block; /* fixes a strange ie margin bug */
    font-family: Courier New;
    font-size: 8pt;
    overflow:auto;
    background: #fff url(http://klcintw.images.googlepages.com/Code_BG.gif) left top repeat-y;
    border: 1px solid $postTitleColor;
    padding: 10px 10px 10px 21px;
    max-height:200px;
    line-height: 1.2em;
    }

Blogger的張貼

我一直有提到他的編輯器有些笨,是我對Blogger最不滿意的地方,如果不是因為這點我很早就轉用Blogger了,不過在這次轉移的過程,我發現利用Google pages Creater寫完,再把HTML貼過來就OK了

此外,它的標籤部份是用【,】分隔,與HemiDemi用空白分隔不一樣,它沒有特別標示,讓我小小打了個問號

總結

其實我對CSS的設計一點也不熟,這樣修改也不確定有沒有些問題,

所有的東西我就是設定一下然後看一下效果,如果高手有些建議,請大方指教,我會很感謝

相關連結

VMWare與Virtual PC的硬碟減肥法

前陣子看到一本雜誌提到,最近許多企業關注的兩個技術:虛擬化與SOA,

其中的虛擬化指的就是使用虛擬機器來減少設備、管理的成本,而其中我較常聽到的就是VMWareVirtual PC了~

我用VMWare比較多,Virtual PC也是一年前第一次使用,當時因為做教材的關係,花在這上面不少時間,

就發現明明虛擬機器系統中的硬碟就只有幾G,外面實體確是2~3倍,甚至越用越大,這時我才發現不對,於是找半天,總算看到有文章談到了這部份的解決方法。

網路上來找的到很多人談到其他方式,但實際上最正統有用的就只有以下的方法~

VMWare

關於VMWare的硬碟減肥請先參考Vmware磁盤減肥方法

其中的要點如下

  • 打開VMWare,並啟動作業系統
  • 先確定你的虛擬機器的作業系統有沒有裝VMWare Tools(如果還沒裝,相信你應該是新手,請在選單選VM→Install VMWare Tools...)
  • 將系統裡的垃圾文件清理乾淨,然後關閉系統
  • 選擇你的虛擬機器選項下的〞Virtual Machine Settings〞,在跳出視窗的〞Hardware〞,選擇要處理的硬碟(Hard Disk),再點右邊的〞Defragment〞進行碎片整理
  • 碎片整理完成後啟動作業系統
  • 進入系統後點右下角的VMWare Tools圖標會彈出對話框
  • 選點「shrink」
  • 選擇要處理的硬碟,然後就選是,讓它開始處理,中間跳出視窗也選確定,直到它說完成,就可以關閉虛擬的OS

處理會花點時間,不過這樣過後就會減去多餘的部份

Virtual PC

關於Virtual PC的硬碟減肥請先參考如何有效的壓縮虛擬磁盤

其中的要點如下

  • 打開Virtual PC,並啟動作業系統
  • 將系統裡的垃圾文件清理乾淨,並進行磁碟重組
  • 點選Virtual PC選單的CD→Capture ISO Image
  • 選擇Virtual PC安裝路徑下(預設在C:\Program Files\Microsoft Virtual PC)的Virtual Machine Additions子目錄下的Virtual Disk Precompactor.iso
  • 如果沒有自動開啟光碟內容,可到光碟機內選擇開啟precompact.exe
  • 選擇是,開始處理
  • 完成後關閉虛擬的OS,選擇"File"→"Virtual Disk Wizard"
  • 在歡迎話面選Next,然後選"Edit an existing virtual disk", 選Next
  • 然後選擇要處理的硬碟檔案位置
  • 選擇"Compact it"選Next
  • 這時可選擇覆蓋原本的硬碟還是存成新檔
  • 選Next,開始處理

PS.對虛擬硬碟進行壓縮過程中需要保證具有足夠的暫存硬碟空間(大約為兩倍虛擬硬碟文件的大小),否則可能會因為暫存空間不足導致壓縮失敗

總結

這兩個虛擬機器各有千秋,不過就我所知學術界還是用VMWare的人比較多,雖然它要錢,不過支援的環境比較多,但效能或操作性上其實差異不大

我個人最多同時在一台電腦跑兩個虛擬機器就顯得有些吃力了

建議如果你的開發過程常會搞爛作業系統的人,一定要試試這樣的東西,不過前提是你最好有個強力的電腦

相關連結

VS2005(.Net)非同步呼叫Web Services

.Net Framework 2.0所提供的開發環境中,提供了簡單的方式讓你用非同步的方法呼叫Web Services

它使用MothodName後方加上Async名稱的函式當做呼叫方法,然後另外寫一個函式處理呼叫的回傳值

我想背後原理應該不脫離使用執行序(Thread)來達到這樣的功能。

參考資料中有微軟的範例,但它的做法如果用在連續呼叫的話可能會有些問題,而且沒有C#的範例,

所以我稍做修改成我需要的版本

開發環境

  • Microsoft Visual Studio 2005 (.Net Framework 2.0)
  • 專案類型:Windows 應用程式
  • 已有一個簡單的Web Service,該Service中有個函式: Function hello(ByVal name As String) As String
  • 我將Web Service加到名為wsServer的Web參考中
  • 我在畫面中用一個多行的TextBox叫resultOut來顯示呼叫與回應的資訊

C#

  //CallMyWSAsync用來New起Web service的實體,指定處理回應的函式,然後呼叫Web Service
 private void CallMyWSAsync(string value)
 {
  //New起Web service的實體
  wsServer.WebService ws = new wsServer.WebService();
  //指定處理回應的函式
  ws.helloCompleted += new wsServer.helloCompletedEventHandler(getCompletedHandler);
  //resultOut來顯示呼叫的資訊
  string o = "ID=" + ws.GetHashCode() + " Start, value=" + value;
  o = DateTime.Now.ToString() + "\r\n" + o;
  resultOut.Text = o + "\r\n" + resultOut.Text;
  resultOut.Text = "\r\n" + resultOut.Text;
  //呼叫Web Service
  ws.helloAsync(value);

 }

 //getCompletedHandler用來處理回應
 private void getCompletedHandler(object sender, wsServer.helloCompletedEventArgs e)
 {
  string o;
  if (e.Error == null)
  {
   o = "ID=" + sender.GetHashCode() + " Done, Result: " + e.Result; //e.Result可取得回應的物件
  }
  else
  {
   o = e.Error.Message;
  }
  //resultOut來顯示回應的資訊
   o = DateTime.Now.ToString() + "\r\n" + o;
  resultOut.Text = o + "\r\n" + resultOut.Text;
  resultOut.Text = "\r\n" + resultOut.Text;
 } 

VB


   'CallMyWSAsync用來New起Web service的實體,指定處理回應的函式,然後呼叫Web Service
   Sub CallMyWSAsync(ByVal value As String)
       'New起Web service的實體
       Dim ws As New wsServer.WebService
       '指定處理回應的函式
       AddHandler ws.helloCompleted, AddressOf getCompletedHandler
       'resultOut來顯示呼叫的資訊
       Dim o As String = "ID=" + ws.GetHashCode() + " Start, value=" + value
       o = DateTime.Now.ToString() + vbCrLf + o
       resultOut.Text = o + vbCrLf + resultOut.Text
       resultOut.Text = vbCrLf + resultOut.Text
       '呼叫Web Service
       ws.helloAsync(value)

   End Sub
   'getCompletedHandler用來處理回應
   Private Sub getCompletedHandler(ByVal sender As Object, ByVal e As wsServer.helloCompletedEventArgs)
       Dim o As String
       If e.Error Is Nothing Then
           o = "ID=" + sender.GetHashCode() + " Done, Result: " + e.Result 'e.Result可取得回應的物件
           o = DateTime.Now.ToString() + vbCrLf + o
           resultOut.Text = o + vbCrLf + resultOut.Text
           resultOut.Text = vbCrLf + resultOut.Text
       Else
           o = e.Error.Message
       End If
       'resultOut來顯示回應的資訊
       o = DateTime.Now.ToString() + vbCrLf + o
       resultOut.Text = o + vbCrLf + resultOut.Text
       resultOut.Text = vbCrLf + resultOut.Text
   End Sub

後言

這是我第一次寫C#的程式,因為我想順便體驗C#開發起來有何不同,

我在查資料時,還有看到ASP.Net的網頁也可以設為Async,不過會有什麼結果我沒試過,下回有空再寫寫札記吧

參考資料

透過網路讓鍵盤滑鼠在電腦間游走(W2XW與Synergy)

今天在網路上看到有人問(一鼠事二君)他在網路上看到一個影片,看到能夠用一組滑鼠鍵盤在兩台電腦(Windows與Mac)之間游移,如同使用雙螢幕一般。

一鼠事二君下面的回應,還有剛好我學弟玩到的,分別找到兩個軟體(W2XWSynergy),介紹給大家

差異

先說差異,讓大家挑選要先玩哪個(由於我在Windows下試,所以就我使用的感覺而言)

首先就安裝而言,在Synergy需要安裝,而W2XW只要解壓縮就能執行

就設定,Synergy設定步驟較多,也比較麻煩,而W2XW只要設定一兩個東西,就能啟動了

就功能而言,Synergy功能較多,可以設定較多台電腦(按它的設定法,你可以讓電腦把你圍起來操作應該不成問題),而W2XW則比較陽春,但我想一般人用到這樣就夠了

穩定度而言,我沒有詳細測過,但我學弟用W2XW的反應是有些不穩,有Bug

W2XW的設定雖然好設定,不過我懷疑它的安全性,好像很容易讓另一個人控制你的電腦,所以沒在用電腦時建議關掉他

總結而言,如果你第一次完,可以先試W2XW,如果不能用或不滿意穩定度,再試試Synergy

W2XW使用

  • 分別下載軟體到兩台電腦(我下載時的網址是:http://www.h7.dion.ne.jp/~umiumi/w2xw17a.zip),
  • 然後解開來,連接控制的鍵盤滑鼠的主電腦執行"w2xwM.exe"
  • 被控制的電腦執行"W2xwS.exe"
  • 主電腦程式會開啟一個設定視窗,設定如下
    • Switching(hot key)代表在控制時想切掉控制,讓鍵盤回到原電腦的按鈕(程式沒反應時使用),預設是Shift+Alt+Q
    • Switching(mouse)代表被控制的電腦在哪,像我放在右邊,IP是192.168.1.2,就勾Right,並填上IP
    • ClipboardShared代表剪貼簿共用,這樣就能複製文字到令一台電腦了
    • 還有兩個選項我沒試過
  • 完成後,你就可能把滑鼠從主電腦滑到令一台電腦了

Synergy使用

  • 下載安裝檔(我下載時的網址是:http://sourceforge.net/...)
  • 分別在兩台電腦安裝,要知道兩台電腦的名稱,預設是電腦名稱(例如我的主電腦是ALPC被控制電腦是ALNB)
  • 連接控制的鍵盤滑鼠的主電腦ALPC的設定

    • 選擇Share this computer's keyboard and mouse (server)
    • 點選Configure,設定電腦與電腦的關係
      • Screens中,點+,加入兩台電腦的名稱ALPC與ALNB,其他是預設就可
      • Links中,點+,加入兩台電腦的關係,我的ALPC在ALNB左邊的話,要加入2項,加法如下

        • 0 to 100% of the right of ALPC goes to 0 to 100% of ALNB:表示在ALPC中,滑到最右邊就會跑到ALNB
        • 0 to 100% of the left of ALNB goes to 0 to 100% of ALPC:表示在ALNB中,滑到最左邊就會跑到ALPC
    • 點選Hot Keys,設定一個可以讓鍵盤回到原電腦的按鈕
      • Hot Keys,點+,輸入Shift+Alt+Q
      • Actions,點+,選Switch to Screen,然後選主電腦ALPC
    • 點Start,啟動服務
  • 被控制電腦ALNB的設定

    • Use another computer's shared keyboard and mouse (client)
    • 然後輸入另一台電腦的名稱ALPC
    • 你可以用Test測試一下連不連的到
    • 選Start起動
  • 完成後,你就可能把滑鼠從主電腦滑到令一台電腦了

結論

強烈建議重視安全的人使用Synergy,反正麻煩一下而已,但說真的,W2XW比較有小巧易用的感覺

我還滿喜歡這樣的功能的,所以才會寫這篇,如果有問題或建議再跟我說吧~

參考資料

.Net的Web Service移除Soap1.2描述

雖然Web Services號稱讓不同語言開發的環境都能互相呼叫對方的功能,但還是會有些問題存在,我之前就遇過使用IBM的開發工具要呼叫我用.Net產生的Web services,結果無法解譯WSDL的問題~

原因應該是因為.Net的Web services產生了許多的描述,其中同時包含Soap1.1與Soap1.2,而有些工具無法處理這樣的內容

解決方法就是移掉Soap 1.2的描述,當然,不是叫你把WSDL用編輯器修改...那我就不用寫這篇了~

開發環境

Microsoft Visual Studio 2005

方法

動作其實很簡單,在你的Web專案最外層會有一個web.config,裡面描述了許多web專案的設定,

將以下內容加入configuration區塊下的system.web區塊

如,

<configuration> ... <system.web>

...

<webServices> <protocols> <remove name="HttpSoap12"/> </protocols> </webServices>

...

</system.web> </configuration>

然後,你就會發現產生的WSDL只剩Soap1.1的描述了,簡單吧

參考資料

用 Psiphon 突破網站封鎖

有個來自對岸的聲音問我,他們那裡沒辦法連到一些特定的網站,例如維基百科...等網站

所以我那天看到這個軟體就當場跟對岸的聲音試了一下

PS.除了自己架,網路上也有些網站提供類似服務,請參考最後的相關連結,如果大家有類似的東西也請回應給我

軟體簡介

簡單來說,就是在一個可以存取特定網站的電腦,執行這個軟體,他會架起一個網頁伺服器,讓想上網站的人登入後,可以將特定網站的內容再交給登入的人。

使用方法

  • 安裝軟體後,啟動程式,他會先測試預設的https網站要用的port:443是否被使用中(如果有架網頁伺服器就可能會在使用中)
  • 點選Setup可以設定使用的Port,不過被封鎖的電腦通常也只有公用的port能存取,所以建議還是盡量使用443
  • 點選add,設定帳號密碼以供使用者登入,使用者可以透過網站自己修改密碼
  • 要進入網站的網址可以在Setup中複製,如https://127.0.0.1:443/login/
  • 點選Start,則視窗名稱會顯示狀態為ON,表示服務已啟動
  • 使用者進到網站登入後,可以看到網站顯示了一個可以輸入網址的對話框,在那輸入你想去的網站就行了

參考資料

這裡是關於技術的手札~

也歡迎大家到

倫與貓的足跡



到噗浪來

關心一下我唷!
by 倫
 
Copyright 2009 倫倫3號Beta-Log All rights reserved.
Blogger Templates created by Deluxe Templates
Wordpress Theme by EZwpthemes