Tuesday, September 27, 2016

Python neural network




http://www.rightrelevance.com/search/articles/hero?article=1e1842881703838b6b9a738fb90d5135123ef161&query=python&taccount=pythonrr




http://www.pyimagesearch.com/2016/09/26/a-simple-neural-network-with-python-and-keras/

Thursday, June 16, 2016

Apache Mynewt RTOS for IoT Includes an Open Source Bluetooth 4.2 LE Stack for MCUs


http://www.cnx-software.com/2016/06/15/apache-mynewt-rtos-for-iot-includes-an-open-source-bluetooth-4-2-stack-for-mcus/

The Apache Software Foundation has recently released version 0.9 Apache Mynewt open source real-time operating systems for micro-controllers under… an Apache 2.0 license. The RTOS works on STMicro STM32 Cortex-M4, and Arduino Zero / M0 Cortex-M0 boards, but they’ve also implemented the  first open source Bluetooth Low Energy stack for MCUs, starting with support for Nordic Semi nRF52 Cortex-M4 and nRF51 Cortex-M1 evaluation boards, and acting as a replacement forNordic SoftDevice Bluetooth Smart / LE solution.
Apache_Mynewt_System_Block_DiagramThe operating system competes with ARM mbed, the Zephyr Project, and RIoT, but the foundation claims it is the only one that’s both community driven and permissively licensed (Apache 2.0) project in the embedded space.
The OS is modular and can be configured with a Go-like build and package management tool with components such as secure boot loader, flash file system and TLV storage mechanism, rich logging infrastructure, circular buffering schemes, and Bluetooth 4.2 Low Energy. WiFi, Thread, and Bluetooth 5 are also part of the roadmap, and support for Javascript and Python is currently being worked on.
You can find more information and/or get started with the project on Apache Mynewt microsite.

Wednesday, May 18, 2016

Android 应用签名提权方法

轉自:
http://hubeihuyanwei.blog.163.com/blog/static/28205284201321432453596/


使用android自带的签名工具signapk.jar 以及源码中的platform.x509.pem,platform.pk8 对apk进行重新签名。

   执行:java -jar signapk.jar  platform.x509.pem platform.pk8 old.apk new.apk 执行后new.apk即为签名后的文件。

   (注:执行命令时所有文件这里放在同一目录下,如果不在同一目录请修改路径)。

  文件platform.x509.pem和platform.pk8我们可以在源码的 build/target/product/security中找到。signapk.jar 可以编译build/tools/signapk/ 得到。

5.签名后就可以安装使用了

====================
platform.x509.pem和platform.pk8的用处

很多网友可能需要访问一些系统敏感的设置信息,如果没有Root权限如何解决呢? platform.x509.pem和platform.pk8可以让你获得系统权限,Android在系统账户安全中使用了Linux的ACL控制方式,通过在每个App中使用sharedUserId设置即可共享系统账户权限,比如android:sharedUserId="android.uid.system" 这样就是用了system这个uid了。

  platform.x509.pem和platform.pk8我们可以在platform/build/target/product/security中找到,如果你的固件使用的Android官方标准的key编译的,可以通过signapk.jar来使用这个系统key/cer来签名的你的apk。使用方法比较简单java -jar SignApk.jar platform.x509.pem platform.pk8 cwj.apk cwj_signed.apk 这行就代表,将cwj.apk签名,签名后的cwj_signed.apk就是拥有系统权限的apk了。如果网友找不到signapk.jar,Android123提示大家可以在/platform/build/tools/signapk/下编译即可。

  当然Android开发网提示如果部分开发者在编译系统时使用的并非GIT源码中的platform.x509.pem platform.pk8可能造成在该目标固件中无法正确安装,当然了这两个文件就是我们普通的key/cert而已,只是作为平台名称有些改变。


Tuesday, May 17, 2016

人生之不知所云

生命是很奇妙的東西
逆境與夢想都是有時都是生命的一部份
知道自己的夢與自己在此刻的角色
那麼便算是不虛此生了吧~~
---
如果發現人生的短暫
  就愈要使它更有深度
更加充實!

[debug] rr 全名是 record and replay

以下轉自:
https://m.facebook.com/story.php?story_fbid=10204658121093179&id=1840131181

今天突然想到我似乎沒發文推廣過 rr 這個神級的 debug 工具(又稱軟體工程師的時光機),這麼好用的東西不能只有我知道
rr 全名是 record and replay,只要你的程式跑在 Linux 上,可以用 gdb debug(例如 C/C++/Rust 寫的程式),都可以用 rr 把程式的執行結果錄下來,再反覆的用 rr 重播,並用 gdb debug。這能完全改寫你除錯程式的經驗,它有以下特色:
1. 在這個 record 中,記憶體位址是不變的,所以可以反覆用 gdb 去看程式資料的變化。你也不必怕 gdb 當掉,毀掉你辛苦重製的環境,而你在筆記本記的 memory address 都泡湯)
2. 因為你在 debug 錄下來的程式執行過程,所以你甚至可以「倒著」執行程式。 一般 gdb 的必用的指令如 step、continue,rr 都提供了的反向版的 reverse-step、reverse-continue。
以常見的 debug null pointer crash 為例,通常都是某個物件被某個不知道在哪的函式 F 放掉了,但你執行到程式 crash 時,不知名的 F 不知道在 crash 前多早就執行了。如果這個 crash 很難重製,程式又不是你寫的,你就只能慢慢熟悉程式,印 log,找出可以穩定重製的步驟…然後自求多福(超花時間)。
如果用了 rr,你就只要重製出 crash 一次,再 replay。等到程式 crash,設定個 watch point 在被設成 null 的變數,下 reverse-continue 倒著執行程式回去。馬上抓到兇手!多的時間就可以開始研究程式的邏輯了。
rr 在我 debug Firefox 這麼複雜的程式時真的幫我很多忙,一堆 ref-counted 的物件加上 event 飛來飛去,程式邏輯真的不會照你想的運作。
如果你開發的程式在 Linux 上,不妨試試。如果有老師在教學生用 gdb,也不妨也告訴學生有 rr 這個工具,讓學生的程式生涯輕鬆一點。

