- iOS(iPhone/iPad) 下图形组件有两个有名的,s7graphview 和 Core Plot, 它们都是在 Google 上托管的代码,听说 Core Plot 比较强,因为前者仅支持曲线图,后者呢曲线图、饼图、柱状图等通吃,且较活跃。那就专注下 Core Plot 的使用。 它提供了 Mac OS X 和 iOS 下的组件库,我只用到它的 iOS 图表库。
Core Plot 能画出来图表的效果应该多看看:http://code.google.com/p/core-plot/wiki/PlotExamples,相信看过之后绝大多数的 iOS 下的图表可以用它来满足你了。
配置其实很简单的,先从 http://code.google.com/p/core-plot/downloads/list 下载最新版的 Core Plot,比如当前是:CorePlot_0.4.zip,解压开,然后就两步:
1. 把目录 CorePlot_0.4/Binaries/iOS 中的 libCorePlotCocoaTouch.a 和整个子目录 CorePlotHeaders 从 Finder 中一并拖入到当前项目中, 选择 Copy item into destination group's folder (if needed),Add to targets 里选上相应的 target。 此时你可以在项目的 target 中 Build Phases 页里 Link Binary With Libraries 中看到有了 libCorePlot-CocoaTouch.a.
2. 再到相应 Target 的 Build Settings 页里,Other Linker Flags 项中加上 -ObjC -all_load Read More
紧接前一篇 应用 Castor 把 XML 转换成相应的 JavaBean(一),本例稍显复杂一些,也就是要使用到映射文件,更复杂的 JavaBean、XML 数据类型和结构,引入自定的 FieldHandler,还有存在 Namespace 的情形。
关于如何使用 Castor 来把 XML 映射成 JavaBean 请着重阅读这个链接 http://www.castor.org/reference/html/XML%20data%20binding.html 中的内容,里面有说明支持的类型,如何定义自己的类型 Handler 及配置 Handler 的属性,mapping.xml 文件怎么写及各部份的意义;还有 castor.properties 的配置,比其中的 suppressNamespaces 为 true 时可以忽略掉 Namespace,默认为 false.
直接看例子吧:
1. persons.xml,这里放了一个 Namespace,并定义了一个 Address 类型,还使得节点名与 Bean 的属性名不一致: Read More
之前有一篇用例子演示了 应用 JAXB 把 XML 转换成相应的 JavaBean,现在来看另一款 XML Data Binding 工具 Castor 怎么把 XML 映射成 JavaBean 的,相对于 JAXB 规范性的东西,Castor 的官方网站上关于 Castor 的使用文档我觉得要多些。作为一个 XML Data Binding 工具,Castor 同样提供了 Marshaller 和 Unmarshaller 的功能,它不依赖于注解,还是采用映射文件的方式,像 Hibernate 那样的映射文件。
从 Castor 的官方网站 http://www.castor.org/ 看到它的外围生态系统还是不错的,有 JDO、Maven、Spring、Eclipse Plugin 的支持,也有众多组件用到了它。和其他类似工具一样,Castor 也提供了 XML、Schema 生成 Class 类的功能,但照例这里还是看看先有类的情况,怎么从 XML 中获取相应值。
通常使用 Castor 从 XML 得到 JavaBean 需要一个映射文件,要是 JavaBean 的属性和 XML 中的节点名足够齐整规范就可以省去映射文件,先看不用映射文件的例子: Read More现在越来越多的外国企业在中国开设分公司,很多人有很强的技术和能力,但是英语不行进不了外企。这是因为中国糟糕的英语教育导致的,我们大家都是学英语学了几十年到头来都是英语聋哑人。
本方法是笔者多年国内外学习英语的经历并结合语言专家们的教学经验总结出来的,只是提高口语和听力,适合那些有一定英语基础,想提高口语,但不想花钱留学又不想上昂贵的英语培训班的人。 另外其中有些方法会比较特别,颠覆传统的学习方法,可能不适合所有人,一般来说每天坚持本方法练习3到6个月就会有效果,如果仍然没有,那很可能本方法不适合你。
首先在介绍方法之前,我先给英语口语水平分3个级别。level0,level1和level2。无论刚开始学ABC还是大学过了四,六级,大部分人的口语level都是0,是的别不服气。 什么是level1,0和1的区别就是当你说英语时候可以脱口而出,不用先在脑海里把要表达的中文翻译成英文。 Read More- 首先,让我们来思考下面几个问题:
什么是Dalvik虚拟机?
Dalvik VM与JVM有什么区别?
Dalvik VM有什么新的特点?
Dalvik VM的架构是怎么样的?
首先,我得承认第一个问题问得很傻:什么是Dalvik虚拟机?没有人给出过一个明确的定义,但是,我们似乎可以从人们对Java虚拟机的描述中得到些信息。
Java 虚拟机(JVM)是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。它有自己完善的硬件架构(如处理器、堆栈、寄存器 等),还具有相应的指令系统。使用“Java虚拟机”程序就是为了支持与操作系统无关、在任何系统中都可以运行的程序。 Read More - 怎么都搞不明白,一个纯技术性的网站 Android 开发者 http://developer.android.com/ 会被墙,找不到合适的理由。仅仅是出自于 Google,因 Google 不听 ZF 的话受影响?Android 牵动了什么人的神经,影响了什么群体的利益?
作技术的不能因为正常方式访问不了就不去另想他途,翻墙方式的种种这里不累述了。我们不会像多数人一样,以为搜索引擎只有一个百度(多数人其实根本不知道那个叫做搜索引擎)。在常规方式下,幸好还有不少 Android 开发者网站的镜像可以访问,虽然有些并不能非常及时的跟进同步,但也足够用的。
这里就收集一些可访问的 Android 镜像站点,千万不能因为我把它们集中在一块而给某些别有用心的人得了方便,而后害了那些热心的网站,那我可真的是很无聊。随着 appspot.com 的不幸,也让 http://androidappdocs.appspot.com 失效了。如果还有别的镜像站点,希望大家多多提供,谢谢啦。 Read More - Apache HttpClient 是很方便的 Java 开源的访问 HTTP 资源的组件。网站上的资源不总是能匿名访问的,很多都需要登陆后才能操作,且不说论坛里登陆后才能发言,就是某些稍显敏感的 XML 等信息也是登陆后才能获取到的。
没问题,HttpClient 能让你做到,它提供了 Basic 和 Form-Based 两种验证方式。登陆后获得服务器端发来的 Cookie 作为下一次访问的凭证, 让服务端认为你还是个合法用户。服务端不是用 Session 来维护会话的吗?是的,Session 也要有个载体,Cookie 了。或有时 Java Web 会用 jsessionid 参数在服务端与客户端来回关联 Session 信息,也没问题,HttpClient 同样能胜任。
下面主要说明 Form-Based 的验证方式,Basic 的验证简单列了几行代码,还未实践,具体可参考文后的链接。 Read More - 前有一文 iText 用 HTMLWorker 转换 HTML 为 PDF 时可设置表格列宽度 介绍了在 iText5.0.4 的基础上转换 html 为 pdf 时,如何让 table 中的单元格能支持宽度设定,并且还修改了三份源代码: HTMLWorker.java、IncCell.java 和 IncTable。也只是实现了以百分比形式来设定每列的相对宽度,现在好了,iText 顺理的发现了用户的这一需求,在进化后的 iText5.0.6 中可以让你设定 <td> 的宽度,可直接用百分比数值(20%)相对宽度,或用参照数值来设置,之后呢,HTMLWorker 会帮你转换为相对的宽度--比如有三列,分别设置为 20,10,50,被转换为相对宽度就是 25%,12.5% 和 62.5%。
看iText5.0.6 简短的 release 说明,iText5.0.6 has been released(http://lowagie.com/node/73): Read More - Hibernate 3 之后,formula(公式,Excel 里常见的) 得到了更广泛的应用,不过这里还是简单记录一下它在 <property> 中的应用。
假如我们要映射这么一个类:
package cc.unmi.model;
public class User {
private int id;
private String name;
Private Set<Order> orders = new HashSet<Order>();
//setter & getter ......
} Read More - 安装的 MySQL 5.1.48 或是 MySQL 5.5.8,配置好最后点击 Execute 按钮了,但是进行不到 Start service 这一步。检查了下 MySQL 系统服务已添加,但是无法启动,手工也不行。这时候用事件查看器可以看到程序事件里有几个来自于 MySQL 的错误:
Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
Unknown/unsupported table type: INNODB
原来是因为这两版本的 MySQL 默认使用了支持事物的 INNODB 引擎,打开 my.ini 文件,在 MySQL 的安装文件夹, 如 c:\program files\MySQL\ 中,看到:
default-storage-engine=INNODB
解决办法是把该设置改为
default-storage-engine=MYISAM Read More