如何将这段Python代码转换为ColdFusion代码?

1 投票
1 回答
617 浏览
提问于 2025-04-17 12:15

我想建立一个使用Reddit(开源)算法的网页应用。

我打算随着时间的推移对它进行调整,但现在我觉得使用他们的排名系统是个不错的开始。

我读了一篇关于这个算法的博客,里面的例子是用Python写的。我该如何把它转换成ColdFusion可以用的呢?如果能在CFC中使用,那就更好了。

代码如下:

#Rewritten code from /r2/r2/lib/db/_sorts.pyx

from datetime import datetime, timedelta
from math import log

epoch = datetime(1970, 1, 1)

def epoch_seconds(date):
    """Returns the number of seconds from the epoch to date."""
    td = date - epoch
    return td.days * 86400 + td.seconds + (float(td.microseconds) / 1000000)

def score(ups, downs):
    return ups - downs

def hot(ups, downs, date):
    """The hot formula. Should match the equivalent function in postgres."""
    s = score(ups, downs)
    order = log(max(abs(s), 1), 10)
    sign = 1 if s > 0 else -1 if s < 0 else 0
    seconds = epoch_seconds(date) - 1134028003
    return round(order + sign * seconds / 45000, 7) 

这篇博客提到了这段代码: http://amix.dk/blog/post/19588

期待听到一些想法和例子。

非常感谢!
迈克尔。

另外,作为一个附加问题;这段代码是通过SQL查询来执行更好,还是在ColdFusion中对已经收集的数据集进行某种排序更好呢?我选择的数据库是MySQL。

更新: 我刚找到另一个相关的问题...我觉得这对我有帮助。 Reddit和Hacker News的排名算法是如何使用的?

1 个回答

6

这段代码大部分都是任何编程语言中常见的代码。

比如说,要计算从某个日期开始经过的秒数,在ColdFusion中是非常简单的。

<cfset seconds = dateDiff('s', now(), createDate(1970, 1, 1)) />

我不太确定你卡在哪些地方,但其实这些都挺简单的。我看到的每个功能在ColdFusion中都有对应的版本。如果你不想让别人直接帮你重写代码,我建议你自己试试看,如果遇到问题再问。

撰写回答