首页 文章 精选 留言 我的

精选列表

搜索[第一次流片],共10008篇文章
优秀的个人博客,低调大师

Linux运维趋势采摘 -14期 【第一次编辑】

构建高性能电子商务网站 ------------------------------- 一、熟悉安全技术,了解硬件防火墙性能,能熟悉的配置iptables 和了解 Linux/Unix 相关的安全工具; 二、熟练的配置Linux 的集群技术,比如LVS/Nginx/HAproxy,了解其原 理和会话保持机制; 三、熟练的配置Nginx 和Apache 服务器,能熟练的配置其正则; 四、熟练和了解MySQL 或Oracle 数据库,至少要了解一种; 五、熟悉存储; 六、熟悉和了解虚拟化技术; 七、极熟悉SHELL 脚本,用其实现工作中的各项需求; 八、懂PHP 或Java 代码。(以上总结来自抚琴煮酒的一次访谈) 在大型电子商务网站下,运维的工作会细分,不过上述内容仍是基本功。 此外,由于大规模网站遇到的各方面挑战,会要求开发人员和运维人员能够 与时俱进,在网站遭遇瓶颈之前做好应对。 煮酒品茶:抚琴煮酒的这些个基本功,个人认为把他当成一个学习的过程即可,精通这个精通那个最终只会倒致啥事无成,只有一项完全熟悉之后方可进军下一目标。 ------------------------------------- Ubuntu 11.10,Fedora 16正式发布 ----------------------------------------------------- 【脑细胞】网站架构的常见演进路径:web 与db 共用→ web 和db 拆分→多台web → db 主从→ web 缓存→ db 缓存→存储拆分→ Scale Up →按应用竖切web →内存当硬盘→按时间横切db →按事务竖切db →按hash 竖切db →存储网络化→虚拟化→云,看起来都有章可循,但不知多少技术人员在这路上死了无数脑细胞,还有那无数的不眠之夜。 http://weibo.com/1649415495/xwl7WBXwa 煮酒品茶:同上方观点一样,任何一个都是一个过程,只有彻底了解后方可进军下个方面,技术过渡也是这么过来的。 ------------------------------------------- 淘宝软件基础设施近年发展情况 ---------------------------------------------- MySQL优化 针对复制、同步、日志系统、单机效率、负载均衡方面的优化。详见 yufeng 的另一篇分享: http://www.slideshare.net/mryufeng/mysql-7583273 服务优化 针对Apache/Nginx、HTTP 模块、Squid、LVS、HAProxy、TCP 方面的优化。Nginx 优化方面,淘宝有一个开源的模块,大家可以参考一下: http://code.taobao.org/p/nginx_concat_module/ 去年的Velociy 大会上,朱照远(叔度)和王晓哲(清无)也分享过Nginx定制开发方面的经验。 Java环境优化 这方面可以参考淘宝Java 中间件团队博客(注:该团队已经在今年和淘宝业务平台团队合并为通用产品团队): http://rdc.taobao.com/team/jm/ Linux内核优化与定制 夸父通讯中间件 任卿对夸父通讯中间件进行过介绍: http://www.slideshare.net/openparty/ss-6680035 低功耗硬件平台 这方面可以参考淘宝最近公开的开源绿色计算项目: http://www.greencompute.org/ CDN系统 这方面也可以参考任卿的介绍: http://www.slideshare.net/colderboy17/cdn-9022813 ------------------------ 架构或者构思前期必须思考: 应用服务器操作系统-应用服务器软件-Web Server-DB Server 开发框架 ------------------------ 煮酒品茶:以此记录,并慢慢学习 --------------------------------------------------- 构建高安全电子商务网站之(网站文件及数据库自动本地/异地双备份)[连载之电子商务系统架构] --------------------------------------------------- 构建高安全电子商务网站之(网站文件及数据库自动本地/异地双备份)[连载之电子商务系统架构] 出处:http://jimmyli.blog.51cto.com/ 我站在巨人肩膀上Jimmy Li 作者:Jimmy Li 关键词:网站,电子商务,Shell,自动备份,异地备份 ------[连载之电子商务系统架构]访问量超过100万的电子商务网站技术架构 连接:http://jimmyli.blog.51cto.com/3190309/584992 网站运维异地备份方案及故障应急备用镜像 站 上一遍文章详细介绍了服务器安全方面,接下来继续介绍Linux服务器文件备份,数据库备份,数据安 全存储相关的电子商务系统架构。针对安全性有多种多样的解决方案,其中数据备份是重中之重的首要 工作。 电子商务网站更加注重考虑数据安全,数据备份方案,包括本地备份、异地备份架构。其中Linux服务 器的备份方案非常多,本文介绍一个大众化适用的解决方案,通过编写Shell脚本来完成自动备份。本 架构包括备份网站文件、数据库,自动本地备份并FTP上传备份脚本,完成相应本地备份、异地备份, 实现双层备份解决方案。 本文要点: 1.全自动完成网站文件及数据库备份。 2.编写Shell脚本来完成自动备份。 3.同时进行自动本地/异地双备份,FTP上传备份。 4.Linux服务器的备份解决方案。 5.包括备份网站文件,网站程序文件、数据文件,MYSQL数据库。 6.定期定时自动完成备份。定期删除旧备份,这里是自动删除30天前备份,复用利用备份空间。 目录: 一、准备工作 二、构建高安全电子商务网站之(网站文件及数据库自动本地/异地双备份)架构图 三、网站及数据库自动本地备份并FTP上传备份Shell脚本,完整的实例;备份脚本进行详细解说,注释 。 在运营中的电子商务网站,建站之初就一直在重申一定要备份好自己的数据,因为太多的不确定性可能 会造成数据库丢失,而且大部分基础服务商也不可能提供每天备份数据。原来本BLOG提供过一个备份方 法,只是略微说了一下,可能部分新手会不太好入手。今天分享一个自己的备份脚本。 详见后面附录 http://jimmyli.blog.51cto.com/3190309/584992 《网站运维异地备份方案及故障应急 备用镜像站》 一、准备工作: 1.软件安装 需要提前在Linux服务器安装好lftp,lftp功能上比较强大,CentOS直接执行:yum install lftp, Debian执行:apt-get install lftp 。 2.备份目录建立 需要在Linux服务器上创建/home/backup/ 目录。 3.FTP异地备份IP 账号 密码 需要在异地FTP上创建backup目录。 如果Linux服务器上数据库不多的话使用网络基础服务商的存储空间就可以。也可以用专门的备份服务 器。可根据应用的大小,数据量的大小,网络状况,和实际的网络资源,硬件资源灵活支配。 二、构建高安全电子商务网站之(网站文件及数据库自动本地/异地双备份)架构图 三、网站及数据库自动本地备份并FTP上传备份Shell脚本 完整的实例: ======================================================================== #!/bin/bash #Funciont: Backup website and mysql database #Author: Jimmy Li #Website: http://jimmyli.blog.51cto.com/ #IMPORTANT!!!Please Setting the following Values! Backup_Dir1=/data/wwwroot/www.zuihuasuan8.net wd=/var/www/html/blog MYSQL_UserName=root MYSQL_PassWord=你的mysql数据库root密码 Backup_Database_Name1=www.zuihuasuan8.net FTP_HostName=www.zuihuasuan8.net FTP_UserName=www.zuihuasuan8.net FTP_PassWord=www.zuihuasuan8.net FTP_BackupDir=www.zuihuasuan8.net——backup TodayWWWBackup=www-*-$(date +"%Y%m%d").tar.gz TodayDBBackup=db-*-$(date +"%Y%m%d").sql OldWWWBackup=www-*-$(date -d -30day +"%Y%m%d").tar.gz OldDBBackup=db-*-$(date -d -30day +"%Y%m%d").sql #tar zcf /home/backup/www-$Backup_Dir1-$(date +"%Y%m%d").tar.gz -C /home/wwwroot/ cd $wd tar -zcvf /home/backup/www-$Backup_Dir1-$(date +"%Y%m%d").tar.gz * $Backup_Dir1 --exclude=soft /usr/local/mysql/bin/mysqldump -u$MYSQL_UserName -p$MYSQL_PassWord $Backup_Database_Name1 > /home/backup/db-$Backup_Database_Name1-$(date +"%Y%m%d").sql rm $OldWWWBackup rm $OldDBBackup cd /home/backup/ lftp $FTP_HostName -u $FTP_UserName,$FTP_PassWord << EOF cd $FTP_BackupDir mrm $OldWWWBackup mrm $OldDBBackup mput $TodayWWWBackup mput $TodayDBBackup bye EOF ======================================================================== 煮酒品茶:有点小小的人性化问题,打包后的文件解压后连整个目录都打包了,造成长目录,这本不是我们需求的,所以我们小小的cd一下就好了 定义:wd=/var/www/html/blog 压缩:tar -zcvf /home/backup/www-$Backup_Dir1-$(date +"%Y%m%d").tar.gz * ------------------------------------ 我修改后的: Linux数据备份方案 设计需求: 一、每天零晨三点备份web文件 二、每天零晨三点备份MYsql数据库 三、远程传送至某地 脚本如下: ----------------------------------------------------------- #----------------------------------------- # form to cwtea.51cto.com or wh.cn-cert.com #Email:zwhset@163.com #----------------------------------------- # wd=Web即备份文件目录 bd=备份目录 su=Mysql用户 sp=Mysql密码 sn=数据库名字 fu=FTP用户 fp=FTP密码 fpd=FTP备份目录 #www cd $wd tar -zcvf $bd/web-$(date +"%Y%m%d").tar.gz * #sql mysqldump -u$su -p$sp $sn > $bd/$sn$(date +"%Y%m%d").sql #ftp lftp FTPIP -u$fu,FTP密码 <<EOF cd $spd mput $bd/web-$(date +"%Y%m%d").tar.gz mput $bd/$sn$(date +"%Y%m%d").sql bye EOF --------------------------------------------------------------- ----------------------------------- 下面将备份脚本进行详细解说,注释: #!/bin/bash #Funciont: Backup website and mysql database #Author: Jimmy Li #Website: http://jimmyli.blog.51cto.com/ #IMPORTANT!!!Please Setting the following Values! ######~Set Directory you want to backup~######将下面的目录修改成自己要备份的目录,一般按我 的都是在/data/wwwroot/下面所有直接写了需要备份的目录。可以继续再加:Backup_Dir2=你的目录 ,Backup_Dir后面的数字依次递增。如果不足N个,直接删除不需要的就可以,同时修改下面tar zcf 部分。 Backup_Dir1=/data/wwwroot/www.zuihuasuan8.net ######~Set MySQL UserName and password~######设置MySQL的用户名和密码,最好是root,其他用户 可能因为权限问题无法导出部分数据库。 MYSQL_UserName=root MYSQL_PassWord=你的mysql数据库root密码 ######~Set MySQL Database you want to backup~######设置要部分的数据库,可以继续再加: Backup_Database_Name2=数据库名,Backup_Database_Name后面的数字依次递增。 Backup_Database_Name1=www.zuihuasuan8.net ######~Set FTP Information~######设置用来存放备份数据的FTP信息 FTP_HostName=www.zuihuasuan8.net //FTP服务器的IP或者域名 FTP_UserName=www.zuihuasuan8.net //FTP服务器用户名 FTP_PassWord=www.zuihuasuan8.net //FTP服务器用户对应的密码 FTP_BackupDir=www.zuihuasuan8.net——backup //备份到FTP上的目录,需要提 前创建好。 #Values Setting END! ######设置结束 TodayWWWBackup=www-*-$(date +"%Y%m%d").tar.gz TodayDBBackup=db-*-$(date +"%Y%m%d").sql OldWWWBackup=www-*-$(date -d -30day +"%Y%m%d").tar.gz OldDBBackup=db-*-$(date -d -30day +"%Y%m%d").sql tar zcf /home/backup/www-$Backup_Dir1-$(date +"%Y%m%d").tar.gz -C /home/wwwroot/ $Backup_Dir1 --exclude=soft ###上面为备份网站文件数据,因为我的网站比较零散,而且网站目录下面有些目录属于临时目录并不 需要备份,所以可以在上面加上--exclude=不备份的目录。如果在前面加了Backup_Dir2=yourdir,则 再加tar zcf /home/backup/www-$Backup_Dir2-$(date +"%Y%m%d").tar.gz -C /home/wwwroot/ $Backup_Dir2 。如果多余则删除多余行。 /usr/local/mysql/bin/mysqldump -u$MYSQL_UserName -p$MYSQL_PassWord $Backup_Database_Name1 > /home/backup/db-$Backup_Database_Name1-$(date +"%Y%m%d").sql ###上面为备份MySQL数据库,如果在前面加了Backup_Database_Name2=yourdatabasename,则再 加/usr/local/mysql/bin/mysqldump -u$MYSQL_UserName -p$MYSQL_PassWord $Backup_Database_Name2 > /home/backup/db-$Backup_Database_Name2-$(date +"%Y%m%d").sql 。如 果多余则删除多余行。 rm $OldWWWBackup rm $OldDBBackup ###删除30天前的备份### cd /home/backup/ ###下面为自动上传部分,不得不说lftp很强大,抛弃ftp吧#### lftp $FTP_HostName -u $FTP_UserName,$FTP_PassWord << EOF cd $FTP_BackupDir mrm $OldWWWBackup mrm $OldDBBackup mput $TodayWWWBackup mput $TodayDBBackup bye EOF 脚本下载地址: 下载脚本,将脚本放到/root/ 下面,按上面的注释修改脚本中的参数,并保存,如果不熟悉vim或者 nano编辑器,可以用winscp,执行:chmod +x /root/backup.sh 为脚本添加执行权限,执行:crontab -e 添加定时执行 在crontab中加入:0 3 * * * /root/backup.sh 凌晨3点自动执行/root/bakcup.sh 脚本,备份Linux服务器上的数据并上传到预先设定好的异地FTP上 。 选择在凌晨3进行备份,是因为这个时间段网站的访问量是最低。也就是说在很少人访问的情况下做备 份操作。 附录: 网站运维异地备份方案及故障应急备用镜像站 定期检查异地备份故障应急时,启用应急Web服务 出处:http://jimmyli.blog.51cto.com/ Jimmy Li Blog 。欢迎朋友一起交流,讨论。扣扣:柒⑥柒陆叁⑤叁伍 煮酒品茶:一套非常nice的方案,过程就是脚本收集文件然后上传至远程备份服务器上。思路是头脑,脚本是执行。构成一个基本的备份系统。测试后再修改看效果。 ------------------------------------------------------------ 一种MySQL主从同步加速方案 ------------------------------------------------------------ 一种MySQL主从同步加速方案 一、问题起源 MySQL 的主从同步一直有从库延迟的问题,原因简单描述如下: 1、 MySQL 从库上有一个IO 线程负责从主库取binlog 到本地。另外有 一个SQL 线程负责执行这些本地日志,实现命令重放; 2、 正常网络状况下IO 线程没有性能问题(这个待会会用到),问题是 SQL 线程只有一个,更新速度跟不上。所以经常会看到从库的CPU idle 很 高,但同步性能就是上不去。 二、方案雏形 单线程的SQL 线程是造成这个问题的主要原因。比较直接的想法是把 它改成多线程版本,这个据说官方版本开发中,其实我们也有一个这样的 patch,但是直接写大片代码在线上提供服务的slave 机器上这种事儿,都会 因为担心稳定性而很难推动(写patch 的和运维的同学,你们懂的)。 所以打算用一个“第三方”工具中转,来实现多线程同步。基本结构如图: 说明: 1、这些transfer 从master 上各自同步一部分的数据,分别独立更新 slave。多进程、多线程均可。 2、Transfer 与master 之间异步更新日志,transfer 与slave 之间同步更新 数据。 3、从这可以看出这个方案的缺点之一:更新能够被独立分开。比较直观 的想法是,按照表分。 三、关于transfer 作为这个关键的转发工具transfer,需要提供如下功能: 1、能够指定同步master 中的哪部分数据,并且能够方便地修改这个配置 以应对master 的加表需求。 2、支持stop slave、start slave。支持快速切换到新主库的change master 命令。 3、能够记录读取点,transfer 自己重启或master 重启后能够按照记录点 继续读后面的binlog。 4、能够记录分发点,transfer 自己重启或slave 重启后能够按照记录点继续同步给slave。 用起来就会发现还有好多要求…… 四、方案实现 Transfer 的这么多功能,自己造轮子就累了。这里直接用MySQL 来充当此角色。为了方便描述,下文还将之称为transfer。Transfer 更新slave 在功能上可以使用federated 引擎,但由于其纠结的实现导致性能上达不到要求,因此在MySQL 框架层中作了一点修改,读到同步日志后,直接发送给 slave。 方案简单描述如下: 1、Slave 机器上搭另外的若干个MySQL(transfer),将其设为Master 的从 库,且设置replicate-do-table, 每个transfer 承担一部分的表。 2、所有Transfer 的更新目标都设置为slave,其更新方式是读到日志后直 接mysql_real_query 执行到slave 上。从这可以看出这个方案的缺点之二:只能支持statement 格式的同步方 式。其实row 也能支持,后面再说。 五、仍然延迟? 在transfer 放弃federated 引擎改用直接发送后,性能提升不少,从库同步 性能增加一倍,但延迟还很大。发现这个时候slave 的机器cpu 已经很忙了,idle 20% 以下——这个算是好消息,总比idle 很高但性能上不去好。实际上是因为每个transfer,虽然设置只同步其中的部分表,但在实现上是IO 线程把master 上的所有命令都备份到本地,然后在SQL 线程执行的时候再判断,若不符合replicate-do-table,再放弃。这样存在的问题,是n 个transfer,磁盘写了n 倍,更严重的是导致SQL线程空转。我们上文提到整个流程中IO 线程是比较空闲的,因此修改IO 线程逻辑,在写入磁盘前先判断,若不符合本transfer 的replicate-do-table 设置,不写盘,直接放弃。 六、效果 从库的QPS 由于线程切换会有抖动,但总的执行时间与主库相同。从库的cpu idle 下降,与主库几乎同时恢复到100。 七、小结 1、要求在slave 机器上多配置n 个transfer(是否在从库上均可) 2、目前只能支持statement 的binlog 格式,实际上row 可以支持,方案定了,开发计划中。 3、跨表更新的语句,会按照其更新的第一个表,分发到唯一一个transfer,没有重复更新的问题,但有时序性问题。方案的好处: 1、功能比较齐全。直接使用MySQL,原有的管理功能基本都能用,主库 从库重启/ 换库的代价比较小。 2、开发量小,只在transfer 上修改两处,不包括配置读取部分,300 行以内 3、风险相对小,不直接修改master 和slave 上的代码,线上容易接收。 本文转自 煮酒品茶 51CTO博客,原文链接:http://blog.51cto.com/cwtea/843583,如需转载请自行联系原作者

