Friday, February 28, 2014

[repost ]Best Practices for securing a REST API / web service

original:http://ift.tt/1j3cZt3 When designing a REST API or service are there any established best practices for dealing with security (Authentication, Authorization, Identity Management) ? When building a SOAP API you have WS-Security as a guide and much literature exists on the topic. I have found less information about securing REST endpoints. While I understand REST intentionally [...]



via WordPress http://ift.tt/1eFb35s

Labels:

[repost ]RESTful Authentication

original:http://ift.tt/1oaLyhL How to handle authentication in a RESTful Client-Server architecture is a matter of debate. Commonly, it can be achieved, in the SOA over HTTP world via: HTTP basic auth over HTTPS; Cookies and session management; Query Authentication with additional signature parameters. You’ll have to adapt, or even better mix those techniques, to match your [...]



via WordPress http://ift.tt/NbkNyz

Labels:

[repost ]Security of REST authentication schemes

original:http://ift.tt/1eF2vf0 Question: Background: I’m designing the authentication scheme for a REST web service. This doesn’t “really” need to be secure (it’s more of a personal project) but I want to make it as secure as possible as an exercise/learning experience. I don’t want to use SSL since I don’t want the hassle and, mostly, the [...]



via WordPress http://ift.tt/1eF2wQc

Labels:

[repost ]Android app tutorials

original:http://ift.tt/14AqBTL Building your first Android app This tutorial teaches you how to build your first Android app. You’ll learn how to create an Android project and run a debuggable version of the app. You’ll also learn some fundamentals of Android app design, including how to build a simple user interface and handle user input. Develop [...]



via WordPress http://ift.tt/NC0muu

Labels:

[repost ]Responsive CSS Framework Comparison

original:http://ift.tt/PcvTlE Bootstrap vs. Foundation vs. Skeleton Overview Bootstrap 3 Bootstrap 2 Foundation v5NEW Foundation v4 Foundation v3 Skeleton Summary Grids: Fluid UI tools: Lots of widgets; good for rapid prototyping History: Mobile-first update to the style guide for internal tools developed by Twitter Grids: Fluid and fixed UI tools: Lots of widgets; good for rapid [...]



via WordPress http://ift.tt/1eEHnFz

Labels:

[repost ]11 Reasons to Use Twitter Bootstrap

original:http://ift.tt/VbtJon The popularity of Twitter has helped it cross over from the realm of user-managed social networking to a place where developers sink their teeth into heavy duty code and make the world spin as a result. The Bootstrap framework is the latest innovation to hit the design and development arena, making the creation of [...]



via WordPress http://ift.tt/1eEHlxq

Labels:

[repost ]So long jQuery-UI, hello Bootstrap

original:http://ift.tt/1eEHlgV The way things were… The FeedHenry App Studio in its old form was built primarily on jQuery, jQuery-UI and numerous jQuery plugins. The main plugins used were Accordion, Tabs, Button, Dialog, jWizard, jqGrid and UI-Layout. On top of this, there was a tonne of custom CSS classes, id’s and styles. It was (and still [...]



via WordPress http://ift.tt/1eEHjWz

Labels:

[repost ]Twitter Bootstrap vs jQuery UI?

original:http://ift.tt/1eEHjFS I have on several projects. The biggest difference in my opinion jQuery UI is fallback safe, it works correctly and looks good in old browsers, where Boostrap is based on CSS3 which basically means GREAT in new browsers, not so great in old Update frequency: Boostrap is getting some great big updates with awesome [...]



via WordPress http://ift.tt/1eEHjFZ

Labels:

Thursday, February 27, 2014

[repost ]Bootstrap vs. Foundation

original:http://ift.tt/1a6vPZH Discussion



via WordPress http://ift.tt/1cei5ns

Labels:

Tuesday, February 25, 2014

[repost ]Guice vs. Spring – Round 3

original:http://ift.tt/1eiGmHU The recent Guice vs. Spring comparison has been focused on performance. Performance has already been debated, and stated to be of little significance, since most components assembled by a DI container are assembled at startup. Furthermore, if a DI container is used to assemble it, it is probably because it is complex. If the [...]



via WordPress http://ift.tt/1ev8FhR

Labels:

[repost ]Spring and google-guice Comparison

original:http://ift.tt/1eiGkzN Spring Comparison The Spring Framework, created by Rod Johnson, blazed the Java dependency injection trail. If not the first dependency injection framework, you can certainly credit Spring with pioneering much of what we know about dependency injection and bringing it into the mainstream. Guice might not exist (at least not this early) if not [...]



via WordPress http://ift.tt/1ev8FhG

Labels:

[repost ]Velocity User Guide

original:http://ift.tt/1ke99hh User Guide – Contents About this Guide What is Velocity? What can Velocity do for me? The Mud Store example Velocity Template Language (VTL): An Introduction Hello Velocity World! Comments References Variables Properties Methods Property Lookup Rules Formal Reference Notation Quiet Reference Notation Getting literal Currency Escaping Valid VTL References Case Substitution Directives Set [...]



via WordPress http://ift.tt/1he7KHF

Labels:

[project ]HtmlUnit

original:http://ift.tt/mSy6B4 HtmlUnit HtmlUnit is a “GUI-Less browser for Java programs”. It models HTML documents and provides an API that allows you to invoke pages, fill out forms, click links, etc… just like you do in your “normal” browser. It has fairly good JavaScript support (which is constantly improving) and is able to work even with [...]



via WordPress http://ift.tt/1he52lv

Labels:

Sunday, February 23, 2014

[repost ]Organizational Effectiveness Initiative:Tools and Templates

