博客将发挥其“门户”功能

Posted by Spoony - 2009.2.25 at 8:45 PM

互联网应用日益丰富的今天,作为一个不新又不老的互联网应用——“博客”,该如何定位其功能与价值呢?

早期形成的互联网应用如Email,实现了邮件功能,异步的;IM,同步短消息传递,后来有了群,主要功能是找到在线的人并与他们同步交互;社区,完成了多人话题讨论的功能。然后有了Blog,在我印象中最开始出来的是独立Blog,然后才是Blog门户,这个时候互联网慢慢Web2.0了起来。之后出现的应用就更丰富了,这是因为Web2.0的概念被得到了充分的重视和有意识的挖掘。播客,Twitter,Facebook之类的服务涌现出来,并相继出现了成熟的互联网应用产品,使得搭建这些站点服务的门槛降低。

这么一回顾,博客确实是一个说不上新,又谈不上老的一种互联网应用。其地位没有那么绝对了,但目前也不可能被其他类型的应用取代,就好像社区没法被其他类型应用取代一样。那么博客将会发展成一个什么样呢?还是就这么在功能上固化下来了呢?

在我看来,博客的基本功能早已固化,但其应用范围确是逐步扩大的,应用范围的扩大又使得其功能逐步丰富和完善,这正有力的证明了博客最原始的功能定位是非常成功的。我们已经可以看到一些明星大腕也在用博客发布个人动向,博客在里面充当了个人门户;很多的著名企业都以博客的形式来建设自己的企业文化,博客又在里面充当了企业文化走向大众的载体。看到这里,有些同志可能会开始怀疑我是不是在为博客做广告。非也,非也,我个人并不是博客产品的拥护者,但我却是博客的受益者。从博客应用范围的趋势中我看到博客的“信息门户”功能在突显。很多BlogSP没有将这一部分功能充分挖掘,导致他们的博客与SNS等互联网应用打了个平手,最终给用户的感觉就是博客正在被SNS等新兴应用所取代。然而事实并非如此,还是有很多优秀的独立博客和一部分BlogSP的博客服务是成功的,他们将博客成功的打造成为了个体信息的门户。

所谓信息门户(Portal),也就是信息收集、发布的平台。个体(可以是个人,也可以是团队,亦或者是企业)将信息从这个门户发布出去,同时这个门户的聚合功能又将各种对个体有用的信息收集回来。而这个收集信息的功能的强大与否取决于这个博客支持的外部接口的多少。理想情况下,任何信息只要遵循了一定的标准,都可以被集成、聚合,我想这将是今后博客应用发展的一个主要的空间与机会吧。

PS,博客支持的更多的接口和标准将被开发出来,有兴趣的朋友们可以从现在开始尝试着好好规划设计一下自己的博客,利用博客来包装自己喽。

Chrome 目前不支持 about:config

Posted by Spoony - 2009.2.23 at 9:46 PM

一直使用 Google 的 Chrome 浏览器,Chrome 是基于开源软件 WebKit 引擎二次开发的。但今个儿发现 Chrome 没有 about:config 配置页,而有时候却会提示 “请在浏览器中输入 ‘about:config’ 并回车”,一个小小的失误呵呵。

经查,目前 Chrome 支持的参数有以下这些:

about: //关于页面
about:network //显示网络I/O页面
about:dns //显示DNS
about:plugins //显示安装的插件
about:memory //显示页面内存使用
view-cache:[URL] //浏览此URL的缓存数据
view-source:[URL] //浏览此URL的源文件

希望 Google 能注意到这个小失误。

C#生成背景透明的GIF文件

Posted by Spoony - 2009.2.22 at 2:23 PM
在C#中调用Graphics.Clear(Color.Transparent) 生成 gif 格式透明文件时,设置的透明不起作用。使用 Bitmap.MakeTransparent 方法同样不起作用。这两个问题也是微软的设计使然,和 gif 文件格式有关系。下面一段代码可以生成背景透明的GIF文件。
public Bitmap MakeTransparentGif(Bitmap bitmap, Color color)
{
    byte R = color.R;
    byte G = color.G;
    byte B = color.B;

    MemoryStream fin = new MemoryStream();
    bitmap.Save(fin, System.Drawing.Imaging.ImageFormat.Gif);

    MemoryStream fout = new MemoryStream((int)fin.Length);
    int count = 0;
    byte[] buf = new byte[256];
    byte transparentIdx = 0;
    fin.Seek(0, SeekOrigin.Begin);
    //header
    count = fin.Read(buf, 0, 13);
    if ((buf[0] != 71) || (buf[1] != 73) || (buf[2] != 70)) return null; //GIF

    fout.Write(buf, 0, 13);

    int i = 0;
    if ((buf[10] & 0x80) > 0)
    {
        i = 1 << ((buf[10] & 7) + 1) == 256 ? 256 : 0;
    }

    for (; i != 0; i--)
    {
        fin.Read(buf, 0, 3);
        if ((buf[0] == R) && (buf[1] == G) && (buf[2] == B))
        {
            transparentIdx = (byte)(256 - i);
        }
        fout.Write(buf, 0, 3);
    }

    bool gcePresent = false;
    while (true)
    {
        fin.Read(buf, 0, 1);
        fout.Write(buf, 0, 1);
        if (buf[0] != 0x21) break;
        fin.Read(buf, 0, 1);
        fout.Write(buf, 0, 1);
        gcePresent = (buf[0] == 0xf9);
        while (true)
        {
            fin.Read(buf, 0, 1);
            fout.Write(buf, 0, 1);
            if (buf[0] == 0) break;
            count = buf[0];
            if (fin.Read(buf, 0, count) != count) return null;
            if (gcePresent)
            {
                if (count == 4)
                {
                    buf[0] |= 0x01;
                    buf[3] = transparentIdx;
                }
            }
            fout.Write(buf, 0, count);
        }
    }
    while (count > 0)
    {
        count = fin.Read(buf, 0, 1);
        fout.Write(buf, 0, 1);
    }
    fin.Close();
    fout.Flush();

    return new Bitmap(fout);
}

我们是否可以建设一个计算机软件博物馆呢?

Posted by Spoony - 2009.2.17 at 1:32 PM
在 Donews 上看到一篇文章《互联网之父:互联网应把广告选择权交给用户》。
据国外媒体报道,“互联网之父”谷歌副总裁温顿·瑟夫(Vint Cerf)近日在搜索引擎营销(SMX Conference)大会上,对互联网现状进行了分析,并指出了对互联网发展的期望。瑟夫表示,互联网现在仍然面临诸多问题。

......

瑟夫警告称,当支持互联网数据的程序一旦过时,那些互联网上的大量信息将随之消失。
 
互联网用户的增多,许多内容出现在互联网上。人们采用各种格式将内容上传至网络,瑟夫认为,为了下一代,大家有必要采取行动,将现在积累的数字信息进行保存。瑟夫指出,如果到了3000年,当你进行谷歌搜索,找到了一份1997年的PowerPoint文件,而你这时使用的可能是Windows 3000系统。那么问题是你现在的程序是否还能帮你打开PowerPoint文件吗?答案可能是不行。
 
为了保存这些信息,我们需要找到方法,来保存相关应用软件、操作程序,甚至是保留一些硬件的仿制品,以使这些程序能帮我们解读这些信息。瑟失称:“今年一月,我访问了埃及的亚历山大图书馆,在图书馆里存放着一千年前的手稿,它们仍然完好无损。如果我们不采取同样的保护措施,我们的子孙后代将会如何看待我们和21世纪?或许在他们的眼中,我们就是‘垮掉的一代’。”
看到这段文字,我也意识到这是未来的一个很严重的问题。随着互联网的普及,无纸化的普及,数码设备成为人们的习惯,越来越多的文档、信息都没有最终成为纸质品而以某一种数据格式存储于某种设备上的某种存储介质里面。那么随着时间的流逝,这些数据必定会被软硬件的更替而变成“兵马俑”。

现在我们能做到的就是制定一个“永恒”的标准来存储某些数据,或者按照最“本质”的方式来存储数据;但这还远远不够,因为很多数据的格式不可能那么单一。为此我们是否可以建设一个计算机软件博物馆呢?

Google Talk 不是电话服务,无法用于拨打紧急电话

Posted by Spoony - 2009.2.14 at 7:44 PM
Google 的 GTalk 下载页面下注明了这么一段文字。

Google Talk 不是电话服务,无法用于拨打紧急电话。

接着,我被感动到了。我幻想着公元某年某月某日,某个时候。在某个地方,某人身处危急地寻求帮助。可是,在他的身边缺少与外界联系的工具,他需要给外界打一个求助电话。不过值得庆幸的是他找到了一台可以上网的计算机。这台计算机上还没有安装电话服务软件,为此,他不得不去下载一个。而在这之前他是一个只是听说过互联网通信的菜鸟,也没有使用更没有申请过任何的电话服务软件的帐号。他只会通过搜索引擎去Search,他要找的是能够快速联系外界的电话服务软件。

当他下载并尝试了几个即时通讯软件之后,发现他们并不能有效地联系到需要的人,他开始绝望了,而这使他的处境更加地可怕。同样地,当他找到上面的那个页面的时候,他正准备再次下载尝试,他看到了下面的那行字。他感动了,他从那行字上面节省了不少的时间,而用剩下不多的时间去寻找电话服务软件。

如此细致的情形 Google 也能为用户以及潜在的用户考虑到,这不能不让我感动。与此形成鲜明对比的是,某些门户和即时通讯SP的页面设计就相当自私,恨不得让用户陷入自己精心设计的迷宫式的网站地图里,惨死在里头!

