2019-06-22

國民誠實度測驗

這是才剛做出來的實驗,這個實驗是在40個國家的355個城市,放置了17303個俱有
部份透明可以看到內部的皮夾,分成有放錢跟沒放錢的。

皮包裡面也放了用當地語文印製的名片,看起來就是本地人掉的東西,上面有連絡
的方式,放的錢是放當地貨幣。

測試的地方包括銀行、戲院、博物館、郵局、飯店跟警察局等等,做試驗的人故意
拿著皮包到這些地方的櫃台,跟櫃台的人說我在路上撿到這個皮夾,請你們處理,
然後急著就離開沒有留下連絡資料或要求給他收據。

紅色是有放錢的皮包,橘色是沒放錢的皮包



出處: https://science.sciencemag.org/content/early/2019/06/19/science.aau8712

2019-05-31

單一port提供多種protocol

原本每個port有各自專門用的protocol, 像 443是https, 22是ssh,
但有時可能只有一個port可以用, 卻想要分別有多種service, 這時可以藉由sslh
來管理, 會根據request protocol來轉給相對應的service.

最主要的設定在 /etc/default/sslh 而最基本的三行就夠用:
RUN=no
DAEMON=/usr/sbin/sslh
DAEMON_OPTS="\
--user sslh
--listen 192.168.10.5:8000
--ssh 127.0.0.1:22
--ssl 127.0.0.1:443
--pidfile /var/run/sslh/sslh.pid"

這樣當遠端對這台機器的port 8000要求ssh 連線時, sslh 會把封包轉成local
的port 22去找sshd service, 而當遠端對這台機器的port 8000要求https 連線時,
sslh 又會把封包轉給local 的port 443 去找secure http的service.

sslh 是由 systemctl 來控制起降.
如果搭配firewall 讓22 跟443 都不會被外界access, 只有開啟 sslh 後才能access,
這樣安全又增加了一層.

2019-04-20

電子書閱讀機mooink

最近拿到一台mooink+ 7.8inch的電子書閱讀機,比上個月在美國書店看到的kindle
螢幕大,價格也差不多,優點是支援漢字閱讀。

拿到後第一個重點是要連上wifi, 因為接下去它會去update裡面的OS+app(?), 完成後
系統是3.1.4, OS是Android 4.4.2, 這一版內建了萊姆輸入法,不過它的萊姆不能讓
使用者像在手機版萊姆那樣可以自行變更各種相關設定,但好歹也有倉頡可用,比稍早
的版本只有注音好多了。

查了一下手冊,它只能閱讀epub格式檔,於是上網找了幾個電子書檔案塞進閱讀機裡,
就可以看書了。只要用它附的USB線(一頭是mini USB)接上就可以進行檔案傳輸,開啟
任何檔案管理程式,例如pcmanfm, thunar,可以看到MOOINK,就可以用copy/paste
的方式把電腦裡的epub檔塞進mooink+.

打開epub檔案是可以看書,但是問題來了,因為用手指頭點來點去,它都在翻頁,我要
怎麼脫離閱讀的模式?或是在閱讀模式下改變閱讀的設定?

有時不小心隨便點一下,它會出現上下兩個區域可以設定字體大小、目錄、系統、亮度
、搜尋或是回到書櫃。有時出現有時不出現,不是點一下或快速點兩下,也不是長按,
也不是滑動,試了一陣子還是找不出邏輯。

試很久之後,終於找出它的邏輯,就是要點在「中線」就是螢幕正中央的垂直子午線,
用漢字的「中」來比喻的話,如果整個螢幕是一個「中」字,就是要點在「中」字的
中央那一直線上,功能設定的輔助就會出現。

最後來談談epub,網路上灰色地帶很多,可以找到很多中、英文電子書,但有各種不同
格式,只要把它轉成epub格式就可塞進mooink+閱讀,雖然網路上也有很多免費幫你
轉檔格式的網站,但如果考慮隱私權的話,還是自己轉比較安全。

