- 다양한 주제에 대해 자유롭게 글을 작성하는 게시판입니다.
Date 24/11/08 16:56:49
Name   토비
Subject   추천 버튼을 누르면 어떻게 되나
홍차넷 추천 버튼은 대충 만들어져 있습니다.

사실 홍차넷의 모든 것은 그 어느 것 하나 대충 만들지 않은 것이 없습니다만...

하지만 애정을 갖고 대충 만들었습니다.
아무튼 그렇다고 합니다.

타임라인과 댓글에서의 좋아요 버튼은 꽤 빠르게 반응하는 편입니다.
좋아요 로직 자체가 심플하기도 하고... 그마저도 느린 속도를 감추기 위해서 누르면 즉시 일단 파란칠을  한 뒤에 서버에서 반영되는 응답을 받아서 상태를 업데이트하게 해놓았기 때문입니다.
일단 누르면 색칠이 되고 [좋아요를 눌렀습니다] 라는 메시지가 뜨니 답답하지 않죠.

그렇다면 티타임이나 다른 게시판들에 붙어있는 저 큰 왕따봉 버튼은 왜 이렇게 반응이 늦냐... 하면 역시나 색칠하고 숫자 올리는 작업을 즉각적으로 하지 않기 때문입니다. 그걸 먼저 해두면 답답함은 없을건데요. 아직 못했습니다. 곧 하겠습니다.

일단 티타임에는 다른 게시판과 다르게 추천 사유를 입력하는 창이 뜹니다.
자문단에서 추천글 투표하고 이벤트 할 때 사유 적을 수 있도록 하자는 의견을 반영해서 그렇게 만들었던 것 같은데요.
오래전에 만들어서 잘 기억이 안납니다.

추천 사유를 입력하는 창에 추천 사유를 적지 않아도 추천이 됩니다.
만약 추천사유에 [토해라 일비] 라고 적으신다면 제가 자다가 꿈속에서 홍차넷을 수정하게 된다고 합니다.
한 번 해보세요.

티타임의 추천 버튼이 눌리면 일단 누른 사람이 권한이 있는 사용자인지를 체크합니다. (로그인한 비강등 유저의 정상 활동인지 체크)
로그인 안한채로 추천 버튼을 누르면 [추천하시려면 로그인을 해주세요] 라는 메시지를 띄웁니다.
비로그인 상태에선 추천 버튼이 뜨지 않지만 새창으로 홍차넷을 하나 띄운 뒤에 로그아웃한 뒤에 원래 창에서 추천 버튼을 눌러보면 테스트 하실 수 있습니다.
(비밀번호를 까먹어서 다시 로그인을 못하시게 된다면 저에게 메일을 주시면 비밀번호를 리셋해드립니다.)

권한이 있는 사용자였다면 추천인지 신고인지도 체크합니다.
왜냐면 제가 입력폼을 두번 만들기 번거로워서 같은 입력폼으로 추천도하고 신고도하게 해놓았거든요. (대충만들었다는 뜻)
그래서 누르면 서버에서 추천버튼을 눌렀는지 신고버튼을 눌렀는지 체크합니다.

추천 버튼이었다면 글쓴 회원이 누른 것인지 아닌지 체크합니다.
글쓴이가 누른 추천이었다면 [자기 글에 추천하실 수 없습니다] 라는 메시지를 띄웁니다.

자기글이 아니었는지도 확인한다면 이미 이 글을 추천한 기록이 있었는지 확인합니다.
있었다면 [중복으로 추천 할 수 없습니다] 라는 메시지를 띄웁니다.

중복이 아니었다면 [정상적으로 접수 되었습니다] 라는 메시지를 띄웁니다.
그리고 해당 글의 레코드에서 추천수를 +1 하고 화면상에도 +1 된 숫자로 표시를 업데이트 합니다.
그리고 티타임 글쓴이에게 댓글알림으로 추천 내용을 보내줍니다.

그 외에도 다양한 예외처리가 있지만 그것 까지 알리는 것은 이 글의 목적이 아니므로 생략하겠습니다.

사실 티타임의 커다란 추천버튼은 타임라인 식의 방식으로 대체하려고 오래전부터 생각했지만 아직 하지 못했습니다.
곧 하겠습니다.



