2014年3月28日 星期五

[轉貼] 想學程式設計,你怎麼能錯過這 31 個學 Coding 的網站

出處:http://techorange.com/2014/03/27/best-resources-to-learn-code/

學程式設計很重要,但在哪學比較好?
在 <大家都說要學 Coding,但我該先從哪種程式語言下手?> 一文中,我們可以知道學習程式設計的重要性,包括美國知名媒體《Business Insider》在  <The 100 Best Jobs In 2014> 一文指出美國 2014 前百大最佳職業,第一名就是「軟體工程師」,平均年薪 90,060 美金(約 270 萬台幣、70 萬港幣、11 萬新幣、30 萬馬來幣),而且相關人才需求在未來仍然持續成長。這幾年美國、亞洲也興起大量程式設計學校,像是 Hacker School、Hack Reactor、Dev Bootcamp …… 積極培養軟體人才,因應全世界的市場需求。
但是,這麼多的程式語言:Javascript、Java、Python、C、C++、C# 、Ruby、Objective – C …… , 無論你想成為 App 開發者、前端工程師、遊戲開發者等等,要去哪找這些學習語言的資源和工具,的確是很頭痛的事情。
學習 Coding 時最大的問題在於,它從來不是一件簡單的事,它需要投入很多時間而且會相當枯燥。不過我們有非常豐富的線上源和網站可以讓學習程式變成的更簡單。以下這些網站都是互動式的,在學習 Coding 的過程你可以立刻有所收穫。
以下為大家介紹的這 31 個線上學習 Coding 的資源,有專門給兒童、初學者、想成為 App 開發者、前端工程師、後端工程師、資料科學家、UX 設計師的 …… 只要你有毅力,好好定下心來運用這些資源來學習,幾個月內成為開發者、設計師完全不是難事!不信?那就親自去體驗看看吧。
MIT  擁有大量工程和資工相關的課程,它提供了所有的免費資源,包括考試、作業、設計和分析算法等等。
Mozilla 為程式設計師提供了一個開發平台。你可以在這學到新的技術,也可以得到很多能幫助你入門的資源。在這裏可以幫助你學習 HTML, CSS,Javascript …… 等知識。
學習 HTML5、CSS3、Javascript 的好地方,提供有影片和 Source Code。
目前在免費網站中,最知名的應該就是它了。上面所有的程式語言課程都是免費(HTML & CSS 、jQuery、JavaScript、PHP、Python、Ruby),互動式的界面做的不錯,也有討論區可以跟別的學習者一起討論問題,每個單元結束時都會有實作的作業可以及時了解學習成效。
Codeacademy 的缺點是,單元練習時的介紹文字稍嫌簡略,對初學者來說可能不夠清楚,需要去 Google 額外的資訊來補充、理解。
建議初學者先從 Web Fundamentals ( HTML & CSS)開始,結束後再往 jQuery…… 學習。
5. Udacity
有非常棒的電腦科學基礎教育軟體開發等課程。不只是教材(講義、上課影片)完整,而且師資也都是麻省理工學院、哈佛大學、北京清華大學、Cornell 大學、Caltech 等全球頂尖資工學府的教授,值得大家參考。
通過解決挑戰來了解 Java 和一些新的技能,學習變量、循環、字符串和數組這些基本的 Java Coding 知識。
7. Koding
專屬給程式設計師的協作平台。每位使用者都有自己的虛擬主機,只要透過瀏覽器就能直接在平台上寫 Code,環境都能依照使用者的開發需求做變化。支援 JavaScript、PHP、Perl、C、Go、Python、Ruby。
TalentBuddy 為學習者提供了一個可以練習 C、C#、C++、Javascript、PHP、Python, Ruby 的地方,以問答的方式引導你解決學習上的問題。
Code Avengers 上有 HTML,CSS,JavaScript 相關有挑戰性的課程,你可以學到怎樣編寫遊戲,App、網站。初學者在這裡也可以學到很多東西,做出很酷的作品。
Pluralsight 是美國的一間線上教育服務商,提供的課程類型包括:C#、jQuery、iOS、Android、Java、 Ruby ,還有包括設計、、NoSQL、Salesforce 等等。
11.  Scratch
Scratcch 是美國麻省理工學院(MIT)的媒體實驗室(Media Lab)在 2006 年所推出,專門設計給年約 8 歲的小朋友學習的程式設計語言 ,讓小朋友以熟悉的堆積木方式更快進入程式語言的世界。另外還有一套從 Scratch 分拆出來的學習工具 ScratchJr,讓年紀更小的孩子,也能接觸程式設計。
這是程式設計師的影片分​​享網站,你可以得到你最喜歡的主題方面所有的影片或教程,包括 Ajax、C++、Java、PHP、Python、Ruby 以及更多其他的技術​​,只要是你想學的,這邊都有啦!
13.  Coder Dojo
CodeDojo 這裡對每個人都是免費且開源的。
14.  Udemy
Udemy 是初學者學習如何 Coding 的良師。在這個網站上,開發者可以找到大量的課程來增天自己的知識。
跟 Codecademy 的教學方式和特色不太一樣,跟 Codecademy 不同的是,它是從「你想成為哪一種設計師、開發者」幫你做全盤的課程規劃,內容也相對完整許多。
舉例來說(下圖),你可以在「Tracks」選擇想學前端設計、網頁設計、iOS 開發、Android 開發、Rails 、PHP 等等課程,有許多基本的課像是 HTML、CSS、jQuery 都會在一些 Tracks 重疊。
另外,跟 Codecademy 不同的是,在 Treehouse 有真人(知名開發者)錄製的影片穿插在課程之間。

