鈴 创建的主题
  • Backbone 44 0 1 发布

    Backbone.js是一个JavaScript MVC框架。本篇先简单的介绍一下Backbone.js的概念和导入方法。

    简介

    Backbone.js是一个JavaScript MVC框架,顾名思义,是一个旨在为Web应用程序提供架构骨干的库。通过在Web应用程序中使用Backbone.js提供的事件,模型,集合,视图和路由器等组件,可以为Web应用程序提供某种结构。

    (体系结构)

    下面的图描述了一个典型的Backbone应用的体系结构:

    (特点)

    轻量
    大小为6.3kb(压缩+ gzipped)已经被大量应用易于与其他库集成
    例如,对要使用的View库没有特别限制

    (依存)

    Backbone.js依存于以下库:

    Underscore.js(> = 1.4.3)或Lo-Dashjson2.jsjQuery(> = 1.7.0)或Zepto导入

    (index.html)

    <html> <head>   <title>Backbone Example</title> </head> <body>   <h1>Backbone Example</h1>  <script src="lib/js/jquery-1.9.1.js"> </script><script src="lib/js/json2.js"> </script><script src="lib/js/underscore.js"></script> <script src="lib/js/backbone.js"></script> <script src="js/app.js"></script> </body> </html>

    (app.js)

    (function(){ console.log("Hello Backbone!"); }());     

    (动作确认)


  • Windows 146 0 1 发布

    Windows下最常用的几个网络CMD命令:

    pingnetstatipconfigroutetracertarpping

    主要是测试本机TCP/IP协议配置正确性与当前网络现状.  

    ping命令的基本使用格式是: 
     ping  IP地址/主机名/域名 [-t] [-a] [-n count] [-l size]

    -t:
    连续对IP地址/主机名/域名执行Ping命令,直到被用户以Ctrl+C中断.-a:
    以IP地址格式显示目标主机网络地址,默认选项.-n count:
    指定要Ping多少次,具体次数由count来指定,默认值为4.-l size:
    指定Ping命令中发送的数据长度,默认值是32字节. netstat

    主要是帮助了解整体网络情况以及当前连接情况.

    基本使用命令格式:
     netstat [-n] [-a] [-e] [-r][-s]

    -n:
    显示所有已建立的有效连接.-s:
    本选项能够按照各个协议分别显示其统计数据。
    如果应用程序(如Web浏览器)运行速度比较慢,或者不能显示Web页之类的数据,那么我们就可以用本选项来查看一下所显示的信息.
    我们需要仔细查看统计数据的各行,找到出错的关键字,进而确定问题所在.-e:
    本选项用于显示关于以太网的统计数据。它列出的项目包括传送的数据报的总字节数、错误数、删除数、数据报的数量和广播的数量。
    这些统计数据既有发送的数据报数量,也有接收的数据报数量.(这个选项可以用来统计一些基本的网络流量)        -r:
    本选项可以显示关于路由表的信息,除了显示有效路由外,还显示当前有效的连接.-a:
    本选项显示一个所有的有效连接信息列表,包括已建立的连接(ESTABLISHED),也包括监听连接请求(LISTENING)的那些连接. ipconfig

    主要是了解当前TCP/IP协议所设置的值,如IP地址、子网掩码、缺省网关、Mac地址等.

    基本使用方法
     ipconfig [/all/release/renew]

    ipconfig:
    当不带任何参数选项,那么它为每个已经配置了的接口显示IP地址、子网掩码和缺省网关值./all
    当使用all选项时,能为DNS和WINS服务器显示它已配置且所要使用的附加信息(如IP地址等),并且显示内置于本地网卡中的物理地址(MAC).
    如果IP地址是从DHCP服务器租用的,它会显示DHCP服务器的IP地址和租用地址预计失效的日期./release & /renew :
    这是两个附加选项,只能在向DHCP服务器租用其IP地址的计算机上起作用.
    如果我输入ipconfig/release,那么所有接口的租用IP地址便重新交付给DHCP服务器(归还IP地址).
    如果输入ipconfig /renew,那么本地计算机便设法与DHCP服务器取得联系,并租用一个IP地址.请注意,大多数情况下网卡将被重新赋予和以前所赋予的相同的IP地址. route

    主要用于配置路由与查看当前路由情况.

    基本使用方法:
     route [print] [add] [change] [delete]

    print:
    主要是打印当前路由情况.add:
    手动添加路由或配路由,例子如下:
    route ADD 157.0.0.0 MASK 255.0.0.0  157.55.80.1 METRIC 3 IF 2change:
    只用于修改网关和/或跃点数.例子如下:
      route CHANGE 157.0.0.0 MASK 255.0.0.0 157.55.80.5 METRIC 2 IF 2delete:删除路由.例子如下:
    route DELETE 157.0.0.0
    tracert

    主要用于显示将数据包从计算机传递到目标位置的一组IP路由器,以及每个跃点所需的时间(即跟踪数据报传送路径),测试网络连通性问题.

    基本用法:
     tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout]   [-R] [-S srcaddr] [-4] [-6] target_name(目标IP、URL或域名)-d
    不将地址解析成主机名. -h maximum_hops   
    搜索目标的最大跃点数. -j host-list       
    与主机列表一起的松散源路由(仅适用于 IPv4). -w timeout         
    等待每个回复的超时时间(以毫秒为单位). -R                 
    跟踪往返行程路径(仅适用于 IPv6). -S srcaddr         
    要使用的源地址(仅适用于 IPv6). -4                 
    强制使用 IPv4. -6                 
    强制使用 IPv6. ARP

    主要用来查看本地计算机或另一台计算机的ARP高速缓存中的当前内容.

    基本使用方法:
     arp [-a/g] [-s] [-d]

    -a:
    用于查看高速缓存中的所有项目,-a和-g参数的结果是一样的.-s:
    向ARP高速缓存中人工输入一个静态ARP项目.-d:
    删除ARP高速缓存中的内容.

     (本文转载自https://www.cnblogs.com/sbaicl/archive/2013/03/05/2944001.html

  • NodeJS 87 0 1 发布

    Node.js 加载一个模块主要遵循以下步骤:

    解决(Resolving) 加载(Loading)包装(Wrapping) 评价(Evaluating) 缓存(Caching)Resolving

    NodeJS中的模块与文件系统中的文件一一对应。模块加载的过程其实就是找到该模块文件然后执行文件里的脚本并将结果载入内存的过程。

    模块的ID被定义成其对应的文件在文件系统中的绝对路径,这保证了同一个物理模块即使被不同的模块以不同的相对路径方式引用,最终也只会被加载一次。
    Resolving 阶段的工作就是把require 的字符串解析成一个文件系统中的绝对路径。

    有以下三类模块:

    核心模块
    也即 Node.js 内置的模块,例如 “fs”、”path”、”url” 等,这类模块无需安装即可直接使用。路径形式的文件模块
    以"."、".."开头和"/"开始的标识符,这里都被当作文件模块来处理。require()方法会将路径转为文件系统里的绝对路径,第三方依赖模块如果不是前两种情况,那么 Node.js 会依次查找 module.paths 列表中的目录是否存在。主要是从当前目录逐级向上查找 node_modules 目录。

    另外,模块与文件的映射还遵循以下规则,以require("module1")为例:

    如果查找目录下存在module1.js文件,那么这个文件就是最终加载的文件如果查找目录下存在module1子目录,且该子目录下存在index.js文件,那么这个index.js文件就是最终加载的文件如果查找目录下存在module1子目录,且该目录下存在一个 package.json 文件,该 JSON 对象上存在一个 main 属性,那么这个 main 属性的值就是最终加载的文件的路径。Loading

    Resolving阶段找到模块的文件之后,Loading阶段负责加载该模块的内容。除了一般的JS模块,NodeJS还支持其他几类文件模块。

    这几类件模块以后缀来区分,Node.js会根据后缀名来决定加载方法。

    .js。通过fs模块同步读取js文件并编译执行。.node。通过C/C++进行编写的Addon。通过dlopen方法进行加载。.json。读取文件,调用JSON.parse解析加载。

    Wrapping

    Wrapping阶段主要实现两个功能:

    为每个模块提供各自隔离的作用域为每个模块注入I/F参数(require / module / exports)以及模块的自身信息(__filename 和 __dirname)

    Node.js 的具体做法是把我们模块的代码包裹在一个函数内,需要注入的信息则作为函数参数传递进来。

    以app.js为例,Wrapping之后的样子如下:

    (function (exports, require, module, __filename, __dirname) { //app.js source begin var sub = require('./sub.js'); console.log('App:' +); //app.js source end });

    Evaluating

    Evaluating这一步其实就是执行 Wapping阶段Warp 出来的函数,传入适当的参数。执行完成后,module.exports 上就是这个模块要对外部暴露的内容了。

    Caching

    最后的这个Caching阶段就是将加载完的模块缓存起来,当下次再一次 require 该模块时 Node.js 会直接返回缓存中的模块。

    Node.js 会将模块缓存在 require.cache 对象上。

  • ADFS(全称:Active Directory Federation Services,活动目录联合服务)是由微软自Windows Server 2003 R2起,在各个Server版本操作系统中提供的一个软件组件,其最新版本是集成在Windows Server 2012 R2的AD FS 3.0。

    简介

    ADFS使用基于Claims的访问控制验证模型来实现联合认证。它提供 Web 单一登录技术,这样只要在会话的有效期内,就可对一次性的对用户所访问的多个Web应用程序进行验证。

    我们可以将 ADFS 理解为组织域内与公网之外用户桥梁。我们编写的应用程序作为Internet服务在公网部署,当程序需要对域内的用户进行验证时,就可以委托 ADFS 服务器进行验证。 ADFS 服务提供了一个 AD FS 联合服务器代理,这类似于一个只提供了登录界面的应用程序,我们将相关域用户的验证过程委托给该程序进行处理,该程序将提示用户输入验证凭据(这可以是在浏览器中弹出登录提示框或跳转到一个登录页面的形式),随后其将所获取的凭据传递给AD FS联合身份验证服务。 AD FS 作为AD的一部分有权限(其拥有AD域管理员的权限)使用AD DS的标准方式认证一个域内的用户,如果认证成功,AD FS 将会依据应用程序预先设定的信息需求,以Claims的形式将安全令牌信息返还给我们的应用程序。


    关于Claims

    在基于Claims的联合身份验证的过程中,当身份验证提供方完成对于用户身份的验证,返还用户的相关信息时,其数据信息实体被称之为令牌(Token),其中的相关信息字段被称为声明(Claims)。令牌保证了用户身份的真实性,并包含了实用信息,其结构如下图所示。

    基于传统的开发方式,创建一个应用程序(即服务提供商)并保证多种身份验证机制可以协调工作并不是一件简单的工作。首先,我们需要决定对于特定的应用程序,哪一种身份验证技术最为合适。如果应用程序允许用户通过不同的方式进行访问,例如,允许同属一个组织下的域用户群体,或者跨越不同组织的多个域下的域用户群体,再或者同时允许这些域用户及传统的注册用户通过公网对应用程序进行访问,那么使用传统的单一的身份验证机制是完全不能满足这些需求的。在这些需求下,应用程序应该以直接经由用户所属的组织或系统处获取对应用户验证的结果。同时,也需要从一个AD目录服务或其它某处查询到用户相关的信息,并且保证这些信息可以在公网上,能够以统一的方式进行传递。
    基于Claims的身份验证(Claims-based identity)为我们提供了这种统一的身份验证方式,让不同的服务提供商可以通过公网,获得所需要的保存在用户所属组织内部的关于用户的验证信息。其基本流程如下图所示。

    首先,用户通过客户端(如浏览器),访问服务提供商(如图中①过程,相对于身份验证提供方也可以称其为信赖方RP)。信赖方向身份验证提供方提出验证请求(如图中②所示),身份验证提供方会要求用户输入登陆凭据(如用户名及验证码)。在通过其验证确认后,身份验证提供方会将验证成功的消息及该用户相关的数据信息以令牌的方式交还给信赖方(如图中③所示)。

    以我的站点与某第三方联合身份验证系统的验证流程为例,其过程也可以用如下的时序图阐明。

    如前所述,我们涉及到两个新的概念,依赖方与安全令牌服务。
    信赖方(RP,Relying Party)就相当于服务提供商,也就是由我们构建的依赖声明的应用程序(如我的网站)。信赖方有时也被称为“声明感知应用程序”或“基于声明的应用程序”。信赖方作为应用程序需要使用由安全令牌服务(STS)所颁发的令牌,并从令牌中提取声明,从而进行用户身份的验证和用户信息的获取。
    安全令牌服务(STS,Security Token Service),信赖方所使用的令牌的创建者就是安全令牌服务。它作为一个Web服务存在。STS可以由我们自行构建,也可以应用已有的实现,AD联合身份验证服务(AD FS)就是一个STS的实现。
    为了充分利用基于Claims的身份验证机制,我们将会使用由微软提供的用于支撑应用程序实现联合认证功能的可供依赖的基础架构。这些技术包括:AD联合身份验证服务(AD FS,Active Directory Federation Services),与Windows身份验证基础类库(WIF,Windows Identity Foundation)。

    关于WIF

    Windows身份验证基础类库(WIF,Windows Identity Foundation)是一组.NET Framework类,它为我们提供了实现基于声明标识的应用程序的基础框架。在具体的实现过程中,主要利用了其中的WSFederation Authentication Module(WS-FAM)HTTP模块。

    概念总结

    以上给出的相关概念层层递进,相似的概念在不同领域层次有着不同的称谓,为了方便理解,下面对这些概念的关系进行简单的总结。

    AD FS中的称谓SAML中的称谓概念简述Security Token 安全令牌Assertion 声明作为安全信息的封装,用于描述一个用户的信息,它在联合身份验证的访问请求期间被创建。Claims Provider 声明提供方Identity Provider (IdP) 身份验证提供方为用户创建安全令牌的联合身份认证程序。Relying Party 信赖方Service Provider (SP) 服务提供商收到联合身份验证服务信赖的请求并使用安全令牌的应用程序。Claims 声明Assertion attributes 属性声明在安全令牌中的关于用户的数据信息。

    下图对相关的领域结构进行了划分。

    (本文转载于Hendry's Blog)

  • 猕猴桃是追熟型水果,还没熟的情况和已经熟透的情况下,保存方法有所区别。


    如何判断熟没熟

    用手捏住猕猴桃的头部和尾部部,从上方和下方施力。

    如果感觉很硬,则说明猕猴桃还没熟,而如果感觉是比较软则说明已经熟了。

    室温保存

    未熟的猕猴适合于室温保存。室温保存的方法如下:

    用餐巾纸或报纸将猕猴桃一个个包好将包好的猕猴桃几个一起,放到塑料袋里,轻轻系好在袋子上开几个小孔常温保存

    常温(15度~20度)下猕猴桃大约能保存30天左右

    冷藏保存

    已熟的猕猴桃,适合于冷藏保存(0度的环境)。

    冷藏保存的方法与室温保存基本一样,将猕猴桃裹在报纸或餐巾纸上,放入塑料袋中,然后存放在冰箱里。
    但是,由于猕猴桃排放的乙烯气体会影响其他食品,因此如果您想长时间存放其他食品,请不要在装有猕猴桃的袋子上开孔。 冷藏保存下猕猴桃能保存大约两周左右。 冷冻保存

    猕猴桃不适合冷冻保存。

    如何判断变质

    猕猴桃变质后的一些基本特征:

    1. 外观

    局部变软变色

    2. 气味

    有酒味 要点总结 未熟的猕猴桃适合于室温保存已熟的猕猴桃适合于冷擦保存猕猴桃不适合于冷冻保存