本博程序升级,博易v1.8 的新增功能抢先看

Posted by Spoony - 2009.2.13 at 11:21 AM

经过一天基于 BlogML 的数据转换程序开发,本博的数据得以从原先的 SQLServer 数据库方式转换为 XML 文件方式。转过来之后的效率大家可以体验、比较。个人感觉 XML 方式比数据库方式在10万数量级数据下性能要优越。

这次上的是 博易v1.8 beta 版,新增功能主要有

1.评论新增插入表情面板(见下面评论编辑区域);

2.嵌套式评论,可以针对某一评论进行回复,以树状方式显示,这个功能很酷,有兴趣的可以在本文下面评论测试;

3.FCKediter 彻底取代了原来的 TinyMCE 编辑器;

4.可以同意设置显示一定长度的字数作为文章摘要显示在文章列表;

5.增加了对日语的支持;

6.新增 Visitor Info 部件,可以显示访客的信息,提示他的最后一条评论后面是否有人评论,还能帮助访客根据自己的偏好文件(APML文件,如果有)筛选他可能感兴趣的文章,给人感觉比较亲切(见本博右侧上方);

7.文章点击次数统计;

新版还改进了很多细小的地方和一些 BUG。3月1日正式发布之前请大家多来本博测试,发现问题哦。有什么问题在这里发邮件给我

Lambda 表达式,BlogEngine.NET使用了 .net 3.0 特性

Posted by Spoony - 2009.2.10 at 5:2 PM
完成了 博易v1.8 与 BlogEngine.NETv1.4.5 的功能同步,其中遇到一个小问题——Lambda 表达式。
“Lambda 表达式”是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型。 所有 Lambda 表达式都使用 Lambda 运算符 =>,该运算符读为“goes to”。该 Lambda 运算符的左边是输入参数(如果有),右边包含表达式或语句块。Lambda 表达式 x => x * x 读作“x goes to x times x”。可以将此表达式分配给委托类型,如下所示:
delegate int del(int i);
del myDelegate = x => x * x;
int j = myDelegate(5); //j = 25
详见:http://msdn.microsoft.com/zh-cn/library/bb397687.aspx

BlogEngine.NET 的这个改进将使其在 .net 2.0 的开发环境下编辑时出错。而博易考虑了兼容性方面的问题,在同步的时候以 .net 2.0 的编码方式重写了这些代码。博易v1.8 将于 2009.3.1 发布,选择这一天是有特殊意味的,这一天是博易自第一个版本发布以来的一周年纪念。新版本将有一些颇具创意的功能出现,从这些功能上的改进我们不难看出,BlogEngine.NET 开发团队是一只有着创新思维的开发团队,他们对博客的理解是独到的;博易是一个具有发展潜力的博客产品,我们应该对它的未来抱有希望,并且相信它将越来越好地为人民服务:p。

人之个性的三种境界

Posted by Spoony - 2009.2.7 at 3:4 PM

人之个性的三种境界——“俗套”、“叛逆”和“独树一帜”。很有趣!

入“俗套”是成熟的标志,这时的人可以体会到自己因为某种成熟的改变而在处理人际关系上面的游刃有余。不过“俗套”终究是个“套”,它会把人的行为甚至思想“套上”,约束、制约着个性的张扬。话说回来,倘若人人有一套,大概人际关系的处理上会更有默契些。

可事实并不如此,偏偏有人开始“叛逆”了。叛逆的人开始张扬他们的“个性”,俗套中的人们也看不惯他们,搞得这些叛逆者很是尴尬,甚至产生心理问题,于是有的更叛逆了……

有些个“叛逆者”沉寂下来,成就了一番。俗套中的人们又开始慢慢认可或者接受他们的个性,此时,他们的个性是历经考验的个性,已经不再是之前的那种尴尬、无奈的“叛逆个性”,人们当然也就有可能接受。这时,他们的个性开始“独树一帜”,更有受到不少人啧啧称赞的。

所以我说,人之个性的塑造也就是一个谋求价值认同的过程。

Python几行代码实现英文朗读

Posted by Spoony - 2009.2.7 at 11:19 AM
需要安装 pywin32 模块。
#-*- encoding: gb18030 -*-
import sys
from win32com.client import constants
import win32com.client

speaker = win32com.client.Dispatch("SAPI.SpVoice")
print "在下面输入英文单词或者英文字母,也可以是句子,输完按回车进行下一行输入。"
print "如果想退出按Ctrl+Z"

while 1:
  try:
    s = raw_input()
    speaker.Speak(s)
  except:
    if sys.exc_type is EOFError:
      sys.exit()



spoony

Categories

Shared Reading

Are you interested?

Recent comments

Comment RSS

Archives


耍宝