BV1AL 之無所不記

2017-09-04

釵、十手、古武道

最近看了2016年的時代劇「傳七捕物帳」,劇中主角傳七是江戶時代的捕快,
他的隨身武器叫做「十手(Jutte)」,十手是鈍器,但它的側邊有一支L型的護具,
就是用它來鉗住日本刀,同時可能再從身上拿出另一支十手來打彎或甚至打斷日本刀,
進而制服對手。











網路上有一篇談「十手」的文章在結尾說
『十手在硫球空手道體系中系統性地演化並發展出特定的套路,成為硫球空手道的經典兵器。』
這似乎有誤,琉球古武道的武器並沒有「十手」而是另一種叫「釵(sai)」的武器。
「釵」是鈍器,在「忍者龜」裡被誤導成利器!

在台灣老一輩武術界稱為「鐵尺」或「太子手」,它是雙手各一支、一對使用的演武法,可以搭配「拳」
來練習使用。釵的武技是藉由翻轉釵身,可以往前突刺或以長過手肘那一小段往後突刺對
手,以及翻轉時敲打對手。


「釵」在主體的左右兩側各有一支突出物,跟「十手」類似,但不同的是「釵」的這兩支
突出物與「釵」主體的距離比「十手」大,為的就是讓手能反握。而「十手」在演技上
並不翻轉,主要是用來鉗制對手的刀具,也因此突出的那一支與主體的距離是較小的,這樣才足以發揮鉗夾的功能。

為了能輕易翻轉「釵」,近年來販售的釵身在「monouchi」這一段被短化了,以便重心落在接近yoku跟釵身交叉處,結果monouchi 大約是tsuka 的兩倍多一點點。

但這也造成另一個問題,就是monouchi 本來設計的長度是比手肘長出大約半寸,反握(握在monouchi 而不是握tsuka)之後,可以用比手肘略長那一段攻擊身後的敵人,但這種短化的設計就少了那一段,殺傷力也變小了。

真是兩難,如果monouchi 比手肘長,在翻轉釵身的時候會比較費力。
最後這張回是傳統釵的長短比例。

標籤:

2017-09-02

小行星Florence的月球

9月1日掠過地球的小行星Florence(直徑4.5公里)竟然帶著兩粒月球!
這兩粒月球的直徑大約在100-300公尺之間。
內圍的月球大約8小時繞Florence一圈,外圍的月球大概22-27小時繞一圈。

https://cneos.jpl.nasa.gov/news/news199.html

這是NASA在Florence接近地球時用70公尺直徑的大天線以電波偵測出來的
https://www.jpl.nasa.gov/spaceimages/details.php?id=PIA17792

https://en.wikipedia.org/wiki/Goldstone_Deep_Space_Communications_Complex

標籤: ,

2017-08-31

PM8546 UART python 讀取資料

最近因為要透過PM8546 UART去讀取後面的資料,才用到更高的230400 baud速度.
基本上python 可以利用兩種方式讀取 serial port data:
1. pexpect 的 before 來獲取
  用spawn()去呼叫 miniterm.py, 新舊版的參數方式稍有不同
  舊版: pexpect.spawn('miniterm.py -d /dev/ttyUSB0 -b 230400 --lf')                                         
  新版: pexpect.spawn('miniterm.py /dev/ttyUSB0 230400 --eol LF --raw')
  (加--lf 或 --eof LF 是為了避免一次得到兩行空行)
2. serial 的 read()
  利用while 來使Serial.read() 不斷累加,獲取到達特定字元(例如 '>' 提示符號)之前的所有字串

從PM8546上讀出來的string再用 split('\r')來分隔每一行,最後從每一行的字串
裡去判讀最終目標字串。

標籤: , , ,

2017-08-26

福衛五進入軌道

這幾天的主要新聞包括台灣福衛五號在8/24昇空,8/25進入軌道。

新衛星的TLE在8/24還不太好找,因為還沒列出FORMOSAT-5,
還好找到一個8/24發射的2017-049A 然後再找到 42920
就找到TLE了.

1 42920U 17049A   17237.24511176 -.00000044  00000-0  00000+0 0  9993
2 42920  98.2909 311.6421 0009843 225.0388 135.0120 14.50730944    72

用earthtrack 畫出來
前不久經過台灣附近
即將經過台灣附近

不過有新聞提到Xspace公司這次發射福衛五號是陪本生意,因為用一支很大的
火箭來射一粒小小的福衛五就像開一列捷運車,卻只載了一個客人。

標籤: ,

2017-06-18

雨天裡公園的滑水道

這幾天的預報,下雨機率都是百分之百,也使得入夜後氣溫涼到只有廿三、廿四度,
端午之後這麼涼的天氣也很難得。

下午路過附近公園,因為下著雨,除了涼亭有少數下棋的人以外,整個公園只有
我一個行人,以及雨滴打在傘上的聲音,連鳥都去躲雨了。

走過遊戲區,有一套架高起來的溜滑梯以及攀爬平台,滑道分成有蓋式的、無蓋式
的,塑膠(或塑鋼、FRP ?)製大紅大綠的那種。

忽然聽到小孩的叫喊聲,轉頭看見一個大概幼稚園的小弟。

正在滑著雨水遍佈的滑道,像水上樂園的滑水道一樣,小弟從滑道的洞口出來,
然後站起身。

頭、衣服、褲子都是濕的。

