Как я могу преобразовать этот код Python в код ColdFusion? - PullRequest
1 голос
/ 03 февраля 2012

Я хочу создать веб-приложение, которое использует алгоритм Reddit (с открытым исходным кодом).

Я планирую настроить его со временем, но сейчас я думаю, что это будет хорошим началом для использования их рейтингаsystem.

Я прочитал в блоге об этом алгоритме, и пример написан на 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 голосов
/ 03 февраля 2012

Большая часть этого кода является просто стандартным кодом с любого языка программирования

Например, получить секунды с определенной даты в ColdFusion довольно просто

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

Не уверен, с какими битами вы застряли, но все очень просто. Каждая функция, которую я там вижу, имеет версию ColdFusion, и, не желая, чтобы кто-то переписал ее для вас, я предлагаю вам попробовать сделать это и спросить, не застряли ли вы с чем-то.

...