2016年6月29日 星期三

[IoT] MQTT

先推:
https://learn.adafruit.com/mqtt-adafruit-io-and-you


Bluetooth MQTT
http://www.instructables.com/id/IoT-your-Arduino-using-bluetooth-and-andriod-smart/

[Vim] taglist速記

下載:
http://vim.sourceforge.net/scripts/script.php?script_id=273

安裝:
$ mkdir ~/.vim
$ cd ~/.vim
 $ unzip taglist.zip

啟用:
$ vim ~/.vimrc
filetype plugin on

使用:
:TlistOpen

加進 .vimrc (按 F12 開啟)
nnoremap :TlistOpen 

幾個用法: 
s                    更改排序方式,在按名字排序和按出現順序排序間切換 
x                    taglist窗口放大和縮小,方便查看較長的tag  
<Space>         顯示tag的原型定義

視窗切換: 
1. Control+W followed by W to toggle between open windows and, 
2/ Control+W followed by H/J/K/L to move to the left/bottom/top/right window accordingly. 

2016年6月22日 星期三

[RPi] vchiq

...
The ARM11 CPU communicates with the VideoCore co-processor using a message passing interface (vchiq) which means that the CPU is not able to directly address the audio device hardware buffers and audio samples have to be sent to the device using vchiq messages.
...

reference: mmap support for Raspberry Pi bcm2835 ALSA driver

2016年6月18日 星期六

[Tips] 擷取framebuffer畫面

大部分嵌入式系統都會實做 framebuffer 的驅動程式介面, 如 /dev/fb0

因此要擷取畫面最簡單的方式就是
$ cat /dev/fb0 > fb.raw

再將畫面倒回去
$ sudo cp fb.raw /dev/fb0

但要注意幾點

1. framebuffer 是記憶體 raw data, 因此存檔的結果是一連串的16進位數值, 因此無法使用一般的看圖軟體開啟, 但可以透過 imagemagick 裡的 display 工具顯示(需指定顯示的解析度)
$ display -size 1024x768 rgb:fb.raw


2. 因此還原成一般的 jpg 或是 png 格式需指定 color-depth 和解析度
如果是 24-bit 可以使用 imagemagick 裡的 convert 工具
$ convert -depth 8 -size 640x480 rgb:fb.raw -channel RGB -separate -swap 0,2 -combine fb.png

如果是 16-bit, 可以使用 iraw2png 這支 perl 程式
#!/usr/bin/perl -w
 
$w = shift || 240;
$h = shift || 320;
$pixels = $w * $h;
 
open OUT, "|pnmtopng" or die "Can't pipe pnmtopng: $!\n";
 
printf OUT "P6%d %d\n255\n", $w, $h;
 
while ((read STDIN, $raw, 2) and $pixels--) {
   $short = unpack('S', $raw);
   print OUT pack("C3",
      ($short & 0xf800) >> 8,
      ($short & 0x7e0) >> 3,
      ($short & 0x1f) << 3);
}
 
close OUT;
執行 iraw2png 程式:
$ python iraw2png 640 480 fb.png

之後就可以用 gpicview 之類的軟體開啟 png 檔案了
$ gpicview fb.png

reference:
* Working with Frame Buffers
* How to do a framebuffer screenshot
* Convert raw BGRA framebuffer to RGB png file (有條件限制使用)

2016年6月17日 星期五

[Tips] 好用的nc

nc 是非常強大的網路工具, 而在很多嵌入式系統使用的 busybox 都有內建 nc, 因此在沒有 ftp 或是 scp 等檔案傳輸協定實做時, 就非常方便了

例如, 我要將檔案從裝置端(Android)傳送到主機端(PC), 需要一台接收, 一台傳送

主機端接收
nc -l 1234 > file.tar.gz

裝置端傳送
nc IP_of_PC 1234 < file.tar.gz

reference: Using nc to transfer large file

2016年6月12日 星期日

[Tips] Wordpress Manual Related Posts

每篇文章後面多了 related post 這個感覺比較好, 找了一下自動的不符合我需求, 最後還是使用手動 Manual Related Posts plugin

但是在 Find related posts 一直跑不出來結果, 先是用 firebug 發現 500 internal server error 但是看不出問題所在, 後來查了 apache error log 看到這行 "PHP Fatal error:  Call to undefined method wpdb::esc_like()", 但還是不知道怎麼解決

最後搜尋了其他 plugin, 發現 relevanssi 這支寫了這段
    if (method_exists($wpdb, 'esc_like')) {
        $term = $wpdb->esc_like(esc_sql($term));
    }    
    else {
        // Compatibility for pre-4.0 WordPress
        $term = like_escape(esc_sql($term));
    }    

加上去就會動了欸

2016年6月11日 星期六

[Tips] Tkinter

Tim 的這篇教學寫得挺好的
https://www.evernote.com/shard/s34/sh/acdfea3e-cd78-42c3-a672-49d5ad0ae39b/7e772c64a8d74a1c8afcbd5df6756353

[Tips] 加速你的Wordpress


http://www.sparringmind.com/speed-up-wordpress/

這篇介紹的幾個plugin有些還不錯

比如說 W3 Total Cache , 提供各種 caching 機制, 還有 js 或是 css 的壓縮等

或者是 WP-SmushIt, 號稱可以自動的將圖片縮放, 減少網路的傳輸量

還有透過 Advanced Excerpt 可以不要顯示全文, 讓使用者點進去才載入全部頁面

最後一招是 Lazy Load, 這可以在頁面往下拉以後才顯示圖片, 也是能有效降低網路傳輸量

最後可以用 PageSpeed Insights 檢查可改進的地方, 網頁效能優化是一個需要持續改進的工作阿!