original:http://ift.tt/1pd0KOL Tools and Templates Assess the Organization Create the Strategy Implement the Plan Measure Your Success Evaluate, Adjust and Sustain Success OEI has compiled tools that you may find useful in your organizational strategic planning and improvement efforts. The tools are often times applicable to many different situations, but are organized according to phase you [...]



via WordPress http://ift.tt/1jZbmNn

Labels:

[repost ]How to Write a Strategic Plan for an Organization

original:http://ift.tt/1pd0HCP Strategic planning involves outlining an organization’s purpose, goals and the methods that will be used to accomplish those goals. As such, this plan is an integral part of an organization’s functioning, and it is important that the task of developing the plan is approached with serious consideration and attention to detail. Follow these steps [...]



via WordPress http://ift.tt/MQnvsY

Labels:

[repost ]neuralnetworks:java deep neural networks with gpu acceleration

original:http://ift.tt/1pcL0vi Deep Neural Networks with GPU support This is a Java implementation of some of the algorithms for training deep neural networks. GPU support is provided via the OpenCL and Aparapi. The architecture is designed with modularity, extensibility and pluggability in mind. Supported networks are Multi Layer Perceptron, Autoencoders, Restricted Boltzmann Machines, Convolutional (and subsampling) [...]



via WordPress http://ift.tt/1fcDzvm

Labels:

Thursday, February 20, 2014

[repost ]struts2和velocity整合问题

original:http://ift.tt/1h0oukQ 以下是我第一次使用velocity的时候写的 2012-03-12 话说struts真够懒的,都把velocity-1.6.4.jar放到他自己的lib里边了,就不给放全了,搞得新手太郁闷了。struts2想要用velocity模板需要如下几个包: velocity-1.7.jar velocity-tools-2.0.jar commons-collections-3.2.jar 然后只需要在web.xml中配置result type=velocity就可以了。 另外eclipse如果做web项目,必须把jar包引入到WEBINF目录下,如果是使用userlibraries的话,webapp容器无法识别.classpath文件中指定的classpath从而导致类未找见的异常。 以下是2013-04-18参加工作后发现的问题: 在实际工作中,发现不能在vm模板中使用tools.xml配置文件中定义的工具类。查了很久才发现需要在struts.xml中定义两个常量,来帮助struts寻找到tools.xml和velocity.properties的位置 web.xml 1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app id="WebApp_9" version="2.4" xmlns="http://ift.tt/qzwahU" 3 xmlns:xsi="http://ift.tt/ra1lAU" 4 xsi:schemaLocation="http://ift.tt/qzwahU http://ift.tt/16hRdKA"> 5 6 <display-name>Struts Blank</display-name> 7 8 <filter> 9 <filter-name>struts2</filter-name> 10 <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 11 </filter> 12 13 <filter-mapping> 14 <filter-name>struts2</filter-name> 15 <url-pattern>/*</url-pattern> 16 </filter-mapping> 17 <servlet> 18 <servlet-name>velocity</servlet-name> 19 <servlet-class>org.apache.velocity.tools.view.VelocityViewServlet</servlet-class> [...]



via WordPress http://ift.tt/1gLChfD

Labels:

[repost ]struts2整合velocity

original:http://ift.tt/OeiZpf web.xml文件: <?xml version=”1.0″ encoding=”UTF-8″?> <web-app version=”2.5″ xmlns=”http://ift.tt/Oej10s; xmlns:xsi=”http://ift.tt/OeiZph; xsi:schemaLocation=”http://ift.tt/nSRXKP http://ift.tt/1eXlgKs; <filter> <filter-name>Struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>Struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <servlet-name>velocity</servlet-name> <servlet-class> org.apache.velocity.tools.view.servlet.VelocityViewServlet </servlet-class> <init-param> <param-name>org.apache.velocity.toolbox</param-name> <param-value>/WEB-INF/toolbox.xml</param-value> </init-param> <init-param> <param-name> org.apache.velocity.properties </param-name> <param-value> /WEB-INF/velocity.properties </param-value> </init-param> <load-on-startup>10</load-on-startup> </servlet> <servlet-mapping> <servlet-name>velocity</servlet-name> <url-pattern>*.vm</url-pattern> </servlet-mapping> </web-app> struts.xml文件: <?xml version=”1.0″ encoding=”UTF-8″ ?> <!DOCTYPE struts PUBLIC “-//Apache Software Foundation//DTD Struts [...]



via WordPress http://ift.tt/1eXlgu6

Labels:

Monday, February 17, 2014

[repost ]Picking a Javascript framework isn’t about preference. It’s about what best fits your project.

original:http://ift.tt/1g7xjrg You’ve got the perfect idea for a JavaScript-based application or website. Now all you have to do is pick the right open source framework. If you’re reading this, I’m assuming that you’re a beginner or novice developer, or else you’re hiring somebody else to develop your idea for you. But while you’ve probably heard [...]



via WordPress http://ift.tt/1gv1fQ9

Labels:

[repost ]Why AngularJS is generally better in Angular vs Ember vs backbone

original:http://ift.tt/1bdi2r6 “Angular vs. Ember vs. Backbone” generally turns into a war in most of the discussion forums. But in my personal opinion, the emphasis should be on “what kind of application you are developing” that brings us to the question “Angular, Ember or Backbone, which one is better?” Because all of them have their own [...]



via WordPress http://ift.tt/1bXRtRX

Labels:

[repost ]High-level Javascript frameworks: Backbone vs. Ember vs. Knockout

original:http://ift.tt/1jvJBMc This is a very general introduction to MV* Javascript frameworks. This card won’t tell you anything new if you are already familiar with the products mentioned in the title. As web applications move farther into the client, Javascript frameworks have sprung up that operate on a higher level of abstraction than DOM manipulation frameworks [...]



via WordPress http://ift.tt/1bXRtl1

Labels:

[repost ]Frameworkless JavaScript

