Mryqu's Notes


  • 首页

  • 搜索
close

数据科学的战争:R vs Python

时间: 2015-05-14   |   分类: DataScience     |   阅读: 10 字 ~1分钟
R和Python都是用于数据分析任务的流行编程语言,都有各自的拥拓者和反对者。Python经常作为语法简单易懂的通用编程语言广受赞誉。在人们心中,R的功能是由统计学家开发的,因此具有特定领域优势,例如数据可视化上具有的大量功能。 DataCamp上有一篇帖子Choosing R or Python for data analysis? An infographic以信息图的方式从数据科学和统计的角度详细对比了R和Python这两种编程语言。

了解构件仓库管理器Artifactory和Nexus

时间: 2015-05-13   |   分类: Tool     |   阅读: 30 字 ~1分钟
使用Maven,可以从Maven中央仓库下载所需要的构件(artifact),但这通常不是一个好的做法,一般是在企业内部架设一个Maven仓库服务器,在代理远程仓库的同时维护本地仓库,以节省带宽和时间。企业仓库管理器一般可以提供高并发访问、浏览和查询、报表、访问控制、备份、对其他仓库进行代理、RESTAPI等特性 了解一下构件仓库管理器,市场上最好的是JFrog的Artifactory和Sonatype的Nexus,而且这两个产品既有商业版也有免费社区版。 以Artifactory为例,Ant+Ivy、Maven和Gradle这些构建工具都可以自动下载Artifactory里的构件(artifact),此外Jenkins、Bamboo等CI工具也可以通过构建工具将生成的构件(artifact)部署到Artifactory上。 如果将构建结果部署到Artifactory,需要对Maven构建增加如下选项: deploy -DaltDeploymentRepository=snapshots::default::http://svcartifact.yqu.com:8081/artifactory/snapshots 如果将release构建结果部署到Artifactory,需要对Maven构建增加如下选项: deploy -DaltDeploymentRepository=release::default::http://svcartifact.yqu.com:8081/artifactory/release 或者在pom.xml中内嵌distributionManagement: 最近网上有一个不错的帖子 Maven Repository Manager Feature Matrix,对比了Archiva、Artifactory和Nexus的功能和价格,可供有需要做Maven仓库管理器技术选型的同学借鉴。 参考 JFrog Artifactory官网 Sonatype Nexus官网 Artifactory – 1 Min Setup Apache Maven Deploy Plugin

Swagger实践和总结

时间: 2015-05-11   |   分类: Service+JavaEE   Swagger     |   阅读: 72 字 ~1分钟
Swagger学习和实践 最近安装并使用了一下Swagger-ui、Swagger-editor和Swagger-codegen,感觉还不错。 Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web服务。Swagger的目标是对RESTAPI定义一个标准的和语言无关的接口,可让人和计算机无需访问源码、文档或网络流量监测就可以发现和理解服务的能力。当通过Swagger进行正确定义,用户可以理解远程服务并使用最少实现逻辑与远程服务进行交互。与为底层编程所实现的接口类似,Swagger消除了调用服务时可能会有的猜测。 Swagger是一组开源项目,其中主要要项目如下: Swagger-tools:提供各种与Swagger进行集成和交互的工具。例如模式检验、Swagger1.2文档转换成Swagger 2.0文档等功能。 Swagger-core:用于、Servlets和Play框架进行集成。 Swagger-js:用于JavaScript的Swagger实现。 Swagger-node-express:Swagger模块,用于node.js的Express web应用框架。 Swagger-ui:一个无依赖的HTML、JS和CSS集合,可以为Swagger兼容API动态生成优雅文档。 Swagger-codegen:一个模板驱动引擎,通过分析用户Swagger资源声明以各种语言生成客户端代码。 C:\tools\swagger-codegen>mvn package C:\tools\swagger-codegen\modules\swagger-codegen-cli>mvn package C:\tools\swagger-codegen\modules\swagger-generator>mvn package C:\tools\swagger-codegen>java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate -i http://petstore.swagger.io/v2/swagger.json -l spring-mvc -o yqu/petstore/spring-mvc C:\tools\swagger-codegen\yqu\petstore\spring-mvc>mvn package 上述操作通过底层使用SpringFox库,会创建带有Swagger注释的SpringMVC框架代码,包括Controller和DTO类。这样将Swagger-ui部署到Web应用内,就可以通过http://server:8002/v2/sdoc.jsp 在线访问API文档了。 Swagger-editor:可让使用者在浏览器里以YAML格式编辑SwaggerAPI规范并实时预览文档。可以生成有效的SwaggerJSON描述,并用于所有Swagger工具(代码生成、文档等等)中。 除了Swagger项目自身支持的Java、Scala和JavaScript语言,Swagger社区中还提供了很多支持其他语言的第三方工具,覆盖了Clojure、ColdFusion/ CFML、Eiffel、Go、Groovy、.Net、Perl、PHP、Python、Ruby等各种编程语言。 Swagger总结 Swagger这类API文档工具可以满足下列需求: 支持API自动生成同步的在线文档 这些文档可用于项目内部API审核 方便测试人员了解API 这些文档可作为客户产品文档的一部分进行发布 支持API规范生成代码,生成的客户端和服务器端骨架代码可以加速开发和测试速度 跟下列其他API文档工具相比,Swagger各有优缺点,但它功能最多、也是最流行的。 RESTful API Modeling Language (RAML) apiary的API Blueprint I/O Docs Web Application Description Language (WADL) 参考 Swagger官网 GitHub:Swagger Swagger规范 SpringFox官网 GitHub:SpringFox Spring Boot & Swagger UI

