博文

改进EXTJS的maxlength设置

在写Extjs3的时候,发现textfield输入框的maxlength设置之后不能限制输入的长度,只能在输入超出maxlength之后给出错误提示。 Google之后,发现可以把下段代码放入程序,一起加载就可以解决这个问题。 // To fix the maxlength property // if the textfield sets {maxlength} property, it cannot be inputted more than {maxlength} characters. // before fixing, the textfield can be inputted any amount of characters. When it lose focus, the validation messages will show. Ext.form.TextField.prototype.size = 255; Ext.form.TextField.prototype.initValue = function() { if(this.value !== undefined){ this.setValue(this.value); }else if(this.el.dom.value.length > 0){ this.setValue(this.el.dom.value); } this.el.dom.size = this.size; if (!isNaN(this.maxLength) && (this.maxLength *1) > 0 && (this.maxLength != Number.MAX_VALUE)) { this.el.dom.maxLength = this.maxLength *1; } };

Buyvm.net的VPS主机DNS失效的问题

用这个VPS好长时间了,总体赶紧buyvm的主机越来越稳定,前两天机房搬迁,系统升级,服务断断续续的不稳定,恢复之后发现之前用的SSH代理不能用了,可以登录上,但是什么网页都不能访问。查看bitvise日志发现有错误: client connection closed before completion of protocol 问题原因:SSH 转发后系统DNS无法解析域名 解决办法:SSH登录到VPS修改DNS,添加GOOGLE的DNS到文件/etc/resolve.cnof nameserver 8.8.8.8 重启网络 /etc/init.d/netword restart 我发现不能用reboot重启VPS,重启之后/etc/resolve.conf文件又变回原来的配置。 特此推荐更稳定的 PhotonVPS ,价格便宜,配置也不错。 [ad#bottom banner of pages]

FeedSky绑定域名失效

在FeedSky上绑定的域名feed.lveyo.com的订阅地址已经失效很久了,FeedSky的DNS服务器的问题,久久得不到解决。 今天有时间,就决定把feed.lveyo.com域名指定到lveyo.com/feed目录上,放弃FeedSky. 首先在域名设置里DNS Manager里,原来Feed的那条记录删除掉。再添加一条A记录指向自己WordPress服务器的IP地址。 然后登录WordPress服务器,修改Nginx的设置,添加如下设置: server { listen 80; server_name feed.lveyo.com; rewrite ^(.*) http://lveyo.com/feed permanent; } 根据自己的域名将配置文件的域名替换之后,等待DNS生效就可以了。 [ad#bottom banner of pages]

2012,我的年度关键词

外企:屡次被拒百度之后,进入一家外企,行业老二,待遇尚可。私企,国企,外企都混过了,各有所长,下一个会是什么呢? 自由行1:年中去了一次欧洲,体验了德国的地铁和火车,当然还有啤酒,捷克人民的友善,我想留下来不回中国,但是签证到期了,我丫不得不回到天朝。世界人民都大团结了,又何必分这么清楚呢,反正中国是欢迎外国人来定居的。 自由行2:为了躲避年终的寒冷并且迎接世界末日的到来,12月20日凌晨飞往新加坡避寒,新加坡没有想象中的好,环球影城是个很欢喜的地方。顺便还去了印尼的民丹岛,海边度假村,骑着大象穿越了雨林,这宠物就是有点大,要不我也养一只。 家庭:添加了两位新成员,一个乱尿尿拉不屎还猛吃,另一个胆小如鼠天天趴暖气。其中还包括客串人物:李小六,毛豆,猪咖啡。 违章:作为曾经的业内人士,我还是没有躲过电子眼,限号被抓了一次,我已经很注意的没走大路,绕小路,还是被拍到了,我怀疑是流动哨干的,明年的交规更严了,还是得注意了。 专业:从WEB开发转向了企业应用开发,其实我还是喜欢做WEB。所以现在的工作重点是偏前端的javascript和CSS,当然Java还是不能放下。不知2年后会是怎样,心里没底,中年危机提前了。 转变:读万卷书不如行万里路,本来我也不看书,就趁现在有时间有精力,多出去走走,钱花完了可以再挣,时间过了就没了。 发展:保持学习,不能被淘汰。自我发展自我完善才是硬道理。 SSD:给去年买的Macbook Pro换上了SSD和16G内存,秒开,看来SSD真的很牛逼。牛逼感满足之后,每天还是用来看视频,浏览网页,别无他用。 Iphone:等了又等,Iphone5终于发布了,我买了Iphone4S,原因是Iphone4S便宜了,Iphone5掉漆了。 投资:延续2011年的失败,我就操这件事情。 玛雅人:你们说话有谱吗?付责任吗?世界末日没来,我的钱花完了,还得保持苦逼的赚钱模式。 感谢:这一年中帮助过我的人,坑过我的人。 此BLOG:一年中很少更新,很少写,微博也用的很少,大多的时间都是在看,其中一部分还献给了1024的CL。 2013:末日元年,希望会更好。。

EJB事务注解TransactionAttribute说明

在 Java EE 的应用开发中,事务的应用是必不可少的,同时由于方法调用的原因,比如方法 A 调用方法 B 的时候。如果方法 A 在事务环境中运行,那么方法 B 是否也要在事务中运行呢,方法 B 是要和方法 A 在同一个事务中运行还是新开起一个事物呢?等等。要弄清楚这些问题,就要牵涉到事务传播属性的问题,EJB 中针对不同的的情况提供了下面六种不同的事物传播属性: Required :用该属性标注的方法或组件总是在事务中运行。如果客户端已经在事务中,则在原事务中运行;如果没有事务,则开启一个新事务,在其中运行。 Requires_New :方法或组件总是在新开启的事务中运行。如果客户端已经在事务中,则首先将原事务挂起,然后新开启一个事务,在其中运行,新事务结束之后,原来事务从挂起点继续执行;如果没有事务,则开启一个新事务,在其中运行。 Supports :和 Required 属性的不同点是,在没有事务的环境中不会开启一个新事务;如果存在事务的话则加入其中运行,这点和 Reuqired 相同。 Not_Supported :如果事务已经存在的情况下,则原来的事务要挂起,然后调用标注该属性的方法或组件,调用结束之后,继续原来的事务;无事务环境中调用的时候,不开启新事务,这点和 Supports 相同。 Mandatory :调用标注该属性的方法或组件的客户端,必须已经在事务中,如果不在事务中则会抛出异常;如果已经在事务中,则加入原来事务运行。和 Required 不同的是,该属性不会自动开启新的事务; Never :用 Never 属性标注的方法或组件,不能在事务中运行。如果调用该方法或组件的客户端已经在事务中,则抛出异常。

愚人节,我的第一个iOS app

图片
今天是愚人节,为了纪念这个特殊的日子,我写了平生第一个原创的iOS程序。 点了某个部位之后。。。。

一款Dropbox的替代品Comodo Online Storage

随着Dropbox的成功,各式网盘层出不穷,但国内的产品都怀疑存在信息不安全的问题,所以还一直使用Dropbox。 Comodo应该都不陌生,出品免费防火墙和杀毒软件,进来Comodo又推出了一款以安全为主打的云存储产品Comodo Online Storage。现在注册有免费的5G空间,邀请朋友注册还有200M的奖励,最多到10G的免费空间。 下载客户端之后,当用户点住文件拖动的时候,就会出现一个半透明的窗口,可以将要上传的文件拖到小窗口里就可以方便的上传文件了。当不用的时候,小窗口会自动消失。 在Dropbox国内访问比较困难的情况下,大家也可以考虑这款产品,毕竟安全性胜过国内的云存储产品。 注册链接为:http://goo.gl/8dEee

我的第一个mac app

图片
买了MBP很久了,一直觉得Objective-C的语法很怪,就没有写过mac程序,春节假期闲着没事干,就学习一下Objective-C和Xcode,准备试试mac和iphone开发,先写一个显示外网IP的小程序,熟悉一下Objective-C和Xcode。 源代码使用github托管,也顺便熟悉一了一下github的使用,参考: http://goo.gl/HEvds ,设置好Xcode的git环境,使用起来很方便。 github地址: https://github.com/lveyo/IpShow app下载地址: https://github.com/downloads/lveyo/IpShow/IP Show.zip

Tomcat 7 的新JDBC连接池的使用说明

Tomcat 7 的JDBC连接池实现类为 org.apache.tomcat.jdbc.pool ,作为替换 commons-dbcp 的方案。 替换 commons-dbcp 的原因如下: commons-dbcp 是单线程的,为了线程安全,就要琐住整个连接池,查询验证阶段也要琐住整个连接池。 commons-dbcp 速度慢,性能差,多CPU的环境下单线程运行,不支持高并发,在JAVA 6中也不能解决速度和并发的问题。 commons-dbcp 实现复杂,超过60个类。 tomcat-jdbc-pool 核心只有8个类,修改更加简单,只需运行连接池本身,易测试。 commons-dbcp 应用静态接口,就意味着并不能用JDK 1.6编译它,在JDK 1.6/1.7中运行时,即使驱动程序支持,所有没有实现的方法也都会抛出 NoSuchMethodException 异常。 commons-dbcp 几乎停滞,很少更新。 作为一个连接池的简单实现不值得重写超过60个类。 Tomcat jdbc连接池实现了一个 commons-dbcp 没有的公平算法,并且比 commons-dbcp 性能更好。 Tomcat jdbc连接池实现了异步获取连接,也不需增加额外的线程。 Tomcat jdbc连接池是一个Tomcat的模块,依赖于Tomcat JULI(Tomcat日志框架) 使用 javax.sql.PooledConnection 接口获取连接。 饥饿算法。如果连接池空了,同时一个线程要获得连接,当一个连接返回到连接池,连接池会将正确的线程唤醒。 除了 commons-dbcp 连接池,还有其它可以选择的方案,如 c3p0 , bonecp 等,与这些连接池实现相比,Tomcat jdbc pool更突出的功能体现在: 支持多核系统,提供更好的高并发性能。 接口动态实现,运行时环境支持 java.sql 和 javax.sql 接口,可以使用低版本JDK编译。 无需每次使用连接时都验证连接,可以在获取或返回连接时验证,不用比设置的间隔时间更频繁。 当数据库连接建立时,一个可设置的查询将运行一次。这对保持连接建立整个时间中的会话十分有用。 可以自定义拦截器增强功能。可定义拦截器来收集查询统计,缓存会话状...

修改Eclipse Console的默认语言

图片
在用Eclipse开发Web程序的时候,启动Tomcat后,Console里输出的信息会自动翻译成操作系统的语言,在中文操作系统中,中英文混杂输出,看着很别扭。 在Eclipse里添加一个JRE调用时的参数就可以修正这个问题。 选择Window > Preferences > Java > Installed JREs > 默认 JRE > Edit [caption id="" align="aligncenter" width="608" caption="修改Eclipse console的语言"] [/caption] 再次运行,Console里就清净多了。

Fedora 15编译安装gSTM

gSTM是Linux下一款非常好的图形化SSH管理工具,在Ubuntu中直接apt就可以安装最新版本,在Fedora 15中只能安装1.1版本的rpm包,在 http://sourceforge.net/projects/gstm/ 下载最新的1.2版本的源码make的时候会报错误: /usr/bin/ld: conffile.o: undefined reference to symbol ‘xmlTextWriterEndElement@@LIBXML2_2.6.0′ /usr/bin/ld: note: ‘xmlTextWriterEndElement@@LIBXML2_2.6.0′ is defined in DSO /usr/lib/libxml2.so.2 so try adding it to the linker command line /usr/lib/libxml2.so.2: could not read symbols: Invalid operation 出现这个问题的原因在Fedora官方Wiki有说明。 https://fedoraproject.org/wiki/UnderstandingDSOLinkChange 下面给出解决方法: 1. 将下载的源码解压 tar xf gstm-1.2.tar.gz cd gstm-1.2/ 2.configure ./configure 3.编辑Makefile 打开Makefile文件 vim src/Makefile 找到gstm_LDADD,在末尾加入-lxml2 -lX11,整体命令为: gstm_LDADD = -pthread -lgnomeui-2 -lSM -lICE -lbonoboui-2 -lgnomevfs-2 -lgnomecanvas-2 -lgnome-2 -lpopt -lbonobo-2 -lbonobo-activation -lORBit-2 -lart_lgpl_2 -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lpng12 -lm -lcairo -lpango-1.0 -lfreetype -lfon...

修改WordPress默认发送邮件地址

要修改WordPress默认发送邮件地址和名称只需要简单的修改一下functions.php文件就可以,打开functions.php文件,在文件尾加入下面的代码就可以了。 add_filter('wp_mail_from', 'new_mail_from'); add_filter('wp_mail_from_name', 'new_mail_from_name'); function new_mail_from($old) { return "Your Email Address"; } function new_mail_from_name($old) { return 'Your Blog Name'; } 别忘记将第5行和第8行的邮件地址和名称改为自己需要的。

Fedora 15安装之后需要做的设置

利用Fedora 15的live CD安装好Fedora之后,还需要安装一些软,并且做一些基本的设置,才能满足日常应用。 1.安装yum-fastestmirror插件,让yum安装软件时自动搜索最快的镜像站点。 sudo yum install yum-fastestmirror 2.升级系统 sudo yum update 3.安装rpmfusion源,就可以用yum安装一些第三方的软件了。 sudo yum localinstall --nogpgcheck http://mirrors.163.com/rpmfusion/free/fedora/rpmfusion-free-release-stable.noarch.rpm http://mirrors.163.com/rpmfusion/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm 4.安装小熊猫ailurus,一款类似ubuntu下ubuntu-tweak的软件。 sudo wget http://homerxing.fedorapeople.org/ailurus.repo -O /etc/yum.repos.d/ailurus.repo sudo yum install ailurus sudo yum makecache 5.安装google chrome 到http://chrome.google.com/ 下载对应版本的Chrome,安装就可以了。 6.安装Flash 到Adobe网站下载之后解压,然后运行: sudo mv libflashplayer.so /usr/lib64/mozilla/plugins/ 7.安装其他软件 安装gnome-tweak-tool,可以对Gnome做一些设置 sudo yum install gnome-tweak-tool 安装Gnome插件 #增加关机的菜单 sudo yum install gnome-shell-extensions-alternative-status-menu #更改系统Alt+Tab切换窗口的显示方式 sudo yum install gnome-shell-extensions-alternate-tab #在任务栏里加入快速打开文件夹的按钮 sudo...

MacOSX文本编辑器--Chocolat

图片
今天收到Chocolat的测试邀请,立刻下载试用,清爽的界面,支持很多种编程语言的关键字高亮显示,窗口分割,标签页,色彩主题等功能。界面和MacVim非常相似,非常适合对Vim试用不熟的人,而且支持很多种编程语言的模板,还可以在线下载,如果正式版推出的时候也是免费的,那一定会有很多开发者选择Chocolat。 Chocolat目前还是在内部测试阶段,大家可以登陆Chocolat的网站 http://chocolatapp.com/ 申请试用。[ad#bottom banner of pages]

安装Fedora 15体验Gnome3

图片
以前一直用Ubuntu的,但是Ubuntu11.04没有上Gnome 3, 而同时推出的Fedora 15启用了Gnome 3,为了体验一下Gnome 3把Ubuntu换成了Fedora 15. 安装之后感觉还是有些像MAC,Google了一些安装之后需要做的设置,安装了ailurus(小熊猫)一个类似于ubuntu tweak的软件,可以安装软件并对系统做简单的设置,还加入了RpmFusion的软件库,安装各种软件还是很方便的。

体验拿福能广告

新发现一个博客广告提供商,正在举办一个千人挑战的活动,可以获得现金奖励啊。 Google Adsense的收成也不是很好,最近还有好多博主的号被封了,大家可以试试拿福能这个广告。 本页为广告测试页,给大家看看显示效果: 活动的连接: http://www.nuffnang.com.cn/blog/2011/05/23/challenge-1000

收集十首经典的苹果广告歌曲

乔布斯不仅是一个传奇的营销者,事实证明他听音乐也很有品位。与TBWA媒体艺术工作室长期合作下,苹果公司在过去的十年中通过 iPod, iPhone, iPad 和MacBook Air 的广告发布,引领并推动了独立、流行和摇滚音乐的潮流。这里是 Advertising Age评出的10大最难忘的歌曲。 1、Black Eyed Peas: “Hey Mama”(iPod 3G/2004) 这不仅是TBWA“Silhouettes”系列的起点,同时也确立了黑眼豆豆的地位。 2、Jet: “Are You Gonna Be My Girl?”(iPod 3G) 3、U2: “Vertigo”(Special-Edition iPod/2004) 这支广告歌曲来自U2“How To Dismantle An Atomic Bomb”的一首单曲。“Vertigo”同时成为了U2在过去7年中最火的歌曲。 4、The Caesars: “Jerk It Out”(iPod Shuffle/2005) 5、Daft Punk: “Technologic”(iPod/2005) 6、Feist: “1 2 3 4″(iPod Nano/2007) 此广告的发布将加拿大民间流行歌手Feist推向主流音乐道路。 7、Ting Tings: “Shut Up And Let Me Go”(iPod/2008) Ting Tings 的第一首广告歌曲 。之后“Great DJ”、“That’s Not My Name”、“We’re Not The Loud”等热曲相继发售。 8、Yael Naim: “New Soul”(MacBook Air/2008) 名不见经传的法国籍以色列创作歌手的新歌“New Soul”被用作于MacBook Air广告歌后,小妮子知名度迅速升温。 9、Chairlift: “Bruises”(iPod Nano-Chromatic/2008 或许这是苹果广告里最奇怪的歌曲之一,但同时也是最好的之一。 10、Chilly Gonzales: “Never Stop”(iPad/2010) 为了当苹果的死粉,特地google了这些歌曲的MP3,共享在 Dropbox 里,需要的请把邮件地址留在评论里。 如果Dropbox访问困难,也可以访问我的 Everbox ...

CloudFlare的Wordpress插件

Wordpress的博客用CloudFlare加速后,如果有人在博客留言,那么Wordpress记录的留言者的IP地址不是真实的浏览者的IP地址,而是CloudFlare的反向代理服务器的IP地址。为了解决这个问题,CloudFlare发布了一个Wordpress的插件,下载地址为: CloudFlare Wordpress Plugin 安装并启用之后,就可以正常的取到源IP地址了。分析代码发现,CloudFlare会将访问请求添加一个名称为HTTP_CF_CONNECTING_IP的Http头,这个值就是真是的源IP地址了。 这个插件还有一个优化数据库的功能,其实就是在Mysql数据库中对每个表运行OPTIMIZE TABLE和ANALYZE TABLE。CloudFlare建议每两个月运行一次优化,并要注意在访问量低的时候运行,运行时用户只能浏览不能提交任何信息。[ad#bottom banner of pages]

用Python去掉字幕文件中的字体标志

MplayerX是MAC OS X下很流行的视频播放软件,能够自动加载同视频文件同名的srt字幕文件并且能够正常的显示中文字幕。但是从射手等字幕网站下载的字幕文件中,有的带有类似{\fn微软雅黑\fs7\c&C0C0C0\3c&000000}格式的字体标志,MplayerX并不识别这些字体标志,只能按照原样显示出来,字幕很坑爹,乱七八糟的不好看。 用python可以很轻松的把这些字体标志都去掉,程序代码为: #! /usr/bin/env python import re,codecs,sys def remove(srcfilename, desfilename): src = codecs.open(srcfilename,'r','utf-16') des = codecs.open(desfilename,'w','utf-16') strinfo = re.compile('[\{\S*\}]') for line in src: #des.write(line) #print line des.write( re.sub('^\{.*\}','', line) ) src.close() des.close() if __name__ == '__main__': remove(sys.argv[1],sys.argv[2]) 在MAC下直接运行这个命令 chmod +x ./parse.py ./parse.py 原字幕文件 新字幕文件 [ad#bottom banner of pages]

当Cloudflare遇上Feedsky

Cloudflare 是免费的CDN服务,我的这个网站 lveyo.com 就用了这个服务,速度还算稳定。这个服务还可以屏蔽掉一些攻击,并且可以提供一些简单的访问统计,对于个人博客非常有用,希望能一直免费。 Feedsky 也是国内比较有名的Feed服务提供商,一般都会单独配置一个域名提供自己博客的RSS订阅,例如 feed.lveyo.com 。但是网站通过Cloudflare缓存之后,Feedsky的蜘蛛会被Cloudflare作为危险请求而拒绝掉,这时订阅Feed的用户就不能及时更新了。 为了解决这个问题,就要在Cloudflare的白名单中把Feedsky的IP地址加入,之后Feed就可以及时更新了。 具体方法是: 登录Cloudflare,选择Dashboards-->Thread Control,在Trust List里加入IP地址:61.4.177.* [ad#Single page bottom]