1. kdialog with crontab

    環境是用 KDE plasma 5, script 範例:

    #!/bin/sh
    
    export DISPLAY=:0
    export QT_PLUGIN_PATH=/usr/lib/plugins:/usr/lib/qt5/plugins:/usr/lib/qt5/plugins:/lib/kde5/plugins/
    export KDE_FULL_SESSION=true
    
    # Fix warning
    export XDG_RUNTIME_DIR=/run/user/1000
    
    kdialog --msnbox "hello" --title "title"
    

    因為 crontab 不知道這個 UI 顯示是要顯示在哪個螢幕上,所以要指定 DISPLAYKDE_FULL_SESSION ...


  2. Linux Single Instance Lock

    要實作 single instance 有幾種方式:

    • file lock
    • inet socket lock
    • sem_open

    參照一些 daemon 的作法,感覺 file lock 較常見。inet socket bind 的作法有點麻煩,因爲還要找個 port 來 bind,所以不考慮,unix socket 大略等同於 file lock 的作法,不過步驟太煩雜,所以也不考慮,semaphore(sem_open)的作法看似比較好,因為 lock 是在 kernel 裡做管理,不用另外建 file,不過還是有一些問題在: How do I recover a ...


  3. Raspberry Pi Cookbook for Python Programmers

    Raspberry Pi Cookbook for Python Programmers

    很久沒有看電子書了,最近剛好拿到幾本來看,這本是其中的一本,大致就是在講 Python 在 Raspberry pi 上如何使用和如何操作 Raspberry 的一些硬體功能,像是 GPIO 和 Camera 之類的。其實這本書跟我想像的有點不太一樣,它比較偏向硬體操作,大部分的章節都是如此,反而比較沒有偏向單軟體應用的,所以像我這種硬體不太行的就有點吃癟了QQ。另外要注意的是這本書用的是 Python3,不是 Python2,然後 Raspberry Pi 的作業系統應該是 Debian based 的,這本書裏面其實需要裝蠻多套件的,常看到一堆 apt-get,所以如果像是用 Arch 之類的話就要注意,可能對應的套件也還是會有,不過就需要找一下這樣。

    書裏面大致分幾個部分:

    1. 如何使用 Raspberry Pi。對於第一次摸這塊板子的人有這個章節真的會比較更容易上手,不過跟 Python 其實關係就不大了,是說這部分內容還佔滿多的,我是覺得可以不需要那麼多XD ...

  4. Raspberry-pi Archlinux wifi ap

    弄了兩天,網路上方法很多,不過用的無線網卡種類繁多,然後 OS 有些是 Arch,有些是 Debian,然後裝的套件也會有些許不同,所以整個實驗的 branch 非常多啊~~~,弄了好久,最後終於成功了QQ。不過因為弄得蠻亂的,所以有些步驟其實不是非常確定,只能憑印象來記錄。

    無線網卡我是用 TP-LINK WN725N v2.0 版本,主要是因為體積小,然後網路上也可以查得到一些教學,不過怎麼判斷 v1 還是 v2 就很難了,因為一般網路拍賣好像都不會註明,實際拿到的包裝盒上倒是可以看到是哪一版。

    首先,Arch 上最新的版本應該是可以讀到這個網卡,可以用 lsmod 看有沒有 r8188eu,如果有就 OK。

    設置 wlan0

    接下來要把 wlan0 設置起來,建立 /etc/systemd ...



  5. Restart uwsgi using git push

    因為一 push 完都要 ssh 進去重開 uwsgi server,實在很麻煩,所以 google 了一下有沒有什麼好的做法,雖然說用 fabric 進去下指令也是可以,不過想看看有沒有利用 git push 的 hook 來做的例子。

    如何 restart uwsgi

    查了一些資料,一般要 restart uwsgi 就要 root 權限,不過可以在 uwsgi 的設定檔中設定 touch-reload 這個參數,以我的 .ini 設定格式的話就是設 touch-reload = /your_path/reload 設完這個路徑後,一旦你在 /your_path/ 底下 touch 了一個檔案叫做 reload,uwsgi 就會跟著 ...


  6. Check if command exist

    本來直覺是用 which,不過查了一下資料,在 How to check if a program exists from a bash script? 發現有幾個不建議用 which 的理由:

    1. cost 太大,需要另外 call 一個 process 來處理
    2. exit status 在一些系統並沒有定義
    3. 很多 operating system 會對 which 做額外的 tweak,可能會有其他的 side effect

    在解答中建議可以用 hash, command, type 等指令來判斷,其中 command 的 exit code 在 POSIX ...



  7. Raspberry Pi BT Transmission

    研究了一下怎麼在 raspberry pi + ArchLinux 上用 BT,好像都是用 transmission,所以我就跟著用了XD,下面是一些步驟。

    安裝 transmission daemon

    sudo pacman -S transmission-cli
    

    Run transmission daemon

    由於一開始沒有設定檔,要先跑過才有,所以先跑一下,是說要這樣做也太囧。

    sudo systemctl enable transmission
    sudo systemctl start transmission
    sudo systemctl stop transmission
    

    修改設定檔

    設定檔位置在 /var/lib/transmission/.config/transmission-daemon/settings.json (這位置好爛),我自己的設定檔如下,後方的 M 表示新增或改過的 ...


  8. Raspberry Pi beginner

    之前在 COSCUP 拿到的 Raspberry Pi 一直放著沒動,最近想說還是拿來玩一下好了,不然有點浪費XD。

    基本配備

    大部份其實都有了,SD 卡則是自己另外買了一張 SanDisk Extreme SDHC UHS-I 16GB,USB hub 可能之後也會需要,不過還不知道要買哪一個,這邊有 USB hubs 的清單 可以看。OS 則是用 Arch。

    燒錄 image 到 SD 卡

    在 Mac 和 Linux 底下可以直接用 dd,ex: dd bs=1M if=Path/to/archlinux-hf-2013-02-11.img of ...


Page 1 / 6