顯示具有 Programming 標籤的文章。 顯示所有文章
顯示具有 Programming 標籤的文章。 顯示所有文章

GStreamer 入門使用教學(一):播放網路影片串流(Streaming)Hello World 程式

這是 GStreamer 的入門使用教學,播放網路影片串流的 Hello World 程式。


GStreamer 是 GNOME 桌面環境之下用來建立多媒體串流應用的架構(framework),可以簡化影音相關應用程式的開發流程,支援各種常用的多媒體影音格式,如 mp3、ogg、mpeg1、mpeg2、avi、quicktime 等。

C++11 Lambda Expression 語法教學與範例

C++11 標準中所新增的 lambda expression 語法,可以讓函數的定義與使用更加有彈性,程式碼看起來也更簡潔。


C++11 的標準中加入了一個新的 lambda expression 語法,如果您有一陣子沒有注意最新的 C++ 標準,看到這樣的寫法可能會感覺很奇怪,以下我們將介紹 lambda expression 的使用方式與時機,並提供幾個範例作為參考。

Lambda expression 是一種匿名函數的表示方式,它可以讓程式設計師將函數的內容直接以 inline 的方式寫在一般的程式碼之中,省去另外定義函數的麻煩,使用時機跟 functor 與 function pointer 類似,一般的狀況都是使用 lambda expression 定義一個匿名的函數,然後再將此函數當作另外一個函數的傳入參數來使用。

C++ 智慧型指標(Smart Pointer):自動管理與回收記憶體

智慧型指標是 C++ 中一個常用的設計模式,它可以讓 C++ 的程式自行管理記憶體的配置與回收,避免記憶體洩漏等問題。


在 C/C++ 語言中,我們常常會使用指標(pointer)來配置或存取記憶體,一個指標變數儲存了記憶體的位址,而程式設計師就可以運用這個記憶體位址來做出各種變化,是一個非常好用的型別,甚至在某些複雜的應用上,如果沒有指標這項功能的話,可能會讓程式設計師不知道如何開發程式。

雖然指標對於 C/C++ 程式設計師而言非常重要,不過它難以管理的問題,也常常讓程式開發者頭痛,如果記憶體沒有配置得當,很容易造成懸置指標(dangling pointer)、空指標例外(null pointer exception)與記憶體洩漏(memory leak)等問題,嚴重的話會讓直接讓整個程式當掉、無法執行,而且記憶體配置與指標的問題在除錯上比較麻煩,編譯器並不會因為存取不對的記憶體位址而發出警告,必須要靠程式設計師自己小心的來處理。

Arduino 更改 IIC(I2C)Baud Rate 為 400 KHz,增加傳輸速率

這裡介紹如何更改 Arduino 內建的 Wire 函式庫,提高 I2C 傳輸協定的 baud rate 到 400 KHz,增加資料傳輸的速度。

示波器

一般市面上的感測器(sensors)中,如果傳輸的資料量不大的話,大概都會使用 I2C 這種傳輸協定,而 Arduino 內建的 Wire 函式庫本身就有支援 I2C,這種傳輸協定的特色就是接線簡單,它只需要串列資料(SDA)及串列時脈(SCL)兩條線就可以進行資料的傳輸,再加上供應電源的 VCC 與 GND,總共只需要接四條線,不過缺點就是資料傳輸的速率比較慢一些。

Arduino 使用 1602 IIC(I2C) LCD 點陣液晶模組

這裡介紹如何在 Arduino 上面使用 Hitachi HD44780U 1602 LCD 點陣液晶模組,顯示簡單的文字。


這是一片 Hitachi HD44780U 1602 LCD 點陣液晶模組,這個模組很便宜,拍賣網站上買的話,不用一百元就可以買到。

適合程式設計師編寫程式的免費等寬字型(Monospaced Font)整理

這裡整理了一些容易閱讀的等寬英文字型,適合程式設計師在編寫程式時使用。


一般程式設計師在撰寫程式時,通常都會需要閱讀大量的程式碼,為自己的開發環境選擇一個適合閱讀的字型,是一件很重要的事情。

Linux 標準串流(Standard Streams)的緩衝區(Buffer)問題

這裡討論在 Linux 系統上標準串流(standard streams)的緩衝區(buffering)時常容易會產生的一些問題。

首先請看下面這個使用 pipeline 的指令:
command1 | command2
在這裡 shell 會 fork 兩個 processes,然後利用 pipe 連起來,整個架構中包含了三個緩衝區(buffer),就像這樣:


其中的 kernel buffer 會由 shell 所呼叫的 pipe system call 來建立,這個 buffer 的大小我們並沒有辦法直接控制,但基本上也不用擔心,因為 kernel 會在接到資料之後,立刻將資料送出去,通常效率都不是問題。(參考資料:circular pipes

wxHexEditor -- 跨平台的十六進位編輯器

wxHexEditor 是一個開放原始碼且跨平台的十六進位編輯器,除了用來編輯檔案之外,也可以直接編輯低階的硬碟磁區。

一般如果在開發比較低階的程式時,通常都會需要處理一些二進位檔案,而二進位檔案沒辦法以一般的文字編輯器來編輯,這時候就需要一個十六進位的編輯器了。

這裡我們介紹一個小巧好用的 wxHexEditor,它是以一套跨平台的 GUI 函式庫 wxWidgets 來開發的,所以它支援各種常見的作業系統(如 Windows、Linux 與 Mac OS 等)。

下面這個是在 Linux 系統中的使用畫面。

wxHexEditor 十六進位編輯器

使用 R 分析 Wikipedia 的搜尋情形

Wikipedia 是一個全世界人都在使用的百科全書,我們可以從 Wikipedia 上面各個主題的使用狀況來分析出一些有趣的結果,例如軟體的普及程度等,另外也可以用來作為判斷軟體是否具有發展性的一個參考。


這裡我們針對矩陣計算軟體、作業系統等議題,分別使用 R 來抓取 Wikipedia 上面的使用資訊,並畫出圖表來分析,看看這些領域目前的情況。