SITCON
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Owners
        • Signed-in users
        • Everyone
        Owners Signed-in users Everyone
      • Write
        • Owners
        • Signed-in users
        • Everyone
        Owners Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Transfer ownership
    • Delete this note
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Help
Menu
Options
Engagement control Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Owners
  • Owners
  • Signed-in users
  • Everyone
Owners Signed-in users Everyone
Write
Owners
  • Owners
  • Signed-in users
  • Everyone
Owners Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    --- title: SITCON 2019 R2 共筆 tags: SITCON 2019 共筆, SITCON 2019, R2, 2019, 共筆 GA: UA-34467841-15 --- # SITCON 2019 R2 共筆 :::info - SITCON 2019 議程表:https://sitcon.org/2019/agenda - 其他演講廳共筆: - R0: https://hackmd.io/FOG2p2x1RIiZTr_Bpb_RYQ - R1: https://hackmd.io/P-oMfddFSuWbEeFX1WfIVg - R3: https://hackmd.io/3enaH38DRbqo9GHz_YJuzQ ::: ## 一分钟Get一个开箱即用的linux?(Instantbox - Yuefeng Zhu) * [instantbox](https://github.com/instantbox) ### 關於講者 <https://github.com/import-yuefeng> ### sosconf 2019 工商 ### 專業 `rm-rf /*` > `rm -rf /*` 是一個對系統無害的指令👍 - 如果擁有root權限可以操作很多的東西 ### 你最近可能見過這個…… ![Linux 版俄羅斯輪盤](https://www.cyberciti.biz/media/new/cms/2017/05/Russian-Roulette-Comics.jpg) 更安全的學習Linux 你需要instantbox,不需要擔心你的指令對系統造成的影響。 ### 你需要一個instantbox - instantbox是什麼? 你需要一個瀏覽器(不是IE) > 在沙盒裡啟動一個CentOS、Ubuntu等等,玩壞也不用擔心 ### 它用來做什麼? * 學習 * 演講演示(講者學員教學環境同步) > 在不到30s內得到一個**乾淨、開箱即用的臨時Linux系統** ### 與 Cloud Provider 之差別 * 免費 * 基於 Docker (毫秒級啟動 vs 數秒鐘至數分鐘的時間) ### 誰在用它?它有什麼優點? * 教Linux的培訓班 * VPS 愛好者 * 以一個統一入口啟動多個服務器 * 企業內部學習 * LUG ### 架構 * 建議使用 Chrome / Firefox 瀏覽器 * Websocket * Docker Swarm ### 現場演示 <http://lxc.im/> 補充:[什麼是 LXC](https://zh.wikipedia.org/wiki/LXC) * 一個臨時的Linux環境 ### 未來的功能 * 支持HTTPS,保證web-shell通訊訊息安全 * 支持集群佈署,充分發揮所有服務器資源 * 支持登入/註冊,持久化存儲容器 * 可視化管理所有容器的控制面板 * 支援自定義image鏡像列表 * 支持application-mode/system-mode > application-mode > - 如果要啟動一個Python3環境,就可以直接選擇而不用選擇全新的再自己安裝 ### 如何參與貢獻? <https://github.com/instantbox/instantbox> <team@instantbox.org> ### Hexang 工商 <https://hexang.org> ### Q&A ## 104 履歷診療室~~尋找光明之路\ ## 微服務自己動手做 * [slide link](https://www.slideshare.net/YenCHenLiu6/ss-136678916) - 微服務架構 - 透過api gatway進入 - 優點 - 單一服務檔案小 啟動快 - 服務可採用不同語言與技術 - 低耦合性 - 所有東西都能分開 - 常用通訊協定 - HTTP - 需要知道IP - 可能會有很多不同服務 - 問題:我該怎麼知道當次服務的IP是什麼 - A:用命名伺服器命名服務(常用DNS) - AMQP - 我可以用message Queue - 有幾個服務就有幾個queue - 要給回去的話就利用queue導回去 - 範例 - [PIKA](https://pika.readthedocs.io/en/stable/) - [nameko](https://www.nameko.io/) - Docker - 直接在作業系統上切資源給他(直接建立在作業系統上的虛擬化技術) - 將程式直接封裝成映像檔 - 輕鬆的遷移和擴展 - 如何建立 - 配置Dockerfile ```Dockerfile= FROM python:3.7.1-alpine3.8 MAINTAINER Yenchen WORKDIR /app ADD . /app RUN apk add --no-cache gcc musl-dev RUN pip install -r requirements.txt CMD python app.py ``` - bulid - 執行映像檔 - KUBERNETES - 自動擴展、部屬、管理容器 - YAML檔描述 - 對初學者來說很複雜 - 容器單位POD ```yaml= apiVersion: v1 kind: Pod metadata: name: gateway-pod labels: app:dateway-pod spec: containers: name:pod-gateway image:daychen/gateway ports: containers:9090 name:web ``` - [參考](https://github.com/yenchenLiu/RentalManagementMicroservice) - Deployment: 無狀態的Pod - 程式碼見github - 可動態變更 - ingress - 配置外部服務可訪問的url ## 開發現代化PHP套件:從零開始 [投影片連結 ](https://speakerdeck.com/peter279k/kai-fa-xian-dai-hua-php-tao-jian-cong-ling-kai-shi ) - PHP 5.5 -> PHP 7.1 - 效能提升 - 可讀性變高 - 建置PHP7.1+環境 - ubuntu 16.04 or 18.04 - **Composer** - 可以檢查環境上的PHP的情形 > note: composer 為類似 node.js 中的 npm 套件管理器,方便 PHP 開發者進行第三方套件安裝與引入,不太確定原本記錄者的「檢查環境」的意思 - OOP Principles - Single Responsibility - 一個類別負責單項任務就好 - 可以操作只有跟user有關的東西 - Open-Close Principle - 易於擴充(Ex. Facebook login) - 對修改封閉 - Liskov Substitution - 跟繼承有關 - Interface Segregation - Don't make FAT interface - Many client-specified interfaces is better than one general-purpose interface - Dependency Inversion - 對不同類別做支援 - Design pattern - 依照上面四個準則去做設計 - 為什麼還要學這個? - Single patter 方便管理 - Solution to common problems in software design - Common language 有共通的語言(溝通上的效率) - [DesignPatternPHP](https://github.com/domnikl/DesignPatternsPHP) - 軟體開發心法 - 分析→設計→實做→測試 - [DEMO](https://github.com/peter279k/dependency-calculator) - 分析 - EX: 很大的整數相加減 - 設計 - 實做 - 用interface去定義加減乘除 - 測試 - Unit test with PHPUnit - 需要考慮到可能發生的意外 - [php-code-coverage](https://github.com/sebastianbergmann/php-code-coverage) - 同場加映 - creat-project: README - new: no README ## 手把手玩 PE Injection <3 [簡報在此](https://ppt.cc/fegQox) * 講者:短短 * PE(Protable Executable) * 微軟的一種文件格式 * 常見如exe, dll檔案 - header+body的組合 - body: 真正的內容 - Section Table - 有幾個section就會有幾個section header - Body Header - /*不知道該寫什麼 請幫忙補充*/ [程式碼及PE檔](https://ppt.cc/fYgAHx) ## 你在 VR 遊戲中過得還好嗎? * 講者:Rain - Controller - 一種Input管道 - 按鈕、角度、位置 - 消耗時間和力氣、分散注意力 - 慎選Input的方式 - UI Display - 高度介於眼睛和手之間 - 距離玩家1.5~2.5m - UI直接融入場景 - 觸發方式 - 減少轉頭行為 - 集中視覺資訊在Field of view 60^o^~90^o^ - 瞬間移動後自動面向主要目標 - 減少暈眩機率 - 避免視野遮蔽 - 遮蔽物消散 - 火球擊中玩家或打到物件之後消散,避免持續遮住玩家視野 - 擊退玩家 - 火球擊退玩家,伴隨震動與音效,較真實 - 將Input獨立處理 - 自定義介面 - 理想擴充規劃 ## 淺談社會網絡分析 * 講者:文月 * 簡報:https://slides.com/meng-yingtsai/sna_intro/ * 國小生也會的Graph介紹 * Basic Construct * Density * Distance * Connectivity * Centrality * Degree * Closeness * Betweenness * Eigenvector * Cluster * n-Clique * k-core * 暗黑網路 Dark/covert Network * Cases * 911 hijacking data * 鬆散 * Poly-drug Network * 沒有鬆散、去中心化的 * betweenness, degree centrality high * SNA的應用 * 數位人文研究 * 冰與火之歌人物關係圖 ## 誰說工程師一定爆肝!一起走入雲端世界 [投影片連結](https://www.slideshare.net/mobile/shaIliao/sitcon-2019-137916514) {%slideshare shaIliao/sitcon-2019-137916514 %} Q.對工程師的想像到底是什麼? 肥、油、宅、輪班、爆肝(他說的100%正確) 肉搜:[Mr.沙先生](https://shazi.info/) or [Mr. 礦物男人](https://life.shazi.info/) Q. 什麼是雲端?什麼東西是雲端,什麼東西不是雲端? 是一個在網路上的東西。 A. - 一個在網路上的東西 - 每天手機打開就在用 - 用了就對了,不能用就靠悲 > FB 壞了就到 PTT 靠北,PTT 壞了就到 FB 靠北 [name=scott.liao] ### 雲端在哪裡? - 雲端服務(SaaS, Software as a Service) 以前需要再電腦中安裝軟體,但是現在可以直接在網路上使用,目前已經可以把軟體包裝成服務,讓使用者可以直接在網路上使用。 - Google, Facebook - Uber Eats, Netflix (已經不需要一台電視就可以看影片,只要有網路就可以用了) - LINE, PTT, Apple Pay 雲端其實很廣義,現在再用的網路服務都算是雲端。 - 雲端運算(IaaS, PaaS) 例如會架Service - Amazon Web Service(AWS) > 提供雲端的運算資源,其實連電腦都不需要,只要有網路就不需要有電腦 - Google Cloud Platform (GCP) - Microsoft Azure (Azure) ### 為什麼要雲端 - 有**網路**就有雲端 > 現在的人不需要用電腦、可以簡化很多事情,市場有需求 - 好像能賺很多**錢** > 常用的軟體LINE等似乎都很賺錢(大的公司) - 加上雲端就是**潮** > 好像只要加上雲端就可以賣得很貴的樣子 雲端的概念就是使用者 (錢花得很快) 可以透過網路快速的touch到雲端。 ### **使用者**角度看雲端 - 節省時間成本 ### **工程師**角度看雲端 - 節省架站時間 > 更多時間 get - 建立自動化規則 > 彈性調整設備需求 ### Feature 雲端 > 優點 - 什麼都有什麼都不奇怪 - 用多少算多少,花少少的錢大大的享受 - 想用的時候就用,不用的時候就關掉 - 自動化 - 背後有一群人幫你 ### Not 雲端 > 缺點 - 不相信雲端的人 - 變化速度太快,沒有熱情不要來 - 不缺錢的人 ### Select 雲端 - Amazon Web Service(AWS) - 使用者最多 - 種類最多 - 最近的節點在日本 - Google Cloud Platform(GCP) - 老爸很強 - 對 AWS 窮追猛打 - 速度最快(台灣就有節點) - Microsoft Azure - 偏愛 Microsoft Windows - 阿里雲 - 中國推薦 ### Learn 如何學習雲端 - 線上影音課程 - A Cloud Guru - Udemy - Safari books - 線上實作 - Qwiklabs - Free tier - AWS User Group 社群 ### 未來工作 - 新創公司最愛 - 休不停的年假 - 百萬年薪 - 吃不完的零食 - 年輕妹妹很多(?) - 老牌企業轉型 - 穩定的薪水 - 穩定的制度 - 養老 > 把時間留給更美好的事 [name=scott.liao] [AWS User group](https://www.facebook.com/groups/awsugtw/) [104 工程人才計畫](http://www.104.com.tw/cfdocs/project/1702/170125_104_hr/index.html) ## 解放 Linux 桌面!用 Xlib+樹狀結構打造自己的Window Manager ### Windows Enviroment Desktop Enviroment [簡報](https://docs.google.com/presentation/d/10EBNTM8tgNT7j9lK1UjkMqoonLBlvywtFmTiUqiVBCA/edit#slide=id.g46b9b474b3_0_3) Windows Management - 其實是一隻程式 - Stacking / Floating(堆疊式/浮動式) - Gnome: mutter - KDE: KWin - Other: Openbox, 2bwm, compiz... - Tiling(平鋪式) - Linux: bspwm, Herbstluftwm - MacOS: chunkwm - Dynamic 動態式 - 結合 Stacking & Tiling ,可在兩者間切換 - i3 , dwm , awesome , Wmderland 平鋪式特性 - Window overlapping - Screen Space wasted - Manual Arrangement - Point & Click Tiling window manager - 自動安排視窗大小、位置 - keyboard-driven (vim-like) - highly customizable - 把功能類似的程式group在同一個Workspace - 跟vim很像,用習慣就很爽 選擇 Tiling Wm - 常見:i3 , i3-gaps , dwm , bspwm ... - 如果package manager沒有就自己git clone && Compile - WM != DE - System Bar: Polybar, tint2, i3blocks - System Tray: stalonetray - Notification Service: dunst - Program Launcher: dmune, rofi (好像不是dmune,求修正) - 你可以重複利用的: - Terminal - File Manager 可以自訂: - Hotkey (內建動作 / 執行 shell command) - 每個程式要執行在哪個 Workspace - 哪些視窗要float? - 那些視窗要fullscreen?(通常是遊戲) - autostart那些程式? - border color/width - gap width ### Part 2 : X - window system - X Window System / X / X11 - Unix-like作業系統上繪製GUI的Protocol - XFree86在2004年因更改License引發爭議 - Client-Server 架構 - 有 GUI 就有 X Window System (平常看到的 GUI 程式都是 X client) 通常用 GUI toolkit ,把他提供的 widget 組合 1. X Client : Terminal emulator, Firefox, Sublime Text 2. GUI toolkit : GTK+, Qt 3. 缺 4. Display server 也會接收鍵盤、滑鼠事件 5. WM 可以根據收到的 X Event 處理視窗 6. X11 中,最外面的是 X Window ,內不得每個 Widget 也是 X Window Xlib & xcb ### Part 3 為何會想自己寫 WM Choose your weapon - 語言:任何有 X -bindings (C , C++ , Java , Rust) - Client Library: Xlib or xcb - Programming Paradigm: 結構化 vs 物件導向 1. 前置作業 1. main() 2. 對 X Server 連線 3. Main Event Loop 4. 攔截 X Events 5. 常用 Xlib functions 2. Workspaces - Tree - Leaf : 視窗 - Internal Node: 切割方向(Vertical/Horizon) - Root Node 永遠存在 - 刪除 Window - 直接刪除 3. Tiling Algorithms - Add Window - Rwmove Window - 回傳所有樹葉 - 借助一個 Stack ,並從 root node 開始走訪 - - - 樹狀空間切割 Tree Spce Partitioning (Recrusive) 4. Inter-process communication - `properties.h` - Q: 我們目前在第幾個 Workspace ,只有 WM 知道,要如何讓其他程式(如 System tray )知道我們在第幾個 Workspace 後記 - Xlib 中所有 ERROR 預設都是 fatal - WM = Event + Properties + Tiling Algorithms - Segfault 很痛苦 - GDB - 但講者選擇裝 Stacktrace lib 和 glog,把 Stacktrace 寫進 log

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully