<>
2010.9

Blogroll

最新的留言

Tags

22 Aug

GAE改进了对图像服务的支持

中文水平不行,标题写得比较晦涩。Google本周发布了GAE的1.3.6版本,包括了一个新的名叫High-Performance Image Serving的特性,即当用户在访问存储在data store里面的图像资源时,可以选择让Picasaweb的infrastructure来serve the request, and serve it resized or cropped if you prefer。与原有的PIL服务相比,最直观的感受就是速度快了一大截,相当之爽。周末没事实践了一下,具体效果可以看这里,代码我也放在这里了

新特性对于原有的代码,并不要求太大的改动,只要图像是存在Blobstore里面(注意这跟BlobProperty可是两回事,我原来也是把图像放在blob字段里,这回做了一个migration),把它的key(要str它先)传给image.get_serving_url就可以得到一个类似http://lh6.ggpht.com开头的URL,and this is powered by the picasa infrastructure, quite amazing isn't it?

不过使用这个新功能有一个小前提,就是必须enable billing on 你的 app。Google用的是自家的Checkout,而鉴于天朝已然被开除球籍,p民们只好把自己伪装成香港或是台湾同胞,万幸的是党妈开的这些银行发的卡美帝还是认的。enable billing并不意味着要被charge,原先的free quota依然算在内,像我写的这种一个月能被访问一两次就算不错的网站,那是绝对不会产生什么charged bandwidth的,哈哈。

11 Aug

关于cookie过期时间的小问题

访客反映小站的主题切换功能无法跨session保持状态,经核实应该是浏览器对cookie属性支持的问题,具体结论如下,欢迎同好讨论:

  • 据说IE up to version 8是不支持max-age(也就是我原来用的属性)的,而expires是各家浏览器都能解析的,但在遇到max-age时,其他各家浏览器就不管expires了;
  • 上一条的结论微软的官方说明在此,另有一篇MSDN的blog有相关记载,说出现这种情况的原因是在相关RFC发布之前,微软就按照网景公司定的规范实现了cookie模型,后来估计觉得没必要也懒的改了;
  • RFC的说法expires的格式应该是Wdy, DD-Mon-YY HH:MM:SS GMT,经实验(windows/IE8),前面的三位日期缩写是不能少的,中间的月份缩写是可以用数字代替的,后面的GMT是可以忽略的;
  • 理想有多远,请IE(版本8以下,不含)滚多远。

欢迎同好讨论!

3 Aug

Change, Yes We Can!

给blog换了一个CSS,哈哈,敢用新瓶装旧酒~~~新主题口味比较重,不喜者可以在页面底部切换:

切换主题

15 Jul

乱弹浏览器

今天看到新闻,说大门同志针对Chrome OS发表了如下言论

"It just shows the word browser has become a truly meaningless word," Gates said. "What's a browser? What's not a browser? If you're playing a movie, is that a browser or not a browser? If you're doing annotations, is that a browser? If you're editing text, is that a browser or not a browser? In large part, it's more an abuse of terminology than a real change."

抛开对Chrome OS的争论不说,我觉得这段话说得还是蛮在理的,现在什么软件都往网上做的趋势让浏览器本身早已超越了网页浏览的范畴,把它叫做网络应用容器(洋名就叫WAC)似乎更贴切一些——一个URI对应一个应用,界面就用Ajax、Flash、本地API或者以后的HTML5或者更多乱七八糟的东西画,完了数据就往云里面扔,这么一来以前所说的B/S和C/S就完美融合成新概念W/C(意思是WAC/Cloud)了,当初说B/S好不就是图个省事么敲个网址就能用其他啥也不用管,现在的W/C更牛叉了不但B/S的优点都有C/S的优点也都有了,互联网由此掀起一波新的高潮。

其实这W/C也不是什么新的概念了,Adobe的AIR说白了也就是这么一种WAC,只不过它是有本地权限并且可以用socket通信的,所以跟新一代的浏览器还是有一些区别;当然据说遥不可及的HTML5里面也引入了WebSocket的概念,我不大了解,但是可以看到所有这些技术的出现和演进都预示着浏览器这个术语终有一日将退出历史的舞台。

不过这电脑也不是都能上网的啊,所以估计Google搞的那一套东西还是一如既往的被一小撮精英所追捧,咱广大老百姓特别是生活在这个神奇的国度的人们还是等着上Windows 7吧,我觉得它更值得我们期待。

17 Jun

土法炮制TinyMCE的上传插件

我看部落格后台使用的是TinyMCE作为rich text editor,这么做主要是为了兼容wordpress——把wp的数据迁移过来可费了牛鼻子劲了——多处代码都是在兼容wp的html过滤和输出,因此为了保持一贯性,现在也就继续使用TinyMCE(我用的版本是3.x,一下代码不适用于2.x)来写东西。

TinyMCE的扩展性还是很不错的,wordpress就把它改了个乱七八糟。我没那个本事也没那个功夫,但是上传图片还是得做的。放狗搜了一把,大都是在讲怎么集成别人做好的上传插件,于是我自己啃了半天wiki,这里把大概的流程记一下:

  1. 首先工具栏上得有按钮,名字是叫image。还有一个advimage,看名字就知道功能更牛鼻,不过当然用起来也就更复杂了;
  2. 添加了按钮之后点击它弹出的窗口(以下称窗口甲)并没有什么地方可以浏览要上传的文件,因为这个按钮本身的意思只是插入一个<img>标签,所以必须再弹一个窗口来上传,然后把生成的URI填进来。在TinyMCE的初始化函数init里面添加一个叫file_browser_callback的键值对,指向我们的浏览回调函数(先写一个空壳);
    tinyMCE.init({
    //其他的参数
    file_browser_callback: 'wfb'
    });
    function wfb(field_name, url, type, win){}
  3. 这样子窗口甲上就会出现一个browse按钮了,那我们需要点击它之后弹出来上传的页面,就是调一个函数,最关键的其实就是file那个键值对:
    //field_name: 窗口甲等待填入URI的文本框的id
    //url: 对于上传来说就别管了
    //type: 这个也不说了,对我们没用
    //win: 这就是窗口甲的句柄,后面用来通信
    function wfb(field_name, url, type, win){
    tinyMCE.activeEditor.windowManager.open({
    file : '/admin/uploadImg', //上传窗口的路径
    title : '浏览图片',
    width : 420,
    height : 200,
    resizable : "no",
    inline : "yes",
    close_previous : "no"
    }, {
    window : win, //告诉它是被谁弹出来的
    input : field_name //这个是指生成的图片地址要往哪里填
    });
    return false;
    }
  4. 这么一写,点击browse之后就会弹出我们的页面(以下称窗口乙)了,这也就是后台要做的事了。这里还有一个问题,上传完之后如何把生成的URI填回窗口甲?这里要用到popup这个东西,我也没空研究这是什么了,总之它能在TinyMCE弹出的窗口之间传递参数,我们需要让窗口乙告诉窗口甲URI。我的做法是后台使用同一个类(/admin/uploadImg)来处理,收到GET请求的时候就返回一个简单的上传页面,收到POST请求的时候就保存图片,然后输出类似这样的代码:
    <script src="/tinymce/jscripts/tiny_mce/tiny_mce_popup.js" type="text/javascript"><!--mce:0--></script>
    var FileBrowserDialogue = {
    init : function () {
    var win = tinyMCEPopup.getWindowArg("window");
    //就这句关键,IMG_URI应该由服务端生成
    win.document.getElementById(tinyMCEPopup.getWindowArg("input")).value = 'IMG_URI';
    tinyMCEPopup.close();
    }
    };
    tinyMCEPopup.onInit.add(FileBrowserDialogue.init, FileBrowserDialogue);


    于是URI就能填回去了。

其实蛮简单的,就是几个概念有点绕。

9 Jan

很讨厌的一个网站

近几个月狂用搜索引擎,发现有一个叫experts-exchange.com的网站出现频率很高,不过这个网站很不厚道,居然要收费才能看回帖…偏偏很多时候它在搜索结果里面给出的链接和我搜索的关键词匹配度很高,所以我在想,他们是不是在搞鬼?不管怎么说了,在这么自由的年代,一个技术网站居然要用这种方式来赚钱,实在令人不齿,呼唤工人阶级的同胞们一起声讨这种无良商人。

