發表文章

在 VMware 上安裝 JetPack 3.3

圖片
本篇紀錄在 VMware 上安裝 Nvidia JetPack 時,遇到無法取得 TX2 target端的 IP address 的問題。 首先為了可以支援 USB 3.0,記得要 enable USB 3.0。 最主要網路不通的原因是原本是用 NAT,這樣 host 與 target 會不在同一個子網路內,所以要選 "Bridged",而且要把 "Replicate physical network connection state" 勾選起來,然後點選 "Configure Adapters" ,只勾選PC端的網路卡,確保可以對應到同一個子網路。 由於是將 PC (VMware端) 與 TX2 都接在 HUB上,所以安裝 JetPack 的時候選擇如下的 network layout。 接下來執行到 "Determining the IP address of target ..." 這個步驟時,稍等一下就可以看到抓到 target 端 (TX2) 的 IP了 (172.18.2.17) 全部安裝完畢訊息如下。

海思 Hi3521A SDK 的安裝及環境設定

本篇紀錄一下海思 Hi3521A SDK安裝相關問題。 安裝 Linux build server PC 端使用免費的 VMware Workstation Player ,安裝 ubuntu 14.04 64-bit server 版本 。安裝完畢後,enable share folder功能讓 windows 和 Linux 可以分享檔案,或者設定並啟動 samba server,方便 windows 與 Linux 分享檔案。 Q: vmware環境掛載 share folder 發生 mount: unknown filesystem type 'vmhgfs' A: sudo apt-get install git git clone https://github.com/rasa/vmware-tools-patches.git cd vmware-tools-patches sudo ./patched-open-vm-tools.sh 然後打 df,就可以看到 vmhgfs 可以正常使用 vmhgfs-fuse    483399676 97966528 385433148  21% /mnt/hgfs Q: 如何設定 samba server ? A: sudo apt-get install samba sudo vim /etc/samba/smb.conf sudo service smbd restart sudo smbpasswd -a user_name [my_user]  path = /home/my_user/ws  available = yes  valid users = user_name  read only = no  browseable = yes  public = no  writable = yes 安裝 Hi3521A_SDK 解開 tgz 之後, sudo su . sdk.unpack  <=== "." 後面要空格 安裝 cross compiler 进入Hi352...

以樂透為例,用Python統計馬可夫矩陣

圖片
答案是矩陣裡的每個元素都是 1/49 (下一期開出某個號碼的機率),完畢。 寫這篇的目的並不是真的想要得到"明牌",只是找個題目練習一下 Python 與馬可夫模型;另一方面,樂透是大家都感興趣的題目,希望這樣應該比較容易理解,並不是真的可以算出明牌,如果有執迷不悟的,本文最後會說明為什麼。 馬可夫鏈 是機率問題中很常使用的模型,近年來因為大數據盛行,每個領域需要網路爬蟲收集大量資料 (分析關鍵字), 自然語言處理 (NLP) 於是成為很熱門的領域,而 Markov model 是 使用統計方法處理自然語言時常用的方法,google 也是 使用 Markov model 來為每個網頁做 ranking。基本原理是,把每個網站當作節點,然後把連入與連出的連結當作是每個節點的連線,那抵達某個特定節點的機率就代表該頁面 (page) 的知名度;越容易抵達某個網頁代表被很多網頁參考,也就是該網頁知名度越高。 簡單來說,馬可夫模型主要就是從這個狀態到下一個狀態給定機率 P,而目前狀態到所有下一個狀態的機率總和一定為1。馬可夫矩陣可以用下圖表示: 上圖用大樂透來說明的話,本文要來練習的題目,目標是 統計出 106 年度每個號碼跟下期號碼之間的機率 ,i, j 都是 49,例如: P 25,49 代表本期開 25 號而下一期開 49 號的機率,而 P 25,1 P 25,2 ... P 25,49 加總起來會是 1。 再說一次,機率理論值其實都是 1/49,這邊只是練習馬可夫模型與 Python ,因為樣本數太小,人很容易會覺得每期的號碼之間有關連,但是純粹只是機率問題。當統計的期數越多,其實會發現機率會越接近 1/49,本文只是幫助理解/說明與練習。 首先從網路上找到 106 年開獎的資料,內容如下,把內容存成 csv 檔案。Index 代表每一期開獎的號碼,Drop是落球順序,Seq是排序後的開獎順序,Special是特別號。 Index,Month,Day,Weekday,Drop1,Drop2,Drop3,Drop4,Drop5,Drop6,Seq1,Seq2,Seq3,Seq4,Seq5,Seq6,Special 1,1,3,二,18,41,47,49,22,42,18,22,41,42,47,49,45...