original:http://ift.tt/1eKhgmQ Why Angular, Ember, or Backbone don’t work for us Moot is a special discussion platform with ambitious goals. While the server side is fanatically optimized for performance, the client has its own goals: simple API, small size, and quick release cycle. The code is written from scratch and is split into more than 50 [...]



via WordPress http://ift.tt/1oGP3jb

Labels:

Saturday, February 15, 2014

[repost ]Updated Comparison of Data Visualization tools

original:http://ift.tt/MVEPMV One of the most popular posts on this blog was a comparison of Data Visualization Tools, which originally was posted more then a year ago where I compared those best tools only qualitatively. However since then I got a lot of requests to compare those tools “quantitatively”. Justification for such update were recent releases [...]



via WordPress http://ift.tt/1c90FGk

Labels:

Friday, February 14, 2014

[repost ]Cocos2dx or Unity for cross platform 2D development

original:http://ift.tt/1eVDpOP Hello all. I just had a look at Unity 4.3 2D tools and Cocos2d-x. I have been using cocos2d-iPhone and Sprite Kit for a while now. While both of them are wonderful, i like the prospect of being able to develop for multiple platforms at once. But i’m really very confused about which one [...]



via WordPress http://ift.tt/1eVDiTe

Labels:

Thursday, February 13, 2014

[repost ]分布式机器学习的故事

original:http://ift.tt/1mGbx2G 从毕业加入Google开始做分布式机器学习,到后来转战腾讯广告业务,至今已经七年了。我想说说我见到的故事和我自己的实践经历。这段经历给我的感觉是:虽然在验证一个新的并行算法的正确性的时候,我们可以利用现有框架,尽量快速实现,但是任何一个有价值的机器学习思路,都值得拥有自己独特的架构。所以重点在有一个分布式操作系统,方便大家开发自己需要的架构(框架),来支持相应的算法。如果你关注大数据,听完我说的故事,应该会有感触。 大数据和分布式机器学习 特点 说故事之前,先提纲挈领的描述一下我们要解决的问题的特点。我见过的有价值的大规模机器学习系统,基本都有三个特点: 可扩展。可扩展的意思是“投入更多的机器,能处理更大的数据”。而传统的并行计算要的是:“投入更多机器,数据大小不变,计算速度更快”。这是我认识中“大数据”和传统并行计算研究目标不同的地方。如果只是求速度快,那么multicore和GPU会比分布式机器学习的ROI更高。 有一个框架(比如MPI或者MapReduce或者自己设计的),支持fault recovery。Fault recovery是可扩展的基础。现代机群系统都是很多用户公用的,其中任何一个进程都有可能被更高优先级的进程preempted。一个job涉及数千个进程(task processes),十分钟里一个进程都不挂的概率很小。而如果一个进程挂了,其他进程都得重启,那么整个计算任务可能永远都不能完成。 数学模型要根据架构和数据做修改。这里有两个原因: 因为大数据基本都是长尾分布的,而papers里的模型基本都假设数据是指数分布的(想想用SVD做component analysis其实假设了Gaussian distributed,latent Dirichlet allocation假设了multimonial distribution。)。真正能处理大数据的数学模型,都需要能更好的描述长尾数据。否则,模型训练就是忽视长尾,而只关注从“大头”数据部分挖掘“主流”patterns了。 很多机器学习算法(比如MCMC)都不适合并行化。所以往往需要根据模型的特点做一些算法的调整。有时候会是approximation。比如AD-LDA算法是一种并行Gibbs sampling算法,但是只针对LDA模型有效,对其他大部分模型都不收敛,甚至对LDA的很多改进模型也不收敛。 引入更多机器的首要目的不是提升性能,而是能处理更大的数据。用更多的机器,处理同样大小的数据,期待speedup提高——这是传统并行计算要解决的问题——是multicore、SMP、MPP、GPU还是Beowolf cluster上得分布式计算不重要。在大数据情况下,困难点在问题规模大,数据量大。此时,引入更多机器,是期待能处理更大数据,总时间消耗可以不变甚至慢一点。分布式计算把数据和计算都分不到多台机器上,在存储、I/O、通信和计算上都要消除瓶颈。 上述三个特点,会在实践中要求“一个有价值的算法值得也应该有自己独特的框架”。 概念 在开始说故事之前,先正名几个概念:Message Passing和MapReduce是两个有名的并行程序编程范式(paradigm),也就是说,并行程序应该怎么写都有规范了——只需要在预先提供的框架(framework)程序里插入一些代码,就能得到自己的并行程序。Message Passing范式的一个框架叫做MPI。MapReduce范式的框架也叫MapReduce。而MPICH2和Apache Hadoop分别是这MPI和MapReduce两个框架的实现(implementations)。另一个本文会涉及的MapReduce实现是我用C++写的MapReduce Lite。后面还会提到BSP范式,它的一个著名的实现是Google Pregel。 MPI这个框架很灵活,对程序结构几乎没有太多约束,以至于大家有时把MPI称为一组接口(interface)——MPI的I就是interface的意思。 这里,MPICH2和Hadoop都是很大的系统——除了实现框架(允许程序员方便的编程),还实现了资源管理和分配,以及资源调度的功能。这些功能在Google的系统里是分布式操作系统负责的,而Google MapReduce和Pregel都是在分布式操作系统基础上开发的,框架本身的代码量少很多,并且逻辑清晰易于维护。当然Hadoop已经意识到这个问题,现在有了YARN操作系统。(YARN是一个仿照UC Berkeley AMPLab的Mesos做的系统。关于这个“模仿”,又有另一个故事。) 分布式机器学习的故事 pLSA和MPI:大数据的首要目标是“大”而不是“快” 我2007年毕业后加入Google做研究。我们有一个同事叫张栋,他的工作涉及pLSA模型的并行化。这个课题很有价值,因为generalized matrix decomposition实际上是collaborative filtering的generalization,是用户行为分析和文本语义理解的共同基础。几年后的今天,我们都知道这是搜索、推荐和广告这三大互联网平台产品的基础。 当时的思路是用MPI来做并行化。张栋和宿华合作,开发一套基于MPI的并行pLSA系统。MPI是1980年代流行的并行框架,进入到很多大学的课程里,熟悉它的人很多。MPI这个框架提供了很多基本操作:除了点对点的Send, Recv,还有广播Bdcast,甚至还有计算加通信操作,比如AllReduce。 MPI很灵活,描述能力很强。因为MPI对代码结构几乎没有什么限制——任何进程之间可以在任何时候通信——所以很多人不称之为框架,而是称之为“接口”。 但是Google的并行计算环境上没有MPI。当时一位叫白宏杰的工程师将MPICH2移植到了Google的分布式操作系统上。具体的说,是重新实现MPI里的Send, Recv等函数,调用分布式操作系统里基于HTTP RPC的通信API。 MPI的AllReduce操作在很多机器学习系统的开发里都很有用。因为很多并行机器学习系统都是各个进程分别训练模型,然后再合适的时候(比如一个迭代结束的时候)大家对一下各自的结论,达成共识,然后继续迭代。这个“对一下结论,达成共识”的过程,往往可以通过AllReduce来完成。 如果我们关注一下MPI的研究,可以发现曾经有很多论文都在讨论如何高效实现AllReduce操作。比如我2008年的博文里提到一种当时让我们都觉得很聪明的一种算法。这些长年累月的优化,让MPICH2这样的系统的执行效率(runtime efficiency)非常出色。 基于MPI框架开发的pLSA模型虽然效率高,并且可以处理相当大的数据,但是还是不能处理Google当年级别的数据。原因如上节『概念』中所述——MPICH2没有自动错误恢复功能,而且MPI这个框架定义中提供的编程灵活性,让我们很难改进框架,使其具备错误恢复的能力。 具体的说,MPI允许进程之间在任何时刻互相通信。如果一个进程挂了,我们确实可以请分布式操作系统重启之。但是如果要让这个“新生”获取它“前世”的状态,我们就需要让它从初始状态开始执行,接收到其前世曾经收到的所有消息。这就要求所有给“前世”发过消息的进程都被重启。而这些进程都需要接收到他们的“前世”接收到过的所有消息。这种数据依赖的结果就是:所有进程都得重启,那么这个job就得重头做。 一个job哪怕只需要10分钟时间,但是这期间一个进程都不挂的概率很小。只要一个进程挂了,就得重启所有进程,那么这个job就永远也结束不了了。 虽然我们很难让MPI框架做到fault recovery,我们可否让基于MPI的pLSA系统支持fault recovery呢?原则上是可以的——最简易的做法是checkpointing——时不常的把有所进程接收到过的所有消息写入一个分布式文件系统(比如GFS)。或者更直接一点:进程状态和job状态写入GFS。Checkpointing是下文要说到的Pregel框架实现fault [...]



