2012-02-03 4 views
1

Reddit (오픈 소스) 알고리즘을 사용하는 웹 응용 프로그램을 빌드하려고합니다.이 파이썬 코드를 어떻게 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

몇 가지 아이디어와 사례를 듣고 기대.

감사합니다. 마이클.

또한 추가 질문으로; 이 코드는 데이터 세트가 이미 수집 된 이후에 ColdFusion에서 SQL 쿼리 또는 일종의 정렬을 통해 더 잘 수행 될 수 있습니까? ? 내 DB는 MySQL이 될 것입니다.

업데이트 : 내가 물었던 것과 관련된 여기에 또 다른 질문이 있습니다. 도움이된다고 생각합니다. How are Reddit and Hacker News ranking algorithms used?

답변

6

그 코드의 대부분은 모든 프로그래밍 언어 특정 날짜 이후에 초를 얻을 예를 들어

에서 불과 표준 코드는 붙어 어느 비트

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

확실하지 ColdFusion에서 꽤 간단합니다 그러나 모든 그것의 prety는 간단하다. 내가 본 모든 기능에는 ColdFusion 버전이 있으며, 누군가 당신을 위해 그것을 다시 작성하기를 바라지 않고, 당신이 그것을하려고 시도하고 당신이 무언가에 갇혀 있는지 물어볼 것을 제안합니다.

+0

나는 다만 묻고 싶다; 데이터 세트가 이미 수집 된 후 SQL에서 가장 잘 된 것이거나 CF로 정렬하는 것이 최선의 선택일까요? 귀하의 의견을 진심으로 도와 주셔서 감사합니다. –

+0

그것은 다른 곳에서 정렬이 사용되는지 여부에 따라 달라집니다. 그렇다면 CF 함수를 사용하는 것이 SQL에서 더 바람직 할 것입니다. – jamesTheProgrammer

+0

이 질문은 programmers.stackexchange.com으로 옮길 수있었습니다. – jamesTheProgrammer

관련 문제