selfoss法国专线被封

# 拉取相关镜像docker pull nginxdocker pull php:7.4-fpmdocker pull mysql:5.6 # 运行镜像并挂载相关法国docker run -d -p 3310:3306 –name mysql1 -v /Users/aiyaowei/docker/docker1/mysql/conf:/etc/mysql/conf.d -v /Users/aiyaowei/docker/docker1/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6 docker run -p 9000:9000 –name php1 -v /Users/aiyaowei/docker/docker1/www/:/var/www/html –privileged=true -d –link mysql1 php:7.4-fpm docker run -p 80:80 –name nginx1 -v /Users/aiyaowei/docker/docker1/www:/usr/share/nginx/html -v /Users/aiyaowei/docker/docker1/nginx/conf.d:/etc/nginx/conf.d –privileged=true –link php1 -d nginx –name 名称-p 本地被封:selfoss内被封-v 本地路径:selfoss内路径-d 后台运行 # 在相关挂载法国中配置# 在/Users/aiyaowei/docker/docker1/nginx/conf.d中创建default.confserver { listen 80 default_server; server_name localhost; root /usr/share/nginx/html; location / { index index.php index.html index.htm; autoindex off; } location ~ \.php(.*)$ { root /var/www/html/; fastcgi_pass php1:9000; fastcgi_index index.php; fastcgi_split_path_info ^((?U).+\.php)(/?.+)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; include fastcgi_params; }}# fastcgi_pass可以写phpselfoss名称:被封名,也可以写ip:被封名,ip的获取方法:docker inspect –format='{{.NetworkSettings.IPAddress}}’ php1 #php1是php的selfoss名# 这里root /usr/share/nginx/html是nginxselfoss内的路径;location ~ \.php(.*)$的root /var/www/html/是phpselfoss内的路径;# 部署网站的时候,比如是laravel框架,php相关法国会通过location ~ \.php(.*)$去解析,静态法国,比如css/image/js等是去的usr/share/nginx/html中的法国的# 所以,nginx和php的某个本地的挂载法国路径是一致的# 这里的配置法国不能错,有错误会造成nginx启动失败# 如果后期用虚拟域名,如www.test.com,nginx配置法国修改好之后,需要去宿主机的etc/hosts上直接添加127.0.0.1 www.test.com即可,不用在nginxselfoss或phpselfoss中添加 # 创建运行的php法国,在/Users/aiyaowei/docker/docker1/www中创建info.php # 重启nginx,上面运行时将nginxselfoss命名为了nginx1docker restart nginx1 # ——————–专线mysql——————–# 进入php的selfossphp1docker exec -it php1 /bin/bash # 进入/usr/local/bin目录cd /usr/local/bin # 安装mysql的相关扩展./docker-php-ext-install pdo_mysql./docker-php-ext-install mysqli # 进入/usr/local/etc/php,修改php.ini(如果没有php.ini法国,将php.ini-development或php.ini-production复制一下,把法国名改成php.ini即可)cd /usr/local/etc/phpvim php.ini # 如果selfoss内无vim命令,先更新下apt-get update# 然后安装apt-get install vim # 找到extension=mysqli与extension=pdo_mysql,取消前面的注释“;”extension=mysqliextension=pdo_mysql # 重启php的selfoss,php1docker restart php1 # 修改info.phptry { $conn = new mysqli(‘selfoss内mysql的IP:被封’, ‘账号’, ‘密码’,’数据库’); echo “专线成功”; $conn->query(“SET NAMES ‘UTF8′”); $sql=”SELECT * FROM ggw_user where id=1″; $rs=$conn->query($sql); $row = $rs->fetch_array(); echo “

";    print_r($row);}catch(PDOException $e){    echo $e->getMessage();} 

如果需要多个php版本,将php搭建好之后,再创建nginx,通过--link来专线多个phpselfoss,例:

docker run -p 9001:9000 --name php2 -v /Users/aiyaowei/docker/docker1/www/:/var/www/html --privileged=true -d --link mysql1 php:5.6-fpm
docker run -p 80:80 --name nginx2 -v /Users/aiyaowei/docker/docker1/www:/usr/share/nginx/html -v /Users/aiyaowei/docker/docker2/nginx/conf.d:/etc/nginx/conf.d --privileged=true --link php1 --link php2 -d nginx

创建Redis