via WordPress http://ift.tt/MQhegD

Labels:

[repost ]统计模型之间的比较,HMM,最大熵模型,CRF条件随机场

original:http://ift.tt/1evdJm1 HMM模型将标注看作马尔可夫链,一阶马尔可夫链式针对相邻标注的关系进行建模,其中每个标记对应一个概率函数。HMM是一种生成模型,定义了联 合概率分布 ,其中x和y分别表示观察序列和相对应的标注序列的随机变量。为了能够定义这种联合概率分布,生成模型需要枚举出所有可能的观察序列,这在实际运算过程中很困难,因为我们需要将观察序列的元素看做是彼此孤立的个体即假设每个元素彼此独立,任何时刻的观察结果只依赖于该时刻的状态。 HMM模 型的这个假设前提在比较小的数据集上是合适的,但实际上在大量真实语料中观察序列更多的是以一种多重的交互特征形式表现,观察元素之间广泛存在长程相关性。在命名实体识别的任务中,由于实体本身结构所具有的复杂性,利用简单的特征函数往往无法涵盖所有的特性,这时HMM的假设前提使得它无法使用复杂特征 (它无法使用多于一个标记的特征。 最大熵模型可以使用任意的复杂相关特征,在性能上最大熵分类器超过了Byaes分类器。但是,作为一种分类器模型,这两种方法有一个共同的缺点:每个词都是单独进行分类的,标记之间的关系无法得到充分利用,具有马尔可夫链的HMM模型可以建立标记之间的马尔 可夫关联性,这是最大熵模型所没有的。 最大熵模型的优点:首先,最大熵统计模型获得的是所有满足约束条件的模型中信息熵极大的模型;其次,最大熵统计模型可以灵活地设置约束条件,通过约束条件的多少可以调节模型对未知数据的适应度和对已知数据的拟合程度;再次,它还能自然地解决了统计模型中参数平滑的问题。 最大熵模型的不足:首先,最大熵统计模型中二值化特征只是记录特征的出现是否,而文本分类需要知道特征的强度,因此,它在分类方法中不是最优的;其次,由于算法收敛的速度较慢,所以导致最大熵统计模型它的计算代价较大,时空开销大;再次,数据稀疏问题比较严重。 最大熵马尔科夫模型把HMM模型和maximum-entropy模型的优点集合成一个生成模型,这个模型允许状态转移概率依赖于序列中彼此之间非独立的 特征上,从而将上下文信息引入到模型的学习和识别过程中,提高了识别的精确度,召回率也大大的提高,有实验证明,这个新的模型在序列标注任务上表现的比 HMM和无状态的最大熵模型要好得多。 CRF模型的特点:首先,CRF在给定了观察序列的情况下,对整个的序列的联合概率有一个统一的指 数模型。一个比较吸引人的特性是其 损失函数 的凸面性。其次,条件随机域模型相比较改进的隐马尔可夫模型可以更好更多的利用待识别文本中所提供的上下文信息以得更好的实验结果。条件随机域在中文组块 识别方面有效,并避免了严格的独立性假设和数据归纳偏置问题。条件随机域(CRF)模型应用到了中文名实体识别中,并且根据中文的特点,定义了多种特征模 板。并且有测试结果表明:在采用相同特征集合的条件下,条件随机域模型较其他概率模型有更好的性能表现。再次,词性标注主要面临兼类词消歧以及未知词标注 的难题,传统隐马尔科夫方法不易融合新特征,而最大熵马尔科夫模型存在标注偏置等问题。论文引入条件随机域建立词性标注模型,易于融合新的特征,并能解决 标注偏置的问题。 CRFs具有很强的推理能力,并且能够使用复杂、有重叠性和非独立的特征进行训练和推理,能够充分地利用上下文信息作为特征,还可以任意地添加其他外部特征,使得模型能 够 获取的信息非常丰富。同时,CRFs解决了最大熵模型中的“label bias”问题。CRFs与最大熵模型的本质区别是:最大熵模型在每个状态都有一个概率模型,在每个状态转移时都要进行归一化。如果某个状态只有一个后续 状态,那么该状态到后续状态的跳转概率即为1。这样,不管输入为任何内容,它都向该后续状态跳转。而CRFs是在所有的状态上建立一个统一的概率模型,这 样在进行归一化时,即使某个状态只有一个后续状态,它到该后续状态的跳转概率也不会为1,从而解决了“labelbias”问题。因此,从理论上 讲,CRFs非常适用于中文的词性标注。 CRF模型的优点:首先,CRF模型由于其自身在结合多种特征方面的优势和避免了标记偏置问题。其次,CRF的性能更好,CRF对特征的融合能力比较强,对于实例较小的时间类ME来说,CRF的识别效果明显高于ME的识别结果。 CRF 模型的不足:首先,通过对基于CRF的结合多种特征的方法识别英语命名实体的分析,发现在使用CRF方法的过程中,特征的选择和优化是影响结果的关键因 素,特征选择问题的好与坏,直接决定了系统性能的高低。其次,训练模型的时间比ME更长,且获得的模型很大,在一般的PC机上无法运行。



