Translate

Find the command used before

 How to use the command used before:

    ctrl + r





nodejs & npm & nvm

1. nodejs:

    运行js的环境

2. npm:

    nodejs的包管理工具

    命令:

        查看npm版本:npm -v
        安装需要的包:npm install [+ module name]
                如果直接npm install 就是安装package.json里的,安装到 node_modules 里
        查看已安装的:npm list        

3. nvm:

    nodejs的版本管理工具
    一个 nvm 可以管理很多 node 版本和 npm 版本

    命令:

        查看nvm版本:nvm -v
        查看所有安装的nodejs:nvm list
        选择使用的nodejs:nvm use + 版本
        安装对应版本的nodejs:nvm install + 版本



关系图:









Security of server (ssh and sudo)

 1. How to change the port of ssh:

(default port: 22)

1. vim /etc/ssh/sshd_config

2. 


3. systemctl restart sshd

* Port can change to the number close to 65535.



2. How to manage the accounts of server system:

2.1 How to use root account

    1) how to change the password of root

            sudo passwd root

    2) how to change to root

            su root

    3) create user

            adduser test                  (better)

            useradd -m test            (-m: create user folder /home/test)

    4) delete user

            userdel -r test               (-r: also delete folder /home/test)

    5) change password of user

            passwd test


2.2 How to add sudoer

    1)  "su root"

    2)  "visudo" (open /etc/sudoers)

    3)  add "user ALL=(ALL) ALL"


2.3 How to check which user has sudo right

            usermod -aG sudo test (add 'test' into sudo group)  

            getent group sudo


* 通常root账号就只通过密钥登陆,只有一人掌握密钥;

开通1-2个sudo账号,用于管理权限;

开通若干普通账号,用于部署等操作。




Something about ip address localhost, 127.0.0.1, 0.0.0.0

IP address can be divided into public ip and private ip.

  •     Public ip is unique.
  •     Private ip is not connected to Internet.
    • private ip address range:
                    Class A IP address:10.0.0.0--10.255.255.255
                    Class B IP address:172.16.0.0--172.31.255.255
                    Class C IP address:192.168.0.0--192.168.255.255

如果想用私有地址与Internet连接来访问公网,那该怎么做?这就需要将私有IP地址转换成公网IP地址,与外部连接。所以,我们平时使用的路由器中会装有一个叫做 NAT(网络地址转换) 的软件,我们的路由器中会至少会有一个有效的公网IP,NAT会将我们的私有地址转成路由器中的公网IP与外部Internet连接。而同样的,因为使用的是路由器中的公共的公网IP来连接Internet,所以这个内网中的PC在Internet中显示的都是路由器的公共IP,这样做不仅提供了一定程度的安全,也可以有效的减缓可用的IP地址空间的枯竭问题。

1. localhost:

    Default is point to 127.0.0.1. However, localhost is not equel to 127.0.0.1. It can be changed.


2. 127.0.0.1:

    首先我们要先知道一个概念,凡是以127开头的IP地址,都是回环地址(Loop back address),其所在的回环接口一般被理解为虚拟网卡,并不是真正的路由器接口。

    所谓的回环地址,通俗的讲,就是我们在主机上发送给127开头的IP地址的数据包会被发送的主机自己接收,根本传不出去,外部设备也无法通过回环地址访问到本机。

    *小说明:正常的数据包会从IP层进入链路层,然后发送到网络上;而给回环地址发送数据包,数据包会直接被发送主机的IP层获取,后面就没有链路层他们啥事了。

    而127.0.0.1作为{127}集合中的一员,当然也是个回环地址。只不过127.0.0.1经常被默认配置为localhost的IP地址。

    一般会通过ping 127.0.0.1来测试某台机器上的网络设备是否工作正常。


3. 0.0.0.0:

    首先,0.0.0.0是不能被ping通的。在服务器中,0.0.0.0并不是一个真实的的IP地址,它表示本机中所有的IPV4地址。监听0.0.0.0的端口,就是监听本机中所有IP的端口。   



ref: https://www.jianshu.com/p/ad7cd1d5be45



About Domain name

 1. 顶级域名,一级域名 Top-level domains,first-level domains (TLDs):

.com 供商业机构使用,但无限制最常用
.net 原供网络服务供应商使用,现无限制
.org 原供不属于其他通用顶级域类别的组织使用,现无限制
.edu / .gov / .mil 供美国教育机构/美国政府机关/美国军事机构。因历史遗留问题一般只在美国专用
.aero 供航空运输业使用
.biz 供商业使用
.coop 供联合会(cooperatives)使用
.info 供信息性网站使用,但无限制
.museum 供博物馆使用
.name 供家庭及个人使用
.pro 供部分专业使用
.asia 供亚洲社区使用
.tel 供连接电话网络与因特网的服务使用
.post 供邮政服务使用
.mail 供邮件网站使用
国家顶级域名:cn(中国大陆)、de(德国)、eu(欧盟)、jp(日本)、uk(英国)、us(美国)

* .ai 是一个小国家,只是正好缩写是ai

 2. 二级域名 Second-level domains (SLDs):

二级域(或称二级域名;英语:Second-level domain;英文缩写:SLD)是互联网 DNS 等级之中,处于根域名之下的域。二级域名是域名的倒数第二个部分,例如在域名 example.fuyeor.com 中,二级域名是 example 。


3. 准确理解顶级域


通常我们把.com成为顶级域,但严格意义上这样讲不太准确,真正的一级域名是由一个合法的字符串+域名后缀组成,所以 fuyeor.com 这种形式的域名才是一级域名,fuyeor 是域名主体,.com 是域名后缀,我们也可以把 .com 也称为顶级域。

一级域名又称为根域名,比如单独的 fuyeor.com 如果指向一个ip,这个域名就是一级域名。但需要注意的是,www.fuyeor.com 这种形式的域名并不是一级域名,它只是一个二级域名,也就是说 www 只是一个主机名。

* www:
www域名是World Wide Web(万维网)的简称,是一种全球性的域名,可以被用于网站、电子邮件或其他互联网应用。
这里就出现了一个命名习惯,通常将用作网站服务器的计算机起名www


4. 巧妙使用二/多级域名


一级域名需要备案,而二级域名不需要单独备案,只要它所处的一级域名已经备案,就能直接解析。比如 fuyeor.com 已经备案,若还需使用 www.fuyeor.com 、 music.fuyeor.com  等二级域名,不需要单独备案,但需要在域名申请的机构网站设置一下开启二级域名及绑定相应IP即可

域名有顶级域名和二级,三级之分,一般网站只用到顶级域名即可,有时候一个网站系统比较庞大,那么就可能使用多个域名,如果去申请多个域名肯定不划算,这个时候,使用已申请的一个域名的二级域名的处理方式就应运而生。比如百度买下了 baidu.com 这一顶级域名,将 baidu.com 绑定了一个地址,map.baicu.com、music.baicu.com 也绑定到了各个地址,不用单独花钱,只是购买了 baidu.com 这一个顶级域名而已。


Ref: https://docs.fuyeor.com/answer/7111.html



How to use nc to check internet connection

 1. What is nc:

Nc is short for netcat, nc can be used to test tcp and udp port on Linux.
* telnet only can used for tcp port

2. How to use:

    2.1 basic usage:

    -l: the host will be used as server and keep listening on this port
    -u: change to use UDP, default is TCP

    2.2 check the port of server is open or not

    server: nc -l port
    client: nc ip port

    Then, type anything on client, if server can receive the words from client. It means this port is open.




Dynamic routes in next.js

1. Dynamic Segment

A Dynamic Segment can be created by wrapping a folder's name in square brackets: [folderName]. For example, [id] or [slug].


2. Catch-all Segments

Dynamic Segments can be extended to catch-all subsequent segments by adding an ellipsis inside the brackets [...folderName].



3. Optional Catch-all Segments

Catch-all Segments can be made optional by including the parameter in double square brackets: [[...folderName]].



ref: https://nextjs.org/docs/pages/building-your-application/routing/dynamic-routes



What is the difference between .js .jsx .ts .tsx

.js 是javascript文件的扩展名,例如main.js。
.jsx 是javascript文件并表明使用了JSX语法。
.ts 是typescript文件的扩展名。
.tsx 表明是typescript文件并使用了JSX语法。

JSX是Javascript和XML结合的一种格式。React发明了JSX,利用HTML语法来创建虚拟DOM。
JSX是JavaScript的语法扩展。
当遇到<,JSX就当HTML解析,遇到{就当JavaScript解析。


How to ssh to a server using private key

 ssh -i /path/to/private_key.pem username@server_ip


* issue: "WARNING: UNPROTECTED PRIVATE KEY FILE!"

        solution: sudo chmod 600 /path/to/private_key.pem