以下紀錄我常用的程式碼片段
除錯類
請看這篇文章
本篇紀錄在 Ubuntu 下 2 種安裝 Google gflags 的方法,一種為 apt 安裝,第二種為下載原始碼編譯安裝
使用環境:
Ubuntu 16.04
https://github.com/gflags/gflags - commandline flags module for C++
Ubuntu 16.04 的 apt 會安裝 gflags 2.1.21
sudo apt-get install libgflags-dev
可以用 apt-cache search gflags
搜尋到
1 | git clone https://github.com/gflags/gflags |
相關文章
Ubuntu 安裝 protobuf
Ubuntu 安裝 glog
Ubuntu 安裝 libevent
Ubuntu 編譯安裝 GLFW
本篇紀錄 Ubuntu 下 2種安裝 glog 的方法,第一種為使用 apt 安裝,第二種為下載原始碼編譯安裝,
glog 全名為 Google Logging Library,
Github: https://github.com/google/glog - library that implements application-level logging.
使用環境:
Ubuntu 16.04
1 | sudo apt-get install libgoogle-glog-dev |
可以用 apt-cache search glog
搜尋到
1 | git clone https://github.com/google/glog |
先泡杯咖啡, 再開啟 glog/doc/glog.html
慢慢享用~
相關文章
Ubuntu 安裝 protobuf
Ubuntu 安裝 gflags
Ubuntu 安裝 libevent
Ubuntu 編譯安裝 GLFW
本篇紀錄在 Ubuntu 2種安裝 libevent 函式庫的方法, 第一種為使用 apt 安裝,另一種為下載原始碼編譯安裝,
libevent 是個非同步事件函式庫 Asynchronous event notification library.
使用環境:
Ubuntu 16.04
Ubuntu 16.04 的 apt 會安裝 libevent 2.0.211
sudo apt-get install libevent-dev
可以用 apt-cache search libevent-dev
搜尋到
1 | git clone https://github.com/libevent/libevent |
相關文章
Ubuntu 安裝 protobuf
Ubuntu 安裝 glog
Ubuntu 安裝 gflags
Ubuntu 編譯安裝 GLFW
本篇紀錄在 Ubuntu 下 2 種安裝 protobuf 的方法,第一種為使用 apt 安裝,第二種為下載原始碼編譯安裝,
Github: https://github.com/google/protobuf - protocol buffers C++ library.
使用環境:
Ubuntu 16.04
1 | sudo apt-get install libprotobuf-dev # 2.6.1-1.3 |
可以用 apt-cache search protobuf
搜尋到
1 | # git clone https://github.com/google/protobuf |
安裝,1
sudo make install
重新載入動態連結,1
sudo ldconfig -v
安裝 protoc 編譯器1
sudo apt install protobuf-compiler
protoc 編譯器 C++ 使用教學1
protoc --cpp_out=. *.proto
protoc 編譯器 Java 使用教學1
protoc --java_out=. *.proto
參考
https://yami.io/protobuf/
https://www.ibm.com/developerworks/cn/linux/l-cn-gpb/
Google開源技術-Protocol Buffers介紹
相關文章
Ubuntu 安裝 glog
Ubuntu 安裝 gflags
Ubuntu 安裝 libevent
Ubuntu 編譯安裝 GLFW
TinyTcp: This is a C++ socket library designed to fast development of socket related functionality.
參考
codeproject Multi-threaded-Client-Server-Socket-Class
https://github.com/paul999/433.92-Raspberry-Pi/blob/master/libs/socket.h
https://github.com/paul999/433.92-Raspberry-Pi/blob/master/libs/socket.c1
2
3
4
5
6
7
8
9
10
11
12
13struct socket_callback_t {
void (*client_connected_callback)(int);
void (*client_disconnected_callback)(int);
void (*client_data_callback)(int, char*);
};
int start_server(unsigned short port);
int connect_to_server(char *address, unsigned short port);
void socket_close(int i);
void socket_write(int sockfd, const char *msg, ...);
void socket_write_big(int sockfd, const char *msg, ...);
char *socket_read(int sockfd);
char *socket_read_big(int sockfd);
socket_read_big 可以看看
socket_write_big 可以看看
NetLink Sockets C++: chatClient.cc
NetLink Sockets C++: chatServer.cc1
2
3OnAccept onAccept;
OnRead onRead;
OnDisconnect onDisconnect;
The C++ Network Library Project
(A collection of open-source libraries for high level network programming.)
https://github.com/cpp-netlib/cpp-netlib
https://github.com/libimobiledevice/libusbmuxd/blob/master/common/socket.h
https://github.com/libimobiledevice/libusbmuxd/blob/master/common/socket.c
https://github.com/libimobiledevice/libusbmuxd/blob/master/common/collection.h
https://github.com/libimobiledevice/libusbmuxd/blob/master/common/collection.c
https://github.com/libimobiledevice/libusbmuxd/blob/master/src/libusbmuxd.c
https://github.com/libimobiledevice/usbmuxd/blob/master/src/main.c
Beej’s Guide to Network Programming 正體中文版: 06-Client-Server 基礎
boost asio examples
C++11 implementation of Socket.IO client
關閉Sockets不一樣 stackoverflow cross-platform-sockets
tiny cross-platform socket API library
本篇紀錄 OpenMediaVault (omv) 忘記密碼時怎麼辦?如果想不起來的話要怎麼重置密碼
這是 omv (OpenMediaVault) 網頁的預設密碼 default password1
2User: admin
Password: openmediavault
這是 OpenMediaVault ssh 的預設登入密碼1
2User: root
Password: <set during installation>
使用 OpenMediaVault 一陣子後發現忘記密碼,有沒有方式可以重置密碼呢?
以 root 身份登入 SSH Server,並執行 omv-firstaid
選擇 3 Change WebGUI administrator password
參考
https://forum.openmediavault.org/index.php/Thread/7784-Default-Login/
忘了 OpenMediaVault Web 管理介面密碼
GLFW 是一個提供基本輸入輸出支援的函式庫,它提供的功能像鍵盤與滑鼠的輸入、建立一個視窗等,並且也可以跨平台使用。
這個庫的功能和 GLUT 相似。這兩個庫之間的區別之一就在於 GLFW 更加先進而且有活力,但是 GLUT 則顯得比較老舊,而且它的開發維護現在也基本上停滯了。
github: https://github.com/glfw/glfw
GLM 的 M 指的就是 mathematic 的意思,顧名思義,它是一個幫助我們進行數學運算的函式庫。由於 openGL 可能會用到許多 3D 空間的運算,這類運算大多是向量或矩陣之間的數學運算,一般的程式碼寫起來可能有意點麻煩。
GLM is a header-only math library designed for OpenGL programmers. It provides functions and classes for dealing with vectors, matrices, quaternions, and related operations.
因此我們使用 glm 這個不錯的輔助工具,讓中間運算的過程更簡單易懂一點。舉例而言,像轉移矩陣或旋轉矩陣、向量的加減乘除等都可利用 glm 以更簡單的方式完成
github: https://github.com/g-truc/glm
GLEW 可以算是是 openGL 的擴充,由於許多作業系統對 openGL 的支援可能都不是最新的版本,在這種情況下,GLEW 提供了我們最方便的方法來調用最新的 openGL 函式
今天要來介紹如何使用 OpenGL 來讀取 3D 模型檔(.obj),一般來說,3D 繪圖軟體都會有很多種輸出的模型檔的檔案格式,
有的是給 3D 列印的列印格式,有的是跨繪圖軟體的通用格式,副檔名為.obj是其中一種格式,
下面文章將學到怎麼讀取 obj 檔。
參考
opengl-tutorial: tutorial-7-model-loading
(C++\openGL)讀取.obj模型檔
本篇紀錄在 Ubuntu 下 GLFW 編譯安裝過程,
目前 GLFW 最新穩定版為 3.2.1. (3.3.0 還在開發中 93%)
編譯環境:
Ubuntu 16.04
glfw: 3.2.1
以下為編譯安裝過程,1
2
3
4mkdir build && cd build
cmake ..
make
sudo make install
相關文章
Ubuntu 安裝 protobuf
Ubuntu 安裝 glog
Ubuntu 安裝 gflags
Ubuntu 安裝 libevent