twiteseV1.3

2010-1-27 评论(25) 分类:作品 Tags:

考完试后,开始大改twitese,修复了很多大小bug,新增了一些功能,具体如下:

新增
新增官方RT,RT显示格式有两种,可以在“设置”里选择。
新增自定义API,发现默认API无法使用时可以自己设定API,在“设置”里自定义
新增停止自动刷新按钮
新增状态数值刷新按钮,更新好友数、关注者、推数三项数值
好友列表新增 关注/取消关注 按钮
侧边栏新增推群、热门消息
提示条新样式,固定在页面顶部,不会出现看不到的情况

细节
@自己的推高亮显示
ajax刷新时会更新旧推的时间
图片显示代码优化,每次刷新新推只检测新推里是否有图片。
搜索优化 纯中文字符间加空格
发推时显示的新推格式修整,链接,图片等都会显示
丰富出错提示,例如连接不上twitter、向没有关注你的人发私信都会有相应的提示

修复
修复中文标签乱码的bug
修复发送消息时过滤+ &等符号的bug
修复进入空页出错的bug
修复空间不支持加密函数时出现的错误

目前官方RT有一个问题,就是无法在timeline里显示自己是否RT过这条推,也就是说,你RT完一条推后,如果想undo,必须进入侧边栏的“RT消息”里删除那条推。自己RT过的消息在timeline里也无法高亮显示。这是官方API的缺陷,在开发者论坛上已经有人抱怨过,不知以后会不会加一个“rt_by_me”这样的参数。

之前最棘手的就是在某些空间不能加关注加收藏等问题,这些都是curl那块出的问题,貌似不同版本的PHP对这个curl语句支持不一样?没有空间可以测试不知道怎么修复。这次又小改了下这部分代码,但不确定之前那些问题是否解决了~

修整的过程感觉挺爽的,把bug一个个改掉,新功能一个个加上,挺顺利的,也重整了部分代码,把timeline的代码统一放在twitese.php的一个函数里,所有页面通过传参数调用,统一管理,可惜搜索页面和刷新推的特殊参数太多没法放进去。发现做啥东西都是刚开始时激情十足,连续做得久做得多了就没多大激情了,得换换口味休息休息才行。于是,我之前计划想加入的“高级搜索”功能,就留到下个版本再实现吧~

项目主页:http://code.google.com/p/twitese/

抓取twitter中文用户数据GAE程序开源

2009-12-8 评论(14) 分类:作品 Tags:

起源

我对抓取和处理数据挺感兴趣的,以前试过用PHP抓取饭否用户的数据,得出饭否用户统计(放在秘饭里),当时特别需要能有定时执行一个程序持续抓取数据的功能,但找不到方法,暑假发现GAE有cron功能时挺兴奋,就琢磨着要做个什么东西,抓取一些什么数据玩玩。可惜饭否挂了,否则我做的肯定是饭否的应用,饭否没了,就捣鼓twitter了。

想着想着,就想出抓取twitter上说中文的用户,形成一个排行榜,一个圈子,就是推特中文圈了,因为可以不断抓取数据,每个人最新的一条推都保存在数据库里,更新时间也保存,然后读取数据库,根据更新时间排序取出数据,就能形成的“随便看看”功能了。我最初想做的,就是这两个东西。实实在在的一个“中文圈”,后来闲着也是闲着,干脆把使用twitter需要的功能都加上了。没想到后来受欢迎的是这些普通功能,最初的那两个功能反响反倒不怎么样。另外,在中文圈发消息的时候,会自动更新存在GAE数据库里对应的用户数据,所以会马上显示在随便看看里。用的人多了,随便看看的更新就比单纯后台抓取数据快多了。

后来GAE版被封,改写PHP版,不愿放弃排行榜和随便看看,于是修改了程序,还是那样抓取数据,再提供个页面输出json数据,让php程序调用。

本来打算开源PHP版twitese后下一步就是要开源这个抓取数据提供API的GAE程序的,但一因为懒,二因为大家似乎没这个需求,就搁置了,今天偶尔想起来,就放上吧。

程序

项目主页:http://code.google.com/p/twiteseapi/

原理

读取FecthHelper数据库获得用户id和页码(第一次用下面写的initFetch页面写入初始数据),抓取他的好友列表,循环每一个用户,判断他的姓名、desecration、最新的推里有没有中文,有的话保存进TwitterUser数据库,没有的话跳过。一个页面的好友列表处理完后,判断此页是否为末页(根据好友个数是否小于一个数),不是末页则把下一页的页码写入FecthHelper数据库,等待下次执行。是末页则读取数据库TwitterUser里另一个用户的数据,存入FetchHelper,等待下次执行。

使用

在eclipse新建一个GAE项目,再把文件覆盖进去。改一下appengine-web.xml里的名字,剩下的就是提交上传了。

页面

4个功能页面:

initFetch页面,源文件InitFetchData.java
上传程序后首先运行这个页面,初始化生成FetchData数据库,写入当前要抓取的用户和页码。

fetch页面,源文件FetchData.java
核心页面,读取FetchData数据库取出用户名和页码,抓取它的好友列表,保存进数据库TwitterUser,按照不同条件判断继续下一页抓取还是改变抓取的用户。

reset页面,源文件ResetData.java
读取过的twitter用户在数据库里会标志readed=true,fetch抓取时间过长可能会导致所有用户readed都为true,这个页面每次修改100个用户的readed为false。

delete页面,源文件DeleteData。java
删除数据库TwitterUser里的数据,每次删除300条。

其中fetch reset delete都应该通过cron不断执行。

2个输出页面:

rank.json页面,源文件RankJson.java

输出排行榜数据,格式:

[{
    "profile_img_url": "http://……",
    "screen_name": "bang590",
    "name": "bang",
    "description": "",
    "followers_count": 1455053,
    "friends_count": 72,
    "statuses_count": 586
  },
  ……
]

接受参数:页码page 条数count 均为optional

browse.json,源文件BrowseJson.java
输出随便看看数据,格式:

[{
    "profile_img_url": "http://……",
    "screen_name": "bang590",
    "name": "bang",
    "text": "推内容",
    "created_at": "Tue Dec 08 15:15:50 UTC 2009",
    "id": 6465851422,
    "source": "web"
  },
  ……
]

接受参数:页码page 条数count 均为optional

目前存在的问题是,没判断API Rate limit,抓取时超过了API限制直接跳过了。
偶尔一些外国人的推里出现了中文,也会被抓取进数据库。程序写得很乱,没去整理,挺多地方有摇摇欲坠的感觉。不过上线运行了挺长时间,应该还算靠谱吧~

twitese1.1 新增list功能

2009-11-27 评论(11) 分类:作品 Tags:

更新

个人挺喜欢twitter的list功能,在follow的人多的时候尤为有用,这两天抽出时间给twitese加上了list功能,顺便改正一些小bug。

修改的bug:

php空间开启magic_quotes情况下单引号双引号前多了”的问题
消息自动刷新时执行时间超时出现的错误
修正国内空间无法搜索的问题
……还有其他一些小错误

更新:

list的查看,新增list、list成员等功能 P.S list消息界面会自动刷新
新增API limit显示
去除config.php里的SEARCH_API设置,改成在程序里自动判断
FAQ页面

待增加的功能:

图片上传、黑名单、短网址、cookie加密(原先的有错误,暂时不用了)、ajax自定义(自动刷新时间间隔,提示条隐藏等)

项目主页:http://code.google.com/p/twitese/

预览:http://twitese.webbang.net/

命名

在twitter上咨询了list翻译成中文要叫啥好,推友的答案是“列表 推列 李斯特 群组 自分类 圈子”,个人倾向于推列和群组,那么就组合一下,叫推群好了,觉得这名字还算合适吧。

API Limit

做twitese,受twitter API rate limit的限制太大了,也就是一小时限制请求150次API,超过了就要等下个小时重置才能继续。一般可以申请twitter白名单,能将每小时限制次数提高到20000次,这样几乎就没什么限制了,但做twitese是开源由大家自由架设的,总不可能要求每个架设的人都申请白名单。于是都得小心翼翼地使用API,能省既省,于是不能每次刷新页面的时候都更新用户数据,省略了每次进入用户页面就要判断是否已经加入黑名单的功能,等等。做list的时候发现要用的请求数太多了,于是,现在的list添加成员方法只有那么很不方便的一种,以后再想办法改进吧。

