Skip to main content
 首页 » 编程设计

python之如何将此 Python 代码转换为 ColdFusion 代码

2025年05月04日19JustinYoung

我希望构建一个利用 Reddit(开源)算法的 Web 应用程序。

我计划随着时间的推移对其进行调整,但目前我认为这将是使用他们的排名系统的良好开端。

我读了一篇关于这个算法的博文,这个例子是用 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。

更新: 刚刚在这里发现了另一个与我要问的问题相关的问题……我认为这有帮助。 How are Reddit and Hacker News ranking algorithms used?

请您参考如下方法:

大部分代码只是来自任何编程语言的标准代码

例如,在 ColdFusion 中获取自某个日期以来的秒数非常容易

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

不确定您遇到了哪些问题,但一切都非常简单。我在那里看到的每个函数都有一个 ColdFusion 版本,我建议您尝试这样做并询问您是否遇到困难。