OPENHOME 程式設計教學網站(砍站) 目錄索引
OPENHOME 程式設計教學網站(砍站) 目錄索引
資料來源:https://openhome.cc/Gossip/
備份網址: http://jashliao.eu/openhome_web/Gossip/
GO語言
起步走
語言的起步走,需要的時間最好是長一些,因為慢一點才會快一點 …
Go 平台概要
在開始認識語言本身之前,先來瞭解 Go 提供的基本工具集,這是 Go 的一大特色。
來個 Hello, World
Go 套件管理
gofmt 格式化原始碼
go doc 文件即註解
Go 測試套件
型態、變數、常數、運算子
也許看似基本,然而沒你想像中的那麼簡單。
認識預定義型態
變數宣告、常數宣告
位元組構成的字串
身為複合值的陣列
底層為陣列的 slice
成對鍵值的 map
運算與流程控制
Go 有指標,switch 很有彈性,沒有 while,存在 goto … XD
運算子
if … else、switch 條件式
for 迴圈
break、continue、goto
函式、結構與介面
封裝演算、定義行為、組織程式元件。
函式
函式入門
一級函式
匿名函式與閉包
defer、panic、recover
結構
把相關的東西放在一起。
結構入門
結構與方法
結構組合
介面
將行為定義出來。
介面入門
型態斷言
介面組合
常用 API
從常用 API 中學習如何撰寫 Go 程式碼。
基本 IO
從 io.Reader、io.Writer 開始認識。
從標準輸入、輸出認識 io
io.Reader、io.Writer
bufio 套件
檔案操作
error 處理
到處都在 if err != nil?
err 是否 nil?
錯誤的比對
errors 套件
資料結構
sort、list、heap 與 ring 套件。
sort 套件
list 套件
heap 套件
ring 套件
文字
有關字串、位元組等的處理。
strconv、strings 套件
bytes 套件
unicode 套件
編碼轉換
反射
探測資料的結構與相關數值。
反射入門
結構欄位標籤
並行
簡單的並行模型。
Goroutine
Channel
其他
一些雜七雜八的東西,暫時放這分類。
相依管理
go module 能終結混亂嗎?
vendor
模組入門
WebAssembly 支援
Go 也可以在瀏覽器裏跳舞?
哈囉!WebAssembly!
Go 呼叫 JavaScript
JavaScript 回呼 Go
附錄
Go 官方套件說明文件
How to Write Go Code
Go Commands
Effective Go
C語言
入門基礎
先作個簡單的程式來運行一下,從瞭解程式語言的資料型態、變數與流程控制語法開始。
資料型態與變數
先來個 “Hello! World!” 顯示一下程式執行結果。
Hello! World!
資料型態
字面常量
變數
printf 與 scanf
putchar、getchar、puts、fgets
運算
程式的目的就是運算、運算還是運算。
算術運算、型態轉換
關係運算、條件運算
邏輯運算、位元運算
遞增、遞減、指定運算
流程控制
各種條件判斷與迴圈重覆執行語法,可以令程式因應不同的狀況。
if 條件判斷
switch 條件判斷
for 迴圈
while 迴圈
break、continue、goto
進階型態
陣列、字串、指標等型態常被使用,彼此之間互有相關。
陣列、字串
先從陣列開始認識起,並了解字串是以字元陣列組成。
陣列
二維(多維)陣列
字元陣列與字串
字串處理
字串是程式中重要的一部份,C 標準函式庫中有一些函式可以協助字串的處理。
字串長度、複製、串接
字串比較、搜尋
字串轉換、字元測試
字串掃描與格式化
指標
指標儲存記憶體位址,擁有型態。
指標與位址
指標的運算
指標與陣列
指標的指標
指標與字串
命令列引數
malloc、free、calloc 與 realloc
函式
可以重用的程式碼,可以定義為函式。
函式入門
先簡介函式定義,並談談幾個變數可視範圍的議題。
函式簡介
引數與傳回值
inline 函式
變數範圍
進階議題
遞迴呼叫、函式指標等。
遞迴
不定長度引數
函式指標
複合型態
struct 將相關的資料包裝在一起,也來看看 enum、union 的使用。
結構
將相關的資料包裝在一起。
定義結構
結構與指標
結構組合
特殊的型態
enum、union 等的使用。
列舉
union
位元欄位
其他
阿散不魯、暫時不分類的東西。
巨集
巨集是必要之惡?
巨集簡介
預設引數
_Generic 選擇
foreach 與陣列
例外處理
檔案 I/O
I/O 的基本。
文字檔案 I/O
二進位檔案 I/O
C++
入門基礎
先作個簡單的程式來運行一下,並從瞭解程式語言的資料型態、變數與流程控制語法開始。
資料型態與變數
先來個 “Hello! World!” 顯示一下程式執行結果,增加一點撰寫程式的信心!
Hello! World!
資料型態
字面常量
變數
終端機輸入輸出
運算
程式的目的就是運算、運算還是運算。
算術運算、型態轉換
關係運算、條件運算
邏輯運算、位元運算
遞增、遞減、指定運算
流程控制
藉由各種條件判斷與迴圈重覆執行語法,可以令程式因應不同的狀況。
if 條件判斷
switch 條件判斷
for 迴圈
while 迴圈
break、continue、goto
進階型態
陣列、字串、指標常被使用,看似複雜,但彼此之間互有關聯。
陣列、字串
陣列是連續的空間配置。
陣列
二維(多維)陣列
字元陣列與字串
array、vector 與 string
使用 array 來替代陣列,使用 vector 容器來儲存可變長度資料,使用 string 來表現字串。
使用 array
使用 vector
使用 string
指標
指標可儲存記憶體位址,擁有型態。
指標與位址
指標的運算
指標與陣列
指標的指標
指標與字串
命令列引數
new 與 delete
函式
可重用的的程式碼,可以定義為函式。
函式入門
與函式相關的入門語法。
函式簡介
inline 與 constexpr 函式
預設引數
重載函式
變數範圍
遞迴
參數、傳回值
參數與傳回值的進階議題。
參考
rvalue 參考
引數與參數
傳回值型態
不定長度引數
模版
編譯器依模版產生重載函式。
函式模版
模版與參考
可變參數模版
尾端傳回型態
傳遞演算法
傳遞函式、lambda 運算式。
函式指標
lambda 運算式
一級函式與 algorithm
高階函式
物件基礎
將程式中互動的單元視為物件。
封裝入門
類別是建構物件時的規格書。
定義類別
建構式
const 與 mutable
static 成員
巢狀、區域、匿名類別
運算子重載
自訂型態轉換
函子
類別模版
成員指標
管理物件
控制物件的解構、複製、移動,以及動態配置物件的管理。
解構式、複製與移動
auto_ptr
unique_ptr
shared_ptr
weak_ptr
特殊的封裝
特殊的類別或值域。
列舉
union
位元欄位
物件導向
認識繼承與多型。
繼承
繼承某類別並加以擴充。
繼承共同行為
遮蔽父類方法
虛擬函式
純虛擬函式(一)
純虛擬函式(二)
模版與繼承
RTTI
多重繼承
沒事別亂用啊!
多重繼承
多重繼承的建構
虛擬繼承
多重繼承的複雜
程式規劃
錯誤的通知、名稱的控管。
例外
例外是可傳播、可捕捉的錯誤值。
簡介例外處理
捕捉自訂例外
使用標準例外
重拋例外
名稱空間
避免名稱衝突。
簡介名稱空間
關於 namespace
使用 using
程式庫
常用的程式庫。
I/O
I/O 格式控制、檔案 I/O。
I/O 格式控制器
I/O 格式化旗標
文字檔案 I/O
二進位檔案 I/O
附錄
C++ 之父給初學者的信
C++ reference
GTK
入門
先來嘗試一下幾個簡單的 GTK 程式,並初步了解一些核心特性。
Hello!World! Orz..
第一步,當然是先 克服 GTK 的安裝問題,然後來個簡單的 Hello!World! Orz…
Ubuntu 下安裝 GTK
第一 個 GTK 程式
Windows 下第一個 GTK 程式
GTK 的物件導向架構
Signal 與 Callback
在 GTK 的元件上操作,會發出特定的 Signal ,將 Signal 連接至特定的 Callback 函式,以完成對某個動作的處理。
使用 Signal 關閉視窗
自訂 callback 函式
內建 Signal 的發射與停止
事件處理
GDK 事件會傳播給 GtkWidget,引發一個與事件相對應的事件 Signal,再透過 Callback 函式處理事件。
GDK 事件結構
GTK 事件處理函式
事件遮罩(Event Mask)
基本版面配置
基本上就是透過水平與垂直包裝盒,將元件置於其中以完成所需的版面配置。
GtkHBox 與 GtkVBox
GtkFrame 與 GtkButtonBox
GtkTable
其它
GTK 官方網站上,有許多的參考文件與範例,為入門時的必看資料。
GTK 參考文件
簡介 Glade
基本圖形元件
元件講是講不完的,這邊主要在簡介幾個基本元件之作用。
按鈕
按鈕是視窗 程式中最基本的元件。
GtkButton 與 GtkToggleButton
影像及文字按鈕
GtkCheckButton 與 GtkRadioButton
對話方塊
對話方塊用來與使用者作簡單的訊息交換與溝通。
GtkMessageDialog
GtkAboutDialog
GtkColorButton 與 GtkColorSelectionDialog
GtkFontButton 與 GtkFontSelectionDialog
GtkFileChooserButton 與 GtkFileChooserDialog
使用 GtkDialog 自訂對話方塊
文字欄位
文字欄位是使用者輸入資訊的基本元件。
GtkEntry
GtkSpinButton
GtkTextView
選項清單
這邊的選項清單元件,遵守 MVC 設計,使用上較為複雜但應用彈性大。
GtkComboBox
GtkComboBox 與 GtkListStore
GtkComboBox 與 GtkTreeStore
GtkTreeView 與 GtkListStore
GtkTreeView 與 GtkTreeStrore
版面元件
除了上面介紹的三種基本版面配置之外,還可以使用一些版面元件來協助元件的群組與版面的切割。
GtkNotebook
GtkPaned
GtkScrolledWindow
GtkAlignment、 GtkFixed 與 GtkLayout
GtkFrame 與 GtkAspectFrame
進階元件使用
來看看一些選單、列、等元件之使用與組合方式,以及繪圖、列印等功能。
選單元件
選單是視窗程式最 常見的功能了。
GtkHandleBox
GtkMenuBar、 GtkMenu 與 GtkMenuItem
GtkCheckMenuItem、 GtkRadioMenuItem 與 GtkTearoffMenuItem
GtkUIManager
列元件
進度列、工具列、 狀態列。
GtkProgressBar
GtkToolBar
GtkStatusBar
其它元件
簇繁不及備載…Orz…
GtkStyle 與資源檔
GtkLabel
GtkScale
GtkEntryCompletion
GtkArrow
GtkRuler
GtkAssistant
GtkCalendar
GtkDrawingArea
GLib
GLib 是 GTK 所需的函式庫之一,不過它是個可獨立使用的函式庫。
基本型態、巨集、公用(Utility)函式
一些有的沒的常用函式,先放在一起講……Orz
GLib 基本型態與巨集
GTimer
Timeout 與 Idle
環境資訊
日誌 (Logging)
輸入輸出
來了解一些基本檔案讀寫、目錄資訊的取得方式,以及輸入輸出 Channel 的使用。
基本檔案讀寫
目錄資訊
GIOChannel 與檔案處理
GIOChannel 與 Pipe
資料結構、記憶體配置
來看看 GLib 提供了哪些常用的資料結構處理及動態記憶體配置函式。
GString
GArray、GPtrArray、 GByteArray
GSList、 GList
GHashTable
GTree 與 GNode
記憶體配置
執 行緒
GLib 提供了 GThread 作為多執行緒的支援。
GThread
GMutex
GCond
附錄
GTK+ 2.0 Tutorial
GTK+ Reference Manual
GTK+ / Gnome Application Development
GTK+ and Glade3 GUI Programming Tutorial
GTK+ 2.0 Tree View Tutorial
QT4
入門
先來嘗試一下幾個簡單的 Qt 程式,並初步了解一些核心特性。
Hello!World! Orz..
第一步,當然是先克服 Qt 的安裝問題,然後來個簡單的 Hello!World! Orz…
Windows XP/Vista 下安裝 Qt4
第一個 Qt 程式
簡單的顯示中文(使用 Unicode 轉換)
Signal 與 Slot
Signal 與 Slot 是 Qt 的特性,讓物件之間可以同步的(Synchronous)通知訊息,但又不必知道彼此,Signal 是由物件發出。
使用 Signal 與 Slot(使用按鈕關閉視窗)
使用 Signal 與 Slot(使用拉桿改變LCD數字)
自訂 Signal 與 Slot
事件處理
事件基本上是非同步的(Asynchronousd),通常由視窗或系統發出,讓應用程式可以回應使用者動作或系統訊息。
事件類型與處理者
事件接受與否、event() 方法
事件過濾器
自訂與傳送事件
基本版面配置
Qt 的三種基本版面配置類型為水平、垂直及格狀(Grid)配置。
QHBoxLayout 與 QVBoxLayout 版面配置
QGridLayout 版面配置
較複雜的版面配置
自訂版面配置管理員(Layout Manager)
其它
Qt 在發行時,本身即帶有豐富的參考文件與範例,為入門時的必看資料。
Qt 參考文件與範例
簡介 Qt Designer
常用圖型元件
元件講是講不完的,這邊主要在簡介幾個元件作用,想了解每個元件詳細使用方式, Qt 參考文件與範例 才是 王道。
按鈕選項
按鈕與選項是視窗程式中最基本的元件。
QPushButton
QCheckBox 與 QRadioButton
QComboBox
對話方塊
對話方塊用來與使用者作簡單的訊息交換與溝通。
QInputDialog 與 QMessageBox
QColorDialog 與 QFontDialog
QFileDialog
自訂對話方塊(Dialog)
文字欄位
文字欄位是使用者輸入資訊的基本元件。
QLineEdit
QTextEdit
清單元件
這類元件通常用於顯示項目清單,可以簡單的列示,或者是使用樹狀或表格等。
QListWidget 與 QListWidgetItem
QTreeWidget 與 QTreeWidgetItem
QTableWidget 與 QTableWidgetItem
Model 與 View 類別
版面元件
除了上面介紹的三種基本版面配置之外,還可以使用一些版面元件來協助元件的群組與版面的切割。
QTabWidget
QSplitter
QStackedLayout
QScrollArea
其它元件
簇繁不及備載…Orz…
QScrollBar
QTimer 與 QLCDNumber
QProgressBar
QWizard
QMainWindow
QMdiArea
QSplashScreen
常用 API
Qt 已經不只是個 GUI 框架,它提供豐富的 API,可作為撰寫應用程式的基礎。
QString、容器元件
QString 是常用的類別之一,擁有一些與容器類似的特性,而 Qt 提供了一系列的通用容器類別(Container class),使用上更輕量級且安全。
QString
循序容器(QVector、QLinkedList、QList…)
關聯容器(QMap、QHash…)
泛型演算(Generic Algorithms)
檔案處理
檔案輸入輸出是一個應用程式所必備的,藉由檔案的輸入輸出,也可以一同瞭解Qt的I/O處理。
QFile
QTextStream
QDataStream
QFileInfo 與 QDir
Qt 資源系統
資料庫
QtSql 模組提供與平台、資料庫無關的資料庫存取需求,在這邊使用 MySQL 作為示範。
Qt 的 MySQL 驅動程式
QSqlQuery
QSqlQueryModel 與 QSqlTableModel
繪圖
Qt 繪圖基於 QPainter,可於 QPaintDevice 的子類別上,進行幾何圖案、圖像、文字等繪製。
QPainter
QMatrix
QPixmap、 QBitmap、QImage 與 QPicture
QPrinter
拖放(Drag & Drop)與剪貼
拖放動作對於使用者是很直覺的操作,而剪貼簿可以方便使用者於不同的應用程式間分享資料。
拖放事件
拖放的執行與接受
剪貼簿(QClipboard)
網路
Qt 的網路模組提供網路存取時的高階與低階 API,基於非同步(Asynchronous)及 Signal 的行為。
QHttp
QFtp
QTcpSocket
QTcpServer
進階議題
進階議題就是比較進階的議題。。XD
多執行緒(Multithreading)
想要實作多執行緒功能,只要繼承 QThread 類別,單就表面上來看,執行緒並不困難。
QThread
執行緒的停止
QMutex 與 QMutexLocker
QWaitCondition
QReadWriteLock 與 QSemaphore
QThreadStorage
國際化(Internationalization)
讓您的應用程式可以因地制宜,顯示不同的語系文字。
使用 Unicode
翻譯應用程式
多國語系選擇與切換
附錄
Qt 4 初體驗
Ubuntu 下安裝 Qt 4.3.1
Qt Eclipse integration for C++
QDeveloper: Free cross-platform Development Environment for Qt4
JAVA
起步走
這邊的起步走需要的時間長了一些,因為慢一點才會快一點 …
Java 平台概論
Java 不僅是程式語言,也代表解決問題的平台,更代表了原廠、各個廠商、社群、開發者與使用者溝通的成果。
Java 版本遷移
JDK 規範與實作
JVM、JRE 與 JDK
JDK 安裝與認識
從 JDK 到 IDE
顯示 “Hello World” 很簡單,然而,別過於樂觀地以為,你想從事的程式設計工作就是如此容易駕馭。
PATH 是什麼?
JVM 與 CLASSPATH
編譯器與 CLASSPATH
管理原始碼與位元碼檔案
想像一下,如果程式規模稍大,一堆 .java 與 .class 檔案還放在一起,會有多麼混亂。
編譯器與 SOURCEPATH
使用 package 管理類別
使用 import 偷懶
JRE 與類別檔案版本
Java 語法基礎
各種程式語言都有其誕生的宗旨與演化過程,對這些基本語法元素,也就會有其獨有的特性。
型態、變數與運算子
我們先從型態開始探討….
型態
變數
運算子
型態轉換
流程控制
為了告訴電腦特定條件下該執行的動作,要使用各種條件式來定義程式執行的流程。
if..else、switch 條件式
for、while 迴圈
break、continue
認識物件
使用 Java 撰寫程式幾乎都在使用物件,要產生物件必須先定義類別。
類別與物件
類別是物件的設計圖,物件是類別的實例。
定義類別
使用標準 API 類別
物件指定與相等性
基本型態包裹器
瞭解如何包裹基本型態,這有助於進一步瞭解物件與基本型態的差別。
包裹基本型態
自動裝箱、拆箱內幕
陣列物件
陣列在 Java 是物件,之前介紹過的物件基本性質,在操作陣列時也都要注意。
陣列基礎
操作陣列物件
陣列複製
字串物件
在 Java 中,字串本質是包裹字元陣列的物件,是 java.lang.String 類別的實例。
字串基礎
字串特性
字串編碼
Java 物件導向
封裝、繼承、多型 … 以及用 Java 實現 …
封裝
定義類別並不等於作好了物件導向中封裝(Encapsulation)的概念,那麼到 底什麼才有封裝的意涵?
封裝物件初始流程
封裝物件操作流程
封裝物件內部資料
類別語法細節
討論過物件導向中封裝的通用概念,以及如何用 Java 語法實現,接下來要討論 Java 的特定語法細節。
public 權限修飾
關於建構式
重載
使用 this
static 類別成員
不定長度引數
內部類別
傳值呼叫
繼承與多型
並非為了避免重複定義實作就使用繼承。
繼承共同實作
多型與 is-a 關係
重新定義實作
抽象方法、抽象類別
繼承語法細節
結合 Java 的特性,繼承還有許多細節必須明瞭。
protected 成員
重新定義的細節
再看建構式
再看 final 關鍵字
java.lang.Object
再看抽象類別
介面與多型
什麼情況叫濫用繼承?介面代表的又是什麼?
介面定義行為
行為的多型
解決需求變化
介面語法細節
結合 Java 的特性,介面還有一些細節必須明瞭。
介面的預設
匿名內部類別
例外處理
程式中總有些意想不到的狀況所引發的錯誤。
語法與繼承架構
只要你能捕捉包裝錯誤的物件,就可以針對該錯誤作一些處理。
使用 try、catch
例外繼承架構
要抓還是要拋?
貼心還是造成麻煩?
認識堆疊追蹤
關於 assert
例外與資源管理
若因錯誤而拋出例外,你的設計是否還能正確地關閉資源呢?
使用 finally
自動嘗試關閉資源
java.lang.AutoCloseable
泛型、列舉、標註
就是介紹泛型、列舉、標註 …
自訂泛型
泛型定義可以相當複雜,用與不用有所取捨。
定義與使用泛型
靜態方法上的泛型
泛型的 extends
泛型的 super
自訂列舉
用列舉型態取代列舉常數。
使用 enum 列舉常數
瞭解 java.lang.Enum
進階 enum 運用
關於標註
對程式碼加些標註,給人看也給機器讀。
常用標準標註
自訂標註型態
讀取標註資訊
Lambda
新的語法、新的典範、新的能力與更重的責任。
Lambda 語法
有關 Lambda 前世今生,可參考 Java Lambda Tutorial,以下只從 Java 看 Lambda。
匿名類別與 Lambda
Lambda 表示式與函式介面
this 與 final
方法與建構式參考
Collection 與 Lambda
為了支援 Lambda,Collection 做了增強,因而你得先認識 Collection。
認識 Collection 架構
具有索引的 List
內容不重複的 Set
支援佇列操作的 Queue
Iterable 與 Iterator
介面預設方法
Comparable 與 Comparator
Functional API
源於函數式的概念,終於走進命令式的 Java。
使用 Optional 取代 null
Consumer、Function、Predicate 與 Supplier
使用 Stream 進行管線操作
Stream 的 reduce 與 collect
Optional 與 Stream 的 flatMap
Stream 與平行化
JDK9
淺談 Java 模組平臺系統
JDK9 總於可以拼圖了…XD
JVM 與 module-path
編 譯器與 module-path
編 譯器與 module-source-path
不可變的 Collection 與 Map
變不變有關係嗎?
淺談不可變特性
Collections 的 unmodifiableXXX() 方法
List、Set、Map 的 of() 方法
再談堆疊追蹤
臭蟲追追追….
取得 StackTraceElement
JDK9 的 Stack-Walking API
深入模組化
真的要模組化了嗎?啊啊啊…..XD
具名模組、未具名模組
顯式模組、自動模組
一般模組、開放模組(模組與反射)
模組與 ServiceLoader
PYTHOM
起步走
從一些簡單的語法與型態開始,了解 Python 內建特性,這已經足夠讓你作不少運算了。
基本環境與互動
指令互動環境可以讓你隨時測試一些小程式,基本輸出入讓你了解如何以程式與使用者 互動並儲存結果。
指令互動環境
簡介模組
基本輸入輸出
內建型態與操作
常用的物件都是語法內建,語法簡潔且功能豐富。
數值型態
字串型態
字串格式化
串列
集合
字典
Tuple
變數、運算子與物件
Python 是動態語言,所有資料都是物件。
變數
運算子
物件與記憶體管理
陳述句
基本的流程語法不多,但可以作的事很多。
if 陳述句
for 與 while 陳述句
for 包含式(Comprehension)
try、raise 陳述句
函式、類別與模組
封裝演算、定義物件行為、組織程式元件。
函式
def 是陳述句,函式是物件。
def 陳述句
lambda 運算式
變數範圍
yield 產生器
類別
是物件的共同定義,也是個名稱空間。
定義類別
靜態方法、類別方法
特性名稱空間
特殊方法名稱
建構、初始與消滅
繼承
抽象類別
物件相等性
模組
是個檔案,也是個功能元件。
匯入模組
import、import as、from import
匯入套件
模組名稱空間
進階議題
一些知道會更好的東西。
例外
凡事有例外,有些是對的,有些是錯的,好好處理就是。
再看 try、raise
使用 assert
使用 with as
自訂例外
特性控制
物件上的特性不受控制嗎?其實你可以的。。XD
property() 函式
描述器
__slots__
__getattribute__()、__getattr__()、 __setattr__()、__delattr__()
修飾器
在不改變其它程式的前題下,增加程式的功能。
函式修飾器
類別修飾器
方法修飾器
Meta class
在建立 type 實例之前,你可以作一些有的沒的。。XD
type 類別
定義 meta class
再看抽象類別
參考資料
The Python Tutorial
Dive into Python3
Python 3 Primer, Part 1: What’s new
Python 3 Primer, Part 2: Advanced topics
Style Guide for Python Code
Ruby
起步走
從一些簡單的語法與型態開始,了解 Ruby 內建特性,這已經足夠讓你作不少運算了。
基本指令與觀念
指令互動環境可隨時測試小程式,基本輸出入可了解如何與程式互 動並儲存結果。
irb 與 ruby 指令
load 與 require
基本輸入輸出
內建型態與操作
常用的物件為語法內建,初學者面對編碼可別混亂。
數值型態
字串型態
關於編碼
符號型態
陣列型態
雜湊型態
範圍型態
變數、操作與物件
所 有資料都是物件,+、-、*、/都是方法,訊息觀念為 Ruby 特色。
變數
操作方法
淺談物件、訊息與方法
流程控制
Ruby 擁有彈性的流程語法,特有的區塊觀念。
if 與 unless
while、until、loop 與 for
case…when…else
begin…rescue…ensure
方法、類別與模組
封裝演算、定義物件行為、組織程式元件。
方法
def 定義方法,可接收引數與程式區塊。
def 定義方法
迭代器與程式區塊
變數範圍
類別
是物件的共同定義,單例方法其實也有個匿名單例類別。
定義類別
特殊方法定義
單例方法、實例方法、類別方法
類別變數
關於 self
建構、初始與消滅
使用繼承
抽象類別與介面
物件相等性
模組
可抽離共通的功能實作,類別可動態地含括(include)模 組功能。
定義模組
堆疊擴充
再看變數範圍
再看 self
方法查找順序
進階議題
一些知道會更好的東西。
類別
類別是 Class 實例,Class 本身是類別,Object 上頭還有 BasicObject。
關於 Class
匿名單例類別
BasicObject
檢視物件
可執行物件
程式區塊不是 Proc,lambda 是 Proc 實例,必要時可將方法包裝為 Method 實例。
程式區塊與 Proc
使用 lambda
取得 Method
方法
還有一些方便的方法。
inherited、 included、extended 方法
*_missing、*method_added 方法
*eval 方法
參考資料
The Philosophy of Ruby
Ruby 1.9: It works!
Ruby Styleguide
RubyGems Guides
Rails
起步走
自動化很方便,但底層細節更值得研究。
基礎觀念
從安裝到快速建立 CRUD,大致掌握 Rails 整體概念。
安裝 Rails
MVC 與 Rails
基本路由
基本 CRUD 程式
RESTful 與 Rails
關於編碼
基本請求、回應
處理請求與回應,是 Web 程式服務的開端。
params 與 request
讀取請求本體
render 與 redirect_to
respond_to 與 respond_with
head、headers 與 response
send_data 與 send_file
會話管理
HTTP 是無狀態協定,Web 程式記不得的資訊,你要主動告知。
隱藏欄位
Cookie
使用 session
session 原理
使用 flash
使用過濾器
關於畫面
回應頁面與資產的管理方式很重要。
樣版(Template)
版型(Layout)
輔助方法(Helper)
資產(Assets)
關於 ActiveRecord
Active Record 模式簡化了複雜度,內建的驗證機制很方便。
ActiveRecord 基礎
資料庫遷移
資料驗證
回呼與觀察者
進階
功能很多作個開頭,更多細節參考官方文件。
環境設定
進一步瞭解應用程式環境,雖是麻煩但總是必要。
專案環境
觀摩 Scaffold
RESTful 路由
簡介 plugins
簡介 Bundler
關於回應
要讓使用者看到想要的回應,總是有各種方式。
結合 Ajax
使用 ActionMailer
簡介 i18n
ORM 設定
無論如何,看到ORM還是很頭痛。
一對一關聯
一對多關聯
多對多關聯
多型關聯
單表繼承映射
測試
為了走更遠的路。
認識 Rails 測試
模型測試
控制器測試
頁面流程測試
郵件測試
參考資料
Ruby on Rails 實戰聖經
Rails 初上手指南
Ruby on Rails Guides (v3.1.3)
Ruby on Rails Documentation
Deploying Ruby on Rails is easy
常見程式演算
河內塔
費式數列
巴斯卡三角形
三色旗
老鼠走迷官(一)
老鼠走迷官(二)
騎士走棋盤
八個皇后
八枚銀幣
生命遊戲
字串核對
背包問題(Knapsack Problem)
雙色、三色河內塔
蒙地卡羅法求 PI
Eratosthenes 篩選求質數
超長整數運算(大數運算)
長 PI
最大公因數、最小公倍數、因數分解
完美數
阿姆斯壯數
最大訪客數
中序式轉後序式(前序式)
後序式的運算
洗撲克牌(亂數排列)
Craps 賭博遊戲
約瑟夫問題(Josephus Problem)
排列組合
格雷碼(Gray Code)
產生可能的清單
產生可能的清單(字典順序)
m 元素清單的 n 元素子清單
數字拆解
得分排行
選擇、插入、氣泡排序
Shell 排序法 – 改良的插入排序
Shaker 排序法 – 改良的氣泡排序
Heap 排序法 – 改良的選擇排序
快速排序法(一)
快速排序法(二)
快速排序法(三)
合併排序法
基數排序法
循序搜尋法(使用衛兵)
二分搜尋法(搜尋原則的代表)
插補搜尋法
費氏搜尋法
稀疏矩陣
多維矩陣轉一維矩陣
上三角、下三角、對稱矩陣
奇數魔方陣
4N 魔方陣
2(2N+1) 魔方陣
自產生程式(Quine)
Y Combinator
手動迷宮
簡易自動迷宮
隨機迷宮
你的程式夠 「亂」嗎?
遞迴、碎形與數學
來點不同的河內塔
電腦圖學入門
二維座標系
繪圖座標系
基本的二維座標轉換
太空船座標旋轉
三維座標系
創造物體的遠近感(透視)
三維直角座標之繞軸旋轉
齊次座標
四元數與旋轉
向量運算
函式圖形繪製
頂點索引陣列
無索引頂點陣列
正多面體頂點
水晶球頂點
旋轉體、錐狀體、柱狀體頂點
畫家深度排序
平面法線判定法
曲面法線判定法
最大最小法
Z Buffer法
色彩簡介
色譜簡介
表面的受光
二維海龜繪圖法
三維海龜繪圖法
科赫曲線
樹木曲線
蕨葉曲線
雪花曲線
龍形曲線
希爾伯特曲線
十字繡曲線
樹林與倒影
動畫簡介
動畫程式骨架
雙緩衝區繪圖
畫框檔案管理
捲軸背景
平面地圖
斜角地圖
迷宮(斜角地圖實例)
煙火
煙粒子
煙火與煙
3 thoughts on “OPENHOME 程式設計教學網站(砍站) 目錄索引”
QT 電子書
GO語言
C/C++
GTK
QT
JAVA
PYTHOM
Ruby
Rails
電子書 網頁版 HTML
GO語言
C/C++
GTK
QT
JAVA
PYTHOM
Ruby
Rails
電子書 網頁版 HTML 入門 教學