list API

做的过程着实被list的API恶心了不止一次。总结一下:

1.先看看list的所有API

List Methods
POST lists (create)
POST lists id (update)
GET lists (index)
GET list id (show)
DELETE list id (destroy)
GET list statuses
GET list memberships
GET list subscriptions

List Members Methods
GET list members
POST list members
DELETE list members
GET list members id

List Subscribers Methods
GET list subscribers
POST list subscribers
DELETE list subscribers
GET list subscribers id

你单看名字能知道这个API是干嘛的吗?能的话算你牛,这是第一个恶心的地方。以前的API功能是什么都是一目了然的。
例如GET list subscribers id是检查用户是是否已经follow某个list ,而GET list subscribers是返回用户follow的所有list,两者名字上的差别就是差一个单词”id”,牛。

2.每一个list API地址都是http://api.twitter.com/1/开头的,旧的API都是以http://twitter.com开头的,接下来说的你可能会看晕:
list大部分API可以用http://twitter.com代替http://api.twitter.com/,结果一样,但有些就不行:

http://api.twitter.com/1/bang590/lists.xml 可行
http://twitter.com/1/bang590/lists.xml 可行

http://api.twitter.com/1/bang590/lists/subscriptions.xml 可行
http://twitter.com/1/bang590/lists/subscriptions.xml 不可行

犯晕了没?后来无意中发觉,把所有http://api.twitter.com/1/改成http://twitter.com/就都可行了,这才让我可以继续做下去:
http://twitter.com/bang590/lists/subscriptions.xml 可行
官方API文档完全没有提到这回事,这在考验程序员的悟性么?

3.有些API完全不可用,例如GET list subscribers id,怎么搞都是出现404找不到页面,于是现在还没有判断用户是否已经关注某个list的功能。

4.最恶心的一点,为list添加和删除成员,竟然不接受“bang590”这样的用户名,而只支持一长串数字的用户ID。一直以来screen_name一直都被当做id用,在这里竟然不被支持,这下脑残了,我必须通过screen_name请求users/show,返回这个用户对应的id,再传给list添加成员的API,才能成功添加成员。list添加成员是不限制API的,但users/show要,也就是说,每添加和删除一个成员,就要用到一次API请求……巨脑残,难道是我没找到更好的办法?

总结四个字:乱七八糟

list功能没经过很多测试,所以应该还有大大小小挺多错误的,大家指正吧。

开源 php版twitese

2009-10-28 评论(141) 分类:作品 Tags:

推特中文圈

暑假完成了推特中文圈,放在GAE上,大家的反响挺好,呼吁开源的人也很多,但我一直没开源,这里写了我开源的顾虑。

好像是10月14日那天,众多twitter第三方web客户端都被封了,itweet dabr twitzap 等,还有推特中文圈。被封的时候其实我挺平静的,因为如果要禁twitter,不封推特中文圈实在没道理,早有心理准备。

其实我还没完全了解他们封的是什么,我本来以为封了IP,没戏了,有一天一推友告诉我说用一个新域名绑定到twitese,就能继续免翻墙打开了。试过后,果真如此:http://t.webbang.net,到写这篇博客为止,这个地址还能访问。看来他们封的只是twitese.appspot.com这个网址?不过ghs.google.com的很多IP都被封了,仅剩下几个残种,不知道ghs.google.com有多少个IP,要是少的话,还是不要用twitter应用摧残GAE了~

开源GAE版的twitese无济于事,再怎样都是放在GAE上,只会更加摧残GAE,于是10月23日我开始动手写php版的twitese,希望开源后网友们能把twitese架设在多个不同的php主机上,躲避功夫网的封锁。

