Ghost in Posterous

January 03, 2009

Fat models, skinny controllers

简单搜索了一下,有不少关于这个概念的文章:http://www.google.com/search?hl=en&q=fat+model+skinny+controller

由于对数据的操作都封装至 model 之中,实际上 controller 只剩下 route 这个工作了。测试也挺省功夫,毕竟 model 的单元测试也是必不可少。

若把这个概念应用到 PHP 开发中,controller 可以完全用 function 编写而不再使用繁琐的"类"。估计这个对于整个程序速度的提升可不少;或者这对于现存的 PHP 框架来说,并不是好事?毕竟现在的 PHP 框架,都太臃肿了,尽管功能强大。
Comments [2]


December 31, 2008

2008

2008 是消失了的一年,我甚至没有感觉到我的变化,没有感觉到我已经大三了。

技术上基本没有突破性的进展。代码写了大概4000行左右,少得可怜。Delicious 上的收藏数还不到2000。

生活上——貌似更会去享受和体味生活了,结果之一就是存款的清空。拍了很多照片。认识了好些人。很好,终于去了两次电影院。

记忆已经想不到这一年做过点什么,甚至一个月前的事情也觉得十分遥远。

2007 年末写下了三点祈求:
  • 每两个月看完三本以上技术类书籍。2008 年的学习目标是能用 Python 和 Java 写不含 GUI 的程序,以 MySQL 为主的数据库管理和部署,深入学习一些作为 System Administrator 所需要的技能,例如 Bash 以及那些 Unix/Linux Utilities 的使用。
  • 对于维护一个项目有更深的体会和经验。目前我在维护的站点包括 leechael.orgv2blog.com,而遗憾的是,我没有很好地维护这些站点,尤其是 v2blog。
  • 保持单身。虽然我能脱离单身本来就是不可能的事情。;P
除了第三条,其他都没有做到。Damn it....

新一年需要更好的计划,最起码看书要有一个计划,日记也得考虑天天写。

远景?
  • 用 Python 做一个 reco。Reco 是什么?fcicq 知道就行了…… :D
  • 看些数学和统计方面的书。
  • 背些单词。学一些简单的日语。
这些应该足够了?

--
Yours,
Leechael Yim <http://leechael.org/>
Comments [1]


December 28, 2008

Think about usability (1)

有奖问答:下图中的编辑界面,针对的是哪个条目?

doulist: with lightbox

看不出来,对吧?假如采用下图这个方式:

doulist: with progressive box

第二幅图中的目标是不是比第一幅图中的效果更明显、体验也更好?在不仅是有一个条目的页面中,针对一个特定条目进行操作,光箱效果(lightbox)明显不是一个很好的选择

这篇和前一篇、豆瓣不再是合适的工具了?,同样是以豆瓣作为例子的文章。过往我曾以用户的身份写过几篇东西,但这两篇不是,这两篇是以开发者的眼光来看待和思考问题,规划功能的时候应该注意什么、界面中该用什么效果,引用豆瓣作例子,只是因为我使用豆瓣较多,所以注意到这些东西而已。生活即设计

Comments [0]


December 25, 2008

豆瓣不再是合适的工具了?

今天若不是把《项目管理艺术》这书看完,怕是也不会把这个月买的书加入到"在读的书"这个列表。这个行为对我来说,可能是有点奇怪的,我习惯了在购入新书后不久,就把这几本书的名字录入至"在读的书"这个列表,大致原因有二:
  1. 我认为把这些数据登记至豆瓣,有助于获得更多的推荐。
  2. 我在使用豆瓣管理我读过的书、想读的书、在读的书。
然而:
  1. 想读的书——这个列表的增加,主要还是由于他人在 blog 上的推荐、读书过程中看到的书名字这两个来源,甚至可以说,豆瓣的推荐于我无用。
  2. 假如我想读某个方面的书,但却不知道读哪一本较好,这时我偏向于询问朋友的意见、或者通过搜索结果来衡量读哪一本书;至于豆瓣的书评,这个时候不会是重要的衡量条件。
  3. 作为一个工具来说,豆瓣至少没有让我很好地管理自己的阅读列表,例如,我希望知道我想读的书,什么时候在哪里有促销——虽然这一点,实际上可能由商家来做更恰当。
再说现时豆瓣:
  1. 服务虽多,但现在让我逐渐觉得,这不足够的专心,就我这个用户而言,已经满足不了我的需求了。
  2. 无用的首页。事实上的首页已经变成"我的友邻广播"。
Comments [3]


December 20, 2008

用户信赖站点推荐的信任基准?(2)

