我期待構建一個利用Reddit(開源)算法的Web應用程序。如何將此Python代碼轉換爲ColdFusion代碼?
我打算隨着時間的推移對它進行調整,但現在我認爲使用他們的排名系統是一個很好的開始。
我讀了一篇關於這個算法的博客文章,這個例子是用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
期待聽到一些思路和範例。
非常感謝! Michael。
此外,作爲一個額外的問題;在之後的ColdFusion 中,是否可以通過SQL查詢或某種類型的排序更好地執行此代碼?數據集已被收集?我選擇的數據庫將是MySQL。
更新: 剛剛在這裏發現了另一個問題,涉及到我問的問題......我認爲它有幫助。 How are Reddit and Hacker News ranking algorithms used?
我只想問一下;這是最好在SQL中完成的東西,還是在已經收集數據集之後在CF中排序纔是最好的選擇?感謝您的意見 - 真的很有幫助。 – 2012-02-03 13:32:39
這將取決於該排序是否會在其他地方使用。如果是這樣的話,那麼可能在SQL中使用CF函數會更好。 – jamesTheProgrammer 2012-02-03 16:15:16
這個問題可以轉移到程序員.stackexchange.com – jamesTheProgrammer 2012-02-03 16:22:16