在Linux環境下的calibre這套工具很好用,它除了可以直接閱讀電子書,也可以用來
轉換電子書成為不同格式,但pdf格式不一定能順利轉成epub,轉換的指令是:
ebook-convert aabbcc.pdf aabbcc.epub
其它像是txt、doc都可以轉成epub, 請自行試試.

電子書閱讀機的好處是它很省電,比一般手機、平板省太多了!充一次電,放了幾個
禮拜都還能閱讀。室外閱讀也沒問題。

2019-02-28

Live USB最簡單製做法

現在的BIOS大都支援UEFI boot, 所以製作USB boot disk已經不必再去管MBR,
也就是不必依賴特殊的工具來產生可以開機的USB隨身碟, 只要format 成FAT32
再利用grub2 加上幾個檔案就能開機.

使用Linux最簡單的作法是割第一個partition format成FAT32, 剩下的就做成
單一的第二partition 使用ext3(或ext4) format, 用來存放Linux.

第一個partition 挖兩個目錄, 一個為 /boot/grub/ 下面就放單一個 grub.cfg
即可, 裡面的規格也很簡單
set default=N  (就是以下開機項目的第幾個, 從0開始算)
set timeout=M  (就是沒按Enter之後幾秒開始戴入系統)

menuentry 'Ubuntu 18.04' {
linux /path/vmlinuz.a option1 option2 option.....
initrd /path/initrda.img
}

menuentry 'MX Linux 18.1' {
linux /path/vmlinuz.b option1 option2 option.....
initrd /path/initrdb.img
}

menuentry 'CentOS 7.4' {
linux /path/vmlinuz.b option1 option2 option.....
initrd /path/initrdb.img
}

第一個partition另一個目錄是 /efi/boot/ 下面放一個bootx64.efi 就夠了.

不過,這樣是沒有美觀的考量,但已經滿足開機的需求.
(如果更懶,可以整支USB 只有一個FAT32 partition, 但就沒有ext的好處可用)

再來就是第二個partition, 只要空間夠大, 可以放無數個Linux版本,例如:
ub1804 用來放 Ubuntu 18.04
mx181  用來放 MX Linux 18.1
cent74 用來放 CentOS 7.4

第一個partition另一個目錄是 /efi/boot/ 下面放一個bootx64.efi 就夠了.

不過,這樣是沒有美觀的考量,但已經滿足開機的需求.
(如果更懶,可以整支USB 只有一個FAT32 partition, 但就沒有ext的好處可用)

再來就是第二個partition, 只要空間夠大, 可以放無數個Linux版本,例如:
ub1804 用來放 Ubuntu 18.04
mx181  用來放 MX Linux 18.1
cent74 用來放 CentOS 7.4

在第一個partition 的grub.cfg 裡怎麼控制要開機進哪個Linux, 關鍵在於
1.指定系統所在的partition
2.指定系統所在的目錄

指定partition
Ubuntu用uuid=xxxxxxxxxxxx
MX Linux用buuid=xxxxxxxxxxxx
CentOS用root=live:UUID=

指定Linux目錄
Ubuntu用live-media-path=
MX Linux用 bdir=
CentOS用rd.live.dir=

squashfs壓縮的系統檔預設檔名
Ubuntu是filesystem.squashfs
MX Linux是linuxfs
CentOS是squashfs.img

重點都提到了!哈

2019-01-01

Roland AE-05 連接Linux

拿到一支Roland AE-05(Aerophone Go), 從說明書看,它可以透過藍牙跟手機連接,
然後利用手機來設定AE-05,或是用手機接受AE-05來播放額外的MIDI音源,因為
AE-05內建只有11種音源(包括一組打擊樂器),如果用手機可以播放額外幾十種音源,
不過這時要把AE-05本身的音量關到零。

首先遇到的問題就是手機無法連上AE-05的藍牙,裝了Aerophone Go APP也是連不到,
經過確認是安鳳無法連AE-05,只能用哀鳳或哀Pad連!(需要iOS 11或以上)

把AE-05透過USB線插到電腦後可以看到VID/PID

lsusb
Bus 006 Device 002: ID 0582:01d1 Roland Corp.

