积木

Winform界面开发中的困境及解决方案

為{幸葍}努か 提交于 2020-08-19 20:39:56
DevExpress Winforms Controls 内置140多个UI控件和库,完美构建流畅、美观且易于使用的应用程序。DevExpress WinForm v20.1全新发布,想要体验? 点击下载>> 在我们开发各种应用的时候,都会碰到很多不同的问题,这些问题涉及架构、模块组合、界面处理、共同部分抽象等方面,我们这里以Winform开发为例,从系统模块化、界面组件选择、业务模块场景划分、界面基类和辅助类处理、代码生成工具辅助开发等方面介绍在实际项目开发过程中碰到的困境和相关的解决方案,以便分析其中是如何逐步提高效率和整体用户体验的。 一、系统模块化 软件和建筑工程很类似,都是需要构建一个庞大而功能完整的一个系统,而工程化也意味着需要多人协作,那么就需要把一个庞大的系统横向或者纵向划分为各个可以独立施工完成的模块,虽然各个模块之间有所衔接或者交互,但是基本上可以以模块化的方式来构建,这个也是工程化开发的精髓所在。 以一个软件管理系统为例,我们尽可能把精力焦点放在客户的业务需求上,而对于常规的如权限控制、字典管理等一些常用的内容,由于它们的处理逻辑在特定领域上基本上比较固定一些,可以尽可能独立并重复使用,而有时候,以某个特定的业务来说,同时很多处理规则也是不变的,因此也可以以业务模块的方式来划分,从而类似通用模块的方式重复使用。 模块化类似小孩子搭积木的方式构建一个所要的形状

抖音与快手用户增长策略的“破“与“不破“

℡╲_俬逩灬. 提交于 2020-08-18 05:23:49
圈层的外扩是非常难的事情,并且做得不好容易给产品"原住民"带来伤害,有时候需要慢慢探索。但是今天抖音、快手竞争激励,谁能快速跑马圈地触碰用户对外战局影响深远,更何况腾讯今天对于新的流量入口,虎视眈眈,大家都正在被推着走。快手与抖音在原有圈层穿透、做深,打通原有圈层的各类平行圈层,还必须做到自上而下、自下而上的贯穿。这里面战略上得在围绕圈层穿透想办法,战术上除了引入明星、电影独家播放权、冠名春晚,试图在用户、内容层面拥抱新用户圈层以外,也在尝试留住这些拉进门的新朋友。 接下来我们从用户的生命周期上,结合数据和算法来做一些讨论。 01 外部数据 1. 趋势中心 趋势的来源可以是站内外的全局热榜、LBS热榜、热搜Query背后的内容主题分布、内容生产者;当然站外可能需要借助一些爬虫、图像、NLP等技术。比如通过站内的流行趋势或友商最热的内容分析,作为种子可以通过文本和图像匹配等等手段,延展出非常多的候选内容,通过不断地测试推动可以沉淀一套方法论;再比如通过友商平台头部KOL ( 两个平台10w以上粉丝的KOL在10w以内,抖音在8w左右,快手在6w左右 ) 的变化 ( 排名快速上升的KOL ),内容可以捞取到内容变化趋势,如下图: 来源:卡思数据 2. 竞争雷达 构建本平台内容与竞对内容的匹配映射关系,挖掘竞对数据,最大化竞对数据价值,为应对竞争提供有力数据支持,内容领域可能是主题维度的

业务和技术融合的突破口:帮助业务人员理解软件开发

