[TIL] VPP 相關 Troubleshooting 紀錄 Mar 08, 2019 VPP 目前只能使用 2M 的 Hugepage 依據目前以下的兩份文件,是建議使用 2M 的 Hugepage,自己測試時,即便已經宣告 1G 的 Hugepage 是沒辦法執行的 https://fdio-vpp.readthedocs.io/en/latest/gettingstarted/users/configuring/hugepages.html https://media.readthedocs.org/pdf/adenisco-vpp-docs/vpp-13957/adenisco-vpp-docs.pdf - 2.1.2 安裝 VPP 後,DOWN 的 Network Interface 使用 ifconfig (or ip a ) 會看不到。 在這之前,不僅安裝了 VPP ,還更新 i40e 的 driver 在眾多的程序後,發現 ifconfig 看不到那些有支援 SR-IOV VF 的 interface,以為是 driver 被我更新更新到壞掉了。 一直重新 make install driver 但還是沒效。 仔細一看,發現 igb 的另外一個 DOWN 的 Network Interface 也不見了。 不過硬體資訊有看到 $ sudo lshw -class network -businfo [sudo] password for winlab: Bus info Device Class Description ========================================================= pci@0000:01:00.
王永福老師《教學的技術》新書見面會 (新竹場) 心得紀錄 Mar 06, 2019 時間:2019-03-06(三) 18:30 ~ 21:30 地點:新竹市東區大學路1001號 (國立交通大學浩然圖書館B1國際會議廳) 活動資訊:https://www.accupass.com/event/1812210828339226451130 現況與參與動機 從去年開始,上台分享所學的技術的機會越來越多,甚至到企業的教育訓練都有。就在前幾個禮拜,也在課堂中分享近兩個小時的 container 技術和 Kubernetes 給修指導教授課的同學們 (這兩個小時的課還挺臨時的,投影片和備課只能花費 2 天來趕工。)。 我很感激有這些機會能夠分享所學,不論是透過演講、教育訓練等。然而心中總是有一個疑惑,就是我可以好好地講我知道的東西,然而聽的人真的聽得懂嗎?我並不知道!雖然有些人會問問題,但其他人呢?我希望的是大家都能夠有收穫,但真的是在我這個分享的時間中,大家都並不覺得是浪費時間都有收穫嗎?這問題其實一直困擾著我。 就在這活動報名期間,看到凍仁翔 大大在 Facebook 上的 PO 文,在看到交大生優惠,我決定給自己一個機會,來聽聽看。 但說實在的,很多演講很厲害的大師們,大多數都有著自身的人格魅力,演講精彩,是可以想見。但如果我沒有自己的風格呢? 在參與這場講座之前,我只抱持姑且聽聽,畢竟講軟實力的書和演講也很多,到底所謂的 《教學的”技術”》 是真技術,還是就是,喔!要培養軟實力呀! 總之就是半信半疑的來看看了! 而在自己的內心中,也對所謂的 “技術” 下了個定論:這是個教學法,我是可以複製的,它是可以被學習的,它是有理論的,而擁有了這項”教學的技術”,就可以帶給未來參加我的技術分享的與會者有很棒的收穫的! 參與紀錄 因為是報名交大生的優惠票,所以就沒有買書。這邊真的要感謝 凍仁翔 大大 直接將他的套票中的書送給我。而且還是有 王永福老師 的親筆簽名呢! 因為不認識王永福老師,所以抱持著不期待不受傷害的心態來聽。畢竟期望越大,失望也可能越大,所以把心中的水杯清空來聽,就是最安全的。 王永福老師的一開始開宗明義的告訴我們為何辦簽書會以及我們會得到什麼收穫。也介紹他自己。而在一開始,有注意到王老師的簡報風格多數是照片配文字,且字並不多,呈現的幾乎是重點。 在這場演講中,他分三個案例: 教學:分享三種教學法。 分享:實際使用老師的 教學技術 的 “學習看 X 光片之教學”。 修煉:給予大家建議和參考。 而在教學案例中,王老師分三個實際的教學法: 第一種:老師很常會用的教學法,通常不會問學生問題 (問:”到這邊有問題嗎?” 這種問題自認為不算。) 第二種:有互動的課程 (使用分組) 第三種:幫參與的人創造一個投入的理由,讓大家投入到整個課程中。 接著是一位馬偕醫院的醫師使用”教學得技術”教大家”如何看 X 光片”。 敬佩的是因為他的教法,就連我這個不能考進醫學系的人都知道如何看 X 光片!而且花費的時間真的不多。 只要使用”來”、”找”、”查”三步驟,即會看 X 光片。 來辨色 越硬越白 空氣最黑 > 肺臟 > 液體 > 骨頭 > 金屬最白 找正常 找 R (or L) 可以看到脊椎 可以看到肩頰骨是三角形的 可以看到肺的血管,像樹根 (樹狀圖) 可以看到心臟 查異常 可以知道氣胸(比原本的肺臟黑)、腫瘤(有點白)、積水(淺灰)… 但上面打出來這些,都是透過很多的投影片以及教學法所構成的。(所以現在還能記蠻多的)
5G-PPP Software Network White Paper 畫重點筆記 Feb 11, 2019 From Webscale to Telco, the Cloud Native Journey https://5g-ppp.eu/white-papers/ 這邊是一篇”畫重點”的筆記,關於 5G & Cloud Native ,From 5G-PPP(5G Infrastructure Public Private Partnership) 的白皮書。 1 Introduction Software in 5G-PPP so far from “boxes” to “functions”, and from “protocols” to “APIs” Cloud impact in general Cloud impact in telecom ecosystem in particular covering Service-Oriented Architecture (SOA), Microservices Architecture (MSA) and Service-Based Architecture (SBA), the latter being adopted in next generation CORE [15] telcograde enhancements that should be added in frameworks like Kubernetes, monitoring, stateless design, etc… What are the specific requirements between Webscale and telco players?
第一次玩 operator-sdk 就上手 Feb 04, 2019 文章脈絡 前言 Operator Framework 是什麼 認識 operator-sdk CLI 實作開始 建立 K8s 環境 安裝 operator-sdk CLI 用 operator-sdk CLI 建立一個 operator 了解一下新產生的 helm operator 中的檔案 編輯檔案 先在 K8s 中 deploy CRD Build operator container 在 K8s 中部署 operator 在 K8s 中部署自己定義的 custom resource 結語 前言 在接觸 Kubernetes 一陣子後,會發現一堆 operators 。 而很殘念der,自己到目前都還沒有真正好好的玩過。 雖然在 operator-sdk 出現以前,有很多人都自己手刻 operator,不過既然 operator 目前都有個 Framework 了,當然就來玩它囉! Operator Framework 是什麼 是一個 open source toolkit 管理 Kubernetes native applications, called operators, in an effective, automated, and scalable way 這個 Framework 有兩個主要的專案: Operator SDK: 就可以用它 build operator。 Operator Lifecycle Manager (OLM): 可以管理 operators 和 CRUD Kubernetes resource 用…。(可以到這邊玩玩:https://www.
[TIL] 5G 與 Kubernetes 的一些資料 Jan 25, 2019 因為要開始面對準備論文的參考文件,加上對 5G 不熟,所以從 Video 開始來看。 找到一些蠻不錯的影片,下面分別對這些影片做個間單的描述。 ⭐ Migrating the Next Generation Mobile Core Towards 5G with Kubernetes - Karla Saur, Intel - Published on 12 Jul 2018 ⭐ Kaloom Kaloom SDF Features - Published on 27 Nov 2018 Kubernetes Integration with Kaloom SDF - Published on 11 Dec 2018 The Telco Networking Journey to Cloud Native: The Good, Bad, and Ugly - Heather Kirksey - Published on 15 Dec 2018 Keynote: Opening Remarks and Networking Journey to CNFs - Arpit Joshipura & Dan Kohn - Published on 26 Sep 2018 1.
[咖啡學習] 味覺/嗅覺開發課程 - 拆解咖啡風味與香瓶體驗 Jan 20, 2019 時間:2019/01/20 地點:新竹 RD cafe 課程資訊:https://www.facebook.com/events/760707187623478/ 內容脈絡 前言 筆記 過程與心得 前言 不知道從何時開始,總之咖啡目前已經變成我日常中的一部份。 回頭想想,才發現,我喝咖啡那麼久,但都不了解咖啡,覺得很不 OK。 所以心中蒙發了想要好好了解咖啡的念頭。 當然,作為一個工程師,自己的本業會努力深入,而咖啡這個坑,我想我只要掌握基本的常識即可。畢竟術業有專攻。除非,碰咖啡碰到深陷其中囉! 今年目標希望好好的來學習咖啡囉! 講師 RD cafe 的烘豆師 - Justin 林永祥 講師,有取得 CQI Q Grader 的證書,也擔任台灣諸多生豆品質評鑑的評審。 筆記 以下為自己參考講義與自我理解的內容,所以可能會有誤的地方,還請指教。 咖啡練習 味覺訓練 SCAA 新版風味輪 香瓶 36 味 vs 香瓶 T100 發非風味地圖 T100 介紹 嗅覺訓練 如何描述咖啡風味 咖啡練習 最好的練習,就是多人一起喝同一壺咖啡,一起描述咖啡的風味 在高溫的時候喝最好 吃清淡一些 好咖啡 vs 好喝咖啡 客觀 vs 主觀 咖啡豆好壞 vs 好喝、滑順、不酸、不苦 … 咖啡品嘗 好咖啡包含:餘韻(Aftertaste)、口感(Body)、平衡性(Balance) 通常描述上會包含 香氣(乾/溼香) (Fragrance/Aroma) 研磨後 vs 粉被水浸泡後 風味 Flavor 咖啡特徵 餘韻 Aftertaste 咖啡喝下後,停留在口腔內的好風味 酸質 Acidity 口感 Body 觸感 (滑順 or 刮舌) 平衡性 Balance 風味 + 酸味 + 甜味 + 口感 … / N 乾淨度 Clean Cup / 甜度 Sweetness / 一致性 Uniformity 味覺訓練 咖啡五味:酸甜苦鹹鮮 Q Grader 杯測師 9 杯魔鬼水:甜鹹酸 x 弱(#1)中(#2)強(#3) Q Grader 杯測師 魔王水:混合 2 種以上的甜鹹酸 & 不同強度 前兩種都有答對,最後一種只能判斷甜鹹酸 ,強度和答案是顛倒或微出入 (因為如下說明)
2018 in retrospect and prospect Dec 31, 2018 2018 年是一個不斷學習和成長的一年。在 2017 年總是不斷的貶低自己,也嘗盡了很多苦頭,也就下定決心重新歸零學習。不過原本是以為外務沒那麼多,專心學習就好,但看來 2018 年並不是如此。這邊就來做個紀錄了。 1. 孵化 TGmeetup 專案 在 2017 年,接觸到了社群,也了解辦社群活動時,總是希望可以不和其他相同領域的社群活動衝突,也因此開始構思了這個蒐集全台灣社群活動的工具。 而在前面設計初期,想了很多,建構了這個專案的雛形,也演變成其實可以蒐集全世界的技術社群資訊。再透過活動報名平台的 API 來蒐集到最新的活動資訊。 當然,從原本的設計是需要自己 Host 一台 server,但懶人如我,想說技術性的社群應該都會用 CLI ,一開始就以不要自己維護機器的方式進行。 一開始我只做了 CLI 版,感謝 Lego 一起加入開發,也做了 Web、RSS、Calendar…。 當然還有很多可以加強改善的地方,以及需要更多的社群資料的加入。 很感謝給予星星支持這個專案的朋友,我會努力繼續地讓這個專案越來越好 :) 這邊有更詳細的專案出生紀錄呢! [TGmeetup] 從孵化到出生之全記錄 2. 接觸 Kubernetes 感謝 Sam 的介紹,進到 ITRI 實習,接觸了 Kubernetes 。感謝 Mac 哥指點,Kubernetes 要在最短時間內學習有效,就是 Hard way 手動安裝啦!這個基礎的學習經驗,真的幫助了不少在往後的 debug。然後在 ITRI 一起被台灣衫 2 號玩(誤),真的是驚險刺激。雖然一個 Intern 理論上不會有什麼太多的事情,不過時間上,卻也運用的很剛好 XD。能夠協助解完一個又一個的 Issue ,也是挺有成就感的。:) 經驗值+1。 3. 認識在社群的前輩和朋友 因為是 DigitalOcean Hsinchu 的志工,一方面努力的找講者,也是努力的在找可以和其他社群合作的方法。在自己人脈不夠多的情況下,今年,真的很感謝 Louie Lu, Max Huang, Kevin Cyu 擔任講者。
[TIL] 製作 Ubuntu 開機隨身碟相關參考連結 Oct 26, 2018 因為每次重做開機隨身碟總是要查一下要怎麼做。所以這邊就做一下記錄。方便之後查找 參考連結: https://tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-macos https://www.youtube.com/watch?v=fkBfom4FQIQ&feature=youtu.be Ubuntu 16.04.5 LTS: http://releases.ubuntu.com/16.04/
IPVS-based Kube-proxy for Scaled Kubernetes Load Balancing Oct 15, 2018 這篇為 10月19日 talk 的文字版, slides 是 https://speakerdeck.com/sufuf3/ipvs-based-kube-proxy-for-scaled-kubernetes-load-balancing 。 內容脈絡 Preface (前言) Introduction (介紹) Kube-Proxy What is Kube-proxy (什麼是 Kube-proxy) Kube-Proxy mode IPVS LVS What is IPVS (什麼是 IPVS) IPVS with Netfilter (IPVS 和 Netfilter) IPVS vs iptables (IPVS 與 iptables 的比較) IPVS-based Kube-proxy Why using IPVS? (為什麼要用 IPVS) How IPVS-based Kube-proxy work? (IPVS-based Kube-proxy 是怎麼運作的) Run Kube-proxy in IPVS mode (來執行 IPVS mode 的 Kube-proxy) IPVS Service Network Topology Example Implement IPVS-based K8s service load balancing (實現 IPVS-based K8s service load balancing) Conclusion (結論) Preface (前言) 在一般使用 Kubernetes 的 kube-proxy 情況下,通常都使用 iptables 模式。
實現 IPVS-based K8s service load balancing - 不同 namespace 擁有自己的 external IP Oct 15, 2018 文章脈絡 前置作業 環境說明 K8s 於不同 namespace 擁有自己的 external IP 之環境 部署 測試 前置作業 1. 把 IPVS 的 kernel module load 進來 modprobe -- ip_vs modprobe -- ip_vs_rr modprobe -- ip_vs_wrr modprobe -- ip_vs_sh modprobe -- nf_conntrack_ipv4 cut -f1 -d " " /proc/modules | grep -e ip_vs -e nf_conntrack_ipv4 2. 在啟動 kube-proxy 時,參數設為 --proxy-mode=ipvs (如果要使用其他演算法,那可以設定 --ipvs-scheduler=rr rr 改為其他的) 3. 如果是在 v.10 之前的版本, kube-proxy 要加下面的參數 --feature-gates=SupportIPVSProxyMode=true 4.
申請 GitHub OAuth 權限紀錄 Oct 11, 2018 前言 會來使用 GitHub 的 OAuth 是因為發現 TGmeetupBot 在開 issue 的時候,總是會開到重複的 Event Issue。 在經過一番的拆解後,發現雖然都是使用 Basic authentication ,用 Postman 是可以看到所有的 Issue ,但是用程式卻是只能看到最新的 30 筆 issue。 所以就需要 query 更多的 GitHub API 來比對沒撈到的 issue 用搜尋的方式確保不會開到重複的 Issue。 但卻碰上 Rate limiting 的問題了。 因為每小時只能有 60 個請求,但現在卻超過了。 所以就要來用 OAuth 了。 以下是參考 Authorizing OAuth Apps 申請 OAuth 的紀錄。(讓自己下次在申請 OAuth 時,可以翻閱這個筆記,快速記得。) 1. 申請 OAuth2 認證 到 https://github.com/settings/applications/new 註冊成為 OAuth 使用者。 必填欄位 “Application name” “Homepage URL” 與 “Authorization callback URL” Application name:為 Application 名字的字串 (這邊可以隨意的字串,方便管理即可。) Authorization callback URL:請填入 http://localhost:8000/ (這欄位是為了拿一次性的 access token,後面會提供如何設定的範例,這會需要在本機上進行。) Homepage URL: 隨意的 URL 範例圖
關於加速 NFV Data Plane 的 SR-IOV 與 DPDK Aug 20, 2018 本篇是個初步理解 SR-IOV 與 DPDK 兩個技術的筆記。 內容綜合官網的說明、參考 https://www.metaswitch.com/blog/accelerating-the-nfv-data-plane 的描述、自我的理解。 如有任何描述錯誤,敬請指教。 本篇是個個人筆記。文章脈絡大致如下: 一句話形容 SR-IOV 與 DPDK SR-IOV 的源起 SR-IOV 的技術理解 DPDK 的緣起 DPDK 的技術理解 一句話形容 SR-IOV 與 DPDK 一句話秒懂的形容: SR-IOV: SR-IOV 是一種技術,使用這項技術,就讓虛擬主機或是虛擬化的容器如同直接接上實體網卡一樣,封包一進到實體主機的網卡後,就等於直接進到虛擬主機或是虛擬化的容器中。 DPDK: DPDK 這項技術,可以讓進到實體主機的網路封包,直接跳過 Linux Kernel 層,送到 User space 的 Applications 做處理。 以上兩種技術,皆是 Intel 最先提出的。 SR-IOV 的源起 這一切要回到當初,虛擬主機的技術講起。 假設在一個實體主機上有幾台 VM,此時當實體主機上的網卡 (NIC) 收到一個封包的時候,會向 CPU 發送一個中斷請求 (interrupt request = IRQ),然後 CPU 就必須中斷目前在做的事情,轉而處理這封包,把封包送到對的 VM 中。而封包那麼多,中斷就會一直發生,這樣也會降低 CPU 的效能。而且不只有實體主機上這個 CPU 的 IRQ 問題,VMM (Virtual Machine Manager) 的 CPU 也會被中斷,只要它辨識出 package 要送往的 VM ,它就會向 VM 自己的 CPU 請求中斷,叫 VM 的 CPU 來處理這封包。
[CORD] CORD 平台學習筆記 Jul 26, 2018 From: https://wiki.opencord.org/display/CORD/Documentation 分為三個 components: Trellis: CORD fabric 的網路架構 service composition 中的 overlay 虛擬化角色。 CORD Monitoring Service 是 CORD service ,專門蒐集與分析即時的 metrics。 XOS 專門 configure 和控制 CORD services. Trellis From: https://wiki.opencord.org/display/CORD/Trellis%3A+CORD+Network+Infrastructure underlay leaf-spine fabric + overlay virtual networking + unified SDN control (underlay + overlay) The efficient of unified SDN control (underlay + overlay) 為了 tenant 網絡的分佈式虛擬 routing 多播流量傳輸的優化 目前有兩個 ONOS cluster onos-cord 負責 overlay((virtual networking and service composition)) 和 access 的 infrastructure。 分別 hosts VTN 和 vOLT 的 APP。 Multicast control: IGMP snooping onos-fabric 負責控制 fabric 與upstream routers 的介接。 Multicast control: PIM-SSM Trellis Underlay Fabric Ref: https://wiki.
在 vagrant(Ubuntu 16.04) 中安裝 DPDK 與 OVS 紀錄筆記 Jun 27, 2018 本篇使用的 Vagrantfile 可參閱 https://github.com/sufuf3/network-study-notes/blob/master/DPDK_OVS/Vagrantfile 前言 這是一個 Open vSwitch with DPDK 的安裝紀錄,OVS 可以在 userspace 完全使用 DPDK library 。 環境需求 如果是使用 Linux ,在 Linux 中 kernel 版本要大於 v3.0.0 版。 DPDK v17.11.2 如果會使用到物理的 NIC 網卡,那就要使用有支援 DPDK 的網卡。可以參考 http://core.dpdk.org/supported/。(網卡查詢:`lspci | grep -i net`) 參考來源:http://docs.openvswitch.org/en/latest/intro/install/dpdk/ 前置作業 參考 http://doc.dpdk.org/guides/linux_gsg/sys_reqs.html 在系統需求上,有三個在編譯 DPDK 的前置作業。 1. 在 x86 上 BIOS 設定的先決條件 不過大多數的平台,不需要特殊的 BIOS 設定,所以這邊跳過。 2. 需要的工具以及 Libraries GNU make coreutils: cmp, sed, grep, arch, etc.
[CORD] 初步認識 CORD 是什麼之筆記 Feb 08, 2018 本篇為參考 CORD 之「Central Office Re-architected as a Datacenter, IEEE Communications, October 2016」與 https://wiki.opencord.org/pages/viewpage.action?pageId=1278047 所做的整理筆記。 簡介 CORD 全名為 『Central Office Re-architected as a Datacenter』,是由 ONLAB(ONF) 所提出的一個新的電信網路機房的概念設計。這設計將會帶來經濟效益與敏捷性。透過開放架構、商業化硬體、open source 軟體,拆解原本傳統且封閉的的電信服務商的網路架構,讓新的技術在這框架中實現新的電信資料中心,並且價低採購與維護成本。 動機 為了達到 bandwidth 的需求增加以及不斷增加的服務期望,需要引進新的 Data Center 架構。然而每一家的 Telco Central Office (CO) 架構都不一樣,而這反倒也造成 CAPEX 和 OPEX 的負擔。 因此提出 CORD 架構為新一代的 Telco Central Office ,結合三大技術:SDN(Software-Defined Networking), NFV(Network Functions Virtualization), elastic cloud services。 並且都運行在白牌的硬體上。打造好的成本效益與敏捷性的網路。 註:CAPEX: Capital Expenditure(資本性支出), OPEX: Operating Expenditure(運營性支出)。 介紹 CORD 包含三大趨勢技術:
[TGmeetup] 之詳細安裝操作步驟 Jan 28, 2018 此篇文章內容同步於 https://hackmd.io/s/ByrxYmi4G 。 安裝流程 Step 1. 申請 meetup_api 的 auth Key 申請 OAuth2 認證 取得 Key 和 secret 在本機端啟動 SimpleHTTPServer 取得 access token 同意該 OAuth 使用者可以使用你的帳號。 轉導向到自己本機的 8000 port 並取得一次性的 access token 準備取得 refresh token 取得 refresh token 與 access token Step 2. 下載專案並編輯 API.cfg 檔 Step 3. 進行安裝 安裝說明 請依據以下安裝說明進行,謝謝。 Step 1. 申請 meetup_api 的 auth Key 以下操作步驟皆是參考官方的說明文件來進行,並提供簡單的取得方法。 1. 申請 OAuth2 認證 到 https://secure.
[TGmeetup] 從孵化到出生之全記錄 Jan 28, 2018 Repository: https://github.com/TGmeetup/TGmeetup 前言 趁著今天公開專案日(2018/01/28),就來紀錄一下從啟動到執行這專案的整個過程吧!算是一篇 TGmeetup 專案的雜感吧! 可能會講比較多的廢話。還請包涵。 目錄 發想 規劃與設計 動工前的失憶症 開工寫程式 寫文檔 其他修修補補 推廣 在這過程中自我的檢視 結論 感謝 發想 最一開始,是在 DigitalOcean Hsinchu 的某次檢討會最後討論下次的聚會日期時,當時大家想要避開大型 conference 和其他知名社群活動,所以開始蒐集各社團資訊(畢竟草創初期,有點辛苦)。不過,我那時非常納悶,因為我參與社群也是近一年的事,但台灣的技術社群其實有些成立了很久。但不曉得為何沒有整合社群活動資訊的平台或工具,所以開啟了我想要整合的想法。(不過有很棒的整合社群資訊平台: https://www.mindmeister.com/zh-hk/303031964?t=WS4msLPJIs ) 當然,如果整合的好,我相信這會是一個很不錯的工具。畢竟在技術圈,在有空的時間多參與技術社群的活動,都可以幫助自己的成長。所以在心中下定決心,我一定要把它做出來。 規劃與設計 有了想法,就要來實踐。 (下面是我比較跳耀性的思路,如果看不懂,還請忽略了。) 構思第一版:想像著有一個 Web 版,呈現這些資訊。然後想到麻煩的資料庫。不過這樣就要處理權限問題,登入問題。這樣要 open source 出來,可能會遇到障礙。 還有什麼方法呢? 構思第二版:啊!就仿照 CDNJS 把社群資訊用 package.json 來儲存吧。然後透過活動 API 抓到的活動資訊就儲存到另外的 events.json 檔。然後 Web 也是讀這些 Json 檔,剛剛好。 構思第三版:package.json 的格式初步訂定。 events.json 格式初步訂定。這樣我是不是要用 API server 呀?這樣在 terminal 使用的時候使用找就不用自己設定自己的 config 檔了。可是這樣架構上好像會有點複雜。維護的成本也會比較高?來賭一下好了,反正會用 terminal 的人基本上對於設定這件事情並不會排斥,反正拿一次驗證,終身免役。不管了,專案最怕的是沒有人維護,最起碼要讓這專案沒人維護時,也可以自己活得好好的。就讓大家自己在安裝前到 Meetup 上拿 OAuth 的 API 吧!(只要文檔寫得好就好。) 構思第四版:構思整個程式的架構。再加上 package.
[Build container] Container with Linux Namespace Jan 14, 2018 目錄: * 前言 * Linux Namespace 類別 * The system calls of namespaces API * UTS namespaces (CLONE_NEWUTS) * IPC namespaces (CLONE_NEWIPC) * PID namespaces (CLONE_NEWPID) * Mount namespaces (CLONE_NEWNS) * User namespaces (CLONE_NEWUSER) * Network namespaces (CLONE_NEWNET) 前言 Linux Namespace 是 Linux Kernel 的其中一個功能,可以隔離對應的系統資源。 關於深入了解 Linux Namespace ,會再另闢一篇來探討。 而這邊就先照著進行,不過為了想法上能夠知道在做什麼,我是套用 C++ 的 Namespace 概念來幫助我先進行實作,讓我透過實際的程式與操作後,而對應到原來這就是 Linux Namespace 以及要怎麼實現。 PS. 建議有一點 OS 概念跟著做會比較好,要不然,最起碼知道 PID 是什麼。 實作環境摘要 Ubuntu 16.04 Kernel version: 4.
[Build container] Docker 簡介與 Go 環境安裝 Jan 03, 2018 Docker 簡介 就軟體的 Docker 來說,Docker 是一個開放原始碼軟體專案。可以讓應用程式佈署在軟體容器下並執行。在 Linix 中, Docker 利用 Linux Kernel 中的資源分離機制,如cgroups, Namespace ,來建立獨立的軟體容器(containers)。 它最早釋出於2013/03/13,原作者為 Solomon Hykes 。 他於 2013 PyCon 的 5 分鐘 lightning talk 中提出 The Future of Linux Containers。 並在 lightning talk 中簡單展示 Docker 的使用方法。 小小疑惑: 為什麼 go 語言的專案會跑到 PyCon 中發表呢?我覺得比較有關的會是 open source 或是 Linux 相關的 Conference 呢!? Docker 擁有的特點有: 輕量化:共享同一台系統的 Kernel 資源,所以可以迅速啟動而且用的 memory 較少。而且 image 是 Filesystem 建制的,所以可以共享相同文件。 open source 標準:可以運行於 Linux distributions 和 Windows OS.
了解 npm 的二三事 Nov 27, 2017 了解 npm 的二三事 什麼是 NPM 如果你有寫過 python ,你應該會很熟悉 pip ,pip 是一個 python 的套件管理系統。(pip is package management system used to install and manage software packages written in Python. –from Wikipedia) 那什麼是 npm 呢? 就是 Node.js 的 套件管理系統啦! (A default package manager for the JavaScript runtime environment Node.js – from Wikipedia) NPM 全名 Node Package Manager。 什麼是”套件管理系統”? A package manager is a set of tools that automates and manages computer software.
Scrum framework Jul 02, 2017 一個 Sprint 為期 1~4 周。 1. 角色 可一人分飾多角,每個腳色都該做好自己的職責。 * Product Owner (PO): 決定整個產品,設定產品待辦項目的優先順序。 * Scrum Master: 教練的角色,可及時地為團隊成員提供幫助。 * Team: Team = PO + Scrum Master + Development Team 人數:7 +- 2 Development Team = 負責開發產品 2. Items * Product Backlog (產品待辦清單): 裡面是每個 Item , 放的東西有 User Story, Bug, Tech Debt (技術債),優先權高的、明確的工作項目排上面,越先做。 不明確的,排後面,之後開遠光燈會議在調整。 * Sprint Backlog (衝刺待辦清單): 從 Product Backlog 中優先權最高的幾個拉到這個清單裡,轉換成 task 就開始做。 * Potentially Shippable Product (潛在可交付產品增量) 開發團隊的產出,如果 PO 說先不要上線,就是之後 PO 可以和客戶談判的籌碼。
Scrum 敏捷軟體開發 一日體驗營@新竹 - Part 2 Jul 02, 2017 講師: David Ko Outline 敏捷觀念簡介 Scrum 基礎觀念介紹 如何組織需求 Scrum 會議 Scrum 開發方法總結 Part 2 - Scrum 基礎觀念介紹 1. 甚麼是 Scrum 🏉 A. Scrum 是一個開發複雜系統的框架(Scrum framework) B. Scrum 是… 沒有 engineering practices 像是 TDD, Unit testing, 搭檔編程 輕量級的用法 C. Scrum 方法的特性 頻繁交付高價值 小而美 小團隊 小迭代 小需求 團隊特性 自主決定 責任感 透明度 Scrum 專案開始進行時,要趕快處理的兩個問題: 1. 經常檢查你的方向是否正確,你做的東西是否是客戶要的。 2. 是否有任何方法,可以改善目前做法,讓你更快更好。 - Jeff Sutherland
Scrum 敏捷軟體開發 一日體驗營@新竹 - Part 3 Jul 02, 2017 講師: David Ko Outline 敏捷觀念簡介 Scrum 基礎觀念介紹 如何組織需求 Scrum 會議 Scrum 開發方法總結 Part 3 - 如何組織需求(Scrum 需求清單) 1. 產品需求清單 (Product Backlog) 1-1. 甚麼是產品需求清單? 所要要做的事情的清單 做甚麼事的清單 根據商業價值來排序 1-2. 產品需求清單項目的種類 2. 使用者故事 (User Story) 2-1. 甚麼是使用者故事 軟體的需求 用商業語言來描述 每個故事不會太大 寫在便利貼上 通常是由使用者寫 2-2. 使用者故事樣板 As a [role], I want to [fuction] because of [business value]. eg. As a bookstore customer, I can search for a book by the title, so that I can easily find all books with that title.
Scrum 敏捷軟體開發 一日體驗營@新竹 - Part 4 Jul 02, 2017 講師: David Ko Outline 敏捷觀念簡介 Scrum 基礎觀念介紹 如何組織需求 Scrum 會議 Scrum 開發方法總結 Part 4. Scrum 會議 1. 敏捷評估 小小迷之聲1: 就是評估這個專案可以多久完成啦!以人/天為單位。 是說,比起經驗法則,這個有個依據,雖然很多還是自己定義的 XDD。但忘了問問題的部分是,那個人/天的人的能力標準是以哪個為單位基準? junior 感覺不是,但非常 senior 的工程師感覺會做很快,中間感覺合適。但又感覺應該要依據即將參與這專案的工程師能力素質的比例,來做衡量。比方 junior 與 senior 比例約 3:2 ,如果原先是以介在 senior 和 junior 中間的能力來做估算就還要程以相對的比例,會比較好吧? 不過只是估算啦! 拍腦袋 與 敏捷評估 之間是個誤差值多和少的概念。 小小迷之聲2: 評估這件事真的不能一個人決定呀!經過這活動下來,整個就覺得傳統方式,如果是非工程師估算時間,會因為對方不了解我,然後就壓時程,根本就是惡性循環。然後做得半死的是勞累的員工。整個超不 OK 的!而經過討論評估的時間真的比較 OK,但如果討論時,遇到那種 甚麼,你這竟然覺得要花5天! 的那種人,感覺討論氣氛就不會太好~ 下面回到正題~ 1-0. 評估原則 小筆大容易 相對比絕對容易 找基準(中間值),排相對大小,算時間 1-1. 發布會議解析 Why: 想對發佈的時程和內容有個概略的估算 Who: PO, Scrum Master, Team When: 產品開發初期 I/O: input - 目標、產品需求清單;output - 發布時間、發布內容 Step 1.
Scrum 敏捷軟體開發 一日體驗營@新竹 - Part 5 Jul 02, 2017 講師: David Ko Outline 敏捷觀念簡介 Scrum 基礎觀念介紹 如何組織需求 Scrum 會議 Scrum 開發方法總結 Part 5. Scrum 開發方法總結 敏捷是一種文化,並不是流程 Scrum 是管理的框架 思維: 是照妖鏡 - 可及早看到問題點 像下棋 - 有規則、需教練指導 小小迷之聲: 也像各種運動比賽 適合的情況 不適合的狀況 小團隊,沒有正式的軟體開發方法 PO 主導性強 承認遇到危機,希望可以改善 太小或太短的專案 維護的團隊 不想變革的組織
Scrum 敏捷軟體開發 一日體驗營@新竹 - Part 1 Jul 01, 2017 講師: David Ko Outline 敏捷觀念簡介 Scrum 基礎觀念介紹 如何組織需求 Scrum 會議 Scrum 開發方法總結 Part 1 - 敏捷觀念簡介 0. Why post it 為什麼用便利貼 - 所有東西都可以看的到 - 資訊視覺化 - 彈性 - 說出更多東西 - grouping 大家來 - 共識 - voting 1. 敏捷歷史 年份 方法 1950 PDCA(Plan-Do-Check-Act): 針對品質工作按規劃、執行、查核與行動來進行活動, 以確保可靠度目標之達成,並進而促使品質持續改善 1970 瀑布式開發 1986 Spiral model(螺旋模型) 1995 Scrum 用管理角度看 1997 FDD(Feature Driven Development) 1999 Extreme Programming 2001 敏捷宣言 2003 Lean Software Development 2. 敏捷宣言 個人與互動 重於 流程與工具 可用的軟體 重於 詳盡的文件 與客戶合作 重於 合約協商 回應變化 重於 遵循計畫 兩邊都很重要,但左邊非常重要,敏捷是重計畫的方法
[機器學習] Supervised and Unsupervised Learning (監督學習與非監督學習) -Week 1-1 Jun 22, 2017 第一週 - From Stanford’s coursera Machine Learning Supervised Learning Regression Classification Unsupervised Learning Clustering Cocktail Party Algorithm Machine Learning (機器學習) 定義: Arthur Samuel: the field of study that gives computers the ability to learn without being explicitly programmed. Tom Mitchell: A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.
apt指令之套件管理整理 Mar 15, 2017 Ubuntu(Debian) 系列 apt-get apt-get update 更新套件資訊(基本上沒事就跑一下,習慣登入就下一下指令) apt-get check 檢查系統上的套件相依性情形 apt-get upgrade 更新所有有新版本的套件(基本上就是 Windows 常出現要更新的那個東西,系統更新是基本,所以沒事就 apt-get upgrade 一下吧!) PS1. 將現有的套件升級, 若遇到相依的問題(需要安裝其它新的相依套件或影響到其它套件的相依性),該套件不會進行升級而保留原套件。 PS2. 系統內心話:蛤~升級這套件還要安裝或移除相依套件唷!好麻煩唷!我還是留著這原套件好了!ㄎㄎ -u 顯示完整的可更新套裝軟體列表 apt-get -s upgrade 可以看那些套件會被更新 apt-get dist-upgrade 強制更新所有有新版本的套件 PS1. 如果遇到相依性問題, 需要安裝或移除相關套件, 就會試著去安裝或移除相依套件,而進行該套件升級。 PS2. 系統內心話:哈哈~就讓我來大刀闊斧幫你升級所有套件吧!如果其他服務因為套件升級而掛掉,你家的事!ㄎㄎ apt-get install 套件名稱 安裝套件(相依套件也會幫忙裝) eg. apt-get install vim -y 若有問問題都回答Yes apt-get –reinstall install 套件名稱 裝壞掉重裝法 apt-get remove 套件名稱 移除套件 apt-get –purge remove 套件名稱 連設定檔一起全部移除 apt-get clean 清除/var/cache/apt/archives/下的所有 DEB 套件檔 (白話文:清除已經下載的套件) apt-get autoclean
Stacer - 系統優化器 Feb 17, 2017 Stacer - 系統優化器 這套工具類似 Windows 上面安裝 CCleaner 加上系統資源監控! 來源 https://github.com/oguzhaninan/Stacer 安裝環境 Ubuntu base 桌面版本 介紹 在GitHub上面的介紹就是”Ubuntu System Optimizer”! 安裝 到GitHub頁面上點選releases 依據作業系統的位元數,選擇要下載的deb包 安裝 畫面 整個就是超級漂亮的!而且是用JavaScript寫的,超猛! 雖然Linux Mint就有系統資源監控了 不過既然安裝這麼漂亮的東西,當然是要來支持一下了! Stacer另外還包含的功能: System Cleaner:可以清除Apt cache, Crash Reports, System Logs, App Cache,不過如果有些服務紀錄是需要留的,還是要注意一下,別全選了~ Startup Apps:這個我的電腦裡沒有出現~ Services:不用在sudo service XXX stop,直接滑鼠點一下就好哩! Uninstaller:可移除安裝的套件 介紹完畢~ 之後要很潮的打開它:) reference: https://itsfoss.com/optimize-ubuntu-stacer/
終端機的超狂工具-TMUX 與指令整理 Feb 01, 2017 Tmux是個終端機工具(Terminal multiplexer),可以管理多個session,window和panel。 如何安裝 Debian / Ubuntu:apt-get install tmux 關於session的指令 tmux:開啟一個新的client(包含一個session,window,panel) tmux ls:列出有那些sessions tmux a:重回上次最新的client tmux a -t [number]:重回該number的session 關於window的指令 預設的操作要加上 Ctrl-b 功能鍵 Ctrl-b + c:建立新的window (create) Ctrl-b + number:改變window Ctrl-b + d:關閉目前的 client (detach) Ctrl-b + l:與先前選擇的window間切換 Ctrl-b + n:移到下個window (next) Ctrl-b + p:移到上個window (previous) Ctrl-b + &:刪除目前的window Ctrl-b + ,:重新命名目前的window,修改後按”enter“ Ctrl-b + ?:列出所有快捷鍵說明 Ctrl-b + w:列出目前 clinet 的window,用數字鍵切換 (window) 關於當前panel的指令 Ctrl-b + %:垂直分割window (分左圈圈和右圈圈) Ctrl-b + “:水平分割window Ctrl-b + ↑↓←→:使用上下左右鍵改變panel所在的當前panel Ctrl-b + o:移往下一個區塊; Ctrl-b + q:顯示區塊的數字代號 Ctrl-b + q + number:當數字顯示時使用數字鍵移往該panel Ctrl-b + [:讀歷史訊息,按 q 離開 Ctrl-b + {:將目前的區塊移往左邊 Ctrl-b + }:將目前的區塊移往右邊