Category Archives: 我爱开源

ExtJs的Ajax乱码问题

最近用ExtJS+Ashx开了一个小的开源项目JeebookStore. 之前一直用的英文做的测试都也没感觉有啥问题,上周末一上中文,乱码问题就骚扰了我一个周末。 最开始是FormPanel发送的数据到ashx的时候出现乱码,Google了一下这样的问题还挺多,把所有js和html转存为UTF-8,然后把调用js的html设置为UTF-8编码,当然Asp的Request和Response保持默认的UTF-8,Firefox上就没有乱码的问题了。 再试IE,发现FormPanel内的数据已经没有问题,但通过URL参数传递的中文还是不对。依次尝试使用escape,encodeURI,encodeURIComponent函数对URL进行编码,没有效果。 多次试验下发现如果使用Form.submit函数的params属性来传递参数,并且method为GET时,IE下的表现就是正常的。如: URL: ashx/AddFile.ashx?name=中国&path=/中国 Form.submit({     url : ‘ashx/AddFile.ashx’,     method : ‘GET’,     params : {         name : ‘中国’,         path : ‘/中国’;     } }) 检查Action.Submit类的代码,发现ExtJS会在submit时使用params来拼接成如上的URL,之所以没有出现乱码,是因为分别对每个值进行了编码,而编码用的函数正是encodeURIComponent,只不过不像我之前那样直接对整个URL调用而已。 这番折腾又应了那句话,不合常理的问题往往是函数调用的问题。 总算IE和Firefox都可以正确处理中文了,可事情还没完,下载文件的文件名在FireFox变乱码了,当然还不算太乱,只不过是%E7%E9之类的显示而已。 检查发现我在返回文件名时,使用Server.UrlEncode对文件名做了UTF-8的编码,如果直接返回文件名则FireFox正常了,但IE同时变乱码,这次是彻底的乱码。貌似是因为FireFox对文件名的解析采用了ISOxxxx-1的编码而不是Http头中记录的编码类型。Google+研究了半天貌似没有好的解决办法,只好在ashx中做了浏览器的分支,即: HttpBrowserCapabilities bc = HttpContext.Current.Request.Browser; if … Continue reading

Posted in 我爱开源 | Tagged , , , | 3 Comments

休眠/待机的噩梦

从装上openSUSE还没有休眠过,前几天不小心休眠了一下,结果再启动的时候,发现触摸板不能用了。 网上查了一下,都说是Linux电源管理的问题,简单来说,就是休眠的时候系统关闭了触摸板并记录的状态,可因为某些原因再启动时没能把设备打开,所以在我的用户登录过程中,触摸板还能使用,真正系统就绪的时候触摸板反而被关闭了,很让人郁闷。 从原理上说,肯定系统在某个地方保存了状态,只是这个状态不知道要用什么方法重置。 又创建了一个用户来验证这个问题,发现只要清除自己的用户目录就没有这个问题,可见那个配置就在这些文件中。不过由于对Linux的配置文件的放置不熟悉,何况Linux每个版本本身也不太一致,而全部删除会导致之前的所有的系统配置的丢失,所以只好采用排除法,一批一批的删除文件来试(当然不能采用一个一个删除的办法,而是每次删除一半目录,如果起作用则在删除这一半中的一半,准确的说应该叫二分排除法,如果加上按照名字做的的推断,其实一共也不需要试太多次) 最后发现在.gconf/gnome/desktop/下有一个放置硬件信息的目录,下面有个叫TouchPad的目录,删除掉就搞定了。 虽然费了点事,不过后来一次强制关机又出现这个问题很容易就解决了。 无独有偶,就这openSUSE搞定没几天,我的大本上装的vista突然无法上网了,起因却是因为之前待机了2天多,再打开用了一会儿就不行了。每次提示密匙验证错误。我把无线网去掉密码出现限制连接,用小本则能正常上线。好在windows下的帮助多,很快就查到在设备管理器中,设置无线网卡的属性,在电源管理页中去掉允许系统关闭该设备就可以解决了。 又是电源管理,本来对Linux的电源管理想说,太烂了,鉴于vista的表现,只能说Linux是比较烂而已:》

Posted in 我爱开源 | Tagged , , , | Leave a comment

开始用linux了

