好的设计没有好的技术来实现同样无法达到最佳的用户体验。 设计与技术并不只是实现的关系,而是需要互相配合,再完美的设计如果不能实现,那也只是白费,而一些技术上的优化也需要设计给予配合才能更加完美。 上一节中,列出了很多设计原则,有些是比较容易实现的,但有些也比较复杂,复杂到需要很大的篇幅来描述。下面我们总结了几个比较重要的设计与技术相结合的问题。 首屏速度 首先是首屏速度,它对于站点的重要性不言而喻
扩展的交互界面应该是有目的且最简单的。 就像扩展本身一样,界面 UI 应该是自定义或能增强浏览体验,而不会分散用户注意力。 本指南探讨了必需的和可选的用户界面功能,了解如何以及何时在扩展中实现不同的 UI 元素。 在所有页面上激活扩展 当扩展程序的功能在大多数情况下都可以使用时,请使用 browser_action 。 注册 browser_action browser_action 在 mani
如何为项目写文档、用什么写文档、如何方便的管理/更新文档,这是很多技术人员都要经常面对的一些问题。根据个人经验,程序开发类工作中我们涉及到的文档可能主要包括下面几类, 函数/类的接口说明文档, 比如 XXX Framework API Documentation 服务端接口说明文档,比如 Web Service API, Restful API 等 使用指南、手册等说明文档,比如 Getting
常见漏洞 XSS(Cross-site scripting) SQL Injection Command Injection Code Execution File Disclosure File Inclusion CSRF(Cross-site request forgery) Path Traversal Code injection 相关资源 OWASP (Open Web Applica
单元测试 (Unit Testing) PHPUnit 代码覆盖率 (Code Coverage)
http://javatar.iteye.com/blog/804187 最近有点痴呆,因为解决了太多的痴呆问题。服务框架实施面越来越广,已有 50 多个项目在使用,每天都要去帮应用查问题,来来回回,发现大部分都是配置错误,或者重复的文件或类,或者网络不通等,所以准备在新版本中加入防痴呆设计。估且这么叫吧,可能很简单,但对排错速度还是有点帮助,希望能抛砖引玉,也希望大家多给力,想出更多的防范措施共
空白响应 标准的 Delete 方法必须返回 google.protobuf.Empty 才能获得全局一致性。它还可以防止客户端重试时所依赖的元数据不可用。对于自定义方法,它们必须有自己的形如 XxxResponse 的消息,即使它们是空白的,因为很可能在方法功能变化后,需要返回额外的数据。 表示范围 用来表达范围的字段应当使用半开区间的命名约定,形如:[start_xxx,end_xxx),例如
分层的库设计 每个Subversion核心模块都属于三层中的某一层—版本库层、版本库访问(RA)层或是客户端层(见图 1 “Subversion的架构”)。我们很快就会考察这些层,但首先让我们看一下Subversion库的摘要目录,为了一致性,我们将通过它们的无扩展Unix库名(例如libsvn_fs、libsvn_wc和mod_dav_svn)来引用它们。 libsvn_client 客户端程序
本章列出了设计模式相关的网站、书籍和文章。 设计模式相关的网站 Wiki Page for Design Patterns - 以一种非常通用的方式检查设计模式。 Java Programming/Design Patterns - 一篇关于设计模式的好文章。 The JavaTM Tutorials - 该 Java 教程是为那些想用 Java 编程语言创建应用程序的编程人员提供的实用指南。 J
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。 设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,
Node Raft 分组中的一个节点,连接封装底层的所有服务,用户看到的主要服务接口,特别是 apply(task) 用于向 raft group 组成的复制状态机集群提交新任务应用到业务状态机。 存储 Log 存储,记录 raft 配置变更和用户提交任务的日志,将从 Leader 复制到其他节点上。LogStorage 是存储实现, LogManager 负责对底层存储的调用,对调用做缓存、批量
布局方式 静态布局 自适应布局 流式布局 响应式布局 弹性布局 兼容策略 渐进坚强 优雅降级 移动优先
其实讲一个东西,讲它是什么样是不足够的。如果能讲清楚它为什么会是这样子,则会举一反三。为了理解goroutine的本质,这里将从最基本的线程池讲起,谈谈Go调度设计背后的故事,讲清楚它为什么是这样子。 线程池 先看一些简单点的吧。一个常规的 线程池+任务队列 的模型如图所示: 把每个工作线程叫worker的话,每条线程运行一个worker,每个worker做的事情就是不停地从队列中取出任务并执行:
功能设计型API是一组可以控制Gio元素(呈现或隐藏)的API。除文档外,我们还提供在线演示来帮助您更好地理解这些API。 点击以下链接来查看各个API详细的解释。 设置初始国家 高亮被提及国家 禁用未提及国家 显示(隐藏)输入线(输出线) 添加/删除光晕 启动/禁用性能监控 透明背景 自动旋转
找到默认主页入口 我们知道页面入口都是配置在路由中的,我们来看下app/config/routing.yml发现没有“/”的路由,但是我们发现了这么几句: app: resource: "@AppBundle/Controller/" type: annotation annotation的意思是“注解”,也就是说这一部分路由配置放在了注释里面,而资源在@AppBundl