晚上洗衬衣,雪白的衬衣上有一小块污迹。搓了好一阵子,然后选择了放弃。而在这过程中,我想到了上网搜索答案,"如何有效地清除衬衣上的污迹"。我首先想到了互联网,而不是打电话回家,询问可能对此更有经验的老妈。

这首先带来了第一个问题:我为什么信赖互联网上杂乱的信息,而不是身边很大可能知道解决方法的人?然后,我怎么有足够的经验去辨识这些信息的真伪,并且提取出我所需要的信息?

我这行为,或许意味着:
1. 我有足够的能力去找寻更多的信息。
2. 我有足够的能力从所看见的信息中找到我真正所需的。

身边很大可能知道解决办法的人,但只是一个信息来源,而互联网上不止是一个信息来源,即使在互联网上,很多信息在很多时候都是一样、或者类似的,因为它们来自同一个来源。

用户为什么会去相信朋友的推荐?他们只是一个信息来源。他们这一朋友关系甚至可能只是站点上的一条数据,这联系只是基于某个目的,例如同事、邻居、或者同学(我豆瓣的就有数个朋友,他们只是我的同学,兴趣点的交集很少),而他们的相似点少得可怜。甚至,Jack 推荐了"最好的十个搭讪技巧"这一文章,在 Ted 看来这很可笑——Ted 对自身的搭讪能力具有十分的自信,这信息对他接近是没有任何用处(或者在他搭讪失败并感到沮丧时,看到这篇东西让他感觉好点)。

用户为什么相信一个站点的推荐?站点编辑的内容,一定合适自己的口味吗?站点的推荐或者是基于统计,但这统计数据真的反应了真实的情况吗?

假设一个站点,提供一项服务:过滤信息。做这个不难,至少我知道有人自己做了一个这般的东西收集和过滤信息。那么站点首先需要知道某个特定用户所需要的信息:表面上所需的,和剥去表面后的真实需要。这才是最困难的一步,分析用户的需要,目前看来,将这一步转化为数字计算,还有很长的一段路。此外还有一个问题:用户为什么会信任你,让你收集其行为进行分析?现实不是《1984》。
Comments [0]


December 20, 2008

生活即设计

订阅了一些设计师的 blog,字里行间,总让我觉得,生活即设计。用英文或许不好表达;又或者是我没有足够的能力写一句能表达着意思的:Living
in design—— 生活在设计之中。
 
他们为设计师,并不是因为他们做的工作,一定是与设计有关;他们设计的或许不是网页,他们做的不一定是平面设计、广告设计。我尊称他们为设计师,是因为他们的思维,他们的生活就是一个在进行中的设计,一件小小的事情,很容易就变成一块小石,激起思绪的水花;他们为此想到了点什么,那是这么不确定的东西,他们没有办法用文字、用图形、将这些东西完整从脑中复制出来。但这很模糊的东西,他们记下来了。看着屏幕上一个个文字,或许只能捉住他们所感受到的万分之一,但若有所触动,哪怕只是一点儿的触动,并不需要类似"原来也能这般设计"这般的感叹。他们的生活就是设计,他们的设计因为生活而细腻。
 
--
Yours,
Leechael Yim <http://leechael.org>

Comments [0]


December 18, 2008

What does PHP wanna to be?

If you are PHP programmer, you may knew SPL (Standard PHP Library). Maybe you already had coded like this:
<?php

class SomeArrayLikeObj implements ArrayAccess
{
// Huge of codes.
}

$foo = new SomeArrayLikeObj;
echo $foo['content'];
// Other codes.

If you even had coded in Python, you will feel comfortable on this. Or you have time, you wanna do something interesting, made an object access database like this:

<?php

class RecreativeDbAccessor implements SplFileInfo
{
// You do huge jobs here and made this class runs well.
}

$db = new RecreativeDbAccessor;
file_put_contents($db, $title);
file_put_contents($db, $author);
file_put_contents($db, $content);
file_put_contents($db, time());
// and more?

But can we do more? Yes, even I'm not a nerd on PHP, but you can learn more about SPL and find out more interesting things. But how about performance? Even PHP is slower than Python, we also can do a simple test:

<?php

class ArrayLikeObj implements arrayAccess
{
// Do your own implementation here.
}

function myMicrotime ()
{
    list($usec, $sec) = explode(' ', microtime());
    return ((float)$usec + (float)$sec);
}

$arr = array('foo' => 'foo','bar' => 101,5  => 101);

// Test 1
$start = myMicrotime();
for ($i=0;$i<10000;$i++)
{
    $sql = new ArrayLikeObj($arr);
    $sql['baz'] = 102;
    echo $sql['bar'];
    echo $sql[5];
}
$end = myMicrotime();
echo '<p>', ($end - $start) * 1000, ' ms</p>';