十年热恋 提交于 2020-08-18 05:19:09
云栖号资讯:【 点击查看更多行业资讯 】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 早在 1987 年,从 Zachman 先生提出企业架构的开端——“Zachman 框架”开始,B 端软件开发就开始关注企业的全景信息,而非仅仅是琐碎的需求,这也意味着,只有开发人员更好地了解了企业整体,才有可能让 B 端软件成为提升企业整体管理能力、创新能力的武器。 但是,企业架构一路起起伏伏的发展让人反思一个问题:开发人员如何才能更好地了解企业整体?显然信息只能从业务人员那里来。如何更有效地获得这些信息?除了笔者经常谈的企业级业务架构外,另一个答案很可能会出乎意料——应该先努力让业务人员了解开发。 获得信息的有效途径当然是交流和沟通,业务制度、流程图这些都是“死”的,“活”的信息只能来自于不同层级的业务人员,而有效的交流沟通并非单向的,不是业务人员单纯向技术人员“倾述”,如同两个人交往一样,越是互相深入了解,沟通才能越有效率。面对日益膨胀的软件需求,技术人员需要向业务人员普及下到底什么是软件开发,软件开发关注什么,也许只有业务人员了解了软件开发关注什么,才能更好地解释业务关注的点和技术关注的点是什么关系。 “技术的归技术,业务的归业务”,这种泾渭分明的思想要不得。时代在发展,数字化时代需要劳动者技能发生改变,结构化思维是数字化时代很重要的业务思维方式

设计模式之7个结构型模式

こ雲淡風輕ζ 提交于 2020-08-17 15:24:40
结构型模式概述 结构型模式(Structural Pattern) 描述 如何将类或者对象结合在一起形成更大的结构 ,就像搭积木,可以通过简单积木的组合形成复杂的、功能更为强大的结构。 结构型模式概述 结构型模式可以分为 类结构型模式 和 对象结构型模式 类结构型模式关心类的组合 ,由多个类可以组合成一个更大的系统,在类结构型模式中一般只存在继承关系和实现关系。 对象结构型模式关心类与对象的组合,通过关联关系使得在一个类中定义另一个类的实例对象,然后通过该对象调用其方法。 根据“合成复用原则”,在系统中尽量使用关联关系来替代继承关系,因此大部分结构型模式都是 对象结构型模式 。 适配器模式(Adapter) 桥接模式(Bridge) 组合模式(Composite) 装饰模式(Decorator) 外观模式(Facade) 享元模式(Flyweight) 代理模式(Proxy) 1适配器模式 把客户类的请求转化为对适配者的相应接口的调用 1.1 优点 将目标类和适配者类解耦 ,通过引入一个适配器类来重用现有的适配者类,而无须修改原有代码。 增加了类的透明性和复用性 ,将具体的实现封装在适配者类中,对于客户端类来说是透明的,而且提高了适配者的复用性。 灵活性和扩展性都非常好 ,通过使用配置文件,可以很方便地更换适配器,也可以在不修改原有代码的基础上增加新的适配器类,完全符合“开闭原则”

如何从零思考设计你的DevOps运维服务体系?

荒凉一梦 提交于 2020-08-17 08:07:03
前记: 体系就像是一顶帽子,是对DevOps运维的一个深度总结,写一下工作中的感悟,希望对你有所启迪。 DevOps体系是从原始运维一步步走过来的,原始运维好比是本,有了本进而想继续提升效率、减少出错、优化流程,就发展到了DevOps,AiOps....... 首先,运维的业务职能规范后形成章程、纲领,在互联网快速发展的特点下,形成了一套应对"快"和"变"的体系,并不停的迭代升级,工作这些年,体会到千象背后是有恒道的,运维工作一直围绕 高SLA 和 低成本 的业务目标运转着,只是工具在围绕着体系变来变去。从开发的角度理解, 运维体系就像是算法,实现算法的语言就像是工具,DevOps就是工具的升级 。 工具的本质其实是一个基础支撑,有了这个支撑,一系列目标的实现才更科学、高效,简单示意如下。 原始阶段,运维工程师与各部门无数的磨合、探索下,慢慢形成了最初的体系,其无形的规范着运维的工作和注意事项,工程师通过这个纲领开展日常工作并保障业务的健康发展,这个阶段可以说是 制度为王、制度规范 ,没有系统的运维平台,有的只是零散的一些大小工具,各种事物基本靠人工、靠制度、靠约束,虽是原始阶段,但也是运维最真实的样子,忙碌而又忙碌,效率总跟不上需求,制度总跟不上执行,与开发的协作总难同一频道,需要大量的运维人力。 再向后发展,为了提高效率的同时解决与开发间的沟通协作问题,提出了DevOps