19 Sep

开心网很是神奇啊

我就不明白了,这么一个难看又难用,而且一点创新都没有的网站,怎么就火成了现在这个x样?还是说市面上的确就少了一个像校内网一样,但主要面向上班族的娱乐网站?互联网真是有点莫名其妙,可怜了海内网,其实东西是差不多的,但可能是做的过于严肃了,估计只能在一个不大的圈子里缓慢发展。现在的上班族看来的确急需一个能消磨时间的、但又不会让老板发飙的玩具,不过开心网那点东西,看两天我就腻了,真不明白怎么会有那么多人整天泡在上面……

而且现在校内、开心网还是沿袭了早期Facebook的UI设计,对于那种比较活跃的用户,一打开页面就是一长串的信息,个人感觉看起来挺不爽的,很难及时定位到信息;但是如果改成现在Facebook那样,感觉又过于复杂了,对于一个新手来说,进去之后到处都是按钮,到处都是链接,各种各样的关系像蜘蛛网一样让人找不着北,对我来说同样挺失败的,虽然说新版Facebook看起来的确相当专业。

其实我觉得,把bbs改良改良,就已经很好玩了……

22 Mar

IE8的调试工具

虽然名字和原来那个add-on是一样的,但新的tool借鉴了很多firebug的元素,变得更方便开发调试了。用了几天,写点感受。

  • 可以断点跟javascript了,结束了alert噩梦。但是eval出来的script不能设断点(像dojo那种),这时又没有console对象,还是挺不方便,以后应该能加上吧?Callstack不错,跟firebug的差不多。
  • 样式方面也能显示元素的dimension了,不过画得不大好看。层叠的样式可以显示继承顺序以及computed value,不过初始整棵树是collapsed的,为啥就不能全部展开呢?每条规则可以启用/禁用但不能修改,这个应该也是留着做以后build的enhancement,因为inline的style已经是可以修改的了。
  • 搞了个immediate window可以在当前context下evaluate代码了,不过界面还很土,只是用了一个文本框来显示结果,对于对象只用一个{...}来代替,比firebug真是差太多了。
  • 最大的不足是console里的对象都只是plain text不像firebug那样像超链接一样是可以点击跳转的,这个不知道是不是跟浏览器内核有关?也许在IE上面实现这样的功能并不是很容易。
  • 有个按钮可以在IE5/7/8的渲染方式之间切换,很方便,不用重启就能看到变化,但会reload一下。看看M$自家的MSDN在quirk/standard模式下的表现吧~

msdn under different render mode

结论:M$是故意把东西做得这么简陋的。

22 Oct

vista的新web字体

solidot上看到一篇旧文才发现vista里面新来了一批标准web字体的替换,这才意识到原来word 2k7里面默认的正文字体Calibri居然是M$的新作,看起来的确不错啊。我按文中所说的替代关系试验了一下,简单说几点感觉:

vista_fonts.PNG

  • 这几个C字体貌似都偏小,难道字号的大小在每个字体上海能体现出区别来?
  • 衬线字体里,Georgia完全可以被Constantia取代了, 一样歪歪扭扭的数字风格,但看起来就清爽多了;如果想看正常一点的数字就用Cambria,Times New Roman现在好像都比较少用了,感觉这个字体的正体在印刷品上的确不好看,虽然斜体的时候很漂亮;截个图对比一下Constantia和Georgia(前者字号放大了一点):cvsg.PNG不过其实老的Palatino就挺好了,我以前写简历就是用这个字体嘿嘿。
  • Verdana还是很好看的,感觉新旧几个无衬线字体都挺不错的,用哪个都差不多,新字体也就是细了点小了点;比较不解的是Corbel的数字为啥做成了Georgia风格?
  • mono字体方面,貌似我一直在用的Courier New早已被人们遗弃了,从Andale到新的Consolas,这些coding字体的风格感觉都趋向圆滑,但我觉得写代码还是用衬线字体好看一些....是不是老顽固了呢?不过好在平时也不经常把l和1放在一起,就将就了吧 
  • 最关键的一点,字体都是M$自己搞出来的,大多数机器上没有....