cat /proc/asound/cards
 0 [Intel          ]: HDA-Intel - HDA Intel
                      HDA Intel at 0xd4500000 irq 30
 1 [AE05           ]: USB-Audio - AE-05
                      Roland AE-05 at usb-0000:00:1d.1-1, full speed

cat /proc/asound/AE05/usbid
0582:01d1

cat /proc/asound/AE05/usbmixer
USB Mixer: usb_id=0x058201d1, ctrlif=0, ctlerr=0
Card: Roland AE-05 at usb-0000:00:1d.1-1, full speed

dir /dev/snd/by-id/
total 0
lrwxrwxrwx 1 root root 12 12月 30 20:33 usb-Roland_AE-05_FFFFFFFEFFFF-00 -> ../controlC1

以上確認Linux能夠看到Roland AE-05的device, 再來檢查一下是否能收到AE-05送過來
的訊號?

aconnect -i
client 0: 'System' [type=kernel]
    0 'Timer           '
    1 'Announce        '
client 14: 'Midi Through' [type=kernel]
    0 'Midi Through Port-0'
client 20: 'AE-05' [type=kernel]
    0 'AE-05 MIDI 1    '

指定 port 20
aseqdump -p 20

這時按AE-05的鍵或是吹氣出聲,都會從螢幕上列出一大串MIDI的值
 20:0   Control change          0, controller 2, value 95
 20:0   Control change          0, controller 11, value 95
 20:0   Control change          0, controller 2, value 90
 20:0   Control change          0, controller 11, value 90
 20:0   Control change          0, controller 2, value 82
 20:0   Control change          0, controller 11, value 82
 20:0   System exclusive           F0 41 10 00 00 00 4E 12 00 27 34 2C 00 00 00 79 F7
 20:0   System exclusive           F0 41 10 00 00 00 4E 12 00 27 34 2F 00 0F 64 03 F7
 20:0   Control change          0, controller 2, value 90
 20:0   Control change          0, controller 11, value 90
 20:0   Note on                 0, note 47, velocity 100
 20:0   Note off                0, note 45, velocity 0
 20:0   System exclusive           F0 41 10 00 00 00 4E 12 00 27 34 2C 00 00 00 79 F7
 20:0   System exclusive           F0 41 10 00 00 00 4E 12 00 27 34 2F 00 0F 60 07 F7
 20:0   System exclusive           F0 41 10 00 00 00 4E 12 00 27 34 2C 00 00 00 79 F7
 20:0   System exclusive           F0 41 10 00 00 00 4E 12 00 27 34 2F 00 0E 60 08 F7
 20:0   Control change          0, controller 2, value 82
 20:0   Control change          0, controller 11, value 82
 20:0   Note on                 0, note 65, velocity 100
 20:0   Note off                0, note 47, velocity 0
 20:0   System exclusive           F0 41 10 00 00 00 4E 12 00 27 34 2C 00 00 00 79 F7
 20:0   System exclusive           F0 41 10 00 00 00 4E 12 00 27 34 2F 00 06 60 10 F7
 20:0   System exclusive           F0 41 10 00 00 00 4E 12 00 27 34 2C 00 00 00 79 F7
 20:0   System exclusive           F0 41 10 00 00 00 4E 12 00 27 34 2F 00 06 40 30 F7
 20:0   Control change          0, controller 2, value 74
 20:0   Control change          0, controller 11, value 74

還未解決的問題是能否吹奏AE-05 讓腦裡來播出各種MIDI?

2018-12-28

墨西哥簽證與美國簽證

在台灣簽墨西哥簽很麻煩,因為一天只受理30個人,有可能你要早上六點多
就要到基隆路的墨西哥辨事處排隊,等大樓七點開放才能進入到15樓的辨事處
門外再排一次隊,然後大樓警衛還會來叫你不要蹲或坐地上,要一直站著等到
九點,辨事處開門進去抽號碼牌,如果你是排在第31位,那明天請早。

然後簽證辨事員各種刁難,這個不行那個不行,遇過同樣去簽的人說來第四次!
墨西哥簽一次只給六個月,六個月後還要去墨西哥的話還要來做同樣浪費時間的事!

如果不是趕時間的話,直接去AIT簽個最簡單的B1/B2,一次給五年,拿這個
就可以進入墨西哥(ESTA不行進入),省事多了,而且B1/B2面談很簡單,問幾句
沒什意外的話馬上就approve了!

既然B1/B2都簽了,那就順便再辨個Global Entry, 台灣是符合Global Entry
的國家,而且Global Entry的面談可以在AIT或是到美國機場再面談,只是你
要先安排適合的時間面談,這樣進入美國就可以快速通關。

用Micropython玩MCU

很久沒玩microcontroller 最近買了一支ESP32, 發現它也被micropython 支援了!
http://micropython.org/download 包括舊的 ESP8266 也有比一兩年前更好的
支援,不論ESP8266或ESP32 都可以玩micropython.

ESP32 或 ESP8266 出廠都不是燒micropython, 所以第一次燒micropython 要先清除
esptool.py --chip esp32 erase_flash
再把micropython 燒在 0x1000 的起始位置
esptool.py --chip esp32 --port /dev/ttyUSB1 write_flash -z 0x1000 \
esp32-20180511-v1.9.4.bin
20180511-1.9.4 目前是stable 版本(32/8266都是)
ESP32 可以選用最新版 esp32-20181228-v1.9.4-762-gfa50047bb.bin

micropython用的是python3

2018-09-16

觸控螢幕 touchegg

公司配用的Notebook有觸控螢幕,但是很少去用它,最多使用的還是touchpad,
因為手指的移動距離比較遠,synclient加上Ctrl就可以zoom in/out, 所以也就不太
會去用touch screen.

其實touch screen比較直覺,只要裝了touchegg就可以用了。
不過在捲動螢幕的方向時touchegg的default正好跟動作是相反的,手指把螢幕
往上推時,它的內容卻是往下跑,所以還是改一下
$HOME/.config/touchegg/touchegg.conf
裡面原本的INVERTED=false改成true
在以下這一段
gesture type=DRAG fingers="2" direction="ALL"
   action type="SCROLL" SPEED=7:INVERTED=true /action
/gesture       
       

就可以更直覺的翻動螢幕。

2018-08-25

Port 80h LED 的小工具

如果要檢測 server上的 Port 80 LED, 可以找這個
https://pypi.org/project/portio/

可以不用pip 來安裝, 直接compile so來用也可以, 攜帶方便。

tar zxvf portio-0.5.tar.gz
cd portio-0.5

gcc -I/usr/include/python2.7 -c -fPIC portio.c -o portio.o
(或是 -I/usr/include/python3.6)
(-fPIC Position Independent Code)

(接下來從 .o 來產出 .so)
gcc -shared -o portio.so portio.o

使用時可以把 .so 放在 .py 同一目錄即可,不必install
----程式start
import portio
portio.ioperm(0x80, 3, 1) #先打開
# N 可以從 0 到 255, 0是全滅, 255是全亮
portio.outb(N, 0x80)
portio.ioperm(0x80, 3, 0) #關閉
----程式end

2018-07-15

好力屋、日本阿嬤

這次飛過去除了在空中看見山丘上寫著大大的「好力屋(Hollywood)」之外,回程
在空中第一次看到圓型耕作,大約在北緯32.82431, 西經109.92879, 11088公尺的
空中看到的。

查了一下,叫做Center pivot irrigation, 中文翻成「中樞灌溉系統」

差不多就是這段影片所說的
https://www.youtube.com/watch?v=DE3tJzL-LT0

水從一個固定點,借由直的管線,像時鐘指針那樣旋轉、噴水灌溉,所以耕作面積
呈現圓形。

********
在LA轉機時還發生一個有趣的事,一位日本阿嬤問我轉機的事,很巧的是,她也是
要飛到EL PASO!

一聽她說的是非常日本腔的英語,然後又發現她的英語非常有限,就開始試著用我
稍微能用的日語跟她交談起來。

這位日本阿嬤86歲,看起來還蠻健康,她家住在日本最大湖泊「琵琶湖」附近的
近江八幡市,一個人從東京羽田機場搭機到LA,要去找她在EL PASO當醫生的60歲
女兒。

