網頁

Survey - Office 356 Survey | Office 356 評估

Office 365 重點整理

以下為網路及去微軟聽課後的整理內容。
  1. Taiwan 的 Office 365 約 11月發佈,明年才會開始銷售。
  2. 不支援 Outlook 2003,簡單說就要Upgrade Office。不過如果是租用E3方案(預設方案,未特別說明E1,E2是否也有),可安裝使用就最新版本Office Professional Plus。
  3. 不支援 CDO 元件。如果是專統ASP程式,這方面會有問題。
  4. 費用分為 K方案與 E方案。K 方案為 25人以下個人及小企業使用;E 方案為 25 人以上中大企業使用。
入口網頁:portal.microsoftonline.com
E方案費用:http://www.microsoft.com/zh-hk/office365/enterprise-solutions/enterprise-plans.aspx,此為香港費用,台灣未上市,可以拿來試算一下。

Office 365 E方案說明

簡單說明 E1, E2, E3差異:
  • E1:完整 Exchage Online 功能。(10 USD)
  • E2:E1 + Office Web Apps (線上協同作業)。(16 USD)
  • E3:E2 + Exchange 無限封存。(24 USD)
E3是目前主推。

Office 365產品試用

輸入 http://www.microsoft.com/office365,會自動導向所在區域的 Office 365。
  • 選擇「專業人員和小型企業的Office 365」即K方案。
  • 選擇「中型企業和企業的 Office 365」即E方案。

Office 365架構

基本以是否已有 AD Server 與 Exchange Server 來區分。
  • 無AD Server,無 Exchange Server
  • 有AD Server,無 Exchange Server
  • 有AD Server,有 Exchange Server
就講師而言,Office 365非常合適當「混合雲」,Office 365能與我們企業內部的 AD Server配合的非常完美(還需要架一台 ADFS Server),透過ADFS去進行Office 365與AD Server的認證,讓使用者不論在外部或內部,使用起來都沒有差異感。

Office 365的Office Professional Plus

不會再有版本號,會隨時更新為最新版(要安裝一支更新程式),目前而言就是 Office 2010,每一個 Office 365 帳號可以安裝 Office Prefessional Plus 到 5 台設備。每 30天驗證一次帳號有效性。

Office 365 評估心得

對於個人及小企業的K方案而言,費用是很便宜,但每一使用者空間只有 500 MB,讓我有點…不知道應該如何說。租用Gmail為 5 USD/月,但能有 25 GB空間,Office 365雖然提供除 Exchange Online其他附加功能,例如,SharePoine Online、Office Web Apps,但以現行環境而言,500 MB實在是小氣。

回過頭來說,根本不用考慮K方案,如果你是考慮使用K方案,那我會直接建議去使用 Gmail企業服務。但如果你有考慮E方案,功能性而言,非常不錯,不論是 Online 的功能,或與 Office 2007/ Office 2010 / Office Professional Plus 的配合都相當的好。

另一問題會是在,Office 365 功能與價格與Gmail來比,是否有競爭力?我的評估,價錢是沒有,功能就因人而異。如果單純只以Email這件事來看:

Office 365 E1:10 USD/月
Gmail 企業服務:5 USD/月

最便宜的E1方案價格是 Gmail 的兩倍,除非有很特別的理由,例如,要與現有的 Exchange 整合應用;需要使用到 SharePoint Server、Lync Server 等功能。

但換個角度來談,Office Professional Plus是個加分點,我們企業在買Office、升級Office、續SA,可以說每年也是花費不少,或許你把那多出來的 5 USD/月的錢當成Office的租金,或許會好受些!

Tools - 出現藍色當機畫面,怎麼辦?

在早期 Windows 時代 ( Windows 95 / 08 / Me ),藍色當機畫面是很常見的,到了 Windows XP 好一些,到了 Windows Vista 及 Windows 7 又向上提升。不過,人生難別有意外,出現問題時,我們總是希望能知道原因,都常原因找得出來,問題就解決了一大半。

在 Windows 之中,預設當機資訊會存放在 %SystemRoot%\MEMORY.DMP 之中。

Windows 啟動及修復
圖一:Windows 啟動及修復
你可以把 %SystemRoot% 複製到檔案總管裡,按下 Enter,如果你有當機過,而且又是藍色當機畫面,那你可以在此目鍵下按幾次 m ,即可找到那個傾印檔案 MEMORY.DMP。

Memory.dmp 傾印檔案
圖二:Memory.dmp 傾印檔案
問題是,這個傾印檔案又不是給我們一般人看的,沒關係,我就教各位如何找出問題。

jQuery - Multi-Version jQuery Cheat Sheet for PDF and iPad

jQuery 改版太快的困擾

家有一表,如有一寶。
如同我們每天都在查 MSDN 一樣,腦中要記的指令、參數、語法、條件…實在太多,所以手邊不管有個電子檔的速查表或印出來的紙本速查表,對於工作有實質上的幫助。

進步的太快,實在也是一種「困擾」,翻開我手邊的 jQuery 速查表,有 gscottolson.com/weblog 版本 jQuery 1.2 Cheat Sheet v1.0 (此網站已經改版);impulseStudios.ca 的 jQuery 1.4 Cheat Sheet;還有二張彩色 A3 全開 jQuery 1.3 Cheat Sheet。

我想,使用 jQuery 是很爽的事,但做 jQuery 速查表的人,應該很辛苦,先讓我說聲 Thank you。bugs 修正當然是越快越好,但其他 jQuery 新功能進化速度之快,也算少見。但每次改版就要上網找一次「jQuery 1.x Cheat Sheet」,又好像有點呆呆的。

今天來介紹一個新發現的好網站,它直接提供 jQuery 所有版本速查表。連我沒看過的 jQuery 1.0  ~ 1.6 都有。而且相當容易使用。

Tool - 電腦不斷重開機(reboot),怎麼辦?

假設你有一台舊電腦,會說舊電腦是因為新電腦碰到「不斷重開機」的機會不大。一般而言,我會分為兩步驟,一是作業系統(OS)是否有問題?二是硬體(HardWare)是否有問題?

Is OS / Software problem?


computer 不斷 reboot 之前先確認:
  1. 電腦是否有安裝「防毒軟體」?
    最少有基本保護,可以排除大部分病毒所為。
  2. 是否有上什麼奇怪的網站?
    防不勝防的一部分,就算有防毒軟體,還是會中獎,很大一部都是透過惡意網址而來
  3. 是否有安裝任何「新」軟硬體?
    Driver 的相容性,沒有寫好的 Driver 容易造成系統當機。例如,你如果買 WD 之類的 HDD ,都可以到原廠網站下載 Acronis True Image WD Edition 的軟體,有免費可以使用,當然是不錯,不過我被這一套軟體害過幾次,裡面有一支 *.sys (名稱記不太起來) 裡造成 Windows 7 系統不穩定,而不斷出現藍白畫面。
  4. 是否已經數次當機?
    即在這之前,是否有過當機記錄,而且已經當機數次了?每次的當機,除非你有使用 Raid 5 之類技術來保護你的作業系統,不然,每次的當機多少會對電腦造成一些傷害,就像內傷一樣,短時間或許不影響,但長時間下來,或許已經要作業系統造成不可回復的傷害。
先確認電腦在不斷 reboot 之前,是沒有「異動過」。

小孩帶金剛 - 撕書

今天,大女兒晚上不知怎麼了,可能是學著小女兒,好玩的一個人在撕著我新買給她的故事書。

這頁少一角,那頁少一磈,還很高興的說:「我要修理它。」

當然,我和婆婆都氣壞了。

