---
# System prepended metadata

title: 徐欣業專題第一週筆記(2022/09/22~2022/09/29)

---

# 徐欣業專題第一週筆記(2022/09/22~2022/09/29)

[![hackmd-github-sync-badge](https://hackmd.io/kQSkhJocRDutmKHitnSdhA/badge)](https://hackmd.io/kQSkhJocRDutmKHitnSdhA)

[TOC]
- [x] VM(Virtual Machine) 
- [x] github
- [x] docker
- [x] heroku
- [x] NGRoK
- [x] linode
- [x] DB
### Virtual Machine(VM)虛擬機器
- What is VM?
    - a software computer used as emulation of an actual physical computer
    - can run multi-tenant on on physical computer
    - ![](https://i.imgur.com/fDHwvgH.png)
- VM
    - hypervisor
        - VMware vSphere
        - Microsoft Hyper-V
    - OS(operating system)
        - Ubuntu
            - Linux system
            - open source
    - VirtualBox
        - work on Windows, Linux
- Virtual Machine compare to Physical Servers
    - stable
        - easy to find the problem
        - VMs are independ to each other, so that if one of the VM get destroy.
        - problem can be remove easier than physical computer
            - build a new VM and restore the entire VM at a DR site
    - easy to manage
        -  recovery process can be very fast, because we don't need to restore the physical computer.
        -  can Customize system size
    - cheaper
        - because most of the physical system have a lot of resource isn't use, VM can take care of the underutilized system.
    - not easy to control.?
        - need profassional skill to control.
    - easy to remove server data to different server.
    - physical server environment need move to another location,is more difficult.
        -  need to build up the same environment step by step as the original one.
- reference
    - [Physical Servers vs. Virtual Machines: Key Differences and Similarities
](https://www.nakivo.com/blog/physical-servers-vs-virtual-machines-key-differences-similarities/)
    - [Virtual Machine | 虛擬機器](https://www.gigabyte.com/tw/Glossary/virtual-machine)
### GitHub & Git
- Distributed Version Control System(分散式版本控制系統)
    - repository(資料庫)
        - History
            - can tell the user when the code get change, and what change between two code.
            - can check all the document(code, picture,...)
        - can change what you want to public immediately
        - can storage multi-version's project in one list.
    - multi-person collaboration
- provide Cloud storage save our project 
- compare to centralized Version Control System(集中式版本控制)
    - diversify risk, everybody have there own code in there own device
![](https://i.imgur.com/44661gL.png)
![](https://i.imgur.com/wRSkOGt.png)
- how to use
    -  Create a new repository
        -  set owner name
        -  Repository name
        -  Description
- reference
    - [Git和Github簡介](https://www.leunghoyin.hk/git-github-intro)
    - [A list of commonly used Git commands](https://github.com/joshnh/Git-Commands)
    - [Git Bash 基本操作](http://yhhuang1966.blogspot.com/2020/01/git-git-bash.html)
    - [git/.COMMIT_EDITMSG.swp](https://www.itdaan.com/tw/81e9e8f6ca1f8cbe318fb984bab7d6a4)
    - [git commit 时出现：please enter the commit message for your changes](https://zhuanlan.zhihu.com/p/133331582)
    - [Git-解讀git status的訊息，了解工作資料夾的版控狀態](https://ithelp.ithome.com.tw/articles/10211789)
    - [Git – GitHub 出現](http://jsnwork.kiiuo.com/archives/3147/git-github-%E5%87%BA%E7%8F%BE-%E3%80%8Cplease-make-sure-you-have-the-correct-access-rights-and-the-repository-exists-%E3%80%8D/)
    - [error: src refspec xxx does not match](https://blog.csdn.net/u014361280/article/details/109703556)
### Docker
- software platfrom
    - Build, test, and deploy applications quickly
    - packages software into standardlized units called containers
        - let user easy to transplant to other deivice
    -  provide flexable cloud sevice
- How it work 
    - Docker container
    - Dockerfile
        - A order that contain how to build the Docker image
        - ![](https://i.imgur.com/tsbdyJR.png)
    - Docker image
        -  Docker container's blueprint
        -  Contain Docker file and code, code version
        - Docker ignore: will not be upload 
    - ![](https://i.imgur.com/17wGjYb.png)
 
- Docker vs VM
    - ![](https://i.imgur.com/kkApV76.png)
    - Docker
        - Take up less resources
        - High resource utilization
            - Share resource
        - run fast
    - VM
       - when user develop in different OS or version, VM need to install all the OS and version
       - waste a lot of time
       - OS operating needs lots of time and complexity
- Refernce
    - [什麼是 Docker](https://aws.amazon.com/tw/docker/)
    - [Docker vs VM](https://geekflare.com/docker-vs-virtual-machine/)
    - [Docker download](https://docs.docker.com/desktop/install/windows-install/)



### Database(DB)
- organized collection of structured information, or data, typically stored electronically in a computer system, usually control by database management system(DBMS).
- data can then be easily accessed, managed, modified, updated, controlled, and organized.
- structured query language(SQL)
    - SQL is a programming language used by nearly all relational databases to query, manipulate, and define data, and to provide access control.
- Reference
    - [What is a Database](https://www.oracle.com/database/what-is-database/#:~:text=A%20database%20is%20an%20organized,database%20management%20system%20(DBMS).)

### Linode
- Virtual Private Server(VPS)
    - uses virtualization software to partition physical servers into multiple virtual servers each having the ability to run its own Operating System (OS) and applications.
- Kernel-based Virtual Machine (KVM)
    - let user easy to use one device to  switch and control multi-devices.
    - save space and cost savings...
- provide different Linux system for user
    - ex. Alpine、Arch Linux、Centos、Debian、Fedora、Gentoo、Slackware、Ubuntu、openSUSE
    - didn't provide windows, need to prepare for itself.
- refernce
    - [KVM](https://www.aten.com/tw/zh/reasources/feature-articles/what-is-a-kvm-switch/)
    - [VPS](https://fullforms.com/VPS#:~:text=What%20does%20VPS%20mean%3F,System%20(OS)%20and%20applications.)
    - [Linode](https://www.kjnotes.com/other/106)


## LineBot 
### heroku
- PaaS(platform as a service)
    - online computing services
    - provide platform-based service
        - User don't need to manage and control online platform-based
        - User only need take care of app.
- a platform that allow user to public online
- heroku have provide Dyno to let the user run faster
    - Dyno: virtual machine,
    - need $$$
- AWS(Amazon Web Services)
### ngrok
- Reverse Proxy(反向代理伺服器)
    - Used as a proxy on the server side
    - Clients only knows proxy's IP
    - Clients can use reverse server to access resources on different back-end servers
- public localhost server     
![Reverse Proxy](https://i.imgur.com/vqEXIrc.png)
![](https://i.imgur.com/pCYyw40.png)
![](https://i.imgur.com/hi3DATo.png)

- refernce
    - [Heroku vs ngrok](https://stackshare.io/stackups/heroku-vs-ngrok)
    - [NGROK](https://www.newton.com.tw/wiki/ngrok/13986278)
    - [反向代理](https://zh.wikipedia.org/zh-tw/%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86)
    - [ngrok 不求人：自己搭一個窮人版的 ngrok 服務](https://5xruby.tw/posts/easy-ngrok-by-nginx-ssh-tunnel)
    - [不做怎麼知道系列](https://ithelp.ithome.com.tw/articles/10230149)