via WordPress http://ift.tt/1mcp6t5

Labels:

[repost ]语音开源软件研究

original:http://ift.tt/1mcp6cx



via WordPress http://ift.tt/1evdHdQ

Labels:

[repost ]语音识别系统kaldi—-实例说明

original:http://ift.tt/1evaY42 最近一直在折腾kaldi,在这个庞大的系统面前,自己是那么的微小。由于数据库的原因,我只能运行kaldi所给例子的一部分。下面就来说说最近的进展吧。 第一个例子就是yesno这个例子。由于提供数据,而且数据比较小,可以非常容易的去实现这个例子。具体的可以见我之前的博客:语音识别工具箱之kaldi介绍。 第二个例子是rm里面的s4。具体的步骤也很简单,首先运行./getdata.sh,然后运行run.sh。贴下最后的结果: exp/tri2a/decode/wer_10:%WER 6.48 [ 368 / 5681, 47 ins, 91 del, 230 sub ] exp/tri2a/decode/wer_4:%WER 6.51 [ 370 / 5681, 88 ins, 47 del, 235 sub ] exp/tri2a/decode/wer_5:%WER 6.39 [ 363 / 5681, 79 ins, 53 del, 231 sub ] exp/tri2a/decode/wer_6:%WER 6.48 [ 368 / 5681, 73 ins, 62 del, 233 sub [...]



via WordPress http://ift.tt/1lIrXWZ

Labels:

[repost ]CMUSphinx Wiki

original:http://ift.tt/1evaWt0 This page contains collaboratively developed documentation for the CMU Sphinx speech recognition engines. Start User Documentation This section contains links to documents which describe how to use Sphinx to recognize speech. Currently, we have very little in the way of end-user tools, so it may be a bit sparse for the forseeable future. CMUSphinx [...]



via WordPress http://ift.tt/1gaNiqp

Labels:

[repost ]CMU Sphinx:Open Source Toolkit For Speech Recognition

original:http://ift.tt/11QrWVL Public Release of the OpenDial Toolkit Published on February 3, 2014 It is not easy to build an intelligent software, the cooperation on all the levels of the speech processing needs to be tight. For example, you should not only recognize the input but also understand it and, more importantly, respond to it. You [...]



via WordPress http://ift.tt/1bOZUyZ

Labels:

[project ]The Hidden Markov Model Toolkit (HTK) is a portable toolkit for building and manipulating hidden Markov models.

original:http://ift.tt/Lh4475 What is HTK? The Hidden Markov Model Toolkit (HTK) is a portable toolkit for building and manipulating hidden Markov models. HTK is primarily used for speech recognition research although it has been used for numerous other applications including research into speech synthesis, character recognition and DNA sequencing. HTK is in use at hundreds of [...]



via WordPress http://ift.tt/1bOZUyQ

Labels:

Saturday, February 08, 2014

[repost ]HttpClient 教程 (四) HTTP认证