rr網站:
http://rr-project.org/

MQTT(一)簡介

轉自:
http://blog.maxkit.com.tw/2014/01/mqtt.html


前言

會知道MQTT協定,要先回憶起兩年前,當初想找找Android的Push Notification的解決方案,先是找到了當時GCM的前身C2DM,以為Google已經提供了此服務,測試了一下code也蠻容易上手的,結果發現到他有quota限制,不適合拿來當成產品,因此就放棄它,改找別的解決方案,最後找到了兩種不同的實作方式,一種透過XMPP協定來完成,另一種也就是今天要提到的,透過MQTT來完成。

所以MQTT是什麼?

MQTT的全名為 Message Queuing Telemetry Transport,為IBM和Eurotech共同製定出來的protocol,在MQTT的官網可以看到一開始它對MQTT的介紹:
MQTT is a machine-to-machine (M2M)/"Internet of Things" connectivity protocol. It was designed as an extremely lightweight publish/subscribe messaging transport.
簡單來說,它是為了物聯網而設計的protocol,並且它是透過publish/subscribe的方式來做訊息傳送。由於是為了物聯網而設計的協定,因此它所需要的網路頻寬是很低的,而所需要的硬體資源也是低的。

Publish/Subscribe:

在看MQTT之前,最好要先知道Publish/Subscribe的訊息傳送機制為何,這樣之後在看其協定時,才會更快上手。Publish/Subscribe有三種主要的組成元件,分別為Publisher、Subscriber以及Topic。

Publisher為訊息的來源,它會將訊息發送給Topic,而Subscriber向Topic註冊,表示他們想要接收此Topic的訊息;因此當有某個Publisher對Topic發送訊息時,只要是有對此Topic註冊的Subscriber,都會收到此則訊息。
它們的關係如下圖:


MQTT特性:

了解了Publish/Subscribe的機制之後,讓我們來看看MQTT有哪些特性:
  1. Publish/Subscribe的訊息傳送模式,來提供一對多的訊息分配。
  2. 使用TCP/IP來提供基本的網路連結。
  3. 三種訊息傳送服務的qualities:
    • "At most once",最多一次,訊息遺失或是重複發送的狀況可能會發生;這種quality適合應用在環境感測,不在意資料是否會遺失,因為下一次的資料取樣很快就會被published出來。
    • "At least once",至少一次,這種quality保證訊息會送達,只是可能會發生重複發送訊息的狀況。
    • "Exactly once",確定一次,確認訊息只會送到一次。這種quality適合用在計費系統,系統只要有重複收到資料、或是資料遺失狀況發生,就會造成系統錯誤。
  4. 由於他的header固定長度為2byte,因此可以減少封包傳送時的額外負載,並減少所需的網路頻寬。
  5. 當異常斷線發生時,會使用最後遺囑(Last Will and Testament)的機制,通知各個感興趣的client。

MQTT現況:

MQTT現階段並不是一個標準化的Protocol,還在持續改進中,目前為MQTT V3.1。不過IBM已於2013年已經將它交給OASIS進行標準化了,並且一直以來IBM對此協定採開放、免授權費的方式讓它能夠被散佈,因此相信不久的將來會成為一個主流的Protocol。

而目前支援MQTT的Client API,有Eclipse Phno Project有對MQTT client支援,其支援C、Java、Javascript、C++等等的語言,可說是支援度很高的Project。而目已經在應用MQTT的,最知名的應該就是Facebook Message App了吧,可以參考此篇文章文章

小結:

上面提到的,低頻寬、低硬體需求的特性,訊息傳遞為Publish/Subscribe的方式,正好可以用來實現Push Notification的機制,並且能達到手持裝置省電的需求,接下來會先從其Protocol開始了解,並用Client Api跑些範例來應用此Protocol。

參考:

MQTT v3.1 specification

Introducing AWS IoT

Introducing AWS IoT:
https://www.youtube.com/watch?v=N3-Az0OH5WM





Friday, April 01, 2016

Object-oriented design patterns in the kernel, part 1


Object-oriented design patterns in the kernel, part 1


https://lwn.net/Articles/444910/

https://lwn.net/Articles/446317/


共筆: http://hackfoldr.org/dykc/

Sunday, January 31, 2016

[Netflix] Linux Performance

http://www.brendangregg.com/linuxperf.html

Netflix 工程師分享