婆婆說之以理,她似懂非懂。

我,平常可能會"動手"好好"修理(她)",但我忍了下來,我很無奈說了幾句後,就說:「處罰是這週妳都不要碰我的書。」

「妳不愛我的書…」
「它們都是爸爸與媽媽很辛苦工作賺錢,才能買書給妳看…」


接著,我去把書收一收。

晚些,我拿著 Type 來東黏黏西補補,進行著大女兒那口中「修理書」的工作。突然,腦中出現一些畫面,想著,等她長大結婚,我要拿這本故事書上台,一句一句念著故事內容給她聽,念完後,我會跟她說:「感謝妳,當年把這本書撕的破破爛爛,在修理它時,讓我領悟一個很重要的人生道理。」

人生,有人比喻就是像一本書,一開始空白,從出生開始,開始一筆一字開始寫下妳的故事。有人寫的好,寫的精彩;有人寫的壞,寫的沒人願意多看一眼。

寫書、寫日記、寫日誌、寫Blog … 有種東西叫「回復」或是「立可白」可以去消除刪除一些內容。 但我們人的故事是連續且不可中斷的,很多事很無法回復,也沒有立可白可以使用。

就像這本故事書一樣,故事書內容還是一模一模,但妳撕書所造成的傷害是一輩子的,不管我用全世界最好 Type 來黏也是一樣。

書可以重買,但人生連一秒都無法重新來過。

在我們的一輩子之中,會碰到很多「情事」,親情、感情、愛情、友情…每一段可好可壞,或許「時間」可以當個立可白的角色,不過那個代價很大,通常都是一比十、一比二十、一比三十…,那個十、二十、三十的單位是「」。

有些事的嚴重性就好比撕書這行為一樣,當妳決定要撕下去時,那是一輩子想回復也回復不了。

故事依然是故事,內容一點也不會改變。黏黏補補的頁面,那絕不會是精彩、彩色人生的一部分,或許稱為「污點」一點也不為過。

這是妳在三歲時,帶給我的人生領悟,今天,爸爸把故事書及這個道理,都拿來送給妳,當結婚禮物。

希望妳一輩子都記得,去保護好妳的自己和妳所愛的人的故事書。

JavaScript - 重新介紹JavaScript重點筆記

這是Mozilla Firefox Developer Center上一篇「重新介紹JavaScript」文章,文章內容精簡,但提出了非常多「實用」的觀念,像我們用了一輩子(很多年啦,但我相信,再怎麼改版這些基本的內容還是不會改變)的for迴圈,還有很多小秘密,讓我們可以寫出「更有效率」的程式,其中還有許多小建議是我們平常的書藉、教科書所看不到的,例如,有沒有聽過「絕對等於」、「絕對不等於」。

小小一篇,又讓我對JavaScript更進一步了解。

重點整理

  • JavaScript 沒有所謂的整數。
  • parseInt()函式有個選擇性的第二個參數(在此建議你一定要指定),用以指定進位數,parseInt("010")會得到8,parseInt("010", 10)才會得到10。
  • 布林 (boolean) 型態:false、0、空字串 ("")、NaN、null、以及 undefined 都會成為 false
  • 雙等號運算子(等於)會進行型態強制轉換,假如比較的資料型態不一樣,有時結果會相當有趣:1 == true會得true。要避免型態強制轉換,要用三等號運算子(絕對等於):1 === true會得false。還有一個!== (絕對不等於)運算子
  • 別忘了--陣列的 length 就是最高索引數加一。
  • for (var i = 0; i < a.length; i++) {a[i]},這樣不是很有效率,因為每迴圈一次就會查詢一次 length 屬性。(但所有JavaScript的教科書都這樣教!)
  • 比較好的寫法:for (var i = 0, len = a.length; i < len; i++) {a[i]},初始化時宣告兩個變數,把length屬性值存放到變數中。
  • 更棒的寫法:for (var i = 0, item; item = a[i]; i++) {處理item},for 迴圈中間指定變數值的部分會被測試是否為「真的」(truthy)--如果成功了,迴圈便會繼續。由於 i 每次都會加一,陣列內的每個項目會被照順序指定到變數 item。當偵測到「假的」(falsy) 項目時(如 undefined)迴圈便會停止。注意--這個小技巧只該用在你確定不會含有「假的」值的陣列(比如說一陣列的物件或 DOM 節點)。假如你在可能含有 0 的數字資料或可能含有空字串的字串資料上做迴圈,最好還是用 i, j 的方式。

Visual Basic - 如何強化程式邏輯能力?

如果你有幸進入程式設計這一行,那就不免要動腦。
沒事多動腦,多動腦沒事。
動腦,其實就是在規劃撰寫處理整理程式邏輯,那平常要如何加強這方面的能力呢?
就我本身而言,我覺得有以下四點:

ASP.NET MVC - Single File and Multi-File Upload and Download Management

I have written an article on the ASP.NET method about how to download documents from a database (Traditional Chinese); however, there are some defects as a result of this method. For example, because of the binary file, it takes up a huge space of the database, even after zipping the documents. Moreover, if your framework is separated into web application and database servers, the bandwidth and I/O costs will grow.

Let’s do this in a different way; upload a file to Web Application under a specific folder. Then, save this information to the database. This information is text, so it won’t impact the efficiency of the database server. Even if you have billions of records, your database will still work efficiently. When you need to download a document (file), your query information from the database will map to the specific folder (file) and respond to the client browser.

Based on the ASP.NET MVC implement, it will contain two parts: one is single file upload, one is the multi-file upload.

DataBase Schema

I create a new file in the App_Data in Files.mdf, table name called FileDown, and table Schema is:

FileId, int, PK
FileName, nvarchar(50)
FileSize, nvarchar(50)
FileType, nvarchar(50)
FileVersion, nvarchar(50)
PostDate, datetime2(7)
UploadDate, datetime2(7)
rowguid, uniqueidentifier

In the Models folder, I create FileModel.edmx and FileModel.Context.tt, FileModel.tt. (Entity Framework 4.1)

ASP.NET MVC - Single File Upload

Create a New FileController.vb and write down our architecture.

Controller and Action : fileController.vb

Imports System.IO

Public Class fileController
    Inherits System.Web.Mvc.Controller

    ' File Lists
    Function Index() As ActionResult
        Return View()
    End Function

    ' Single File Upload
    Function Upload() As ActionResult
        Return View()
    End Function

    ' Single File Save
    <HttpPost()>
    Function Upload(upfile As HttpPostedFileBase, formData As FormCollection) As ActionResult
        Return View()
    End Function

    ' Multi-File Upload
    Function MultiUpload() As ActionResult
        Return View()
    End Function

    ' Multi-File Save
    <HttpPost()>
    Function MultiUpload(form As FormCollection) As ActionResult
        Return View()
    End Function

    ' File Download
    Function Download(id As Integer) As ActionResult
        Return View()
    End Function
End Class

We work step by step.

Action:Index


' File Lists
Function Index() As ActionResult
    Dim db As New FilesEntities
    Return View(db.FileDown)
End Function

View : Index.aspx


<%@ Page Title="" Language="VB" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage(Of IEnumerable (Of UpDownFileFromDBMvc.FileDown))" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    File Lists
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<h2>File Lists</h2>
<ul>
    <li><%: Html.ActionLink("Single File Upload", "Upload")%></li>
    <li><%: Html.ActionLink("Multi-File Upload", "MultiUpload")%></li>