溜下來,接著又爬上梯架,換到另外一個滑道,再滑下來。整個公園沒有人跟他
搶遊樂設施。

小孩的媽媽撐著傘,站在遊樂組合的旁邊,靜靜看著小弟一趟又一趟的滑著、
叫著。

生為這個媽媽的小孩,長大後一定有很多快樂的童年回憶。

我們的這一代、上一代,制式反應是『下雨天不要出去亂玩,淋雨會感冒、
會生病』。

標籤: ,

2017-06-10

空機執行CentOS Live(有關iPXE)

原本都是用CentOS Live放在USB,最近因為有需求用PXE執行CentOS,但是傳統上
PXE的tftp傳輸很慢,於是改用iPXE,因為iPXE可以使用像是http, iSCSI, AoE等等的
protocol,相較快很多,http又可以跨越local LAN。

網路上大多數談到PXE是以安裝Linux系統為主要,但是這裡的目的,不是要install
,而是直接跑live system在一台空機上面, 因此需要把整個live image傳送到clicnet端,
如果採用iPXE加上http會比tftp好太多!

不論PXE(或iPXE)基本上只能傳送kernel及initrd兩個檔給client,可是我們有
kernel(vmlinuz), initrd.img, squashfs.img三個檔案,沒辦法全都傳!
而三個檔中的squashfs.img很大,根本不適合用tftp傳送!

網路上有人寫了一個把CentOS Live ISO轉給PXE用的script
https://github.com/livecd-tools/livecd-tools/blob/master/tools/livecd-iso-to-pxeboot.sh

它主要就是把原生CentOS Live的ISO拆開,再重新打包成兩個檔(一個kernel
及一個initrd.img),雖然我已經customized的CentOS Live當然可以再反組裝
回去ISO,但那是多費力氣,並不需要。

只要把squashfs.img打包成ISO檔,塞進拆開的initrd裡面,就構成PXE必要的
兩個檔之一,加上kernel就能透過iPXE快速的傳送到client端執行了。

squashfs.img的customize在這裡只簡單說明,它裡面有一個LiveOS的目錄,
裡面塞了一個ext4的單一檔案,這個檔案可以用dd if=/dev/zero來打底,改變
大小,將整個system tree搬進去,修改後再重新打包回squashfs.img裡面,
就是customize完成。

將squashfs.img打包成ISO的方法如下:
genisoimage -J -joliet-long -r -T -o CentOS.iso --root LiveOS /PATH/squashfs.img
再挖一個坑,例如 myISO/,把產出的CentOS.iso丟進去,myISO/下面你也可以
放任何你要放的檔案。
cd myISO/
find . -print|cpio -H newc -L -o|gzip -9 |cat /PATH/initrd.img - > ../init4PXE.img
產出的init4PXE.img會在 myISO/的上一層。
請注意!上面的"- >" 「減號」跟「大於」之間有一個「空白」

新的init4PXE.img會是幾百MB或超過1GB,看你做了什麼而定。

最後的重點就是bootloader的menu要怎麼寫,原本CentOS Live的bootloader
menu有一個參數
"root=live:CDLABEL=LIVEUSB" 這時候要改成
"root=live:/CentOS.iso" ←這個CentOS.iso是根據上面我們製作ISO給的
名字,然後boot option至少要保留"rd.live.image"這一個。
附註: 要拆解原生CentOS的initrd.img需要用到
CentOS自己的/usr/lib/dracut/skipcpio
這個工具。
(customize CentOS Live可能也要拆解initrd.img並且重新打包。
重新打包就是用上面的指令及參數
find . -print|cpio -H newc -L -o|gzip -c > initnew.img)

標籤: ,

2017-04-14

Raspberry Pi 3 serial 通訊

Raspberry Pi 很多時候是靜靜躺在某個角落默默的做我們要它做的事
它不需要螢幕也不需要鍵盤,但偶而遇到網路不通時,這時如果還要
搬一台螢幕再接一台鍵盤才能操作,就太麻煩了。

如果可以透過serial port連進去,就可以隨便拿一台筆記型電腦來操作它了。

https://openclipart.org/download/264608/gpiopinsv2withpi.svg
從這個圖(這是RPi三代機)可以看出右側雙數腳6(接地),8(TX),10(RX)
可以用來做serial通訊。

由於三代Pi是用debian jessie, 隨著debian從sysvinit 改用systemd, 舊版Pi 的
修改/etc/inittab 的控制方式已經不適用, 必需用systemctl 來控制.
(有很多人討厭systemd, 但迫於情勢, 也不得不接受了)

我先是用dietpi-config 來啟用serial port, 但是無效, 後來手動修改
/boot/config.txt 以及/boot/cmdline.txt 裡面加上某些控制字串才能啟用。

config.txt: 加入以下
dtoverlay=pi3-disable-bt
enable_uart=1
這個config.txt 如果是在Raspberry系統執行中修改可能重開後會不見
所以改成把microSD 卡拿出來插到讀卡機裡, 用其它電腦editor來修改.

cmdline.txt: 插入以下
console=serial0,115200
這裡的"serial0"是一個sym link, 如果不通, 可以試試看ttyAMA0 或ttyS0

重開機後執行systemctl|grep serial 來確認一下serial 方面的service狀態.
當然在硬體方面你要準備一支USB to TTL的轉接器, 不管是FTDI或PL23xx 都可以,
TX 要接到RX 才能通訊, 總之不通的時候確認一下腳有沒接對.

標籤: , ,