优秀的个人博客,低调大师

第一次使用Plesk云主机面板?5招搞定!

Plesk是一款Linux/Widows主机面板,配备可视化web界面,提供全能建站环境和插件集成平台,让云主机使用起来更加方便。Plesk面板从1999年问世至今已18年,一直以稳定安全和功能强大著称。 目前只需要购买阿里云ECS,即可享受云主机半价优惠同时首年免Plesk授权费用,限量2W台。 抢购地址:https://market.aliyun.com/pleskecs 不过因为Plesk功能过多,所以在初次使用中难免会遇到一些问题,本文将针对阿里云ECS用户列出最常见的几个问题,并分享解决方法。 1.无法登录Plesk面板? 阿里云ECS为保障安全,默认关闭所有端口。而登录Plesk必须用到8880或者8443端口(前者用于http访问,后者用于https访问),因此在登录Plesk前要先到阿里云控制台中手动配置实例的安全组,打开必

优秀的个人博客,低调大师

第一次react-native项目实践要点总结 good

今天完成了我的第一个react-native项目的封包,当然其间各种环境各种坑,同时,成就感也是满满的。这里总结一下使用react-native的一些入门级重要点(不涉及环境)。注意:阅读需要语法基础: ES6 、react 、JSX 我对react-native的理解简而言之就是 :react的语法 + native的组件 组件的创建声明 class HelloWorldApp extends Component { constructor(props) { super(props); this.state = { }; } render() { return ( <Text>Hello world!</Text> ); } } 上面代码定义了一个“类”,可以看到里面有一个constructor方法,这就是构造方法,而this关键字则代表实例对象。当你在其他的组件中调用这个组件时,就会实例化这个“类”(即组件)。 注意:组件名需要大写 组件的导出、引用与注册 在ES6中,新增了import和export俩个关键字来导入导出模块。react-native的组件也是采用的这俩个关键字。 俩种方式: 第一种: 导出: export default class HelloWorldApp extends Component{ render() { return ( <Text>Hello world!</Text> ); } } 导入: import HelloWorldApp from "../.." 第二种: 导出: class HelloWorldApp extends Component { render() { return ( <Text>Hello world!</Text> ); } } export {HelloWorldApp} 导入: import { HelloWorldApp } from "../.." 后缀名自动获取(文件会获取拥有与之相应后缀名的文件) 在组件模块的导入过程中,如果这个模块是分设备的,也就有俩个文件:xxx.android.js和xxx.ios.js,这些后缀(android和ios)是不需要的,在不同的设备环境中,它自动获取相应后缀名的文件,即ios包会自动获取xxx.ios,android包会自动获取xxx.android。 后缀名自动忽略(文件会自动忽略拥有与之不相应后缀名的文件) 一个ios和android的公共模块文件,即共用代码模块文件,命名不能加ios和android后缀,否则,ios包取不到有androis后缀的文件,android取不到有ios后缀的文件。 实例解释上述:现在有以下五个文件: index.ios.js index.android.js say.android.js say.ios.js HelloWorldApp.android.js 我们想要分别在index.ios.js 和 index.android.js引入其他三个模块。我们只要在index.ios.js 和 index.android.js文件中如下写法就行: //这里,index.ios.js会自动获取say.ios.js的模块;index.android.js会自动获取say.android.js的模块 import 模块名 from "./say"; //这里,HelloWorldApp.android.js 是一个公共模块,index.android.js能成功获取到./HelloWorldApp;但是index.ios.js则无法获取到HelloWorldApp模块,因为index.ios.js会忽略android后缀名的模块文件 import 模块名 from "./HelloWorldApp" react组件的生命周期 项目中使用组件的时候,纠结于componentWillMount,componentDidMount...,直到看到这张图豁然开朗(so,图是盗的)。需要注意的是,这张图应该比较老了,其中的getDefaultProps和getInitialState这俩个函数是ES5的写法了,ES6语法中,constructor方法中代替了getDefaultProps/getInitialState,我们可以在其内直接初始化props和state。 Props(属性)大多数组件在创建时就可以使用各种参数来进行定制。用于定制的这些参数就称为props(属性)。我们使用两种数据来控制一个组件:props和state。props是在父组件中指定,而且一经指定,在被指定的组件的生命周期中则不再改变。 对于需要改变的数据用state。http://blog.csdn.net/jyt199011302/article/details/53927234 react 的 props 和 state props(属性) 当我们调用这些组件时,我们如果为每一个组件传递了不同的属性,这个属性就是props。比如下例中,我们调用了HelloWorldApp组件,并为其设置了一个date属性,则我们可以在HelloWorldApp的组件里,通过this.props.date来获取这一属性值。 <HelloWorldApp date = {2016}> 请注意{pic}外围有一层括号,我们需要用括号来把pic这个变量嵌入到JSX语句中。括号的意思是括号内部为一个js变量或表达式,需要执行后取值。因此我们可以把任意合法的JavaScript表达式通过括号嵌入到JSX语句中。 state(状态) state需要在constructor中初始化,然后通过调用setState方法修改。通过上面的组件生命周期图,我们可以看出,state是一个状态机,state的改变会引起shouldcomponentupdate、componentwillupdate、rendner...一系列方法的执行,视图会重新渲染。所以,如果需要动态地改变组件的数据或试图,请操作state。 react组件之间的通信 子组件接收父组件的改变信号 简单:当父组件改变时,直接向子组件传递props 父组件接收子组件的改变信号在父组件中定义一个方法,并通过props传递给子组件,子组件改变时,通过调用这个父组件传递过来的方法,从而实现在父组件中执行该方法。 非父子关系组件之间的通信 RCTDeviceEventEmitter模块:它有俩个方法:emit和addListener,一个发送,一个接收。 RCTDeviceEventEmitter.emit(notifName,param); RCTDeviceEventEmitter.addListener(notifName,callback) http://www.cnblogs.com/yzg1/p/5985525.html react-native run-android 会打开一个React Packager 窗口,Running packager on port 8081. Keep this packager running while developing on any JS projects. Feel free to close this tab and run your own packager instance if you prefer. 模拟器中打开react native项目 更改js如果想reload,按ctrl + M 键,选“reload"即可

优秀的个人博客,低调大师

GitHub 顶流

Puter 是近日在 GitHub 上最受欢迎的一款开源项目,正式开源还没到一周——star 数就已接近 7k。作者表示这个项目已经开发了 3 年,并获得超过 100 万用户。 根据介绍,Puter 是基于 Web 的桌面操作系统,运行于浏览器中,具有丰富的功能、速度极快且可高度扩展。它可用于构建远程桌面环境或用作云存储服务、远程服务器、Web 托管平台等的界面。 特性 功能丰富:Puter 可用于构建远程桌面环境,也可作为云存储服务、远程服务器、网络托管平台等的界面。 速度快:Puter 使用原生 JavaScript 和 jQuery,直接与 DOM 进行互动,保证了运行速度。 高度可扩展:Puter 可进行高度定制和扩展,以满足用户的需求。 轻松上手:Puter 提供了一系列的说明和指南,使用户可以轻松开始使用 Puter。 没错,Puter 选择采用原生 JavaScript 和 jQuery 编写,而没有使用前端三大框架(React、Vue、Angular),作者解释这是出于性能方面的考虑——希望避免复杂的抽象并尽可能保持对整个技术栈的控制。他说道:“Puter 直接与 DOM 进行交互,jQuery 为操作 DOM、处理事件等提供了优雅且强大的 API,并且这是一个快速、成熟且经过实战考验的框架。” 这一点他也是受到了一些不使用框架的项目,如 VSCode、Photopea 和 OnlyOffice 的启发。 关于 Puter 的应用场景,作者列举如下: 提供一个新颖界面且功能强大的替代 Dropbox、Google Drive、OneDrive 等工具的平台 为服务器和工作站提供远程桌面环境 作为构建和托管网站、网页应用、游戏的平台 提供一个有利于学习关于 Web 开发、云计算、分布式系统等知识的开源项目和社区 最后体验一下这款 Web OS:

优秀的个人博客,低调大师

流计算StreamCompute

免费开通大数据服务:https://www.aliyun.com/product/odps 背景 每年的双十一除了“折扣”,全世界(特别是阿里人)都关注的另一个焦点是面向媒体直播的“实时大屏”(如下图所示)。包括总成交量在内的各项指标,通过数字维度展现了双十一狂欢节这一是买家,卖家及物流小二一起创造的奇迹! 双十一媒体直播大屏 这一大屏背后需要实时处理海量的庞大电商系统各个模块产生的交易日志,例如双十一当前产生的日志量达到了3.7PB,而每秒处理的峰值更是达到了近1亿事件! 如此大规模、高吞吐和低延时计算,带来一系列世界级的技术挑战,包括: 1. 实时编程:流式的数据处理给业务逻辑的表达和推理带来了很多的复杂性。特别面对不断变化的业务需求,如何帮助用户快速地编写和验证实时计算逻辑是至关重要的。 2. 低延时:实时计算强调计算延时

优秀的个人博客,低调大师

扫清最后一片障碍,英国批准微软收购动视暴雪

英国竞争与市场管理局(CMA)正式宣布,批准微软收购动视暴雪的交易,从而为这笔交易扫除了最后一个主要全球监管障碍。交易完成后,微软将成为世界上营收第三高的游戏公司,仅次于腾讯和索尼。 这一结果源于今年 8 月份微软为完成交易所做出的一项让步:即,由育碧取代微软购买动视的云流媒体版权。育碧将获得动视未来 15 年内所有 PC 和游戏机游戏的云流媒体版权,但这仅适用于欧洲经济区 (EEA) 以外的市场。在欧洲经济区内,育碧将获得“销售、分销和转授动视游戏云流媒体版本的非独家许可。” 这意味着微软也将能够在欧洲获得动视游戏的云流媒体播放权。 一直以来,CMA 都是该收购案最坚定的反对者。公告称,微软的这一让步解决了 CMA 有关市场垄断的担忧,从而同意重新审视该交易,并于 8 月启动了新的调查。在调查完成后,CMA 则宣布批准了该交易。 CMA 首席执行官 Sarah Cardell 表示:“通过将动视暴雪的云流媒体版权出售给育碧,我们确保微软无法垄断这个重要且快速发展的市场。随着云游戏的发展,这种干预将确保人们获得更具竞争力的价格、更好的服务和更多的选择。我们是全球唯一一家取得这一成果的竞争机构。 ” 但另一方面,Cardell 还对微软在整个历时约 20 个月的收购事件中的策略提出了批评,称“企业及其顾问应该清楚地认识到,微软采用的策略不是与 CMA 交涉的方式。 在我们最初的调查中,微软本有机会进行重组,但它却继续坚持推进我们已经告知过他们的根本行不通的一揽子措施。以这种方式拖延诉讼只会浪费时间和金钱。” 针对这一批准,微软总裁 Brad Smith 也发文表达了感谢,“我们现在已经跨过了这次收购的最终监管障碍,我们相信这将使得全球玩家和游戏行业受益。” 相关阅读: 美国法院驳回 FTC 禁令请求,允许微软收购暴雪

优秀的个人博客,低调大师

Python也可以玩转单机片 : 为大家介绍几个开发板

前言 Python俨然已成为当下最热门的编程语言(可以说没有之一)。Python火到什么程度?它将被加入小学生教材,纳入高考,估计在不远的将来可能会成为一项常用的技能。 学习python能做什么? 可以快速搭建一个漂亮的网站 可以写爬虫 实现微信机器人助手 可以实现很多自动化的任务 IEEE发布2017年编程语言排行榜:Python更是高居首位,那么Python遇上硬件、遇上物联网又会碰撞出怎样的火花呢?**TPYBoard:能跑Python的STM32开发板** TPYBoard成功将Python应用到嵌入式领域的,也就是MicroPython,其脱胎于Python,基于ANSI C(C语言标准),然后在语法上又遵循了Python的规范,主要是为了能在嵌入式硬件上(这里特指微控制器级别)更易于的实现对底层的操作。 可应用于教学更适用于稳定的工业级开发 TPYBoard的MicroPython开发板系列是目前国内做的最全同时也是最专业的,现有产品除了支持MicroPython的TPYBoard V101、V102、V201、V202、V702外,还有stm23F4最小系统板,arduino系列开发板等等,可可应用于教学更适用于稳定的工业级开发,是MicroPython从入门到精通的不二之选,也是广大创客硬件学习路上的良师益友。TPYBoard-MicroPython开发板大盘点:总有一款适合你! 小编推荐一个学python的学习qun 740322234无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享! 1、TPYBoardv10X 基础系列 TPYBoard v10x是基础版系列,搭载STM32F405芯片,支持DFU和SWD两种调试方式,现分为三个版本,简约版、以及分别兼容MicroPython官方板的PYBoardv1.0、PYBoardv1.1,大小64mm*54mm,是MicroPython开发和入门的不二选择! 2、TPYBoardv201 LAN系列 TPYBoardv201,板载以太网串口功能,是一款带以太网的MicroPython开发板。板载商业级网口、10/100M自适应、支持DHCP、稳定简单易上手。 3、TPYBoardv202 WIFI系列 TPYBoardv202,支持Lua和MicroPython两种开发语言,支持MicroPython兼容NodeMCU,一款高性价比的MicroPython-WIFI开发板,轻松将你带入物联网领域! 4、TPYBoardv702 GPRS与GPS(兼容北斗)系列 TPYBoardv702,唯一支持通信定位功能的MicroPython开发板。支持北斗&GPS双模定位、GPRS通信、短信、蓝牙、电话等功能。板载重力传感、温湿度、加速度传感器、蜂鸣器、LCD5110显示屏灯。 TPYBoard现已形成了完善的MicroPython开发体系,并形成了完善的技术文档以及技术支持服务。实践证明,加上稳定可靠的外围电路和抗干扰电源,以TPYBoard为核心的产品能成功应用于苛刻的工业环境,使开源硬件和开发平台得到更广泛的应用,产品多样性远远高于官方开发板,是MicroPython学习的首选。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册