[Spring Boot] 访问JSP

时间: 2015-05-08   |   分类: Service+JavaEE   Spring     |   阅读: 30 字 ~1分钟
需求 我的Spring Boot web应用中用到了JSP,可是访问始终404。 @Controller public class TestController { @RequestMapping("/test") public String webapp(Map model) { return "WEB-INF/index.jsp"; } } 解决方案是增加tomcat-embed-jasper依赖,此外可选性地增加了jstl依赖。 Gradle dependencies { ...... // jsps providedRuntime ('org.apache.tomcat.embed:tomcat-embed-jasper') } Maven

定制Vagrant box主机

时间: 2015-05-07   |   分类: Tool   Vagrant     |   阅读: 26 字 ~1分钟
做个笔记,记录一下如何定制Vagrant box主机。 在Vagrantfile中通过一个Vagrant基础box定制box。 启动该定制box后,通过Vagrant package命令输出box文件 编写JSON格式的box元数据文件 将定制box文件及其元数据文件放到web服务器中 将此定制box作为基础box的Vagrantfile中,设置如下 config.vm.box用于匹配上述定制box的名称 config.vm.box_url为box文件的URL或box元数据文件的URL当config.vm.box_url为box文件的URL,该box文件即为基础box;当config.vm.box_url为box元数据文件的URL,可以使用config.vm.box指定名称的某一版本box文件(有config.vm.box_version参数,即使用其约束的特定版本;否则,使用最新版本box文件)作为基础box。 config.vm.box_version指定box的特定版本。 参考 Custom Vagrant Cloud Versioned Box Host Vagrant: CREATING A BASE BOX Vagrant: MACHINE SETTINGS

找不到TTY而导致的Vagrant destroy失败

时间: 2015-05-06   |   分类: Tool   Vagrant     |   阅读: 46 字 ~1分钟
在Windows的Git Bash上想要够过vagrant destroy命令删除一个Vagrant虚拟机,结果碰到了这个错误: Vagrant is attempting to interface with the UI in a way that requires a TTY. Most actions in Vagrant that require a TTY have configuration switches to disable this requirement. Please do that or run Vagrant with TTY. 据说Windows上的Cygwin以一种奇怪的方式处理stdin导致Ruby以为没有TTY,没想到Git Bash所基于的MinGW也有这样的问题。 权变措施是使用vagrant destroy --force。

遭遇由VT-x设置导致的vagrant up失败

时间: 2015-05-05   |   分类: Tool   Vagrant     |   阅读: 174 字 ~1分钟
我在同事申请的一台机器上安装Vagrant box,结果vagrant up失败,报如下错误: The guest machine entered an invalid state while waiting for it to boot. Valid states are 'starting, running'. The machine is in the 'poweroff' state. Please verify everything is configured properly and try again. If the provider you're using has a GUI that comes with it, it is often helpful to open that and watch the machine, since the GUI often has more helpful error messages than Vagrant can retrieve.
阅读全文 »

[OpenUI5] 示例:Accordion with all initial collapsed sections

时间: 2015-05-04   |   分类: FrontEnd     |   阅读: 32 字 ~1分钟
sap.ui.commons.Accordion会设置一个默认展开的section。 sap.ui.commons.Accordion.prototype.addSection = function(oSection) { this.addAggregation("sections", oSection); //Add a default opened section id if ( (this.getOpenedSectionsId() == null || this.getOpenedSectionsId() == "" ) && oSection.getEnabled()){ this.setOpenedSectionsId(oSection.getId()); } this.aSectionTitles.push(oSection.getTitle()); }; 如果想让初始化所有section为折叠的,只要将openedSectionsId设为“-1”就可以了。 示例位置: http://jsbin.com/sajoba/1/edit?html,output

[OpenUI5] 控件ID实践与总结

时间: 2015-05-03   |   分类: FrontEnd     |   阅读: 476 字 ~3分钟
显式定义而不是自生成OpenUI5控件ID 为了便于开发和测试,为控件设置一个便于理解的ID尤为重要。我的博文《快速定位OpenUI5问题的一个方法》中的工具函数就是利用控件ID快速定位故障控件的。 在OpenUI5中,可在创建控件实例时使用JSON对象作为控件构造器参数。其中一个可选属性就是"id",OpenUI5不仅用它(在"注册信息"中)追踪控件,也用在渲染控件的DOM输出。 如果没有显式指定一个控件的ID,OpenUI5框架就会使用基于实例数量的算法自生成控件ID。 自生成ID有两个缺点: 调试的时候,不容易定位使用控件的代码位置。例如,异常跟某个控件相关,如果该类型控件实例很多,很难定位该控件定义在那个视图里。 测试代码相对显式定义ID更加难写。如果对控件使用显式定义ID,相应的测试代码可以很容易通过该ID进行控件查找或验证。 控件ID命名惯例 使用驼峰式写法、有意义且语法正确的ID来反映控件的本质。 例如: 一个表单上的提交按钮,其id=“submit” 到不同图形设置的导航控件,其id=“graphNav” OpenUI5控件ID内幕 sap.ui.base.ManagedObject是OpenUI5框架包括控件在内的大部分类的父类,它的构造器里有对ID的处理: if (!sId) { sId = this.getMetadata().uid() || jQuery.sap.uid(); } else { var preprocessor = ManagedObject._fnIdPreprocessor; sId = (preprocessor ? preprocessor.call(this, sId) : sId); var oType = DataType.getType("sap.ui.core.ID"); if (!oType.isValid(sId)) { throw new Error("\"" + sId + "\" is not a valid ID."); } } this.sId = sId; sap.ui.base.ManagedObjectMetadata的ID生成代码: (function() { var mUIDCounts = {}; function uid(sId) { jQuery.
阅读全文 »

[OpenUI5] 示例: Sorted, grouped and multi-selectable list

时间: 2015-05-02   |   分类: FrontEnd     |   阅读: 193 字 ~1分钟
做了一个可多选、使用定制分组和排序的list示例,示例位置:http://jsbin.com/jetena/1/edit?html,output var fGrouper = function(oContext) { var v = oContext.getProperty("workbook"); return { key: v, text: v }; } var oSorter = new sap.ui.model.Sorter("", false, fGrouper); oSorter.fnCompare = function(a, b) { // Determine the group and group order var agroup = a.workbook; var bgroup = b.workbook; // Return sort result, by group ... if (agroup < bgroup) return -1; if (agroup > bgroup) return 1; // ... and then within group (when relevant) if (a.
阅读全文 »
28 29 30 31 32 33 34 35 36

Programmer & Architect

662 日志
27 分类
1472 标签
RSS 订阅
GitHub Twitter FB Page
© 2009 - 2023 Mryqu's Notes
Powered by - Hugo v0.120.4
Theme by - NexT
0%