分类 "编程开发" 的存档.

解决多分支项目导入eclipse错误

项目开发到一定阶段,需要做分支,一般使用trunk做主线,使用branches做分支。分支副本多了之后,可能需要在多个分支副本之间进行切换。

本文是在eclipse+maven下进行的开发,操作时将当前的分支工程关闭后,导入另外的分支,出现下面的错误提示:

Some projects cannot be imported because they already exist in the workspace

原因就是当前分支的存在,仅仅关闭是不够的,需要将当前的项目删除,不要删除文件,这样eclipse的workspace中关于项目的配置就会被删除了,自然也就能够导入另外的分支项目了。

ps:
另外一个办法就是把原有的项目改下名字,比如project-1。

解决gwt图片浏览器兼容性问题

最近使用google web toolkit进行网站开发,一直在firefox中进行调试,开发到一定阶段,项目需要发布demo,要求浏览器兼容性。在ie中一测试,原来设计好好的页面变得惨不忍睹,此问题在ie7中尤其明显,经过观察发现,其中一个主要的原因就是图片的问题。

使用gwt开发的一个优点就是自动实现了图标、图片的拼接组合,一般为了优化网站结构及效率,设计者会将使用到的各种小图标、图片拼接在一个透明背景的大图片中,浏览器可以使用较少的连接次数下载图片,在一定程度上提高网站速度。

此处遇到的问题就是与此有关,最初的设计是在一个容器中(比如div),绑定css样式,在css中通过@sprite引用gwt-image,容器中同时包含文本,控制padding属性实现图片在前、文字在后的效果,在firefox中没有问题,在ie7这中设计就有问题了,由于使用的小图标是大的图片文件中的一部分,整个容器会将大图片作为背景,造成文字的背景会出现不该有的图片。解决方法是:为图片使用单独的容器,与文字分开。

同时还遇到另外一个问题,就是图片在ie8中不能正常显示,在ie7及firefox均可显示,查阅了相关资料,原因可能是ie8对于base64编码长度的一个限制造成的。原文是这样描述的:

Internet Explorer 8 limits data URIs to a maximum length of 32 KB.

资料来源于http://en.wikipedia.org/wiki/Data_URI_scheme

gwt对于较小的图片(具体多少k还不太确定)进行base64编码,在css中使用base64代替图片的url,飞尘在实际中测试当图片大于25k的时候,ie8就无法显示了。解决方法是:对图片压缩,保证base64转码后不大于32k;或者将图片切片再组合。

几点思考,gwt对图片的处理机制到底是怎样的,还要进一步的考证,近来gwt也在更新,已经发布了2.1 M2,修正许多已知的bug,相信不久就能够看到2.1正式发布了。

<!– 2010年7月19日更新 –>
to:1楼的朋友

举个例子:

<g:horizontalpanel>
	<g:image resource="{bundle.image1}" />
	<g:html text="some text" />
</g:horizontalpanel>

这是在ui文件中的一个简单的例子,实现的效果类似这个样子的,当然样式需要自己设置。

这里使用的是image的widget,当然可以使用其它widget,然后用css设置使用gwt背景图片,关键的是需要指定放置图片的容器宽度和高度不大于图片。

兼容IE和firefox的dl dt dd布局

在网页设计中经常会使用到dl dt dd来显示数据,并且通常显示为表格的样式。

在调试css样式时,首要解决的就是浏览器的兼容性,下面有几点需要注意,否则不同的浏览器可能完全面目全非。

飞尘仅在ie7 ie8及firefox中做了测试,其它浏览器会在未来进一步测试。ie8目前与firefox较接近,主要的差别在于ie7,对于ie6个人觉得放弃也罢。

dl dt dd样式设置要点:

1.指定dl的height
否则ie7会默认设置,高度明显高于firefox中的值

2.指定dt和dd的margin和padding属性
浏览器的默认值不同,显示会有差别

3.dt和dd的内容需要在同一行显示时,需设置dt的float:left属性

目前只涉及了这么多,如果有补充飞尘会及时更新的

solr学习初步

目前的项目需要solr支持,在同事的帮助下将环境配置好,程序可以跑起来了。但是solr是什么还不知道呢,要学习的东西真是多啊,回来搜搜看看,先引用一点别人的介绍吧。

Solr是一个基于Lucene java库的企业级搜索服务器,包含XML/HTTP,JSON API, 高亮查询结果,faceted search(不知道该如何翻译,片段式搜索),缓存,复制还有一个WEB管理界面。Solr运行在Servlet容器中。所以Solr和Lucene的本质区别有以下三点:搜索服务器,企业级和管理。Lucene本质上是搜索库,不是独立的应用程序,而Solr是。Lucene专注于搜索底层的建设,而Solr专注于企业应用。Lucene不负责支撑搜索服务所必须的管理,而Solr负责。所以说,一句话概括Solr: Solr是Lucene面向企业搜索应用的扩展。

Solr是一个拥有象WebService一样接口的独立运行的搜索服务器。你将能够通过HTTP协议以XML格式将文档放入搜索服务器(这个过程叫做索引),你能够通过HTTP协议的GET来查询搜索服务器并且得到XML格式的结果。Solr的特性包括:

1.高级的全文搜索功能
2.专为高通量的网络流量进行的优化
3.基于开放接口(XML和HTTP)的标准
4.综合的HTML管理界面
5.可伸缩性-能够有效地复制到另外一个Solr搜索服务器
6.使用XML配置达到灵活性和适配性
7.可扩展的插件体系

Solr使用Lucene并且扩展了它:

一个真正的拥有动态域(Dynamic Field)和唯一键(Unique Key)的数据模式(Data Schema)
对Lucene查询语言的强大扩展!
支持对结果进行动态的分组和过滤
高级的,可配置的文本分析
高度可配置和可扩展的缓存机制
性能优化
支持通过XML进行外部配置
拥有一个管理界面
可监控的日志
支持高速增量式更新(Fast incremental Updates)和快照发布(Snapshot Distribution)

Schema(模式)

定义域类型和文档的域
能够驱动智能处理
声明式的Lucene分析器规范
动态域能够随时增加域
拷贝域功能允许对一个域进行多种方式的索引,或者将多个域联合成一个可搜索的域
显式类型能够减少对域类型的猜测
能够使用外部的基于文件的终止词列表,同义词列表和保护词列表的配置

查询

拥有可配置响应格式(XML/XSLT,JSON,Python,Ruby)的HTTP接口
高亮的上下文搜索结果
基于域值和显式查询的片段式搜索(Faceted Search)
对查询语言增加了排序规范
常量的打分范围(Constant scoring range)和前缀式查询-没有idf,coord,或者lengthNorm因子,对查询匹配的词没有数量限制
函数查询(Function Query)-通过关于一个域的数值或顺序的函数对打分进行影响
性能优化

核心

可插拔的查询句柄(Query Handler)和可扩展的XML数据格式
使用唯一键的域能够增强文档唯一性
能够高效地进行批量更新和删除
用户可配置的文档索引变化触发器(命令)
并发控制的搜索器
能够正确处理数字类型,从而能够进行排序和范围搜索
能够控制缺失排序域的文档
支持搜索结果的动态分组

缓存

可配置的查询结果,过滤器,和文档缓存实例
可插拔的缓存实现
后台缓存热启:当一个新的搜索器被打开时,可配置的搜索将它热启,避免第一个结果慢下来,当热启时,当前搜索器处理目前的请求(???)。
后台自动热启:当前搜索器缓存中最常访问的项目在新的搜索器中再次生成,能够在索引器和搜索器变化的时候高速缓存常查询的结果
快速和小的过滤器实现
支持自动热启的用户级别的缓存

复制

能够将使用rsync传输时改变的索引部分有效的发布
使用拉策略(Pull Strategy)来简化增加搜索器
可配置的发布间隔能够允许对时间线和缓存使用进行权衡选择

管理接口

能够对缓存使用,更新和查询进行综合统计
文本分析调试器,能够显示每个分析器每个阶段的结果
基于WEB的查询和调试输出:解析查询输出,Lucene的explain方法细节,能够解释为何某个文档打分低,被排除在结果中等等

上面贴了这么多,不过还是没什么概念,慢慢一步步来吧,呵呵。

解决Visual Studio 2005打开工程乱码问题

最近在使用Visual Studio 2005打开一个工程时,发现错误一大堆,随便打开一个文件源码查看,里面很多乱码,看来又是编码的问题了,在Eclipse里经常遇到这个情况,在设置里修改一下应该就能搞定。

于是在工具-选项里找寻了一下,发现问题出在“文本编辑器”这里,在右边选中“自动检测不带签名的UTF-8编码(D)”这一项,重新打开一下工程,乱码就没有了。

解决VB6报c:\windows\sytem32\ieframe.dll\1未找到错误

本来好好的工程,突然打开说是c:\windows\sytem32\ieframe.dll\1未找到,webbrowser不能使用了,昨天还好着呢,准是升级系统又给破坏了,要想解决此问题到也很简单,编辑一下注册表就行,或者把下面的代码存为文件,随时坏了随时修复:

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\TypeLib\{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}]
[HKEY_CLASSES_ROOT\TypeLib\{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}\1.1]
@="Microsoft Internet Controls"
[HKEY_CLASSES_ROOT\TypeLib\{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}\1.1\0]
[HKEY_CLASSES_ROOT\TypeLib\{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}\1.1\0\win32]
@="C:\\WINDOWS\\system32\\ieframe.dll"

存为*.reg文件导入到注册表中,再重新打开原来的工程不再报错

注意:之前打开加载出错的工程关闭时不要保存哦