设计模式第二弹: 不知道怎么提高代码复用性?看看这几种设计模式吧!

廉价感情. 提交于 2020-08-15 15:56:49
本文是设计模式的第二篇文章,第一篇文章是 不知道怎么封装代码?看看这几种设计模式吧! ,后面还会有 提高扩展性 , 提高代码质量 的设计模式,点个关注不迷路,哈哈~ 想必大家都听说过 DRY 原则,其实就是 Don't repeat yourself(不要重复你自己) ,意思就是不要重复写一样的代码,换句话说就是要提高代码的复用性。那什么样的代码才算有好的复用性呢? 对象可以重复利用。这个其实有点像我们关系型数据库的设计原则,数据表和关系表是分开的,数据表就是单纯的数据,没有跟其他表的关系,也没有业务逻辑,关系表才是存储具体的对应关系。当我们需要某个数据时,直接读这个表就行,而不用担心这个表会有其他的业务在里面。类似设计的还有redux,redux的store里面就是单纯的数据,并不对应具体的业务逻辑,业务如果需要改变数据需要发action才行。正是因为这种数据很单纯,所以我们需要的地方都可以拿来用,复用性非常高。所以我们设计数据或对象时,也要尽量让他可以复用。 重复代码少。如果你写的代码重复度很高的话,说明你代码的抽象度不够。很多时候我们重复代码的产生都是因为我们可能需要写一个跟已经存在的功能类似的功能,于是我们就把之前的代码拷贝过来,把其中两行代码改了完事。这样做虽然功能实现了,但是却制造了大量重复代码,本文要讲的几种设计模式就是用来解决这个问题的,提高代码的抽象度

Scratch编程技巧之「停止脚本执行」积木用法

…衆ロ難τιáo~ 提交于 2020-08-15 14:02:23
一、说明 Scratch在[控制]类积木下有一种积木称为[停止脚本执行],如图所示: 如上图所示,共有三种应用情形。 (1)停止(全部脚本):终止整个程序执行,彻底退出程序; (2)停止(这个脚本):终止这个角色对应的当前代码组(本积木所在代码组)的执行,而不影响当前角色其他代码组的执行; (3)停止(该角色的其他脚本):终止执行这个角色其他代码组的执行,而不影响当前代码组(本积木所在代码组)的执行。 在实际应用中,我们不仅要关注这个积木各个命令本身,还要观察此积木的形状。细心的小程序员会注意到,在情形(1)和(2)时,这个积木底部是平面的,意即此时后面不能再接续其他积木代码了! 但是,在情形(3)时,这个积木底部变成凹形,意即此时后面可以再接续其他积木代码!这是基于实际程序开发中的需求,Scratch开发人员作出的明智决定,参考下图。 下面例子给出了此积木的典型应用: 上面两组代码是应用于某一个程序的舞台角色上。左边代码的含义是在通常情况下,开始运行程序后,连续地播放舞台背景音效。 右边的含义:当舞台收到“end”消息时会通过调用上面的积木块(情形3)硬性结束舞台背景音效的播放(可能很长),然后开始播放另一段指定音效。 二、有关使用技巧 在情形(2)时,简单情况下,此功能意思是结束当前代码组的执行。但是,在有些复杂的开发中(实际应用软件开发需求是各种各样的)

武汉约100所中小学将试点人工智能课,现面向社会遴选教材

