自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

技术源于生活

努力学习新技术

  • 博客(90)
  • 资源 (1)
  • 收藏
  • 关注

原创 通过libnotify发送桌面通知

上班的时候,来不及跟进最新的新闻,所以想做个桌面通知程序。ubuntu里面用来发送桌面通知的是libnotify包,而且还有python的binding。所以,自己写了个程序,当发现新的新闻时,就弹出桌面通知。程序分为两大部分,一个是通过parse rss文件,提取最新的新闻链接,然后另一个程序定时把新闻的内容取出来,然后利用libnotify弹出桌面通知。 

2009-04-13 10:44:00 2473 1

原创 使用awk + sort做数据统计

之前用Java作日志分析,算PV的时候,要把URL提取出来,然后用hash来累计。后来日志多了,单机扛不住,就改上hadoop,算法基本不变。但今天发现,其实用awk命令就可以简单做到。而且性能相当快。再加上sort,连排序都一起做了。超级爽。 

2009-03-19 23:55:00 2316 1

原创 Wicket & Tapestry

      最近要做一个类CMS的系统,在选型的时候,由于之前用的Tapestry 4,所以,一开始打算用他的,但是4的pretty url做的不好,而且需要有个xml来写那些循环,binding之类的逻辑。所以,直接就pass,想看看5,虽然5的feature list里面列出了一大堆的新功能,而且号称速度提高不少,但他的view层居然又走回了之前jsp的老路,允许在页面里面写表达式,所以,也直

2009-03-17 22:18:00 2106

原创 Hadoop 的 KeyFieldBasedComparator

Hadoop的KeyFieldBasedComparator主要使用在基于对Key的比较和分区,但是经过一段时间以来的使用,发现好像问题挺多,而且经常是数组越界的问题。而且他的异常抛出情况不太稳定,会跟问题的量级相关,所以,现在我都是尽量不使用该类,而是使用自定义的Comparator和Partitioner。

2009-03-09 08:36:00 3327

原创 Hadoop记录排序

hadoop的每次输出都是输出的key,value对,默认的hadoop会对key进行排序,但如果我们想对value也排序的话怎么办了。一个具体例子,假设现在我们有一堆交易数据,例如,用户在某个时间买了某件货品,那么我们可能希望先根据用户名分组,但是在组内,我们希望按照时间排序。那么如果我们把用户名作为key,那就不能对时间排序。如果把用户名和时间作为组合key,那么记录就不是按照用户名来分组

2009-02-24 19:16:00 3918

原创 通过Hadoop做分布式索引

数据库里面有千万级的数据需要做索引,开始的方案是起线程,然后每次读取一定的数量,索引,然后继续读。一开始上了四台普通的PC,1.8的CPU,1G的内存,做了10个多小时才索引完。后来换了Hadoop,同样的四台机器,只要20分钟就完成了。当然不是直接上hadoop就能提速那么多,还是需要做很多地方的调整的。第一个,先把数据库记录dump出来成为文本文件,然后放到hdfs里面,这样做的目的是

2009-02-22 21:31:00 6268 1

原创 饭桶网的粤菜Top 10

用Python做的爬虫。JFreeChart画的图。 

2008-02-21 21:58:00 2444

原创 手机蓝牙开发

         终于实现了手机的蓝牙与PC的蓝牙之间的通信。手机上用的是J2ME,PC上用的是Python。          不知道是网上的代码有问题,还是我用的手机比较奇怪,服务发现部分的代码,一直不能使用。能发现设备,但就是不能发现服务,最后,不知道怎么试阿试,使用selectService()就把服务的URL取回来了,完成了第一个里程碑要完成的任务。        接下来可以基于蓝牙上面

2008-02-17 21:00:00 2471

原创 Programming Collective Intelligence笔记 - Document Filtering

1.1.       Filtering Spam过滤广告的时候,我们第一步就是把文档进行分类,然后就是把文档进行分词,每个词都直接继承文档的分类。这样通过一些初始的训练之后,每个词都会出现在某一个或某几个分类当中。这样我们就得到了某一个词出现在某一个分类当中的概率P(W/C) = W在C中出现的次数/C中包含的文档数,W为词,C是分类。这个算法的一个缺点就是,当我们的初始训练文档比较少的

2008-01-17 10:14:00 1737

原创 Programming Collective Intelligence笔记 - 最优化

1.        最优化最优化要解决的问题是,当我们面对的问题有多种解决方案时(数量级比较大),我们应该通过什么方法来找到最优的方案。 1.1.       Cost函数在考虑最优解时,我们首先需要定一个一个Cost函数,他的作用就是把我们的解决方案量化为一个数值。 1.2.       随机算法随机选取N个解决方案,计算他们的Cost值,然后选出最小的一个。 

2008-01-07 16:49:00 2020

原创 Programming Collective Intelligence笔记 - Ranking

在搜索时,当我们有多个搜索结果时,我们需要对结果进行排序,这里讲的是如何对结果进行评分,从而进行排序。

2008-01-03 10:14:00 1897

原创 Programming Collective Intelligence笔记 - Discovering Groups

1.1.       Hierarchical Clustering使用类似于Huffman编码时的合并方式。假设有N个节点,每个节点的值都是一个向量。通过第二章介绍的寻找相似物品的公式,我们可以计算任何两个向量间的距离。把距离最小的两个向量合并,生成一个新的节点,该节点的向量值是被合并的两个节点的向量的平均。一直以这种方式进行合并,最终就可以生成一棵树。该算法的优点是结果唯一,但缺点是效

2007-12-25 17:43:00 1847

原创 Programming Collective Intelligence笔记 - Making Recommendations

1.        Making Recommendations1.1.       寻找相似用户1.1.1.      Euclidean distance在计算该值时,只考虑两个用户都进行了评分的项目。每一项作为一个坐标,然后算欧几里德距离。值越小越相似。1.1.2.      Pearson CorrelationPerson拟合就是以两个用户为坐标轴,把两个用户对某个东

2007-12-13 22:18:00 1941

原创 Google - 数学之美系列 - 我的小结

今天从头到尾的把吴军研究员写的数学之美系列又阅读了一遍。打算从程序员的角度,把与搜索引擎相关的内容整理一下。要做一个搜索引擎,首先就得把尽量多的网页下载回来。而为了能获得尽量多的网页,就需要对互联网进行一个遍历?这里面用到的就是图论的内容,遍历可以分为两种深度优先或广度优先。当然在遍历过程中需要标记哪个页面已经访问过,而哪些尚未被访问,这里可以使用哈希表进行标记,但由于网址的长度比较大,所以,

2007-12-10 14:07:00 1881

原创 Tapestry - URL Encode

在Tapestry内部,URL的encode主要包含了3部分的内容。首先就是Page,就是链接应该指向的.page文件。第二部分就是链接本身所需要带的参数,即事件回调时需要传入的值。第三部分是持久参数,也就是通过@Persist定义的参数。 1.      Pagea)        说明:当你使用的是DirectLink时,Page的将是你当前所在的页面。而如果你使用的是Servic

2007-08-30 14:22:00 3328 1

原创 Tapestry - Page Enhance

1.      Tapestry提供的页面加强a)        说明:Tapestry的Page Enhancement的配置是在tapestry.enhance.xml内部。b)        配置文件:contribution configuration-id="EnhancementWorkers">             command id="inject-m

2007-08-17 11:52:00 2242

原创 Tapestry - 页面加载之二

1.      页面创建a)        说明:页面创建主要是指当页面文件被找到以后,如何根据声明中的信息,初始化页面类及其控件树。b)        流程图:<v:shapetypeid="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t"path="m@4@5l@4@11@9@11@9@5

2007-08-13 15:05:00 2190

原创 Tapestry - 页面加载之一

1.      页面查找a)        说明:在Tapestry当中,由于我们主要用到的是PageService,所以这里的流程和代码都是参考的PageService。我们根据之前的解释,得到当前要显示的页面名称。首先从缓存当中查找页面是否被加载了。 b)        流程图:<v:shapetype id="_x0000_t75"coordsize="21600,2

2007-08-08 17:48:00 2697

原创 Tapesty系列之一 --- 系统初启及请求处理

1.      系统启动a)        说明:Tapestry启动时,采用的仍然是典型的HttpSerlvet的启动模式。在初始化的时候,他将加载用户定义的hivemodule.xml文件,并利用ApplicationInitializer存储整个Web应用的上下文,例如ServletContext等。在完成了上述初始化工作以后,将加载ServletRequestServicer,用于处理

2007-07-26 16:42:00 3435

原创 Hivemind简介

1.      一个完整的例子a)        目录结构|--|  |--META-INF|  |--|     |--hivemodule.xml|  |--log4j.properties||--nick|--Test.java|--IHello.java|--IMessageBuilder.java|--impl    |--HelloI

2007-07-25 15:18:00 5824

原创 Hibernate的get函数

1.        从方法调用到事件处理在hibernate当中,大部分操作最终都是转化为事件,然后由对应的事件处理函数来处理。而事件内部主要包含的就是对Session实例的引用<v:shapetypeid="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t"path="m@4@5l@4@11@9@

2007-07-13 14:46:00 6183 1

原创 Ehcache

1.      类图<spanlang=EN-US style=font-size:9.0pt;font-family:新宋体><span style=mso-element:field-begin;mso-field-lock:yes> SHAPE<spanstyle=mso-spacerun:yes>  /* MERGEFORMAT <v:groupid="_x

2007-07-06 11:38:00 6238 1

原创 RDF Schema

RDF使用Schema来定义其类型系统,在定义类型时,RDF引入了部分面向对象的思想。由于RDF的图中主要包含以下几个部分,主语,谓语,宾语,文本。因此RDF Schema要做的主要就是为这不同的部分提供对应的一个类型。RDF Schema本身也是一个RDF文件。a)        继承关系与实例关系rdfs:subClassOf用于表示继承关系。三元组A rdfs:subClassOf

2007-01-22 10:48:00 4794

原创 RDF/XML

a)        RDF/XML主要讲的就是如何用XML的方式来表示RDF的图。b)        例子图:<spanlang=EN-US style=font-size:9.0pt;font-family:新宋体><span style=mso-element:field-begin;mso-field-lock:yes> SHAPE<spanstyle=mso-

2007-01-19 10:09:00 6470

原创 RDF简介

1.   RDF概述RDF的全称是(Resource Description Framework),顾名思义,他就是用来对资源进行描述的。RDF提供了用于描述二元关系的语法。而解释器通过读取RDF文件,就可以构建出各资源之间的关系,并在此基础上进行推演,得出隐藏在资源之间的关系。 2.   RDF组成RDF主要由以下几部分组成。RDF Concepts,这相当于是一个概述,用来说明

2007-01-11 14:21:00 7495

原创 Java Web 框架需要解决的几个问题

最近接触了一些脚本语言做的Web框架,发现相对于其他的动态语言,Java Web开发面临着以下几个问题。首先就是开发效率,开发过Java Web应用的都知道,一般情况下,当我们进行了修改以后都需要进行重新的部署,这个很大程度上是因为Java Web应用一直都是基于Servlet而实现的,虽然Java的Web开发从最初的Servlet,一直到后来的Struts,Spring,模块化,灵活性可能是

2007-01-10 10:57:00 3218

原创 mysql的"1067"错误正确解决办法

        今天遇到了mysql的11067错误,先是找了一下log,发现安装目录没有,之后上google找,发现这个问题还被问了多次,心想这下好了,估计没太大问题了。但试了一下,发现这些答案基本上是扯淡,照做肯定不行。        第一种是说在windows目录下面copy一个my.ini文件就能解决,这个简单,我照做了,完全不行,翻了几页google,发现这种方法已经被批了。      

2006-07-30 01:49:00 2043

原创 Firefox扩展开发之三--javascript lib

        javasript是灵活的,但是在原始的javascript上裸开发的 好像比较少,一般大家都会选择某个库进行。js方面的lib,一开始比较有名的应该是prototype,网上关于这个的介绍和讨论也很多,但是现在好像大家用这个的也比较少了,因为prototype大量的修改了javascript的基础类,所以对javascipt的名字空间的污染比较大,很容易发生名字空间方面的冲突。后

2006-07-17 22:16:00 2523

原创 Firefox扩展开发之二

        开发插件实在是很痛苦的一件事情,因为他需要用到Firefox的chrome系统,而每次更新了代码之后,都需要重新载入chrome才能起作用。 一般情况下要重启chrome就需要重新启动firefox,还好有人已经发现这种痛苦,所以开发了一个Extension Developer Manager,里面提供了好几个工具,用的最多的是reload chrome,用来在不重启firefox

2006-07-15 01:44:00 3701 1

原创 Firefox扩展开发之一

         最近主要做Firefox插件的开发,决定把每天的工作情况写下来,希望对其他有需要的同人有所帮助了。         要搞这个冬冬最起码要掌握以下几门技术,XUL用来开发界面的,JavaScript用来做事件处理的,CSS用来做样式单的,DOM用来操作节点的,原本打算也研究一下XPCOM的,但是老板说时间紧,任务重,所以就先把这个pass过去了。这几样技术单独看虽然都不是很复杂,但

2006-07-13 23:03:00 2600

原创 做了几个RSS源

         最近做了几个RSS源,一个是用来关联电影的,就是把电影的名字和他在divx.thu.cn上的介绍做了个关联。大家有兴趣可以到http://newhost.byhh.net/file/rsslist.html上面看看都有哪些地址可以订阅,这里的地址主要是以FTP地址来分的。        另外一个是因为要找房子才做的,主要是用了一些网页搜索,挖掘,然后加一些过滤,效果还不错,^_^

2006-06-25 11:17:00 2169

原创 支持圈子建设,我也讨论一下系统整合

      在圈子的文章里面看到好像不少人都参加了SOA那个比赛,我刚好也参加了,就凑个数跟大家一起讨论讨论。      首先是卖个广告,我们小组的blog地址是http://dribmsoa.blog.edu.cn。大家有空来踩一下。      最近做到服务建模了,对系统整合有一些想法。      “今天看了一下遗留的ERP和CRM系统,发现他们都是采用基本一致的形式。就是有一个通用的处理引擎,

2006-06-23 15:36:00 1614

原创 待完成文章列表

         好久没更新了,最近在搞Firefox开发,看了一些XUL的东西,好好整理一下,估计能顶个两,三篇。        之前写过C++的,虽然被大家披了,但是无所谓,我还是觉得 C++还是有地方可以让我挑剔的,整理一下,继续讨骂。        IBM的SOA初赛马上也要结束了,也是时候来个整理整理,SOA,SCA, SOMA一堆S打头的简写,可以慢慢写了 。

2006-06-23 15:21:00 1313

原创 C++自谈(To 所有评论者)

当然我是C++菜鸟,楼上的说法都对。 但是,没有一个语言是完美的,没有那个东西是不能批评的,一百个人心中有一百个汉姆雷特,我觉得我说他复杂没有什么问题。 现在一个流行词叫分离关注,一次做好一件事就行了,但C++显然不是,他又要兼顾速度,又要不失面向对象,又要保留C程序员。if you dont use it, you dont pay for it,实际上,你无时无刻不在为那些你不要的功能埋单

2006-05-29 14:59:00 2173 4

原创 C++自谈

        因为项目需要,最近开始学起了C++,学C++先从经典教材开始,花了一个星期,把Thinking in C++翻了一遍。        发现C++跟Java差别还真不是一般的多,最明显的一个是C++为了速度,大部分的方法调用都用的是静态绑定。这样就带来一个很奇怪的问题,如果我们把一个NULL值随便转换成一个其他类型,那么C++的编译器会非常正常的调用到对应的方法,这样有好处,也有坏处

2006-05-28 22:44:00 2833 11

原创 今天学到的几个Ruby技巧

当要使用TDD来开发包含IO的程序时,可以自己Mock一个假的IO,然后assert这个假IO的字段。另外一个就是Forwardable模块,如果一个类extend了这个模块,那么她就能使用这个模块定义的def_delegate方法,把对这个对象的方法调用转发到def_delegate所指定的实例的某个方法上。

2006-04-26 00:32:00 1562

原创 使用greasemonkey扩展web应用

        greasemonkey是firefox当中的一个extension,这个extension本身倒是没有什么特别的,装了以后你的浏览器不会多出什么新的功能,他的实际意义是他相当于给你打开了一个后门,你只要把自己定义的js文件install到greasemonkey里面,那么每次当你浏览某个网页时,你的脚本就会在客户端被加载和运行。这样做有什么好处了,例如你可以把某个网站的广告都过滤

2006-04-25 10:24:00 1825

原创 说说Continuation Server

        Continuation Server是在一本叫做《Beyond Java》的书上面看到的。这本书写得还不错,只是前面几章略显的罗嗦了一点,反复的讨论着同一个主题。        后面的几章才开始转入主题,讨论了一些比较新的咚咚,例如ruby,rails,continuation server,metaprogramming。其他几个之前都接触过,所以也就算是看了个小结而已,而co

2006-04-17 10:01:00 2028

原创 侃侃JavaScript Template

        最近发现Web开发的流程和技术好像发生了蛮大的变化,以前可能就是用一些Struts之类的东西来定义页面,然后用个Hibernate来做持久,然后在上面再加个Spring的壳把他们连起来就完了。        最近看来这种方式好像开始有点变了,大家用AJAX的东西好像越来越多,用AJAX之后,页面跳转少了,Struts的那块好像就用处不大了,然后客户端的JS的咚咚倒是越来越多了。这我

2006-04-13 12:00:00 2446

原创 从一个打印LCD字符的Quiz说说矩阵转置

        这是昨天看的一本用来测试你的Ruby技巧的题目。书名大概就是Ruby Quiz,题目是要打印LCD字符,也就是将字符串“0123456789”打印成这样。 -                     -          -                     -          -          -          -          - | |         

2006-04-11 17:59:00 1656

How Tomcat Works

this is book clarify how tomcat works

2010-01-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除