15. Coderace
Coderace 是最受歡迎的網站之一,在這你可以輕鬆的學到設計、開發和 iOS 相關的開發技術,並通過解決遊戲挑戰來增加你的知識。

17.  Coursera
由史丹佛大學大學教授 Andrew Ng 和 Daphne Koller 創建的 Coursera。Coursera 為使用者提供的最好的線上免費課程,你可以找到全球百大名校的 625 門相關課程來學習怎樣容易地寫 Code。
在 Khan Academy 的教程中,你可以學會如何使用 JavaScript 和 ProcessingJS 庫來創建有意思的圖畫和動畫。
在 HTML5 Rocks,開發者可以學到如何使用 HTML Coding 。這裡提供了許多的教程能夠很好地幫助開發者學習。
想學 Pyhon 嗎?來這就對了!
21. Lynda
無論你是想初次嘗試設計並創一個網站,還是你已經在設計網站方面做了很多年了,你總會從 Lynda 裡專家教授的影片課程中學到一些東西。在這裡學習使用 WordPress 或者 jQuery,CSS 設計,HTML …… 全部你要的都有!
連我 UX 設計經理朋友都在上面學設計呢!
22.  Codepen
CodePen 是一個網站前端設計開發平台。需要建立一個簡化的測試用例來演示並找出 Bug?想炫耀你的最新創作獲得稱讚?還是想為你的計劃找一個特定的設計模型?CodePen 適合你!
到 School of Webcraft 來學習 Web 開發技術吧。
24.  Dev Opera
無論你想成為 App 開發者、前端工程師,這裡的學習資源絕對夠用。特別的是,他在開發課程上分類特別清楚。
25.  Code School
你可以方便地打開你的瀏覽器,看看教學影片和相關教程,做做挑戰性的項目,就能從 Code School 學習到 Web 技術。Code School 整合了影片,線上 Programming 和遊戲元素,為你打開了一扇學習新技術的大門!
Academic Earth 堅信每個人都應該獲得世界一流的教育,這些課程均來自世界頂尖的大學。現在,我們可以在課堂之外學習原汁原味、頂尖教授教學的影片。

27.  Develop PHP
DevelopPHP.com 是一個快發展中的教育系統,這裡有大量的影片和文字資料,並且 100% 免費!在這,2013 年受關注的五大技術是:HTML,CSS,JavaScript、PHP 和 MySQL。來這裡學習程式設計理論,數據庫交互,網頁設計,動畫,圖形編輯,矢量藝術,三維建模 …… 學習資源非常豐富。
28.  Bloc
在線上學習的過程中會有真人導師指導你,讓你在 2 個月的密集訓練中從新手變專家,不過要付費就是了。
29.  How to Code
從最基礎的課 HTML 到 Ruby on Rails 的教學都很完整。


30.  Bento Box
非常方便的程式設計學習入口網站,建議大家學習任何一個語言和工具前都可以先到這個網站看看。
線上與線下課程都有的學校,內容主要 Focus 在前端設計、iOS、Android 、UX 設計上。在美國、德國、香港都有分校,畢業後提供新創公司的工作機會。

[轉貼] 字串 codepage 轉碼處理,解決亂碼問題

出處:http://www.dotblogs.com.tw/yc421206/archive/2011/06/09/27596.aspx?fid=65648

這是我在某天所遇到的一個問題,我對某台設備進行操作時它回傳了一串我看不懂的字串
⊃;nÅé&frac14;Ò⊃;Õ¤¤ªº¤@¯ë©Ê¿ù»~¡G&frac14;Ð·Ç GUI (⊃;ϧΤƥΤᤶ­±)¡C";
當時直覺就是使用編碼來處理,不過這樣做並不會得到正確的結果,原因是我並未取得正確的編碼byte,也就是codepage
byte[] big5 =Encoding.GetEncoding("Big5").GetBytes("⊃;nÅé&frac14;Ò⊃;Õ¤¤ªº¤@¯ë©Ê¿ù»~¡G&frac14;Ð·Ç GUI (⊃;ϧΤƥΤᤶ­±)¡C");
Console.WriteLine(Encoding.GetEncoding("Big5").GetString(big5));
 
插撥一下,稍微講解一下Encoding.GetEncoding的用法,Encoding.GetEncoding的第一個參數叫codepage,什麼叫codepage(字碼頁)
image
字碼頁。
微軟賦予每個語言一個數字代碼,叫做字碼頁(codepage)。字碼頁可能會決定使用哪些文字,以及單位符號等等。
繁體中文的字碼頁是 950。
我們可以由Encoding.GetEncodings方法 加上  Encoding.CodePage 屬性 取得所有的codepage
static void codepage()
{
    foreach (EncodingInfo ei in Encoding.GetEncodings())
    {
        Encoding e = ei.GetEncoding();
        Console.WriteLine("Name:{0},CodePage:{1}",ei.Name, e.CodePage);
    }
    Console.ReadLine();
}
image
也可以查一下google


