顯示包含「教學」標籤的文章。顯示所有文章
顯示包含「教學」標籤的文章。顯示所有文章

2019年7月26日星期五

IoT 第一步!Wifi 開關電燈,理論及實踐,為何選用 MQTT ( 二 )

【上一回】IoT 第一步!Wifi 開關電燈,天馬行空的吹水時間 ( 一 )

MQTT 特色︰



MQTT 全名是 Message Queuing Telemetry Transport,歷史及誕生,上網隨便搜都一大把資料,這裡就不說了,重點在於它用甚麼機制解決甚麼問題。

  1. Publish Subscribe Pattern

  2. 由發布者 ( publisher )、代理人 ( broker ) 及訂閱者 ( subscriber )三部份組成,這樣的結構可以伸延出各種玩法,例如 broker 可限制各種 publisher 資源存取,管理服務品質等等。

  3. 輕量、可靠的二進制通訊協定

  4. MQTT 格式主要分為標頭、主題及訊息,標頭是一些定義訊息,例如怎樣的傳輸品質,有無 username、password 之類,主題設定給 subscriber 訂閱用,訊息又可稱為 payload,可以看成 binary,所以它是甚麼都可以,定義為 XML、JSON、字串等等。

    XML 分支當中有個 SOAP,可以用 BASE64 編碼,把 Binary data 寫進去,例如圖片、音樂,不過在 MQTT 「輕量」的限制下,不能寫太多資料進去,詳細限制,請參考下面連結。

  1. 主題階層式訂閱

  2. 如果要訂閱多個主題,而那些主題又是同一組別,要把多個主題逐個訂閱嗎?可以用 wildcard 方法,一次訂閱,如果主題定義得好,還可以跟據主題,做點有趣的事,這部份去到寫程式碼 callback 部份才說。

很虛無縹緲……再看下去,下面有更多使用 MQTT 好處及想像,基於以上三點才能實現。

2019年7月8日星期一

IoT 第一步!Wifi 開關電燈,天馬行空的吹水時間 ( 一 )

【上一回】電子玩具必備基礎!KVL、KCL、V = IR、P = VI、R = ρL/A


上次了解過連基本都算不上的電學,作為 Maker 不需要全知全能,只需要不斷試錯,不斷學習,認識用電有多危險,計算風險後實行計劃。

用 WIFI 開關燈,說起來容易,做起來才知有難度,從零開始構思及實踐,真是非常困難,比起開關燈這個項目,學習發現問題及自行解決問題,這層意義更大,會不會研究,都看這種能力,能不能發揮好,要看知識基礎有沒有打好,有沒有人脈給你好建議,能不能遇到高人指點,都是看運氣。

本篇純吹水,由幻想、搜集資料、發掘問題到確立方法,下一回理論,最終回才是動手做,沒興趣自問自答環節,可直跳去最終回,不過建議看下去,項目本身不是重點,學習找出問題及研究方法才是本篇主旨。

注意事項︰


用 220V 交流電!一個失誤可致命!你必須知道自己做甚麼,本人不會負責讀者的人身安全!

2019年5月2日星期四

Raspberry Pi 減肥、備份、重灌及技巧


減肥及備份 Raspbian



上一回完成安裝及設定,這一回分享如果節省更多空間,把不會用到的程式移除。各有所需,我不用的程式,並不代表讀者不會用,請酌情刪除。

經過一番 DIY 後,一個乾淨完美的 Raspbian 誔生,如果用官方自帶 "SD card copier" 只能clone 相同容量 TF 卡 ,做法不夠靈活,這裡會分享裁剪 TF 卡,造一個更細容量的 Image 檔,可以將 Image 放落一張不同容量的 TF 卡中,這做法靈活得多之餘,又可以當成檔案備份或分享給人使用,亦可以不受實體卡限制,造多個 Image 版本出來測試,好處多的是。

最後分享一些考慮因數及使用技巧給大家參考,避免後期不斷撿漏,想清楚自己要做甚麼,要做個怎樣的 Raspbian,一開始計劃好,就不會手忙腳亂。

這張 Cheatsheet 已包含之前及這篇文章所有 command 及設定檔,可以先下載回來,再看教學。

( 註︰這是基於 Raspberry Pi 3B+ 版本寫,用 4B 的讀者,自行吧 apt-get 之類 command 改成 apt 即可 )

2019年4月24日星期三

2018年11月30日星期五

申請 Google Cloud Platform ( GCP ) 及示範 Kubernetes Engine

上一回【Docker 上的 Kubernetes

GCP_cover.png

上一回硬將 Docker-compose file 用落 K8s,而且是無法設定的 single node cluster 模式,還有煩人 database lock 問題未解決,用來開發還好,但用在 production 上,無法接受。

