一些免费的云资源 云 IaaS指提供系统(可以自己选)或者储存空间之类的硬件,软件要自己手动装;PaaS提供软件/框架(可以自己选);SaaS只能使用开发好的软件(卖软件本身);BaaS一般类似于非关系数据库,但各家不通用,有时还有一些其它东西。 其他人的集合 https://github.com/ripienaar/free-for-dev https://github.com/AchoArnold/discount-for-student-dev https://github.com/qinghuaiorg/free-for-dev-zh 很久没更新了 https://github.com/vincenthou/free-for-china-dev 很久没更新了 https://github.com/ivmm/Student-resources https://www.freeforstudents.org/ https://github.com/255kb/stack-on-a-budget https://github.com/Ibexoft/awesome-startup-tools-list https://www.cokemine.com/ Paas https://www.heroku.com/ java go py docker https://www.pythonanywhere.com/ 限制非常多,几乎就和虚拟主机差不多了,免费账户不允许访问白名单之外的网站。但好歹能提供一个自动https的web app https://cloud.google.com/appengine/docs/ 标准环境有一点储存空间和流量,柔性环境(.NET)必须启用结算,且现在标准环境要启用一个API,也要求绑卡 https://fly.io/docs/pricing/ docker https://m3o.com/ go https://anvil.works/ py,前端Drag and Drop UI,后端和数据储存用的是该网站的库 https://www.kintohub.com/ node go py java php docker 免费3个实例但内... 阅读全文
电信家庭云路由器插件免费提速宽带至500M,上行50M 宽带免费提速至500M,上行50M方法 原理是通过天翼云实现,声明免费,不用开通天翼云会员并且没有时间限制。 1、获取token。(获取方法:登录账号,启动提速。应用根目录下有一个文件,文本打开) 2、以K2**子固件为例。用winscp登录路由器,导入speedup代码 导入目录:etc/storage/script下。文件名命名为:Sh27_speedup.sh 3、重启路由器,然后再登录路由器。进入扩展功能-搭建web环境-家庭云提速 再填入第一步获取的token。保存应用。 4、再重启路由进日志查看,提速成功有显示。理论永久可提速,第一小时自动运行一次代码。 另友情提示,电信官网有360一年的纯宽带(20M,上行4M)。可以免费提速到500M下,50M上行。 这第便宜的宽带,然后再搞台配置高点软路由开小鸡。 Sh27_speedup.sh: https://paste.ubuntu.com/p/Q5cXdhmTB8/ 提速工具: 电信上下行提速_随缘.zip 阅读全文
我的工作流及工具推荐 简单介绍一下我的工作流和一些不错的工具。(更新:2021–10–05) 硬件 我的主力桌面是一台 MacBook Air 2014(i7/8G/128G),加装了 JetDrive Lite 128G 作为日常文件存储,外接 Philips 的 27 寸 2K 显示器作为副屏。鼠标是 Magic Mouse 2,搭配腕托,用起来不累。键盘则为 Keychron K2(茶轴,也配了腕托)。 手机用的 小米 8,还有个 iPad mini 5。 信息获取 我基本不做泛主题的剪藏或稍后读,只有在进行项目调研时,会大量使用 Google 收集信息,所以重度依赖浏览器。主力浏览器是 Firefox (全平台),辅以 Safari 15 (仅桌面,侧重娱乐)和 Microsoft Edge (仅桌面,主作测试及兼容后备),书签同步使用浏览器对应账户,密码管理使用对应的 Bitwarden 扩展 。 阅读外文资料靠机翻,主要使用 Bob 搭配 OpenL API (支持 DeepL 等翻译引擎的聚合服务,按量付费,价格不贵),有时候会用一下 彩云小译 。 另一个重要的信息获取渠道则是阅读。主要用 WPS 浏览和处理 PDF 文件,电子书的阅读则集中于 微信读书 。 笔记与文件的同步及存储 我的笔记是以 Obsidian 为核心进行梳理和组织,以 iCloud Drive 和 Syncthing 进行跨平台同步。桌面端笔记使用 VS Code 书写;手机上则用 Markor 的 QuickNote 功能绑定一个 Inbox.md 进行速记;与手机模式类似,iPad 使用 1Writer 对笔记进行简单检索和编辑。 大部分文件不会直接放在 Obsidian 的文件夹中,而是根据具体性质分散在 WPS、 腾讯微云 、 阿里云盘 、 OneDrive ……笔记中只做好必要的链接、 嵌入 和说明。 Obsidian 多端同步简明指南 写作及发布 在写作的过程中,我更喜欢纯文本── Byword 是我用得最久的... 阅读全文
分布式定时任务调度系统技术解决方案(xxl-job、Elastic-job、Saturn) 1.业务场景 保险人管系统每月工资结算,平安有150万代理人,如何快速的进行工资结算(数据运算型) 保险短信开门红/电商双十一 1000w+短信发送(短时汇聚型) 工作中业务场景非常多,所涉及到的场景也各不相同,这使得我们定时任务系统应该集管理、调度、任务分配、监控预警为一体的综合调度系统,如何打造一套健壮的、适应不同场景的系统,技术选型尤其重要。 针对以上场景我们需要我们的分布式任务系统具备以下能力: 1.支持多种作业类型(shell作业/Java作业) 2.支持作业HA,负载均衡和失败转移 3.支持弹性扩容(应对开门红以及促销活动) 4.支持Job Timeout 处理 5.支持统一监控和告警 6.支持作业统一配置 7.支持资源隔离和作业隔离 2. 定时任务调度的特点 任务调度就是设点某一时间点自动触发的任务,该任务可以在时间规律上去循环执行。一般的技术quartz、spring task、java.util.Timer,这几种如果在单一机器上跑其实问题不大,但是如果一旦应用于集群环境做分布式部署,就会带来一个致命的问题,那就是重复执行,当然解决方案有,但是必须依赖数据库,将任务执行状态持久化下来。 特点: 时间驱动:系统一般可以通过时间来驱动,定时定点定次。 批量处理:批量处理堆积的数据更加高效,在不需要实时性的情况下比消息中间件更有优势。而且有的业务逻辑只能批量处理。如对账批处理、资金管理系统回盘、部分银行的报盘前的制盘 非实时性:定时任务不要求实时性,一般不用于C端用户的交互,更多的用于业务数据的处理 隔离性/专一性:可以跟其他系统分离,只关注业务数据的处理,不影响用户的操作和用户系统的性能。 基本原理: 3.开源定时任务框架 Quartz:Java事实上的定时任务标准。但Qu... 阅读全文
天马模拟器整合前端v2.0 我们终于赶在春节假期前,把天马2.0(PC版)制作完成了! 天马2.0制作小组,在此提前祝各位玩家新年快乐!玩的开心! ----------------------------------------------------------- 制作小组:挖坑者联盟 制作小组成员:Allen Wu Andy hellcamer ken5457 风_空_海 龙哥 胖砸 想要简单 天马2.0 (PC 版)配置要求: 系统要求:目前仅在 win10 ( 64 位)的 PC 上测试通过,其他系统的 PC 请自行测试。 空间要求: PC 版前端及模拟器程序 + 游戏总数据约 115G ,游戏数据分平台提供,可按需下载。支持存放在内置硬盘、移动硬盘、外置 U 盘、外置 TF 卡等。 注意:由于PC版的游戏数据文件和安卓版通用,故不再重复提供。PC版仅提供应用程序文件及相关配置文件。 因此,PC版需下载天马2.0安卓版的“步骤2:数据文件”。 使用方法详见PC版教程。 ----------------------------------------------------------- 天马2.0前端及其主题基于国外开发的免费前端软件Pegasus及其主题修改制作,在此感谢Pegasus前端的原作者。本前端的游戏资源,其中有多个平台是基于网友 @江西恐龙的游戏整合包为基础扩展制作,在此感谢 @江西恐龙的辛勤付出与支持!感谢网友 @zhuwz 大师长期以来提供的技术指导!感谢 @不填坑不舒服斯基 @追赶太阳 @哈-奇奇等热心网友在天马2.0制作过程中提供的各种帮助! 天马2.0前端整合包是免费分享给广大复古游戏同好,仅可作为学习交流研究之用,请于下载后的24小时内删除。 严禁用于任何商业用途! 引发任何的问题与纠纷,本制作组概不负责!整合内容均来源于网络共享资源,所有游戏及图片版权归其游戏公司所有,如有侵权请立即与制作组联系,将及时做删除处理。 任何资源贩卖、二次打包盈利性传播、在售机型的预装等商业行为,均属于个人行为,与本制作小组... 阅读全文
一个轻量级通用的数据同步方案 在不同的数据库系统之间做数据同步是大数据领域里常见的需求。一个典型的场景是,业务系统因为需要事务和随机查询,一般会使用 MySQL 这种数据库;数据仓库使用 Hive;ETL 之后的结果再放到 MySQL、AWS Redshift 等系统给 BI 和报表工具使用。 首先梳理一下需求和目标: 实时性:非实时,离线同步,一般为 T+1,或最细到小时粒度 扩展性:需要支持多种异构数据源,如 MySQL, Hive, ElasticSearch 等 性能要求:因为是离线系统,对性能要求无严格要求,但最好尽可能快,并有可能调优 复杂度:复杂度低,依赖少,易使用,易运维 功能要求:要满足全量同步和增量数据同步 解决方案 数据同步并不是一个特殊的问题,简化一下其实就是两个操作:读和写。与之类似的是数据库备份和恢复,很多数据库系统都自带这种工具,比如 MySQL 的 mysqldump 和 mysqlimport ,MongoDB 的 mongodump 和 mongorestore 等。这些工具一般为了性能而使用特殊的编码格式,不会考虑通用性。但一个通用的数据同步系统,可以采用同样的思路来实现。 上图描述的就是本文的解决方案,即把读写拆分,通过 CSV 文件来过度。 扩展性 这种设计的核心是把数据同步抽象成导出(读)和导入(写)两个过程,完全解耦,因此具有很好的扩展性。每种数据源只需要实现读写两种操作即可。以常见的数据源为例,看看分别如何实现从 CSV 导入数据(导出到 CSV 很容易,使用任意编程语言都可实现)。 数据源 导入 CSV MySQL 使用 LOAD DATA LOCAL INFILE 批量加载,或读取文件运行 INSERT 语句 AWS Redshift 以 AWS S3 为中转,使用 COPY 命令批量加载 Hive 建表时指定 Serde 为 org.apache.hadoop.hive.serde2.OpenCSVSerde ,或者在导入前把 CSV 先转换成默认的 TEXTFILE 格式;然后使用 LOAD DATA [LOCAL] INPATH 批量加载。 ElasticSearch 读取文件,批量插入 FTP, AWS S... 阅读全文
kubernetes中部署mysql高可用集群 很多软件后端使用的存储都是mysql,当这些软件系统在生产环境部署时,都会面临一个严峻问题,需要在生产环境中部署一个高可用的mysql集群服务。刚好在最近一周的工作中,需要在kubernetes环境中搭建mysql高可用集群,这里记录一下。 搭建MySQL集群 MySQL的主从半同步复制方案、Galera集群方案以前都也实践过,感觉都不是太友好,配置比较麻烦,而且发生故障转移时经常需要人工参与。所以这里还是采用MySQL官方推荐的Group Replication集群方案。关于MySQL Group Replication集群的架构设计可以看 官方文档 ,懒得看英文的话,也可以看我之前整理出的 资料 。另外kubedb网页上也有介绍 MySQL几种高可用方案的构架方案 ,也比较有意思。 之前的博文 也讲过在非容器环境搭建MySQL Group Replication集群,现在在Kubernetes的容器环境配合kubedb,搭建更方便了,命令如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 # 添加appscode的helm仓库 $ helm repo add appscode https://charts.appscode.com/stable/ $ helm repo update # 部署kubedb $ helm install appscode/kubedb --namespace kube-system --name kube... 阅读全文
如何去做code review Google 前几天公开了一篇谷歌的工程实践文档。而且文档的内容都是跟 code review 相关的内容,里面包含了 Google 工程师如何进行 code review 的内容,以及 code review 指南。 原文地址: google.github.io/eng-practic… 本文的名词解释: cr: code review cl: change list,指这次改动 reviewer: cr的那个review人 nit: 全称nitpick,意思是鸡蛋里挑骨头 作者: 也就是本次CL的开发者,原文中是以author来称开发者的。以老外的思维,意思是“CL的作者” 如果嫌文章太长,可以直接到 后面 看总结 cr的标准 cr(Code review)主要目的在于确保Google 的代码库代码质量越来越好。而所有相关的工具与流程皆是因应这个目的而生。为达到此目的,势必需要做出一连串的权衡与取舍 首先,开发人员必须能够在自己负责的任务上有所进展。如果你从来没有向代码库提交改进过的代码,那么代码库就永远不会改进。另外,如果一个reviewer使cr都很难进行的话,那么开发人员就不愿意在将来进行改进。 另一方面,reviewer有责任确保每个change list( 下称CL )的质量,保证其代码库的整体代码质量不会越来越差。这可能很棘手,因为通常会随着时间的推移,代码需要降级才能让代码运行起来,特别是当团队受到严重的时间限制时,大家觉得必须走捷径才能实现他们的目标。 此外,reviewer对他们正在review的代码拥有所有权和责任。他们希望确保代码保持一致、可维护,以及下文的“ 在cr中可以得到什么 ”中提到的内容。 因此,我们有以下规则,作为我们在cr中所期望的标准: 一般来说,当CL存在的时候,reviewer应该赞成它,此时它肯定会提高正在工作的系统的整体代码质量,即使这个CL并不完美。这是所有cr中的首要原则。当然,这是有局限性的。例如,如果一个CL添加了一个reviewer不希望在其系统中使用的功能,那么reviewer当然可以拒绝,即使代码设计得很好。 这里的一个关键点是,没有“完美”的代码,只有更好的代码。reviewer不应该要求作者在approve之前对一篇文章的每一小段进行润色。相反,revie... 阅读全文
Kubernetes-部署高可用的MySQL 1 、MySQL简介 MySQL 是一个开源的关系型数据库管理系统,使用标准的sql语言,由瑞典 MySQL AB 公司开发,当前属于 Oracle 公司。能够 支持大型的数据库,可以处理上千万条的数据记录。可以运行于在Windows、Linux等多种系统上;支持C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等编程语言。对于32位系统,MySQL的表文件最大可支持4GB,对于64位系统,MySQL支持最大的表文件为8TB。 2 、MySQL的高可用方案 本文的MySQL高可用方案为主从复制+读写分离,即由单一的master和多个slave所构成。其中,客户端通过master对数据库进行写操作,通过slave端进行读操作。master出现问题后,可以将应用切换到slave端。 此方案是MySQL官方提供的一种高可用解决方案,节点间的数据同步采用MySQL Replication技术。 MySQL Replication从一个MySQL数据库服务器(master)的数据复制到一个或多个MySQL数据库服务器(slave)。在默认情况下,复制是异步的;slave不需要一直接收来自主机的更新。根据配置,可以复制数据库中的所有数据库、选定的数据库,或者特定的表。 MySQL中复制的优点包括: 扩容解决方案:在多个slave之间扩展负载以提高性能。在这种模式下,所有的写入和更新操作都必须在主服务器上进行。然而,读取操作通过slave镜像。该模型可以提高写入操作的性能,同时,也能够通过增加slave的节点数量,从而显著地提升读取速度。 数据安全:数据从master被复制到slave,并且slave可以暂停复制过程。因此,可以在不损坏master的情况下,在slave上运行备份服务。 分析:现场数据可以在master上创建,而对信息的分析可以在slave进行,而不影响master的性能。 远程数据分发:可以使用复制为远程站点创建本地数据的副本,而不必一直通过访问master。 此高可用的解决方案适用于对数据实时性要求不是特别严格的场景,在使用时可以通过廉价的硬件来扩展slave的节点数量,将读压力分散到多台slave的机器上面。此方案能够在很大的程度上解决数据库读取数据的压力瓶颈问题,这是因为在大多的应用系统中,读压力要比写压... 阅读全文
详解 Kubernetes Volume 的实现原理 在 Kubernetes 集群中,虽然无状态的服务非常常见,但是在实际的生产中仍然会需要在集群中部署一些有状态的节点,比如一些存储中间件、消息队列等等。 然而 Kuberentes 中的每一个容器随时都可能因为某些原因而被删除和重启,容器中的文件也会随着它的删除而丢失,所以我们需要对集群中的某些文件和数据进行『持久化』;除此之外,由于同一个 Pod 中的多个 Container 可能也会有共享文件的需求,比如通过共享文件目录的方式为 nginx 生成需要代理的静态文件,所以我们需要一种方式来解决这两个问题。 作为 Kubernetes 集群中除了 Pod 和 Service 之外最常见的基本对象,Volume 不仅能够解决 Container 中文件的临时性问题,也能够让同一个 Pod 中的多个 Container 共享文件。 这篇文章并不会介绍 Kubernetes 中 Volume 的使用方法和 API,而是会着重介绍 Volume 的工作原理,包含其创建过程、多种 Volume 实现的异同以及如何与云服务提供商进行适配。 概述 Kubernetes 中的 Volume 种类非常多,它不仅要支持临时的、易失的磁盘文件,还需要解决持久存储的问题;第一个问题往往都比较容易解决,后者作为持久存储在很多时候都需要与云服务商提供的存储方案打交道,如果是 Kubernetes 中已经支持的存储类型倒是还好,遇到不支持的类型还是比较麻烦的。 除了卷和持久卷之外,Kubernetes 还有另外一种更加复杂的概念 - 动态存储供应,它能够允许存储卷按需进行创建,不再需要集群的管理员手动调用云服务商提供的接口或者界面创建新的存储卷。 集群中的每一个卷在被 Pod 使用时都会经历四个操作,也就是附着(Attach)、挂载(Mount)、卸载(Unmount)和分离(Detach)。 如果 Pod 中使用的是 EmptyDir、HostPath 这种类型的卷,那么这些卷并不会经历附着和分离的操作,它们只会被挂载和卸载到某一个的 Pod 中,不过如果使用的云服务商提供的存储服务,这些持久卷只有附着到某一个节点之后才可以被挂在到相应的目录下,不过在其他节点使用这些卷时,该存储资源也需要先与当前的节点分离。 卷 在这一节中提到的卷(Volume)其实是一个比较特定的概念,... 阅读全文