從EL PASO機場出來時,她背著背包,然後拖一個行李箱,86歲行動都還很靈活,
說她女兒會開車來載她,不必為她擔心,還跟我握手道謝,我就搭車去飯店了

2018-07-02

抗噪音耳機

長途飛行最令人難以忍受的就是飛機引擎加上機體與空氣磨擦所產生的噪音,
從台灣飛鄰近亞洲國家,如日本、韓國、中國或馬來的話,大概兩三個小時或
頂多四個多小時,忍一下就到了。飛十幾個小時的話就很不好受,也難睡著。

這次出差前領到一支SONY主動式消除噪音耳機(Noise Cancelling Headphone),
效果相當不錯。這支耳機除了消除噪音,也可以當一般耳機聽音樂、電影。這次
在看機上電影,劇情場景進行到寧靜公園裡,出現鳥聲時,還真有點訝異!在
飛機上怎麼會有這麼像真的公園鳥鳴聲?

這種主動式消除噪音耳機是內建電池的,它含有一個微型運算器,會根據收到
的外在環境音波,計算出一個反向波,把規律的噪音抵消掉,這樣你就會有身處
安靜環境的感覺。

缺點就是,它跟飛行員戴的耳機相似(不是耳塞式的),所以有相當的重量,以及
夾住你的頭的壓力。

這款SONY WH-1000XM2有一個缺點,就是在不接藍牙也不插3.5mm音源線後,
它五分鐘到就斷電關機。為了只用來消除噪音,不想聽音樂的時侯,可以在它的
耳機孔插入一個3.5mm音源插頭,這樣它就不會斷電了。

聲明:我不是SONY公司的人, 也沒有SONY股票

2018-07-01

在EL PASO同時看到金水兩星

今天在北緯31.7811632西經106.3963542度,UTC時間7月1日03:25左右
看見金星(約19度仰角)水星(約7度仰角)在西方, 以及高掛天空的木星.

同事卻把木星及週圍幾個星認為是夏天三角.
所謂夏天三角應該在仲夏的午夜會出現在中天, 這個時間怎麼可能高掛頭頂 ?

剛才看星星的時間是當地的晚上九點二三十分左右, 查一下星圖軟體,
這時間夏天大三角還在東方不到45度的天邊.

2018-06-26

低頻噪音的測量

我國法令對低頻噪音的規範為20到200Hz。
低頻噪音對人體的危害包括對人體會產生壓迫感、對睡眠及生心理的影響大,可能
導致神經衰弱、憂鬱症等等。
最近辦公室座位異動,結果新座位區域鄰近是主要機房,而機房的空調壓縮機就日夜
放送低頻噪音了!
手機很方便,用來量測低頻噪音的軟體很多,試用之後覺得這個不錯用:
"Sound Analyzer Free"
https://play.google.com/store/apps/details?id=jp.nokubi.nobapp.soundanalyzer.free&hl=en_US
可以量出那個壓縮機不斷放送的低頻為90Hz,其它軟體使用上不太方便,這個可以
用手指拉放,找出峰值圖。

2018-04-05

玩Android不註冊不綁信用卡

使用Android phone最令人討厭的就是要你註冊,還要綁信用卡。
不然就不能在google play 安裝app(apk)!
當然還有很多地方可以下載apk, 但各有優劣,對於Linux用戶來說有個比較
簡單的辦法,就是利用gplaycli來搜尋、下載。
https://github.com/matlink/gplaycli
https://github.com/matlink/gplaycli/releases/

python3 setup.py install 之後,視你系統現有的環境,可能需要裝一些額外的
packages 如 libffi-dev, libssl-dev, python3-dev.... 才能有 xxxxx.h 的.
完成之後的用法是
gplaycli -s flightradar24 (用來搜尋某個app)
gplaycli -d com.flightradar24free (用來下載某個app, app名稱就是
搜尋後看到的AppID)
(但有時候它會一直說server busy, 要試很多次才能下載,但有時候一次就下載成功)

最後就是用 adb install com.flightradar24free.apk (安裝)
如果試了一下發現不好用,馬上
adb uninstall com.flightradar24free (不必加 .apk)