一邊看 GCP 有甚麼可以設定,一邊解說功能及使用方法,這次主要說 Kubernetes Engine。

流程︰
  1. 前期準備︰
    • 申請 GCP
    • 建立 Project
    • 設定帳單
    • 安裝 Google Cloud SDK 或使用 Google Cloud Shell

  2. 開始使用︰
    • 設定 project 及 zone
    • 建立及授權 cluster
    • deploy image 到 cluster
    • 測試結果

2018年10月31日星期三

Docker Network 及 Docker Compose 教學

上一回【Docker 基本名詞及概念 +  用 Eclipse 建立 Docker image

docker_network_1.png

先學 Docker Network 及 Docker compose 沒壞處,K8s ( Kubernetes 簡稱 ) 設定可以由 compose 轉換過去,學習寫 yaml 是必經過程,而寫 Docker 的 yaml 需要 Network 知識,就算是 K8s 也避不了 Network 問題,懂 Network 是必要條件。

2018年10月8日星期一

Docker 基本名詞及概念 + 用 Eclipse 建立 Docker image

上一回【Docker 導覽及申請

學習 J2EE 技術,首先要有 Server……

Web Server ( eg.apache )、application server ( eg.TomEE plus )、database server ( eg.apache derby )、authorization server ( eg.OpenLDAP )、mail server ( eg.Postfix )

不要這樣好嗎?我只是個打字員,System administrate 不是我業務範圍,還沒開始打字,已在建立 Server 那步倒下,不是本末倒置嗎?

假如有個現成 Server,下載即用,世界是不是變得不一樣?

說起來很美好,實際上還是有限制,不能完全不懂各種 Service 怎運作,連基本設定都不會,就算給你下載回來也只是白忙一場。

舉例,建立某 Server 要十個步驟,有熱心人士給你做好前五步,餘下的五步怎樣?把 root 密碼改一改,把網址改成自己,很基本吧?好了,別人的設定不一定適合自己,要怎改?沒有基本知識,連上網 google 的關鍵字都不會,怎做下去?

調整心態,步驟及麻煩的確省了,但不是完全無痛建立 Server,了解 Docker 怎運作才知道怎建立 Docker image。

2018年9月27日星期四

Docker 導覽及申請

docker logo

【應用】是為了解決某種問題而誕生,那麼 Docker 會為你 ( 你的團隊 ) 解決甚麼問題呢?

首先,要覺得 painful 才能體驗 Docker 的好,如果是 painless 的小問題跟本沒必要學 Docker。

假設,現在你是個孤獨的程序猿 / IT狗,沒錢、沒朋友、沒自信……
甚麼都沒有,也有好處……
沒有負擔,沒東西可以輸……
由零開始建立系統……


———————————速查列表 ( start ) ————————————

不想看廢話,可直接跳去 Docker 申請部份。
沒興趣、不知 Docker 是甚麼,請由頭開始看,或許變得有點想學。
———————————速查列表 ( end ) ————————————

2018年9月12日星期三

JNDI + Derby + TomEE Plus 教學

JNDI 用來做甚麼?


JNDI 全名是 Java Naming and Directory Interface,重點在於【Naming】及【Directory】這兩個字,簡單來說,就是查冊服務,用【名字】來查找需要的【目錄 / 服務】。

舉例,香港公共圖書館借書時,有沒有留意書背?那組數字加英文就是索書號 ( Naming ),是個獨一無異的名字,只要用這個名字搜尋公共圖書館目錄 ( Directory ) 就一定找得到想要的書。

與 Database 用 Primary key 搜尋有甚麼分別?


用途不同,Database 用於處理資料,Database 需要頻繁讀寫,而 JNDI 主要透過設定 J2EE container 更新資源,查找  ( lookup ) 目錄 / 服務 / object 等,只需設定一次就好,不會經常改動設定檔吧?

JNDI 目錄 / 服務有甚麼?


放甚麼都可以,不像 Database 那樣,有 data type 及資料長度限制。JNDI 常見用法有以下幾項︰

  • Datasource
  • LDAP ( Lightweight Directory Access Protocol )
  • WSDL ( Web Services Description Language )
  • entry ejb

本文只示範 datasource 設定及使用,日後有機會再補上其餘三項。

2018年7月17日星期二

Eclipse 上使用 Apache TomEE

TomEE 是甚麼︰


Apache_TomEE.png

Google【TomEE 介紹】吧,千篇一律的介紹,附有安裝、設定及簡單的部署示範,簡單來說,重點在於 TomEE Philosophy。

  • Be Tomcat
  • Be certified
  • Be small

三點說完 TomEE 理念。

