- 浏览: 34450 次
- 性别:
- 来自: 北京
-
最新评论
一年前斯坦福和Apple联手推出了基于iPhone平台的开发课程, 这个课程的ppt被放在网上分享,反响非常好。这个学期,斯坦福将课程进行了录像,放在了iTunes university上提供下载,目前这个课程在iTunes的下载排行第一,达到了100万人次的下载。这次给大家分享的是其中关于“成功开发iPhone软件的10个步骤”的讲座,虽然与我们工作中设计软件的应用平台不同,但是还是有很多成功的经验可以借鉴。 1. 决定要做什么 人们很容易犯的一个错误是“从结论出发”,比如决定要做一个本地社会关系网的软件,而没有去想究竟做这个软件是想解决什么问题,是为了解决和好友找地方吃饭的问题还是别的什么,如果是针对吃饭地点问题,那么是不是有更加好的解决方法。所以首先要确定的是需要满足什么样的目标用户和需要解决的问题。 最容易成功的一种情况是设计者本身就是目标用户,而要解决的问题也是设计者本身遇到的问题。这样设计者能够经常使用软件,发现其中问题并进行有效迭代。想象别人的需求很困难,必须与目标用户接触、交谈,使用用户研究工作中经常使用的用户画像方法。用户画像并不一定是真实用户,可以是虚拟的,但是要能够代表用户群体。 2. 访问app store iPhone上的软件设计者没有多少机会去教育用户熟悉新的设计,这是由于iPhone本身的使用环境限制的,用户的注意力时间有限,耐心也有限,很多时候都是在交通工具上或者在等待的间隙使用的,所以软件的设计是需要用户一看就知道如何使用的。App Store上有非常多的软件,找出热门软件,看看它们是如何设计的。这些热门软件一般都是经过精心设计的,并且通常都是得到用户反馈迭代过几轮的,一些共通的地方可以借鉴参考。“Good artists copy, great artists steal.” 3. 搜寻所有可能的设计方案 有的时候设计师心里有一个设计方案,觉得这个方案非常完美,不愿意去考虑是不是有别的设计。但是通常第一个设计方案都不是完美的,即使是苹果的设计师,第一个方案往往都是糟糕的。 Iphone上的软件有很多局限性: 以iPhoto为例,下图左侧为mac上的iPhoto程序,功能非常全面,编辑图像的能力很强。而右侧是iPhone端的程序,主要的功能是看图。 不能因为功能上的减少就说iPhone端的iPhoto不成功,事实上它是一个非常成功的软件。任何人即使是3岁的孩子也会使用它,它的核心思想就是“小”。只保留那些核心功能,如果缺失了用户就不再使用此软件。 4. 画草图 到了这一步,就需要在纸上画出草稿了。例如下图右侧的程序大致对应的草图在左侧。 在做草图的时候尽量多地设计,不同的功能不同的布局。这个是苹果设计师进行设计的方法(creative alternative design),画出的第一个草图是设计师心里一开始最理想的方案,做第二到第四个的时候还比较简单,做到第七个就比较难了,最后三个是非常难的,但也是价值最大的,往往有非常有创意的想法迸发出来。 当有了这些草图以后,需要寻找到目标用户去听他们的意见,比如有同样需求的朋友。他们会反馈一些意见,喜欢什么设计不喜欢哪些地方,这些意见有助于将设计方案进行排除和整合。剩下大约2-3个接受度比较高,没有明显优劣的方案,可以选择一个方案来实现。在这部分花的时间比较多,但是非常值得,因为在之后的过程中不断修改所付出的代价往往是在先期修改的代价的数倍。 5. 建立纸质原型 下图中的每张纸代表了一个屏幕上显示的软件界面。这个步骤的价值在于在纸上绘制这些图后就可以得到一些用户实际使用的感受而不必等编程实现。 从第一张开始“OK, 你刚刚打开我的软件”,点击这个按钮就到了第二张纸的屏幕,等等就可以对软件的整个操作流程有直观的感受了。在这个过程中可以收集到比草图阶段丰富得多的用户反馈,哪里用户不知道怎么操作了,哪里容易引起困惑,哪里用户比较喜欢,哪里不喜欢。 下面这张图是一个iPhone游戏的设计师们做的纸质的原型,模拟真实的iPhone。设计师们做了各种各样的纸片来模拟程序中的各种元素。 6. 工具的使用 ——omnigraffle Omnigraffle虽然是个图形编辑软件,但是更加合适做原型设计,里面有丰富的控件库,可以拖拉这些控件来方便地搭建程序界面。一些比较个性的设计或者比较细节的加工可以在photoshop中制作。下面这张图是omnigraffle中用于Iphone平台的控件库。 下面这张图是讲师用omnigraffle做出的软件界面,可以实现到与最终版本像素级精确。 在这个阶段就要进行一些比较细节的内容确定和视觉相关定义,比如颜色的定义等等。建立起精确的原型也方便一个团队多人一起工作,减少沟通成本,避免产生歧义。 7. 回溯修改 其实不是一个真正的步骤,但是放在这里说明并不是每个软件都要一步到位,其实是一个迭代的过程,有时候必须要回溯修改。 下图是讲师最近正在制作的一个软件的界面,在制作具体界面细节中所进行的不同尝试: 也有要进行更加彻底的回溯修改的情况,有的用户在草图阶段反馈说喜欢的东西其实并不是他真正需要的东西,这种情况下就要回到草图阶段进行重新设计。 8. 开发实现 这部分不赘述,简单地说就是要注意程序的设计模式,用户界面和后台数据分离。 9. 测试 对软件做测试,看看是否文字提示恰当,是否有bug等。这里比较关键的是谁来做测试。 好友是比较可靠的资源,他们的反馈比较有价值。但是如果本地的目标用户比较难找,比如地震分析软件这种涉及全球性质的用户,就可以使用Mechanical Turk。Mechanical Turk是Amazon的一个服务,对于那些在网上又没有明确事情要做的人,以非常低的报酬,比如几美分,来请他们进行测试。也可以出稍高的价钱请数量比较少但是比较专业的人来进行测试,这样反馈的价值比较高。 10. 发布 发布软件,在比较前期的版本可能需要界面修改,bug修补,迭代版本。但是通常到后期都是一个比较可喜的结局。 总结 几条要注意的原则: 1.了解你的用户,并与他们接触、交谈。
1. 小屏幕
2. 触摸式的输入很不精确,通常需要44像素大小的目标才能有足够的点中率。
3. 输入更困难,即使有软键盘,相对普通键盘的输入还是困难不少。更多的是传达信息给用户而不是让用户产出信息。简单地说就是读应用多于写应用。
4. 使用时间比较短,通常一次都是几分钟的使用长度。不一定是用户对软件不感兴趣,而是由一些例如“地铁到站了”的客观情况所决定的。所以设计出的软件一个操作流程不能花很长的时间。
2.不要做虚幻的想象的设计,多从成功软件中汲取经验。
3.软件要设计得“小”。
4.找到足够多的设计方案,通过数量的累计来得到好的质量。
5.失败得越早成功得越快。
6.要做到像素级精确。
7.记住没有什么是非常宝贵不能舍弃的,不要害怕去修改。
8.在提交之前进行足够的测试。
发表评论
-
RSA Public Key Cryptography in Java
2010-12-20 14:39 1202Public key cryptogr ... -
java 类静态成员初始化问题
2010-12-16 09:17 1151public class StaticVar { pr ... -
程序执行时间估算
2010-12-09 11:53 848一直以来没有对程序执行的时间不是很清楚,今天大概研究了一下,为 ... -
java.io.StreamCorruptedException: invalid type code: 31
2010-12-02 13:46 2317A user-settable boolean to dete ... -
eclipse jdt 编译的bug
2010-11-26 16:35 752先上代码 class MyException extend ... -
架构师给程序员的一封信
2010-11-16 15:25 718某Architect给他的Engineer ... -
10 个最酷的 Linux 单行命令
2010-10-27 22:08 741下面是来自 Commandlinefu 网站由用户投票决出的 ... -
Root exception is java.rmi.UnmarshalException: failed to unmarshal class weblogi
2010-09-02 16:40 2294Found a cause the problem. Ther ... -
程序安装apk
2010-09-02 09:30 1411Intent i = new Intent(Intent ... -
java class 文件反编译分析
2010-08-04 09:11 924javac Test.java javap -c Test ... -
Cannot find value in class indicator mapping in parent descriptor
2010-06-09 19:37 1519Cannot find value in class ... -
Android adb error: “device not found” on Ubuntu
2010-05-29 13:18 5550I've been getting this error ... -
java远程调试异常捕捉不到
2010-05-24 14:17 868再远程调试的时候出现了异常,但是无法知道相关异常信息,把代码放 ... -
11月编程语言排行榜:C语言的耐力基因
2009-11-11 15:40 584Tiboe近日发布了新一期 ... -
google推出开源go语言
2009-11-11 11:15 318go语言官网 http://golang.com go语言h ... -
GWT Unable to load Mozilla for hosted mode
2009-09-29 09:05 195在运行gwt的sample时 [java] ** Unab ... -
安装JRuby时出现系统找不到指定的路径
2009-09-29 00:02 137今天在配置JRuby时,运行jruby -v ,出现" ...
相关推荐
# 基于 Koa2 的 FEBLOG API ## 项目简介 FEBLOG API 是一个基于 Node.js 和 Koa2 框架的 RESTful API 服务器,支持多种关系型数据库(如 PostgreSQL、MySQL、MariaDB、SQLite、MSSQL),并使用 Sequelize 作为 ORM。项目支持跨域请求、JSON 数据传输、JWT 身份认证等功能,适用于构建前后端分离的应用。 ## 主要特性和功能 跨域支持通过配置支持跨域请求。 数据传输格式支持 applicationxwwwformurlencoded、multipartformdata、applicationjson 格式的 POST、PUT、DELETE 请求。 JWT 身份认证通过 JWT 实现用户身份认证。 数据库支持使用 Sequelize ORM 支持 PostgreSQL、MySQL、MariaDB、SQLite、MSSQL 等多种数据库。
存储器实验资料.zip
# 基于 Python 的知乎热榜爬虫及数据处理项目 ## 项目简介 本项目基于 Python 编程语言,旨在实现知乎热榜的定时跟踪以及相关数据的存储与查询操作。通过爬虫技术获取知乎热榜问题的详细信息,将数据存入数据库,同时提供一系列 SQL 查询示例帮助用户熟悉 SQL 基本语法,还包含使用 Selenium 实现 GPA 计算器的功能。 ## 项目的主要特性和功能 1. 知乎热榜爬虫定期爬取知乎热榜,获取问题摘要、描述、热度、访问人数、回答数量等基本信息,并将数据存入数据库。 2. 可定制爬虫逻辑用户可以选择删除已有代码从零开始编写,也可以完成代码填空实现相应功能。 3. GPA 计算器使用 Selenium 模拟点击登录 WebVPN,登录 info 并访问成绩单页面,查询成绩并计算每学期的绩点。 4. SQL 练习提供一系列基于 MySQL 数据库的 SQL 查询练习,帮助用户熟悉基本的 SQL 语法,如添加新列、数据填充、关键词查询等。
# 基于C语言的学生信息管理系统 ## 项目简介 这是一个基于文本界面的学生信息管理系统,旨在通过简单的文本输入实现学生信息的添加、查找、修改和删除操作。系统采用链表数据结构存储学生信息,并支持文件读写功能以持久化存储数据。 ## 项目的主要特性和功能 ### 主要特性 1. 文本界面操作用户通过控制台输入指令完成操作。 2. 链表数据结构使用链表存储学生信息,方便信息的添加和删除。 3. 文件操作支持将学生信息数据保存到文件,以及从文件中读取数据。 ### 功能详解 登录验证用户需输入正确的学号和密码才能进入系统。 主界面展示显示系统主菜单,包括学生信息查找、删除、添加、修改和录入等功能。 学生信息查找根据学号查找学生信息。 学生信息删除根据学号删除学生信息。 学生信息添加可以添加新的学生信息到系统中。 学生信息修改可以修改已存在的学生信息。 学生信息录入展示所有存储的学生信息。 辅助功能
# 基于VS Code的px到rpx转换工具 ## 项目简介 本项目是一款VS Code插件,旨在将前端代码里的单位px转换为rpx。当设计师在设计稿中使用px单位时,开发者能够借助该工具快速把代码中的px转换为小程序适用的rpx单位。它借助语法分析技术实现精准转换,避免误改其他属性里的px。 ## 项目的主要特性和功能 1. 自动转换功能能通过简单命令自动识别并转换style标签内所有声明中的px为rpx。 2. 精准转换利用语法分析,仅对真正的单位值进行转换,防止错误修改其他内容中的px字符。 3. 部分转换支持可选择部分样式代码进行转换,操作灵活便捷。 ## 安装使用步骤 假设用户已下载本项目源码文件且安装了VS Code环境。 1. 安装插件打开VS Code,进入侧边栏的扩展视图,搜索并安装“px2rpx”插件。 2. 重启VS Code安装完成后重启VS Code使插件生效。
test文件资包。传递使用
主控:AT89C52 显示:LCD1602 光照检测:光敏电阻 距离检测:超声波测距 远光灯 近光灯 按键(设置阈值) 1、使用光敏电阻实时检测环境光线强度,设置阈值判断是否开启远光灯; 2、利用超声波传感器测量迎面车辆距离,设置安全距离阈值,自动切换到近光灯; 3、加入延时功能(例如在检测到迎面车辆后等待3秒再切换灯光),以减少频繁切换,提升平滑性。 4、所选传感器模块、执行器模块、电源与接口电路等模块的型号需要是便宜的。
esp-idf-v5.3.2
内容概要:本文介绍了多个信息安全领域的实战项目,涵盖网络渗透测试、Web应用安全加固、企业安全策略制定与实施、恶意软件分析、数据泄露应急响应、物联网设备安全检测、区块链安全审计和云安全防护。每个项目都详细描述了其目标和具体实施步骤,包括信息收集、漏洞扫描、利用和修复、安全配置、风险评估、制度建设、培训教育、样本获取与分析、事件响应、遏制措施、调查取证、数据恢复、安全检测、架构分析、智能合约审计、共识机制审查、云环境评估、访问管理、网络安全防护等方面。 适合人群:信息安全从业者、IT管理人员、安全顾问、系统管理员、开发人员以及对信息安全感兴趣的人员。 使用场景及目标:①为信息安全从业人员提供实际操作指导,帮助其掌握不同场景下的安全防护技能;②为企业提供全面的信息安全保障方案,确保其信息系统和数据的安全性;③为开发人员提供安全编码和系统设计的最佳实践指南,提高应用程序的安全性;④为安全研究人员提供深入分析恶意软件和区块链系统的工具和方法。 阅读建议:读者可以根据自身需求选择感兴趣的部分进行深入学习,建议结合实际案例进行实践操作,同时关注最新的安全技术和法规要求,以确保所学知识与时俱进并能应用于实际工作中。
# 基于C语言和STM32F0系列微控制器的宏键盘系统 ## 项目简介 本项目是基于C语言和STM32F0系列微控制器开发的宏键盘系统。该系统可让用户自定义宏按键,实现快速输入或自动化任务,涵盖硬件的GPIO输入输出控制、USB通信以及中断处理等功能。 ## 项目的主要特性和功能 宏定义用户能通过定义keymappings.h文件中的宏按键,自定义按键行为。 USB通信利用STM32F0系列微控制器的USB库,支持HID类通信。 GPIO控制实现对键盘按键读取和发送操作的控制。 中断处理可处理按键状态变化、USB通信等外部中断请求。 电源管理对微控制器的睡眠、停止和待机等电源模式进行管理。 ## 安装使用步骤 ### 硬件准备 确保STM32F0系列微控制器(如STM32F042K6)的GPIO引脚、USB接口等硬件连接正确。 保证所有必要外设(如LED、按键)正确连接且可用。 ### 软件准备 下载并解压项目源代码。
内容概要:本文详细介绍了如何利用COMSOL Multiphysics软件构建熔池枝晶模型,用于模拟金属在凝固过程中枝晶的生长行为。主要内容涵盖三个关键模块:传热、流体流动和相场。通过定义相应的偏微分方程(如传热方程、Navier-Stokes方程和相场方程),设置适当的边界条件和初始条件,并进行多物理场耦合求解,最终实现了对熔池温度分布、速度场及枝晶生长过程的精确模拟。此外,还探讨了如何优化求解器配置、处理移动边界条件、引入各向异性效应以及提高计算效率的方法。 适合人群:从事材料科学、冶金工程、增材制造等领域研究的专业人士和技术人员。 使用场景及目标:适用于需要深入了解金属凝固过程中微观结构演变机制的研究项目,特别是在激光熔覆、焊接等工艺中,帮助研究人员预测和优化材料性能。 其他说明:文中不仅提供了详细的建模步骤指导,还包括一些实用技巧,如参数选择、网格划分策略、热源耦合方式等,有助于解决实际建模过程中可能遇到的问题。
内容概要:本文详细介绍了利用COMSOL Multiphysics进行地下二氧化碳封存仿真的方法和技术要点。主要内容涵盖两相流模块设置、温度场耦合、地层分层建模以及力学模块处理等方面。文中不仅提供了具体的数学模型和代码片段,如相对渗透率函数、热膨胀系数函数等,还分享了许多实际操作中的经验和教训,强调了不同物理场之间的相互作用及其对模拟结果的影响。 适合人群:从事地质工程、环境科学、石油工程等领域研究的专业人士,尤其是那些需要进行地下流体运移和储层特性研究的科研工作者。 使用场景及目标:适用于希望深入了解地下二氧化碳封存机制的研究人员,帮助他们掌握如何使用COMSOL软件构建复杂的多物理场耦合模型,从而更好地预测和评估二氧化碳封存的安全性和有效性。 其他说明:文章中提到的技术细节对于确保模拟精度至关重要,例如正确处理单位转换、选择合适的渗透率模型、考虑温度变化对岩石性质的影响等。此外,作者还提醒读者应注意避免一些常见的错误配置,以免导致不可靠的结果。
ENCAP 2023打分表
中国上市公司协会:2022年中国上市公司董事会秘书履职报告
内容概要:本文详细介绍了利用MATLAB遗传算法解决带有时间窗约束的电动车路径规划和充电优化问题。首先,构建了客户点、充电站以及电动车的基本参数模型,然后设计了一套完整的遗传算法框架,包括染色体编码、适应度函数、交叉变异操作等。适应度函数综合考虑了总行驶距离、时间窗违约、电量透支等多个因素。通过多次迭代优化,最终得到了较优的路径规划方案,并展示了实验结果的可视化图形。此外,文中还讨论了一些调参技巧和实际应用中的注意事项。 适合人群:具有一定编程基础和技术背景的研究人员、工程师,特别是从事智能交通系统、物流配送优化领域的专业人士。 使用场景及目标:适用于需要进行电动车路径规划和充电管理的实际应用场景,如城市物流配送公司。主要目标是在满足客户需求和服务质量的前提下,最小化运营成本,提高车辆利用率。 其他说明:文中提供了详细的代码实现步骤和部分实验数据,有助于读者理解和复现研究结果。同时提到了一些实用的小技巧,如适当放宽时间窗惩罚系数可以降低总成本等。
# 基于Arduino的超声波距离测量系统 ## 项目简介 本项目是一个基于Arduino平台的超声波距离测量系统。系统包含四个超声波传感器(SPS)模块,用于测量与前方不同方向物体的距离,并通过蜂鸣器(Buzz)模块根据距离范围给出不同的反应。 ## 项目的主要特性和功能 1. 超声波传感器(SPS)模块每个模块包括一个超声波传感器和一个蜂鸣器。传感器用于发送超声波并接收回波,通过计算超声波旅行时间来确定与物体的距离。 2. 蜂鸣器(Buzz)模块根据超声波传感器测量的距离,蜂鸣器会给出不同的反应,如延时发声。 3. 主控制器(Arduino)负责控制和管理所有传感器和蜂鸣器模块,通过串行通信接收和发送数据。 4. 任务管理通过主控制器(Arduino)的 loop() 函数持续执行传感器任务(Task),包括测距、数据处理和蜂鸣器反应。 ## 安装使用步骤 1. 硬件连接
内容概要:本文详细介绍了如何使用COMSOL进行偶极光源的建模与仿真。首先解释了偶极子光源的物理本质及其重要性,然后逐步指导读者完成从创建新模型、设置电流源、配置边界条件到最终结果分析的全过程。文中强调了关键步骤如正确设置电流分量、选择合适的边界条件(如PML)、合理划分网格以及如何解读远场辐射图等。此外,还提供了多个实用技巧和常见错误规避方法,帮助用户提高仿真的准确性和效率。 适合人群:从事光学仿真、电磁场研究的专业人士和技术爱好者。 使用场景及目标:适用于需要精确模拟微纳尺度下电磁波行为的研究项目,特别是涉及偶极子光源的应用场合。通过掌握这些技能,可以更好地理解和预测实际物理现象,从而为相关领域的科研工作提供有力支持。 其他说明:文章不仅涵盖了基本的操作流程,还包括了许多作者亲身经历的经验分享,使读者能够避开一些常见的陷阱并获得更好的仿真效果。同时,文中提供的代码片段可以帮助用户快速上手,将理论知识转化为具体实践。
内容概要:本文详细介绍了COMSOL Multiphysics在多种扩散模型中的应用,涵盖电化学、多孔介质中的流体运移、岩石裂隙中的浆液扩散等领域。通过具体的代码片段展示了如何模拟电双层纳米电极中的扩散、二氧化碳混相驱替、岩石裂隙中的浆液扩散以及三层顶板随机裂隙浆液扩散等过程。文中强调了COMSOL的强大多物理场耦合能力和灵活性,特别是在处理复杂系统如煤颗粒的吸附/解吸行为时的优势。此外,还讨论了模型参数调整、边界条件设置、数值稳定性等问题,并分享了一些实践经验和技术细节。 适合人群:从事电化学、地质工程、油气田开发等相关领域的科研人员和工程师。 使用场景及目标:①研究电化学过程中离子迁移和电荷分布的变化;②模拟二氧化碳在多孔介质中的运移规律,优化油气采收率;③分析浆液在岩石裂隙中的扩散规律,指导注浆工程的设计;④探讨煤颗粒的吸附/解吸行为,提升煤层气开采和CO2封存的效果。 其他说明:文中提供了大量具体的技术细节和代码片段,有助于读者理解和复现相关模型。同时,作者分享了许多实际操作中的经验和技巧,对于初学者和有一定经验的研究人员都有很高的参考价值。
内容概要:本文介绍了一种新颖的时序预测模型CPO-ELM-ABKDE,它结合了冠豪猪优化(CPO)、极限学习机(ELM)以及自适应带宽核密度估计(ABKDE),用于多变量时序预测和区间概率预测。首先,利用时间滑窗技术将原始数据转换为多变量输入矩阵,然后采用CPO优化ELM的输入权重和偏置,提高预测准确性并防止过拟合。接着,通过ABKDE对预测残差进行建模,生成自适应的概率预测区间。实验结果显示,该模型在电力负荷预测任务中表现出色,点预测R²达到0.97,95%置信区间的覆盖率达到92.3%。 适用人群:从事数据分析、机器学习研究的专业人士,尤其是关注时序预测及其应用的研究者和技术开发者。 使用场景及目标:适用于需要精确时序预测的应用场合,如电力系统负荷预测、金融市场价格走势预测等。主要目标是在确保较高预测精度的同时提供可靠的不确定度量化,帮助决策者更好地应对潜在的风险。 其他说明:文中提供了详细的代码实现步骤,包括数据预处理、模型搭建、训练优化以及结果评估等多个环节。此外,还讨论了不同优化算法之间的性能比较,并强调了本模型对于处理实际工业数据的良好适应性和稳定性。
Gitblit 1.9.3 是 Gitblit 这个 Git 服务器工具的一个特定版本(即 1.9.3 版)。 Gitblit 是一个基于 Java 的 Git 仓库管理服务器,它可以让你在局域网或服务器上搭建自己的 Git 仓库系统,主要用于团队协作中的代码托管、权限管理、项目浏览等功能。