MVC框架在设计产品时的应用

产品汪(产品经理,业内称为产品汪)日常的工作中最多撕逼的就是程序猿(程序员,因“员”与“猿”谐音戏称“程序猿”),有人笑成汪和猿是天生一对(对手的对),这里其实更多的是产品以一产品的视角来看待产品的开发,有了需求改改就好了、很简单么,自己会coding该多好,而程序的思想是有一天不再需要coding了。

但问题的根源还是产品和开发的思维不同,如果产品用程序员的思维去写PRD,或许可以减少撕逼的过程,提高沟通效率!

那么在PRD中加入MVC框架概念,用软件工程的思维来梳理业务需求和原型设计,或许会是个比较好的方式。

如下将给大家谈谈程序开发中的MVC(Model-View-Controller)模式如何体现在产品设计中。

MVC模式作为软件工程的经典架构模式,已经被广泛应用到实际软件开发中,现在主流的开发框架(如Spring、Struts2等)都是采用了MVC的设计思想。简要介绍一下MVC模式:

【1】模型(Model):模型代表业务数据和业务规则,是应用程序的主体;

【2】视图(View):视图表示用户看到并与之交互的页面;

【3】控制器(Controller):控制器接受用户的输入,并调用模型和视图去完成用户的需求。

下面就按照我们分析需求、设计产品时考虑的点,介绍产品PRD所用的MVC模型

【1】Mode:业务数据和业务逻辑,产品考虑的是在填写表单的时候的数据类型,字段长度,哪些是必须输入的项、哪些是选填项,哪些数据是先产生、哪些是后产生的,哪些是依赖其他字段而存储的数据,这些就是模型层表现的。

【2】View:用户使用产品的入口、即界面。要考虑button、text等控件的摆放,icon的设计、配色的协调,让用户更快速的获取突出产品特点的内容。

【3】Controller:用户在填写表单的时候数据处理成功的时候跳转到什么页面、不成功提示什么错误信息,当用户从当前界面退出的时候跳转的页面是上一级界面还是其他继续需要阅览的界面,这些操作都是通过控制层去控制View而实现的。

以上就是MVC在撰写PRD时的应用,系统归纳、灵活运用,希望能对你有些帮助。

PM是产品的灵魂缔造者,面对产品要像面对自己的内心最渴望的梦想一样,坚定而执着,想尽一切办法、调动一切资源,而你需要掌握好航向,勇敢前行。

AI算法

算法定义
算法,顾名思义就是运算的法则。
在数学领域里,我们上学时老师告诉我们,1+1=2,“1”是输入的数值、“+”是运算符,“2”是结果,我们需要的是这个结果,而“+”这个运算符的运算法则就是算法,只不过这个算法比较简单,只由一个运算符组成,实际的算法要复杂得多。

算法的产生
数学上的运算符由一些数学家经过推导定义出来,总结后将运算符编进数学书籍固定下来,这我们不做过多阐述。
计算机程序的算法和数学上的运算符产生比较相似,不过高级一些。
起初程序员为了快速解决数学上的问题把数学公式编写成程序由计算机执行,这就是我们平时用的程序。程序的特性是固定下来运算法则,输入相应参数、经过运算后输出特定结果,这个过程是单一固定的,不出bug没有其他可变的结果出现。
AI(人工智能)需要的算法是需要像人类一样需要思考、需要判断、需要情感的,而这些特性是没有办法通过特定的单一过程得到的,若每种结果的产生都编写一个计算程序,显然是无法完成的任务。
人类为了尽可能的接近达到这些目标,发明了结果可变化的计算法则,特性就是“类似的输入数值经过算法计算产生类似的输出数值”,这为像人一样思考等特性提供了有可能的基础。
目前主流的类人方向研究的数据采集的算法有图像识别、声音识别等,这两种方式目前比较好的开始应用于商业。
拿图像识别中的人脸识别这一模块来说,算法实现其实并不过于复杂,分为以下几块:

1、编写从一张人脸图片中提取眼、耳、口、鼻、眉毛、及各器官的位置像素点特征值的程序
2、将这个程序的各个参数输入由卷积神经网络编写的算法生成器中,得到提取特征的算法
3、将一组图片喂给生成器并标注哪些位置是人脸检测点
4、给生成器一张之前喂过的图片并手动标注之前图片上的人脸和这张图片是同一人
5、生成器自动记录两张图片人脸位置并计算相似像素的关键点的特征值
6、重复多次这一过程,生成器找到一组规律并主动标记图片中的人脸位置并检测关键点的特征值进行比对
7、当生成器找到这一规律后即可将特征提取程序通过卷积神经网络程序重新组合成一套适用于大多数人脸特征提取的算法
8、理论上喂给生成器的人脸图片足够多可以提取人类所有面部特征用于比对,当然这一过程比较难

 

未完待续……..

【python】如何在某.py文件中调用其他.py内的函数

假设名为A.py的文件需要调用B.py文件内的C(x,y)函数

假如在同一目录下,则只需

import B
if __name__ == "__main__":
B.C(x,y)

 

若只需调用单个函数,也可以

from B import C
if __name__ == "__main__":
C(x,y)

 

若A.py和B.py位于不同的目录下,可以用以下方法

(假设B.py位于D盘的根目录下)

1.引用所在路径

import sys
sys.path.append('D:/')
import B
if __name__=="__main__":
print B.pr(x,y)

 

2.使用imp

import imp
B=imp.load_source('B','D:/B.py')
import B
if __name__=="__main__":
print B.pr(x,y)