將 Jenkins Job 的歷史結果整理出視覺化的 Daily Report mail (三)

圖片
為了寄出統整 Jenkins 上游 Job 的 daily report mail, 第一篇 說明了 Jenkins Daily Report Job 的設定, 第二篇 說明了如何用 Python script 統計 Job result 以及產生視覺化的圖表。本篇說明如何用 jelly script 產生 html 格式的 mail,email 裡面除了顯示第二篇文章中產生的視覺畫圖表之外,也會包含前一天每個小時的 Job 結果,如下圖: Email-exit Plugin 會預設 jelly script 的位置在 $JENKINS_HOME/email-templates 目錄底下,但是安裝完畢時並沒有這個目錄,也就是說要自己在 Jenkins 安裝目錄下新建一個 email-templates 的 folder,然後把 jelly scripts 放在這個 folder 之下,以我們的例子來說就是 load-monitor-dailyreport.jelly 詳細說明可以參考 Email-ext plugin 的網頁。 這裡可以找到一些 email-ext 提供的 jelly script 的範例 ,建議要快速上手,可以 copy 一個來改,ex: html.jelly 。這個 html.jelly script 預設會包含 change set, maven, junit 等相關的內容,但是因為我們的上游 Job 都是自訂的,因此需要自己修改 script 內容,後文只說明與 daily report 有關的部分。 Jelly Script 的架構如下,後續說明主要都是 BODY 裡面的內容。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <?jelly escape-by-default='true'?> <!DOCTYPE html [ <!ENTITY nbsp "&#38;#38;nbsp&#59;"> ]> <j:jelly xmlns:j= "jelly:core" xmlns:st= "jelly:stapler" x...

Python datetime 相關的使用方法

這會是一篇持續更新的文章,會把 datetime 相關的學習記錄下來。 from datetime import datetime, date, timedelta date.today() datetime.today() datetime.now().strftime("%Y-%m-%d %H:%M:%S") datetime.now().date() datetime.today() - timedelta(days=1) datetime.combine(date.today(), datetime.strptime(str_some_time, '%H:%M').time()) if (abs(datetime.today() - some_time) <= timedelta(minutes=10)):     print ("less than 10 minutes")

將 Jenkins Job 的歷史結果整理出視覺化的 Daily Report mail (二)

圖片
前一篇文章 說明了 Daily Report 的 Jenkins Job 設定,接下來本篇會說明如何實作 daily_report.py 這個 script 會生成像這樣的 PNG 圖表: 首先要安裝 Pandas 及 matplotlib ,我們會使用 Pandas 來讀取 csv 檔案並使用相關便捷的功能來簡化/加速資料分析的步驟,並使用 matplotlib 來產生視覺化的 PNG 圖檔。 python -m pip install Pandas python -m pip install matplotlib script 相關的 module import 如下: 1 2 3 4 5 6 import os , time , sys , re import numpy as np import pandas as pd import matplotlib.pyplot as plt import matplotlib.dates as mdates from datetime import datetime, date, timedelta 我們在 Jenkins Job 內設定預設讀取 config\daily_report_demo.prop,當作 Job 參數。 config\daily_report_demo.prop 的內容如下: MY_JOB_NAME=daily_report_demo DAILY_REPORT_MAIL_TO=my_account@gmail.com MY_JOB_NAME 是指定上游 Jenkins Job 的 Job name,意思就是這個 Daily Report 是統整 daily_report_demo 這個 Job 的建置結果。所以接下來: 讀取 WORKSPACE 環境變數,這個環境變數是 Jenkins 設定的,用來取得 Jenkins job 的自訂工作區位置,以我們之前的設定為例,工作區是在 D:\workshop 讀取 MY_JOB_NAME 環境變數 1 2 3 4 5 6 7 8 9 10 11 12 13 if __name__ == '__ma...