當然你的手機要先打開「開發人員選項」,這在出廠值之下是沒有的,要特別去按
某些地方才會有,以Nougat(Android 7.x.x)來說,要進「關於手機」找到
「版本號碼」這項,一直按,然後回到上層就會看到多出一項「開發人員選項」。

2018-03-10

漢文化沒有愛、自由的元素

漢文化(也可以說包括朝鮮、扶桑、安南)開口閉口的總是忠、孝、節、義,
影響所及的各國完全找不出「愛、自由」,所以昭和的日本可以發動太平洋戰爭、
以及戰爭末期的自殺攻擊。二戰的中國可以鼓吹各種犧牲自我去送死愛國的戰術,
這些都是源自漢文化陰暗的忠、孝、節、義教育,從漢文化的小說、戲曲裡硬是
找不到除了忠、孝、節、義之外的元素。

漢文化沒有「愛、自由」更表現在「筷子寓言」,漢文化同時也是筷子的發源地,
然而「筷子寓語」卻強調要把筷子綑綁在一起、強調這樣才能團結,殊不知筷子
就是要一支一支分開,才能組成一雙一雙,用來餵飽每一個人,把筷子綑綁成一把
只會讓人沒有吃飯的工具。

2018-02-28

人類捕魚的big data

BBC的報導
http://www.bbc.com/news/science-environment-43169824

提到漁撈是跟政治、文化綁在一起的產業活動,它並不會受季節、氣侯影響。

因為依照規定,大型漁船要裝設自動識別器,它每幾秒就會發出自己航向、位置
、速度的識別訊號,所以只要從天空的衛星就能收集全世界的漁船在哪裡、在什
麼時間從事漁撈作業。(GMSK, 9600bps, 161.975 MHz, 162.025 MHz)


中國是作業時間最多的國家,在2016年,超過一千六百多萬小時,
幾乎快要等於全世界的作業量。


整個中國的東到東南沿海的漁撈作業!

迴音定位,人類也可以像蝙蝠

根據BBC這一篇,有些盲人是可以被訓練得能夠用自己的口腔
來發聲,然後聽取回音,但主要是面前的物體,側面或後面
的物體就要花更多時間去偵測。
http://www.bbc.com/news/science-environment-43173613
而最能辨識的物體高度大約在臉部到胸部之間,這可以補償
白手杖所無法偵測到的範圍。

這篇有詳細的實驗解說
http://rspb.royalsocietypublishing.org/content/285/1873/20172735

是不是可以用現在電子設備的達到相同的目的?
有沒有已經有類似的商品?
像已經可以用Arduino搭配超音波迴音測距儀(例如HC-SR04)來做一些
自動裝置。 

2018-01-09

UART with FTDI/PL23

一般來說ARM SBC是丟在某個角落, 只要它乖乖做事, 是不會去看它的. 最近拿到
一支OrangePi Zero, 就是以這個目的來使用, 這是一支沒有video out的SBC(RaspPi
有HDMI), 好處是它有獨立的UART debug port(RaspberryPi要另外config兩支GPIO
來當RX/TX才能接UART/TTL), 拿一台NB接上就能進系統改東西.

一般是在NB上插一支USB/TTL轉接器, 跑miniterm.py, 結果只有看到boot時的
messages, 但是messages到一個階段後就再也沒有東西出來, 也就是沒有login prompt.

於是東查西查(現在都改用systemd, 沒有/etc/inittab), 也查了systemctl的
getty@ttyS0以及/etc/systemd/system/ 還有 /lib/systemd/ 下面各種可能造成
沒有login的原因, 但是仍找不出來.

這支USB/TTL用在RaspberryPi 完全正常, 因此一直沒懷疑它, 今天想到之前用在
ESP8266時, 不同支ESP8266對不同USB/TTL的反應不一樣, 因此換一支FTDI的,
結果就能看到OrangePi Zero送出來的login prompt了!

看來這隻OPiZero的UART電壓可能跟RPi的不太一樣.

miniterm.py /dev/ttyUSB0 115200 --eol LF --raw
加--eol LF以及--raw 才能避開各種控制碼造成的混亂.