文章检索
-
android api proxy C# CMake ExtJS Godaddy Google Code gtap iphone iPhone App js页面 linux opensuse twitter twitter for iPhone wordpress XHTML XML 二氧化碳排放量 互联网森林 凤凰 前田约翰 周太王 周文王 塑料瓶 姓 岳阳 开源 张家界 来历 标签记账 氏 王学 电话骗局 简单法则 自由行 致命 致癌 节能灯泡 记账软件 设计方式 说法 长沙 马子 骗子
WP Cumulus Flash tag cloud by Roy Tanck and Luke Morton requires Flash Player 9 or better.
twitter
- [博客] http://t.co/MigWBwuW浅谈中日的闭关锁国政策/ 浅谈中日的闭关锁国政策
持续关注
Categories
广而告之
Category Archives: 软件技术
xcode项目文件引用问题
被一个小问题困绕了好久。 在一个ViewController类里声明了一个函数,然后在AppDelegate中调用,xcode一直报”may not respond to“的错误,反复检查都看不出问题 偶尔在参看类定义时发现,这个ViewController类竟然存储在一个项目文件列表以外的头文件里 原来,该ViewController类之前被声明过两次,前一次生成的文件保存在classes目录下,但在项目中的引用被删除了;第二次生成的文件被保存在项目根目录下,项目中引用的是这个.结果,编译时xcode找得却是调用类所在目录下的头文件,即classes下的文件,同样的类名,当然新定义的方法是不存在的,才出现了上面的问题 最开始用xcode,总觉得它的项目文件管理使用引用的方式,使项目文件和实际目录分离,import不需要明确引用文件所在的目录,算是满新颖的方式.自然也想当然的认为import的范围应该以在项目中定义为准,没想到import采用的竟然还是优先当前目录,其次项目定义的策略,不知道是故意设计还是BUG啊
iPhone多语言nib更新问题
使用xcode实现app的多语言非常简单,就3步: 修改xib,增加不同语言版本 添加.string文件,增加不同语言的xib 修改代码使用NSLocalizedString调用string文件中资源 在增加了新语言版本的xib,出现一个问题,不管是在模拟器中还是真机中,界面都不会更新了。无论多少遍clean也没用。除非把应用删掉重新下载。 仔细研究发现,所以界面出现问题,是因为默认时候,nib文件会放在app的根目路下,但一增加新语言,所有的nib文件会分别复制到不同语言的目录里,但对于xcode来说,他只会复制和更新nib,但不会删除无效的nib文件。不删除并非xcode的BUG,而是iOS的安全机制导致的,自己写的程序也没办法把app目录下的nib删除掉。 所以,对界面增加新语言后,一定要把app删除重新添加,如果有些数据需要备份,可以通过xcode下载到本地,然后加入项目中,再写临时代码将复制到app根目录的文件复制到指定目录,最后删除临时代码。
twiproxy更新到0.4.1
前几天对twiproxy做一个次小规模得更新,要说这次更新,前前后后只能用一个词来形容,那就是,莫名其妙:) 先说初衷,最早做twiproxy就是因为GTAP不支持xAuth,所以自己折腾一下,虽然众多不完善还是凑合了,可是最近不断有人在twitter商咨询,每次都是回复不支持,还不完善之类,说到嘴软,决定更新了,这不是莫名其妙嘛 再说,更新的方案,主要是两项: 合并GTAP 0.4.1的代码,说起来对GTAP的改动还真不少,不过总体也就是个对比复制的工作,真够不用心的(难怪被某人说代码ugly) 修改twitter api的入口地址 总之改动很简单,总共花了大概半个小时,但效果就让人惊奇的莫名其妙了: 原来twitter for iphone无法显示的profile正常了 原来据说不能使用的push功能也正常了 感觉上速度变快了一点(后来证实是错觉) 于是我好不犹豫的换上了新版,在twitter上发布了一下,结果没人理我。。。。。莫名其妙 后来,当我感叹效果竟然这么好的时候,才有人发现更新了还给了个好评:),结果第二天app engine挂掉了。。。。莫名其妙
折腾:SSH
墙越建越高,所以打算搞个SSH代理做私人网络用 据说使用虚拟主机就可以,据说Godaddy就支持SSH,据说必须要Linux服务器 于是先把服务器升级成Linux,没想到控制面板里没有这个升级项,写信给Godaddy,回复因为有SQL Server的数据库,无法迁移导致 貌似那个数据库只是测试用了一下没啥重要数据,干掉。 终于可以迁移了,N小时的等待,完成。 进入发现允许SSH,必须要再次换主机,网上说必须要先备份数据库和网站数据,不过Goddady空间和数据库采用的不同数据库,所以多次迁移也无所谓,不过多次备份总是没错的。 备份,然后开启SSH,N小时等待,完成。 据说Tunnelier比MyEnTunnel,安装Tunnelier,登录SSH没有问题。浏览器使用Chrome+Switchy,找了N多教程,其实配置很简单,完成。 一切就绪,就是SSH没法用无法连接,换用MyEnTunnel,发现是服务器拒绝的,貌似是因为服务器没有开启转发导致。 继续Google,发现Godaddy有限制,貌似没有人这样搞成功。 那没办法了,发了邮件给Godaddy,估计也很难解决,没准还要考虑换主机,这折腾的。。。。。。
twiproxy – 基于GTAP 0.4的twitter API proxy
twitter终于封杀了basic auth,为了避免被拒之墙外,在Google Appengine上装了一个GTAP 0.4的版本,貌似Twitterrific可以用了,但Twitter的官方客户端还不能使用。 说起Twitter官方,那可是很纠结的一段。 最初还是tweetie的时候,特意买了一套,谁知不久twitter被封杀,tweetie不支持代理,等啊等,听说tweetie 2支持代理了,才发现之所以叫2原来是不能升级令要付钱的,嘿嘿,有点上当的感觉啊 后来,tweetie被twitter收购,变成官方,免费的客户端,高兴啊,赶快去下载,发现下的不能用,原来又升tweetie 3了,而tweetie 3只支持xAuth,比如GTAP这样的,只支持oAuth的也不能用。 没办法,偷懒不了,自己动手吧 说起xAuth,其实是oAuth的简单模式,和Basic Auth最大的不同是,不再传递用户名和密码,而是传递access_token和自签名数据,GTAP之所以不支持,是因为没有对oauth/access_token这条指令做支持。 所以,在GTAP上做了几处修改: 添加oauth/access_token这条指令的处理,将客户端发送过来的用户名/密码转换成access_token和access_token_secret 当客户端发送请求时,通过客户端发送的access_token获取access_token_secret。GTAP使用用户的密码对保存的access_token和access_token_secret进行加密,导致无法直接通过access_token获取access_token_secret,这本是安全机制,不过考虑到部署者完全可以通过log方式输出用户名密码或者token,所以改为明文存储。可能还有更好的办法,这里先偷个懒吧,反正一般都是自己部署的APP 增加了basic命令,按说起来,通过代理是完全可以支持原有的Basic Auth的客户端的,比如Chrome著名的插件Metrist,通过basic可以实现这个,但目前的测试结果比较奇怪,数据已经正常返回了,但Metrist只有偶尔可以获取到,不知道为什么 为了开发方便,在Google Code上重新构建了一个项目twiproxy,采用和GTAP一样的开源协议,有兴趣的可以去看看,也欢迎提供修改建议:) 最后列一下twiproxy的功能 支持原有GTAP 0.4的功能 支持xAuth模式,即支持twitter for iPhone登录 支持原有basic auth客户端(未确认) 地址: twitter.com : xxx.appspot.com/ api.twitter.com : xxx.appspot.com/api basic auth : xxx.appspot.com/basic
CMake编译Qt
貌似有个CMake教程上说过“不要使用CMake编译Qt”,原因是Qt有自己的QMake,用CMake会费时费力,不过为了能把所有工程采用同样的编译方式,还是尝试了一下,的确很麻烦。 首先需要下载Qt SDK,因为打算用VS2010编译,所以下载了everywhere的4.7b2版本(注意:4.6.3不支持2010,强编会出错,4.7b2静态编译也会有同样的问题,估计正式版会有改善吧) 编译整体还是比较简单的 把VS目录下的vcvars32.bat复制到qt目录下 打开控制台,首先运行vcvars32.bat configure –platform win32-msvc2010 nmake 等待N长时间编译完成,真的非常长时间 编译结果6G,保留bin,include,lib目录即可 4.7的编译有个缺点就是所有路径都是完整路径会写死,且不能选择编译结果的输出路径,所以要是打算多次编译一定要确定好目录,否则会很麻烦。 然后写一个简单的CMakeLists.txt文件: #Project Name PROJECT(BookStar) SET(QT_FOLDER D:/qt-4.7.0-b2) # include directories INCLUDE_DIRECTORIES(inc ${PROJECT_BINARY_DIR} ${QT_FOLDER}/include) # lib directories LINK_DIRECTORIES(${QT_FOLDER}/lib) # source SET(SRCS src/main.cpp src/mainwindow.cpp ${MOCS} … Continue reading
绕过CMake无法编译zlib的问题
最近研究CMake,发现如gtest,zlib这些项目都支持CMake,于是拿来编译了一下,gtest一切正常,zlib则是windows下正常,Ubuntu下出了问题 CMake Error at lib/zlib/CMakeLists.txt:65 (message): You must remove lib/zlib/zconf.h from the source tree. This file is included with zlib but CMake generates this file for you automatically in the build directory. 到zlib目录下干掉zconf.h,在重新编译: Scanning dependencies of target zlib Linking C … Continue reading
正点下班1.5发布
正点下班是我在Android下开发的第一款软件,可以说是练手之作。它的功能非常简单,就是提醒你下班时间到了。功能上有点类似闹钟,但因为工作时间每天相对固定,比如8小时或者9小时,所以它可以更快捷,基本是一次点击,等待提醒就可以了。 1.5版增加如下特性: 兼容Android 1.5即API Level 3 增加取消当前闹钟的设置,之前没有这个,一旦不小心开了闹铃就只有关机一途,实在汗。。。。 解决由于关机导致闹钟失效的问题。主要是设置了一个BOOT的BroadcastReceiver,每次启动机器会自动将闹铃重新设置 修改配置界面为标准界面。之前竟然不知道Android还有专用的Preference XML,这次换上 修改主界面采用倒计时方法,毫秒级的,那位朋友着急下班可以不时看看:) 下面是一段文字广告: 无辜男员工:我上班是动态时间又要打卡,以前常常搞不清楚几点下班,现在有了正点下班,上班时候运行一下,下班就会自动提醒我,再也不用无偿加班了:) 狗头专家:你可能认为这就是一款闹钟软件,但你会每日为下班时间定闹钟吗?当然不会,因为又要算下班时间,又要一堆的手机设置,太复杂了。正点下班没有这些问题,一键搞定下班提醒,方便,舒心。 无辜女员工:太方便了,自从用了正点下班,在无后顾之忧,上班也变轻松了,你看,脸上的小痘痘都没有了:〉 最后,一如既往,正点下班也是一款开源软件,可以通过以下网址获取到所有代码: http://code.google.com/p/jee-android
VeryCD拦截自定义协议分析
一般来说,我们通过注册自定义协议,可以在浏览器中通过链接方式自动打开客户端程序。 不过,如果没有客户端程序就会导致无法访问的页面错误,如何才能够判断自定义协议在本地没有被注册,并弹出客户端的安装提示呢? 新装系统以后,意外发现VeryCD可以在没有安装eMule的时候会弹出提示,效果如下: 于是做了一点研究,希望能够实现一样的效果。 VeryCD网页采用YUI库,多数自定义的js都是以编号结尾如:group.js.r23406,不知道是不是使用YUI压缩的结果,如上图的对话框代码集中在footer.js.r23406中,大概的流程: 首先,在页面初始化时,所有ed2k://的link设置click事件。 然后,在click事件中创建IE2EM.IE2EMUrlTaker对象,该对象好像是为了处理如上图中“复制选中的链接”的功能。该对象应该是在eMule安装时注册的,所以在没有安装时会导致异常,在异常catch中,显示如上的对话框。 最后,如果用户选择下载则跳转页面到下载页面,如果选择已安装,则设置Cookie。 但不知道为什么,VeryCD在网页上特别做了浏览器类型判断,非IE的浏览器中不显示该对话框,所以在如Firefox,Chrome这些浏览器中只是不下载,什么反应都没有。 基本来说,VeryCD就是通过尝试创建客户端的ActiveX控件,在失败时弹出安装提示。 该方法的缺点是,只对IE有效,因为其他浏览器并不支持ActiveX控件,所以无论是否安装都会导致异常,这也可以解释为什么VeryCD特别在网页上判断浏览器类型,并对其他浏览器进行了屏蔽。
多层压缩等于不压缩?
从网上下了一个东西,zip的压缩包 解压是55个zip压缩包 再解压是55个rar的分卷压缩包 再解压才是真正的文件 一般压缩文件就是为减小文件个数,压缩文件占用的空间,那么如此多层的压缩当然是目的当然是进一步减少文件的大小了,那么效果如何呢?以此为例,如下表: 原文件大小 273,156,452 字节 Zip压缩 272,770,342 字节 7z压缩 274,608,539 字节 多层压缩 273,152,780 字节 大概是因为原文件本来就做过压缩的缘故,多层压缩的结果只使文件缩小了不到4K,而zip单次压缩的结果更优。 当然这只是一个特例,但也说明多层压缩未必能进一步缩小文件大小,所以请勿再作如此麻烦的事情了:)