Ubuntu 2 種安裝 Google gflags 的方法

本篇紀錄在 Ubuntu 下 2 種安裝 Google gflags 的方法,一種為 apt 安裝,第二種為下載原始碼編譯安裝

使用環境:
Ubuntu 16.04

https://github.com/gflags/gflags - commandline flags module for C++

方法1. 使用 distribution package 套件安裝

Ubuntu 16.04 的 apt 會安裝 gflags 2.1.2

1
sudo apt-get install libgflags-dev

可以用 apt-cache search gflags 搜尋到

方法2. 下載原始碼編譯與安裝

1
2
3
4
5
6
git clone https://github.com/gflags/gflags
cd gflags
mkdir -p build && cd build
cmake ..
make -j4
sudo make install

相關文章
Ubuntu 安裝 protobuf
Ubuntu 安裝 glog
Ubuntu 安裝 libevent
Ubuntu 編譯安裝 GLFW

Ubuntu 2 種安裝 glog 的方法

本篇紀錄 Ubuntu 下 2種安裝 glog 的方法,第一種為使用 apt 安裝,第二種為下載原始碼編譯安裝,
glog 全名為 Google Logging Library,
Github: https://github.com/google/glog - library that implements application-level logging.

使用環境:
Ubuntu 16.04

方法1. 使用 distribution package 安裝

1
sudo apt-get install libgoogle-glog-dev

可以用 apt-cache search glog 搜尋到

方法2. 下載原始碼編譯與安裝

1
2
3
git clone https://github.com/google/glog
cd glog
./autogen.sh && ./configure && make && sudo make install

先泡杯咖啡, 再開啟 glog/doc/glog.html 慢慢享用~

相關文章
Ubuntu 安裝 protobuf
Ubuntu 安裝 gflags
Ubuntu 安裝 libevent
Ubuntu 編譯安裝 GLFW

Ubuntu 2 種安裝 libevent 的方法

本篇紀錄在 Ubuntu 2種安裝 libevent 函式庫的方法, 第一種為使用 apt 安裝,另一種為下載原始碼編譯安裝,

libevent 是個非同步事件函式庫 Asynchronous event notification library.

使用環境:
Ubuntu 16.04

方法1. 使用 distribution package 套件安裝

Ubuntu 16.04 的 apt 會安裝 libevent 2.0.21

1
sudo apt-get install libevent-dev

可以用 apt-cache search libevent-dev 搜尋到

方法2. 下載原始碼編譯與安裝

1
2
3
4
5
git clone https://github.com/libevent/libevent
cd libevent
mkdir -p build && cd build
cmake ..
make -j4

相關文章
Ubuntu 安裝 protobuf
Ubuntu 安裝 glog
Ubuntu 安裝 gflags
Ubuntu 編譯安裝 GLFW

Ubuntu 2 種安裝 protobuf 的方法

本篇紀錄在 Ubuntu 下 2 種安裝 protobuf 的方法,第一種為使用 apt 安裝,第二種為下載原始碼編譯安裝,

Github: https://github.com/google/protobuf - protocol buffers C++ library.

使用環境:
Ubuntu 16.04

安裝方法1. 使用 distribution package 安裝

1
sudo apt-get install libprotobuf-dev # 2.6.1-1.3

可以用 apt-cache search protobuf 搜尋到

安裝方法2. 下載原始碼編譯與安裝

1
2
3
4
5
6
# git clone https://github.com/google/protobuf
git clone https://github.com/google/protobuf --branch 3.5.1.1 # 不使用最新的, 使用穩定版
cd protobuf
./autogen.sh
./configure
make check

安裝,

1
sudo make install

重新載入動態連結,

1
sudo ldconfig -v

使用 Google protobuf 的方法

安裝 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

multiple platforms socket c++

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.c

1
2
3
4
5
6
7
8
9
10
11
12
13
struct 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.cc

1
2
3
OnAccept 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


libusbmuxd (C 版本)

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 忘記密碼

本篇紀錄 OpenMediaVault (omv) 忘記密碼時怎麼辦?如果想不起來的話要怎麼重置密碼

WebGUI 預設密碼

這是 omv (OpenMediaVault) 網頁的預設密碼 default password

1
2
User: admin
Password: openmediavault

Client (SSH, console)

這是 OpenMediaVault ssh 的預設登入密碼

1
2
User: root
Password: <set during installation>

Q. 忘記 OpenMediaVault Web 管理介面密碼

使用 OpenMediaVault 一陣子後發現忘記密碼,有沒有方式可以重置密碼呢?

以 root 身份登入 SSH Server,並執行 omv-firstaid
選擇 3 Change WebGUI administrator password

參考
https://forum.openmediavault.org/index.php/Thread/7784-Default-Login/
忘了 OpenMediaVault Web 管理介面密碼

glfw glew glm glut 傻傻分不清楚

什麼是 GLFW

GLFW 是一個提供基本輸入輸出支援的函式庫,它提供的功能像鍵盤與滑鼠的輸入、建立一個視窗等,並且也可以跨平台使用。

這個庫的功能和 GLUT 相似。這兩個庫之間的區別之一就在於 GLFW 更加先進而且有活力,但是 GLUT 則顯得比較老舊,而且它的開發維護現在也基本上停滯了。

github: https://github.com/glfw/glfw

什麼是 GLM

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

GLEW 可以算是是 openGL 的擴充,由於許多作業系統對 openGL 的支援可能都不是最新的版本,在這種情況下,GLEW 提供了我們最方便的方法來調用最新的 openGL 函式

github: https://github.com/nigels-com/glew

參考
http://www.cis.gvsu.edu/~dulimarh/Okto/cis367/#forlinux

OpenGL 讀取 .obj 3D 模型檔

今天要來介紹如何使用 OpenGL 來讀取 3D 模型檔(.obj),一般來說,3D 繪圖軟體都會有很多種輸出的模型檔的檔案格式,
有的是給 3D 列印的列印格式,有的是跨繪圖軟體的通用格式,副檔名為.obj是其中一種格式,
下面文章將學到怎麼讀取 obj 檔。

參考
opengl-tutorial: tutorial-7-model-loading
(C++\openGL)讀取.obj模型檔