官看版濃縮精華必看, Overview 差不多包含所有基本資訊,雖然是 JavaEE 6,但基礎不變,大部份用在 JavaEE 7 標準也可以。

2018年6月29日星期五

XML 教學、技術入門及應用 (1)

XSLT (Extensible Stylesheet Language Transformation )?
Web service?
AJAX ( Asynchronous JavaScript and XML )?

全都是 XML 衍生出來的技術,所以先了解 XML,才能解說上述技術怎用。因為組合眾多技術而成,所以有不明白的地方,先記著,回頭再看的時候就會突然想通。

XML 是甚麼︰


XML全名是可延伸標記式語言 ( Extensible Markup Language ),「可延伸」是甚麼?「標記式」是甚麼?先放一邊,由 XML 語法及基礎說起才能理解。

XML 除了給「人」看,還要給「電腦」看,電腦看得懂,能做的事變得更多,例如用程式處理 XML。

XML_1.png

2018年4月19日星期四

ActivePresenter 7 無水印,免費螢幕錄製教學

免費、簡單易用、功能齊全、無水印,制作視頻教學最佳幫手。
介紹怎用之前,先了解免費版、基本版及專業版分別,有需要才付鈔。

ActivePresenter Free Edition 限制
https://atomisystems.com/faq/

ActivePresenter Feature Comparison
https://atomisystems.com/pricing/

以下是用免費版效果︰

2018年4月18日星期三

Windows 10 內建錄影

不加工,純錄影,用內建錄影就好,如果要加特效及字幕之類,用 ActivePresenter


在 Windows 10 控制台的設定,進入【遊戲】這選項。

Windows 10 內建截圖


最簡單截圖工具,如果要加箭頭、邊框、高亮等等功能,用 PicPick
如上圖, 按 WIN鍵 + R,輸入 Snippingtool 便可以開啟工具。

2018年3月22日星期四

Object Oriented Programming ( java )?先放下,現在砌模型,玩遊戲

cover

事先聲明,不是教大家組裝精美模型,只是想透過組裝模型,說明 object oriented 這種程式設計概念。一半加餸,一半炒冷飯,換個例子,加點新意,編寫新文章。

文章很長,有很多概念上的東西學,一定要一邊動手試,一邊思考為甚麼,有沒有其他用法之類。總言之,別急,看一次是學不會,看多幾次也是學不好,object oriented programming 要靠實踐及知識基礎才可以學好,兩者缺一不可。

多去 GitHub 看看別人怎用 object oriented,有時候會看到你意想不到的用法,看到像魔術一樣的用法後,可能會知道自己還有所欠缺的知識,因為無知才覺得像魔術,知道原理後,這只是個掩眼法。

例子程式碼 ( V1_gunpla_example )
https://github.com/IntegrityKnight/java_object_oriented/releases/tag/V1_gunpla_example

2018年2月13日星期二

GitHub 及 EGit ( PART 8 / 8 ) + GitHub 完整流程

接上回【GitHub 及 EGit ( PART 7 / 8) + GitHub 介面及功能

講解過 Git、講解過 EGit、也操作過 GitHub,是時候示範一次完整流程是怎樣。

完整流程分兩種角色︰
一個扮演 Repo owner 角色,另一個扮演 contributor 角色。

現在先看官方宣傳片……


宣傳概念,假設人物去解決甚麼問題,以故事形式簡介 GitHub 整個流程。
這裡會分段解說影片,以 Eclipse + Egit + GitHub 實現完整過程。

2018年1月16日星期二

GitHub 及 EGit ( PART 7 / 8 ) + GitHub 介面及功能

接上回【GitHub 及 EGit ( PART 6 / 8 ) + Git Conflict

在申請 GitHub 時,有簡單介紹過介面
https://javatoybox.blogspot.hk/2017/07/github-egit-part-1.html

現在介紹,是真正使用 GitHub 的介面。最基本的 Setting、Fork、Issues 及 Pull requests 介面操作詳盡介紹,而其他功能及介面教學,或許以後再補上。

profile 介面

2017年11月16日星期四

GitHub 及 EGit ( PART 6 / 8 ) + Git Conflict

接上回【GitHub 及 EGit ( PART 5 / 8 ) + Git Branch

Git 最困難的部份就是出現衝突 ( Conflict ) 時,要如何處理,多數人都會用【Merge】解決,雖然還有【rebase】這個方法,但這個方法會重寫 commit history,用法不當會讓參與的人相當困擾。

不想按部就班看,可直接前往 總結,看看本篇文章有什麼能用。

3.6 Git Branching - Rebasing
https://git-scm.com/book/en/v2/Git-Branching-Rebasing

———————————簡易的分隔線————————————

事前準備︰


看似只有一個分支,其實是兩分支

現在的 History 是這樣的。