搜尋此網誌

2016-06-30

查詢套件依賴關係

查詢 somepackage 依賴哪些套件。
apt-cache depends somepackage
查詢哪些套件依賴 somepackage。
apt-cache rdepends somepackage
Linux 在相依性做的很好,不過比較多層時還是需要圖形化比較好思考;以 root 權限安裝 debtree
apt-get install debtree
製作 somepackage 的 dot 檔。
debtree --with-suggests somepackage > out.dot
可以限制為最大深度(levels 或 depths)為五。
debtree --with-suggests --max-depth=5 somepackage > out.dot
將 out.dot 轉檔成 out.png;安裝 debtree 時會一併安裝 Graphviz。
dot -T png -o out.png out.dot
雖然 Linux 的套件依賴性很高,但是做的頗完善。

2016-06-16

golang performance benchmark

可以直接使用 golang 的 testing 當測量效能的工具。

float.go
package float

import (
    "math/rand"
)

func Fib32() float32 {
    return rand.Float32() * rand.Float32() * rand.Float32()
}

func Fib64() float64 {
    return rand.Float64() * rand.Float64() * rand.Float64()
}
float_test.go
package float

import (
    "testing"
)

var result32 float32
var result64 float64

func BenchmarkG32(b *testing.B) {
    var r float32
    for n := 0; n < b.N; n++ {
        r = Fib32()
    }
    result32 = r
}

func BenchmarkG64(b *testing.B) {
    var r float64
    for n := 0; n < b.N; n++ {
        r = Fib64()
    }
    result64 = r
}
測試所有的項目,-bench= 後面可以接自訂 REGEX 格式,. 就是全部的意思。
go test -bench=.
回傳結果。
testing: warning: no tests to run
PASS
BenchmarkG32-4  10000000          202 ns/op
BenchmarkG64-4  10000000          187 ns/op
ok    _/home/angelo/working/T2    4.303s
結果就是在連乘三次中 float64 比較快。

References: How to write benchmarks in Go

2016-06-15

取出特定字型的 glyph

由於多數軟體或系統對於指定字型若缺少該字會自動 fallback、顯示空心方塊(tofu)或顯示帶 unicode 的方塊,或者有時我們會想要看一下指定字型的某個字的筆劃,這時就需要一些小技巧。

輸出 cwming.ttf 的「骨」字為 bone.png。
convert -background none -fill black -font cwming.ttf -pointsize 300 label:"骨" bone.png
輸出 cwming.ttf 的 U+9AA8 為 bone.png。
perl -e 'binmode(STDOUT, ":utf8"); print "\x{9AA8}";' | convert -background none -fill black -font cwming.ttf -pointsize 300 label:@- bone.png
將全部的 codepoints 輸出的 tex 檔。
\documentclass[landscape]{article}
\usepackage{geometry}
\usepackage{fontspec}
\setmainfont{cwming}
\usepackage{multicol}
\setlength{\columnseprule}{0.4pt}
\usepackage{multido}
\setlength{\parindent}{0pt}
\begin{document}

\begin{multicols}{8}
\multido{\i=0+1}{"100000}{% from U+0000 to U+FFFF
  \iffontchar\font\i
    \makebox[4em][l]{\i}%
    \symbol{\i}\endgraf
  \fi
}
\end{multicols}

\end{document}
將該 cwming.tex 檔轉成 cwming.pdf。
xelatex cwming.tex
收工。

PS: 新版本由於安全性考量,@ 符號被禁止,需要修正 /etc/ImageMagick-6/policy.xml 中的 <policy domain="path" rights="none" pattern="@*" />。

2016-06-12

幾個還算好用的輕量級瀏覽器

Comparison of lightweight web browsers

Midori 是 Raspberry 預設的瀏覽器,因此應該還會活好一段時間,特別是 Raspberry 進入 Jessie 後,LXDE 變成預設 GUI 選項,有了廣大用戶應該有利於除錯;而且 Midori 還有一個 Private Browsing 的版本,算是輕量級的首選。

NetSurf 算是最輕量級的非 text 類瀏覽器,有這些狂熱分子支撐,應該也會活的不錯。

Epiphany 並不在輕量級的名單中,不過它現在是 Gnome 的預設瀏覽器,因此算是非主流的首選之一。