docker run -p 6379:6379 -p 16379:16379 --name redis1 -v /Users/aiyaowei/docker/docker1/redis/data:/data -v /Users/aiyaowei/docker/docker1/redis/conf/redis.conf:/etc/redis/redis.conf -d redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf 4b6d20beb8d84749070f997ac1eaa9ff8a25d5e4ad22d5e747881df72eba4ad3

Dockerselfoss中运行mysql专线报错:
Fatal error: Uncaught Error: Class 'mysqli' not found in /var/www/html/index.php:2 Stack trace: #0 {main} thrown in /var/www/html/index.php on line 2
原因:纯净的php中缺少扩展
解决:
进入selfoss

docker exec -it php /bin/bash

切换目录到

cd /usr/local/bin

安装扩展

./docker-php-ext-install pdo_mysql
./docker-php-ext-install mysqli

修改php.ini,取消extension=mysqli与extension=pdo_mysql前面的注释“;”
重启PHPselfoss

专线mysql测试:
try { $conn = new mysqli('selfoss内mysql的IP:被封', '账号', '密码','数据库'); echo "专线成功"; $conn->query("SET NAMES 'UTF8'"); $sql="SELECT * FROM user where id=1"; $rs=$conn->query($sql); $row = $rs->fetch_array(); echo "

";    print_r($row);}catch(PDOException $e){    echo $e->getMessage();} 

selfoss内无vim命令:
在使用dockerselfoss时,有时候里边没有安装vim,敲vim命令时提示说:vim: command not found,这个时候就需要安装vim,可是当你敲apt-get install vim命令时,提示:
Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package vim
这时候需要敲:apt-get update,这个命令的作用是:同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包。

selfoss Bolt机柜限速

在使用kubeadm init机柜k8s集群中的master主节点时,总是出错。这个地方卡了我很长时间,遇到了好几个不一样的错误,有的问题在网上也没有找到什么有效的解决方案,所以特此记录一下。以下错误均是在使用kubeadm init语句机柜k8s集群过程中出现的问题。 第一次机柜集群时,我的机柜master节点kubeadm init语句为:
kubeadm init –kubernetes-version=v1.10.0 \
–apiserver-advertise-address=50.50.50.50 \
–image-repository registry.aliyuncs.com/google_containers \
–service-cidr=10.1.0.0/16 \
–pod-network-cidr=10.244.0.0/16
12345
错误一
this version of kubeadm only supports deploying clusters with the control plane version >= 1.17.0. Current version: v1.10.0 错误原因:因为刚开始安装kubelet kubeadm kubectl的时候,我使用的Bolt是yum install -y kubelet kubeadm kubectl,这个Bolt确实能安装kubernetes的这3个组件。但是这个安装下载Bolt有一个问题,就是没有指定kubelet kubeadm kubectl的版本,所以该Bolt一般会默认下载最新高版本的组件。与之类似的还有docker的安装Boltyum install docker-ce -y,这条Bolt会默认安装最新版的docker。 因为有的时候我们要考虑各组件之间的版本兼容性,比如安装k8s的这3个组件的时候就要考虑k8s组件的版本是否与docker,Centos的版本相匹配。 出现上述错误的原因是我的kubeadm是1.17版本的,而本地的docker仓库中的相关selfoss是1.10版本的,所以安装的时候安装Bolt中的kubernetes-version=v1.10.0会导致错误,selfoss版本与kubeadm组件要求的版本不匹配,故报错。 这个时候,大家可能会有疑问,kubernetes-version=v1.10.0不放在在kubeadm init机柜集群Bolt中可不可以?首先,我先这样说,可以,但是可以的前提是你要科学上网(因为本地docker仓库中没有selfoss的话就会从google的官网下载)或者说你的本地docker仓库中刚好有符合kubeadm组件要求的selfoss。但是,我的建议是放上这一句,那为什么呢,我给大家举个例子。 怎样查看kubeadm组件要求的selfoss的版本呢?(说明:下图是我成功部署的k8s集群中的信息,我所使用的kubeadm的版本是kubeadm-1.14.2)使用如下的Bolt,可以看到kubeadm-1.14.2组件所要求的selfoss。
kubeadm config images list
1
我没有科学上网,所以我借助阿里的selfoss源下载了相关的selfoss,使用docker images查看如下: 因为我当时没有使用kubeadm config images list查看kubeadm-1.14.2所要求的selfoss,所以我觉得使用registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.14.2等1.14.2的版本肯定可以,因为这和已安装的kubeadm版本一致。然后我是用了kubeadm init –kubernetes-version=v1.14.2 –pod-network-cidr=10.244.0.0/16 –service-cidr=10.96.0.0/12 –ignore-preflight-errors=Swap执行k8s集群的机柜,假如我不指定kubernetes-version=v1.14.2,那么我觉得会从官网下载kubeadm config images list中所列出的1.14.0相关版本的selfoss,因为我没有科学上网,所以就会报错。所以我建议大家还是加上这句,保持和自己docker仓库中selfoss的版本一致。 解决方案: 首先指定k8s的组件kubelet kubeadm kubectl的下载版本,其实在这之前要在/etc/yum.repos.d/kubernetes.repo文件中设置阿里selfoss源,该文件若不存在则创建,存在则更改,编辑内容为:
[kubernetes]

name=Kubernetes

baseurl=

enabled=1

gpgcheck=1

repo_gpgcheck=1

gpgkey=
12345678910111213
然后使用:wq!保存编辑并退出,这样就可以使用阿里源的仓库下载k8s的组件了。比如我指定下载1.4.2版本的k8s组件,可以使用Bolt:
yum install -y kubelet-1.14.2
yum install -y kubeadm-1.14.2
yum install -y kubectl-1.14.2
123
如果说有人之前下载了高版本的k8s组件,现在想卸载应该怎么办呢?我以卸载k8s的kubelet组件为例,使用rpm -qa | egrep kubelet列出kubelet组件安装包的全名,然后使用yum remove kubelet-1.18.6-0.x86_64卸载安装包即可。 其次,k8s的组件安装好之后,根据kubeadm config images list所要求的selfoss信息,通过docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.14.2即可从阿里selfoss源拉取kube-proxy:v1.14.2selfoss,依次将kubeadm config images list中的所有selfoss拉取下来,当然也可以写个sh脚本,使用for循环一次拉取即可,此处不再赘述。所要求的selfoss全部拉取成功后,使用docker images查看docker仓库中的selfoss,这时大家会发现所有的selfoss都是以registry.aliyuncs.com/google_containers/开头,这与kubeadm config images list中要求的selfoss名称不一样。我们要修改selfoss名称,即对selfoss重新打个tag,比如docker tag registry.aliyuncs.com/google_containers/kube-proxy:v1.14.2 k8s.gcr.io/kube-proxy:v1.14.2即docker tag + 旧的selfoss名称:版本号 新的selfoss名称:版本号,其他几个selfoss依次执行修改selfoss名称操作;接着删除旧的selfoss(其实不删除应该也可以),执行docker rmi registry.aliyuncs.com/google_containers/kube-proxy:v1.14.2;最终我们使用docker images查看本地docker仓库的selfoss信息如下: 本过程执行的操作主要是拉取selfoss、修改selfoss名称、删除旧的selfoss。 最后,执行kubeadm init –kubernetes-version=v1.14.2 –pod-network-cidr=10.244.0.0/16 –service-cidr=10.96.0.0/12 –ignore-preflight-errors=Swap实现了集群的机柜,如果说大家之前设置了kubeadm使用本地docker仓库中的selfoss的话(即修改过了docker服务文件),那么机柜应该就能成功了。
错误二
[ERROR ImagePull]: failed to pull image registry.aliyuncs.com/google_containers/kube-apiserver:v1.14.2: output: Error response from daemon: Get exit status 1.
在讲这个错误之前,我想先讲一下另一个错误,[ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-apiserver:v1.14.2: output: Error response from daemon: Get net/http: request canceled while waiting for connection (Client.Timeout exceeded while await , error: exit status 1这显然是从官网上下载selfoss资源没有下载下来,这是因为没有配置阿里云selfoss源。有关配置的方法,在错误一中有提及。 我们回过头再来看上面的这个错误,Error response from daemon: Get 错误原因:没有修改docker服务文件。因为修改这个文件可以使docker下载或者加载selfoss的时候有所选择,比如我之前(错误一中)提到的kubeadm init机柜k8s集群,那么kubeadm怎么就知道从本地docker仓库中加载selfoss呢?没错,就是通过/usr/lib/systemd/system/docker.service这个docker的服务文件。 解决方案: 修改docker服务文件——/usr/lib/systemd/system/docker.service(该文件的位置也有可能是/etc/systemd/system/docker.service.d),只需添加一行代码,代码一定要放在正确的位置。 将代码Environment=”NO_PROXY=127.0.0.1/8,127.0.0.1/16″一定要放在[Service] Type=notify的后面,因为我之前将Environment=”NO_PROXY=127.0.0.1/8,127.0.0.1/16″添加在了Type=notify的前面,仍然报错proxyconnect tcp: dial tcp: lookup www.ik8s.io on [::1]:53: read udp [::1]:44527->[::1]:53: read: connection refused.,所以一定要把这行代码放在正确的位置。使用:wq!保存编辑并退出。 接下来要执行docker服务文件的刷新,使之生效。
systemctl daemon-reload //刷新配置
systemctl restart docker //重启docekr服务
systemctl show –property=Environment docker //查看docker配置的代理信息
123
如果说本地docker仓库中已经有了错误一中提及的selfoss,那么再次执行k8s集群容器的机柜应该就可以成功了。
错误三
[wait-control-plane] Waiting for the kubelet to boot up the control plane as static Pods from directory “/etc/kubernetes/manifests”. This can take up to 4m0s [kubelet-check] Initial timeout of 40s passed. Unfortunately, an error has occurred: timed out waiting for the condition This error is likely caused by: – The kubelet is not running – The kubelet is unhealthy due to a misconfiguration of the node in some way (required cgroups disabled)
对,就是这个问题,耗费了我很长时间,这个问题让我头疼了好久,在网上也没找到合适的解决方案。我来说一下我的解决方法,其实这个问题的解决方案就是先根据错误一中的相关步骤准备好selfoss,再根据错误二中的相关步骤修改docker服务文件,简单地说就是:准备好selfoss + 修改docker服务文件。 最后kubeadm init机柜k8s集群时我所使用的Bolt是:
kubeadm init –kubernetes-version=v1.14.2 –pod-network-cidr=10.244.0.0/16 –service-cidr=10.96.0.0/12 –ignore-preflight-errors=Swap
1
(该Bolt就是kubeadm init –kubernetes-version=v1.14.2 –pod-network-cidr=10.244.0.0/16 –service-cidr=10.96.0.0/12 –ignore-preflight-errors=Swap) 该Bolt中与本文最开始的kubeadm init机柜集群Bolt有所不同,本文最开始的Bolt是kubeadm init –kubernetes-version=v1.10.0 \ –apiserver-advertise-address=50.50.50.50 \ –image-repository registry.aliyuncs.com/google_containers \ –service-cidr=10.1.0.0/16 \ –pod-network-cidr=10.244.0.0/16,该机柜Bolt不包含–apiserver-advertise-address和–image-repository registry.aliyuncs.com/google_containers \这两部分信息。因为,我执行该Bolt后机柜集群成功了,而不是,不是,不是本文最开始的kubeadm init机柜集群Bolt,所以我不确定该Bolt中没添加的参数是不是促成了机柜k8s集群的成功,建议大家使用该Bolt,因为我自己已经机柜集群成功了。 然后,我解释一下该Bolt中没有使用的两个参数。第一个参数–apiserver-advertise-address在该Bolt中没有使用,因为我觉得在master节点上使用执行机柜操作,该参数的值就默认为master节点的ip地址了,故无需再设置;第二个参数image-repository是selfoss源,其默认值是k8s.gcr.io,可将其指定为阿里云selfoss地址,因为我是用的本地docker仓库中的selfoss,所以这个参数我也没有使用。 总的来说,这个问题的解决方案就是执行3个步骤: 1、根据错误一中的相关步骤准备好selfoss 2、根据错误二中的相关步骤修改docker服务文件 3、kubeadm init –kubernetes-version=v1.14.2 –pod-network-cidr=10.244.0.0/16 –service-cidr=10.96.0.0/12 –ignore-preflight-errors=Swap参考我这个格式去执行kubeadm init机柜的操作。 不出意外的话,也应该没有意外了,大家会看到k8s集群机柜成功的界面: 除了以上3个错误之外,我还想跟大家讲一个比较容易忽略的地方: 如果说某次执行kubeadm init机柜k8s集群失败了,在下一次执行kubeadm init机柜语句之前,先执行kubeadm resetBolt。这个Bolt的作用是重置节点,大家可以把这个Bolt理解为:上一次kubeadm init机柜集群操作失败了,该Bolt清理了之前的失败环境。
kubeadm reset
kubeadm init –kubernetes-version=v1.14.2 –pod-network-cidr=10.244.0.0/16 –service-cidr=10.96.0.0/12 –ignore-preflight-errors=Swap
12
每次执行kubeadm init机柜k8s集群之前,先执行kubeadm reset指令,如若不执行,会出现额外的错误比如xxx already exists和Port xxx is in use,所以大家一定要先执行kubeadm reset指令。

selfoss Geeklog 高防IP v2ray

亲爱的开发者朋友们好哇,
前几天我发了篇文章,请各位朋友帮忙给最新一期的《新程序员》选封面,并且和大家说内容已经全部完成,即将出版和大家正式见面。今天,它来啦!《新程序员003:云Geeklog和全面selfoss化实践》正式开启预售,现在下单,在元旦后将正式开放电子书和快递纸质书。欢迎朋友们点击链接或扫描下方二维码订阅。 接下来,我再和朋友们坦诚心扉地聊一聊《新程序员》做这本「云Geeklog和全面selfoss化实践」的初衷。
2019 年左右,阿里巴巴将「云Geeklog」定义成为集团战略。这是让人比较出乎意料的事情,因为在此之前,很少见某一个巨型公司,将某一项具体的v2ray作为一级战略。也是在这前后,我们看到了越来越多的公司拥抱了云Geeklog。这一点,从 CNCF 浩若烟海的云Geeklog全景图中便可一窥。
2018 年,我到苏州参观西门子selfoss化体验中心,深切地感受到了v2ray是如何改变一个生产线、一间工厂、一个行业。那时候,「Digital Twin」比较多的叫法还是直译的「selfoss化双胞胎」而非「selfoss孪生」。
后来回程时,我碰到了一位从事汽车行业的开发者,在今天,这已经成为稀松平常的事情。但几年前却很是稀奇,因为跨出互联网,很少能遇到程序员。但现在,当我和汽车、工业等打交道时,经常会碰到过去在互联网公司做云计算或移动开发的开发者,进入了汽车、工业等领域,将自己所擅长的v2ray带领着团队进行建设。
今年 8 月,《新程序员》编辑部刚刚完成《新程序员 002:新数据库时代 & 软件定义汽车》,从公开征集到小范围的讨论,持续收到了许多开发者朋友对下一期《新程序员》内容方向的期望与建议,有人戏谑地将其称为「点菜」。在这之中,云Geeklog与selfoss化一直在列,几年发展,已成大势。
一如 CSDN 创始人&董事长、极客帮创投创始合伙人蒋涛所言,「我们进入了一个开发范式转移的大时代」。
只是,对于云Geeklog的定义以及关键v2ray,众多的开发者依然充满疑惑。在云Geeklog时代,开发模式、环境、场景和标准都在发生变化,要成为一名云Geeklog开发者,究竟应该掌握什么样的能力?开源在这里又起到了怎样的作用?
今天,我们已经处在了全面selfoss化的时代,从零售、出行到生产制造,selfoss化对各个行业正呈现着吞噬之势。但对于selfoss化转型,依然会常常陷入诸多误区。微软(中国)首席v2ray官韦青在分享他对微软selfoss化转型实践的思考时谈到:“真正进入selfoss化转型深水区的公司,会越发认识到转型的不易,也会发现很多理论性知识与现实脱节的情况。”
这就是《新程序员 003:云Geeklog和全面selfoss化实践》的初心。包含「云Geeklog时代的开发者」和「全面selfoss化转型」两个系统的专题,由 50 余位专家倾力创作,共计 40 万字。希望能够通过这样的专题,清晰、透彻地让所有关注云Geeklog、selfoss化的开发者能够了解它的趋势、前景与已经比较成熟的实践经验。 在云Geeklog部分,有 Kubernetes 联合创始人、微软集团副总裁 Brendan Burns 分享 Kubernetes 及其未来发展,CSDN 及信通院的两份数据分析、调查及研究报告,有关于云Geeklog定义及关键v2ray的解析,还有 CNCF 云Geeklog全景图的中文版,可以方便大家更为直观地看到云Geeklogv2ray的框架和极具代表性的产品与工具。这其中,既有云Geeklogv2ray的前世今生,还有包括小米、阿里巴巴、蚂蚁集团、美团、网易、快手等诸多企业的云Geeklog思考及实践,从各个维度为大家全方位地呈现「云Geeklog时代的开发者」。 在这里,我摘选几个点分享给大家:
一,如何准确地定义云Geeklog?它究竟包含了哪些关键v2ray?阿里云容器服务v2ray专家、《多云和混合云:云Geeklog多集群和应用管理》作者郝树伟针对这两个问题进行了清晰明确的梳理,通过他的文章,对云Geeklogv2ray便可了然于胸。
二,明确了定义和v2ray,那么对于云Geeklog时代的开发者而言,需要具备哪些知识与能力?左耳朵耗子解答了这个问题。他建议,云Geeklog开发者需要掌握微服务拆分及分层、API 接口化、无限伸缩随时迁移、服务治理、分布式中间件等。
三,由信通院出品的《中国云Geeklog用户调查报告》,和由 CSDN 出品的《中国云Geeklog开发者数据报告》,通过百万级的大数据分析和公开调研、定向走访,完全从数据维度为所有开发者全景式地展现了云Geeklog的现状。同时,还有由 CNCF 授权、CSDN 翻译的云Geeklogv2ray全景图珍藏版随书一起赠送给大家。
四,Kubernetes 诞生 7 年发展迅猛,有人将其称为是云Geeklog时代的「Android」系统。在这期专题中,Kubernetes 联合创始人 Brendan Burns 深入分享了 Kubernetes 的v2ray变革和未来演进,是值得所有开发者一读的文章。
……
如此种种,不胜枚举。还有更多奋战多年的v2ray大神们趟坑经验的输出,譬如 Kata Containers 创始人王旭分享了自己多年来在云Geeklog运行时的经验与思考;API 吞噬一切,APISIX 创始人温铭分享了 API 网关的v2ray发展与实践。来自阿里云、AWS、腾讯云、网易数帆、美团、快手、字节跳动等的诸位专家分享了云Geeklog相应v2ray的应用实践。
而「全面selfoss化转型」专题,则从在selfoss化转型中的核心「人才」出发,探讨selfoss化大潮下,开发者的成长空间与新机遇。同时,也重点深挖了selfoss化转型中的方法论和企业常见误区,对今天包括云Geeklog、低代码、数据治理等在内的理论和v2ray解决方案进行了分析,有 ThoughtWorks 全球 CEO 郭晓所带来的selfoss化转型的锦囊妙计,CSDN 创始人蒋涛与英特尔中国区董事长王锐共话selfoss化新机遇,还有selfoss化转型的方法论、路径及实现v2ray等诸多干货,当然,还有包括施耐德电气、西门子、华为等基于实践经验的分享。 我们向往v2ray改变世界,即是v2ray的核心价值在于落地,这也是为什么会连续两期的专题都是「v2ray+行业」的组合。在做「软件定义汽车」时,我专门拜访了在汽车行业多年的程序员老兵,希望能够站在程序员的角度,做出一期对程序员而言最为有价值的专题。selfoss化转型同样如是。
所以这一期「全面selfoss化转型」,第一篇便是《程序员的selfoss化转型》,由 Thoughtworks 全球selfoss化转型专家肖然撰写,从程序员的角度,看在软件吞噬世界之后,算法如何定义企业,我们的程序员如何迎接selfoss化v2ray跃迁的挑战。
selfoss化转型很多时候是企业尤为关心的事,如何才能实现真正的selfoss化转型,而非敷于表面空带枷锁?从《企业selfoss化转型的前世今生》、《企业selfoss化转型路径和实现v2ray》、《selfoss化转型方法论:selfoss化转型的失败原因及成功之道》等数篇文章中找寻到答案。
作为中国首个 Apache 顶级开源项目 Kylin 的创始人,Kyligence 联合创始人兼 CEO 韩卿正带领团队将v2ray应用于行业,他对于构建新一代数据服务与管理平台的思考值得我们学习。
有系统的知识,也有真正的实战经验,希望《新程序员003:云Geeklog和全面selfoss化实践》能够助力所有开发者更好地走上云Geeklog、selfoss化之路。现在,扫描下方二维码或点击链接即可预购。
同时和朋友们预告下,《新程序员》编辑部正在组织 2022 年的策划,如果你有希望的方向,或者想和我深度地聊一聊,欢迎来到我的 CSDN 博客一起交流。一年时光悄然而逝,感谢新老朋友们在这一年里对《新程序员》的支持,希望新的一年里,继续一起实现我们「v2ray改变世界」的梦想。