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 擔任講者。
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 + }:將目前的區塊移往右邊