35
  • 토해라 일비
  • 토해라 일비
  • 토해라 일비
  • 추천
  • 일해라 토비
  • 토해라 일비
  • 토해라 일비
  • 토마토 일본
  • 비해라 토일
  • 라토일 해비
  • 힐래타 보이
  • 하입 뽀이
  • 토하세요 일비
  • 일.토.
  • 토비님 사랑해요
  • 춫천
  • 토요일엔 비빔밥
  • 일비님의 편안한 위장을 기원하읍니다
  • 토토비 토토비 ㅎㅎ
  • 토해라 일비


T.Robin
고생이 많으십니다.
- 지나가던 개발자
7
앗 댓글 따봉은 바로 색칠이 되진 않는군요. 조금 더 빠르게 할 여지는 남아있다
1
교양 파이썬 수업에서 if조건문을 배운 날에 이런 글을 ㅎㅎ
@클로드
본문에 나온 추천버튼 동작 흐름을 파이썬 if조건문으로 작성해줘.
클로드AI
네, 토비님. 추천 버튼의 동작 흐름을 파이썬 if 조건문으로 간단히 표현해보겠습니다.

```python
if not user.is_logged_in():
print("추천하시려면 로그인을 해주세요")
elif button_type == "신고":
# 신고 처리 로직
pass
elif user == post.author:
print("자기 글에 추천하실 수 없습니다")
elif user_... 더 보기
네, 토비님. 추천 버튼의 동작 흐름을 파이썬 if 조건문으로 간단히 표현해보겠습니다.

```python
if not user.is_logged_in():
print("추천하시려면 로그인을 해주세요")
elif button_type == "신고":
# 신고 처리 로직
pass
elif user == post.author:
print("자기 글에 추천하실 수 없습니다")
elif user_already_recommended(user, post):
print("중복으로 추천 할 수 없습니다")
else:
post.recommend_count += 1
update_display(post.recommend_count)
send_notification(post.author, "추천")
print("정상적으로 접수 되었습니다")
```

이 코드는 본문에서 설명하신 주요 조건들을 순서대로 체크합니다. 물론 실제 구현에서는 더 많은 예외 처리와 세부 로직이 필요할 것 같습니다. 그리고 신고 처리 부분은 별도의 로직이 필요할 것 같아 pass로 넘어갔습니다.

이런 식으로 조건문을 사용하면 추천 버튼의 기본적인 동작 흐름을 구현할 수 있겠네요.
클로드야 elif를 이렇게 많이 쓰면 뚝배기가 깨진단다... 다시 작성하렴
2
클로드AI
네, 라싸님. 말씀해 주셔서 감사합니다. 제가 조금 과하게 elif를 사용했네요. 코드를 좀 더 간결하고 효율적으로 다시 작성해보겠습니다.

```python
def recommend_post(user, post):
if not user.is_logged_in():
return "추천하시려면 로그인을 해주세요"

if user == post.author:
return "자기 글에 추천하실 수 없습니다"

