2010年12月5日

Android 随机铃声管理器

以前手机上一直存在着很多的铃声,但是只有其中的几个用过,因为总是想不起来换换铃声,自己编写过 WM6.5 的随机铃声,并放在 HD2 运行,效果不错。现在准备将手机的系统切换到 Android,所以几个问题必须解决,才能满足自己的需求。随机铃声、日程管理等等,开始进行第一个工作,完成铃声的随机播放。

昨天开始着手工作,在上网查阅资料才发现,伟大的防火墙真给力,凡是想看的东东一律“该网页无法显示”,崩溃,连 developer.android.com 也被墙掉。只好XXXXXXX,打开了通往世界的大门。

 

解决的关键问题:

       铃声的设置:利用 RingtoneManager 查询系统上的全部铃声,并利用 RingtoneManager.setActualDefaultRingtoneUri 完成铃声的设定

       随机铃声的触发:派生 BroadcastReceiver ,监听电话呼入事件,并随机更改铃声

       随机铃声服务的设置与取消:利用 PackageManager.setComponentEnabledSetting 完成监听器的设置与取消

 

发现问题:

       初次使用 Android 编程,发现文档组织对自己来讲有很多的问题,很难利用自己的已有知识准确的找到问题解决方案,只能不停地 Google,也许和以前看惯了 MSDN 的习惯有关。

       对所有的 XML 文件深恶痛绝,很多值是字符串,无法进行提示,满世界找应该怎样表达这个字符串,(注:微软的 XAML 也是一个熊样,一进入到 Binding 就没有提示了,总是要小心不要写错),就像权限设定:<uses-permission android:name="android.permission.WRITE_SETTINGS" />,找不到资料的话,怎么确定这个表达式,郁闷。

 

 

使用问题:铃声随机的话,经常响铃很长时间,还不知道是自己的电话响了,使用要注意。

 

下载:随机铃声管理器 下载后,将 zip 扩展名去掉

 

posted @ 2010-12-05 15:29 Zhangjinglin 阅读(570) 评论(0) 编辑

2010年11月22日

ubuntu netbeans 字体解决

1 将 /usr/lib/jvm/java-6-sun-1.6.0.15/jre/lib/fontconfig.properties.scr 复制成 fontconfig.properties
2 在 /usr/lib/jvm/java-6-sun-1.6.0.15/jre/lib/fonts 目录下新建 fallback 子目录
3 将 微软雅黑 字体 复制到 /usr/lib/jvm/java-6-sun-1.6.0.15/jre/lib/fonts/fallback 下,解决中文字不显示问题
4 将 微软雅黑和 courier new 字体复制到 /usr/lib/jvm/java-6-sun-1.6.0.15/jre/lib/fonts 目录下
5 mkfontscale/mkfontdir 生成字体信息。
6 编辑 fontconfig.properties 将所有字体替换成 courier new(根据喜好)
7 增加 monospaced.plain.chinese-gbk=-microsoft-microsoft yahei-medium-r-normal--*-%d-*-*-p-*-gb18030.2000-0
monospaced.plain.chinese-gb2312=-microsoft-microsoft yahei-medium-r-normal--*-%d-*-*-p-*-gb2312.1980-0
monospaced.plain.chinese-gb18030-0=-microsoft-microsoft yahei-medium-r-normal--*-%d-*-*-p-*-gb18030.2000-0
monospaced.plain.chinese-gb18030-1=-microsoft-microsoft yahei-medium-r-normal--*-%d-*-*-p-*-gb18030.2000-0
以便处理不同中文的编码类型,
8 将编辑器字体设置为 monospaced,项目编码可以为 gbk/gb2312/gb18030
**************************************
UTF-8 咋处理仍然没有解决

posted @ 2010-11-22 15:46 Zhangjinglin 阅读(166) 评论(0) 编辑

Mac OS 10.6 原版安装

1、参考 新手安装指南:一步一步在Windows安装苹果雪豹系统 http://bbs.pcbeta.com/thread-592288-1-1.html
注意 Mac OS 分区应该格式化(几次安装的情况都不一样,这次是直接分区,不格式化,MACOS 无法抹掉卷宗,
格式化成NTFS,无法修改分区图,在 WinPM 下分区 ID 修改为 AF, 成功)
2、所需破解
AppleACPIPS2Nub.kext
ApplePS2Controller.kext
NullCPUPowerManagement.kext
OpenHaltRestart.kext
VoodooHDA.kext
PlatformUUID.kext
3、网卡驱动:Marvell_Yukon_88E8056_Snow106.dmg,装载后,先删除
System/Library/Extentions/IONetworing.kext 目录,然后再将下载的文件目录拷贝到上面的位置,
Snow Leopard 应该自动找到网卡

升级 10.6.4 后网卡失效,直接防止在 boothink 下更好

posted @ 2010-11-22 15:45 Zhangjinglin 阅读(155) 评论(0) 编辑

git 强制恢复到某一版本

git reset -- hard xxxxx 某一版本

posted @ 2010-11-22 15:41 Zhangjinglin 阅读(284) 评论(0) 编辑

2007年4月18日

混乱中生存

今天Java明天.NET,这样生活是不是混乱?
一年多的.NET生活,看来今年又要进入JavaEE的世界,郁闷。
RoR看起来不错,用起来也不错,可是一旦使用了Grails,才发现这才是真正的Java的Agile Development。
同期的两个项目,一个C/S一个B/S,一个WinForm,一个准备Grails,混乱的世界中怎样才能生存。

posted @ 2007-04-18 13:55 Zhangjinglin 阅读(55) 评论(0) 编辑

2006年4月30日

在线考试系统

最近接到一个任务,需要完成在线考试系统。
问题描述:
1、学科专家将试题输入到题库系统。目前只需要支持判断、选择(含多项选择和单项选择,注意:可供选择项数不固定)
2、报名管理员负责报名,同时设定考生待考科目。
3、考试管理员在特定时间激活考试科目,准备考试。
4、考生输入身份证号,进行考试。(注意:考生在特定时间不一定只进行一种考试,可以答完一套考试,进行另外考试)。
5、考试环境为局域网,考试客户端启动后必须禁止考生执行其他任务,出于安全考虑,数据库与局域网在不同的特定网段。
6、考生有特殊标记,加入特殊标记的考生,可以设定不同的及格分数线(比如无标记考生60分及格,有标记考生40分及格)
7、考生交卷后现场得到结果,不需要成绩,只要通知考生是否及格即可。
8、可选项:最好能够进行模块化设计,根据不同的考试提供不同的抽题策略,抽题策略由考试方提供。
9、并发行:最多同时考试人数不超过120人。
10、异常性:如考试中发生问题,考试管理员可以调整考生状态,比如重新考试。


准备近期将全部开发过程记录下来,包括需求分析、系统分析、系统设计、系统实现。根据要求,初步考虑采用.NET系统开发,根据第5条要求,客户端只能采用Windows客户端,Web 客户端是无法禁止考生执行其他任务的,初步考虑可以采用  .NET 的 SmartClient 技术。根据第5条数据库要求,只能采用服务器组件与客户端交互,根据局域网环境,初步拟定采用  .NET Remoting 技术。、、

休息两天,开始进行用例设计,不过还是没想好,采用 RUP 还是 XP?

posted @ 2006-04-30 23:57 Zhangjinglin 阅读(3049) 评论(18) 编辑

2006年1月21日

企业应用开发中的数据库设计模式

 一、引言

现代的企业开发中,越来越多地引入了多层架构设计模式,即使是小型的企业信息系统也逐渐向多层架构发展,以满足系统的可伸缩性以及可维护性。目前企业开发的平台占主导地位的是 J2EE .NET 两大平台,本文并不是去对比两大平台的优缺点,以免引发宗教式的争论,而是在两大平台的基础上探讨如何进行数据库的设计,将设计模式引入到数据库设计中,以期达到良好的、可管理、可伸缩的数据库设计。

传统的数据库设计理论,更加关注的是数据库设计范式,这是数据库设计必须要遵守的规则:

第一范式(1NF):在关系模式R中的每一个具体关系r中,如果每个属性值都是不可再分的最小数据单位,则称R是属于第一范式的关系。

第二范式(2NF):如果关系模式RUF)中的所有非主属性都完全依赖于任意一个候选关键字,则称 R是属于第二范式的。

第三范式(3NF):如果关系模式RUF)中的所有非主属性对任何候选关键字都不存在传递信赖,则称 R是属于第三范式的。

一般认为设计数据库时能够达到第三范式即可,这也是大部分数据库原理课程所要求的数据库设计结果。但现代关系数据库管理系统中,除了支持数据库中的数据查询、更改、插入和删除外,更有强大的企业级功能支持,像存储过程、触发器和分布式查询处理,无疑,我们的数据库设计如果只满足几个范式的话,充其量只是完成了数据的存取要求,而无法和企业程序良好的结合。在设计企业应用中,数据库是企业应用中最重要的一层,是企业应用的信息起点和终点。如何将业务逻辑在数据库系统设计中正确、良好的表达,不仅涉及到系统实现的不同方式,也涉及到企业应用的成功与否。

本文试图探讨在数据库设计中如何应用设计模式理论,形成一种数据库设计模式,以避免业务逻辑层对数据库层的信息耦合,达到业务逻辑在不同层之间的正确转移与实施。

 

二、分布式多层应用中数据库设计的疑问

现代的企业应用程序大多采用分布式多层应用模式。如下图所示:

 

从上面的示意图中可以看出,无论是微软的 .NET 平台还是 J2EE 平台都表现出将业务逻辑单独放置在业务逻辑层中的意图,也即 .NET 平台中的 Web ServiceJ2EE 平台中的 Enterprise Java Bean

J2EE 平台发展较早,并且理论非常成熟,很多技术和架构都在 J2EE 中产生,然后才有相应的 .NET 移植与实现。在 J2EE 体系架构中,核心的是 Enterprise Java Bean 技术,而 Session Bean 更是成功的设计。在 J2EE 中,利用 Entity Bean进行了 O/R 映射的尝试,但因为 Entity Bean 的设计复杂以及无法进行单元测试等缺点,在 J2EE 社区中颇多微词,也导致了 HibernateJDO 等轻量级 O/R 框架的产生。而在微软的 .NET 平台中,也出现了 NHibernate 的移植框架,微软本身也在进行 Object Spaces O/R框架的开发。

通过研究O/R 映射,让程序员和设计者产生了这样一个感觉:无论是 Entity Bean、还是 Hibernate JDO,都强调 O/R 映射关系,让程序员和设计者可以用面向对象的思维方式来考察系统,而不用关心数据如何在底层存储,甚至我们只要在系统中设计好对象实体,然后利用 O/R 映射去自动实现到数据库的映射即可,程序员不需要关心数据库,不需要知道任何 SQL 的语法,只需要通过专门的 EJB-QL 或者 HQL 语言进行数据的处理即可,而无需在程序中书写任何的设计数据库存取的代码。这样编写的程序有利于移植,如果需要更改数据库系统,仅仅重新改写 EJB-QL 或者 HQL 语言既可。

虽然看起来很美,但这却是一个美丽的谎言。

首先,在企业应用设计中,当选择了一个关系数据库系统后,在实施时企业将花费大量的资金购买数据库系统使用许可,而且数据库系统的实施、安装、日常维护也需要专门的人员来完成,更换数据库系统意味着企业的巨大损失,基本上不可能出现更换数据库系统的情况。

其次,大型数据库管理系统有着良好的设计和优化功能,而且不同的数据库系统有着自身的特点,很多特性是独有的,是不可移植的。采用 O/R 映射会损失数据库系统所特有的强大的功能。

第三,无论在进行系统设计时如何优化性能,O/R 映射最终都要转化为实际的数据库连接,进行实际的数据库操作,而这些任务是无法和数据库系统内部的存储过程、触发器的性能相比较的,而且即使通过连接池,也会增加数据库连接的负荷。

所以,良好的数据库设计仍然是企业应用中非常重要的步骤。

 

数据库设计中应用 Façade 模式

当前系统设计中有大量的设计模式,Façade 设计模式更是深入人心。Façade模式描述为:“为子系统中的一套接口提供了一个统一的接口。Façade 定义了一个更高层次的接口,使子系统更容易使用。”在系统设计中,Façade 是应用最广泛的设计模式,利用 Façade 模式的思想把构成子系统的一套业务对象“包装”在Façade 接口中。这样,Façade对象作为客户端访问业务对象的拦截器,屏蔽了业务对象。客户端访问Façade对象来代替访问底层的业务对象,当一个客户端需要调用多个业务对象的方法时,它只需要进行一次粗粒度的远程方法调用,将请求送给Façade 对象, 再由Façade 对象通过本地方法调用,调用相应的业务对象,执行其方法。这样就减轻了网络负载,提高了系统性能。并且当底层业务对象的方法改动时,只需要修改 Façade 对象,而客户端可以保持不变。这就减少了客户端和业务对象之间的耦合度,同时客户端也不必管理事务的细节。如下图所示:

 

Façade 设计模式我们可以看出,如果将数据库系统认为是一个底层的业务系统,我们应该在设计数据库系统时隐藏底层的细节,而将所有对数据库进行的增、删、改、查询操作统一到一个 Façade 接口上来,这样在系统设计的过程中,所有与数据库系统打交道的业务组件无需关心底层的数据库存储方式,而是将底层的数据按照系统实体的方式展现出来,再通过 Façade 接口进行变换,将实际的实体提交给业务组件接口或者将实体持久化到真正的数据库表当中。

比如,在设计学生选课管理系统中,底层的数据表可能包括课程表、学生表、选课表以及成绩表,但对外表现出来的实体应该只有学生和课程两个实体。然后可以通过一个存储过程暴露出来一个学生选课的功能,在业务组件中调用。同时应设计触发器,当插入选课信息到选课表的时候,在相应得成绩表中插入相应的记录。而在业务组件端,仅仅看到底层数据库系统暴露出来的一个功能,即使数据库系统的设计发生变化,也不会影响业务组件的功能。

随着 SQL Server 2005 的发布,已经可以在 SQL Server 2005 中使用 .NET CLR 来进行数据库的编程,这对数据业务逻辑的封装提供了更好的支持。Oracle 已经支持 Java,并且也在进行 .NET CLR 的集成,IBM DB2 也有类似的功能。

采用Façade设计模式,能够较好的隔离底层数据库系统与业务组件之间的耦合,但物极必反,过度的使用存储过程也可能带来不必要的设计麻烦。在数据库设计中,适当的暴露底层的视图也是一种良好的设计风格。一个全面的、良好的设计才是系统成功的保证。

posted @ 2006-01-21 19:54 Zhangjinglin 阅读(3497) 评论(11) 编辑

2006年1月20日

SQL Server Express 数据库自动部署问题及解决

posted @ 2006-01-20 19:07 Zhangjinglin 阅读(1741) 评论(6) 编辑

2006年1月14日

小软件拿什么实现?

posted @ 2006-01-14 10:41 Zhangjinglin 阅读(551) 评论(3) 编辑

2005年12月3日

对微软中国太失望了!

posted @ 2005-12-03 08:01 Zhangjinglin 阅读(790) 评论(11) 编辑

导航

<2012年1月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
2930311234

公告

昵称:Zhangjinglin
园龄:6年2个月
粉丝:0
关注:0

搜索

 
 

常用链接

随笔档案

积分与排名

  • 积分 - 10999
  • 排名 - 8081

最新评论

阅读排行榜

评论排行榜

推荐排行榜