小籠包看電影
    • Create new note
    • Create a note from template
      • 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
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me 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
    • Make a copy
    • Transfer ownership
    • Delete this note
    • Save as template
    • 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 Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Make a copy 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
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me 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
    # 推甄筆記(甘芭爹!!!!) ## 戊組 - 給定 n 跟 L,求 L 最後會是啥(略過) ```python= def f(n, L): if n > 0: L.append(n) if n is odd: n = n - 1 else: n = n / 2 f(n, L) ``` - VM 跟 container 差異 VM 模擬整個作業系統(包含kernel),container 是建立在本機作業系統上的軟體 ![](https://wac-cdn.atlassian.com/dam/jcr:92adde69-f728-4cfc-8bab-ba391c25ae58/SWTM-2060_Diagram_Containers_VirtualMachines_v03.png?cdnVersion=610) 容器(Container):以應用程式(App)為單位的虛擬化技術,應用程式與其相依性資源(Dependency)會被封裝在容器(Container)中,使其可以重複利用與搬遷,容器間彼此獨立運行,互不干擾。 - 題目給 192.0.2.96/19 這類的東西,求子網路 IP 遮罩範圍 範圍為 2^(32-19) - 2,2的部分為255.255.255.255, 255.255.255.0 解釋: ![](https://www.netadmin.com.tw/upload/news/NP110208000220110208141649.jpg) 網路位址是172.16.0.0,而後面的16則代表「網路遮罩的二進位表示法中,前面16個數字為1」 如果把網路遮罩用二進位來表示,就是相當於下面這樣的表示方式: ![](https://www.netadmin.com.tw/upload/news/NP110208000320110208141659.jpg) 前面16個都是1,若把這樣的網路遮罩轉換成10進位,也就是說,網路遮罩為255.255.0.0,因此16所代表的是網路遮罩。 從上面這個例子來看,由於網路遮罩是255.255.0.0 代表在分配IP位址時,前面16個數字不能變動,只有後面16個數字能夠變動,而前面不能變動的之處就是使用網路位址的部分。 現在,來看網路位址,上面的範例中網路位址是172.16.0.0,轉成二進位就是: ![](https://www.netadmin.com.tw/upload/news/NP110208000820110208141749.jpg) 而能夠分配的IP位址為: ![image alt](https://www.netadmin.com.tw/upload/news/NP110208000920110208141758.jpg) 轉成十進位的話,就代表可使用的IP位址範圍為172.16.0.1到172.16.255.254。 所以這個子網路中可以使用的IP數量為2的16次方減2,也就是216-2=65534個IP位址。減去兩個的部分分別是172.16.0.0和172.16.255.255這兩個IP位址,為什麼這兩個要減去呢?因為172.16.0.0已經被拿來使用成這個子網路的網路位址,而172.16.255.255則是廣播位址,不能被拿來分配成一般IP位址使用。現在讀者對於IP位址分配應該已經有初步的概念了。 - XSS 跟 SQL injection 是什麼?怎麼防禦? SQL Injection 的本質就是把「 輸入的惡意資料」 變成「 程式的一部分」 XSS(Cross-Site Scripting) : 當網站沒有做好的驗證,就可以輕易輸入惡意程式碼(HTML or JS)在網站上,以此攻擊網站 防禦:驗證使用者輸入訊息、request接收白名單 第一關 1. 意識到哪邊是使用者可以自己輸入資料的地方 2. 針對不同情境去做 XSS 的防禦 3. 可以考慮導入現成的 WAF(Web Application Firewall) 4. cookie使用HttpOnly 5. Two-factor authentication 第二關 CSP(Content Security Policy): 用來跟瀏覽器講說哪些來源的資源可以被載入,哪些不行,可以利用 response header 或是 <meta> tag 來指定頁面的 CSP 規則 ### 補充: CSRF ![](https://i.imgur.com/lIjAziF.png) 防禦: ![](https://i.imgur.com/XP09mCt.png) - 分別解釋 - strong type 每個變數型別在編譯時期就完全決定好(Java,C,C++) int a = 0; - weak type 不需要宣告變數(python) a = 0; - static type 變數會被綁定到某個型別,除非經過明顯的型別轉換,不然型別不會任意改變(Python) ```python x = 3 y = '4' print(x+y) // wrong,因為 StaticType ``` - dynamic type 變數的型別可能隨時會經過隱性的轉換(JS) ```javascript var x = 3 var y = '4' alert(x + y) //Produces "34" ``` - 分別解釋 - Object Oriented Programming 1. 封裝 -> 一個物件封裝 (Encapsulation) 2. 繼承 -> 繼承者擁有某些屬性或是方法 3. 多型 -> 使用相同名稱的方法,傳入不同的參數,會執行不同的指令 (Constructor) 4. 抽象 -> 將此物件的某些屬性與方法隱藏起來 - Functional Programming 1. pure function -> 避免在運算時發生「外部狀態改變」的情境 2. First-class -> 直接賦予值或者存至陣列中當作參數傳遞 ex: const a = (x,y) => x * y call a(2,4) return 8 3. higher-order functions -> 1. 可以將函式(至少一個)當成參數傳入另一個函式。 2. 可以將函式當成另一個函式的回傳值。 ex: ```javascript var add = function(x) { return function(y) { return x + y; }; }; var addFive = add(5); var addTen = add(10); addFive(2); // 7 addTen(2); // 12 ``` - Concurrent Programming -> 使用不同 CPU 分別運行程式來提高效率 ,或是當程式在等待執行結果時 (如等待 request 請求),先執行其他程式函式 (Coroutine) - Concurrent Programming 為什麼比 Object Oriented Programming 好 -> 因為它融合OO加上Concurrent,像是Java的Thread,使得程式效率更好。 - 你最常使用的 framework 是什麼?舉出三個,並說明你為什麼用它(略過) - 使用任意三種語言達成下述功能: 讀入一檔案 zero_one.in,只包含 0, 1 兩種字元,輸出 0 和 1 哪個較多次(不會有同樣多次的情況) - 何謂雲端運算?舉出三大雲端廠商,並比較各自差異。 | | pros | cons | | -------- | ----------------- | -------- | | AWS | •**主導的市場地位**<br>•**廣泛而成熟的產品**<br>•對大型組織的支持<br>•廣泛的培訓<br>•全球影響力 | •使用困難<br>•**成本管理**<br>•壓倒性的選擇 | | Azure | •**與Microsoft工具和軟體結合**<br>•廣泛的功能集<br>•**混合雲**<br>•**支持開源** | •文檔問題<br>•管理工具不完整 | | GCP | •**專為雲原生業務設計**<br>•致力於開源和可移植性<br>•大幅折扣和靈活的合同<br>•**DevOps專業知識** | •IaaS市場的新進入者<br>•功能和服務較少<br>•歷來並非以企業為中心 | - Microservice 是什麼 相較於Monolith,他將許多服務分解成微小的service,每個是獨立的元件,在部署及開發上達成優良的敏捷性以及良好的擴充性 - DevOps 是什麼?有哪些相關的工具? 1. Development + Operations -> 開發、測試、維運三集合 CI/CD 2. 工具: - Docker將架構服務容器化,幫助統一整合開發環境 - K8S幫助管理多個容器 - CI/CD相關 -> Jenkins、Github Actions、Travis CI、Drone CI - SQL 將兩個 table 合併排序 UNION 需要兩table同行數,不足用null補起來 ```sql SELECT OrderID,CustomerID,EmployeeID,OrderDate,ShipperID FROM Orders UNION SELECT ShipperID,ShipperName,Phone,null,null FROM Shippers ORDER BY OrderID ``` 選擇題: - http vs https | HTTP | HTTPS | | -------- | -------- | | http:// | https:// | | unsecured | secured | | port 80 | port 443 | | application layer | transport layer | | no SSL certificate | SSL certificate | | no domain validation | domain validation | | no encryption | data is encrypted | - Internet message control protocol 網路七層協定中的第三層,解析網路封包或是分析路由的情況 - ping: 由 Echo Request 及 Echo Reply 互相配合 - traceroute: 以遞增的方式設定封包的 TTL,搭配 Router 在收到 TTL 為 1 的封包後,會傳送 Time Exceeded ICMP 封包給主機 - .com .edu .org 為域名 .net(網路技術公司或機構) .org(非營利組織) .edu(教育機構) .int(國際組織) .gov(政府機關) .com(國際網域/商業性質) 手寫 1. What is NaN in porgraming 「解釋」那些無法定義或無法表現的浮點運算內容、無限、無意義數學式、非數字等 2. OOP 繼承 composition composition:has a(擁有) -> Car has a Handle Inheritance:is a(是) -> Car is a vehicle ![](https://i.imgur.com/9RkCutB.png) 3. List three popular cloud service AWS、GCP、Azure 4. What is cloud native computing 並舉特性 在軟體開發初始,就使用以雲端為基礎的設施,並結合開發原則(DevOps)+開發方法(微服務架構+容器化技術),達成快速建置/測試/部署/維運的目的 5. 常用的框架,簡介及為何用他(至多三個)(略過) 6. Graph database 使用節點、邊和屬性來表示和儲存資料 1. Property Graphs Neo4j 就是這一類,藉由許多的 nodes、relations、properties 所組合而成 2. Hypergraphs 和前者的差別在於,一個 relation 可以連接多個 nodes,很適合用於資料彼此有大量的「多對多」關係的情境 3. Triple Stores 使用 W3C 的 RDF(資源描述框架) 7. 提出sql有那些join並舉範例比較產生結果 ![](https://i.ytimg.com/vi/rRAiUdmcJEs/maxresdefault.jpg) 1. inner Join 內部合併查詢 -> 顯示兩個資料表所重複的資料 2. left (outer) Join 左外部合併查詢 -> 在左邊資料表中有這筆資料,才不管右邊的資料表有沒有這筆資料呢哼! 3. right (outer) Join 右外部合併查詢 像2.的改右邊 4. full (outer) Join 完全外部合併查詢 -> 全拿回來(UNION) 5. cross Join 交叉合併查詢 8. Stack and Queue 的差異並用程式語言實作(略實作) Stack: First In Last Out Queue: First In First Out 9. C++結果,並解釋 比較ASCII -> 兩個true -> print 11 ```cpp int main() { std::cout << ("a" < "") << ("" < "b") << "\n"; //第一題 return 0; } ``` 10. C++結果,並解釋 比較ASCII -> 兩個true -> print 10 ```cpp int main() { std::cout << ('a' < 'c') << ('c' < 'b') << "\n"; //第二題 return 0; } ``` 11. immutable data type -> 不可變動的 ![](https://www.maxlist.xyz/wp-content/uploads/2021/01/Immutable.jpg) 12. mutable data type -> 可變動的 ![](https://www.maxlist.xyz/wp-content/uploads/2021/01/mutable-object-list-scaled.jpg) 13. What is NULL in C NULL就是系统定義特殊的0,NULL和0的值都是一樣的;但NULL用於指標和對象,0用於數值 14. NULL pointer in C exception 嘗試存取空指標所指向之物件時,就會發生 NullPointerException 15. How to prevent NULL 1. 避免使用null 2. 如果必須使用null,應建立明確的null語意,開發程式時必須統一(例如沒有字串,到底應該是空字串或是null) ## 其他組(有趣題目) - viewport 是什麼 通過標籤控制用戶的 viewport (可見區域),viewport 隨著設備的不同而變化 - promise 作用為何 | Async | sync | | ----- | ---- | | one at a time | more one at a time | | 執行了就馬上換下一個指令 | 第一個執行完才執行下一個 | Promise 物件代表一個即將完成、或失敗的Async操作,以及它所產生的值。 -> 用此物件來處理完成或是失敗的Async操作 - Ajax(Asynchronous JavaScript and XML) 什麼時候使用? 有什麼好處? 舉一個程式範例 Async Actions -> 可以僅向伺服器傳送並取回必須的資料 因為在伺服器和瀏覽器之間交換的資料大量減少,伺服器回應更快了 ```javascript function loadDoc() { var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { document.getElementById("demo").innerHTML = this.responseText; } }; xhttp.open("GET", 檔案在伺服器上的位置, true); xhttp.send(); } ``` - 如果網頁有大量資料要渲染,如何加速(可從前後端角度敘述) 前端:preload第三方資源及重要資源、圖片大小優化、Cache、Lazy Load Image 後端: - 闡述前端網頁模版使用經驗(略) - JavaScript Callback Hell 是什麼 如果一個function被作為參數傳進另一個function,這種行為稱為"Callback Callback被一層層嵌套,導致 程式碼難以閱讀和維護 的情況,就被稱作 Callback Hell。 ![](https://i.ytimg.com/vi/fr67u98nckk/maxresdefault.jpg) ### css - css selector 選取以下該行如何選取 ```css= <head> /* hello, im here */ ``` - css id class 優先權 id > class ![](https://selflearningsuccess.com/wp-content/uploads/2021/07/CSS%E6%A8%A3%E5%BC%8F6%E5%80%8B%E9%9A%8E%E7%B4%9A-1.jpg) - css class="a b" 優先權 a > b - em, px, pt vh, vw 差別 1. em -> 相對單位,繼承基準是父元素 2. rem -> 相對單位,繼承基準是\<html\>根元素 3. px -> 像素 4. pt -> 相較於px,為一個絕對大小的單位 5. vh, vw -> 它們的v是viewport,奠基在viewport寬、高度做百分比伸縮的單位 ### backend - 用過什麼Framwork?(略) - 什麼是Mvc? ![](https://www.infolight.com/news/Images/BOOK113/image001.png) - 你做什麼專案用什麼技術? 目的是什麼?(略) - 資料庫 RMDB Nosql 比較優缺點是啥? | | pros | cons | | -------- | -------- | -------- | | Nosql |- 資料可以為任意結構,提供彈性的開發<br>- 對於未來有大量擴充需求的系統,會更容易的去擴充,且擴充的成本也較低 |- 不確保 ACID 特性 | | RMDB |- 可以使用 JOIN 來連結多個資料表,做較複雜的查詢<br>- 具備 ACID 特性 | - Schema 必須先定義好,往後如果要修改 schema 必須對於已存在的資料做相對應的處理較為麻煩<br> | 補充:NOSQL 本身就是基於分散式系統架構,且不具備 ACID 的特性,因此更適合 horizontal scaling。在做水平擴充之後,只需要把資料分散儲存到各個 server 中,不用去處理資料之間的關聯性。比起關聯式資料庫,能夠更簡單的做到 horizontal scaling。 - OAuth2.0 Access token是什麼? [連結](https://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html) - GitLab 是什麼?有什麼特性? 1. 可以創建私人倉庫 2. 允許用戶設置 project 的獲取權限,進一步提升安全性 - 比較 ORM 優缺點 - pros: 1. 安全簡單(可以做一些初步的防堵或者安全性檢查) 2. 程式碼乾淨 3. 泛用(因為ORM是介於程式與資料庫之間,會自行轉換成原生SQL) - cons: 1. 效能 2. 複雜的SQL語法不好處理 - 如何加速網站(如上) - 遇到 DDOS 怎辦 1. 先了解正常和異常流量(透過分析個別封包僅接受合法的流量) 2. 使用 Web 應用程式防火牆 (WAF) 來防止攻擊(SQL injection or CSRF) ### Linux/BSD - 闡述你知道的 Linux 網路管理指令 - ping -> ICMP echo request echo respond - traceroute -> - curl -> 透過 HTTP Protocol 上傳或是下載 - nslookup -> DNS 查詢 - Linux 如何做系統備援 寫一個腳本+cron task 執行腳本,定期做系統備份 - freeBSD, openBSD, NetBSD 講出優缺點 - freeBSD -> 注重穩定 - openBSD -> 注重安全 - NetBSD -> 注重多平台 - 計中的主機有可能被學生惡意使用或是當跳板來攻擊他人主機?身為網管該如何防範,以及該如何偵測該行為(略,不確定) - 講出你知道的 Linux Distribution 版本以及特性 - Ubuntu -> 容易上手、良好桌面UI環境 - Debian -> 穩定、多平台 - Cent OS -> 非常穩定的系統,很適合作為伺服器作業系統使用 ### DevOps - 用過什麼CI/CD 軟體? - Github Actions - Jenkins - K8s 中Pod service deployment node 什麼意思? ![](https://i.imgur.com/rsBTtXL.png) - pod -> K8S 運作的最小單位,可以有一個或是多個 Container - node -> K8S 運作的最小硬體單位,一個 Worker Node(簡稱 Node)對應到一台機器 - Master Node -> 簡化看成一個特化的 Node 負責管理所有其他 Node。 - Cluster -> K8S 中多個 Node 與 Master 的集合。基本上可以想成在同一個環境裡所有 Node 集合在一起的單位。 - service -> K8S 中用來定義「一群 Pod 要如何被連線及存取」的元件。 - deployment -> 複製多個相同的 Pod 在 Cluster 中同時提供服務,可以幫我們做到無停機的系統升級(Zero Downtime Rollout) - Ingress -> Ingress 可以透過 HTTP/HTTPS,在我們眾多的 Service 前搭建一個 reverse-proxy。這樣 Ingress 可以幫助我們統一一個對外的 port number,並且根據 hostname 或是 pathname 決定封包要轉發到哪個 Service 上![](https://miro.medium.com/max/1400/0*-41vn0u27YID9UzQ) ### 虛擬化 - docker 與 VM 差異(上) - 闡述你知道的 vm 種類以及特性 ![](https://i.imgur.com/cP9GSgh.png) ![](https://i.imgur.com/kh0dYdI.png) - 使用 k8s 或是 openshift 相關經驗(略) - Live migration ? 不同代cpu有什麼問題? 如何避免 將正在運行的虛擬機器從一台實體機器移動到另一台實體機器,達到零停機狀態下遷移虛擬機器; 可以在不同代同廠商下轉移,但需要先啟用處理器相容性設定 ### git/軟工 - git pull, git fetch 差異 pull = fetch + merge![](http://krishnaiitd.github.io/gitcommands/images/GitWorkflow-3.png) - git 如何將刪除的 branch 找回 1. git reflog 看 commitID 2. git checkout commitID 3. git checkout -b [branchname] - 如何保持量好程式碼的品質 (略) - 團隊合作開發經驗?擔任什麼角色(略) - Git 考題給你 graph log,問你 rebase -i 之後長怎樣,還有要怎麼還原 (就像是複製貼上) ![](https://ithelp.ithome.com.tw/upload/images/20211005/20141010tyv3g0SN3s.png) 取消:git reflog -> git reset 回到 rebase 前的 id ### switch - vlan 使用以及切割經驗 ### 其他 - Node.js 的出現有什麼很大的影響?他有什麼特色? - 比較分析 React vs Vue or Angular or 你用過的前端框架 - memory allocation 太慢怎麼 debug?可以用什麼工具如何解決? malloc debug工具 - 為什麼 hashing 在 linux kernel 那麼常見? 透過設計良好的hash函數,可以將kernel的性能提高O(n/m) m為hash的項次 - IDS(Intrusion-detection system) 跟 AV(Anti virus)差在哪,各是檢查封包的什麼東西?為什麼很難擋住 APT ? - Android 手機有辦法搞 IP Spoofing 嗎?怎麼做? - Server虛擬化有甚麼好處?你用過什麼server虛擬化工具?(VMWare、VirtualBox) - 提高伺服器可用性 - 降低營運成本 - 消除伺服器複雜性 - 增進應用程式效能 - 加快工作負載部署速度 - 若你的程式以下環節效能不好,你會如何偵錯並解決? (a)program bottleneck (b)cache miss (c)locality issue - DNS反射是一種攻擊手法,通常是利用大型DNS Server,將封包反射至目標電腦進行攻擊,請說明如何實作 ## 演算法 - 一個 function int freq_mode(int a, int b, int c, int d),回傳其眾數出現的次數。例如 freq_mode(1, 3, 3, 4) 要回傳 2,因為 3 出現 2 次。求最優雅的解法? - 實作演算法:給三維平面上的 n 個點,求一個球型能包住所有點,半徑必須小於最小半徑解的 2 倍,要是 O(n) 解。 - 實作演算法:找出陣列 int A[n] 第二小的數, O(n) 解,並證明所有可能的解都不可能比 Ω(n) 好 - 舉出一個你會實作的較複雜的演算法,並用 30 字簡介 ## mail - Open relay 是什麼? - SPF 作用 - IMAP, POP3 差異 - 如何防止垃圾郵件 - 畫出可擴展的 mail server 架構,並且以文字說明 - postfix table 使用過哪些 - Dovecot中userdb、passdb分別是什麼? - 是否有管過G suite 、Line work?有什麼優點可以借鏡的? - 追蹤Mail 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