节前买了台netbook-神舟的优雅Q130B,专门用来装linux玩。选的系统是号称最华丽的openSUSE 11.0,桌面系统Gnome. 感觉上好久没有在空机器上装linux了,openSUSE的安装简便性实在惊人,不止全程自动安装,包括以前需要动脑子考虑的硬盘分区的工作也变成安装程序提供建议,只需要按确认就可以了。 安装以后,碰到的第一个问题是无法连接无线网。openSUSE有一个巨大的软件库,如果不能联网等于彻底废功。在网上查的使用iwconfig,iwlist这些命令,始终提供接口不支持。后来发现KDE上有个工具k,装了一大对KDE的库,最后发现k不支持wpa,没办法只好把我的无线网改为wep,终于可以找到网络了,但只是列表而已(可能是我不会用)仍然无法指定连接,最后卸掉。 正郁闷的时候,发现k在搜索网络的时候同时配置我的系统上的环境,虽然k不能指定连接哪个网络,系统本身却能指定,而且支持wpa,我把我的无线网又改回到wpa,无线网歪打正着虽然配好了。(估计开始的时候自己配置一下就直接能用了,不过Windows用习惯了,总想找个能列出所有网络然后点击一下就能连接的网络工具,反而绕了弯路) 网络配好以后开始装播放器,openSUSE虽然有一个大的软件库,但好像对软件的挑选很严格(主要是对版权问题控制很严),虽然本身带了如RealPlayer 10等一下播放器,却找不到我喜欢的MPlayer,MPlayer没有官方的编译版本,只好下载编译,貌似这很符合Linux的习惯,不过还算顺利很快搞定。后来才发现,还有很多非官方的软件库提供这些直接可以使用的版本。 播放器是有了,但我的片子都存在台式机上,如何访问windows的共享目录就是下一个要解决的问题。网上说要用Samba,查了写资料貌似很复杂的样子,在Gnome的资源管理器中已经集成,只需要通过连接服务器的菜单项简单配置一下就可以了,但设置时必须要指定共享的目录名,相比Windows下可以直接看到某台机器的所有共享目录还是稍显麻烦一点。 然后出了个小问题,双击文件结果是用默认的播放软件打开的,而这些软件往往又打不开我的视频。网上找怎么设置文件链接,竟然没有,郁闷。用了一段才发现,openSUSE会自动使用最后一次打开这类文件的工具作为,于是这个小麻烦也解决了。 能够播放视频本子的功能算是大部分都能用了,不过还有个小问题,就是在机器上自带的摄像头。先后下载了xewTV和Cheese来测试,都不能使用,想来应该是驱动的问题。网上说spca5好像不错,但怎么没法登录他们的网站,更不要说下载了。之后,有找了个万能摄像头驱动的源码,但没有成功编译。一时也没找到解决的办法,就放下来。后来意外在openSUSE的软件库里发现了集成spca的内核和驱动,安装,但没有效果,难道驱动不对?用lsusb发现根本没有设备,又找了另一个摄像头结果可以,后来问了神舟的客服才注意到本子上的摄像头是需要打开的,嘿,这点问题还让我郁闷了几天。 用了几天感觉linux的发展好快啊,基本已经是Windows的体验了,而庞大的软件库更是使软件管理和升级都变得极其方便,不过就是很多操作和细节还需要习惯而已。还有一个很小的细节,我在vista上装那个在openSUSE直接插上就能用摄像头,在vista上无法驱动。后来发现vista把这个摄像头辨认为中星微0303,其实它是0301PLH,换了驱动才能用。可奇怪的是,openSUSE也把他认成0303却照用不误,岂不是某些时候比windows还好用吗?

Posted in 我爱开源 | Tagged , | Leave a comment

合并图片的小工具

最初在网上找到一套很漂亮的ICON库,打算把它做成工具条图标,手工合并太麻烦了,想要找个图片合并的小工具。本来想懒一下却发现找来找去没有合适我的需要的,浪费了不少时间,决定自己写一个。 合并图片本来就是计算位置然后复制图片就可以了,但这对于包含Alpha Channel的ICON来说,会导致Alpha通道数据丢失,效果会很差。感谢Mick Doherty提供的IconToAlphaBitmap的函数解决了这个问题。 以下是MergeImages的主要功能: 支持ico, bmp, gif, jpg格式的合并及保存 支持包含Alpha channel的32位ICON文件(即Window XP格式的ICON) 支持按指定行列数进行多行合并 支持合并是自动缩放图片或指定图片大小 支持文件拖动选择,注意文件以文件扩展名判断,如果扩展名不对,则不会加入列表 支持txt格式的文件列表,即将要合并的图片路径按行保存成txt文件,并拖入列表即可 程序运行需要.net 3.5   一如既往,小工具一律开源,本来想使用GPLv3协议,不过一懒也没有写版权信息所以大家随便用,如需转载请保留感谢提供IconToAlphaBitmap函数的Mick Doherty,谢谢! 如欲下载请访问我的工具网站: http://www.mytools360.com http://www.mytools360.com-a.googlepages.com/ 或者开源网站 http://code.google.com/p/mytools360/

Posted in 我爱开源 | Tagged , , | Leave a comment

重写的JavaScript压缩合并工具

最初在网上找,找到一个JsMinGUI的工具,用起来发现压缩中文Js会出现乱码,估计是编码的问题,再找好像没有找到新版本,只好用C#重新作一个。 代码基于JsMin,主要解决中文编码问题,同时支持添加目录功能,支持过滤拖拽的文件和目录 源码和exe请访问以下地址下载,需要.net 3.5 http://www.mytools360.com 或者 http://www.mytools360.com-a.googlepages.com/ 本来想使用LGPL协议,不过一懒也没有写版权信息所以大家随便用,不过请不要删除JsMin原有的版权信息,谢谢!

Posted in 我爱开源 | Tagged , , | Leave a comment

Mozilla XPCOM Project Wizard

最近开始研究Mozilla体系,也做了一个几个XPCOM的例子试试手。用VS2005做XPCOM大概几个步骤 1.生成一个DLL项目 2.书写idl,并编译成.h和.xpt 3.生成实现类 4.用一些宏和GUID生成导出函数(NSGetModule), 5.配置Mozilla的路径和lib 详细过程如下:http://developer.mozilla.org/en/docs/How_to_build_a_binary_XPCOM_component_using_Visual_Studio 整个过程比较琐碎,当然这不是XPCOM的原因,手写一个COM也是一样。不过一般的COM可以通过向导生成大半,而XPCOM还要自己调用xpidl生成xpt,调用guidgen生成guid,的确不便。 为了一劳永逸,我参照其他的向导,把一个做好的XPCOM改成向导,再借用WTL的js安装脚本提供安装,现在可以像ATL COM一样的生成XPCOM的框架了。 有兴趣的可以到以下网址获取: http://www.mytools360.com 或者sourceforge.net上查找vstools

Posted in 我爱开源 | 2 Comments