存档

‘编程’ 分类的存档

Google App Engine(GAE)真的TMD它,再不免费了。

2011年11月13日 1 条评论

Google App Engine(GAE)其实我已经使用了差不多2年多了。我一直都是使用免费账户。因为我的应用非常简单,而且也没有对外用户,只是帮助自己定时搜索和统计一些网络数据。使用免费账户还有很多的余量。在上个月已经知道google修改收费标准,而且已经有写bloger反应google这次比较坑爹的。当时自己也没有想太多,想想就是减少配额也应该不会影响到我的。因为我原来也只是用到免费配额的20%左右。应该不关我事。也么有去查看google新的配额说明

直到上星期google正是实施新的配额制度之后,我发觉我放在GAE上的应用彻底down了。开始我还以为程序是否出问题,或者没有升级到最新的GAE版本。后来检查了一遍。并没有发现问题。我就开始怀疑新的配额制度。于是登录GAE Dashboard页面,一看配额情况,数据库读写配额已经100% over了。马上去查看新的配额制度,泪奔啊!!!真的缩减了很多很多。网上搜索了,叫苦的真的非常非常多,不是一般的多。有些用户使用mircoBlog把博客安家在GAE上的用户,就是没有访客浏览自己的blog,就是应付来自各大搜索引擎的蜘蛛已经把配额用完了,免费配额基本上只能用于自我测试使用。普遍用户都在臭骂google。这次收费升级,在数据库的读写配额上升幅最大,而且收费最贵。

我在一年前曾经想把这个blog移植到GAE上,想把空间租用费省下来。不过后来没有太多时间去移植,所以完成。现在真的万幸当初没有这样做,否则今天你也不会看到这个blog了。我在这里也要骂一骂google这次的行为。虽然企业是要赚钱的,但是也要对客户要有个交代。价格升幅不能太大。而且起码提前1年通知。现在升幅大,又只是提前1-2个月通知。如果在GAE上跑正式业务的用户基本上只能乖乖交钱,要不然就停止业务。因为把程序迁移到一个新的平台并不是那么的简单。

google的不作恶的口号去了那?先用免费或者低廉的费用吸引你把平台建设在他们的服务器上。当年离不开他的平台的时候,他会同你讲把你的荷包打开,我要把你的钱全部拿走。乔布斯曾经对google的“不作恶”口号的评价是:“放屁”。看来乔布斯看事情看得非常透切。google最近把好多服务都升级了,我说的是服务收费升级了。很多服务的免费配额都调低了,收费调高了。据我所知道还有google map API,企业邮箱等。以后大家做开发的时候选择一些google的服务时候就要额外留神。要做好随时转换其他平台的准备。要不然就会出问题。以前我太崇拜google了,我经常推荐别人使用google的服务,原因是好用且免费。现在我会叫大家三思阿。大家也要注意这个问题。感觉就像早段时间淘宝商城的升价问题一样,先低价吸引你进入,再掉高价格来卖。

现在大家都比较推崇云服务,我开始也觉得云服务是非常好的一个服务。因为初期投入不会太大,可以随时扩充缩小。非常适合一些小型企业。现在大家选择云平台的时候一定要考虑移植性的问题。可以随时逃亡,或者在两个云平台同时运行,可以随时切换。

分类: IT, 编程 标签: , ,

Google App Engine试用与感受

2010年5月27日 没有评论

google app engine是目前google的云应用中的最高级别的猛将。这两个星期试用了一下这个App engine。App engine是用来构建网络应用程序,例如你可以在上边开发一个blog程序,然后托管在google app engine上边,你不用再找主机托管商了,你可以使用免费版本,免费版本基本上有足够的配额给一般用户使用。当用户量增加后,你不用担心服务器的扩展。google会帮你做好一切,当然这样你需要给点钱。目前免费账号的程序可以使用可使用多达 500 MB 的存储空间和多达每月 500 万的页面浏览量(官方介绍资料)。一般用户可以用来做独立blog,有朋友已经写好了一个在app engine上运行的blog程序了– Micolog

