All Posts

全栈开发教学学习系列1——前言

在网上看到一个全栈开发教学的例子,他是一个使用Django来作为服务器后端结合前端来做的东西,是一个全栈教学的案例。虽然作者是中国人,但是他做的东西都是用英文做出来的,http://webcoursify.github.io。在这里,我们就把他的学习教程一步步翻译出来,也当是自己学习。 开篇部分zhuyao1讲一下Django的基本概念,这个部分主要分为三个小结: 一. 客户端服务器模型和MVC设计模式 首先用一张图来简单的描述一下: 基本上所有的网络系统都符合这个模型。在网络系统中,服务器通过标准协议响应来自各种客户端发来的请求。客户端之间的请求被认为是相互独立的。这就意味着服务器如果正在响应某个客户端的请求时,他就不需要处理来自其他客户端的请求或者相同客户端的其他请求。 MVC 架构模式 这种架构模式被广泛应用于各种软件开发中,而不仅仅只是网络系统的开发。下面简单介绍一下MVC: Model 这个组件时系统的核心问题,比如数据结构,数据存储遗迹核心逻辑等等。它经常注重的是整个系统的基础,和其他两个组件没有特别多的交互。 View 这个组件注重向用户展示信息以及接受用户的交互信息。这个组件在网络系统中往往就是前端层次。 Controller 这个组件连接前两个组件。这个组件中的函数往往是被事件所触发得。 当然这里面的名称可能和在Django里面的叫法不太一样,但具体内容应该是差不多的。

indexDB的概念

IndexDB利用数据键(key)访问,通过索引功能搜索数据,适用于大量的结构化数据,如日历,通讯簿或者记事本。 以key/value成对保存数据 IndexDB和WebStorage都是以数据键值的方式来保存数据,只要创建索引,就可以进行数据搜索和排序。 交易数据库模型 IndexDB进行数据库操作之前要先进行交易。所谓交易,就是将数据库所做的访问操作(比如增删改查)包装成一个任务来执行,这个任务可以包含多个步骤,只有所有的步骤执行成功,交易才算成功;只要有一个步骤失败,整个交易就会取消所做的更改都会被恢复。 IndexDB大部分的异步API IndexDB数据库操作并不会立即执行,而是先创建数据库操作要求,然后定义事件处理函数来响应这些要求是成功还是失败。 通过监听DOM事件取得执行结果 数据操作完成时,通过监听DOM事件来取得执行结果,DOM事件的type属性会返回成功或者失败。 每个读写操作都是请求 IndexDB随时随地都在使用请求 面向对象 IndexDB是面向对象数据库,不使用sql语法,必须以面向对象的方式来获取数据。 NOSQL的数据库系统 IndexDB的查询语言并非sql,而是查询索引获取指针,然后用指针访问查询结果。

markdown语法规则

标题 标题是每篇文章最常用的格式,在markdown中如果要定义标题的话,只要在这段文字之前加#号就可以了。 一级标题 二级标题 三级标题 以此类推,总共六级标题,建议在#号之后加上一个空格,这是标准的markdown语法。 列表 列表主要分为有序列表和无序列表。只需要在文字前加上-或*即可变成无序列表,有序列表直接在文字前加上1. 2. 3. 符号和要在文字之前加一个空格就可以了。 1 2 3 1 2 3 引用 如果你要饮用一段话的话,那么你只要在引用的文字前加上>这种尖括号就可以了 这是我要引用的文字 图片和链接 插入链接和图片的方法很像,区别在于一个感叹号 图片为:{ImgCap}{/ImgCap} 链接为: 粗体和斜体 粗体和斜体也很简单,用两个包含一段文本就是粗体的语法,用一个包含一段文本就斜体的语法。 这是粗体 这是粗体 表格 Tables are cool col1 clo2 col3 分割线 分割线的语法只需要三个*号就可以了 分割线上 分割线下

css样式表的引入方式

一般来说,css 有两种样式表的引入方式,在这里我记录一下,比较这两种引入方式的区别: <link rel="stylesheet" type="text/css" href="css文件"> @import "css文件" 显然第一种方式似乎是更常见的。事实上,使用这两种方式引入css文件的效果都是一致的,区别在于是html标记,而@import是css语法。标记有rel,type和href属性,可以制定css样式表的名称,这样可以利用javascript的语法来控制。举例来说,我们可以在一个网页中链接多个css样式文件,在利用javascript语法控制不同情况下显示的样式文件,例如让用户在点击某个按钮之后更换网页的背景颜色,或者随着时间来更换网页的背景颜色,正因为link方式的弹性更大,这也是为什么这种方式更为常见的原因。

如何用latex画一个简单的表格

latex毫无疑问是一个十分强大的论文写作工具,所以掌握它就显得非常有意义,讲一下如何画一个简单的表格,代码如下: \begin{table} \centering \begin{tabular}{||c|c||} \hline algorithm & time complexity\ \hline RM-MEDA & O(NM)\ \hline IRM-MEDA & O(NK)\ \hline \end{tabular} \caption{The time complexity comparing result} \label{TAB1} \end{table} 呈现的效果如下: 是不是很简单 欢迎搜索微信号 mad_coder 或者扫描二维码关注公众号:

matlab批量修改变量的名称

使用matlab做实验的时候,保存的文件里面的变量名都是一样的 ,所以希望能够把变量名全部都重命名。我举个个例子,假设我一堆文件,文件名分别是gds1,gds2,gds2,….. 但是实际上load进来之后的变量名称都是gds,所以我希望能够把变量名能够改成相对应的文件名称。在这里,我使用了eval这个函数,这个函数到是一个非常方便的选择。 %% 变量批量重命名 clear all rootname = 'gds'; extension = '.mat'; for i = 1:n variable = [rootname,int2str(i)]; filename = [variable,extension]; load(filename); eval(['gds',num2str(i),'=','gds',';']); save(filename,variable); clear gds variable filename; end clear all

奇异值分解基础(SVD)

最近要了解一下Incremental PCA的一些知识,然后看到一篇论文里面讲到了SVD(奇异值分解),奈何自己以前没有把机器学习的课好好上,现在很多东西还是要补回来。所以,我就想了解一些SVD的基础知识。 PCA的实现一般有两种方法,一种是用特征值分解去实现,一种是用奇异值分解去实现的,SVD貌似在很多领域都有很重要的应用。 特征值和特征向量 特征值和特征向量是线性代数里面的基础知识,相信大部分人都知道: 很显然,λ就是特征向量v对应的特征值,一个矩阵的一组特征向量都是相互正交的,相信这些大家在线性代数都有学习。特征值分解是将一个矩阵以下面的形式进行分解: 其中Q是这个矩阵A的特征向量组成的矩阵,Σ是一个对角矩阵,每一个对角线上的元素就是一个特征值。 特征值分解可以得到特征值和特征向量,特征值表示的是这个特征值的重要性,而特征向量表示的是这个特征是什么,可以将每一个特征向量理解为一个线性的子空间。不过特征值分解也有很多的局限,比如变换的矩阵必须是方阵。 奇异值 特征值分解只能针对于方阵,局限性较大,而奇异值分解是一个能够用于任意的矩阵的一种分解方法: 假设A是一个NM的矩阵,那么U是一个NN的方阵(里面的向量是正交的,U里面的向量称为左奇异向量),Σ是一个NM的矩阵(除了对角线的元素都是0,对角线上的元素称为奇异值),V’(V的转置矩阵)是一个NN的矩阵,里面的向量也是正教的,称为右奇异向量。 我们将矩阵A和他的转置矩阵相乘,就可以得到一个方阵,我们利用方阵的求特征值可以得到: 这里面的v,就是我们上面所说的右奇异向量,由此我们可以得到 这里的σ就是上面所说的奇异值,u就是上面说的左奇异向量。奇异值σ跟特征值类似,在矩阵Σ中也是从打到小排列,而且σ的减少特别的快。在很多情况下,前10%的甚至1%的奇异值的和就占了全部的奇异值之和的99%以上了。也就是说,我们可以用前r大的奇异值来近似描述矩阵,因此部分奇异值分解可以如下定义: r是一个远小于m、n的数, 右边的三个矩阵相乘的结果将会是一个接近于A的矩阵,r越接近于n,则相乘的结果越接近于A。而这三个矩阵的面积之和要远远小于原始的矩阵A。 SVD和PCA## PCA的问题其实是一个基的变换,使得变换后的数据有着最大的方差。方差的大小描述的是一个变量的信息量,我们在讲一个东西的稳定性的时候,往往说要减小方差,如果一个模型的方差很大,那就说明模型不稳定了。但是对于机器学习的数据,方差大反而有意义,不然输入的数据就是同一个点了,那方差九尾0了。 这个假设是一个摄像机采集一个物体运动得到的图片,上面的点表示物体运动的位置,假设我们想用一条直线去拟合这些点,那我们应该选择什么方向的线?当然是图上标有signal的那条线。如果我们把这些点单纯的投影到x轴或者y轴上,最后在x轴和y轴上得到的方差就是相似的。 一般来说方差大的方向就是信号的方向,方差小的方向就是噪声的方向,我们在数据挖掘或者数字信号处理中,往往是要提高信噪比。就上图说,如果我们只保留signal方向的数据,就可以对原始数据进行不错的近似了。 PCA的就是对原始的空间中顺序地找一组相互正教的坐标轴,第一个轴使得方差最大,第二个轴是在与第一个轴相交的平面中使得方差最大,第三个轴也是在与第1,2个轴正交的平面中使得方差最大,这种假设在N维空间中,我们就可以找到N个这样的坐标轴,我们取前r个去近似这个空间,这样就从一个N维的空间压缩到r维的空间,但是我们可以选择r个坐标轴使得空间的压缩使得数据的损失最小。 假设我们矩阵的每一行代表一个样本,每一列代表一个feature,将一个mn的矩阵A进行坐标轴的变化,P就是一个变换的矩阵从一个n维的空间变换到另外一个n维的空间 而将一个mn的矩阵A变成一个m*r的矩阵,我们就会使得本来有n个feature的,变成有r个feature了(r小于n),这r个其实就是对n个feature的一种提炼,我们把这个称为feature的压缩: 之前的SVD的式子是: 在矩阵的两边同时乘上一个矩阵V,由于v是一个正交的矩阵 我们对SVD分解的式子两边乘以U的转置矩阵U' PCA几乎可以说是对SVD的一种包装,如果我们实现了SVD,那也就实现了PCA。

PCA算法和实例

PCA算法 算法步骤: 假设有m条n维数据。 将原始数据按列组成n行m列矩阵X 将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值 求出协方差矩阵C=1/mXXT 求出协方差矩阵的特征值以及对应的特征向量 将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P Y=PX即为降维到k维后的数据 实例## 以这个为例,我们用PCA的方法将这组二维数据降到一维 因为这个矩阵的每行已经是零均值,所以我们可以直接求协方差矩阵: 然后求其特征值和特征向量,求解后的特征值为: λ1=2,λ2=2/5 其对应的特征向量分别是: 由于对应的特征向量分别是一个通解,c1和c2可取任意实数。那么标准化后的特征向量为: 因此我们的矩阵P是: 可以验证协方差矩阵C的对角化: 最好我们用P的第一行诚意数据矩阵,就得到了降维后的数据表示: 降维后的投影结果如下图: PCA本质上是将方差最大的方向作为主要特征,并且在各个正交方向上将数据“离相关”,也就是让它们在不同的正交方向上没有相关性。 因此,PCA也存在一些限制,例如它可以很好地解除线性相关,但是对于高阶相关性就没有办法了。对于存在高阶相关性的数据,可以考虑Kernel PCA,通过Kernel将非线性相关转化为线性相关。另外,PCA假设数据各特征分布在正交方向上,如果在非正交方向上存在几个方差较大的方向,PCA的效果就大打折扣。 PCA是一种无参数技术,也就是说面对同样的数据,如果不考虑清晰,谁来做结果都一样,没有主观参数的介入,所以PCA便于通用实现,但是本身没有个性化的优化。 本文主要参考:http://blog.codinglabs.org/articles/pca-tutorial.html

WWDC2015

ios9功能 Proactive:整合siri、联系人、日历以及第三方应用。 Notes: 可调节字体、插图片、支持手写注记等功能。 Maps: 加入新公交试图,Transit提供公交系统和换乘细节。 News:聚合新闻应用,可根据西兴趣选择不同的新闻源。 电池续航:充满殿后设备使用时间延长1小时。 安装包更小,只有1.3G。 用户隐私:数据只会保存在本地,不会上传到云。 OS X EI Capitan 新增多种触控板手势。 safari增加固定标签页功能。 窗口自适应功能,不必手动调整窗口大小和拖动窗口。 Spotlight能够理解日常语言。 Metal首次引入图形管理接口。 swift2将在今年年底开源。 split view将自动并排两个app共用一个屏幕。 邮箱app增强全屏显示功能。 ipad最新功能 quick type键盘 传说中的分屏 支持“画中画”功能

道路模型--linear-parabolic model

读过很多道路追踪的论文,经常都需要道路模型的建模。我不知道是不是因为自己太笨还是怎样,好多人建的模型我实在无法理解他的用意何在,而且我真的深刻怀疑他们那些模型的参数是不是真的可以求出来。就比如这篇文章“lane detection and tracking using a new lane model and distance transform",我实在无法理解他的建模,还有他的建模参数到底如何求解: 我无法理解他为什么要设置那个角度,我也不知道那个顶点的位置如何获取,如果有大神知道的,还望告知一下。 好,说完不好的,我就要说个我觉得很通俗易懂的模型,这是我第一个遇到一个我能看的懂,而且我又觉得具有实用意义的道路模型,首先如图所示: 这个图片被xm分成为了两个部分,一个部分我们称为far feild,一个部分我们称为near feild,对于这两个部分采用了不同的建模方法。道路模型f(x)由这两个部分组成,near feild线性的,而far feild是抛物线的,定义如下: 这里的xm就是代表了原图中的边界线,同时我们根据道路模型的连续性,可以得出 因为在xm两边的函数值是相等的,并且导数也是相等的。 从而我们就能得到下面的公式: 这样我们可以把c和e用别的变量来表达 因此我们可以把最终的道路模型参数用下面的函数来表达 这就是这个论文提出的道路模型,这样是不是很好理解,而且很有根据。 Reference Jung C R, Kelber C R. A robust linear-parabolic model for lane following[C]//Computer Graphics and Image Processing, 2004. Proceedings. 17th Brazilian Symposium on. IEEE, 2004: 72-79.