original:http://ift.tt/1eEkMP3 第四章 HTTP认证 HttpClient提供对由HTTP标准规范定义的认证模式的完全支持。HttpClient的认证框架可以扩展支持非标准的认证模式,比如NTLM和SPNEGO。 4.1 用户凭证 任何用户身份验证的过程都需要一组可以用于建立用户身份的凭据。用户凭证的最简单的形式可以仅仅是用户名/密码对。UsernamePasswordCredentials代表了一组包含安全规则和明文密码的凭据。这个实现对由HTTP标准规范中定义的标准认证模式是足够的 UsernamePasswordCredentials creds = new UsernamePasswordCredentials(“user”, “pwd”); System.out.println(creds.getUserPrincipal().getName()); System.out.println(creds.getPassword()); 输出内容为: user pwd NTCredentials是微软Windows指定的实现,它包含了除了用户名/密码对外,一组额外的Windows指定的属性,比如用户域名的名字,比如在微软的Windows网络中,相同的用户使用不同设置的认证可以属于不同的域。 NTCredentials creds = new NTCredentials(“user”, “pwd”, “workstation”, “domain”); System.out.println(creds.getUserPrincipal().getName()); System.out.println(creds.getPassword()); 输出内容为: DOMAIN/user pwd 4.2 认证模式 AuthScheme接口代表了抽象的,面向挑战-响应的认证模式。一个认证模式期望支持如下的功能: 解析和处理由目标服务器在对受保护资源请求的响应中发回的挑战。 提供处理挑战的属性:认证模式类型和它的参数,如果可用,比如这个认证模型可应用的领域。 对给定的凭证组和HTTP请求对响应真实认证挑战生成认证字符串。 要注意认证模式可能是有状态的,涉及一系列的挑战-响应交流。HttpClient附带了一些AuthScheme实现: Basic(基本):Basic认证模式定义在RFC 2617中。这个认证模式是不安全的,因为凭据以明文形式传送。尽管它不安全,如果用在和TLS/SSL加密的组合中,Basic认证模式是完全够用的。 Digest(摘要):Digest认证模式定义在RFC 2617中。Digest认证模式比Basic有显著的安全提升,对不想通过TLS/SL加密在完全运输安全上开销的应用程序来说也是很好的选择。 NTLM:NTLM是一个由微软开发的优化Windows平台的专有认证模式。NTLM被认为是比Digest更安全的模式。这个模式需要外部的NTLM引擎来工作。要获取更多详情请参考包含在HttpClient发布包中的NTLM_SUPPORT.txt文档。 4.3 HTTP认证参数 有一些可以用于定制HTTP认证过程和独立认证模式行为的参数: ‘http.protocol.handle-authentication’:定义了是否认证应该被自动处理。这个参数期望的得到一个java.lang.Boolean类型的值。如果这个参数没有被设置,HttpClient将会自动处理认证。 ‘http.auth.credential-charset’:定义了当编码用户凭证时使用的字符集。这个参数期望得到一个java.lang.String类型的值。如果这个参数没有被设置,那么就会使用US-ASCII。 4.4 认证模式注册表 HttpClient使用AuthSchemeRegistry类维护一个可用的认证模式的注册表。对于每个默认的下面的模式是注册过的: Basic:基本认证模式 Digest:摘要认证模式 请注意NTLM模式没有对每个默认的进行注册。NTLM不能对每个默认开启是应为许可和法律上的原因。要获取更详细的关于如何开启NTLM支持的内容请看这部分。 [...]



via WordPress http://ift.tt/1iJw5Ed

Labels:

[repost ]HttpClient 教程 (三) HTTP状态管理

original:http://ift.tt/1iJtiuJ 第三章 HTTP状态管理 原始的HTTP是被设计为无状态的,面向请求/响应的协议,没有特殊规定有状态的,贯穿一些逻辑相关的请求/响应交换的会话。由于HTTP协议变得越来越普及和受欢迎,越来越多的从前没有打算使用它的系统也开始为应用程序来使用它,比如作为电子商务应用程序的传输方式。因此,支持状态管理就变得非常必要了。 网景公司,一度成为Web客户端和服务器软件开发者的领导方向,在它们基于专有规范的产品中实现了对HTTP状态管理的支持。之后,网景公司试图通过发布规范草案来规范这种机制。它们的努力通过RFC标准跟踪促成了这些规范定义。然而,在很多应用程序中的状态管理仍然基于网景公司的草案而不兼容官方的规范。很多主要的Web浏览器开发者觉得有必要保留那些极大促进标准片段应用程序的兼容性。 3.1 HTTP cookies Cookie是HTTP代理和目标服务器可以交流保持会话的状态信息的令牌或短包。网景公司的工程师用它来指“魔法小甜饼”和粘住的名字。 HttpClient使用Cookie接口来代表抽象的cookie令牌。在它的简单形式中HTTP的cookie几乎是名/值对。通常一个HTTP的cookie也包含一些属性,比如版本号,合法的域名,指定cookie应用所在的源服务器URL子集的路径,cookie的最长有效时间。 SetCookie接口代表由源服务器发送给HTTP代理的响应中的头部信息Set-Cookie来维持一个对话状态。SetCookie2接口和指定的Set-Cookie2方法扩展了SetCookie。 SetCookie接口和额外的如获取原始cookie属性的能力,就像它们由源服务器指定的客户端特定功能扩展了Cookie接口。这对生成Cookie头部很重要,因为一些cookie规范需要。Cookie头部应该包含在Set-Cookie或Set-Cookie2头部中指定的特定属性。 3.1.1 Cookie版本 Cookie兼容网景公司的草案标准,但是版本0被认为是不符合官方规范的。符合标准的cookie的期望版本是1。HttpClient可以处理基于不同版本的cookie。 这里有一个重新创建网景公司草案cookie示例: BasicClientCookie netscapeCookie = new BasicClientCookie(“name”, “value”); netscapeCookie.setVersion(0); netscapeCookie.setDomain(“.mycompany.com”); netscapeCookie.setPath(“/”); 这是一个重新创建标准cookie的示例。要注意符合标准的cookie必须保留由源服务器发送的所有属性: BasicClientCookie stdCookie = new BasicClientCookie(“name”, “value”); stdCookie.setVersion(1); stdCookie.setDomain(“.mycompany.com”); stdCookie.setPath(“/”); stdCookie.setSecure(true); // 精确设置由服务器发送的属性 stdCookie.setAttribute(ClientCookie.VERSION_ATTR, “1″); stdCookie.setAttribute(ClientCookie.DOMAIN_ATTR, “.mycompany.com”); 这是一个重新创建Set-Cookie2兼容cookie的实例。要注意符合标准的cookie必须保留由源服务器发送的所有属性: BasicClientCookie2 stdCookie = new BasicClientCookie2(“name”, “value”); stdCookie.setVersion(1); stdCookie.setDomain(“.mycompany.com”); stdCookie.setPorts(new int[] {80,8080}); stdCookie.setPath(“/”); [...]



via WordPress http://ift.tt/NmJJU2

Labels:

[repost ]HttpClient 教程 (二) 连接管理

original:http://ift.tt/1iJtiep 第二章 连接管理 HttpClient有一个对连接初始化和终止,还有在活动连接上I/O操作的完整控制。而连接操作的很多方面可以使用一些参数来控制。 2.1 连接参数 这些参数可以影响连接操作: ‘http.socket.timeout’:定义了套接字的毫秒级超时时间(SO_TIMEOUT),这就是等待数据,换句话说,在两个连续的数据包之间最大的闲置时间。如果超时时间是0就解释为是一个无限大的超时时间。这个参数期望得到一个java.lang.Integer类型的值。如果这个参数没有被设置,那么读取操作就不会超时(无限大的超时时间)。 ‘http.tcp.nodelay’:决定了是否使用Nagle算法。Nagle算法视图通过最小化发送的分组数量来节省带宽。当应用程序希望降低网络延迟并提高性能时,它们可以关闭Nagle算法(也就是开启TCP_NODELAY)。数据将会更早发送,增加了带宽消耗的成文。这个参数期望得到一个java.lang.Boolean类型的值。如果这个参数没有被设置,那么TCP_NODELAY就会开启(无延迟)。 ‘http.socket.buffer-size’:决定了内部套接字缓冲使用的大小,来缓冲数据同时接收/传输HTTP报文。这个参数期望得到一个java.lang.Integer类型的值。如果这个参数没有被设置,那么HttpClient将会分配8192字节的套接字缓存。 ‘http.socket.linger’:使用指定的秒数拖延时间来设置SO_LINGER。最大的连接超时值是平台指定的。值0暗示了这个选项是关闭的。值-1暗示了使用了JRE默认的。这个设置仅仅影响套接字关闭操作。如果这个参数没有被设置,那么就假设值为-1(JRE默认)。 ‘http.connection.timeout’:决定了直到连接建立时的毫秒级超时时间。超时时间的值为0解释为一个无限大的时间。这个参数期望得到一个java.lang.Integer类型的值。如果这个参数没有被设置,连接操作将不会超时(无限大的超时时间)。 ‘http.connection.stalecheck’:决定了是否使用旧的连接检查。当在一个连接之上执行一个请求而服务器端的连接已经关闭时,关闭旧的连接检查可能导致在获得一个I/O错误风险时显著的性能提升(对于每一个请求,检查时间可以达到30毫秒)。这个参数期望得到一个java.lang.Boolean类型的值。出于性能的关键操作,检查应该被关闭。如果这个参数没有被设置,那么旧的连接将会在每个请求执行之前执行。 ‘http.connection.max-line-length’:决定了最大请求行长度的限制。如果设置为一个正数,任何HTTP请求行超过这个限制将会引发java.io.IOException异常。负数或零将会关闭这个检查。这个参数期望得到一个java.lang.Integer类型的值。如果这个参数没有被设置,那么就不强制进行限制了。 ‘http.connection.max-header-count’:决定了允许的最大HTTP头部信息数量。如果设置为一个正数,从数据流中获得的HTTP头部信息数量超过这个限制就会引发java.io.IOException异常。负数或零将会关闭这个检查。这个参数期望得到一个java.lang.Integer类型的值。如果这个参数没有被设置,那么就不 强制进行限制了。 ‘http.connection.max-status-line-garbage’:决定了在期望得到HTTP响应状态行之前可忽略请求行的最大数量。使用HTTP/1.1持久性连接,这个问题产生的破碎的脚本将会返回一个错误的Content-Length(有比指定的字节更多的发送)。不幸的是,在某些情况下,这个不能在错误响应后来侦测,只能在下一次之前。所以HttpClient必须以这种方式跳过那些多余的行。这个参数期望得到一个java.lang.Integer类型的值。0是不允许在状态行之前的所有垃圾/空行。使用java.lang.Integer#MAX_VALUE来设置不限制的数字。如果这个参数没有被设置那就假设是不限制的。 2.2 持久连接 从一个主机向另外一个建立连接的过程是相当复杂的,而且包含了两个终端之间的很多包的交换,它是相当费时的。连接握手的开销是很重要的,特别是对小量的HTTP报文。如果打开的连接可以被重用来执行多次请求,那么就可以达到很高的数据吞吐量。 HTTP/1.1强调HTTP连接默认情况可以被重用于多次请求。HTTP/1.0兼容的终端也可以使用相似的机制来明确地交流它们的偏好来保证连接处于活动状态,也使用它来处理多个请求。HTTP代理也可以保持空闲连接处于一段时间的活动状态,防止对相同目标主机的一个连接也许对随后的请求需要。保持连接活动的能力通常被称作持久性连接。HttpClient完全支持持久性连接。 2.3 HTTP连接路由 HttpClient能够直接或通过路由建立连接到目标主机,这会涉及多个中间连接,也被称为跳。HttpClient区分路由和普通连接,通道和分层。通道连接到目标主机的多个中间代理的使用也称作是代理链。 普通路由由连接到目标或仅第一次的代理来创建。通道路由通过代理链到目标连接到第一通道来建立。没有代理的路由不是通道的,分层路由通过已存在连接的分层协议来建立。协议仅仅可以在到目标的通道上或在没有代理的直接连接上分层。 2.3.1 路由计算 RouteInfo接口代表关于最终涉及一个或多个中间步骤或跳的目标主机路由的信息。HttpRoute是RouteInfo的具体实现,这是不能改变的(是不变的)。HttpTracker是可变的RouteInfo实现,由HttpClient在内部使用来跟踪到最大路由目标的剩余跳数。HttpTracker可以在成功执行向路由目标的下一跳之后更新。HttpRouteDirector是一个帮助类,可以用来计算路由中的下一跳。这个类由HttpClient在内部使用。 HttpRoutePlanner是一个代表计算到基于执行上下文到给定目标完整路由策略的接口。HttpClient附带两个默认的HttpRoutePlanner实现。ProxySelectorRoutePlanner是基于java.net.ProxySelector的。默认情况下,它会从系统属性中或从运行应用程序的浏览器中选取JVM的代理设置。DefaultHttpRoutePlanner实现既不使用任何Java系统属性,也不使用系统或浏览器的代理设置。它只基于HTTP如下面描述的参数计算路由。 2.3.2 安全HTTP连接 如果信息在两个不能由非认证的第三方进行读取或修改的终端之间传输,HTTP连接可以被认为是安全的。SSL/TLS协议是用来保证HTTP传输安全使用最广泛的技术。而其它加密技术也可以被使用。通常来说,HTTP传输是在SSL/TLS加密连接之上分层的。 2.4 HTTP路由参数 这些参数可以影响路由计算: ‘http.route.default-proxy’:定义可以被不使用JRE设置的默认路由规划者使用的代理主机。这个参数期望得到一个HttpHost类型的值。如果这个参数没有被设置,那么就会尝试直接连接到目标。 ‘http.route.local-address’:定义一个本地地址由所有默认路由规划者来使用。有多个网络接口的机器中,这个参数可以被用于从连接源中选择网络接口。这个参数期望得到一个java.net.InetAddress类型的值。如果这个参数没有被设置,将会自动使用本地地址。 ‘http.route.forced-route’:定义一个由所有默认路由规划者使用的强制路由。代替了计算路由,给定的强制路由将会被返回,尽管它指向一个完全不同的目标主机。这个参数期望得到一个HttpRoute类型的值。如果这个参数没有被设置,那么就使用默认的规则建立连接到目标服务器。 2.5 套接字工厂 LayeredSocketFactory是SocketFactory接口的扩展。分层的套接字工厂可HTTP连接内部使用java.net.Socket对象来处理数据在线路上的传输。它们依赖SocketFactory接口来创建,初始化和连接套接字。这会使得HttpClient的用户可以提供在运行时指定套接字初始化代码的应用程序。PlainSocketFactory是创建和初始化普通的(不加密的)套接字的默认工厂。 创建套接字的过程和连接到主机的过程是不成对的,所以套接字在连接操作封锁时可以被关闭。 PlainSocketFactory sf = PlainSocketFactory.getSocketFactory(); Socket socket = sf.createSocket(); HttpParams params = new BasicHttpParams(); [...]