目前app可以使用的语言有java和python。我无需思考就选择了python来做试验。因为我讨厌java。虽然我不会python,但是学习起来一点困难都没有。脚本语言不用关心内存管理。(在这里pk下java的内存管理,号称不用关心内存泄漏问题,但是实际上到处都是陷阱)。

这里讲讲App Engine需要注意的问题。开发环境一定要安装google所讲的python进行配置。不要使用python.26。需要下载新版本的App engine。我就在这个环境配置中吃了苦头。因为很久以前已经安装过App engine就旧版本。所在这次试用的时候就没有再安装新版本,发觉有些教程上边的程序不能运行,升级了app engine就可以了。

还有就注意是python的的环境。由于发布程序上服务器需要ssl认证,需要为python 2.5的环境安装ssl模块(http://pypi.python.org/pypi/ssl),安装编译ssl模块需要安装mingw32进行编译,并需要下边两个库。

libgw32c-0.4-lib.zip(http://nchc.dl.sourceforge.net/project/gnuwin32/libgw32c/0.4/libgw32c-0.4-lib.zip)
openssl-0.9.8h-1-lib.zip(http://gnuwin32.sourceforge.net/packages/openssl.htm)

另外要注意的是你的python环境是完全安装的版本,我开始使用的python版本是安装别的软件时候带的python2.5。结果这个python包并没有带编译模块的头文件。折腾了我一个早上的时间。不过我发觉app engine 1.3.3的版本在没有ssl的情况下也可以发布程序上服务器,不过没有了加密,很容易把你google的账号密码泄露出去了。

试用的时候发觉app engine的GQL的限制挺多的。使用上并没有sql那么变化多端的查询方式。有一定的局限性。

使用的时候要注意数据的索引(index.yaml),我在测试的时候开始没有注意索引这个东西,发现一些查询在本机上的测试环境上运行的时候ok的。但是当上载到服务器就运行失败。提示索引有问题。原来我试验的时候使用了google的demo程序guestbook。在原有的index.yaml文件中有些旧的数据索引,但是在我的新程序中并没有这些数据,导致上传index.yaml文件的时候失败。后来把这些数据删除了就可以了。其实只要你创建index.yaml文件,并插入下边内容。

indexes:
# AUTOGENERATED

基本上你不用关心文件还需要填写那些内容。在本机测试环境中index.yaml文件的内容可以根据你的程序中的查询语句自动生成的。上传到服务器的时候需要把这个index.yaml文件发布到服务器。

如果服务器你本身有数据,当你上传新的index.yaml文件的时候,服务器需要一段时间重新编制索引,需要等待索引编制完毕后你才可以测试与该索引相关的程序。

分类: IT, 编程 标签: , , ,

jqtouch使用和bug

2010年1月6日 2 条评论

发现了一个非常好的jQuery插件jQTouch。这个插件是帮助你方便开发iphone上的浏览器上的web程序。使它的操作像原生的Iphone程序有良好的界面和操作交互。

我使用了他帮朋友搞左个应用,你可以使用iphone或者ipod touch访问 http://www.goflytoday.com 就可以访问到该应用了。如果你没有iphone的话,可以使用Apple Safari浏览器去访问这个网址体验一下效果,其效果基本和iphone差不多,只是有小许细节不一样(google android的手机都可以,我用hero试过,速度比较慢)。其他浏览器就不行。

我使用的是jqtouch-1.0-beta-2-r109.zip这个版本。发现有一个bug。这个bug主要表现是当列表跳转的链接为空的时候,用户点击该链接的时候,连接会成另外一种状态后不会自动恢复原来的状态。
阅读全文…

分类: IT, 编程 标签: , , ,

通过设置.htaccess识别浏览器的语言重定向不同的页面

2010年1月6日 没有评论

apache有一个强大的地址重写模块(Module mod_rewrite),这个模块的使用可以参照这里这里。你也可以在google搜索这些设置。功能比较多,可以说只有你想不到没有做不到。

这个模块的一般用法有如下几种:

1、这个模块一般都用于一些程序的框架对地址栏的重写。例如wordpress就用到这个模块对地址栏从写,实现固定连接。

2、根据用户访问的浏览器用户类型重定向到不同的页面,例如:如果用户使用手机访问的话重定向到wap页面等。

3、当网站目录结构发生该变的时候,使用rewirte可以解析旧有的连接跳转到新的连接。

现在我有一个想法就是想用mod_rewrite模块去判断用户的语言,根据用户浏览器的语言重定向到不同的页面静态页面。英文的用户跳转到英文的主页,中文的用户跳转到中文的主页。我在网上搜索了一番,发觉大家都习惯使用程序去判断用的语言再去跳转,或者在程序内根据用户语言输出不同的内容。经过不断搜索和尝试,最终我都发现如何设置mod_rewrite模块去做这个操作。

RewriteCond %{HTTP:Accept-Language} ^zh-cn.*$ [NC]
#RewriteCond %{HTTP_ACCEPT_LANGUAGE} ^zh-cn
RewriteRule ^/?$ “http\:\/\/www\.goflytoday\.com\/airline2\/abc_chi\.htm” [R=301,L]

RewriteCond %{HTTP:Accept-Language} ^zh-cn.*$ [NC]

RewriteRule ^/?$  index_cn.htm [R=301,L]

上边的写法就可以了。RewriteCond %{HTTP:XXXXX} 这种写法可以根据http头做出很多的判断。并不只是限于下边几个参数
HTTP_USER_AGENT
HTTP_REFERER
HTTP_COOKIE
HTTP_FORWARDED
HTTP_HOST
HTTP_PROXY_CONNECTION
HTTP_ACCEPT

分类: IT, 编程 标签: , ,

Dynamically loading Google Maps API V3 by JQuery

2009年11月25日 没有评论

发觉google的一些应用的javascript接口API的的js文件下载有时候会比较慢,会影响网站的加载。好像Google Map API v3的js下载经常都比较慢,影响整体网页的显示效果。所以今天特别研究动态载入javascript文件。网上搜索了一下,无非都是那几个方法。不过我发现JQuery本身就自带一个动态下载javascript文件的函数,无需用一些插件。
jQuery.getScript( url, [callback] ) 官方说明

非常容易加重js文件,1.2版本之后就可以支持跨域下载javascript文件。

于是我就用了动态加载Google Map API v3的javascripte文件。

1
2
3
$.getScript("http://maps.google.com/maps/api/js?sensor=false",function(){
alert("Script loaded and executed.");
});

虽然显示了警告信息”Script loaded and executed.”, 页面变成了空白页面了,真是不解。开始怀疑JQuery的.getScript的问题,于是试了官方的示范例子,并没有问题。于是修改官方例子动态下载google map api的js。同样页面也变成了空白页。

估计应该是google map api v3的api问题,观看了http://maps.google.com/maps/api/js?sensor=false的源代码
阅读全文…

分类: IT, 编程 标签: , ,

wordpress程序从2.7.1升级到2.8.5版本

2009年11月6日 没有评论

今天wordpress程序从2.7.1升级到2.8.5版本。本来在2.8的版本发布的时候就想升级了。但是由于升级失败,老是提示内存分配不足。所以一路都没有升级到2.8的版本。但是最近因为需要解决一些问题的时候在网上搜索到关于2.8升级提示内存分配不足的问题。只要在php.ini文件配置一个选项就可以了。

memory_limit = 128M      ; Maximum amount of memory a script may consume (16MB)

memory_limit = 128M      ; Maximum amount of memory a script may consume (16MB)

默认是16MB的,我这里改成128M了。据说改成64M都可以的。
wordpress官方解决方法:http://wordpress.org/support/topic/194370

修改了配置文件后就直接在wordpress管理界面按自动升级就可以了。整个过程非常顺利。
升级后检查了几个主要的插件,运作都比较正常。但是有一个lightbox显示大图片浏览不正常。经过检查后发觉是jQuery的问题。由于新版wordpress使用了1.3.2的jQuery。而旧版本的wordpress使用了1.2.6的jQuery。我把旧版的jQuery覆盖1.3.2的文件就可以正常了。经过debug和网上搜索,发觉lightbox插件中的javascript使用了一个选择器的符号(@),在jQuery 1.3之后的版本都不支持了。jQuery(‘a[@rel*=lightbox]’)这样写的选择器有问题,需要把@符号去掉。改写成jQuery(‘a[rel*=lightbox]’)才可以。于是修改lightbox的代码,把wordpress的jQuery恢复回1.3.2的版本。

jQurey的官方说明:http://docs.jquery.com/Selectors
Attribute Filters:
Note: In jQuery 1.3 [@attr] style selectors were removed (they were previously deprecated in jQuery 1.2). Simply remove the ‘@’ symbol from your selectors in order to make them work again.

分类: 编程 标签: , ,

Flickr picture backup plugin for wordpress更新

2009年8月17日 没有评论

Flickr picture backup plugin for wordpress更新到0.6版本。

该版本主要增加了 <a> 连接图片的支持,方便支持一些lightbox幻灯片播放插件.因为这个blog开始支持lightbox幻灯播放图片了。所以增加支持。

例如:
<a href=”http://farm4.static.flickr.com/3456/3404575364aea19a9ab3s.jpg” >
转变为:
<a href=”http://yourdomain/wp-content/uploads/flickrbackup/3404575364aea19a9ab3s.jpg” >

已经安装的朋友可以通过wordpress的插件管理进行自动升级。

未安装的朋友可以到Flickr picture backup plugin for wordpress这里查看说明和下载插件。

分类: IT, 编程 标签: , , ,

第二个wordpress插件–flickr picture backup下载量100了。

2009年7月7日 4 条评论

今天我制作的第二个wordpress的插件–flickr picture backup终于下载量过百了。插件是6月3日发布的。经历了34天的时间。比起第一个插件Dynamic template field display.的成绩要好。

本来已经制作好第三个插件,但是发布前发现一个小bug,一路都未想到方法解决。所以暂不发布。

分类: 编程 标签: ,

第一个制作的wordpress插件下载量超100了。

2009年6月17日 1 条评论

我制作的第一个wordpress的插件–Dynamic template field display.经历左2个月左右的时间,下载量已经超过100了。虽然对比别人有名气的插件下载量过万来说只是小毛见大毛。不过对自己也是有点安慰的。不敬还是有人有这个需求,需要我这个插件。虽然我不能确定有多少用户正在使用。下个月如果有时间会对这个插件进行一次更新,主要是修改设置页面的显示效果。使它更加方便用户使用。

对应我的制作的另外一个插件flickr picture backup不到半个月的时间已经有83个下载。成绩比第一个插件好。

点击查看我写的插件下载量

未来还会制作一个与flickr照片地理位置与google地图结合的插件。不过这个插件可能相对复杂。需要点时间制作和测试。

分类: 编程 标签: ,

wordpress 自定义rss摘要输出-输出到more标签

2009年6月5日 6 条评论

今天搞wordpress的rss输出,原本并没有关心是rss输出的。不过最近托管左rss输出到feedsky。开始使用全文输出的。不过发觉全文输出的话,图片比较多,如果读者对文章表示太感兴趣的话会load得比较慢,所以想改成摘要输出。谁知道wordpress的摘要输出实在太差了,去除全部的html和图片。非常不美观。我希望rss的摘要输出和我首页的摘要输出是一样的。我首页是使用<!–more–>标签来定义摘要输出的。但是rss并不会自动摘要到more标签。

在网上搜索一些,原来wordpress的旧版本的全文输出是会自动截取到more标签的。不知到从那个版本开始rss的全文输出不在截取more标签了。反正现在我这个2.7就不会了。在管理界面也找不到设置。一时间也找不到相关插件。只好研读代码找解决方案。

重要找到解决方案了。

阅读全文…

分类: 编程 标签: