發表文章

目前顯示的是 8月, 2017的文章

網路程式開發者所需要的網路知識 ( Concepts for a network programmer )

圖片
身為一個網路程式開發者所需要的網路知識可能如下: 網路工具的使用。 網域名稱與主機位址。 通訊協定。 網路封包。 網路工具的使用 在Linux Ubuntu上可利用下面指令來安裝網路工具: sudo apt - get install netcat - openbsd tcpdump traceroute mtr 請在Linux下試試底下的指令: ip addr show eth0 ip route show ping - c3 8 . 8 . 8 . 8 ip route show default netstat - nr host - t aaaa google.com host - t mx tw.yahoo tcpdump - n - c5 - i eth0 port 22 traceroute tw.yahoo.com mtr tw.yahoo.com printf 'HEAD / HTTP / 1 . 1 \ r \ nHost : tw.yahoo.com \ r \ n \ r \ n' | nc tw.yahoo.com 80 在Windows系統下,有 netstat 與 ping 指令可以用來檢查電腦的網路狀態。此外若需要分析封包時,可用 Wireshark 這套軟體來協助。 檢測電腦 IPv6 的功能網頁: http://test-ipv6.com/ 網域名稱與主機位址。 網域名稱(Domain Name) 是用來辨識網路上某一台電腦,以Google為例, www.google.com 剛好是Google的網域名稱與搜尋引擎網址的名稱,每一個網域名稱通常會有至少一組的 IP位址(住址),這可用 ping 的指令來查詢到,而 www.google.com 所對應的IP可能為108.177.97.106。 【那這IP是從何而來的?】透過網路上的 Domain Name System所存放的網域名稱與IP對應表,一個網域名稱所對應的IP就可被查詢到了。 另外,現存的主機位址有 32 bits 的 IPv4 與 128 bits 的 IPv6 。此外也需要分清楚 私有網路 與公開網路以及實體IP、虛擬IP、固定IP、子網路( Subnetwork ...

如何學好物件導向程式設計

圖片
本文為延續 如何學好程式語言 一文,要來說明學習物件導向程式設計需要的學習目標有哪些: 物件(Objects) 類別(Classes) 繼承(Inheritance) 多型(Polymorphism) 封裝(Encapsulation) 物件(Objects) 所有的東西都是物件。(Everything is an object.) 這句話是什麼意思呢?舉凡看的到、摸的到、看不到、摸不到、聞的到的東西等,只要說得出名稱的都可以稱為物件, 所以「看到鬼了!」這句話中的「鬼」是個無形的物件 ( 嗎? )。鉛筆、原子筆等就是 有形的物件 。在程式碼中的變數名稱就是程式語言中的物件,例如下面程式碼: int grade; String studentName; grade 可能是用來表示「成績」這個物件。 studentName可能是用來表示「學生姓名」這個物件。 在程式碼中物件的宣告(定義)方式如下, Object objName; Object是物件的型態,有可能為基本型別:int, float, char, ...etc,或是類別(Class)型別。談到類別的話,就請往類別一小節閱讀。 每個物件都有行為與特徵,例如人這個物件會跑、說、走、跳等行為,人有身高、體重、膚色等特徵,行為在程式語言裡常用成員函式(Member functions)來實現,而特徵常用類別的成員資料(Member data)來表示。 類別(Classes) 因為程式語言內建的基本型別只能記錄少許的資訊,例如int型別就只能記錄整數部分,於是在C語言中有 strcut 的出現,可用來記錄不同型別的資訊例如: struct Computer { int product_id ; char * cpuType ; int * ram ; float price ; }; 上述例子Computer紀錄了四筆資料,但這樣還不能描述物件的 行為 。於是電腦科學的專家們想出classes這個觀念出來,用類別來表示物件的藍圖(積木),於是【 將現實生活中的物件變成程式語言中的軟體物件 】這一過程叫做 資料抽象化 。物件與類別的圖文說明可參考此文: Objects and Classes in Java 。 ...

如何學好程式語言

本文不提如何 自學程式設計 ,而是說明「決定要學程式語言時,要如何 學好 它」,大致上有下面幾點需要學習的: 如何使用變數。 如何運用陣列。 如何運用判斷敘述。 如何運用重複結構。 如何定義函式。 如何使用函式庫 libraries 。 如何除錯 debug。 以上幾點若能熟練的話,對於小程式來說是足夠的。底下會根據各點分別說明。 如何使用變數 此部分包含需要知道變數的型態,以及這個變數可以用來做什麼,例如此行程式碼  int sum; 是代表用來做整數的加總嗎?這可不一定,那下面一行程式碼的變數應該就是用來做整數的加總了吧!  int sumOfIntegers; 或許是吧!以上兩例的變數是為了要說明 變數命名 的重要性,變數命名就好像在取人名一樣,取的好,看程式碼的人就容易了解,也有助於 程式碼的可讀性 。此外, 變數範圍(Variable Scope) 也需要了解。 如何運用陣列 陣列 英文為Array,為 資料結構 的一種,此部分包含如何定義一個陣列、如何賦值給陣列、一維陣列、二維陣列、 尋找陣列中的元素、陣列元素的排序等。 如何運用判斷敘述 需活用if-then-else、switch的判斷敘述,以及比較運算子與邏輯運算子,再來就是巢狀判斷敘述的運用。 如何運用重複結構 需了解所學的程式語言有哪些loops 迴圈敘述語法,例如C語言有 for、while、do/while等重複結構,重複結構的目的是讓某一段程式碼重複執行,就像我們每天早上會吃早餐、刷牙、洗臉等,這些早上做的事一年會重複好幾次,而程式語言就是用重複結構來做類似的事。 如何定義函式 函式 在不同的程式語言裡有不一樣的英文名稱,在Java叫做 Method,C/C++叫做Function,Visual Basic叫做Procedure等。函式和數學函數有相同的地方:都是用來運算用的。只不過函數是數學運算,而函式是告訴CPU處理器做一些事情。了解如何定義函式後,也須學習如何使用函式,更進階一點還需要瞭解 遞迴函式(Recursion) 。 如何使用函式庫 libraries  「除非必要,否則別從頭打造積木。」在現今的軟體開發裡,很少有人自己從頭打造軟體積木了,因為很多的軟體積木已經被打造出來...

螢幕白板筆 Pointofix 介紹

圖片
筆者從網路上找到這套用來桌面塗鴉的軟體,剛好有繁體中文的介面可以使用,於是筆記一下。官網: http://www.pointofix.de/download.php 中文化方式見下圖: 用免安裝版本就可以帶著跑了。 若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 If you like this post, please click the ads on the blog or  buy me a coffee . Thank you very much.