</ul>
<table>
    <tr>
        <th>
            FileId
        </th>
        <th>
            FileName
        </th>
        <th>
            FileSize
        </th>
        <th>
            FileType
        </th>
        <th>
            FileVersion
        </th>
        <th>
            PostDate
        </th>
        <th>
            UploadDate
        </th>
        <th>
            rowguid
        </th>
    </tr>

<% For Each item In Model %>
    <% Dim currentItem = item %>
    <tr>
        <td>
            <%: Html.DisplayFor(Function(modelItem) currentItem.FileId) %>
        </td>
        <td>
            <%: Html.ActionLink(currentItem.FileName, "download", New With {.id = currentItem.FileId})%>
        </td>
        <td>
            <%: Html.DisplayFor(Function(modelItem) currentItem.FileSize) %>
        </td>
        <td>
            <%: Html.DisplayFor(Function(modelItem) currentItem.FileType) %>
        </td>
        <td>
            <%: Html.DisplayFor(Function(modelItem) currentItem.FileVersion) %>
        </td>
        <td>
            <%: Html.DisplayFor(Function(modelItem) currentItem.PostDate) %>
        </td>
        <td>
            <%: Html.DisplayFor(Function(modelItem) currentItem.UploadDate) %>
        </td>
        <td>
            <%: Html.DisplayFor(Function(modelItem) currentItem.rowguid) %>
        </td>
    </tr>
<% Next %>
</table>
</asp:Content>

We should notice that there is <%: Html.ActionLink(currentItem.FileName, "download", New With {. Id = currentItem.FileId})%>. After uploading, we hope to click the file name and download the file directly, so we have the DisplayFor() rewritten toHtml.ActionLink().

Action:Upload


