用手寫腳本用腳玩遊戲
    • 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
    • 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 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
    # Sikulix 簡單教學 by 少女前線 自動0-2拖屍、維修、強化、拆槍、自動後勤,一氣呵成 直接當廢人:100: # [1.1.4 版腳本 設定 在這邊](https://hackmd.io/L5AYAbQgQj2-KGFlyjDzow?view#%E6%96%B0%E7%89%88GFL-%E8%85%B3%E6%9C%AC-%E7%92%B0%E5%A2%83%E8%A8%AD%E7%BD%AE%E3%80%81%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A0%85%E3%80%82) # 2020/6/21 目前腳本已經無效 > 目前已沒有在玩少前,如腳本不能跑的話,就**自己刻一個**吧,我的程式就當參考。我想我不會再維護那程式了(~~根本不打算維護XD~~)。 > 因為我忘記我的文件有沒有提過腳本的結構是啥,這邊再重新打一遍: > * 基本上 [girls_front_line.py](https://bitbucket.org/aniccasora/gfl/src/master/girls_front_line.sikuli/girls_front_line.py) 提供了人類清楚的邏輯,但是實際的 "實作"(程式上邏輯的實現),被包在 [step.py](https://bitbucket.org/aniccasora/gfl/src/master/girls_front_line.sikuli/step.sikuli/step.py),然而 [step.py](https://bitbucket.org/aniccasora/gfl/src/master/girls_front_line.sikuli/step.sikuli/step.py) 他有很大部分的 "實作",會透過 [util.py](https://bitbucket.org/aniccasora/gfl/src/master/girls_front_line.sikuli/util.sikuli/util.py),因為 step(遊戲步驟) 常常是用 util(固定邏輯、工具函式) 組合而成不同的 step,最後才在 girls_front_line.py 將 step 組合起來。 `*util:utility 的縮寫` > * 總結: util 提供常用 function,step 提供單步驟的遊戲邏輯(例如:按下一個按鈕),girls_front_line 將多個單步驟組合成一個可重複的腳本,就是這樣這麼簡單。這個就是我說的結構化,不熟程式怎麼呼叫時就把 girls_front_line 寫的很長就可以了~(但你維護程式碼時你就知道好玩了) * 給有心想學怎麼寫sikulix 腳本的人: 1. 新手(什麼是python? 什麼是腳本?): * 我的程式碼就別看了,因為一定看不懂,我大部分的程式碼都結構化了,沒有程式概念你追不出個所以來。 * 我不知道怎麼幫你 頂多去看我有一個基礎寫法的教學,但我想你看過了。 2. 我寫過腳本 但 python 是啥: * 那麼第一件事就是 先弄會 python (if、while、縮排結構、def),然後我的腳本嘗試著看也無訪,有問題可直接[問我](https://discord.gg/s8HtqKc),因為每行都是我寫的。 3. 你根本英文超強一外國人母語等級: * 那我想你看 sikulix api 就懂了。 4. 你會程式: * 自己學,不要我教。謝謝。 >  ## 心得 [心得](https://hackmd.io/QWC-MLtvR0CwHHXKLhKDmw) ###### 要看 sikulix說明 心得 不用看沒關係... * [DISCORD群,點我邀請至伺服器](https://discord.gg/s8HtqKc) * 我基本上懶得維護這篇文章,有問題來裡面直接問就可以了,謝謝! * 發問 時請提出 您的"需求",並簡潔扼要的描述,我會盡可以解釋,或者提供協助。 * 基本上每天都會看discord * 最新的維護資訊也會在上面報告 * 另外 注意禮貌。謝謝~😃 # 正文開始 這篇的用詞都比較直接,如有不適請右上角,MacOS左上角。 ## 自動後勤DEMO **自動後勤** 只是 其中一部分~ ![](https://i.imgur.com/QOddGpL.gif) **刷到2000場後,懷疑人生** (2000場後都不是我玩的辣HAHAHAHA) ![](https://i.imgur.com/9aja1bv.png) 快修要不夠了 好啦! 刷到 **200000場** 的 不用告訴我了 我知道了!! 我已經 20000場了↑😃 --- ## 前言 **((給我看完 醜話說前頭:smile:** **🙅🏼 此教學沒有任何營利✋🏼,而且帳號出問題我 "不負擔任何責任"🙅🏼‍** 本教學**並無修改、侵害、刪除任何伺服器的資料、或者其他玩家的資料**,也尚未侵害到任何玩家的權利(我沒在打排名的喔),少女前線能說是要網路的**單人遊戲**,所以我才這麼說,**就算指揮官900等,每支槍都滿等,也不會礙到其他人**,因為這腳本只有純 **"手"** 動練等而已,打排名還是乖乖來吧。 --- ### 1 寫作此教學目的 純粹只是希望各位玩家可以利用**有效率的方式遊玩遊戲**(~~偷懶的奧義~~),這是我一開始的發想,當然也有人認為,那你這樣玩遊戲還玩的有沒有意義。 跟推廣 sikuli 這個方便的辨識腳本。 能寫程式(腳本)解決我的麻煩,也是一種好玩的遊戲,電腦最喜歡做重複的事情了,還不叫他做爆。 **For高手、大神,或者已經會寫程式的建議,直接到👉 [Sikulix](http://sikulix.com/),自己看裡面的技術資料,可跳過我的胡說八道。** :::info 舊版 已經不會再次維護(包括這篇文章),現在以新版為準。 ---> [新版文章](https://hackmd.io/L5AYAbQgQj2-KGFlyjDzow#%E6%96%B0%E7%89%88GFL-%E8%85%B3%E6%9C%AC-%E7%92%B0%E5%A2%83%E8%A8%AD%E7%BD%AE%E3%80%81%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A0%85%E3%80%82) ::: ### 2 Sikulix 看做腳本? 外掛? ~~倒是像塊綠豆糕。~~ 當作 **"製造一個隱形人坐在電腦前幫我玩電腦"**, **sikuli的語源----"God's Eye"**。 --- **目錄** (電腦版 右邊有 TAG點開就可以跳到你要查詢的地方,瀏覽器的範圍夠大就會顯示) [TOC] ### 3 sikulix簡介 >**引言** 在 GUI 測試中,識別個性化控件、模擬用戶行為及對校驗屏幕顯示結果常常成為自動化測試的瓶頸,此類測試場景大多數情況下仍然依賴於手工測試。本文介紹一種新興的圖形化編程技術 Sikuli,它擺脫了對控件 API 的依賴,通過當前屏幕的實時圖像檢索獲取操作對象,模擬用戶行為,匹配屏幕區域以校驗真實的視覺顯示結果。文中將通過其在 GUI 自動化測試中的實際應用分析及程序示例,闡述其帶來的應用思路。 **Sikuli 是什麼** Sikuli 是由 MIT 的研究團隊發布的新型圖形化編程技術。它以圖像檢索技術為基礎,提供了一套基於 Jython 的腳本語言以及集成開發環境。使用者可利用屏幕截圖直接引用 GUI 元素進行編程,完成交互操作。 Sikuli 一詞取自墨西哥 Huichol Indian 土著語,意為“上帝之眼”,正如其開發者張琮翔所說—— Sikuli 讓電腦能像人一樣“看”這個“真實世界”。 > 以上引用自 **朱 杉 Sikuli -- 创新的图形化编程技术** > [朱 杉 Sikuli -- 创新的图形化编程技术](https://www.ibm.com/developerworks/cn/opensource/os-cn-sikuli/index.html) --- ## 環境建置 以下教學使用 **Python(jyphon) 當作腳本 code🔧** 並且使用我目前成功多次👍🏾的安裝方式。 **我用的作業系統一律 windows 10x64**,下面 安裝過程 都是用 另外開 windows 10 虛擬機安裝的,安裝很多次了,如果設定都跟我一樣,但 還是有問題的話,去Google吧👍。 都是用 x64 系統的配置, x32 作業系統沒弄過,要試試看也可以。 ###### PS: 下面鏈結失效的話 直接到 [Google Drive](https://drive.google.com/open?id=1ObKJY1S0rIH328MhEOjMImElLs1NwiUb) 去下載。 ### 1 你要有 JAVA SE 當環境,我個人用 **"8u192" (版本要對,不對不給安裝)** 官方是說 支援 ==version 8 or later== 但是 1.1.3的,但好像只能用 java version 8。 ------>[點我下載 Java SE Development Kit 8 Downloads](https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) **載點別按錯** ![](https://i.imgur.com/S1Gy1Sm.png) :::info 有裝過的 JAVA SE 的 Win+R -> cmd ->輸入 "java -version" 確認一下版本,錯的話請重裝1.8.X 應該都沒事,(不要裝到 其他版本的爸拖👏) 請依照 cmd 顯示的版本號為依據。 ![link text](https://i.imgur.com/5MX1myJ.png) 網路上有很多 教你怎麼裝 JAVA環境的,爬文的話可以找到。 ::: ### 2 去載 sikulix ------>[Sikuli 1.1.3 下載頁面](https://launchpad.net/sikuli/sikulix/1.1.3) ### 3 開始安裝 [Google Drive](https://drive.google.com/open?id=1ObKJY1S0rIH328MhEOjMImElLs1NwiUb) 的東西下載下完以後,你會看到 兩個檔案 ![](https://i.imgur.com/7ebe1dE.png) ============================================== 建議 直接丟到 你之後要裝 sikulix 的 資料夾, 等等裝 .jar 他會把他的所會執行到的東西都解壓出來。 ============================================== 1. 先裝 jdk-8u192-windows-x64.exe !!不要亂改安裝目錄,除非你會處理目錄變動的問題 !! 2. 再裝 sikulixsetup-1.1.3.jar (這邊用 cmd 解壓會比較保險,"不要直接點 .jar") 👇🏻 #### I.安裝 JAVA SE, **next** 給他按下去 就裝好了! (不要改 安裝路徑!,啥都不用勾,啥都不用點) 之後就看到 完成安裝 的畫面了 ![](https://i.imgur.com/PHC7Qqr.png) 按下 **"close"** #### 確認是否有安裝成功 * Win+R -> cmd ->輸入 "java -version" 確認一下版本,錯的話請重裝,請依照 cmd 顯示的版本號為依據。 ![link text](https://i.imgur.com/5MX1myJ.png) 他如果說 **"java 不是內部或外部命令、可執行的程式或批次檔。"** 那麼 拿著這段 字串 去 Google。 #### II.安裝 sikulix 1.1.3 這邊就是環境建置最後步驟,裝得過你後面都沒問題。 **上圖~** **Step1.** 找到剛剛 **放 .jar 的資料夾** (最好 找個 乾淨的資料夾) 在 **網址列 / 路徑** 的地方 **打上 cmd, 並 Enter** ![](https://i.imgur.com/kq5q4oF.png) **Step2.** 然後 愉快的 打上 **"java -jar sikulixsetup-1.1.3.jar"** ![](https://i.imgur.com/uGQ0kZq.png) ###### tip: 在終端機的操作中,你可以直接打個大略,用TAB幫你自動補齊當案名稱,像是 在打 "sikulixsetup-1.1.3.jar" ,你可以 打個 "si" 按下 TAB 開始選擇你要的檔案,前提是 該檔案要在資料夾裡面。(TAB鍵 : 在 英文大小寫切換鍵 的 上面)。Ctrl+C 也是可。 **Step3.** 按下 **"是"** ![](https://i.imgur.com/9IpcWW5.png) **Step4.** **1.✔️**、**2.✔️**、紅色框框 打勾勾~ 第一紅框的 選項中 選擇 **✔️1.Python (Jython)(default)** 再次愉快的按下 **"Setup Now"** ![](https://i.imgur.com/hkjTHry.png) **Step5.** **"是"** ![](https://i.imgur.com/xRq0bGE.png) **Step6.** **安裝 Jython "是"** ![](https://i.imgur.com/BrVb1zO.png) **Step7.** **等待...** ![](https://i.imgur.com/kh7f79R.png) **Step8.** **大成功** ![](https://i.imgur.com/lKKdnnL.png) **Step9.** **在剛剛的資料夾下** ~.exe 可以刪掉~ 點下 **"runsikulix.cmd"** 打開 IDE(整合開發環境),跑腳本、撰寫腳本, 都靠他了!! ![](https://i.imgur.com/hhzpk8U.png) **!! ALT+SHIFT+C 可終止 sikulix 運行 !!** **SIKULIX IDE** ![](https://i.imgur.com/oXDhXdj.png) :::info 我都叫這畫面 **"IDE"**:mega: ::: --- ## 準備 開始 ### [1 介紹存檔 !務必過目!](https://hackmd.io/ePVlUXPPTtOxC5lAlwXg5g?view#%E6%BA%96%E5%82%99-%E9%96%8B%E5%A7%8B) 寫程式Code的存檔如果不見,那麼肯定是崩潰,Sikulix更是如此, 因為他的內部的設計,你的 Code 存檔的瞬間,只要IDE的畫面裏面沒有該圖片,那麼資料夾的圖片就會跟著消失。 > (可以藉由修改設定解決這問題,但會延伸出,舊的圖片都不會被刪除的問題) 當你寫 sikulix 時,因為是螢幕辨識,他會需要許多圖片,然而你在IDE截個老半天的圖全部被刪掉,做何感想??? ~我曾經被搞過好多次,都忘記這個規則~ **注意:當你在寫腳本時,你不想跑某一行(或多行),請先利用 單行註解 "#" 把那行註解掉(不支援多行註解),按下"Ctrl + S",除非 "確定連圖片都不要了" !!。** #### [----- 1. 如果你要複製 的 那一行是有圖片 的 Code 的話,請確保你存檔了]() 過來人的經驗,不要到時候 Ctrl + Z 回不來就好笑搂! #### 以下示範 這個陷阱: ###### PS:第 66 行 就是 "註解" 過的行。這樣子打 他就不會執行了,這就是註解。(雖然註解一開始的設計是拿來當 程式碼的解釋的)。68 行是 會執行的喔。 假設你發現 這邊的CODE **全部**想要用 Ctrl + X "剪" 下來,放到別的段落去。 **"剪下後,請不要按下存檔,你會貼不上來的,因為存檔的瞬間他的圖片就在資料夾消失了"** 接下來就是愉悅的重新截圖,為什麼呢? 實際上複製,或者剪下的時候並 **不會複製到 圖片**! ![](https://i.imgur.com/HTJAf30.png) #### [-----2.sikulix 圖片下的 原碼](87940) 所以你的操作都是對這一些字串作處理(複製,貼上...),真正的圖片在移除IDE畫面並存檔時就已經消失,剩下的就只是一串沒有意義的位置。 在這個 sikulix IDE 裡面 "圖片位置(字串)" -> 實際畫面上的圖片(圖片) 這讓我們在編寫的時候很直覺。 (我這邊的圖片都有再次命名,以防萬一我找不到,他預設的命名都是時間戳記) **(利用 Ctrl + T 切換) / 檢視 -> show ThumbNails** ![](https://i.imgur.com/Pv932HP.png) --- #### [3.Sikulix的 專案名稱]() ~~不要跟我說 他只是**資料夾**後面的名稱加了 ".sikulix"XD~~ **不要把它看成資料夾**,當作**單一專案**,會比較好! (除非你知道你在做啥 不然不建議去改內部的東西) ![](https://i.imgur.com/SKN5dgx.png) #### [4.常用快捷鍵:]() 有碰過的編輯軟體的一定都知道 最基本的,快捷鍵(shortcut) 基本上 就是 1.Ctrl + S (存檔) 2.Ctrl + Z (復原上一動作) 3.剪下 X + 複製 C + 貼上 V 4.Ctrl + T 特殊情形 會需要 使用 記好啦!! ### 2 開啟 舊專案 的方法 #### 這邊就是我前面說的 sikulix 專案(資料夾) IDE左上角 檔案 -> 開啟 -> 選擇專案資料夾就好了 要開啟 舊專案 的話 選擇 **"xxxx.sikulix" 整個資料夾** -> **select** ,就可以開了,**不用點進去**。 ![](https://i.imgur.com/9LOt9p5.png) --- ## 開始撰寫 ### 1 關於少前的 0-2 常刷0-2的大家都知道,0-2關卡的敵人是不會移動的,所以可以省下判斷敵人位置的麻煩,不需用處理隨機問題。 ### 2 設計想法 基於少前這款遊戲幾乎不需用用到鍵盤,所以滑鼠的動作,我只把它分作2個part。 #### ------1.自動操作(滑鼠only) 1.滑鼠 移動 到 指定位置、有效範圍 2.點擊 不會用到"滾輪"、"拖移"、"拖拉" 我在腳本裡面 不使用 "拖移"、"拖拉" 這種動作的,因為我當初的電腦,極為LAG,滑動畫面這項操作,會有嚴重的延遲,所以我只利用這簡單 兩個操作來完成 一系列的拖屍。 #### ------2.畫面判斷 這個部分用到的邏輯 **--------------1.存在?不存在?** 這個畫面、物體、事件,究竟觸發了沒,只要畫面有改變,那麼他就可以判斷其是否存在。 **--------------2.是否需要等待?(Lag時間)** 假設,你的電腦還在轉圈圈,黑屏(有點半透明,少前的loading畫面滿多都是半透明的,明暗程度對圖像辨識造成的影響頗小)。那麼那個物件有被找到,那電腦就會以為他出現了,就繼續下一個指令,這樣會造成不可預期的錯誤。 **--------------3.流程可靠性!** 有一點狀態機的概念,你是否可以確保,某一項操作,永遠成功? 那失敗了要怎麼補救,還是直接不管跳到下一個操作? | |流程未確認 ❌ | 流程有確認✔ | |:---------:|:-----------:|:---------:| |欲執行 | A -> B -> C |A -> B -> C| | Step 1 | A 成功 | A成功 | | Step 2 | B失敗 | B失敗 | | Step 3 | C ?? | B再次執行B | |Step 4 |?? | B成功 | |Step 5 | ?? |C失敗 | |Step 6 | ?? |C再次執行 | |Step 7 | ?? |C成功 | |Step 8 |?? |ABC成功執行完畢! | --- #### python 是利用 **"四個空白"** 當作 區塊的",稱為縮排 (indent) 可以看到while 的**下一層是** if & else if ---- 的**下一層是** 去吃飯 else - 的**下一層是** 去睡覺 下方code表示 這隻程式 他會判斷 自己是不是餓了? 不是的話**去睡覺** 否則**去吃飯**,**周而復始** ```python while True: # while層 從這邊 開始 if 肚子餓了: #肚子餓了 區塊開始 去吃飯 #肚子餓了 區塊結束 else: #其他時間 區塊開始 去睡覺 #其他時間 區塊結束 # while層 完畢 ``` --- ### 3 範例影片 ##### (一) {%youtube Tb3glLDJf8g %} ##### 施工中... 應該是永不施工... --- ## Google Drive \ 各檔案下載 \ 各種連結 下載的東西看清楚 不了解的 就直接到我 GD直接下載 ### Sikulx API (就是 寫Sikulix的說明書,給有程式基礎的人翻閱) [Everything about Sikuli Script](http://doc.sikuli.org/sikuli-script-index.html) ### Google Drive [我的 Google Drive](https://drive.google.com/open?id=1ObKJY1S0rIH328MhEOjMImElLs1NwiUb) ### Sikulix home page [sikulix](http://www.sikulix.com/) ### 官方的下載頁面 [Java SE Development Kit 8 Downloads](https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) [Sikuli 1.1.3 下載頁面](https://launchpad.net/sikuli/sikulix/1.1.3) ### 問題詢問 方式 #### 注意 1. 近來請 **"有禮貌地發問"** 謝謝,我可沒有欠你,要鬧的也滾。 2. 另外 我不知道這連結啥時會消失 看到會再補。 * [DISCORD 點我邀請至伺服器](https://discord.gg/s8HtqKc) * 用這個會比較快收到回覆。 * Email 最後一種聯絡方式。 * suwaerannpa86510@gmail.com ---

    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