타운에 있는 활동메달처럼 현재 활동의 지표가 되는 무언가로 메달을 부여하는 제도를 사이트에 구현하고 싶은 희망은 있었습니다.

 

딱히 경험치 같은 것을 사용하지 않기 때문에 타운처럼 경험치를 근거로 하기도 어렵고 포인트로 하기도 어렵기도 하고 그리고 결정적으로 제가 구현하기는 쉽지 않아 가장 간단한 게시글의 추천받은 수로 하기로 했습니다.

 

원래 모듈을 제작할 능력이 된다면 

 

1.특정한 시점(ex:매월 1일 00시 05분)에 회원들의 순위를 매길 수 있는 쿼리를 돌려 회원들의 순번을 나열하기

2.이 순위를 해당 모듈의 db 테이블에 저장하기

3.이 저장된 순위를 이용해 메달을 부여하기 

 - 쿼리 내용이 부담이 없어 캐시가 없더라도 부담이 없고 캐시를 적당히 줄 수 도 있고...

 

 

모듈을 만들 능력이 되지 않아 이렇게 꼼지락 거렸습니다.

전체회원의 이전 달 게시글의 추천수 합을 구하는 것도 굉장한 부하는 아니지만 크게 변동도 없을 이 데이터를 매번 구할 필요는 없다. 하지만 난 모듈을 만들기는 역부족이다.

 

사실 회원 랭킹 제공하는 경우 이 정도 쿼리는 수시로 하고 있습니다. 월간랭킹이 이런식이죠.

 

 

그래서 지난번 처럼 외부파일에 이 전체회원의 이전 달 1일부터 말일 까지의 게시글 추천수의 합을 구하고 그 숫자로 줄세우기하는 코드를 작성했습니다.

 

1.특정한 시점이 아닌 외부파일에서 쿼리를 통해 회원의 순번을 세우게 했습니다. 

 - 이때 특정한 시점에만 데이터를 갱신하는 효과를 주기 위해 캐시 기간을 굉장히 길게 주었습니다.

 - 캐시 갱신은 crontab으로 매월 1일 새벽에 갱신하도록 했습니다.

 - 캐시파일 재생성이 되어 새롭게 그 전에 갱신되어도 크게 문제가 될 정도는 아닙니다.

 - 뭐 적당한 캐시로 지속적으로 갱신하게 해도 무방합니다. 하지만 전 그냥 이렇게 구성한 겁니다. 적당한 간격으로 갱신한다면 순위 변동이 되어야 할 시점에 반영되는 장점? 혹은 단점? 이 있을 수 있습니다.

 

 

2.외부파일에서 만들어낸 이 줄세이기 데이터를 각 필요한 부분에서 모두 활용할 수 있어 원하는 곳곳에 이 메달을 표시해 줄 수 있었습니다.

 

 

 

아마 언젠가는 모듈을 만들어 데이터를 저장하고 편하게 가져다 쓰는 것을 하고 싶다 라는 맘이 들지도 모르겠네요. 사람 앞일은 모르는 거니까요.

  • Lv24
    코알못이지만 이런 기능을 구현하시는게 대단하신데요 ㅇ_ㅇ;;ㅋㅋㅋ
  • Lv24 Lv30
    코드를 알면
    내가 이런 것 구해야지 -> 코드 작성 -> 확인

    이런식인데

    코알못이라..

    내가 이런거 구현하려면 -> 구글링 -> 코드에 붙여넣기와 바꾸기 -> 확인 -> 500에러 -> 좌절 -> 또 알아보기 -> 뭔가 됨 -> 포기하지 않고 더 해보기 -> 완성

    이런 과정입니다. ㅋ

    학습이 거꾸로인... 사실 학습이 되진 않아요 ㅋ
  • Lv24 Lv30
    그런데 사실 이번에 구현한건 지난번 외부페이지 결과 가져와서 캐시로 저장하는거 @기진곰 님께서 알려주셔서 거기에 쿼리는 제가 참조할 수 있는 쿼리가 있어서 그거 가져다 붙여서 완성했습니다.

    제 능력은 거의 없어요.
  • Lv30 Lv24
    프로그래머 90프로는 전부 구글링을 합니다.

    구글링을 하면서 얻은 지식과 프로그래밍 관련 기본 바탕을 가지고 구현을 하는것이죠.

    예를들어 PHP의 intval() 이라는 함수를 C#에서 구현한다고 햇을때 C#에서 그렇게 사용되는 함수를

    PHP -> intval($number);
    C# -> Convert.ToInt32(number);

    이렇게 쓰거든요 ㅎㅎ

    이런 기초적인 부분에서 함수의 사용방법이랑 이런것들을 알기위해서도 쓰고 그래요.

    다만 XE모듈이라는 존재자체가 XE이라는 하나의 라이브러리 같은것의 개념을 알아야 제작하기가 쉽죠.

    PHP 의 클래스 개념과 extends 참조클래스 항목들의 대해서 공부를 해보시면 좋을 것 같아요.

    이걸 위해서 일반 노트패드같은 에디터를 쓰지않고 PHPStorm을 쓰는것도 나쁘지 않고요.

    제가 서브라임텍스트를 쓰다가 PHPStorm 으로 넘어오고나서부터 XE구조화나 PHP에 대해서 좀 더 탄탄하게 공부할 수 있게 된 계기가 되었죠. 공부를 딱히 하지 않아도 자동으로 알게되요. 얘로 코딩하다보면요 ㅎㅎ
  • Lv16
    요런 재미난 팁은 코노리님 공유 좀 했으면 ㅋㅋ
  • Lv16 Lv30
    팁이라긴 보다는 저는 모듈로 제작하셨을거라는 확신적인 추측입니다.
  • ?
    제가 진짜 코알못인데ㅜ 그나저나 공개는 언제...(퍽)
  • ? Lv30
    이건 모듈화 혹은 애드온으로 제작된게 아니라 공개는 어려워요.
    공개할 만한 수준도 안되구요. php 파일로 제작해서 원하는 곳에서 인클루드 하는 방식이에요.
  • Lv30 ?
    ㅎㅎ 그냥 해본 말이에요 ㅎㅎ 그나저나 커뮤니티 활성화에 좋은 영향을 끼칠거 같습니다!