// Test 2
$start = myMicrotime();
$sql = new ArrayLikeObj($arr);
for ($i=0;$i<10000;$i++)
{
    $sql['baz'] = 102;
    echo $sql['bar'];
}
$end = myMicrotime();
echo '<p>', ($end - $start) * 1000, ' ms</p>';

// Test 3
$start = myMicrotime();
for ($i=0;$i<10000;$i++)
{
    $arr['baz'] = 102;
    echo $arr['bar'];
}
$end = myMicrotime();
echo '<p>', ($end - $start) * 1000, ' ms</p>'; 

As a result, tested under PHP 5.2.6, pure array is 10 times faster than array like object. Not a good choice. Maybe you don't think this test is unfair, you can do a benchmark design by yourself, but I think that's a serious performance problem, before I write a PHP application, I will consider about this first.

Inside of this problem, I think that's a problem of PHP. In Python, everything is an object. But PHP doesn't. PHP adds SPL as a core support, but it doesn't think everything is an object. PHP is in two minds. What does PHP wanna to be? Keep its mechanism stay in old way, or acts like Python, everything is an object? 

--

This post also is a practise on English writing, for CET-6 on this weekend. God bless. :P

--
Yours,
Leechael Yim <http://leechael.org>
Comments [0]


December 17, 2008

Ghost in Posterous

这两个订阅地址是可用的:

http://feed.feedsky.com/leechael

本是不大愿意使用 feedsky 的服务,但总觉得需要有些交待,也一并修改了。

原意是保持 leechael.org/feed/ 这个地址保持更新,目前看来,似乎是做不到了,实在难以释怀。
Comments [1]


December 17, 2008

用户信赖站点推荐的信任基准?

这些日子总在听谭咏麟和李克勤的老歌,便寻思着换点新鲜的。打开蝌蚪网,犹豫再三,终是打开了上面推荐的一个播放列表——发现了两首感觉不错的歌。很好。

然而这个比例却不高:整整一个播放列表,十多首歌,我只收藏了两首歌。对于其他用户来说,这个比例会是更高、还是更低?

前些日子看了一篇文章:《反六度分隔理论? 》。其中说的就是信任这一事儿:
假如某个社交网站希望用朋友之间的关系来推广商品的话,那么很不幸,朋友的朋友说的话,未必有社会上广泛承认的专家说的话更有效果。

那么用户信任一个站点(或人)推荐、或者说,信息过滤的基准是什么?

首先想到的是知名度。这是常被"专家"们利用的伎俩之一:很唬人的头衔、撒谎的数据,来说明他拥有很高的知名度。虽然这不是一个很可靠的基准,但我对一个推荐的信任程度,还是会因应推荐者的知名度而改变。

好友的推荐常被吹捧。被吹捧的原因我认为有二:一是,既为好友,定有兴趣交集点,所以好友感兴趣的东西,"你"会感兴趣的概率会很高;二是,好友没有"专家"那般的利益驱动,容易产生更为优质的推荐。所以现在在SNS网络中,有些人加了一堆好友,然后输出他/她们的推荐,借着自荐或者欢迎拍砖的名号来强制输出这些软性广告,悲惨的是,SNS没有提高给我们过滤这些信息的方法。当然也有解决方案,在SNS网络中不再认定他/她是好友。

最后想到的是经验。例如,在一段时期内,我十分信赖豆瓣给我的推荐,因为我既有的经验告诉我,这很靠谱,很精准,然后我信任这些推荐。而到现在,豆瓣对于我来说,更像一个记录的工具,那些推荐我不再觉得精准。当然我也会去看这些推荐,因为既有的经验让我怀有希望;这些推荐只是噪音大了,而非不精准。而"知名度"这一因素,终究还是因为经验在作祟,"经验"告诉我们,专家说的可信度更高。

那么,若要一个用户信任站点输出的信息,是不是从培育用户的经验做起?以一个骗子行骗作为例子(或者这不是很好的例子),第一件事情就是让对方觉得他/她可信,然后再作下一步行动。那么在站点的设计中,是不是可以用这一点来增强用户的体验?

用户信赖一个站点的推荐,其信任基准还有什么?
Comments [0]


July 03, 2008

给 Posterous 的赞美

由于可以通过 Email 发布,这般即使 posterous.com 被 GFW 了也并非没有发布新文章的渠道;而阅读也有 Google Reader 可以解决。这一切看起来都很完美,至少目前是这样。

Comments [4]