Brian Chambers
    • 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
    • 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 No publishing access yet

      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.

      Your account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

      Your team account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

      Explore these features while you wait
      Complete general settings
      Bookmark and like published notes
      Write a few more notes
      Complete general settings
      Write a few more notes
      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
    • 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
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
  • 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 No publishing access yet

    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.

    Your account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

    Your team account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

    Explore these features while you wait
    Complete general settings
    Bookmark and like published notes
    Write a few more notes
    Complete general settings
    Write a few more notes
    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
    # Control Flow ## Boolean Expressions Boolean expressions are statements that evaluate to either true or false. They are commonly used in programming to make decisions and control the flow of a program. Boolean expressions use boolean operators. Boolean operators are different from arithmetic operators as they return boolean values while arithmetic operators return numeric values. The two categories of boolean operators are: comparative operators and logical operators. ### Comparative Operators Comparative operators are used to compare values. Here are some common comparative operators: #### Equalitly (==): Compares if two values are equal. #### Strict Equality (===) The === operator in JavaScript is known as the strict equality operator. It compares two values for equality without performing type conversion. In other words, it not only checks if the values are equal but also ensures that their data types are the same. - Example: `5 === 5` is true because both values are the same (number). - Example: `'5' === 5` is false because the values are the same, but their data types are different (string and number). #### Inequality (!=) Checks if two values are not equal. #### Strict Inequality The !== operator is the strict inequality operator in JavaScript. It is the opposite of === and checks if two values are not equal without performing type conversion. - Example: 5 !== 5 is false because both values are the same (number). - Example: '5' !== 5 is true because the values are not the same, or they have different data types. #### Greater than (>) and Less than (<) These operators compare if one value is greater or less than another. - Example: x > y is true if x is greater than y. #### Greater than or equal to (>=) and Less than or equal to (<=) These operators compare if one value is greater or equal to, or less than or equal to, another value. - Example: x >= y is true if x is greater than OR equal to y. ### Logical Operators Logical operators are used to combine multiple boolean expressions. #### Logical AND (&&) Truth Table: | A | B | A && B | | ----- | ----- | ------ | | true | true | true | | true | false | false | | false | true | false | | false | false | false | The logical AND (&&) operator only returns true with both operands are true #### Logical OR (||) Truth Table: | A | B | A \|\| B | | ----- | ----- | -------- | | true | true | true | | true | false | true | | false | true | true | | false | false | false | The logical OR (||) operator only returns false with both operands are false #### Logical NOT (!) Truth Table: | A | !A | | ----- | ----- | | true | false | | false | true |https://hackmd.io/7cKWQkhHQ6qj8KsIoDYMWQ#Logical-Operators These operators allow you to create complex conditions and make decisions in your code based on the evaluation of boolean expressions. #### Summary Video: [YouTube](https://www.youtube.com/watch?v=R8jAVrhzpl0&list=PL98qAXLA6afsQO62IkkidTHXmuL6k2rR6&index=6) ## Conditionals A code segment is a collection of a few lines of code that performs a specific task or function. In JavaScript, you can create a code segment using curly braces {}. Here's how you do it: ```javascript= // This is the start of a code segment { // You can have multiple lines of code here let x = 5; let y = 10; let result = x + y; console.log(result); } // This is the end of the code segment ``` In this example, the code segment is enclosed within curly braces. It contains the code to calculate the sum of x and y and then log the result. Code segments help keep related code together and make it easier to read and manage. In computer programming, there may arise situations where you have to run a block of code among more than one alternatives. In such situations, you can use the JavaScript conditional statements to create a program that can make decisions. In JavaScript, there are three forms of conditional statements. 1. if statement 2. if...else statement 3. if...else if...else statement ### if statement The syntax of the if statement is: ```javascript= if (condition) { // the body of if } ``` **NOTE: The code inside { } is the body of the if statement.** The if statement evaluates the condition inside the parenthesis (). If the condition is evaluated to true, the code inside the body of if **IS EXECUTED** ![](https://hackmd.io/_uploads/BJpX5go-T.png) If the condition is evaluated to false, the code inside the body of if **IS SKIPPED** ![](https://hackmd.io/_uploads/H1C85lsZa.png) ### if...else statement An if statement can have an optional else clause. The syntax of the if...else statement is: ```javascript= if (condition) { // block of code if condition is true } else { // block of code if condition is false } ``` The if..else statement evaluates the condition inside the parenthesis. **If the condition is evaluated to true:** - The code inside the body of if is executed - The code inside the body of else is skipped from execution ![](https://hackmd.io/_uploads/By1FsgjbT.png) **If the condition is evaluated to false:** - The code inside the body of else is executed - The code inside the body of if is skipped from execution ![](https://hackmd.io/_uploads/Hy3qjxsW6.png) ### if...else if...else statement The if...else statement is used to execute a block of code among two alternatives. However, if you need to make a choice between more than two alternatives, if...else if...else can be used. The syntax of the if...else if...else statement is: ```javascript= if (condition1) { // code block 1 } else if (condition2){ // code block 2 } else { // code block 3 } ``` * If condition1 evaluates to true, the code block 1 is executed. * If condition1 evaluates to false, then condition2 is evaluated. * If the condition2 is true, the code block 2 is executed. * If the condition2 is false, the code block 3 is executed. ![](https://hackmd.io/_uploads/SJw92xobT.png) #### Demo Code: Conditionals ```javascript= // Write a calculator program that performs addition, subtraction, division, multiplication and remainder. It should ask the user what operation they want to perform and then perform the calculation. // Create your program's algorithm // 1. Ask the user what operation they want to perform // 2. If the user wants to add // 2a. Ask for two numbers // 2b. Add the two numbers // 2c. Output the result // 3. ELSE If the user wants to subtract // 3a. Ask for two numbers // 3b. Subtract the two numbers // 3c. Output the result // 4. ELSE If the user wants to multiply // 4a. Ask for two numbers // 4b. Multiple the two numbers // 4c. Output the result // 5. ELSE If the user wants to divide // 5a. Ask for two numbers // 5b. Divide the two numbers // 5c. Output the result // 5. ELSE If the user wants to calculate remainder // 5a. Ask for two numbers // 5b. Find the remained of the two numbers // 5c. Output the result // 6. ELSE output that is a not a valid operation // Write your program console.log("Addition, Subtract, Multiplicat, Division, Remainder\n"); // Get user input for the operation let operation = prompt("What is your choice: "); // Get user input for the first number let num1 = parseFloat(prompt("\nEnter first number: ")); // Get user input for the second number let num2 = parseFloat(prompt("\nEnter second number: ")); // Check if the operation is addition if (operation === "addition") { // Calculate the sum let sum = num1 + num2; // Output the addition result console.log(`${num1} + ${num2} = ${sum}`); // Check if the operation is subtraction } else if (operation === "subtraction") { // Calculate the difference let difference = num1 - num2; // Output the subtraction result console.log(`\n${num1} - ${num2} = ${difference}`); // Check if the operation is multiplication } else if (operation === "multiplication") { // Calculate the product let product = num1 * num2; // Output the multiplication result console.log(`\n${num1} * ${num2} = ${product}`); // Check if the operation is division } else if (operation === "division") { // Calculate the quotient let quotient = num1 / num2; // Output the division result console.log(`\n${num1} / ${num2} = ${quotient}`); // Check if the operation is remainder } else if (operation === "remainder") { // Calculate the remainder let remainder = num1 % num2; // Output the remainder result console.log(`\n${num1} % ${num2} = ${remainder}`); } else { // Output a message for an invalid operation console.log("Not a valid operation"); } ``` #### Summary Video: [YouTube](https://www.youtube.com/watch?v=M4IKd-GC9jw&list=PL98qAXLA6afsQO62IkkidTHXmuL6k2rR6&t=1s) ## Iteration Iterative statements are also referred to as repetitive statements or loops. Iteration allows programmers to repeat lines of code for a set number of times or for as long as a condition is met. In programming, loops are used to repeat a block of code. ## while Loops while loops are used to repeat a block of code for as long as a condition is met The syntax of the while loop is: ```javascript= while (condition) { // body of loop } ``` A while loop evaluates the condition inside the parenthesis (). - If the condition evaluates to true, the code inside the while loop is executed. - The condition is evaluated again. - This process continues until the condition is false. When the condition evaluates to false, the loop stops. ### Demo Code: while Loop w/Increasing Counter ```javascript= // PROGRAM DESCRIPTION // This program simulates an age-related message loop. It starts with an age of 0 // and outputs messages indicating the current age and a reminder that drinking // is illegal for individuals below 21. The loop continues until the age reaches 21, // at which point it displays a message indicating that the person can now legally drink. // PROGRAM ALGORITHM // 1. Start with an age variable initialized to 0. // 2. Enter a loop with the condition that the age is less than 21. // a. Output the current age. // b. Output a reminder that it's illegal to drink. // c. Increment the age by 1 in each iteration. // 3. After the loop, when the age reaches 21, display a message indicating that the person can now legally drink. // 4. End the program. // PROGRAM CODE // Initialize: Start with an age of 0 let age = 0; // Condition: Continue as long as age is less than 21 while (age < 21) { // Output the current age console.log("\nYou are currently", age, "years old"); // Remind that it's illegal to drink console.log("IT IS ILLEGAL FOR YOU TO DRINK"); // Increment: Increase the age by 1 in each iteration age++; } // Display a message after the loop when age is 21 console.log("\nYOU ARE 21 AND CAN DRINK"); ``` ### Demo Code: while Loop w/Decreasing Counter ```javascript= // PROGRAM DESCRIPTION // This program implements a countdown from 10 to 1, displaying each countdown value along with a newline. // It concludes with a message wishing a "HAPPY NEW YEAR!" after the countdown. // PROGRAM ALGORITHM // 1. Initialize: Start with a countdown value of 10. // 2. Enter a loop with the condition that the countdown is greater than 0. // a. Output the current countdown value and a newline. // b. Decrement: Decrease the countdown by 1 in each iteration. // 3. After the loop completes, display a message saying "HAPPY NEW YEAR!" // 4. End the program. // PROGRAM CODE // Initialize: Start with a countdown value of 10 let countdown = 10; // Condition: Continue as long as countdown is greater than 0 while (countdown > 0) { // Output the current countdown value and a newline console.log(countdown, "\n"); // Decrement: Decrease the countdown by 1 in each iteration countdown--; } // Display a message after the loop completes console.log("HAPPY NEW YEAR!"); ``` ### Demo Code: while Loop w/Equality Check ```javascript= // PROGRAM DESCRIPTION // This program prompts the user to guess a secret word, which is initially set to "Apple". // It provides feedback for each incorrect guess and continues prompting until the correct word is guessed. // PROGRAM ALGORITHM // 1. Initialize: Set the secret word to "Apple". // 2. Display a message instructing the user to guess the secret word. // 3. Get user input for the initial guess. // 4. Enter a loop with the condition that the guess is incorrect (not equal to the secret word). // a. Output a message indicating that the current guess is incorrect and prompt the user to try again. // b. Get another guess from the user. // 5. After the loop, display a message indicating that the user has guessed the word correctly. // 6. End the program. // PROGRAM CODE // Initialize: Set the secret word to "Apple" let secretWord = "Apple"; console.log("Eve ate this fruit. Guess what it is"); // Get user input for the initial guess let userGuess = prompt(""); // Condition: Continue as long as the guess is incorrect while (userGuess !== secretWord) { // Output a message for an incorrect guess console.log("\n", userGuess, "is not the word. Try again"); // Get another guess from the user userGuess = prompt(""); } // Display a message after the correct guess console.log("You guessed correctly"); ``` Summary Video: [YouTube](https://www.youtube.com/watch?v=RxMXNzHgGrY&list=PL98qAXLA6afsQO62IkkidTHXmuL6k2rR6) ## for Loops for loops are used to repeat a block of code for a set number of times The syntax of the for loop is: ```javascript= for (initialExpression; condition; updateExpression) { // for loop body } ``` 1. The `initialExpression` initializes and/or declares variables and executes only once. 2. The condition is evaluated. 3. If the condition is false, the for loop is terminated. 4. If the condition is true, the block of code inside of the for loop is executed. 5. The updateExpression updates the value of initialExpression when the condition is true. 6. The condition is evaluated again. Steps 2-5 continue until the condition is false. ### Demo Code: for Loop w/Increasing Counter ```javascript= // PROGRAM DESCRIPTION // This program utilizes a loop to iterate through grades starting from 9 up to and including 12. // It outputs a message for each grade, and after the loop completes, it displays a graduation message. // PROGRAM ALGORITHM // 1. Enter a loop with: // a. Initialize Expression: Start with grade 9 // b. Continuation Condition: Continue as long as grade is less than or equal to 12 // c. Increment exrpression: Increase the grade by 1 in each iteration // d. Body: Output a message with the current grade // 2. After the loop completes, display a graduation message. // 3. End the program. // PROGRAM CODE // Initialize Expression: Start with grade 9 // Continuation Condition: Continue as long as grade is less than or equal to 12 // Increment exrpression: Increase the grade by 1 in each iteration for (let grade = 9; grade <= 12; grade++) { // Output a message with the current grade console.log("You are in grade", grade, "!"); } // Display a graduation message after the loop console.log("Congratulations, you graduated!"); ``` ### Demo Code: for Loop w/Decreasing Counter ```javascript= // PROGRAM DESCRIPTION // This program uses a loop to perform a countdown from 10 to 1, logging each countdown value along with a newline character. // After the loop completes, it prints a "HAPPY NEW YEAR!" message. // PROGRAM ALGORITHM // 1. Enter a loop with:. // a. Body of the loop: Log the current countdown value and a newline character. // b. Initialize expression: Setting up the countdown variable with an initial value of 10 // c. Continuation condition: Loop continues as long as countdown is greater than 0 // d. Increment expression: Decreasing the countdown variable by 1 in each iteration // 2. After the loop completes, print a "HAPPY NEW YEAR!" message. // 3. End the program. // Initialize expression: Setting up the countdown variable with an initial value of 10 // Continuation condition: Loop continues as long as countdown is greater than 0 // Increment expression: Decreasing the countdown variable by 1 in each iteration for (let countdown = 10; countdown > 0; countdown--) { // Body of the loop: Logging the current countdown value and a newline character console.log(countdown, "\n"); } // Code outside the loop: Printing a message after the loop completes console.log("HAPPY NEW YEAR!"); ``` #### Summary Video: [YouTube](https://www.youtube.com/watch?v=Y32i2I-Pcc8&list=PL98qAXLA6afsQO62IkkidTHXmuL6k2rR6) ## Software Engineering: Program Purpose & Algorithm ### Program Purpose: Defining the Goal The purpose of a computer program is its primary objective or goal. It defines what the program aims to accomplish and the problems it intends to solve. A clear program purpose guides the design and implementation of the program, ensuring that it meets the intended requirements and user needs. #### Identifying Program Purpose To identify the purpose of a program, ask yourself: 1. What task or problem does the program aim to address? 2. What results or outputs should the program produce? 3. Who will use the program and how will it benefit them? By answering these questions, you can define the program's purpose and focus on developing functionalities that align with its intended use. ##### Example: Simple Calculator Program **Program Purpose**: The purpose of a simple calculator program is to perform basic arithmetic calculations between two numbers. It should provide the user with the ability to calculate the sum, product, quotient, and difference of the given numbers. ### Algorithms: The Step-by-Step Process In computer programming, an algorithm is a set of instructions or a step-by-step process to solve a specific problem or perform a task. It serves as the foundation of a program, guiding the computer on how to execute tasks in a logical and organized manner. Let's explore the concept of a program's algorithm and its step-by-step process: #### Defining an Algorithm An algorithm is like a recipe for a computer. It provides a clear set of instructions that outline the exact steps to be followed to accomplish a particular goal. These instructions are written in a way that a computer can understand and execute them. #### Step-by-Step Process A program's algorithm breaks down a complex task into smaller, manageable steps. Each step represents a specific action that needs to be performed by the computer. These steps are executed in a sequential order, one after another, until the desired outcome is achieved. The step-by-step process ensures that the program flows logically and consistently. #### Importance of a Clear Algorithm Having a clear and well-defined algorithm is crucial for developing effective programs. It helps programmers organize their thoughts and plan the program's logic before writing the actual code. A clear algorithm allows for easier debugging, maintenance, and collaboration between programmers. ##### Example 1: Algorithm for Simple Calculator Program **Program Algorithm**: 1. Start 2. Input the first number 3. Input the second number 4. Add the first and second numbers to calculate the sum 5. Multiply the first and second numbers to calculate the product 6. Divide the first number by the second number to calculate the quotient 7. Subtract the second number from the first number to calculate the difference 8. Output the sum, product, quotient, and difference 9. End ##### Example 2: Algorithm for Calculating the Area of a Rectangle Let's consider an algorithm for calculating the area of a rectangle using the `length` and `width` values: 1. Start 2. Input the value of `length` 3. Input the value of `width` 4. Multiply `length` by `width` and assign the result to `area` 5. Output the value of `area` 6. End In this example, the algorithm begins by taking inputs for `length` and `width`. It then multiplies these values to calculate the `area` and outputs the result. Finally, the algorithm ends. #### Iteration and Decision-Making Algorithms can also include iteration (repeating steps) and decision-making (choosing different paths based on conditions). These concepts allow programs to handle different scenarios and make dynamic choices. #### Refining and Improving Algorithms Programmers continuously refine and improve algorithms to make programs more efficient, reliable, and user-friendly. They analyze the steps, identify potential issues or optimizations, and modify the algorithm accordingly. #### Summary A program's algorithm represents the step-by-step process or set of instructions that guide a computer in solving a problem or performing a task. Understanding and designing clear algorithms are essential skills for effective programming. With a well-defined algorithm, programmers can develop structured and efficient programs.

    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
    Sign in via Google Sign in via Facebook Sign in via X(Twitter) Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    By signing in, you agree to our terms of service.

    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