接下來回到正題,該怎麼樣處理那該死的亂碼?只要用以下的原始碼就能夠處理。
static void encoding()
{
    string source = "⊃;nÅé&frac14;Ò⊃;Õ¤¤ªº¤@¯ë©Ê¿ù»~¡G&frac14;Ð·Ç GUI (⊃;ϧΤƥΤᤶ­±)¡C";
    byte[] unknow = Encoding.GetEncoding(28591).GetBytes(source);
    string Big5 = Encoding.GetEncoding(950).GetString(unknow);
    Console.WriteLine(Big5);
    Console.ReadLine();
}
先把字串轉成正確的byte
byte[] unknow = Encoding.GetEncoding(28591).GetBytes(source);
再把轉到你想要顯示的編碼
string Big5 = Encoding.GetEncoding(950).GetString(unknow);

果真翻譯成我們要看的編碼了~
image


好了問題來了,怎麼知道編碼是28591,我們可以用下列片斷程式碼來處理,會得到所有codepage交叉處理的結果,觀察文字檔有哪些是看的懂的文字,會得到不少的正確。

static void savecode()
{
    StringBuilder sb = new StringBuilder();
    string source = "⊃;nÅé&frac14;Ò⊃;Õ¤¤ªº¤@¯ë©Ê¿ù»~¡G&frac14;Ð·Ç GUI (⊃;ϧΤƥΤᤶ­±)¡C";

    foreach (var e1 in  Encoding.GetEncodings())
    {
        foreach (var e2 in Encoding.GetEncodings())
        {
            byte[] unknow = Encoding.GetEncoding(e1.CodePage).GetBytes(source);
            string result = Encoding.GetEncoding(e2.CodePage).GetString(unknow);
            sb.AppendLine(string.Format("{0} => {1} : {2}",e1.CodePage,e2.CodePage,result));
        }
    }
    File.WriteAllText("test.txt", sb.ToString());
}
image

內容有1.8Mbyte實在很多,這次只要用950跟所有的codepage交叉比對,資料量立即下降許多
static void savebig5()
{
    StringBuilder sb = new StringBuilder();
    string source = "⊃;nÅé&frac14;Ò⊃;Õ¤¤ªº¤@¯ë©Ê¿ù»~¡G&frac14;Ð·Ç GUI (⊃;ϧΤƥΤᤶ­±)¡C";

    foreach (var e in Encoding.GetEncodings())
    {
        byte[] unknow = Encoding.GetEncoding(e.CodePage).GetBytes(source);
        string result = Encoding.GetEncoding(950).GetString(unknow);
        sb.AppendLine(string.Format("{0} => {1} : {2}", e.CodePage, 950, result));
    }
    File.WriteAllText("big5.txt", sb.ToString());
}
image


後記:

[轉貼] 清除 OutputCache 的方法

出處:http://slowdeen.blogspot.tw/2012/12/outputcache.html

繼上篇在套用 Master Page 下使用 OutputCache後,這篇就來寫一下如何清 OutputCache。

清除單頁 OutputCache 的方式可使用下列語法

?
1
HttpResponse.RemoveOutputCacheItem("/test.aspx");

參考來源: http://www.dotblogs.com.tw/ajun/archive/2008/02/18/1078.aspx 


但如果想要清除所有的 OutputCache,上網找到一個方法,實際測試是可以 WORK 的,以下為sample。

Global.asax 
?
1
2
3
4
5
6
7
8
9
10
11
<%@ Application Language="C#" %>
 
<script runat="server">
 
    void Application_Start(object sender, EventArgs e)
    {
        HttpContext.Current.Cache.Insert("task-index", DateTime.Now);
 
    }
            
</script>
Default.aspx 
?
1
2
3
4
5
6
7
8
9
10
11
12
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ OutputCache Location="Server"  VaryByParam="*" Duration="60" %>
.
.
.
 
    <form id="form1" runat="server">
    <asp:label id="lblNow" runat="server"></asp:label>
    </form>
.
.
.
Default.aspx.cs 
?
1
2
3
4
5
6
protected void Page_Load(object sender, EventArgs e)
{
    Response.AddCacheItemDependency("task-index");
 
    lblNow.Text = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
}
ClearOutputCache.aspx 
?
1
2
3
4
5
6
7
8
.
.
.
<asp:button id="btnClear" onclick="btnClear_Click" runat="server" text="Clear">
.
.
.
</asp:button>
ClearOutputCache.aspx.cs 
?
1
2
3
4
protected void btnClear_Click(object sender, EventArgs e)
{
    HttpContext.Current.Cache.Insert("task-index", DateTime.Now);
}
如果是使用 UserControl ,可以參考這篇 ASP.NET: clear user control output cache 

註:清除 OutputCache 的功能要放在另一頁,如果要做在同一頁可以使用 AJAX 技術。