2021
12
JOBCHER BLOG
docker 安装kong 网关
docker 安装 kong 网关 建立数据库 创建网络 1docker network create kong-net 建立数据库 1docker run -d --name kong-database \ 2 --network=kong-net \ 3 -p 5432:5432 \ 4 -e "POSTGRES_USER=kong" \ 5 -e "POSTGRES_DB=kong" \ 6 -e "POSTGRES_PASSWORD=kong123" \ 7 postgres:9.6 创建 kong 数据 1docker run --rm --network=kong-net \ 2 -e "KONG_DATABASE=postgres" \ 3 -e "KONG_PG_HOST=kong-database" \ 4 -e "KONG_PG_PASSWORD=kong123" \ 5 -e "KONG_PASSWORD=kong123" \ 6 kong:latest kong migrations bootstrap 创建 kong 创建 kong gateway 1 docker run -d --name kong \ 2 --network=kong-net \ 3 -e "KONG_DATABASE=postgres" \ 4 -e "KONG_PG_HOST=kong-database" \ 5 -e "KONG_PG_USER=kong" \ 6 -e "KONG_PG_PASSWORD=kong123" \ 7 -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \ 8 -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \ 9 -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \ 10 -e "KONG_PROXY_ERROR_LOG=/dev/stderr" \ 11 -e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \ 12 -e "KONG_ADMIN_LISTEN=0.
JOBCHER BLOG
搭建docker registry 镜像仓库
搭建 docker registry 镜像仓库 获取镜像 1docker pull registry:2.7.1 1docker pull hyper/docker-registry-web 容器运行 1mkdir -p /opt/data/registry 2docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry --name registry registry:2.7.1 1docker run -d -p 8080:8080 --name registry-web --link registry \ 2 -e REGISTRY_URL=http://192.168.99.146:5000/v2 \ 3 -e REGISTRY_TRUST_ANY_SSL=true \ 4 -e REGISTRY_BASIC_AUTH="GjhYGDGi2HhkJB" \ 5 -e REGISTRY_NAME=192.168.99.146:5000 \ 6 hyper/docker-registry-web 上传容器 1vim /etc/docker/daemon.json 2{ 3 "insecure-registries": ["192.168.99.146:5000"] 4} 5 6docker tag sjtfreaks/hogo-nginx:v1.1 192.168.99.146:5000/sjtfreaks/hogo-nginx:v1.1 7docker push 192.168.99.146:5000/sjtfreaks/hogo-nginx:v1.1
JOBCHER BLOG
rsync 文件同步
rsync 文件同步 rsync 是一个常用的 Linux 应用程序,用于文件同步 安装 1# Debian or Ubuntu 2$ sudo apt-get install rsync 3 4# Red Hat 5$ sudo yum install rsync 6 7# Arch Linux 8$ sudo pacman -S rsync 基本用法 使用 rsync 命令时,可以作为 cp 和 mv 命令的替代方法,将源目录同步到目标目录。 -r 表示递归,即包含子目录。注意,-r 是必须的,否则 rsync 运行不会成功。source 目录表示源目录,destination 表示目标目录。 -a 参数可以替代-r,除了可以递归同步以外,还可以同步元信息(比如修改时间、权限等)。由于 rsync 默认使用文件大小和修改时间决定文件是否需要更新 1rsync -r source destination 远程同步 1rsync -av <源地址>/ <用户名>@<ip地址>:/<目标地址> 友情地址:mysql 迁移
JOBCHER BLOG
helm 安装
helm 安装 脚本安装 1curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 2chmod 700 get_helm.sh 3./get_helm.sh 4 5#或者可以使用这个命令 6curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash 7 8helm help 二进制安装 1wget https://get.helm.sh/helm-v3.7.2-linux-amd64.tar.gz 2tar -zxvf helm-v3.7.2-linux-amd64.tar.gz 3cd helm-v3.7.2-linux-amd64 4mv linux-amd64/helm /usr/local/bin/helm 5helm help
JOBCHER BLOG
k8s 部署loki日志
k8s 部署 loki 日志 helm 拉取 loki 1#加源 2helm repo add grafana https://grafana.github.io/helm-charts 3helm repo update 4#拉取 5helm fetch grafana/loki-stack --untar --untardir . 6cd loki-stack 7# 生成 k8s 配置 8helm template loki . > loki.yaml 9# 部署(如果要修改默认配置必须要修改一下yaml) 10k3s kubectl apply -f loki.yaml
JOBCHER BLOG
获取用户浏览器默认语言设置,自动判断跳转不同网站
自动判断跳转不同网站 根据用户目前的浏览器配置语言进行显示 供语言切换按钮,用户自定义选择不同的语言显示 根据识别用户的浏览器语言,自动判断并跳转到相应的语言网页,让你的网站更加灵动。 以下需要将代码放在 HTML 的内即可,然后自行制作多语言页面。 代码如下: 1<script type="text/javascript"> 2 //获取用户语言的顺序是 3 //1.获取本地缓存里的内容 4 //2.用户浏览器的语言设置 5 //如果上面2个都没有获取到,就直接使用'en'作为用户选择的语言 6 var language = 7 localStorage.getItem("locale") || 8 window.navigator.language.toLowerCase() || 9 "en"; 10 //把用户的语言写入缓存,供下次获取使用 11 localStorage.setItem("locale", language); 12 //判断用户的语言,跳转到不同的地方 13 if (language.indexOf("zh-") !== -1) { 14 window.location = "/zh-cn/index.html"; 15 } else if (language.indexOf("en") !== -1) { 16 window.location = "/en/index.html"; 17 } else { 18 //其它的都使用英文 19 window.location = "/en/index.html"; 20 } 21</script> 核心代码
JOBCHER BLOG
linux服务基础知识
linux 服务基础知识 1、哪些设置能够提升 SSH 远程管理的安全等级 2、ssh 连接时认证时间过长如何解决? 3、scp 和 rsync 进行远程文件复制有什么区别? 4、请描述通过 DHCP 服务器获取 IP 地址的过程。 5、简单描述 FTP 的主动模式和被动模式的区别? 6、集群环境中,如何保证所有服务器之间的时间误差较小。 7、请描述用户访问网站时 DNS 的解析过程。 8、解释权威 DNS 和递归 DNS 的含义,并描述智能 DNS 的实现原理。 9、公司里有一台服务器,需要在上面跑两个网站,并且其中一个网站需要更换新域名,请问如何处理? 网站1:www.a.com 网站2:www.b.com(旧) www.d.com(新) 10、简述 Apache 的三种工作模式? 11、请写出工作中常见的 Apache 优化策略。 12、有哪些技术可以提高网站的安全和效率? 13、Apache 和 Nginx 各有什么优缺点,应该如何选择? 14、为什么 Nginx 的并发能力强,资源消耗低? 15、写出几个 Nginx 的常用模块,并描述其功能。 16、请解释 Nginx 是如何连接 PHP 进行页面解析的? 17、请描述 Nginx 和 Tomcat 之间的数据传输过程? 18、请写出几个常见的 HTTP 状态码,并解释出现原因。
JOBCHER BLOG
mysql基础知识
mysql 基础知识 1、库表 student.report,有 3 个字段,姓名、学科、成绩,记录如下,根据要求完成 SQL 语句: Name Subject Result 李白 Math 95 张三 English 83 王五 Math 79 李六 Math 85 张二 English 74 查询姓李的同学的个数。 查询表中数学成绩大于 80 的前 2 名同学的名字,并按分数从大到小的顺序排列。 2、MYSQL 集群一主多从,主库宕机,如何合理切换到从库,其它从库如何处理? 3、单台 MySQL 达到性能瓶颈时,如何击碎性能瓶颈? 4、MySQL 什么时候创建索引? 5、误操作 drop 语句导致数据库数据破坏,请给出恢复的实际大体步骤。 6、如何保证 Redis 能永久保存数据? 7、如何利用 Redis 对 MySQL 进行性能优化?
JOBCHER BLOG
shell基础知识
shell 基础知识 1、有一个 b.txt 文本(内容如下),要求将所有域名截取出来,并统计重复域名出现的次数: http://www.baidu.com/index.html https://www.atguigu.com/index.html http://www.sina.com.cn/1024.html https://www.atguigu.com/2048.html http://www.sina.com.cn/4096.html https://www.atguigu.com/8192.html 2、统计当前服务器正在连接的 IP 地址,并按连接次数排序 3、使用循环在/atguigu 目录下创建 10 个 txt 文件,要求文件名称由 6 位随机小写字母加固定字符串(_gg)组成,例如:pzjebg_gg.txt。 4、生成随机数字。 5、批量检查多个网站是否可以正常访问,要求使用 shell 数组实现,检测策略尽量模拟用户真实访问模式。 http://www.atguigu.com http://www.gulixueyuan.com http://www.baidu.com
JOBCHER BLOG
Kubernetes 创建nfs存储类
Kubernetes 创建 nfs 存储类 首先你需要在别的终端上创建 nfs 服务并能提供 nfs 访问 Kubernetes 不包含内部 NFS 驱动。你需要使用外部驱动为 NFS 创建 StorageClass。 https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner 安装 nfs 驱动 安装 nfs 驱动 1#安装nfs客户端 2apt-get install nfs-common 3git clone https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner.git 4cd nfs-subdir-external-provisioner/deploy 5k3s kubectl create -f rbac.yaml 6vim deployment.yaml 编辑 deployment.yaml 1apiVersion: apps/v1 2kind: Deployment 3metadata: 4 name: nfs-client-provisioner 5 labels: 6 app: nfs-client-provisioner 7 # replace with namespace where provisioner is deployed 8 namespace: default 9spec: 10 replicas: 1 11 strategy: 12 type: Recreate 13 selector: 14 matchLabels: 15 app: nfs-client-provisioner 16 template: 17 metadata: 18 labels: 19 app: nfs-client-provisioner 20 spec: 21 serviceAccountName: nfs-client-provisioner 22 containers: 23 - name: nfs-client-provisioner 24 image: k8s.
JOBCHER BLOG
nginx 日志格式整理
nginx 日志配置 语法 access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]]; # 设置访问日志 access_log off; # 关闭访问日志 例子: access_log /var/logs/nginx-access.log access_log /var/logs/nginx-access.log buffer=32k gzip flush=1m 使用 log_format 自定义日志格式 Nginx 预定义了名为 combined 日志格式,如果没有明确指定日志格式默认使用该格式: log_format combined '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent"'; 如果不想使用 Nginx 预定义的格式,可以通过 log_format 指令来自定义。 语法 log_format name [escape=default|json] string ...; 变量 含义 $bytes_sent 发送给客户端的总字节数 $body_bytes_sent 发送给客户端的字节数,不包括响应头的大小 $connection 连接序列号 $connection_requests 当前通过连接发出的请求数量 $msec 日志写入时间,单位为秒,精度是毫秒 $pipe 如果请求是通过 http 流水线发送,则其值为"p",否则为“.
JOBCHER BLOG
linux系统开启root权限
linux 系统开启 root 权限 修改 ssh 服务配置文件 1sudo su - 2sudo vim /etc/ssh/sshd_config 增加权限 在# Authentication: 下输入 1PermitRootLogin yes 更改 root 密码,重启服务 1sudo passwd root 2service sshd restart
JOBCHER BLOG
mysql 笔记(1)
mysql 学习笔记(1) 本文章不涉及到关于 mysql 开放上的问题,主要记录关于 mysql 出现的问题,以及如何去维护 mysql 数据的日常。 mysql 各类信息的收集 收集变量信息 1show global variables; 收集进程信息 1show PROCESSLIST; 收集错误日志 1show global variables like 'log_error'; 收集慢日志信息 1show global variables like 'slow_querry_log_file'; 收集锁信息,高峰时期运行三次,每次间隔 10s 1SELECT locked_table, 2 locked_index, 3 locked_type, 4 blocking_pid, 5 T2.USER blocking_user, 6 T2.HOST blocking_host, 7 blocking_lock_mode, 8 blocking_trx_rows_modified, 9 waiting_pid, 10 T3.USER waiting_user, 11 T3.HOST waiting_host, 12 waiting_lock_mode, 13 waiting_trx_row_modified, 14 wait_age_secs, 15 waiting_query 16FROM sys.x$innodb_lock_waits T1 17LEFT JOIN INFROMATION_SCHEMA.
JOBCHER BLOG
163企业邮箱设置教程
163 企业邮箱设置教程 请进入这个网站 https://qiye.163.com/help/l-11.html
JOBCHER BLOG
git技巧
git 技巧 Git 是一个 “分布式版本管理工具”,简单的理解版本管理工具:大家在写东西的时候都用过 “回撤” 这个功能,但是回撤只能回撤几步,假如想要找回我三天之前的修改,光用 “回撤” 是找不回来的。而 “版本管理工具” 能记录每次的修改,只要提交到版本仓库,你就可以找到之前任何时刻的状态(文本状态)。 下面的内容就是列举了常用的 Git 命令和一些小技巧,可以通过 “页面内查找” 的方式进行快速查询:Ctrl/Command+f。 开卷必读 如果之前未使用过 Git,可以学习 Git 小白教程入门 一定要先测试命令的效果后,再用于工作环境中,以防造成不能弥补的后果!到时候别拿着砍刀来找我 所有的命令都在git version 2.7.4 (Apple Git-66)下测试通过 统一概念: 工作区:改动(增删文件和内容) 暂存区:输入命令:git add 改动的文件名,此次改动就放到了 ‘暂存区’ 本地仓库(简称:本地):输入命令:git commit 此次修改的描述,此次改动就放到了 ’本地仓库’,每个 commit,我叫它为一个 ‘版本’。 远程仓库(简称:远程):输入命令:git push 远程仓库,此次改动就放到了 ‘远程仓库’(GitHub 等) commit-id:输出命令:git log,最上面那行 commit xxxxxx,后面的字符串就是 commit-id 如果喜欢这个项目,欢迎 Star、提交 Pr、反馈问题😊 目录 脑图 展示帮助信息 回到远程仓库的状态 重设第一个 commit 查看冲突文件列表 展示工作区和暂存区的不同 展示暂存区和最近版本的不同 展示暂存区、工作区和最近版本的不同 快速切换到上一个分支 删除已经合并到 master 的分支 展示本地分支关联远程仓库的情况 关联远程分支 列出所有远程分支 列出本地和远程分支 查看远程分支和本地分支的对应关系 远程删除了分支本地也想删除 创建并切换到本地分支 从远程分支中创建并切换到本地分支 删除本地分支 删除远程分支 重命名本地分支 查看标签 查看标签详细信息 本地创建标签 推送标签到远程仓库 删除本地标签 删除远程标签 切回到某个标签 放弃工作区的修改 恢复删除的文件 以新增一个 commit 的方式还原某一个 commit 的修改 回到某个 commit 的状态,并删除后面的 commit 修改上一个 commit 的描述 查看 commit 历史 显示本地更新过 HEAD 的 git 命令记录 修改作者名 修改远程仓库的 url 增加远程仓库 列出所有远程仓库 查看两个星期内的改动 把 A 分支的某一个 commit,放到 B 分支上 给 git 命令起别名 存储当前的修改,但不用提交 commit 保存当前状态,包括 untracked 的文件 展示所有 stashes 回到某个 stash 的状态 回到最后一个 stash 的状态,并删除这个 stash 删除所有的 stash 从 stash 中拿出某个文件的修改 展示所有 tracked 的文件 展示所有 untracked 的文件 展示所有忽略的文件 强制删除 untracked 的文件 强制删除 untracked 的目录 展示简化的 commit 历史 查看某段代码是谁写的 把某一个分支导出成一个文件 从包中导入分支 执行 rebase 之前自动 stash 从远程仓库根据 ID,拉下某一状态,到本地分支 详细展示一行中的修改 清除 .
JOBCHER BLOG
docker image镜像上传
docker image 镜像上传 登入 docker hub,在https://hub.docker.com上注册你的账号。 1docker login 2username:#输入你的用户名 3password:#输入你的密码 上传镜像 1docker tag nginx:hugo sjtfreaks/hogo-nginx:v1 2docker push sjtfreaks/hogo-nginx:v1
JOBCHER BLOG
docker进阶使用
docker 进阶使用 dockerfile 和 docker compose 的配置 Dockerfile 使用 Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。 例子: 1 FROM nginx 2 RUN echo '这是一个本地构建的nginx镜像' > /usr/share/nginx/html/index.html 保存 Dockerfile 文件并在本地路径执行 1 docker build -t nginx:v1-test . 2 docker run -name docker run --name nginx-test -d -p 8080:80 nginx:v1-test 浏览 nginx 页面确认更新内容 curl 127.0.0.1:8080 输出: 这是一个本地构建的nginx镜像 Docker 命令详解 COPY 复制指令,从上下文目录中复制文件或者目录到容器里指定路径。 1 COPY [--chown=<user>:<group>] <源路径1>... <目标路径> 2 COPY [--chown=<user>:<group>] ["<源路径1>",... "<目标路径>"] <源路径>:源文件或者源目录,这里可以是通配符表达式,其通配符规则要满足 Go 的 filepath.Match 规则。例如: 1 COPY hom* /mydir/ 2 COPY hom?
JOBCHER BLOG
Kubernetes k8s 组件
Kubernetes k8s 组件 控制平面组件(Control Plane Components) 控制平面的组件对集群做出全局决策(比如调度),以及检测和响应集群事件(例如,当不满足部署的 replicas 字段时,启动新的 pod)。 kube-apiserver API 服务器是 Kubernetes 控制面的组件, 该组件公开了 Kubernetes API。 API 服务器是 Kubernetes 控制面的前端。 etcd etcd 是兼具一致性和高可用性的键值数据库,可以作为保存 Kubernetes 所有集群数据的后台数据库。 kube-scheduler 控制平面组件,负责监视新创建的、未指定运行节点(node)的 Pods,选择节点让 Pod 在上面运行。 kube-controller-manager 运行控制器进程的控制平面组件。 cloud-controller-manager 云控制器管理器是指嵌入特定云的控制逻辑的 控制平面组件。 云控制器管理器使得你可以将你的集群连接到云提供商的 API 之上, 并将与该云平台交互的组件同与你的集群交互的组件分离开来。 Node 组件 节点组件在每个节点上运行,维护运行的 Pod 并提供 Kubernetes 运行环境。 kubelet 一个在集群中每个节点(node)上运行的代理。 它保证容器(containers)都 运行在 Pod 中。 kube-proxy kube-proxy 是集群中每个节点上运行的网络代理, 实现 Kubernetes 服务(Service) 概念的一部分。 容器运行时(Container Runtime) 容器运行环境是负责运行容器的软件。 Kubernetes 支持多个容器运行环境: Docker、 containerd、CRI-O 以及任何实现 Kubernetes CRI (容器运行环境接口)。
JOBCHER BLOG
2021年第50周记
2021 年第 50 周周记 这周完成了以下任务 搭建 hugo 博客 使用 docker 封装了 blog 搭建 k3s 环境 计划: 学习 k8s 总结:没啥好总结,刚开始写周记,就随便写一点吧 欢迎关注我的博客www.jobcher.com
JOBCHER BLOG
nginx 汇总
nginx 汇总 各类 nginx 问题汇总 安装 nginx 1 #centos 2 yum install nginx 3 #ubuntu 4 apt install nginx http 代理 正向代理 1 server { 2 listen 80; 3 server_name www.nbtyfood.com; 4 5 location / { 6 proxy_pass http://127.0.0.1:8080; 7 } 8 } 反向代理 负载均衡 1 upstream mysvr { 2 server 192.168.10.121:3333; 3 server 192.168.10.122:3333; 4 } 5 server { 6 .... 7 location ~*^.+$ { 8 proxy_pass http://mysvr; #请求转向mysvr 定义的服务器列表 9 } 10 } 热备
JOBCHER BLOG
TCP/IP详解
TCP/IP 协议 什么是 TCP/IP 协议 OSI 七层架构 TCP/IP 四层模型 协议 应用层 HTTP、SMTP、SNMP、FTP、Telnet、SIP、SSH、NFS 表示层 应用层 XDR、ASN.1、NCP、TLS、ASCII 会话层 sockets、SOCKS、PAP 传输层 传输层 TCP、UDP、RTP、SCTP 网络层 网络互连层 IP、ICMP、IPX、BGP、OSPF、RIP、IGRP、EIGRP 数据链路层 网络访问(链接)层 以太网、令牌环、HDLC、帧中继、ISDN、ATM、IEEE 802.11 物理层 调制解调器、无线电、光纤 报文结构 TCP 报文段首部格式 源端口和目的端口:各占 2 个字节,分别写入源端口和目的端口。IP 地址 + 端口号就可以确定一个进程地址 序号/序列号(Sequense Number,SN):在一个 TCP 连接中传送的字节流中的每一个字节都按顺序编号。该字段表示本报文段所发送的数据的第一个字节的序号。初始序号称为 Init Sequense Number, ISN(序号/序列号这个字段很重要,大家留个印象,下文会详细讲解) 例如,一报文段的序号是 101,共有 100 字节的数据。这就表明:本报文段的数据的第一个字节的序号是 101,最后一个字节的序号是 200。显然,下一个报文段的数据序号应当从 201 开始,即下一个报文段的序号字段值应为 201。 确认号 ack:期望收到对方下一个报文段的第一个数据字节的序号。若确认号为 N,则表明:到序号 N-1 为止的所有数据都已正确收到。 数据偏移(首部长度):它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。这个字段实际上是指出 TCP 报文段的首部长度。 保留:占 6 位,应置为 0,保留为今后使用。
JOBCHER BLOG
自建服务器内网穿透
内网穿透 文章中使用的内网穿透前提是必须具有公网 IP 的云服务器,不符合条件的同学可以跳过了。 nps 内网穿透 nps 是一款轻量级、高性能、功能强大的内网穿透代理服务器。 在公网服务器上安装 nps sever 端 1 wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_server.tar.gz 2 tar -zxvf linux_amd64_server.tar.gz 3 sudo ./nps install 4 sudo nps start 在控制端安装 npc client 端 1 wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_client.tar.gz 2 tar -zxvf linux_amd64_client.tar.gz 3 sudo ./npc -server=ip:port -vkey=web界面中显示的密钥 4 sudo npc start npc 安装完成可以进入 web 页面穿透端口和域名 http://localhost:8080 frps 内网穿透 frps 相对于 nps 的劣势是有断流的风险 frps 相对于 nps 的优势是对于高流量的媒体服务能够提供更可靠的支持 安装 frps 1 wget https://code.aliyun.com/MvsCode/frps-onekey/raw/master/install-frps.sh -O ./install-frps.sh 2 chmod 700 .
JOBCHER BLOG
树莓派搭建k3s
树莓派安装 k3s 1.安装 k3s 控制节点 1 curl -sfL https://get.k3s.io | sh - 2 cat /var/lib/rancher/k3s/server/node-token 工作节点 1 curl -sfL https://get.k3s.io | K3S_URL=https://myserver:6443 K3S_TOKEN=mynodetoken sh - 树莓派特别要注意一个坑,就是关于内存的问题这个之后再讲 1 k3s kubectl get nodes 2 #显示正确的节点表示完成 卸载 k3s 1 #server 节点 2 /usr/local/bin/k3s-uninstall.sh 3 #agent 节点 4 /usr/local/bin/k3s-agent-uninstall.sh 2.安装 dashboard k3s 面板 部署 Kubernetes 仪表盘 1 GITHUB_URL=https://github.com/kubernetes/dashboard/releases 2 VERSION_KUBE_DASHBOARD=$(curl -w '%{url_effective}' -I -L -s -S ${GITHUB_URL}/latest -o /dev/null | sed -e 's|.*/||') 3 sudo k3s kubectl create -f https://raw.
JOBCHER BLOG
brew 安装配置
brew 安装配置 一.安装 1.在 ubuntu 上安装 brew 1 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 2.在 centos 上安装 brew 1 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 3.在 MacOS 上安装 brew 1 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 二、使用 1.安装 wget 1 brew install wget Homebrew 会将软件包安装到独立目录,并将其文件软链接至 /usr/local 1 $ cd /usr/local 2 $ find Cellar 3 Cellar/wget/1.16.1 4 Cellar/wget/1.16.1/bin/wget 5 Cellar/wget/1.16.1/share/man/man1/wget.1 6 7 $ ls -l bin 8 bin/wget -> ../Cellar/wget/1.16.1/bin/wget 2.创建你自己的 Homebrew 包 1 $ brew create https://foo.
JOBCHER BLOG
gitlab CI/CD 的使用
gitlab CI/CD 的使用 我将使用 gitlab 的流水线自动实现 hugo blog 文章的自动发布。 一、基础知识 二、安装过程 1.安装 gitlab runner 首先需要安装 gitlab runner 进入服务器 A 安装方法: 容器部署 手动二进制文件部署 通过 rpm/deb 包部署 docker 方式安装 安装文档:https://docs.gitlab.com/runne… 1 docker run -dit \ 2 --name gitlab-runner \ 3 --restart always \ 4 -v /srv/gitlab-runner/config:/etc/gitlab-runner \ 5 -v /var/run/docker.sock:/var/run/docker.sock \ 6 gitlab/gitlab-runner 1.1 设置信息 docker exec -it gitlab-runner gitlab-runner register 非 docker 方式安装 2.1 安装 GitLab Runner 安装环境:Linux 其他环境参考:https://docs.gitlab.com/runne… 下载 1 curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.
JOBCHER BLOG
Markdown教程
Markdown 教程 参考:https://www.runoob.com/markdown
JOBCHER BLOG
感谢打赏
如果你觉得这个项目对你有帮助,并且情况允许的话,可以给我一点点支持,支持我维护下去
JOBCHER BLOG
运维知识图谱
运维图谱 云原生平台基础 Docker、Docker Compose:容器化技术 Kubernetes:大规模容器编排 Helm:云原生应用商店 Rancher: 易用的容器管理平台 KubeSphere:一站式容器云平台 OpenTracing:云原生链路追踪标准 Jaeger:云原生链路追踪实现产品 Istio:ServiceMesh下的服务流量治理 Jenkins、JenkinsX、Jenkins-BlueOcean:老牌的CI/CD平台 Gtilab/hub-CICD:Gitlab/hub自带的CICD Argo:kubernetes声明式持续集成 Nexus:Maven私库 Harbor:Docker私库 Prometheus+Granfana:监控与可视化平台 ElasticSearch+Fluentd+Kibana:日志与可视化方案 Serverless:无服务器上云方案(不用去管服务器,不是不需要服务器) SpringCloud Kubernetes:微服务上云方案 熟练掌握docker和k8s技术 devops掌握jenkins和gitlab 应用12要素 在现代,软件通常作为服务交付:称为Web 应用程序或软件即服务。十二因素应用程序是一种构建软件即服务应用程序的方法,它: 使用声明格式进行设置自动化,以最大限度地减少新开发人员加入项目的时间和成本; 与底层操作系统有一个干净的合同,在执行环境之间提供最大的可移植性; 适合部署在现代云平台上,无需服务器和系统管理; 最大限度地减少开发和生产之间的差异,实现持续部署以获得最大的敏捷性; 并且可以在不对工具、架构或开发实践进行重大更改的情况下进行扩展。 名称 英文 描述 基准代码 codebase 一份基准代码,多份部署 依赖 Dependencies 显示声明依赖关系 配置 config 在环境中存储配置 后端服务 backing services 把后端服务当做附加资源 构建,发布,运行 build,release,run 严格分离构建和运行 进程 Processes 以一个或多个无状态进程运行应用 端口绑定 port binding 通过端口绑定来提供服务 并发 concurrency 通过进程模型进行扩展 易处理 disposability 快速启动和优雅终止可最大化健壮性 开发环境和线上环境等价 Dev/prod parity 尽可能保持开发、预发布、线上环境 日志 log 把日志当做事件流 管理进程 admin processes 后台管理任务当做一次性进程处理
07
JOBCHER BLOG
优秀英语教材的选择
优秀英语教材的选择 误区: 在我看来,简单地评判一本英语教材是否优秀,可以观察以下几点: 有无CEFR欧洲标准评级 是否是近10年出版 是否是英美出版社出版(或英美引进) 有无CEFR欧洲标准评级 1:CEFR是最重要的欧洲各语言标准,分为A1-C2六个等级,若不清楚可以上网查一下。教材若没有明确指出,则教材要么落伍20年以上,要么就不符合常规的CEFR大纲的英语教学,对于一般学生来说不选为妙。 2:CEFR标准和考试从上个世纪开始实施,相关教材出版过很多,教材内容也不断更新,当今能继续出版的多是更先进的教材,不建议买10年以前的教材,最好是近5年的书。一本脱节的教材因为所谓的“经典”而一直用下去是错误的(新概念1/2的几乎每篇课文我都背过,这个问题是毋庸置疑的)。 3:我从未见过母语为中文的作家出过任何优秀的英语教材(不包括参考书),这其实很好理解,你见过哪个中文学生从小学习外国人出的语文书吗?且英美是当今教育实力最强的两个国家,优秀教材数不胜数,没有什么理由选非英美甚至国内的教材。下面会抽一些国内知名垃圾教材说明。 当然以上标准也有例外情况,但我见过的大多数教材都符合以上要求。 2、国内知名教材的简单评价:国内最出名的教材无非以下几种:初高中教科书、新概念、赖世雄美语、走遍美国等,很显然,按照上面的标准,它们都过于落后了。这些教材与近五年新出的英语教材的差距都在二十年以上,是骡子是马直接买本下面推荐的优秀教材比对就能看得一清二楚(当然第一次见到这种教材可能不适应),我没必要具体说明。 3、对我国英语教育的吐槽:国内多数学校,包括许多重点中学(外国语除外)仍是使用落后的教科书,如旧版人教英语教科书本世纪初出版,质量本就一般,且竟过了近15-20年才再版,而我大致浏览了新版,发现并没有先进多少,依旧落后。唯一值得欣慰的是少部分大学教材直接引进了英美先进教材,但大概学的大学生也少之又少。而课外的培训机构仍大多迷信几十年前的极其落伍的教材如新概念,那些先进教材则因为教授所赚的利润不大而被遗弃,导致如今竟仍有人觉得新概念是宝。而国内多数中大学生的英语能力如何呢?中考2000词汇量,A2水平,高考4000词汇量,B1水平,四六级6000词汇量,B2水平。且中高考对听说写的要求不高或只以应试为准,实际远没有达到以上级别。这可是在连续学了至少10年英语的背景上!英语难吗?总比中文简单,我见过有些小孩小学就过了B2甚至C1的考试,所以一点也不难。由此可见国内学生英语能力之差,学习效率之低下。至于为什么作为英语学习大国,我国英语教育落后了20年以上? 一是教育部不思进取,文科教材远远落后于英美,考试只考察努力程度或技巧而非真实英语水平,二是学校的教学资源始终紧缺,就我所在的福建来说,省重点中学福州一中的英语教师也只是从双非福建师大毕业的,可见师资堪忧,三是课外辅导机构以利益为中心,对优秀教材视而不见,一本新概念因为利润大而鼓吹了几十年,有教英美优秀教材的机构只集中在大城市,没有推广开来,四是许多国外先进教材没有引进,导致直接买国外版很昂贵且教材缺乏宣传,引进了也会推迟很多年出版,出版即落伍,且知道有这些优秀教材的学生也少。当然禁用欧美教材能防止和平演变,这是不得不考虑的。凡此种种,其他的不多说了。 **4、既然知道了使用英美教材的先进与必要性,下面便进入正题。**英语教材一般分为听说读写综合教材和听说读写专项教材,出版社无非以下四个:剑桥、牛津、国家地理学习、培生(朗文)。学习这些教材应注意以下几点:1这些教材按照小学生至成年人的不同年龄段设计,我只推荐见过的适合小学高年级到成年人的青年或成人教材,想要其他教材的去官网上搜 2最好有优秀老师教学,没有优秀老师且有一定基础(至少高中水平,A2以上)可以看教师用书自学 3最好买最新版,配套的练习册尽可能也买来做,音频一般要额外买配套的CD,而不会附送 4外国版的书较贵,学生用书300左右,加上教师用书总共至少600-700(有些书的音频CD也要400),但比起补习机构报班的费用还是便宜多了 5可以去官网上查询相关教材,官网有(最好访问外网,即英国/美国的网站,而非国内网,国内网站资料很少)预览版,也可淘宝咸鱼购买电子书或音频和盗版书(很多盗版书纸质也不错)(淘宝搜索方法:教材名+教材,如Headway教材),或上国外购书网站如AbeBooks和Book Depository,邮递时间慢但便宜一些 推荐 牛津官网:https://elt.oup.com/learning_resources/?cc=global&selLanguage=en 剑桥官网:https://www.cambridge.org/hk/cambridgeenglish/catalog 培生官网:国外:https://www.pearson.com/english/catalogue.html 注:不建议看国内网站。另培生各种教材都非常多,不同教材差异也大 国家地理学习官网:国内:http://www.nglearning.cn/+公众号:NGL学习服务 国外:https://latinoamerica.cengage.com/ngl/ 教材书单(非综合教材会注明): 顶尖:Headway、English File、Navigate、Solutions(A1-C1),THiNK、Empower、face2face(A1-C1),speakout (A1-C2),说:Evolve(A1-C1) 优秀: Keynote(A1-C2)、Life(A1-C1)+国家地理的大部分教材,展望未来Look Ahead(A1-B1),技能:Unlock第二版(A1-C1),读:Reading Explorer(A1-B2),写:Great Writing(A1-C2),听:Listening & Notetaking Skills,语音词汇语法习语搭配动词:English in Use中文版、最新外国版,不建议引进的英文老版(A1-C2),泛读:Bookworms国外最新版,非国内版(A1-C1),高阶语法:英语用法指南(B2-C2) 一般:English in Mind第二版、For Real、Unlimited、剑桥实境英语Real English,剑桥国际英语教程Intercharge、Passages、剑桥标准英语教程Touchstone、Viewpoint,朗文环球英语教程(A1-C1),看听学(A1-A2),朗文国际英语教程Side by Side(A1-A2)读:Grammar in Context(A1-B级) 顶尖代表英语教材最高境界,几乎没有瑕疵。优秀相比顶尖在一些方面稍差。一般教材比前两者差得有点多,但依旧完爆国内多数主流教材。下面简单评析。 Headway、English File、Navigate、Solutions:牛津教材,淘宝只有Headway容易买到,已出第五版,English File只有老版,不建议买,Navigate国内貌似买不到 ,Solutions是过去的武汉外国语学校教材,教材用书淘宝难以买到,但都可以去外国网站购买 THiNK、Empower、face2face:剑桥教材,淘宝只有THiNK和face2face容易买到。THiNK是部分国际学校教材,不喜欢THiNK的排版和字体。 speakout:培生教材,有八本,是难度分级最为详细的一套教材,比常规教材多了intermediate plus和advanced plus难度,C2的advanced plus那本比下面Keynote的C2级好,如果打算只学一套教材从A1到C2的话那就这套吧。淘宝上搜索时要搜"speak out教材",而非"speakout教材" Evolve:剑桥神级口语教材,生活用语和应试讨论兼备,就是非常贵,CD卖400,但外网便宜不少,看了书后觉得如不练听的部分也没必要买CD Keynote:以TED演讲为特色,是为数不多的达到C2级别的教材。有国内大学引进版但不推荐,因为有删减 Life:阅读部分文章难度比同类同级别教材大得多 Keynote+Life+国家地理学习教材:整体还行,但相比前面的牛津剑桥还是差了一点 Unlock:分为读写和听说两本,第二版升级很大,可以在学一本综合教材的同时选学,读写本相当于Reading Explorer+Great Writing简化版,听说本感觉一般,听部分类似Notetaking那本,说部分过于注重应试讨论。 展望未来Look Ahead:出版于20年前,先前一直是外国语学校的初高中教材,本不该出现在这里,但这是我第一次了解到的英美优秀教材,当时看了后立即视一切国内教材为粪土,况且价格相对来说很便宜。总体来说是当前综合教材的始祖+简略版。其实抛去出版时间如今依旧可以称得上是顶级的,对国内外国语学校放弃这套教材表示遗憾
01
JOBCHER BLOG
关于我
感谢您对我们博客文章的关注和支持。您的支持是我们前进的动力,让我们能够不断地创作有价值、有趣的内容。在这篇文章中,我们想要向您表达我们的感激之情,并与您分享一些即将到来的精彩计划。 我们一直致力于为您带来最有价值的内容。不论是技术探讨、创意灵感、生活经验分享,还是深度思考的文章,我们都希望能够触及到您的内心,为您带来启发和帮助。同时,我们也非常欢迎您的反馈和建议,帮助我们不断提升,为您奉上更加精彩的阅读体验。 在线博客 👋 https://www.jobcher.com https://jobcher.github.io 书签导航 https://nav.jobcher.com/ 访问次数