分享10个优美的程序员把玩儿的实用科技设计酷站(4)
今天为优美的程序员们带来了科技设计酷站第4期!哈哈哈~~~绝对实用!快来看看吧~~~O(∩_∩)O~VueStarVueStar是一个Vue组件用来生成图标闪烁的效果,类似Twitter点赞时候的特效。FlowchartJS顾名思义,FlowshartJS是一个用来构建类似PPT中流程度的JS库,在它的基础上,你可以创建各种形状的图形。FrontEndChecklist这个用来构建HTML页面的清单是根据多年的经验总结出来的。这个清单涵盖了网页设计的一些基本的策略和技巧,比如页头,CSS,JS,可访问性和SEO等。QuickBill这是一个用来创建发票的轻量级的Web应用。MockaMocka是一个创建网站原型的时候用来生成内容占位符的工具,它只有500字节,但是功能很完善,你可以通过Sassmixin轻松地将它纳入到你的CSS文件当中。为了创建不同的多媒体占位符,它提供了许多CSS类。GridPlaygroundGridPlayground是一个源自于Mozilla的计划,用来测
【数据蒋堂】第32期:JOIN简化 - 意义总结
我们重新审视和定义了等值JOIN运算,并简化了语法。一个直接的效果显然是让语句书写和理解更容易。外键属性化、同维表等同化和主子表一体化方案直接消除了显式的关联运算,也更符合自然思维;维度对齐则可让程序员不再关心表间关系,降低语句的复杂度。我们重新审视和定义了等值JOIN运算,并简化了语法。一个直接的效果显然是让语句书写和理解更容易。外键属性化、同维表等同化和主子表一体化方案直接消除了显式的关联运算,也更符合自然思维;维度对齐则可让程序员不再关心表间关系,降低语句的复杂度。简化JOIN的好处不仅在于此,还能够降低出错率。我们知道,SQL允许用WHERE来写JOIN运算的过滤条件(回到原始的笛卡尔积式的定义),很多程序员也习惯于这么写。当JOIN表只有两三个的时候,那问题还不大,但如果JOIN表有七八个甚至十几个的时候,漏写一个JOIN条件是很有可能的。而漏写了JOIN条件意味着将发生多对多的完全叉乘,而这个SQL却可以正常执行,一方面计算结果会出错(回忆一下以前说过的,发生多对多JOIN时,大概率是语句写错了),另一方面,如果漏写条
视频演讲: 58到家支付系统架构与实践
个人简介蔡敏,58到家架构师&支付平台部技术负责人,从事互联网行业10余年,先后在百度担任高级软件工程师、58同城信息质量部架构师、技术负责人、58到家支付平台部架构师、技术负责人。在大数据、反欺诈、支付等领域均有多年经验,写过代码,做过架构,折腾过性能优化,也有丰富的技术管理经验,对技术热爱,乐于技术交流和分享。全球架构师峰会(International-Architect--Summit,下简称ArchSummit)是由InfoQ中文站主办的一次全球性架构师峰会。ArchSummit专门针对架构师人群,讲述与架构和架构师相关的各方面趋势、技术和案例。这也是继QCon之后,InfoQ中文站主办的又一次高端技术盛会。
《金融时报》:可观察性以及避免来自微服务的警报过载
SarahWells在QCon伦敦发表了“防止来自微服务的警报过载”的演讲,他警告人们说,开发者和操作者在构建分布式的微服务系统时必须从根本上改变他们看待监控的方式。《金融时报》首席工程师Wells在座谈开始时表示,发现什么时间有问题还不够,必须要在需要人为干预时触发警报。微服务架构允许开发团队迅速行动,但同时也会产生操作成本,而且基于微服务的系统产生的警报的数量(和复杂性)可能令人震惊。“微服务构架允许您迅速行动,但会产生相应的操作成本。您要确定是否愿意承担该成本。”《金融时报》FT.com网站由微服务后台支持,主要使用Java和Go编程语言,与Docker和CoreOS一起打包并部署到Amazon网络服务(AWS)平台。FT将数据存储在mongoDB、elastic、neo4j和ApacheKafka中。在任何时候,该后台都有99种功能服务和350个运行实例,以及52种非功能服务和218个运行实例。Wells表示,如果每分钟检查这568个实例一次,则一天需要检查817920
MariaDB 10.2.11 发布,MySQL 分支版本
MariaDB10.2.11发布了。MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可MariaDB的目的是完全兼容MySQL,包括API和命令行。NotableChangesInnoDBMDEV-13206INSERTONDUPLICATEKEYUPDATEforeignkeyfailSupportCRC32SSE2implementationunderWindowsMDEV-13795/MDEV-14332Corruptionduringonlinetable-rebuildingALTERwhenVIRTUALcolumnsexistMDEV-13328ALTERTABLE…DISCARDTABLESPACEtakesalotoftimeMDEV-14140IMPORTTABLESPACEmustnotgobeyondFSP_FREE_LIMITMDEV-14244MariaDB10.2.
优雅地使用pt-archiver进行数据归档
一、引言最近由于业务需求,需要将公有云RDS(业务库)的大表数据归档至私有云MySQL(历史库),以缩减公有云RDS的体积和成本。那么问题来了,数据归档的方式有n种,选择哪种呢?经过一番折腾,发现使用percona的pt-archiver就可以轻松并优雅地对MySQL进行数据归档。待我娓娓道来~1.1pt-archive是啥属于大名鼎鼎的percona工具集的一员,是归档MySQL大表数据的最佳轻量级工具之一。注意,相当轻,相当方便简单。1.2pt-archive能干啥清理线上过期数据;导出线上数据,到线下数据作处理;清理过期数据,并把数据归档到本地归档表中,或者远端归档服务器。二、基本信息2.1MySQL环境2.2pt-archiver信息2.3归档表信息注意:pt-archiver操作的表必须有主键三、模拟场景3.1场景1-1:全表归档,不删除原表数据,非批量插入pt-archiver\--sourceh=10.73.129.187,P=3306,u=back
vue插件开发练习--实用弹窗
1.前言上回说了组件(vue组件开发练习--焦点图切换)的一个练习项目,这次换下口味,说下vue的插件练手的项目。相对于现在之前的焦点图切换的组件,这个可能就更简单了,基本就是熟悉下插件开发的步骤就可以了!这个项目,我更建议大家动手练习了,这个弹窗比之前的焦点图更加的实用性,也更常用。同时也能让大家熟悉下vue的插件开发的流程。代码同样,我会上传到github(ec-dialog),需要的可以直接去看代码!建议1.下面的步骤,最好在自己本地上跑起来,根据文章的步骤,逐步完成,如果只看代码,很容易懵逼的。2.如果不清楚哪个代码有什么作用,可能自己调试下,把代码去掉后,看下有什么影响,就很容易想出代码有什么作用了!2.项目目录还是一个很简单的目录,各个目录不知道有什么用的,可以移步去看我上一篇文章。和组件开发的目录相比,区别就在于src/js/components这个文件夹上。3.开发过程3-1.把项目跑起来首先,先弄src/js/components/alert这个组件。还是一样,,先在src/js/
angularJS的一些用法
AngularJS事件指令:ng-click/dblclickng-mousedown/upng-mouseenter/leaveng-mousemove/over/outng-keydown/up/pressng-focus/blurng-submit和ng-click一样,都是给dom绑定事件的需要注意的是,使用事件对象的时候,需要在ng-click等指令里传入$event,如:
浅析行内元素视觉格式化
起因前段时间组内同学在开发运营页的过程中,遇到一个有趣的问题:移动端页面采用rem自适应布局,图片在垂直方向展示时会出现莫名的间隙(如下图所示)。几位同学纷纷提出不同的解决方案,但为什么会出现这种问题呢?秉着知其然且知其所以然,借此行文一篇,大致梳理行内元素视觉格式化方面理论。前言上面的问题其实三言两语就可以说个大概,不过扩散到相关知识点却不能简单的一语带过。看过《CSS权威指南》的童鞋会知道,书中第七章有专门讲视觉格式化方面理论。同时CSS规范在第九、十章也分别有阐述用户代理如何处理视觉格式化。相比块级元素,行内元素的视觉显示基本术语多也难理解。块级元素生成块级框,通常不允许其他内容与这些框并存。在充分理解盒模型(BoxModel)后,水平和垂直方向格式化表现很容易预测。行内块级元素可以说是行内元素和块级元素的混合物,实际上行内块级元素表现与行内替换元素相似。行内元素的视觉显示则涉及较多术语,例如行内替换元素、行内非替换元素、内容区、行内框、行框、字体大小、基线、lin-height、vertical-a
jQuery插件的二种类型
jquery插件的开发包括两种:一种是类级别的插件开发,给jquery添加新的全局函数(jquery命名空间的函数),相当于给jquery类本身添加方法。另一种是对象级别的插件开发,即给jquery对象添加方法。类级别的插件开发//添加全局函数jQuery.foo=function(){};//使用方式jQuery.foo();//使用jQuery.extend(object)添加全局函数jQuery.extend({foo:function(){},bar:function(){}});//使用命名空间jQuery.myPlugin={foo:function(){},bar:function("bar"){}}//使用方式jQuery.myPlugin.foo();对象级别的插件开发jQuery插件就是用来扩展jQuery原型对象的一个方法,jQuery插件的使用方式就是jQuery对象方法的调用。例子:$("a").css("color","red")。每个jQuery对象都包含jQuery
tio-websocket 0.0.4 发布,和 tio 底层 API 无缝对接
tio-websocket是基于tio实现的websocket服务器,使用方式极其简单本次修改点1、t-io版本升级到2.0.2.v20171129-RELEASE2、tio-http版本升级到0.0.4-tio-http3、简单优化一下demo程序最新pom坐标
如何使用1、实现IWsMsgHandlerpackageorg.tio.websocket.server.demo1;importjava.nio.ByteBuffer;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importorg.tio.core.Aio;importor
如何同步vscode的自定义配置
1、vscode本身只是一个编辑器,是没有自己的账户体系的,所以我们个性化的信息都需要SettingsSync这个插件来做支持英文好的同学可以直接去插件下的说明去看,千言万语一句话在进入Github后按照下列顺序寻找设置GotoSettings/Developersettings/Personalaccesstokens/GenerateNewToken详细步骤如下2、进入你的github如图:首先点击你的用户头像,进入Settings
Docker 实战 (部署mysql)
服务器:centos7.4mysql:5.71.下载mysql镜像[root@localhost~]#dockerpullmysqlUsingdefaulttag:latestTryingtopullrepositorydocker.io/library/mysql...latest:Pullingfromdocker.io/library/mysql85b1f47fba49:Pullcomplete5671503d4f93:Pullcomplete3b43b3b913cb:Pullcomplete4fbb803665d0:Pullcomplete05808866e6f9:Pullcomplete1d8c65d48cfa:Pullcompletee189e187b2b5:Pullcomplete02d3e6011ee8:Pullcompleted43b32d5ce04:Pullcomplete2a809168ab45:PullcompleteDigest:sha256:1
前端worker之web worker
webworker背景众所周知javascript是单线程的,同一时间内只能做一件事情。这是十分必要的,设想,如果js是多线程的。有个dom元素两个线程同时做了改变,一个display:none,另一个display:block,这样让浏览器就无所适从了。出于此种考虑,单线程的js就这样一直延续下来,但是凡事必有两面性,虽然单线程保证了一些ui操作的可行性,但一些比较耗时任务,单线程的js执行起来就会有一些不太好的体验。好一点是一直loading的提示条,更甚的可能连提示都没有,即所谓的假死状态。webworker就应运而生了。什么是webworkerWebWorkers使得一个Web应用程序可以在与主执行线程分离的后台线程中运行一个脚本操作。把那些耗时的操作放在该线程中执行,这样就避免了主线程即UI线程被阻塞。简而言之,就是在主线程即负责ui交互的js之外,新开一个后台脚本负责费时操作的执行。本来可能阻塞UI的操作,就直接不与dom打交道避免长时间阻塞,执行完成之后通知主线程即可。webworker上下文正如前面提到的
javascript执行机制
文的目的就是要保证你彻底弄懂javascript的执行机制,如果读完本文还不懂,可以揍我。不论你是javascript新手还是老鸟,不论是面试求职,还是日常开发工作,我们经常会遇到这样的情况:给定的几行代码,我们需要知道其输出内容和顺序。因为javascript是一门单线程语言,所以我们可以得出结论:javascript是按照语句出现的顺序执行的看到这里读者要打人了:我难道不知道js是一行一行执行的?还用你说?稍安勿躁,正因为js是一行一行执行的,所以我们以为js都是这样的:leta='1';console.log(a);letb='2';console.log(b);然而实际上js是这样的:setTimeout(function(){console.log('定时器开始啦')});newPromise(function(resolve){console.log('马上执行for循环啦');
web前端工程师入门须知,你全部了解吗?
本文是写给那些想要入门web前端工程的初学者,高手请路过,也欢迎高手们拍砖。先说下web前端工程师的价值,目前web产品交互越来越复杂,用户使用体验和网站前端性能优化这些都得靠web前端工程师去做web前端工程师是设计加开发的综合体,web前端工程师是在开发人员中最直接面向产品,面向用户的设计人员,一个开发团队的成果是要靠web前端工程师去展现,因为用户不会去关心后台的处理有多么强大;在设计人员中web前端工程师是直接面向开发人员的设计人员,向开发人员以一种计算机语言的方式传递其设计理念,web前端工程师在整个团队中是很关键的。分享之前我先推荐下我自己的web前端学习交流圈子:618522268,不管你是小白还是大神,我都欢迎你们进群学习交流,不定期分享干货,包括我自己整理的最新的前端资料和教程送给大家,欢迎初学和进阶中的小伙伴,一起学习一起交流,共同进步。在我眼中一名合格的web前端工程师必须得掌握HTML、CSS和JavaScript。只懂其中一个或两个还不行,你必须对这三门语言都很熟悉。也不是说必须对这三门语言都非常精通,但你
JavaScript开发工具简明历史
译者按:JavaScript开发要用到的工具越来越多,越来越复杂,为什么呢?你真的弄明白了吗?原文:ModernJavaScriptExplainedForDinosaurs为了保证可读性,本文采用意译而非直译。另外,本文版权归原作者所有,翻译仅用于学习。如果你不是老司机,面对众多JavaScript开发工具,也许会有些搞不清楚状况。因为,JavaScript的生态系统在迅速的变化,新手很难理解这些工具的功能以及它们所解决的问题。对此,我深有体会。我是1998开始编程的,但是我直到2014才开始学习JavaScript。当我第一次接触Browserify时,有这样一句介绍:通过将依赖打包,Browserify让你可以在浏览器中使用require(‘modules’)当时,我完全无法理解这句话,也不知道Browserify到底有什么用。这篇博客将从历史演进的角度,告诉大家今天的JavaScript开发工具是怎样发展而来,以及它们到底有什么作用。首先,我们将介绍一个非常简单的网页示例,它是由最原始的HTML与Jav
Winform界面中实现通用工具栏按钮的事件处理
Winform界面中实现通用工具栏按钮的事件处理在一个给客户做的项目中,界面要求修改增加通用工具栏按钮的事件处理,也就是在主界面中放置几个固定的功能操作按钮,打开不同的页面的时候,实现对应页面的功能处理,这种和我标准的界面处理方式有所不同,标准的列表界面,一般在界面中放置了一些常规的按钮,如查询/更新、新建、编辑、删除、导入、导出等常规操作,现在是需要把这些提升到主界面的层次上放置按钮,这种处理方式也算是提供一种方便吧。本篇随笔介绍实现这个功能的思路和代码实现逻辑。1、界面功能介绍这里要实现的通用工具栏按钮的事件处理,具体的界面是这样的,我们处于一个多文档的主界面中,在主界面的顶部工具栏放置这些通用的工具栏按钮,以便提高相关的处理便利和效率。从上面的界面我们可以看到,程序主界面的顶部工具栏上有一些常规的操作,包括如查询、新建、编辑、删除、导入、导出等按钮,可以为程序的功能操作提供方便。当我们打开一个新的窗体页面,那么对应的按钮事件也应该和这个窗体相关,或者我们切换到其他窗体,那么按钮的处理事件也应该跟着变化到对应的窗体上,这种就是
Kafka设计解析(八)- Exactly Once语义与事务机制原理
2.1ExactlyOnce《Kafka背景及架构介绍》一文中有说明Kafka在0.11.0.0之前的版本中只支持AtLeastOnce和AtMostOnce语义,尚不支持ExactlyOnce语义。但是在很多要求严格的场景下,如使用Kafka处理交易数据,ExactlyOnce语义是必须的。我们可以通过让下游系统具有幂等性来配合Kafka的AtLeastOnce语义来间接实现ExactlyOnce。但是:该方案要求下游系统支持幂等操作,限制了Kafka的适用场景实现门槛相对较高,需要用户对Kafka的工作机制非常了解对于KafkaStream而言,Kafka本身即是自己的下游系统,但Kafka在0.11.0.0版本之前不具有幂等发送能力因此,Kafka本身对ExactlyOnce语义的支持就非常必要。2.2操作原子性操作的原子性是指,多个操作要么全部成功要么全部失败,不存在部分成功部分失败的可能。实现原子性操作的意义在于:操作结果更可控,有助于提升数据一致性便于故障恢复。因为操作是原子的,从故障中
关于攻城狮自由职业者你所需要知道的一切!
攻城狮自由职业者:一个无缝的任务攻城狮自由职业者从未如此容易或者说的确有很大的需求量。为什么这里“自由从业者”是关键词?因为构建一个项目耗时耗钱,而且通常,最熟练的现场攻城狮却在别的地方。是时候改变这个局面了!随时随地预定攻城狮为什么攻城狮自由职业者总是供不应求攻城狮自由职业者总是供不应求——有很多原因。首先,在线外包解决了很多问题,分配和搬迁的花销并不是微不足道的。现在这些都省了。大公司在发展中国家寻找熟练劳动力以利用市场不平等。虽然起初听起来很不方便,但事实上却很少如此。技术娴熟的工程师,如果没有找到一份薪水高的工作,就有机会从世界各地提供的高新的offer中选择。不可否认,他们的收入可能不会像原居民那样多,但是相比以前的offer来说,他们仍然会获得的更高的报酬。正在附近找工作的攻城狮们甚至会更好。随着事情的发展,他们将在一个以上的地区获得最好的工作机会,这将使他们有机会选择最合适的工作。做自由职业者的人数正在上升并且可能持续扩张的事实是没有过脑子的。这个offer更好,薪水更丰厚,而且能让你保持初心的机会是无价的。另一方面,企