via WordPress http://ift.tt/1lgimq3

Labels:

[repost ]HttpClient 教程 (一) 基础

original:http://ift.tt/1gYOhgs 前言 超文本传输协议(HTTP)也许是当今互联网上使用的最重要的协议了。Web服务,有网络功能的设备和网络计算的发展,都持续扩展了HTTP协议的角色,超越了用户使用的Web浏览器范畴,同时,也增加了需要HTTP协议支持的应用程序的数量。 尽管java.net包提供了基本通过HTTP访问资源的功能,但它没有提供全面的灵活性和其它很多应用程序需要的功能。HttpClient就是寻求弥补这项空白的组件,通过提供一个有效的,保持更新的,功能丰富的软件包来实现客户端最新的HTTP标准和建议。 为扩展而设计,同时为基本的HTTP协议提供强大的支持,HttpClient组件也许就是构建HTTP客户端应用程序,比如web浏览器,web服务端,利用或扩展HTTP协议进行分布式通信的系统的开发人员的关注点。 1. HttpClient的范围 基于HttpCore[http://ift.tt/1iJtiei 基于经典(阻塞)I/O 内容无关 2. 什么是HttpClient不能做的 HttpClient不是一个浏览器。它是一个客户端的HTTP通信实现库。HttpClient的目标是发送和接收HTTP报文。HttpClient不会去缓存内容,执行嵌入在HTML页面中的javascript代码,猜测内容类型,重新格式化请求/重定向URI,或者其它和HTTP运输无关的功能。 第一章 基础 1.1 执行请求 HttpClient最重要的功能是执行HTTP方法。一个HTTP方法的执行包含一个或多个HTTP请求/HTTP响应交换,通常由HttpClient的内部来处理。而期望用户提供一个要执行的请求对象,而HttpClient期望传输请求到目标服务器并返回对应的响应对象,或者当执行不成功时抛出异常。 很自然地,HttpClient API的主要切入点就是定义描述上述规约的HttpClient接口。 这里有一个很简单的请求执行过程的示例: HttpClient httpclient = new DefaultHttpClient(); HttpGet httpget = new HttpGet(“http://localhost/”); HttpResponse response = httpclient.execute(httpget); HttpEntity entity = response.getEntity(); if (entity != null) { InputStream instream = entity.getContent(); int l; byte[] tmp = new byte[2048]; [...]



via WordPress http://ift.tt/1lgijKU

Labels: