CAT | tools
如果希望使用半透明背景色,又觉得用24-bit PNG 太笨重,RGBA 这个时候就可以帮到你了。这个来自于 CSS3 的好东西。
应用它还有个最大的好处是,不用担心设置半透明背景会一刀切影响到子元素的透明度。
实现方案与兼容性见这篇 blog
就是应用起来,不是那么的方便,涉及到一些数值换算,比如通常我用十六进制的颜色值,小数表示的 alpha 值,而十进制的 RGB 颜色值和十六进制的 alpha 值就显得很特别,每次都进行换算比较不符合懒人的做法。
于是就有了这个小工具页。
还有就是实现细节上和上面的 blog 介绍的有点区别。
欢迎使用。Enjoy!
开发中经常用到 maven jetty:run,特别是它支持 多个 webapp 资源目录 的特性,在开发环境中相当有用。比如,src/main/webapp 是 prod 的资源,而有些开发或者测试时用到的资源可以安心的放在 src/test/webapp。可以 参考这里 详细了解怎么使用。
但是,迁移了环境之后,发现它总是报错:
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Failed to configure plugin parameters for: org.mortbay.jetty:maven-jetty-plugin:6.1.22
(found static expression: 'src/main/webapp,src/test/webapp' which may act as a default value).
Cause: Cannot assign configuration entry 'resources' to 'class [Lorg.mortbay.resource.Resource;' from 'src/main/webapp,src/test/webapp', which is of type class java.lang.String
但是奇怪就在于,在 eclipse 的 maven 插件里面报错,但在命令行执行却没有问题。基于懒人原则,只要有路可走,不深究这个问题。可是当我再一次迁移至 linux 环境下时,命令行报错了。无路可逃的我只好 向 google 求救。
经过一番扫描,发现有先行者了,评论将矛头指向 JAVA 的版本以及操作系统,还有提供了一个可以尝试的修改:
<baseResource implementation="org.mortbay.resource.ResourceCollection">
<resourcesAsCSV>src/main/webapp,src/test/webapp</resourcesAsCSV>
</baseResource>
试之,可行。这是传说中的 maven overloading bug。文中还提到了和 contextPath 的设置有关,敬请留意。

