2015年10月12日 星期一
[Raspberry Pi 2] 防止DHCP client修改/etc/resolv.conf
一、簡介
最近碰Raspberry PI 2遇到一個問題,/etc/resolv.conf內總是被修改多了一項nameserver 192.168.0.1,導致DNS service總是有問題。怎麼看都覺得跟dhcp有關係。
就在透過find查詢/etc下檔案內容後,果然發現在/etc/dhcp3/dhclient-enter-hooks.d/與/etc/dhcp/dhclient-enter-hooks.d內的shell script有點嫌疑。
2015年10月1日 星期四
[Linux C] strtok與strtok_r使用教學、程式實作
前言
當我們在使用C語言做字串分割時,大家都知道string.h的library裡面,有很好用的function可以調用,而這function就是strtok或strtok_r。
不知道有沒有人跟我一樣國文造詣實在很差,看了看網路上的文章還是不是很懂在這函式的運作方法…所以我就來看一下Source Code,並寫一個簡易的程式來讓大家理解理解用法吧!
2015年8月18日 星期二
[Linux] 在Linux上終端機如何背景執行程式教學
此篇主要是要講解如何再背景執行程式的方法。
---
簡單介紹
在Linux上,如果直接在終端機下開啟程式,該tty得stdin、stdout與stderr就會被導向至該執行緒上。而且如果該tty關閉,該tty正運行的前景(Foreground)程式也同時會被結束掉。
如果是在一般圖形化的Linux OS可能無所謂,再開一個終端機就好啦~但是如果今天是要運行在只有command line的環境時該怎麼做呢?
2015年8月17日 星期一
[仙境傳說] Linux下執行Openkore遇到Unable to load the file config.txt.問題
基本上,閱讀完上一篇[仙境傳說]在ubuntu上運行OpenkoreTW後,照理說環境就已經建構完成。
但是為什麼有人再打開終端機,嘗試開啟外掛時卻會遇到Unable to load the file config.txt的問題,如下圖:
由於config.txt應該處於 openkore/control資料夾內,如果資料夾內檔案是存在的那又是為什麼找不到呢?
2015年8月8日 星期六
[Linux C] ANSI逃脫碼與printf顏色教學
注意:Windows的console是不支援ANSI逃脫碼,想在Windows的console換色,本篇並不適合。
- ANSI逃脫碼介紹
圖一、CSI標準格式 |
注意:通常n1是填入 \x1b,為什麼呢?因為在ASCII TABLE內0x1B代表的就是escape,也就是所謂的逃脫字元!
圖二、ASCII TABLE - 0x1B |
2015年8月4日 星期二
[Linux C] C語言MD5雜湊運算教學
本篇稍為記錄一下如何使用openssl的library快速的做MD5雜湊運算。
--
首先,要在C語言計算MD5,有一些公開的library可以幫助我們快速計算一些雜湊運算,當然MD5也是被包含在內的。
這邊介紹使用OpenSSL,基本上這個package在各版本的linux上的package list內都找的到。
筆者本次是使用Ubuntu 15.04版本,所以像我就是使用 sudo apt-get install openssl 快速透過package manager安裝。
基本上使用方法很簡單,步驟就是
--
首先,要在C語言計算MD5,有一些公開的library可以幫助我們快速計算一些雜湊運算,當然MD5也是被包含在內的。
這邊介紹使用OpenSSL,基本上這個package在各版本的linux上的package list內都找的到。
筆者本次是使用Ubuntu 15.04版本,所以像我就是使用 sudo apt-get install openssl 快速透過package manager安裝。
基本上使用方法很簡單,步驟就是
[Linux C] C語言檢查檔案是否存在
在C上是有函式可以檢查該process是否有足夠權限存取某個檔案的。
該函式叫做access(const char *pathname, int mode)
來檢單看一下man page上關於access函式的介紹吧!
--
2015年7月10日 星期五
[Linux C] C語言上Modbus RTU CRC16計算教學與實作
一、Modbus CRC-16
Modbus CRC-16是屬於邏輯運算的一種,假設現在有一個串資料是0x01, 0x25,想要運算,其算法如下:
- 步驟一:先將一個16bit(在C中可以使用unsigned short)暫存器設為0xFFFF,這邊先命名該暫存器為crc。
- 步驟二:將crc與資料的1個byte做XOR運算,這邊的舉例第一次就是與0x01做XOR,第二次就是0x25
- 步驟三:接下來,將crc向右位移1個bit,並且最高有效位元(MSB)填0。
- 步驟四:在位移前的crc,若其最低有效位元(LSB)是1,則將位移後的CRC對0xA001做運算。
- 接下來繼續重複步驟3~4,直到做滿8次。
- 步驟五:接下來將Data的下一個byte拿來做步驟二到四,直到全部資料皆運算完為止。
我們來看個圖例吧!下圖是將1個byte的資料:0x01拿來運算的過程。
[Linux C] libwebsocket 隨手筆記
此篇稍為記錄一下在C上面時做websocket時遇到的問題...
---
(a) callback function
return 0;
之前不小心return ;造成websocket的connection都無法建立
---
(b)libwebsocket_write
想要將資料寫出去必須使用libwebsocket_write的函式回傳
下面來個簡單的範例!
char *text = "Hello World!"; int len = strlen (text) + 1; unsigned char *buf = malloc(LWS_SEND_BUFFER_PRE_PADDING + len + LWS_SEND_BUFFER_POST_PADDING); /* copy string including terminating NUL */ memcpy (buf + LWS_SEND_BUFFER_PRE_PADDING, text, len ); libwebsocket_write(wsi, buf + LWS_SEND_BUFFER_PRE_PADDING, len, LWS_WRITE_TEXT); free(buf);
2015年7月9日 星期四
[Linux] libudev抓取裝置描述
本篇是打算記錄一下使用libudev抓取device某些描述的方法。
例如:VID/PID本身是兩串數字,但是在/usr/share/misc/usb.ids這個文件裡面是有對應的字串的。
題外話..VID跟PID可以再http://www.linux-usb.org/usb.ids找到其對應
所以有需要的時候可以從上述網址更新一下你的usb.ids
--
我們來看一下簡單的範例,透過linux指令lsusb -v可以看到很多裝置的資訊。
2015年7月7日 星期二
[Linux C] C語言程式中,在BSON裡加入JSON
JSON是JavaScript Object Notation的縮寫,而BSON內的成員也是跟JSON類似,不過是擺二進位(Binary)
而BSON是 MongoDB使用的格式,怎麼使用JSON跟BSON這就不贅述了!
想必再搜尋這樣功能時的讀者應該都已經清楚兩者格式
----
測試環境
作業系統:Ubuntu - 15.04 x64
Library: libjson-c & libmongoc
2015年6月29日 星期一
[Raspberry Pi] 在Raspberry Pi 上安裝 MongoDB
MongoDB是最近一個很夯的NoSQL資料庫系統,而其內部儲存資料是使用BSON。
BSON跟JSON是完全相同的格式,只是所有的Name&Value是以二進位為儲存。
MongoDB的介紹就等有空一點再打了…
----
2015年6月26日 星期五
[Linux]在Raspberry Pi上安裝Node.js
本篇要記錄的是在Raspberry pi如何安裝node.js的runtime
其實非常非常簡單的唷!
首先,將apt.adafruit.com將入/etc/apt/sources.list裡面。可以簡單使用下列指令
curl -sLS https://apt.adafruit.com/add | sudo bash
接著,使用apt-get指令即可:
sudo apt-get install node
安裝完成後輸入「node -v」應該就可以看到node.js回饋的版本
pi@raspberrypi ~$ node -v v0.12.0
2015年6月22日 星期一
[仙境傳說]在ubuntu上運行OpenkoreTW教學
注意:Openkore就是RO的外掛,不喜歡外掛者就不用花費精力往下讀囉。
因為好奇,所以想在Ubuntu的作業系統上執行看看openkore,成功之後想說紀錄一下。
我執行的環境是:
(1)作業系統: Ubuntu 15.04 - 64位元
(2)虛擬機器: Vmware player
----本文開始----
因為好奇,所以想在Ubuntu的作業系統上執行看看openkore,成功之後想說紀錄一下。
我執行的環境是:
(1)作業系統: Ubuntu 15.04 - 64位元
(2)虛擬機器: Vmware player
2015年5月11日 星期一
[Linux] 編譯Openwrt for Beaglebone Black Rev B.
首先,我們先查詢openwrt的wiki發現下圖:
可以發現我們要選用Trunk版本的Openwrt而不是barrier breaker版本。
接下來編譯好menuconfig且make之後,將產生的rootfs丟進SD卡裡面,並插入Beaglebone上並開機。
透過COM port可以發現下圖情況:
2015年4月14日 星期二
[Linux] 安裝Udev-173 for libudev.so.0.12
2015/04/14
因為有在openwrt上使用libudev的需要,而libudev.so.1版被包在systemd裡面,若要燒入systemd又需要燒錄eglibc,使得kernel容量過大。Openwrt上內建的udev與libudev版本是udev173與libudev.so.0.12,目前使用的方法就是將開發環境的版本也將udev與libudev降版測試。
-------------------------------------------------------------------------------------------------------------------------
訂閱:
文章 (Atom)