自闭症网瘾萝莉.ら 提交于 2020-08-15 12:25:14
人工智能,也要从娃娃抓起? 机器之心报道,编辑:张倩、杜伟。 据《长江日报》等媒体报道,近日,武汉市教育局发布通告,2020 年秋季,武汉将在部分中小学试点开设人工智能课程,目前正在面向社会遴选中小学人工智能课程教材。 报道称,下一阶段,武汉市教育局还将请各区教育局申报试点学校, 初步计划设约 100 所试点中小学 ,还将邀请专家进行教师培训。目前,全国各地的多所中小学都已经开始尝试开设人工智能兴趣类中小学课程,但大规模开展的地区并不多。 武汉市教育局官方文件显示,此次大规模试点中小学人工智能课其实是「智慧教育示范区」建设项目的一部分。 2019 年 1 月,教育部办公厅决定遴选一批地方积极、条件具备的地区,开展「智慧教育示范区」建设,北京市东城区、山西省运城市、上海市闵行区、湖北省武汉市、湖南省长沙市、广东省广州市、四川省成都市武侯区和河北省雄安新区被选为首批 8 个「智慧教育示范区」。 2019 年 9 月,在「智慧教育示范区」创建项目启动会上,各示范区根据自身情况和特点提出了具体的实施方案和建设重点。其中,武汉市提出要「开展人工智能与教育教学融合实践, 遴选人工智能教材,实现全市中小学 100% 开设人工智能课程 ;借助高校科研力量、企业科研力量、一线教师教研员等,推进人工智能与教学融合研究,形成学科典型案例,培养人工智能名师,培育人工智能基地学校。」 此外

Web自动化测试:UI自动化框架结构以及思路

ぐ巨炮叔叔 提交于 2020-08-14 16:27:54
在学会使用unittest后,实际上UI自动化的基础骨架已经搭建起来了,剩下的就是利于这套框架,增添一些我们需要的功能,目前看来,我们已经可以使用此框架来批量运行用例,欠缺的是整体的思路以及一些其他功能细节,比如日志记录、封装webdriver、读取数据库等功能的实现。 一、框架结构 其中: common: 一些基础的底层方法类,例如:测试报告类、数据配置读取类、日志类、封装webdriver类、数据库连接类、发送邮件类、公共方法类,只要是我们想要实现的一些功能,可以把基础方法的实现放在common文件夹。 config: 配置文件放在这里,比如:账号密码、数据库连接地址等。 log: 运行用例后,日志的存储文件夹。 report: 运行用例后,测试报告的存储文件夹。 page: 在POM设计模式下,关于具体UI页面操作的方法。 test_case: 具体存放编写的测试用例。 run_all: 用来批量运行测试用例。 二、一些设计的想法和理念 2.1数据分离 数据分离,顾名思义是指要把代码中的数据和代码分离开来,这样方便管理和维护。 在写用例以及框架时,会涉及到数据的处理,比如说:账号、密码、元素定位、测试数据等等,对于经常会用到,但是不会经常修改的数据,比如账号、密码等,可以写到配置文件里,然后再读取;而对于元素定位的话,我习惯统一放到类里,作为类的全局变量来进行维护调用

静态网页开课第一讲

狂风中的少年 提交于 2020-08-14 11:33:05
大纲 前言(关于学习、我、移动政务) 背景知识介绍 介绍html文件的基本框架 介绍body的属性 前言 大家上午好,我是XX书院2018级计算机专业的学长XXX,是这次静态网页课程的讲师。今天是我们第一节课,因为有些事情很重要,所以我把它们作为前言放在了正式上课之前。 在这里我想说三点 关于如何学习 关于我 关于移动政务 关于如何学习 编程是一门熟能生巧的技能,静态网页也是如此。相比C语言,静态网页理解上简单许多。很多初学者看了一眼之后,就认为自己学懂了,没有亲自动手实践,这是非常不好的。静态网页就像搭积木,看起来简单,但是要想搭得又好看又结实,就非常不容易了。 在这里,我希望大家能在课后,把我给出的用例修改修改,运行后观察效果,这样有益于你掌握静态网页的知识。 关于我 我是大二开始接触静态网页的,在这之后,我写过几个小项目,参加了一些比赛。现在在给你们培训的同时,我也正在接受学长的培训。从全校总体来看,我是一个普普通通的大学生;但从我个人来看,我比当初的自己成长了许多。 讲这些,其实是想鼓励培训中一些不自信的同学,能力是一步步培养出来的,你要将自信建立在未来,而不是建立于过去。 关于移动政务 大二时期的移动政务实验室,性质有点类似于学习社团。平时的基本活动就是串讲和培训,学长学姐们会给你们讲解一些技术,包括java,android,数据库,小程序等等