if user_already_recommended(user, po... 더 보기
네, 라싸님. 말씀해 주셔서 감사합니다. 제가 조금 과하게 elif를 사용했네요. 코드를 좀 더 간결하고 효율적으로 다시 작성해보겠습니다.

```python
def recommend_post(user, post):
if not user.is_logged_in():
return "추천하시려면 로그인을 해주세요"

if user == post.author:
return "자기 글에 추천하실 수 없습니다"

if user_already_recommended(user, post):
return "중복으로 추천 할 수 없습니다"

post.recommend_count += 1
update_display(post.recommend_count)
send_notification(post.author, "추천")
return "정상적으로 접수 되었습니다"

# 사용 예시
result = recommend_post(user, post)
print(result)
```

이렇게 하면 elif 사용을 줄이고 함수로 묶어서 더 깔끔하게 표현할 수 있겠네요. 각 조건을 순차적으로 체크하고, 조건에 맞지 않으면 바로 return하여 불필요한 검사를 줄였습니다.

신고 기능은 별도의 함수로 분리하는 것이 좋을 것 같아 여기서는 생략했습니다. 이렇게 하면 코드의 가독성도 높아지고 유지보수도 더 쉬워질 것 같아요.

다시 한 번 조언해주셔서 감사합니다, 라싸님!
1
dolmusa
흠 왠지 유튜브 동영상 구조를 보는 흐름이군요. 첫 문단의 요약부터 추천 유도의 자연스러운 흐름까지..
1
노바로마

아니 따봉이벤트를 이렇게 참여하는 방법이...
2
토비님 꿈에서 수정하게 만드려는 시도가 많네요
*alchemist*
훗훗 저는 아직도 추천을 누를 수 없습니다 ㅋㅋㅋ 개발자 공인 특문 닉 사용자는 그게 안된다고 하셨음 ㄲㄲㄲㄲ 절대 안 바꿀겁니다 ㅋㅋㅋㅋ
1
삐지셨습니까
*alchemist*
삐질리가요.. ㅎㅎ 앞으로 등록 안되는 닉이라는 데 자부심을 가지고 계속 쓸겁니다 ㅋ;
목록
번호 제목 이름 날짜 조회 추천
15128 오프모임내란 수괴가 만든 오프모임(2) 50 삼유인생 24/12/14 2591 5
15127 일상/생각떠나기전에 생각했던 것들-1 6 셀레네 24/12/14 1526 5
15126 정치사람은 용서하랬다. 저는 그렇게 배웠어요. 12 바보왕 24/12/13 2158 25
15125 IT/컴퓨터모니터 대신 메타 퀘스트3 VR 써보기(업데이트) 10 바쿠 24/12/12 2232 5
15123 정치향후 정계 예상 (부제: 왜 그들은 탄핵에 반대하는가) 12 2S2B 24/12/12 1752 0
15121 일상/생각나는 돈을 빌려달라는 말이 싫다. 11 활활태워라 24/12/10 2022 14
15120 일상/생각아침부터 출근길에 와이프 안아주고 왔습니다. 12 큐리스 24/12/10 1630 8
15119 일상/생각집밥 예찬 2 whenyouinRome... 24/12/09 1108 22
15118 정치유럽은 내란죄 수괴 사형집행에 대해 어떻게 반응할까 16 당근매니아 24/12/09 2262 3
15117 생활체육[홍.스.골] 10월 11월 대회종료 공지 4 켈로그김 24/12/09 913 3
15116 정치'중립' 또는 '중도'에 대한 고찰 47 바쿠 24/12/08 2883 15
15115 정치무분별, 무책임 1 명동의밤 24/12/08 1239 20
15114 정치그럼에도 불구하고, 내가 차가운 거리로 나서는 이유 4 삼유인생 24/12/08 1667 40
15113 일상/생각임을 위한 행진곡을 만난 다시 만난 세계, 그리고 아직 존재하지 않는 노래 4 소요 24/12/08 1530 10
15112 정치 나는 더이상 차가운 거리에 나가고 싶지 않다. 9 당근매니아 24/12/08 1963 43
15111 정치제가 추측하는 향후 정치 방향 28 매뉴물있뉴 24/12/08 1843 1
15110 정치국민의 힘에서 야당에 바짝 엎드리는 제안 정도는 나왔으면 좋겠네요. 8 kien 24/12/07 1458 0
15109 사회오늘의 탄핵 부결에 절망하는 분들에게. 6 카르스 24/12/07 1560 16
15108 정치한동훈이 내일 발표할 로드맵 유출 9 아재 24/12/07 1588 0
15107 정치[불판] 12/7 (토) 대통령 불법 계엄 (4) 95 dolmusa 24/12/07 3601 0
15106 오프모임내란 수괴가 만든 오프모임 32 삼유인생 24/12/07 2368 1
15105 정치[불판] 12/7 (토) 대통령 불법 계엄 (3) 145 swear 24/12/07 4526 0
15104 방송/연예민희진 방시혁 여론전 법 정치 뉴진스 르세라핌 여자친구 아일릿 1 닭장군 24/12/07 1345 0
15103 음악임현정의 '세계최초 라흐마니노프 콘체르토 전곡 독주 편곡 리사이틀' 감상 (2024.12.05) 3 카르스 24/12/06 1586 1
15101 정치[불판] 12/6 (금) 대통령 불법 계엄 (2) 130 dolmusa 24/12/06 3563 1
목록

+ : 최근 2시간내에 달린 댓글
+ : 최근 4시간내에 달린 댓글

댓글