用另一种语言重写一个网站比想象中要容易,至少前端几乎不用改。php版的twitese与GAE版的几乎完全一样,随便看看与排行榜是通过GAE版的twitese开放出API进行调用,由于怕原版的twitese流量不足,所以另开了一个GAE重新抓取数据,所以开放出来的用户数据量没有原版的twitese那么多,随便看看里的更新也没原版那么频繁,但应该已经足够了。

开源

对开源协议没有了解多少,简单的说大家修改twitese是没有限制的,也不要求修改过后的twitese同样要开源。这次发布得有点仓促,小错误应该挺多,大家碰到的话可以在这里提一下~希望有热心的人能一起改进twitese~

开源项目主页:http://code.google.com/p/twitese/(因被墙,改为http://tuite.googlecode.com)

预览:http://twitese.webbang.net/

特点

1.相对于dabr,twitese对php空间要求低

dabr对php空间要求如下:

* PHP 5.2+
* curl PHP module
* mcrypt PHP module
* mod_rewrite apache module

而twitese只需要curl PHP module,另外我在本地测试的php版本是5.2.6,没有在其他版本的php上测试过,应该问题不大。

2.twitese主要是作为web客户端,但完整支持手机ucweb浏览,网页上JavaScript的各种操作都留有后路,即使浏览器禁用JavaScript也能正常使用,所以对不太支持JavaScript的手机浏览器也是友好的。

3.twitese可以架设在国外空间,也可以架设在国内空间,只需修改twitter api为未被封的api proxy即可。

待增加的功能

1.OAuth认证:本来是想一开始就做的,由于有其他事情要做,精力有限,就暂时没有这个功能了。不过对于中国用户来说,这个功能可有可无,因为需要翻墙。

2.短网址:目前还没有提供短网址功能,待增加~

安装教程

下载源文件:
方法一:通过SVN工具下载:http://twitese.googlecode.com/svn/trunk/ 此下载方法可以保证下载的是最新的程序。
方法二:进入项目主页 点击右边的Featured downloads下载压缩后的源程序。此方法不保证下载到最新的程序。
(目前程序不稳定,随时会更新错误,请使用SVN工具下载确保得到最新程序)

下载后,打开lib/config.php,按上面的说明修改一些参数,修改完后,传到php空间,就能使用了。

(更多…)

使用twitter4j的OAuth方式登录

2009-9-24 评论(8) 分类:技术文章 Tags:

前两天想为推特中文圈添加OAuth登陆的功能,因为我整个站用的是twitter4j,所以必须得用twitter4j提供的方法去进行 OAuth登陆,但是twitter4j官方站的例子实在太诡异了,而且是针对java应用程序的例子而不是J2EE的例子,看了半天都没法把它转到 J2EE上来,网上搜了挺久也没有相关教程可以模仿,OAuth方式登录实在是够迷惑人的,两种tonke很容易就混了,源代码也很复杂看不懂,实在是折腾死人,但最终还是折腾出来了,虽然可能做twitter应用的人不多,用twitter4j做twitter应用的人更不多,但还是分享下 twitter4j的OAuth登陆方法吧。我也不太懂里面的运行原理,只把我的用法写出来。

(更多…)

新浪微博试用手记

2009-8-27 评论(3) 分类:互联网 Tags:

一直想试试新浪微博,但没收到邀请,注册也不行,一直进不了,后来@icnwhy给了我账号试用~在此感谢~试用后,想写篇博客文章说说看法。

界面

登陆界面做得很华丽,内页则跟一般微博客大同小异,但侧边栏的文字看起来粗糙,像没排过版,估计是测试版的原因。

http://farm4.static.flickr.com/3518/3860700061_56bbe7061a_o.png

转变

1.twitter上的@回复变成了博客式的评论

跟校内/人人网上的状态一样,只能在某条消息下面评论,不能回复。没有@功能。这样的转变大大降低了交流的灵活性,感觉给框死了。而且“我的评论”栏里只会有“收到的评论”而没有“发出的评论”,也就是说发送出去的评论不值得记录,很容易出现跟博客一样的垃圾评论,像下面这条:

2.twitter上的RT变成了“转发”