''' <summary>
''' ASP.NET MVC Single File Upload
''' </summary>
''' <param name="upfile">Upload file</param>
''' <param name="formData">Other file data</param>
<HttpPost()>
Function Upload(upfile As HttpPostedFileBase, formData As FormCollection) As ActionResult
    Using db As New FilesEntities
 
        If upfile IsNot Nothing Then
            ' 0 < Size < 4 MB
            Dim MBSize As Integer = upfile.ContentLength / 1000 / 1000
            If upfile.ContentLength > 0 AndAlso MBSize < 4 Then
                Dim savePath As String = Path.Combine(Server.MapPath("~/Files/"), upfile.FileName)

                ' Only *.7z file name
                If Path.GetExtension(savePath) <> ".7z" Then
                    ModelState.AddModelError("upfile", "File name only *.7z!")
                    Return View()
                End If

                ' Date Check
                If IsDate(formData("PostDate")) = False Then
                    ModelState.AddModelError("PostDate", "Date Format Is Error!")
                    Return View()
                End If

                ' Version Check
                If formData("FileVersion") = "" Then
                    ModelState.AddModelError("FileVersion", "Must have file version!")
                    Return View()
                End If

                ' Uploading
                If System.IO.File.Exists(savePath) = False Then

                    ' Database Checking
                    Dim FileDuplicate As FileDown = (From f In db.FileDown
                                                     Where (f.FileName = upfile.FileName)
                                                     Select f).FirstOrDefault()

                    ' File name checking
                    If FileDuplicate Is Nothing Then
                        ' Save to Disk
                        upfile.SaveAs(savePath)

                        ' Set File Information
                        Dim file As New FileDown
                        file.FileName = upfile.FileName
                        file.FileSize = upfile.ContentLength
                        file.FileType = upfile.ContentType
                        file.PostDate = formData("PostDate")
                        file.FileVersion = formData("FileVersion")
                        file.UploadDate = Date.Now()
                        file.rowguid = Guid.NewGuid()

                        ' File Information Save to Database
                        db.FileDown.Add(file)
                        db.SaveChanges()
                    Else
                        ModelState.AddModelError("upfile", "Database have same file information!")
                        Return View()
                    End If
                Else
                    ModelState.AddModelError("upfile", "File exist!")
                    Return View()
                End If
            End If
        End If
    End Using

    Return RedirectToAction("Index")
End Function

We create a Files folder in the project to store uploaded files. Here we should notice that the parameters passed in sequential order, Upload.aspx order form, if the upload file field first, then upfile As HttpPostedFileBase necessary in the first, and vice versa.

View:Upload.aspx


<%@ Page Title="" Language="VB" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    Upload Single File
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<h2>Upload Single File</h2>

<%Using Html.BeginForm("Upload", "file", FormMethod.Post, New With {.enctype = "multipart/form-data"})%>
    <%: Html.ValidationSummary(True)%>
    File:<input id="upfile" name="upfile" type="file" value="" />
          <%: Html.ValidationMessage("upfile")%>
 
    PostDate:<%: Html.TextBox("PostDate")%>
          <%: Html.ValidationMessage("PostDate")%>
 
    Version:<%: Html.TextBox("FileVersion")%>
          <%: Html.ValidationMessage("FileVersion")%>
 
    <input type="submit" value="Upload" />
<%End Using%>

</asp:Content>

ASP.NET MVC Multi-File Upload

Next let’s take a look at the multi-file uploads.

Action:MultiUpload


''' <summary>
''' ASP.NET MVC Multi-File Upload
''' </summary>
''' <param name="form">form data</param>
<HttpPost()>
Function MultiUpload(form As FormCollection) As ActionResult
    ' Data Check Reference "Action:Upload"

    Dim Msg As String = String.Empty
    For i As Integer = 0 To Request.Files.Count - 1
        Msg += Request.Files(i).FileName & " Upload succeed!"
        Request.Files(i).SaveAs(Server.MapPath("~/Files/") & Request.Files(i).FileName)
    Next

    ViewBag.Msg = MvcHtmlString.Create(Msg)

    Return View()
End Function

Let me skip some steps, check the files and add information to the database are almost the same with we have mentioned above. Now you try to do it yourself.

View:MultiUpload.aspx


<%@ Page Title="" Language="VB" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    Multi-File Upload 
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<h2>Multi-File Upload</h2>
<%: Html.ActionLink("Go back Index","Index") %>
<% Using (Html.BeginForm("MultiUpload", "File", FormMethod.Post, New With {.enctype = "multipart/form-data"}))%>
        <div class="uploadfiles">
            <p>
                <input type="file" name="files" />
            </p>
        </div>
        <p>
            <a href="#add" id="additem">Add Upload File</a>
            <input type="submit" value="Upload" />
        </p>
<% End Using%>

<%: ViewBag.Msg %>
<script type="text/javascript">
    $('#additem').live('click', function () {
        $('.uploadfiles').append($("<p><input type='file' name='files' /></p>"));
    });
</script>
</asp:Content>

The most important part is the bellowing jQuery, let us re-state to upload new data fields.

ASP.NET MVC File Download

The last download program.

Action:Download


Function Download(id As Integer) As ActionResult
    Using db As New FilesEntities
        ' Get file information
        Dim getfile = (From f In db.FileDown
                       Where f.FileId = id
                       Select f).FirstOrDefault()

        If getfile.FileName IsNot Nothing Then
            Dim FilePath As String = Server.MapPath("~/Files/" & getfile.FileName)

            ' downloading
            If System.IO.File.Exists(FilePath) Then
                Return File(FilePath, getfile.FileType, getfile.FileName)
            End If
        Else
            ' response error
            Return Content("<span style='color:red'>Can't download file!</span>")
        End If
    End Using

    Return RedirectToAction("Index")
End Function

We design a table with GUID, you can also use the GUID to design a method for users to download, so users can not guess easily like 1,2,3,4 number to download data.

ASP.NET MVC File Delete

Skip some steps for you to write here.
  1. Query the id from the database to find the file name.
  2. Use Path.Combine and Server.MapPath () to combine the full path.
  3. Use File.Exists (path) to determine whether the file exists.
  4. If it exists, delete files and database information.(File.Delete (path))
Now an uploading, downloading, deleting, simple file management program is completed.

Tool - 免費Visual Studio, SQL Server, Visual Basic, Visual C#, Visual C++, Windows Phone等開發工具下載點總整理(2011/11月版)

常有人問,Visual Basic 那裡下載?Viusal Studio 那裡下載?SQL Server 那裡下載?在這裡做個總整理,讓需要下載微軟開發工具的人,從這裡就可以找到全部的下載點,而不用在去 一一Search。

Visual Studio 2010 Express 單一語言開發工具下載

如果你要下載 Visual Studio 2010 / Visual Studio 2011 相關免費版本開發工具( Express ),請到這裡下載 VISUAL STUDIO 2010 EXPRESS PRODUCTS

Visual Studio 2010 Express
圖一:Visual Studio 2010 Express (from microsoft)
以上你在能在畫面上找到一個「Select language...」的下載選單,選擇「中文」即可下載中文安裝檔。以上合適單一語言學習者下載安裝使用。

Visual Studio 2010 Express 繁體中文下載



不過,我個人是比較推薦使用整合式開發環境,即 Visual Studio 2010 Express ISO Images,你能下載到:
整合式的意思是,它包含了基本上所有核心裡最重要開發工具,例如,Visual Basic、Visual C#、Visual Web Developer,但如果是 Windows Phone、ASP.NET MVC … 還必須加裝外掛程式來加上去。另外一點是,安裝程式大小,會比單一語言開發工具大的多。

下載 ISO 之後,建議使用老字號虛擬光碟Daemon Tools Lite來掛載安裝即可。
Microsoft Visual Studio 2010 Service Pack 1 必須另外下載安裝。

Visual Studio 2008 Express 繁體中文下載


如果你有特別需求,需要使用到 Visual Studio 2008 Express 版本來開發,那請到 VISUAL STUDIO 2008 EXPRESS EDITIONS,來下你所需的安裝檔,目前 Microsoft 已經很好心的幫你整合為 SP1 版本。

Visual Studio 2008 繁體中文版 ISO 檔

Microsoft SQL Server 2008 R2 Express Edition 繁體中文下載


除了開發工具,另一個重點當然是資料庫,如果我們想下載免費版的 SQL Server Express,那就要到:

Database Only 的意思是,只有資料庫沒有管理工具 SSMS,如果你習慣透過 Visual Studio 設計、管理資料庫,那有無 SSMS 都可,如果是要含管理工具:
以上這兩個是有含 SSMS 管理工具。

Microsoft SQL Server Code Name "Denali" 繁體中文下載

SQL Server Code Name 'Denali'
圖二:SQL Server Code Name "Denali" (from microsoft)
如果你想玩 SQL Server 目前最新測試版 Denali,你可以到 Download SQL Server Code Name "Denali" Express CTP3 (有繁體中文版可下載) 或 SQL Server Code Name "Denali" CTP3 (有繁體中文版可下載),與 Microsoft SQL Server Express Edition 一樣,有分為單純資料庫和資料庫加 SSMS 管理工具版本。

補充:這裡有一份 SQL Server 不錯的功能比較表,可以參考看看 Compare Microsoft SQL Server Editions

Visual Studio LightSwitch 下載

Visual Studio LightSwitch
圖三:Visual Studio LightSwitch  (from microsoft)

Visual Studio 瘦身版,細部比較可參考 Compare to Visual Studio Pro,即保留更核心的能功。
Download the Visual Studio LightSwitch trial,目前是 90天試用版。

Visual Studio 11 開發者預覽與開發工具下載

Visual Studio 無疑是非常棒的開發工具,目前最新開發者預覽版為 Visual Studio 11,你可以在 Microsoft® Visual Studio® 11 Developer Preview (Web Installer) 下載,如果你本機已經有安裝 Visual Studio 2008 / Visual Studio 2010 也沒關係,都可以再安裝這個 Visual Studio 11 開發者預覽版。另,以上的 Visual Studio 11 已包含 SQL Server Code Name "Denali" CTP3 未含 SSMS,是可以測試 Denali 的相關新功能的。


2011/10/20 補充:Microsoft Dreamspark

這是MS MVP 鄭子璉提供的網站:Microsoft Dreamspark,真的是超棒的,應用盡有,是由微軟原廠整理提供,當然,整理出來的東西更完整及全面。我玩了一下,它比較是提供英文版本為主。Express 版有提供繁體中文版。另一個問題是,一定要有 msn、hotmail 之類帳號才能下載。

Tools - 透過Linux指令取得全中國大陸IPv4, IPv6網段

工作上,有時需要判斷IP來源是否為中國大陸的IPv4網段,分享一行簡單的Shell Script:


我們使用 Linux 來抓取及分類:

cat delegated-apnic-latest |grep 'apnic|CN|ipv4|' $FILE | cut -f 4,4 -d'|'

取得的 IPv4 網段就是全中國大陸的 IPv4 網段,如果需要其他格式,請自行轉換。

那如果是要全中國大陸 IPv6 網段呢?看一下資料來源,裡面就有答案了。

System - Gigabit Switch Survey | Gigabit Switch 評估

Switch燒了燒了

某年某月的某一天,使用者突然走到我的面前說:「Bruce,我的電腦不能上網。」當下說「是的,船長」(Boss)」,當然是拉高為超緊急事件,超極速處理。

電腦網路無連線狀況,一般有線網路很少會這樣?快步衝到機房,呀,有燒焦味!到機櫃前看看 Switch LED 燈不亮,聞聞看,就是它了。一台服務多年的 10/100 24 port switch hub 燒了。(心裡暗爽中)

回頭報告,順便請船長來查看聞聞味道,說明這些 Switch 都很舊很舊了,實在應該汰舊換新了,一台 Switch 掛了,代表有 24 port、24台電腦、24個人工作受影響,而且沒有人會隨時準備一台 24 port switch 等著要換。

這樣的說明,這樣的需求很讓人接受。Boss點點頭後說:「OK,你去 Survey 一下。」(再爽一次)

Visual Basic - 計算機程式開發好範例推薦

每當學校交作業的時間,就會有很多人問「計算機」怎麼寫?

天呀!

不過,你可不要小看計算機的程式開發,如果以為只是簡單的「加減乘除」,那你可就錯了。它可以是「經典範例」,因為可以寫的很爛,也可以寫的很好。反正 1+1=2,9*9=81,答案不會錯就好。

如果你只想交作業,Stop,不要往下看,感謝。

JavaScript - [轉貼]你其實並不懂JavaScript

你其實並不懂JavaScript
圖一:你其實並不懂JavaScript

原文:http://ideasnow.diggbooks.net/?p=263 

原來,我們懂的只是皮毛!就我看來,應該只有「黑暗大大」是其中的高手!

Windows - 你對微軟授權了解嗎?

曾經,我為了微軟授權和 SA 廠商搞了二個多月。早期授權資料寫的很法律,怎麼看都不是給一般人看的,連 SA 的法務都必須再三與微軟確認後,才有辦法回覆我的問題。

現在,不用那麼麻煩了。

http://www.microsoft.com/taiwan/rightlicensing/default.htm

這是 Microsoft 授權的說明網站,不管你是「個人」「中小企業」「大型企業」「政府」「醫院」「教育單位」,它都幫你分類好,你可以直接進入相關的資訊頁面。

他們幫你準備好一堆的 FAQ,大概最常問題 80 ~ 90%,都在裡面了。你應該就能自行找到答案了。

如果你正準備了解、採購微軟大量授權,或對微軟大量授權有疑問,請不要客氣,就是這個 http://www.microsoft.com/taiwan/rightlicensing/default.htm 網站了。

電腦維修 - 為已停產的 HP Print 找到替代的 Windows 7 Driver

參考一:http://h10025.www1.hp.com/ewfrf/wc/document?cc=tw&dlc=zh-hant&docname=c01903210&lc=zh-hant#N550
參考二:http://h10025.www1.hp.com/ewfrf/wc/document?lc=en&dlc=en&cc=us&docname=c01796821

先看參考一,新增 Print,然後由 Windows Update 去更新 Driver (會花一些時間)。
查詢參考二,有一個「Table of compatible drivers」找到已停產或停止支援的型號,再去找替代的 Driver 型號。

以公司而言,我要找的是 HP Deskjet 9300 for Windows 7 Driver,所以我要安裝的的是 Deskjet 1220c 這個 Driver來安裝即可。就 Deskjet 9300 而言,之前原廠也有請我使用 Deskjet 1280 的 Driver 也可以正常運作。

JavaScript - XMLHttpRequest (XHR) 超速記筆記

XMLHttpRequest (XHR) 動作

  1. abort() 
  2. open() 
  3. send() 

XMLHttpRequest (XHR) 處理

  1. readystate → 4 
  2. status → 200 
  3. onreadystatechange = handler; 
  4. responseText | responseXML 

XMLHttpRequest (XHR) 撰寫流程

  1. 建立 request 
  2. 設定 onreadystatechange = ... ; 
  3. open(type, url, true); 
  4. Get → sned(null); | Post → send(SetquestHeader);

轉貼 - 數學計算成就

如果 : A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
分別等於百分之 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

那麼,

Hard work (努力工作)

H+A+R+D+W+O+R+K= 8+1+18+4+23+15+18+11 = 98%

Knowledge(知識)

K+N+O+W+L+E+D+G+E=11+14+15+23+12+5+4+7+5 = 96%

Love(愛情)

L+O+V+E=12+15+22+5 = 54%

Luck(好運)

L+U+C+K=12+21+3+11 = 47%

(怎麼這些我們通常認為重要的東西往往並不是 100% 最重要的)

什麼能使得生活變得圓滿?

是Money(金錢)嗎? ...不!

M+O+N+E+Y = 13+15+14+5+25 = 72%

是Leadership(領導能力)嗎? ...不!

L+E+A+D+E+R+S+H+I+P = 12+5+1+4+5+18+19+9+16 = 89%

那麼,什麼能使生活變成100%的圓滿呢?

每個問題都有其解決之道,只要你把目光放得遠一點!

ATTITUDE(心態)
A+T+T+I+T+U+D+E 1+20+20+9+20+21+4+5 = 100%
好文一篇,值的收藏。

讀書心得 - 胡立陽出人頭地100招(2)求學篇

求學篇是第一部分,此部分談論的不只求學,還談學習的態度、方法、方向,還談些求學的目標等等。

能找到適才適所的工作,的確可以改變命運。(P.17)

一生中受教育的時間很短,但是未來工作的時間很漫長。(P.36)
如果全天下的人想法都一樣的話,那麼人生肯定就不會有精彩的事情發生。(P.36)

這讓我想到有多少人是為學歷而讀書,為文憑而讀書?有多少人是為自己而讀書?
…大多數人連嘗試都不肯就自我否定了。(P.41)

Hang in there. 不要輕言放棄。(P.44)

讀書的目的不應該只是爭成績、讀死書,如何將學到的知識派上用場才更為重要。學校裡的分數不會跟著你一輩子,但是,腦袋中的知識卻能讓你時時刻刻都充滿著魅力!(P.46)
在「第一志願有那麼重要嗎?」小姪女已經如願考上第一志願,但下集才要開始,如果有機會,應該會是在三年後在來寫。
依賴好記性,不如記張小卡片。(P.49)
寫Blog也算是記張大卡片吧!@_@
學會抓出一本書的重點:
a. 英文書:每一章第一段;
b. 中文書:每一章最後一段。(P.53)

圖書館…(P.55)

自從我們去圖書館辦了借書證後,寶貝在假日時就很喜歡拉著我說,爸比,我們去Library借書書好不好。原因有二,一是家裡的書她大概已經看了不下數十次了,二是順便可以出去走走,而且到了圖書館看到那滿滿的一堆書,讓寶貝的精神飽滿。而且善用圖書館資源,也可節省下一筆不小的費用。讓孩子愛書,從帶去圖書館開始。
要徹底學習一種事物,需要很自然地投入一個恰當的環境中,只要你身歷其境,便能更快吸收。(P.58)

感恩節:
1. 感謝上天恩賜豐收;
2. 感謝印地安人的相助與教導。(P.59)

記起來,Maybe那一天你去外商 Interview 就問你這一題。
學好英文(放輕鬆)
1. 用自然發音(Phonics)
2. 背下十篇英文童話
3. 積極塑造外語環境
4. 熟悉談話主題
(P.60 ~ P.62)

我之前有介紹幼福2034系列的英文童書,我覺得很合適拿來這裡使用。Phonics對於我們這種學 K.K 音標長大的人,還必須重學一次。但如果你才剛要開始,現在的教材都已經做的很棒,去趟書局,應該可以讓你眼花撩亂。
多接受,少排斥。(P.64)

臉皮厚一點,勇氣多一點。(P.66)

每天都要認識一位新朋友。(P.68)

離開「校園」前,如果你沒有把握這個機會,那你的人際網會瞬間消失一大半,而身邊的朋友或同學,很多不婚的理由是「找不到人」。上班的環境很固定,每天見的都是那些面孔,除非很幸運讓你在Office裡碰到那位公子、公主。不然因為認識不到新朋友,只能放任感情放空,可惜呀,可惜。
面對任何難題,與其…原地打轉,不如…換一種方式解決。(P70)

在求學篇裡有一段「用四年換取四十年」的故事,實在讓我佩服,做大事者,大概都有這種「魄力」,不管看哪位成功人士的傳記、故事,都一樣,當他們看到或找到那一條通往成功的道路,不管原本是多舒適,也會毫無猶豫跳出舒適圈,然後去開拓屬於那片「他的天地」。最後,旁人只能在流傳著他的故事。

.NET Framework - 加快學習速度的捷徑

舊未讀,新又來。
舊的未讀,新的又來。
舊的未讀熟,新的又來亂。(by KKBruce)
走微軟 .NET Framework 技術這條路,必須有足夠的「精、氣、神」,不然可能走不到三分之一,都已經陣亡了。

以 .NET Framwork 本身來說,要讀完整個 .NET Framework 類別庫基本上是有點不可能的任務(不可能不是代表沒有)。除了 .NET Framework 類別庫,我們還必須熟悉「程式語言」即Visual Basic、C#…,再來,Visual Studio 開發工具的使用,最後,選擇要寫 WinForm 還是 WebForm,或是說專案類別。

學習.NET Framework

學習.NET Framework,我歸類下來:


Visual Studio 開發工具"三顆星"不是不重要,它可能是唯一要付費取得,越熟悉它,你就能得到越快越有品質的開發,例如,如果你願意花時間去背「Visual Studio 快速鍵」,或是使用「擴充組件庫」來加強整個 Visual Studio,那能得到的效益可是很大。但它只是一個 UI, 一個 Tool UI,讓你可以去 Coding 與 Design,就基礎的重要性而言,它就沒有類別庫程式語言本身重要。

以我現在開啟的 Visual Studio 11 裡 Visual Basic 之下的專案有:
  • Windows
    • Windows Forms Application
    • WPF Application
    • Console Application
    • Class Library
    • Portable Class Library
    • WPF Browser Application
    • Empty Project
    • Windows Service
    • WPF Custom Control Library
    • WPF User Control Library
    • Windows Forms Control Library
  • Extensibility
  • Web
  • Office
  • Reporting
  • SharePoint
  • Silverlight
  • Test
  • WCF
  • Windows Azure
  • Workflow
每一個專案之下還有許多個子專案,每個專案多少有自己的專有知識,例如,寫 Windows Forms 與寫 Web Forms 就是兩回事,寫 Web Forms 與寫 ASP.NET MVC 又是兩回事,或是說,寫 Web 與寫 Silverlight 又是兩回事,寫 Web Service 與 WCF 又是兩回事。所以說,除了類別庫、程式語言、開發工具,你還要了解專案裡的專業知識。這樣總合起來,大概就是你在 .NET Framework 的基本功力。

這才基本功力?對,這才基本功力,因為程式設計本身就是一門大學問,簡單的有演算法的設計、程式碼的撰寫、變數的命名-定義-使用、迴圈的使用…等。中階可能是物件導向(OOP)的使用…等,進階可能是設計模式、重構…等。

上述的基本功,一般人練到有點內功的話,我抓,二年~三年吧。神人是有,我想大概就是那些 Microsoft MVP,能無師自通、舉一反三。那我們一般人怎麼辦?能不能加快學習速度?我想是可以的。

ASP.NET MVC - 模型繫結(Model Binding)6大建議

原文:http://www.squidoo.com/asp-net-mvc-model-binding-tips
简中:http://www.cnblogs.com/waw/archive/2011/09/15/2177938.html
無意在網路上看到這篇「ASP.NET MVC Model Binding Tips」,正體中文我翻譯為「ASP.NET MVC 模型繫結6大建議」,簡體中文「ASP.NET MVC模型绑定的6个建议」。

我覺得內容不錯,整理成重點筆記,就內容上在增加一些內容,讓文章意思更清楚些。

Model Binding 重點一:使用 Model Binding


在 ASP.NET MVC 中,應該使用 Model Binding 而不是 Request.Form 來取得資料。早期使用 ASP / ASP.NET,使用 Request.Form() 來取得 Client 所傳送過來的資料是很正常的,但你已經開始使用 MVC 就不應該回頭去使用 Request.Form()。在 ASP.NET MVC 之中應該使用 FormCollection 或直接對物件來進行 Model Binding。

先定義一個簡單的資料物件,Blog.vb,

Public Class Blog
    Public Property Title() As String 
    Public Property PostedOn() As DateTime 
    Public Property Tags() As String 
    Public Property Content() As String 
End Class

內容很簡單,標題、發佈日期、標籤、內容。

在 Controller 裡我想取得 Title 資料。

Public Class HomeController
    Inherits System.Web.Mvc.Controller

    ' 使用 FormCollection 來取的表單資料
    Function Index(form As FormCollection ) As ActionResult
        ViewData("Message") = "歡迎使用 ASP.NET MVC!"
        ViewBag.Title = form("Title")
        Return View()
    End Function

    ' 使用 Model Binding
    Function About(blog As Blog) As ActionResult
        ViewBag.Title = blog.Title 
        Return View()
    End Function
End Class

我還可以使用「黑、白名稱」來過濾不必要的資訊。

Public Class HomeController
    Inherits System.Web.Mvc.Controller

    ' Exclude 等於黑名單
    Function Index(<bind(exclude:="postedon,tags,content")> 
                   form As FormCollection ) As ActionResult
        ViewData("Message") = "歡迎使用 ASP.NET MVC!"
        ViewBag.Title = form("Title")
        Return View()
    End Function

    ' Include 等於白名單
    Function About(<bind(include:="title")> 
                   blog As Blog) As ActionResult
        ViewBag.Title = blog.Title 
        Return View()
    End Function
End Class

取得資料後,我們還能對資料的正確性進處驗證。

' Include 等於白名單
Function About(<bind(include:="title")>
               blog As Blog) As ActionResult
    ViewBag.Title = blog.Title

    ' 資料的正確性
    If Not ModelState.IsValid AndAlso TryUpdateModel(blog) Then
        ' 正確,進行處理
    Else
        ' 錯誤
        ModelState.AddModelError("Title", "ErrorMessage")
    End If
    Return View()
End Function

重點一參考資料


ASP.NET MVC - MVC 4 Developer Preview 新功能介紹(一)

為簡省抓圖時間,本篇圖是直接引用 http://www.asp.net/learn/whitepapers/mvc4-release-notes 的圖,特此告知,內文不在特別註明。如有版權問題,請通知我。

增強預設專案樣版

  1. 一個新技術 adaptive rendering,能讓預設的樣版板在桌上型瀏覽器手機瀏覽器運作良好,而不用任何客制化。
  2. 使用JavaScript來提供豐富的 UI。例如,ASP.NET MVC 4預設專案樣版中的 Login 與 Register 使用 jQuery UI 來顯示。(測試發現,目前只能在 ASP.NET MVC 4 for C#,能有此效果,ASP.NET MVC 4 for VB,雖然是新 UI,但未提供此效果。)
ASP.NET MVC 4 專案樣版 UI
圖一:ASP.NET MVC 4 專案樣版 UI

adaptive rendering 技術
圖二:adaptive rendering 技術

Log On 使用 jQuery UI 的效果
圖三:Log On 使用 jQuery UI 的效果

Mobile 專案樣版

Mobile 可以說是 ASP.NET MVC 4 的重頭戲,ASP.NET MVC 4 有很大一部分都是在加強 Mobile 瀏覽器的相容性。在測試時,因為沒有使用 Mobile 模擬器,基本上是可以正常在桌上型瀏覽器顯示及操作相關 Mobile 專案樣版。另注意,與上面一樣,目前 ASP.NET MVC 4 for VB 還未加入這個 Mobile 專案樣版,想過過癮的話,必須開 C# 專案才有。
ASP.NET MVC 4 手機專案樣版
圖四:ASP.NET MVC 4 手機專案樣版
它使用與 Internet Application 一樣的樣版,但介面上採用 jQuery Mobil,這讓它在 Touch 行動設備上的顯示與運作可以良好。

ASP.NET MVC 4 的顯示模式(Display Modes)

這裡所謂的顯示模式簡單的想,如果你是從手機瀏覽器來的 Request,我就回應手機版網頁給你,其他我就回應一般網頁給你。你也可以針對特別版本來設計其回應網頁,程式會自動判斷,然後回應。

新顯示模式,讓應用程式依 Request - Browser's 兩者相依關係來選擇

例如,
Destop Browser → Request → 回應 \Views\Home\Index.vbhtml
Mobile Browser → Request → 回應 \ Views\Home\Index.mobile.vbhtml
  • 如果你 Views\Shared 下包含 _Layout.vbhtml 及 _Layout.mobile.vbhtml (即ASPX裡的 Site.Master 主版頁面),同上,手機會使用 _Layout.mobile.vbhtml,其他會使用 _Layout.vbhtml。
  • 如果你 Views\Shared 下包含 _MyPartial.vbhtml 及 _MyPartial.mobile.vbhtml (即ASPX裡的 LogOnUserControl.ascs 或使用者控制項或部份檢視),當程式 @Html.Partial("_MyPartial") 運作時,同上,手機會使用 _MyPartial.mobile.vbhtml,其他會使用 _MyPartial.vbhtml。
你也能建立特別 views, layouts, partial views 給其他的設備,只要注冊新 DefaultDisplayMode Instance 到指定名稱,例如,"iPhone"。我們在 Global.asax 的 Application_Start 方法來註冊 iPhone 這個字串:

DisplayModes.Modes.Insert(0, New DefaultDisplayMode("iPhone") With { _
	.ContextCondition = ( _
        Function(context) context.Request.UserAgent.IndexOf( _
                          "iPhone", _
                          StringComparison.OrdinalIgnoreCase) >= 0) _
})

之後,如果是由 iPhone 所發出的 Request,程式就會去找 _Layout.iPhone.vbhtml 來回應。

ASP.NET MVC 4 測試心得

就目前 ASP.NET MVC 4 開發者預覽版的測試而言,一是 UI 上的改進二是 Mobile 的支援。 ASP.NET MVC 本身並無太大更動。另外我們也發現,從 ASP.NET MVC 4 這一版開始,全面使用 jQuery 相關技術,不管是 jQuery UI、jQuery Mobile,看來 jQuery 都快要變成基本技能、要求之一。

加油,我們的肝!

參考資料

Windows - I'm computer Doctor (我是電腦醫生)

不是我臭屁,在大學時代,經過我手上修理的電腦不下數百台,這十多年來,加一加,應該也有千台了,除非問題特別,不然,已經可以
聽其聲,辨其音。
聞其味,知其人。
觀其色,識其因。
不過,電腦經過數十年的演進,電腦五大單元(Input, Output, Process, Control, Ram)還是未改變,連 iPhone, iPad 只是換湯不換藥,變成Input 由 Keyboard與 Mouse 變成 Touch Pad。

就維修電腦這方面,說我是電腦醫生,一點也不為過。可是,這些經驗都是無形的,最近愛上「Yahoo 知識+」,網友們的問題,千奇百怪。正好,如果有順利解決,而且我認為是非常常見的問題,我就整理上來,當成是筆記整理起來。


讀書心得 - 胡立陽出人頭地100招(1)推薦序

大概有買賣股票的人,沒有人不認識這位大師級人物:「胡立陽」。而我,是從一些電視訪談中認識這位大師。他有獨特的吸引人,說話、談吐…就是有辨法吸引人們的目光。

在書局發現這本「胡立陽出人頭地100招 成功人生必勝寶典」,原本很直覺的想,應該是教人買賣股票的書,但還是很好奇的拿起來看了一看,哇,這實在太棒了。這本出人頭地100招,集胡立陽人生上經驗之大成,就每個人生階段,他提出了一些建言。如果你還是個學生,你一定要想辨法去買一本、借一本,好好用心的讀一讀,想必必有收穫。

圖一:胡立陽 與 郭台銘
本書內容共分為五個部分:「求學、求職、工作、理財、贏在與眾不同」。看完此書了,我了解到,這是一本全年紀都適合閱讀或當成方針的一本書。

  1. 25歲前,求學期。
  2. 25-30歲,求職期。
  3. 30歲後,工作期。
  4. 25歲後,理財。
  5. 0-99歲,贏在與眾不同。

胡立陽以他的不成功的人生經驗來建議我們,我沒寫錯,是不成功的人生經驗,書中所有的成功經驗,都是先來自不成功的人生經驗,每每有困境、苦難、障礙…他是如何關關難過關關過。這很像我們另一位巨人郭台銘,不要只看成功,要看一個人在「困境、苦難、障礙…」時做了什麼?成功不會造就成功,「困境、苦難、障礙…」才會造成成功。

另,會想幫他們兩人合照,是因為書中各有一段關於人生階段分類,這讓我把兩本書對出來對照一下,發現是不是成功人士特質都有點像


讀書心得 - The Essential 55 (優秀是教出來的)

這些規則並只是要讓孩子循規蹈矩,更重要的,是要他們為離開教室後的人生做好準備。《序,P13》 

華道爾老師:「你知道,克拉克老師,你將會做得很好。只要你能影響一個孩子的一生,你就成功了。《序,P.18》 

我的求學路,就老師部分而言,我感到幸運的,一路良師益友很多,雖然有不讀書的童年,不過那是自己的選擇。不過,這些好老師雖然對我的「成績」沒有很大的幫助,但我覺得就「品性」而言,他們的好對我的品性的影響 > 成績的影響。 

萬富國小的陳秋妃老師,三星國中的夏雲鶴老師,頭城家商的王遠樵老師,大華技術學院的馮延春老師、陳育良老師、戴崑崧老師、莊清華主任…(大華幫助我的好老師一堆),這些人這些事,當學生的我只能以簡單記著你們的名子來回報。 

像陳秋妃老師,已經在萬富國小服務快超過二十年了,我是她第一屆的學生,她就像 Ron Clark 一樣,在學生身上的付出無法想像,連找個伴的時間都沒有。

不過,婆婆就那麼好運了。國中碰一位「虎姑婆」的老師。 

回到「影響一個孩子」這件事上。在上高中、大學之後,也碰過不少老師的心態是「只要影響一個孩子」,更有老師在課堂上直接說出來,說著:「只要課堂有一個人認真聽課就夠了。」

去改變班上每個孩子的一生。《序,P18》 

這本書《優秀是教出來的》的「序」,讓我回想起這些事。不一樣的心胸,不一樣的行動,不一樣的結果。 


  1. 遇到大人,要主動稱呼。大人問你話,你一定要清楚回答:「是/不是/好/不好/有/沒有」,或說「我不知道」。
  2. 看著另人的眼睛。… 
  3. *1…有出色的表現,大家都應該鼓掌恭喜他。… 
  4. …要尊重另的學生的看法和意見… 
  5. 贏…不可以炫耀。輸…不要生氣。… 
  6. 如果有人問你一個問題,你應該也回答他一個問題。…讓另人知道,你就跟他關心你一樣地關心他,這是基本的禮貌。 
  7. … 
  8. 不要…表示輕蔑。 
  9. 每次我送你什麼獎品,你一定要說謝謝。… 
  10. …絕對不要嫌棄禮物… 
  11. 隨時為別人做…貼心服務…(這條的內容太感人,哭+ing) 
  12. … 
  13. … 
  14. …所有問答題,都應該以完整的句子回答。… 
  15. …如果你開口主動要獎品,我就不會給。… 
  16. … 
  17. 做什麼事都要盡可能有條不紊。 
  18. … 
  19. … 
  20. … 
  21. 要遵守…禮儀。… 
  22. … 
  23. *2快速記住學校其他老師的姓名,並這樣打招呼… 
  24. … 
  25. … 
  26. …不要幫要好的同學佔位子。如果有同學想要坐下,就讓他坐。不要排拒任何人。…都是一家人… 
  27. …在責罰某名學生時,都不可以盯著那個學生看。… 
  28. … 
  29. 用餐…禮儀一定要遵守… 
  30. 用餐完畢要自行清理。… 
  31. …受到的服務,你要懂得惜福感恩。 
  32. … 
  33. … 
  34. …忌貪嘴… 
  35. …如果有人掉了東西,請幫忙撿起來,並物歸原主。… 
  36. …扶著門在旁,禮讓另一個人先行,你自己再進去。… 
  37. …即使不是你的錯,也要說:「對不起。」 
  38. … 
  39. …讚美一下我們正在參觀的地方。… 
  40. … 
  41. …接聽電話時,一定要應答得體。 
  42. …在有人撥出時間精力為你付出時,你要適當地表示感恩。 
  43. … 
  44. …絕對不要插隊。… 
  45. … 
  46. 不要帶零嘴「多力多滋」… 
  47. … 
  48. 捍衛你的信念。… 
  49. 要積極地去享受人生。…看事情要看清大小輕重,要專注生命中美好的那一面。 
  50. 生活要抱著「另讓將來有遺憾」的態度。… 
  51. 你是會犯錯的,請接受這個事實。你要從錯誤中學習,並繼續前進。 
  52. …一定要誠實。… 
  53. 把握今天。… 
  54. 在你的能力範圍內,做一個最棒、最棒的人。 


大小與小孩之間的互動四要點:

  1. 孩子需要有所適從,也喜歡有所適從。 
  2. 如果孩子喜歡你的人,就會努力配合你。 
  3. 孩子喜歡知道你對他們的期望。 
  4. 孩子喜歡知道有人在關心他們。 


心得一:為孩子良好的行為而「瘋狂歡呼」

鼓掌恭喜,這在我這個小家庭中是很常見的。而且我和婆婆常會為了孩子有良好的行為而「瘋狂歡呼」。我們愛,孩子也愛。 

心得二:記得名子的威力

我要在這裡介紹一位令人尊敬教官,他是我就讀頭商家商時的林河陳教官。這位教官令人無法忘記他的所作所為。

 記得,那是頭城家商開學第一天,而你看我的 Blog 的抬頭,那個 King Kong 稱號也是在這個學校得到。那時最紅的漫畫是正「灌藍高手」,而我強壯的四肢和赤木一樣臉孔,尤其我們都熱愛打藍球。那時,我可以下課打藍球,一個月穿壞一雙1000~2000元的皮鞋。因為那時學校規定,有體育課那天可以帶體育服和球鞋,其他時間我們都必須穿學校規定的服裝和皮鞋。管他什麼鞋,上藍、火鍋、抄球…照打不誤。得到 King Kong 我可是非常高興。甚至在畢業多業後,還聽到有人叫我 King Kong,那種感覺就像是回到高職,令人懷念。 

這位林河陳教官在開學第一天做了一件我一輩子也不會忘記的事。他站在門口和每位進校的同學點頭微笑。 我們是火車隊是全校最後一批進校的學生,坐火車到頭城頂埔站,然後走幾公里的路進學校,女前男後非常長的一隊人馬,你每天都能看到教官坐腳踏車在後面,叫男生用跑的”追”上隊伍,如果火車誤點,大概是全校唯一會用”跑”的進校的隊伍。我的體能在高職到達高峰,應該和火車隊有很大的關係。 

我的四肢和長相,我前面介紹過了,第一天上學、第一次跟隊…上學的心情是高興的,就在要踏進校門口時,這時林河陳教官突然開口說:「Bruce(我的全名)過來。」第一次我還沒意會,他又叫了一次「Bruce過來。」並向我揮揮手,要我過去。 我心想,我才第一天上課,為什麼教官會知道我的全名?他又叫我另一位我的同班同學「吳xx」過來。

我的嘴巴都快要掉下來了,在開學第一天,他能非常準確叫出每位新生的「全名」。 他叫我們兩位過去,和我笑一笑,然後說,不要緊張,有件事要交代你們兩位,明天希望你們兩位上學時能把鬍鬚刮好。我們是高一生,以我們年紀而言,我們兩位的鬍鬚算比較旺盛些,不過這時的鬍鬚是不會長長。 人生第一次的刮鬍鬚,就是高中上課第二天。

三年的時間證明,這位林河陳教官是一位令學生又愛又恨的人。他賞罰分明,你做錯事,他能讓你被記過且心肝情願。他會為你著想,他會給你機會,讓你能功過相抵。除非你真的是來學校做”惡”的,不然我那些喜歡騎機車、愛抽煙的伙伴們,每個還不是都接近三大過畢業。

全校每年有多少新生?林河陳教官是我看過最用心的教官。 

心得三:先鐵的紀律,後愛的教育


我雖然不是老師,但我以父親的角度來看本書,也是相同的位置。在教育孩子這件事情上,我也是我孩子的老師。 

「愛的教育,鐵的紀律。」我信相這句話每個人都會說。但看剛這本The Essential 55後,我覺得要修改一下前後順序為「鐵的紀律,愛的教育」。 從書中最常看到「規定」這個單字,但規定了以後,總是能見到「執行力」的貫徹,Ron Clark教育學生: 

禮貌、自重、自愛…(規矩) --> 好習慣 (執行力) 

重點在於變成「習慣」,好習慣的養成是需要有很大的執行力。 

就目前我自己教育孩子和與其他父母親聊天所得到的經驗,「要求別人前,先要求自己。」這件事最難。希望孩子每天能早點上床睡覺,但如果我接下來問:「你/妳自己都幾點上床睡覺?」大人就是一堆借口,連看電視、上網、打遊戲都列為正當理由! 

這其中有一件很好玩的事,因為我們全心全意在孩子身上,總是會想要有一些些自己的時間,所以午休時間,就是我們很重要的一個時段。不管午休或晚上睡覺,我們一定會和孩子一起上床,如果你不小心也睡著了,那是上天的指意,或是你的身體真的需要休息。而我也養成午睡小睡一下的習慣,大約半小時,小孩大約是二~三小時,所以我最多能有約二個半小時的時間,做一些自己的事。

有時是正事,有時是看看電視、上上網、打掃家裡…放鬆心情的事。 我自己而言,最常做的還是看書,所以孩子醒來第一件事是自己走到書房來找我。有一次午休,起來後,我故意坐在客廳看書,結果大寶貝差一點因為找不到我而哭出來,因為我沒有在書房看書。明明我就在離她不到二~三尺的客廳,而且就看她直直從我眼前走過去,她也沒發現我就坐在那裡,她昏昏且很直覺走過去書房。 

我或許有個不讀書的快樂童年,現在我以身做則。我們大寶貝最喜歡的一句話是:「爸比 or 媽咪,你們現在有空了嗎?可以陪我看書嗎?」每當這個時候,只要不是在做正事,我們都會放下手邊的工作,然後陪她看書。 

從這本The Essential 55 (優秀是教出來的),我也發現一件事,有另一本書叫《最後的演講》,這些人都有些共同特質,他們都喜歡「為別人」,例如,Ron Clark在書中最後結語標題:「我總是想為別人製造一些特別時刻」,回頭看看我自己的《最後的演講》讀書心得,就像星座、血型的分類一樣,他們根本就是同一種人,只是在不同領域發光發熱。

Visual Studio 11/.NET Framework 4.5/ASP.NET MVC 4 - Developer Preview 開發環境準備

就飯碗而言,又快到了升級(熬夜)相關知識的時間。感嘆要學的太多,但時間太少。不過,我們可以把學習時間拉長,在正式更新前(Release),通常會有很多Beta、Preview … 的版本訊息,建議最好花些時間了解,通常與 Release版本不會差異太大,就算有差異,等Release之後,我只需要了解差異點即可。這樣可以減少一次學習的壓力。

我們 Focus 在「開發」這一塊上面,前提是,你還是必須找台電腦,然後下載 Windows Developer Preview,然後安裝到測試機中(通常是虛擬機),才有辦法來玩標題中那一些 Developer Preview。

Windows 8 (Windows Developer Preview) 的虛擬機環境

如果你下載 Windows Developer Preview後,馬上開啟 VMWare 或 VisualBox 來安裝,有可能會裝不起來,最好請先升級VM Ware及VisualBox至最新版本,這樣保證不會出錯。
另網友反應,MAC上可用VMWare Fusion 4(付費)來安裝。