Mryqu's Notes


  • 首页

  • 搜索
close

[OpenUI5] 自定义控件示例

时间: 2015-06-05   |   分类: FrontEnd     |   阅读: 284 字 ~2分钟
最近在写一个OpenUI5自定义控件,参考了如下文章,搞定。 需要注意的是,控件内的property在init函数内不会获得构造函数的属性值。通过源码可知,EventProvider.extend.constructor内先回调用init函数,然后再调用applySettings将构造函数内的属性设置进去。 constructor : function(sId, mSettings, oScope) { EventProvider.call(this); // no use to pass our arguments if (typeof (sId) != "string" && arguments.length > 0) { // shift arguments in case sId was missing, but mSettings was given oScope = mSettings; mSettings = sId; if (mSettings && mSettings.id) { sId = mSettings["id"]; } else { sId = null; } } if (!sId) { sId = this.getMetadata().uid() || jQuery.sap.uid(); } else { var preprocessor = ManagedObject.
阅读全文 »

使用Docker的现代十二要素应用

时间: 2015-06-04   |   分类: Tool   Docker     |   阅读: 43 字 ~1分钟
【编者的话】“十二要素应用”为开发SaaS应用提供了方法上的指导,而Docker能够提供打包依赖,解耦后端服务等特性,使得两者非常吻合。这篇文章介绍了Docker特性怎样满足了开发“十二要素应用”的对应要点。Docker非常适合开发“十二要素应用”。 “十二要素应用”为构建SaaS应用提供了方法论,是由知名PaaS云计算平台Heroku的创始人AdamWiggins提出的。请参考这篇[文章](http://www.infoq.com/cn/news/2012/09/12-factor-app)。 Dockerfile与docker-compose.yml正在成为用代码定义服务的标准,通过它们可以定义服务的所有内容:依赖、环境、端口、各种进程以及后端服务。Docker镜像和容器为操作系统提供了保证,使得开发环境和生产环境可以有效地保持一致。这篇文章简单地介绍了Docker是怎样满足“十二要素应用”的核心要点的。它解释了用Docker开发一个典型的“Rails/Postgres/Redis/web/worker”所应用的技术。后续文章将通过代码深入介绍如何应用这些技术。 II. 依赖—显示地声明和隔离依赖关系 Docker镜像基于显示的Dockerfile构建,而Docker容器作为独立的运行环境。Dockerfile提供了显示声明基础操作系统的方法(FROM),而且通过运行命令来安装附加的系统包以及应用的依赖包(RUN)。通过这些方法,你可以声明你需要ubuntu 14.04、Ruby 2.2.2、Node 0.11,然后一次性安装。 III. 配置—在环境中储存配置 Docker容器非常依赖Linux的环境变量进行配置。docker-compose.yml有一个环境变量的哈希表,你可以通过它显示的定义容器的环境变量。这些默认的或者未定义的值将在运行时从主机中继承。另外,还有Dokckerfile的ENV命令以及『docker run –env=[]』和『docker run–env-file=[]』运行选项可以设置环境变量。通过这些方法,你可以声明你的应用需要环境变量GITHUB_AUTH_TOKEN。 VII. 端口绑定—通过端口绑定来提供服务 Docker非常依赖端口绑定。docker-compose.yml有一个端口阵列,可以通过它显示的定义“主机:容器”的端口绑定。『docker run –pHOST:CONTAINER』让你可以在运行时定义端口绑定。通过这些方法,你可以声明你的应用的网络服务器将监听端口5000,而且你可以通过主机的端口5000获取服务。 IV. 后端服务—把后端服务当作附加资源 Docker容器与其它容器几乎完全隔离,所以需要通过网络与后端服务进行通信。docker-compse.yml有一个链接哈希表,你可以通过它指定你的应用所需要依赖的其他容器服务。‘docker-composeup’命令将首先开启这些后端服务,然后配置应用容器中网络连接信息的环境变量。通过这些方法,你可以声明你的应用需要Postgres 9.4和Redis3.0服务,让你的应用通过主机名和端口号与他们建立连接。 VI. 进程—以一个或者多个无状态进程运行应用 默认情况下,Docker容器是不带储存的进程。docker-compose.yml定义了一系列服务,每一个服务都有自己的镜像或者构建文件(Dockerfile)以及命令。通过这些方法,你可以声明你的应用同时有一个网络进程和工作进程。 XII. 管理进程—后台管理任务当做一次性进程运行 Docker镜像可以很容易地运行一次性进程。‘docker run myapp CMD’可以在与你的网络进程一致的环境中运行任意命令。通过这些方法,你可以基于你的Postgres数据库运行交互式的bash或者运行一次性的’rakedb:migrate’进程。 现有技术 若没有Docker,OS X的开发工具链是这样的:Homebrew作为系统依赖包, Postgres和Redis作为开发服务,Ruby的Bundler作为跨平台开发依赖,一系列的Shell脚本和foreman让所有工具在本地同时运行起来,以及一个独立的基于Linux的构建服务负责将应用打包到生产环境。这样的工作流并没有错误,但是Docker提供一个更简洁的方式。有了Dockerfile和docker-compose.yml文件,我们将不再需要任何OSX系统依赖,服务包或者跨平台的语言依赖。一个简单的“dicker-composeup”命令可以提供一个完整的Linux开发环境,并且能够轻易地将“十二要素应用”移植到生产机器。 原英文链接:Modern Twelve-Factor Apps With Docker 原译文链接:现代“十二要素应用”与Docker

读八种Docker开发模式

时间: 2015-06-03   |   分类: Tool   Docker     |   阅读: 7 字 ~1分钟
Eight Docker Development Patterns(原文) 八种Docker开发模式(译文) 八种Docker开发模式(介绍) 目前,我对可重用的基础容器和支持共享文件夹的开发容器这两种模式接触的多一些。

Docker速查笔记

时间: 2015-06-02   |   分类: Tool   Docker     |   阅读: 46 字 ~1分钟
常用命令 登入运行的docker容器内 docker exec -it $dockerContainerName /bin/bash 查看docker日志 docker logs --tail="5" -f $dockerContainerName 清除容器及镜像 docker stop $(docker ps -a -q) #停止所有容器 docker rm $(docker ps -a -q) #删除所有容器 docker rmi $(docker images -q) #删除所有镜像 参考 Docker Cheat Sheet Docker Command Line Dockerfile reference The Docker Book

Spring Boot Example:Rest Exception Handling

时间: 2015-06-02   |   分类: Service+JavaEE   Spring     |   阅读: 467 字 ~3分钟
要给同事做个Rest异常处理的演示,顺便用用Spring Boot和Gradle构建。 首先新建一个项目:rest-exception-handling。 rest-exception-handling/src/main/java/com/yqu/rest目录 Application.java package com.yqu.rest; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } GreetingController.java package com.yqu.rest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; @RestController public class GreetingController { @Autowired private GreetingService service; @RequestMapping(value = "/", method = RequestMethod.GET) public ModelAndView home(Model m){ System.out.println("home"); return new ModelAndView("index"); } @RequestMapping(value = "/greeting", method = RequestMethod.GET) public @ResponseBody GreetingVO greeting(@RequestParam(value="name") String name) throws GreetingException { System.
阅读全文 »

Vagrant base box列表

时间: 2015-05-28   |   分类: Tool   Vagrant     |   阅读: 101 字 ~1分钟
Vagrant的basebox都是打包了最小安装版操作系统(仅有一些跟Vagrant通讯必需的工具)的虚拟机镜像。vagrantbox.es列出了很多Vagrant的basebox,其中既有官方的box也有很多非官方的box。 有的box名是lucid32.box、lucid64.box、precise32.box、precise64.box,一开始不明白怎么回事,后来知道用的是Ubuntu的英文代码。 Ubuntu各种版本的英文代码 |版本|英文代号|中译 |—– |Ubuntu 4.10|Warty Warthog|多疣的疣猪 |Ubuntu 5.04|Hoary Hedgehog|白发的刺猬 |Ubuntu 5.10|Breezy Badger|活泼的獾 |Ubuntu 6.06|Dapper Drake|整洁的公鸭 |Ubuntu 6.10|Edgy Eft|尖利的小蜥蜴 |Ubuntu 7.04|Feisty Fawn|烦躁不安的鹿 |Ubuntu 7.10|Gutsy Gibbon|胆大的长臂猿 |Ubuntu 8.04|Hardy Heron|坚强的鹭 |Ubuntu 8.10|Intrepid Ibex|无畏的羱羊 |Ubuntu 9.04|Jaunty Jackalope|活泼的鹿角兔 |Ubuntu 9.10|Karmic Koala|幸运的树袋熊 |Ubuntu 10.04|Lucid Lynx|清醒的猞猁 |Ubuntu 10.10|Maverick Meerkat|标新立异的的狐獴 |Ubuntu 11.04|Natty Narwhal|敏捷的独角鲸 |Ubuntu 11.10|Oneiric Ocelot|有梦的虎猫 |Ubuntu 12.04|Precise Pangolin|精准的穿山甲 |Ubuntu 12.10|Quantal Quetzal|量子的格查尔鸟 |Ubuntu 13.04|Raring Ringtail|铆足了劲的环尾猫熊 |Ubuntu 13.10|Saucy Salamander|活泼的蝾螈 |Ubuntu 14.04|Trusty Tahr|可靠的塔尔羊 |Ubuntu 14.10|Utopic Unicorn|乌托邦的独角兽 |Ubuntu 15.04|Vivid Vervet|活泼的长尾黑颚猴 |Ubuntu 15.
阅读全文 »

玩一下gradle-jvmsrc-plugin

时间: 2015-05-27   |   分类: Tool   Gradle     |   阅读: 32 字 ~1分钟
玩了一下gradle-jvmsrc-plugin插件,使用这个插件后执行gradlecreateJvmSrcDirs可以根据Gradle项目的JVM语言插件((java、groovy、scala、android等),自动创建默认的源代码、测试和资源包目录。例如: src/main/resources src/main/java/ src/main/groovy/ src/test/java/ src/test/groovy/ src/test/resources 刚上手总是报错,看了一下CreateJvmSourceDirs.groovy,定位到packageToDirectoryPath方法: * What went wrong: Execution failed for task ':HelloJvmsrc:createJvmSrcDirs'. > character to be escaped is missing 按照如下gradle-jvmsrc-plugin的说明,要配置基础包名。可是真按它介绍的带有.分割的包名就会出错,简单改成"com"这种没有.分割的包名就可以避免错误。 jvmsrc { packageName "com.mycompany.myproject.mymodule" } 此外,gradle-jvmsrc-plugin对空目录默认生成.gitkeep文件。 总体来说,用处不是很大,可以偷点懒!

[OpenUI5] sap.m.Input的change回调

时间: 2015-05-26   |   分类: FrontEnd     |   阅读: 2 字 ~1分钟
用sap.m.Input的change回调,当值在输入界面被修改后就会调用。今天试了一下,如果通过Model设置改变值的话,其change回调不会被调用。 这种特性正好用于判断是否为界面手工修改。在我的用例中,有一个表名和一个表表述。如果改动表名,表描述跟着相应更新;但是一旦用户手工输入表描述后,上述规则不再生效。

[Hadoop] 使用TeraSort测试集群性能

时间: 2015-05-25   |   分类: BigData     |   阅读: 111 字 ~1分钟
Terasort是Hadoop自带的用于集群性能基准测试的工具,其源码位于https://github.com/apache/hadoop/tree/trunk/hadoop-mapreduce-project/hadoop-mapreduce-examples/src/main/java/org/apache/hadoop/examples/terasort下。 TeraSort用法 该性能基准测试工具针对Hadoop集群的HDFS和MapReduce层进行综合测试。完整的测试步骤为: 使用TeraGen程序生成官方GraySort输入数据集。(注:SortBenchmark是JimGray自98年建立的一项排序竞技活动,其对排序的输入数据制定了详细规则,要求使用其提供的gensort工具生成输入数据。而Hadoop的TeraGen数据生成工具的算法与gensort一致。) 在输入数据上运行真正的TeraSort性能基准测试工具 通过TeraValidate程序验证排序后的输出数据 TeraGen程序生成数据的格式为(详见TeraSort.generateRecord方法实现): 10字节键:一个16字节随机数的高10字节 2字节常量:0x0011 32字节rowid 4字节常量:0x8899AABB 48字节填充:由一个16字节随机数的低48比特生成 4字节常量:0xCCDDEEFF 也就是说TeraGen程序生成的一行数据有100字节。TeraGen程序参数需要指定行数,可指定单位: t:1000,000,000,000 b:1000,000,000 m:1000,000 k:1000 TeraSort测试 依次运行teragen、terasort和teravalidate: hadoop@node50064:~$ yarn jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.x.jar teragen 5m /user/hadoop/teragen-data hadoop@node50064:~$ yarn jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.X.jar terasort /user/hadoop/teragen-data /user/hadoop/terasort-data 15/05/24 08:29:03 INFO terasort.TeraSort: starting 15/05/24 08:29:04 INFO input.FileInputFormat: Total input paths to process : 2 Spent 123ms computing base-splits. Spent 2ms computing TeraScheduler splits. Computing input splits took 127ms Sampling 4 splits of 4 Making 1 from 100000 sampled records Computing parititions took 558ms Spent 686ms computing partitions.
阅读全文 »

[Hadoop] 使用ChainMapper和ChainReducer运行MapReduce作业链

时间: 2015-05-24   |   分类: BigData     |   阅读: 282 字 ~2分钟
启动多个MapReduce作业并实现作业控制,大概有以下几种方式: 在Driver中通过waitForCompletion方法同步启动并运行作业,根据执行结果同样同步启动并运行后继作业。作业控制逻辑完全是自己实现,仅适用于作业不多的应用。 使用ChainMapper和ChainReducer运行MapReduce作业链 使用Oozie管理复杂MapReduce工作流 本文将针对第二种方式进行学习总结。 使用MapReduce作业链模式的数据和执行流如下: 一或多个mapper shuffle阶段 一个reducer 零或多个mapper 即,mapper可以输出给mapper,也可以输出给reducer;reducer只能输出给mapper;reducer之前必有shuffle阶段。 JobChaining示例 JobChainingDemo.java源码 londonbridge.txt London Bridge is falling down, Falling down, falling down. London Bridge is falling down, My fair lady. Build it up with wood and clay, Wood and clay, wood and clay, Build it up with wood and clay, My fair lady. Wood and clay will wash away, Wash away, wash away, Wood and clay will wash away, My fair lady.
阅读全文 »
26 27 28 29 30 31 32 33 34

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%