Riot–小巧强悍的图片优化工具[Win]
图片内容处理,在PC上可以用ps、美图秀秀、光影魔术手等软件来满足;而图片文件处理,其实也可以用ps、美图秀秀来处理,但我个人认为太麻烦了,操作起来非常不直观。而我对于「图片文件处理」需求的解决方案这么多年一直都没变过,它就是「RIOT」:不好意思放错图片了,是下面这张:又放错图了,sorry,是下面这张:诶,今天总是手滑,不是制作《英雄联盟》游戏的那家公司哈:PRIOT(RadicalImageOptimizationTool)全名是「激进的图片优化工具」,这么多年用下来,其效果确实是非常「激进」。援引下官方的介绍:RIOT有一个非常方便的界面,以供你实时比较「原图」和「优化后的图」,同时也可以实时看到优化后的图片体积。Riot使用起来非常轻量、快速以及简单,然而对于深度用户而言,又不失强大下面为大家一一介绍:体积小巧整个安装包才1.3mb,非常小巧了,几乎不占磁盘空间。界面易用大家可以看到主界面,非常容易使用,上方是功能菜单,中间左侧是原图,右边是优化后的图,下方选择转
程序员的自我救赎---1.1: 解决方案命分层规范
《目录》《Winner2.0框架解决方案命分层规范》初学编程,难免要从HelloWord开始,学习Winner框架首先要知道如何建一个项目。有了第一个项目的框架结构就知道如何施展自己的"增删查改"。Winner框架依然遵从MVC模式,这里我就不去赘述什么是MVC。数据层:以"项目名.DataAcces"命名,例如:Shop.DataAccess;实体层:以"项目名.Entities"命名例如:Shop.Entities;业务层:以“项目名.Facade”命名例如:Shop.Facade;显示层:以“项目名称”命名例如:Shop;=======================华丽的分割线====================winner框架的核心库有三个:Winner.Framework.Core(核心类dll)Winner.Framework.Encrypt(加密类dll)Winner.Frame
PHP高性能分布式应用服务器框架-SwooleDistributed
今年年底历时2年多的迭代,这是SD框架硕果满满的一年,通过不断的迭代和改进SD框架已经在圈内有良好的口碑,不少新生的框架借鉴了SD的设计思想,SD框架也被不少创业型公司和大型企业使用。SD框架到底是什么技术SD框架全称SwooleDistributed,从名称上看一个是Swoole一个是Distributed,他是基于Swoole扩展的可以分布式部署的应用服务器框架。借助于PHP的高效开发环境,Swoole的高性能异步网络通信引擎,以及其他的高可用的扩展和工具,SD框架提供给广大开发者一个稳定的高效的而且功能强大的应用服务器框架。入门成本老实的说相对比目前热门的FPM框架来说,SD的入门成本相对还是比较高的,因为设计理念不同以及和传统PHP-FPM环境完全不同的运行环境,对于长时间使用LAMP(LANP)技术的开发人员来说会有一段时间的适应期,如果开发应用简单涉及到的系统复杂度低,那么SD上手还是比较容易,根据简单的例子和文档几乎立即就能开启SD的探索之旅,但是如果开发的是复杂的应用那么SD包含的众多组件还是需要你慢慢熟悉上手的。
小程序、容器、SCF、直播加速…最全面的云端架构技术揭秘(上)
在刚刚闭幕不久的2017腾讯全球合作伙伴大会上,腾讯首次发布其AI开放全景图,并围绕AI主线进行腾讯全产品线开放布局。无论在AI方面的战略计划,还是机器学习、计算机视觉、语音识别等AI技术的开放和落地,其背后都离不开云的支撑,这就好比AI是火箭,云计算是助推器。在火爆的云计算市场,腾讯云一直以来都比较低调,但这并不妨碍他深耕自己的技术,并把技术优势发扬光大。近期腾讯云与极客邦科技共同在北京举办了一场题为“解码腾讯云软件架构与应用”的技术沙龙,来自腾讯云和知乎的六位技术专家,详细介绍腾讯云在小程序、视频业务、无服务器云函数、中间件等领域的技术储备,也分享他们的洞察。本文整理了部分精彩干货内容,感兴趣的同学可以点击阅读原文下载完整版演讲PPT。实时音视频爆款APP背后的技术支撑腾讯云视频业务产品总监黄斌进行了开场演讲,他的演讲主题是《如何快速打造基于实时音视频能力的爆款APP》。对于网络直播、音视频应用,大家肯定都不陌生,无论是2016年的千播大战,还是以商业直播为依托的视频+,都让网络直播、视频从娱乐化走向垂直领域。不过实时音视频对技术
怎么让继承的类直接使用XIB的布局试图
很久没有使用Xib进行开发了,解决使用Xib加载竟然不会了怎么让继承的类直接使用XIB的布局试图最近做的一个小工具,一键替换key,就是为了解放双手,不然每次运行测试和正式的版本都要手动的替换key。自从2013年三月进入一家外企之后,就再也没有用过xib.虽然现在苹果已经建议大家用Storyboard但是一些地方还是要用到xib.自己几乎所有的项目都是用的全代码,但是平时demo和一些小工具还是用上可视化试图和最新语言Swift.做到是一个mac程序,几个界面基本上的功能按钮都是一样的。就封装了一个类,用上了xib。但是拖拽一个NSView,继承与我们刚才的自定义试图,运行发现出不来我们XIB界面。我自己分析了一下原因,虽然我们让XIB的类指向我们自己自定义试图,但是关联不起来试图。应该没有加载,我最初想到的解决在overrideinit(frameframeRect:NSRect)requiredinit?(coder:NSCoder)这两个方法里面读取Nib里面的试图获取到
大揭秘:程序员值得读的开源好书及一线互联网公司面试题库
正版书籍太贵,盗版书看着不爽,英文原版看着费力,中文译本错误百出。对技术人员而言,进阶路上似乎一直找不到合适的书籍或者资源可供学习,即便找到了,似乎也没有合适的题库可以练习。笔者近日在Github上发现了很多不错的技术书籍,这其中也包括一些中文译本,程序员可以免费阅读。同时,还有来自于百度、小米、美团、58、猎豹、360、新浪、搜狐的内部面试题库可供广大程序员练手,你确定不仔细看看?1、《Python进阶》这本书是《IntermediatePython》的中文译本,作者将一些晦涩难懂的技术用比较清晰简洁的方式呈现出来,不管是Python初学者还是老司机看完这本书之后都会感觉脑洞大开,这本书将Python编程语言的优点淋漓尽致地表现了出来。(Github开源地址:https://eastlakeside.gitbooks.io/interpy-zh/content/)2、《Python最佳实践指南!》为什么推荐这份实践指南?这份指南与官方文档有什么不同吗?这份指南包含了作者非常强烈地主观感受,不单单是Python的安装、配置或者每
HR怎么从面试中了解程序员的真实水平?
HR肯定不懂或至少不太懂专业技术,这点,是一定的。一个外行,怎么面试内行,很多求职者会很好奇。其实,HR初试,更多的是看“人怎么样”,对“能力行不行”的观察,只是一个大概的情况,后续更深入的技术考核,往往是用人部门的技术主管来进行。HR更多的是看你的人品,你的性格,你的稳定性,你的沟通能力,你的成长潜力等。程序员的面试,第一步往往比较简单粗暴直接:笔试题。技术岗位的面试,一般会让技术负责人出一套笔试题,你来应聘,HR先把你带到小黑屋,先用笔试题鄙视你一下。一般多是选择题,这样HR就可以通过答题,初步判断你的技术水平。如果玩的大一点,还可以搞点猫腻,比如估计试卷上前后两页有一道题是重复的,看你如何反应;或者,估计有一道题,题干就是有毛病的,看你如何处理……从中可以看出你的性格,包括对相关技术的理解程度,这个套路,啧啧,也是HR很喜欢玩耍的。笔试题答的还成,初试的时候,HR一般在技术层面,一方面,可能会核实下你简历呈现的内容;另一方面,初步询问下你的胜任能力。笔试题答的稀碎,初试问了几个问题也稀碎,你就见不
程序员经历过的最难调试的Bug是什么?
程序员与Bug是一对矛盾的存在,程序员既要在解决Bug中获得成就感,同时也讨厌Bug本身的存在。"程序不息,Bug不止",程序员在与Bug的斗争中,也有很多有趣的事情发生,本文总结了程序员调试Bug的种种传奇经历。众里寻Bug千百度,蓦然回首,它却在隔壁老张处@知乎网友条件状语从句:写JS,自己手机没电了,拿同事老张的安卓机调试,很简单的获取用户微信昵称,结果死活获取不到,一直显示为null。应该是跨平台问题,因为之前在自己iPhone上是没有bug的,拼命看api文档,但是都没提到这方面。急死我了。刚刚老张告诉我他的昵称就是nullBug都是好Bug,就是有些不太正经@知乎网友王杰:百分之百出现的bug都是好bug,多线程里的能重现的bug都是上帝给予的惊喜!史上最灵异的bug:@知乎网友阿九:某医院部署的网络,不定期会有半夜断网或者不稳定情况,但天亮就会恢复,客户投诉抱怨。调试过程:现场查看全部网络硬件正常,查看log发现有一台汇聚交换机有反复重启动作,在重启前有高温告警。于是重点关注该机器。该机器
给准备走上技术之路的在校大学生的一些建议
给准备走上技术之路的在校大学生的一些建议这两天我大学的老师突然找我想让我以过来人的角度给在校的学弟学妹们分享一些经验,当然非常高兴能得到老师的认可和信任。完事后想了想干脆直接把这些建议也分享到博客上让更多的人看到,希望能够帮到更多的在校大学生。直奔主题,一会我会从大家都比较关心的以后的面试和当前在校阶段的规划两个方面说起,因为我本人是搞技术的,所以下面的建议主要是针对技术方面。关于面试首先呢就是关于面试,目前为止,离大家最近的职业面试可能就是在大三过后的实习面试,所以我就从实习面试说起了,在我们公司今年年初的春季校招中,我也很荣幸的成为面试官之一,所以在实习面试方面我多少也有一些心得。其实无论是我们公司还是其他的公司他们对于面试者尤其是实习生会非常看重面试者的基础能力、学习能力和探索能力。基础能力所谓基础能力呢,指的是你对基础技能的掌握,好比你去面试Android开发,面试官肯定会考察你对Android基础知识掌握的是否全面,是否牢固。如果你对你所面技术的基本掌握都达不到一个合格的要求的话,那么面试时必挂无疑的。除此之外,一些大厂的面试官
有激情的程序员,其实都有病
我不是一个“充满激情的程序员”。我觉得,固定8小时工作之后,就应该去做点别的事情,比如说看看科幻小说,和我亲爱的妻子聊聊天等等。当别人问起,我会正儿八经地这么回答,“这才是所谓的生活。你也应该试一试”。其实我内心非常看不上那些充满激情的程序员,他们所谓的激情就是一天花上12甚至16个小时坐在电脑前写代码,或者为了写代码而牺牲了自己的爱好、睡眠以及人际交往,有时候甚至连基本的生活自理都无暇顾及。这哪还是激情啊,这分明是一种强迫症。大男子主义亦或是偏执狂?我们的文化不对劲。如果我们迷恋上一个女子,用类似于在公司工作时孜孜不倦奉献的方式去追求她,会被当成是疯子!然而,这种疯狂放到工作中就成为榜样了,只要能孜孜不倦勤勤恳恳地专注于写代码——哪怕你严重内向甚至有着自闭障碍,也会成为雇主们的最爱。更糟糕的是,太多太多的男性程序员因此而心甘情愿地牺牲其他时间,用于写代码,并以此为荣。然后,这种工作至上的潮流驱使高科技领域的女性人员也不得不随波逐流。程序员就像是受虐狂一样,在被揍了之后,乐呵呵地说:“Tha
编程基础的重要性(程序员之路)
编程基础的重要性(程序员之路)学习编程有几年了,感觉走了不少弯路,而不少的学弟学妹又在重蹈我当初的覆辙,不免有些痛心。最近在网上也看了许多前辈们的经验建议,再结合自己的学习经历在这里谈谈基础的重要性,希望帮助大家少走些弯路。什么是基础呢?就是要把我们大学所学的离散数学,算法与数据结构,操作系统,计算机体系结构,编译原理等课程学好,对计算机的体系,CPU本身,操作系统内核,系统平台,面向对象编程,程序的性能等要有深层次的掌握。初学者可能体会不到这些基础的重要性,学习jsp,donet,mfc,vb的朋友甚至会对这些嗤之以鼻,但是一开始没学好基础就去学jsp或donet会产生很坏的影响,而且陷入其中不能自拔。我上大二的时候还对编程没什么概念,就上了门C++也不知道能干什么,老师说MFC也不知道是什么东西,看别的同学在学asp.net就跟着学了,然后就了解到.net,j2ee,php是什么了,就觉得软件开发就是用这些了,而上的那些专业课又与我们学的sqlserver啊,css啊,ajax啊,毫无关系,就感
架构决策记录(Architecture Decision Records)
作者:《发布!软件的设计与部署》作者、及《软件架构师需要知道的97件事》与《架构之美》作者之一原文连接:ArchitectureDecisionRecords上下文对于敏捷项目的架构来说,它们必须有不一样的描述和定义。不是所有的决策都会立即做出,也不会在项目开始时做出全部决策。敏捷方法不是反对文档,而是反对没有价值的文档。只要文档能保持到最新,则能帮助团队的文档都是有价值的。大型的文档永远不会保持最新,而小型的模块化文档至少有机会被更新。也没有人喜欢阅读又长又大的文档。大多数开发人员至少在规范文档比源代码总大小(以字节为单位)至少有一个项目。这些文档太大,无法打开、阅读或者更新。一次能阅读完的文档,更容易让所有利益相关者去消费。项目在其生命周期中,最难追踪的事情之一就是:某些决定背后的动机。一个参与项目的新人。可能会因过去的决定而困惑、迷惑、高兴或者激怒。如果不能了解其原因或者后果,此时这个人只有两个选择:1.一味地接受这个决策如果决定仍然有效,这个响应可能是正确的。然而,如果情况发生
Developer Economics 全球开发者调查全面启动,填答就有机会抽 iPhone X
还记得2017DeveloperEconomicsQ3调查吗?这项调查不但包含科幻主题及许多新奇有趣的开发者玩笑,更是一个能测验你对开发工具与平台了解程度的大好机会!全新的2017DeveloperEconomicsQ4(第14版)已经推出,也吸引了许多开发者前来参与,这次我们更做了繁体中文版邀请中国台湾地区的开发者共襄盛举。除了可以了解开发工具的新趋势,更可寻找许多乐趣!此次调查目的正是希望进一步了解软件产业的未来,若你对这项调查不太熟悉,可以参考以下“问&答”,了解调查的目的与我们想要传达的想法。问:这项调查的重点是什么?答:一直以来我们希望透过这项问卷,提出与软件产业相关的生态与未来趋势议题。问:谁适合做这项调查?答:这项调查是为所有从事下列软件开发领域的开发者所设计,移动设备、桌面、IoT、AR/VR、机器学习与数据科学、Web、后端及游戏。问:有多少人参加这项调查呢?答:每年都有超过40,000多名来自全世界各地的开发者共同参与。问:上一次调查结果是甚么呢?答:无论负责的项目功能大或小,在领导职
面向软件开发人员的英特尔永久性内存专区已经准备就绪
作者:AllysonKlein秋季是举办软件活动和宣传软件产品的旺季。英特尔计划随英特尔®至强®可扩展处理器一同发布英特尔永久性内存,我们期待更多地了解这款卓越的内存技术。我们非常高兴地向软件开发人员同行们宣布,我们将在英特尔开发人员专区展示全新的永久性内存资源。专区将为大家提供关于永久性内存编程的视频教程,各种工具(比如非易失性内存库),以及详细的示例应用构建步骤。经验丰富的专家和资深工程师,比如英特尔首席工程师AndyRudoff,将通过视频、文章和帖子,为大家提供详细指导,帮助大家了解和使用这项革命性技术。另辟蹊径,打造大容量、经济高效的永久性内存英特尔永久性内存大胆挑战人们一直以来对基于DRAM的内存技术的看法(认为它是小容量、价格高昂,易失性内存)。借助高密度3DXPoint非易失性介质和与英特尔至强可扩展平台的紧密集成,英特尔内存解决方案成功具备大容量、经济高效和永久性等优势。有了这种内存,软件开发人员将不再需要退出内存域,也无需使用速度缓慢的I/O来永久保存数据。相反,数TB数
Python导出MySQL数据库中表的建表语句到文件
defexecute_query(self,sql_string):try:cursor=self.cursorcursor.execute(sql_string)list=cursor.fetchall()cursor.close()self.conn.close()returnlistexceptpymysql.Errorase:print("mysqlexecuteerror:",e)raisedefexecute_noquery(self,sql_string):try:cursor=self.cursorcursor.execute(sql_string)self.conn.commit()self.cursor.close()self.conn.close()exceptpymysql.Errorase:print("mysqlexecuteerror:",e)raisedefmain():conn_dict={'host':'127.0.0.1','port':3306,'us
从商用到开源:DB2迁移至MySQL的最佳实践
摘要:身处数据驱动快速变革的时代,数据库系统的选型和架构设计对于整个IT基础架构,甚至企业的发展都起到至关重要的作用。那么今天,如果您的企业需要搭建一套新的应用系统,你会选择什么数据库类型?如果当前的系统不能满足业务需求,面临系统迁移,你又会如何选择?在2017年初,我们分享过一份国外的报告“开发人员是如何使用数据库的”,并且进行了一次调查『中国数据库爱好者的选择和背离』,其中的一些数据展示了用户对于数据库的选择,非常具有参考价值,链接可以直接参考分析报告。身处数据驱动快速变革的时代,数据库系统的选型和架构设计对于整个IT基础架构,甚至企业的发展都起到至关重要的作用。那么今天,如果您的企业需要搭建一套新的应用系统,你会选择什么数据库类型?如果当前的系统不能满足业务需求,面临系统迁移,你又会如何选择?在2017年初,我们分享过一份国外的报告“开发人员是如何使用数据库的”,并且进行了一次调查『中国数据库爱好者的选择和背离』,其中的一些数据展示了用户对于数据库的选择,非常具有参考价值,链接可以直接参考分析报告。随着互联网+时代的到来,
如何优雅的添加MGR节点?
摘要:引言MySQLGroupReplication(简称MGR)是MySQL官方于2016年12月份推出的一个全新的高可用与高扩展的解决方案。MGR提供了高可用、高扩展、高可靠的MySQL集群服务,是MySQL数据库未来发展的一个重要方向。引言MySQLGroupReplication(简称MGR)是MySQL官方于2016年12月份推出的一个全新的高可用与高扩展的解决方案。MGR提供了高可用、高扩展、高可靠的MySQL集群服务,是MySQL数据库未来发展的一个重要方向。场景描述ip地址规划参数设置一个已经运行很久的MGR集群,以single-master模式运行(单主模式),binlog过期策略为7天。因为不可抗力的因素,mgr-node3.up.com节点永久性的down,并且无法恢复,或者mgr-node3.up.com宕机超过时间7days,或需要快速添加节点,那么该如何快速添加或扩容呢?需求描述猜想1.如果这个问题发生在PerconaXtraDBCluster(pxc)或者MariadbGalera
MySQL高并发优化,性能调优要这么来~
一、数据库结构的设计表的设计具体注意的问题:1、数据行的长度不要超过8020字节,如果超过这个长度的话在物理页中这条数据会占用两行从而造成存储碎片,降低查询效率。2、能够用数字类型的字段尽量选择数字类型而不用字符串类型的(电话号码),这会降低查询和连接的性能,并会增加存储开销。这是因为引擎在处理查询和连接回逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了。3、对于不可变字符类型char和可变字符类型varchar都是8000字节,char查询快,但是耗存储空间,varchar查询相对慢一些但是节省存储空间。在设计字段的时候可以灵活选择,例如用户名、密码等长度变化不大的字段可以选择CHAR,对于评论等长度变化大的字段可以选择VARCHAR。4、字段的长度在最大限度的满足可能的需要的前提下,应该尽可能的设得短一些,这样可以提高查询的效率,而且在建立索引的时候也可以减少资源的消耗。二、查询的优化保证在实现功能的基础上,尽量减少对数据库的访问次数(可以用缓存保存查询结果,减少查询次数);通
nosee的LAMP搭建系列三、MySQL安装与配置
【nosee的LAMP搭建系列集合】——传送门:《nosee的LAMP搭建系列一、Apache安装》、《nosee的LAMP搭建系列二、php安装与配置》、《nosee的LAMP搭建系列三、MySQL安装与配置》、《nosee的LAMP搭建系列四、集成环境phpStudy安装》。系列四小编正在努力code...安装MySQL5.7从mysql5.5起,mysql源码安装开始使用cmake了,为了方便起见,我这里使用一种更简单的办法,使用包管理工具apt(redhat系统操作系统的为YUM)。如果想使用源码安装的可以自行去百度,我这里就不再做研究了。1)首先,更新服务器上的包索引。apt-getupdate2)查看镜像源(确保远程镜像中有需要的mysq安装包):apt-cachesearchmysql-server3)安装mysql-serverapt-getinstallmysql-server默认情况下,Ubuntu16.04使用上述命令会安装以下包:apparmor//这个a
Miox答疑解惑之基于页面的服务体系
Miox发布以来,很多小伙伴都在问一个问题:Miox与react-router@4.x到底有什么不同?我在掘金和知乎上都回答了一些,但是不够完整,那么我就来解释下它们的不同点。这个问题很简单,也许是由于我之前文章标题取的是Miox带你走进动态路由的世界让大家觉得Miox仅仅做了动态路由选择这一层。其实不然,Miox中router仅仅是一部分,我们还做了很多其他的事情。简单而言,我们可以概括为“基于后端服务理念而架设在前端页面上的一套WEBSERVICE体系”。Miox是一个兼容多种渲染引擎的,提供高度自动化Webview生命周期管理的一个中间件/框架,同时提供了开箱即用的若干自动化脚手架,快速生成项目。它可以自动帮你处理路由切换、webview生命周期管理等各种单页应用会面临的问题,让你专注于webview内的业务开发。Miox实现了生命周期和路由管理的最佳实践,避免了不统一的开发方式可能造成的性能下降和错误,并且可以平滑接入SSR这样的开发技术,达到开发效率和接近原生体验两者