转发的内容以不一样的形式出现,跟自己说的话明显区分开来。twitter上的RT让人看起来混乱,也不利于统计数据。但新浪微博这样的转发形式带来的问题是,如果转发一条已经是转发的消息,那么那条消息的非转发部分不会被包含进去。例如转发下面这条消息,“推荐” 二字是不会被包含进去的,只能原封不动地转项立刚写的那些。但如果加上非转发部分,这条转发的消息将会类似网易跟帖里的“盖楼”,巨大无比,所以这样的 “转发”形式也是有很大限制。依旧是,不利交流,框得很死。

3.twitter上的标签#变成了“话题”

话题用两个#包住,例如#话题#。个人觉得相对twitter的一个#,新浪微博的两个#让人更容易分辨标签与普通内容,也不会让真正需要使用#的地方产生错误,多加一个#还是值得的。

4.twitter上的follower变成了“粉丝”

这纯粹只是改革称呼,给人感觉是新浪微博一开始就冲着明星来。这样的词语个人觉得不妥当,不过是想关注一下某个人在微博上说了什么,怎么就成了“粉丝”了?普通朋友之间的互相关注,用“粉丝”这个词让人感觉不太舒服。

审核

在国内,每一个用户产生内容的网站,审核功能是重中之重,关系到网站的存亡,估计饭否现在在恶补审核功能了。新浪微博自然明白要生存就得加大审核力度,除了机器判断关键字外,对有问题的关键字还会进行人工审核,审核通过才能发上来。用户多了后,这得要多大的人力啊,也许以后就直接屏蔽了没得说。也许因为是内测期,对敏感词还不那么敏感,可能是我掌握的敏感词不多,试到现在只有下面俩字会敏感。估计正式开放使用后,对内容的管制会更严,达到国家要求的水平~

细节

新浪微博限制的字数跟Twitter一样是140字,但却有所不同,新浪微博是140个全角字符,即两个英文字母才算一个字,而Twitter是一个英文字母算一字。

顺便看了下新浪微博的HTML,发现它完全可以作为一个反面例子:滥用div,冗余代码多,没细究,不多说。随便找页满消息数的页面,单纯HTML代码就有100K,只能说新浪实力雄厚~硬件设施不是问题~

看法

之前我在twitter上说过,twitter有两个功能,一个记录生活和感想,一个是传播和交流信息。虽然前者是刚开始时的主要功能,但后者才是Twitter大放异彩的原因。传播和交流大多是通过RT和@回复实现的,所以个人觉得twitter在个人页面里,应该把@回复和RT跟普通消息分离开来,这是题外话~

而新浪微博对@和RT的修改,使得交流和传播功能大大减弱,可以说生来就是记录和分享生活的,而不是交流互动传播信息,可以说是阉割版twitter,取其皮去其根,这也是跟天朝国情有关,在这样的环境下还想做一个互动交流方便的公共产所,无疑是找死。

很早之前在饭否上说,国内最适合做微博的就是新浪,凭其强大的明星阵容和新浪博客的用户群,再加大宣传,一下子可以吸引很多人普及大众。但目前来看,明星们也就只是在上面发博客文章的链接,懒得说话,再加上这个微博充满限制,能否吸引大众,持观望态度~

新浪微博可以说是真正的“微博”,微型博客,吃透了字面意思,除了限制字数外发送方便不用标题外,跟新浪博客没太大区别。再加上各种各样的限制,对这样的东西,个人实在是提不起兴趣去真正使用它~

Twitter盈利模式

2009-5-8 评论(1) 分类:互联网 Tags:

200732821440960

Twitter是当今互联网最热门的应用,并且热度还在不断攀升,从google trends可以看出Twitter的上升趋势几乎成J字型

Twitter目前用户数约2000万,并以月增长近100%的速度疯长,而且用户粘性很高。虽然持续热门,用户数众多,但事实上,Twitter还没收入过一分钱,所有的资金都来自风险投资。

Twitter赚不了钱吗?事实上,外界不断在为这个互联网新宠出盈利的点子,许多是可行的,但Twitter迟迟不见其盈利模式。个人觉得原因有下:

1.首要任务是搞好底层服务,让Twitter稳定运行。因为Twitter之前不断出现当机,一直被人所诟病,现在在国内访问Twitter速度也是比较慢,首要解决的是这些问题。

2.做好实时搜索,Twitter是关于数据的网站,如何整合处理这些数据是网站的核心问题,搜索就是处理这个核心问题的主要工具。google想收购Twitter也是为了它的实时搜索。实时搜索做好了,可以挖掘出潜在的盈利模式。

3.Twitter正处于疯长期间,开始实施盈利模式可能会放缓增长速度。先全力争取用户数量,用户数是衡量Twitter价值的标准之一,有了大量的用户,才能有盈利的保证。

4.没有完美的盈利模式,还需研究和试验

所以,Twitter暂时不会推出盈利模式,而它的投资者也说了,对Twitter有足够的耐心,就目前来看,Twitter并不缺乏盈利方法。

就投放广告而言,有以下几种:

1.侧边栏广告

Twitter侧边栏有一个推荐第三方应用的方框,如果把这个方框换成广告,或者再增加一个方框放置广告,估计所有的用户都不会有意见。

侧边栏的广告可以像google adsense,对页面出现的文字进行分析再投放相应的广告。

这会比google adsense 更有成效,因为Twitter页面上的文字都是自己和好友发送的信息,用户更有兴趣。例如好友发送了一条关于kindle阅读器的消息,这时你刚好看到侧边栏出现了关于kindle介绍和购买的连接,很可能就会去点击。

但这个的问题是,很多Twitter用户并没有上Twitter.com网站,而是用各种第三方工具如TweetDeck发送和接收消息,这些人就看不到广告。

2.插播广告

在你或你的好友发送一条有特殊关键字的消息,比如iphone,可以让系统自动向你广播另一条带有Iphone的广告。

这与上面说的侧边栏成效差不多,不同的是,所有用Twitter第三方应用接受和发送信息的用户都可以看到这条广告。

不过这可能会引起用户的厌烦,使用的可能性不大,若真做,需要控制好发送的频率。

3.搜索嵌入广告

Twitter搜索具有跟GOOGLE不一样的价值,例如在火箭和湖人的比赛中,想知道大家对这场比赛的反应,那么在twitter搜索Rocket, Laker, Kobe等会出现大家对这场比赛实时的评论,因为搜索的即时性,在很多方面,twitter的搜索比google的搜索更有用。

随着Twitter用户数量的增多,用Twitter进行搜索的人数量不少,所以可以在搜索里嵌入广告。形式可以跟google等搜索引擎相同,即与搜索关键词相关联。

非广告的盈利模式,可行的比较少。

1.增值服务

类似QQ,在提供基本的聊天功能之外提供如QQ秀这样的增值服务,Twitter可以为收费的用户提供更好的个人页面,或者提供其他更多的功能。但似乎美国人对个人页面的外观并不感冒,可行性并不怎么好。

2.向第三方应用收费

第三方应用也有盈利的可能,对盈利的应用,Twitter可以向其收取一定的费用,但操作起来很困难,开发者也会有意见。

3.出售数据分析

对想利用Twitter进行营销的人/公司提供有用的数据,分析哪些用户是目标对象,让营销者可以批量follow这些用户。

4.付费follow

如下图,付费$x才能加其为好友,但需要这个人的Twitter十分有价值,才会有人愿意买。同时这也破坏了Twitter的信息免费共享的原则,不太可能实现。

fry-part

所能想到盈利模式就只有以上几点。Twitter最终有可能没有出现任何商业模式,而是被其他公司收购,最近就传苹果会以7亿美元收购Twitter,似乎被收购的可能性,还是挺大的。

这是我的Twitter页面,欢迎follow

[AIR]微博客数据保存 twitkeeper

2008-10-2 评论(8) 分类:作品 Tags:

twitkeeper

需要安装最新ADOBE AIR v1.01 :http://airdownload.adobe.com/air/win/download/latest/AdobeAIRInstaller.exe

twitkeeper下载:twitkeeper.zip

在某个时候看到一句话:“话说,腾迅QQ也总有一天会消失,那么一些记录也就只是或长或短的暂时;那么,饭否,也是吧?”