分析新的需求,确实需要增强 jscombiner 了。之前写了一半,时间不够,大家急着看效果。今天把另外一半补上。再修补一下,可以升级到 0.4-SNAPSHOT 了。工具,好用是最实在的。
这次主要是增强了 classpath 的概念。原先使用时不需要设置根类路径,根据文件中的 @class 声明来反向定义根类路径。相应地,入口调整为 buildHierarchy(String className)。外表看来变动很小,而且实现着一样的效果,但是里面整个寻址方式都变了。
代码本身没什么值得深究的。不过结构变了。几番修改,有些共通点:
- 重要的功能需要规划
- 实现的进度是看需求的
- 不到最后不得不修改结构,不会乱动
- 测试用例需要有一定的抽象
- 重构很重要
- 结构发生变化,重写比重构快
java · javascript · jscombiner · tools
Maven 的 jetty-plugin 很好用,我是蛮喜欢,一直在用,现在做开发做测试基本离不开了,一条命令 mvn jetty:run 下去,感觉一个新世界被打开了一样。
不过在 window 上的 eclipse 里,它并不是很乖,主要是停不下来,传说这个是 window 平台上的一个硬伤,幸好解决方法还是有的,采取调试,Remote Java Application 的调试里有个选项 Allow termination of remote VM,可以在一定程度上解决这个问题,有点曲线,不过也方便,随时可以调试。我主要还是在 linux 环境下使用,因此这个问题基本对我不影响。
除了平台的问题,还遇到了一个 Form too large xxxxxx>200000 的问题,一开始没看清楚报错,使劲在 struts2 的范围里面找解决方法,以为是某个设置影响它约束了接受的 form 的大小。还好在无敌的 google 引导下,终于清楚了这是 jetty 在报错,它的默认参数里面有个限制。问题清楚了,解决方法却有点扑朔迷离,最初找到一个 maven.jetty.maxformcontentsize,看起来很接近,实际上只是用于特定软件内,扩大范围至 maxFormContentSize 再找,终于找到了一样的情况了,恼火的是一点进去立马撞墙,这时真的是为了接近真相,不得不继续深入虎穴(需翻墙)
下面配置的片段,想设多大就多大。
org.mortbay.jetty maven-jetty-plugin 6.1.12 org.mortbay.jetty.Request.maxFormContentSize 100000000 10
不过,问题是为什么 jetty 会有这样一个默认参数存在呢?
设置成非常大之后的确可以解决问题,但是会不会对性能之类的造成影响呢?
为自己写个工具 Jscombiner,除了帮助自己高效完成任务,可以自娱自乐,还可以开源,和别人分享。
这个工具前一个版本是命令行方式的,一方面技术所限,另一方面是一直坚持认为前台和后台开发是可以而且应该分开进行的。
当然思考的结果是会变的,该分开的还是分开,但有时后台也应该为前台开发提供一些帮助,而单纯的apache httpd提供不了,也有想过用asp, php,但是按照目前的态势,java应该更熟手一点。而且我主要是想和公司的其它同事分享这种开发方式,他们的机器上大多有tomcat而没有apache。
Jscombiner 的基本目标就是减少程序员开发 javascript 项目时所需要投入的管理成本。让 javascript 脚本采取自描述的方式来方便进行管理。因此,开发者可以在开发过程中,随心所欲地更新脚本,而无需担心重构或者脚本规模增长所带来的管理成本。是不是已经有同样的东西存在,我不确定,有是正常的,多个选择,多个竞争,才会有进步的。也许是有开发者像我这样不善推广的。
现在的状况是基本功能以及有了,自己一直在用,我期望的使用感受是感觉不到它的存在。
不过,不是为了做这个东西而做的,还有其它的目标任务,而且只有我一个人在瞎搞,而且主要的更新都是针对自己的实际应用需求的(我相信我所遇到的问题,其它人也会在某个时刻遇到),所以更新会比较慢。
等当前任务完成了,再做一个example出来。不过其实想想也很简单的,mvn archetype:generate一个项目出来,加入依赖,将脚本丢进去,然后mvn jetty:run,立马就可以着手开发了。
关于这个项目的改进计划会在Issue里面发起。目前想到的一个就是先实现前一版本中的一个功能,合并大脚本,这个应该不难,只是怎么提供出来,会更实用,更有趣呢?敬请期待啦!
java · javascript · opensource · tools
我的目的就是要用archetype来创建一个struts2的blank项目,struts2官网上写的有2.1.6版本
可是我的archetype列表里面只有一个不存在的2.0.9-SNAPSHOT版本,http://people.apache.org/repo/m2-snapshot-repository/目前有2.0.11-SNAPSHOT和2.0.14-SNAPSHOT,这怎么办呢?
最原始的想法就是把包含2.1.6的repo地址(http://www.lenart.org.pl/maven/)加入到settings.xml里面,结果没反应。
手动安装,同样没反应。
这个时候可以想象到maven有一个列表一样的东西来维护这些archetype,很快网上的资料证实了我的想法,于是我尝试手动的更新catalog
mvn archetype:crawl
maven哄哄的扫描完一遍之后,没想到它依然缠绕在2.0.9-SNAPSHOT上面。
心都凉了,突然之间maven在我内心的评价直接跳水,maven的这个插件好傻。
其实这个时候应该换个archetype就好,appfuse有的,不过就是不喜欢它创建出来的东西太杂乱。不换archetype,应该可以换个archetype catalog吧,于是目光聚集在http://maven.apache.org/plugins/maven-archetype-plugin/examples/generate-alternative-catalog.html
mvn archetype:generate \ -DarchetypeCatalog=http://www.lenart.org.pl/maven/
It works.
Pala pala的输入相关信息就创建好了。
不过这种做法的前提是repo有一个叫 archetype-catalog.xml 的文件。
不喜欢选择的话,可以用下面这个拉风得很的命令:
mvn archetype:generate \ -DarchetypeCatalog=http://www.lenart.org.pl/maven/ \ -B \ -DarchetypeGroupId=org.apache.struts \ -DarchetypeArtifactId=struts2-archetype-blank \ -DarchetypeVersion=2.1.6 \ -DgroupId=net.leegorous \ -DartifactId=smui3 \ -Dpackage=war \ -Dversion=1.0-SNAPSHOT
注:-B : 表示批量执行,不提问,个人觉得一问一答也蛮有趣 ![]()
命令换行为了显示方便,使用时请注意在一行完成。

Phoca Changing collation tool
刚装上drupal,发现自动安装好后,输入的中文是”?”,直觉说是编码问题。
于是打开phpMyAdmin一看,果然,数据库及其表的 collation 均为 latin1_swedish_ci ,欲改之。
但表太多,手动,费时失事,即使脑海中立刻浮现出 excel 这个伟大的工具,我也先google一下。
还真的有,从 这里 发现这个名叫 Phoca Changing Collation 的php工具,它自我介绍:
“The Phoca Changing collation tool changes the database collation of database, tables and columns.”
试之,输入数据库连接信息,选择目标collation,提交之后稍等片刻就搞定了。
不过,它不会帮忙做数据转换,那是另外一个问题了。