我是 觉得腾讯QQ是只会演变成别的东西而不会消失,饭否就不知道它能提供服务多久了,饭否没有盈利,创建它的人也放任着饭否不管全力搞海内了。不过饭否有那么 多的用户,在互联网用户是基础~~所以该是不会突然就消失的。数据是放在网上安全还是放在本地由自己保管安全?就几年前的话毫无疑问自己保管才踏实,现在 就不一定了,有时放在实力雄厚的网站上更安全。饭否现在来说,实力并不咋样。饭否已经不增加新功能了,搜索功能都没有(不会是我没发现吧?),各种对数据 的统计也没有。

所以,就想写个程序,一可以保存饭否上的数据,二可以对保存的数据进行分析统计。其实所有的微博客构造都差不多,于是想做可扩展的,不单是读取饭否的,也可以读取叽歪、滔滔、twitter等其他微博客内容的。

获取数据是一页页读取HTML再提取有用的数据的,由于安全沙箱的关系,网页中不能获取不同域的网站的页面数据,所以需要做桌面应用程序。做桌面软件, 我就只会做ADOBE AIR程序而已,事实上,我只会用网络语言。上次的账本程序用actionscrīpt3写,这次就用javascrīpt写了,刚好很想练练js,刚好 发现一个很好的软件aptana,写程序、调试都很方便,又刚好看到一本好书Pro Javascrīpt Design Patterns,于是在暑假接近8月的时候就开始写了~~

开头部分十分认真,想结构想半天,想很多以后扩展什么的,定一个类都定半 天,写的代码看起来挺舒服。后来暑假某一段时间开始就不写程序啦,到了开学都没怎么再写,开学后事情又多,没啥时间,又想快点完成这个程序,好专心做其 他,结果,我做东西的一贯作风:虎头蛇尾又出现了。。现在的程序又变成了只求效果,不管结构、扩展什么的东西了~~这个是匆匆完工的,外观做得马虎,统计 的东西应该用图表表现出来的,现在直接输出数字了,挺难看,名字叫twitkeeper,twit是微博客元始天尊twitter的缩写,但里面只能读取 之前写的饭否和叽歪,懒得去写twitter的读取了。。程序没经过多少测试,BUG有多少就不知道了。。

之前设想,先做出基本的,以 后再慢慢扩展以下功能:用户登陆,可发送信息,可同时发送一条信息到多个微博客(饭否、叽歪、twitter等),支持读取封闭帐户(就是只有好友才能查 看的帐户),支持读取保存私信,视图可任意扩展,本地收藏夹(每条消息后面有选项“保存到收藏夹”),等等,有了数据,就可以进行各样的分析统计。上面那 些想起来都是可以实现,不过相当麻烦,估计我是不会再做。。

在做的过程发现,饭否比叽歪好很多,饭否读取速度飞快,叽歪读取速度那个慢啊。。饭否页面结构好,获取数据的时候省事不少,叽歪的页面。。内容不是单独在一个标签里,奇怪。页面又很不简洁。

运行的时候,才发现在页面插入DOM很耗时,显示四五十页的文件都要五六秒。。这个应该可以改善的,改成不一次性读取,有空再改。搜索遍历等的查找就很 快。用XML格式储存数据得注意”<” “>” “&”这三个字符,会破坏XML的结构,当时分析XML结构出错时就在想,早知用json了,没那么严格,XML一不小心结构没了就完蛋。。

ADOBE AIR虽然说支持用JS写,但觉得还是用FLEX做,用actionscrīpt才是正道~~用JS麻烦不少~~

我自己是觉得应用里的搜索功能挺好用,就是读取数据多的文件时很慢,上面说了,在页面插入DOM很耗时,待改进。

10月3日更新:

昨晚放上twitkeeper时就说到,读取数据多的文件时十分慢,今天刚好看一篇文章:Javascrīpt动态生成表格的性能调优,用数组储存元素再一起放进页面,速度提高了近10倍~~~~现在读取的速度很快~~~不晓得为啥用数组储存会比其他方式快那么多,估计得深入了解才能知道~~