오늘 한 일 BE - 공개 프로필 권한 수정 - 소셜회원가입시 profile 객체 생성 - superuser 생성시에 profile 객체 생성 - 프로필 수정 시 프로필사진이 삭제되는 문제 해결 - 친구추천 전체필터(all) 추가 FE - 프로필 수정 - 친구찾기 (유저목록 리스트) - 프로필 수정 시 프로필사진이 삭제되는 문제 해결 - 조건별 친구추천 페이지 구현
SNS 로그인 오류 문제 카카오, 네이버, 구글 세 개 중 하나로 소셜로그인을 하고, 다른 계정으로 로그인하려고 할 시에 500 에러가 발생 예를 들어 카카오 로그인 > 로그아웃 > 구글 로그인을 하면 카카오 로그인은 정상적으로 작동하나 구글 로그인 시 500 에러, 이후 카카오 외에 어떤 로그인도 안 됨 데이터베이스를 삭제하고 반대로 다시 시도하면(구글 로그인 > 로그아웃 > 카카오 로그인) 구글 로그인만 됨 원인 에러코드 분석하기 HTTP GET /user/login/kakao/ 200 [0.01, 127.0.0.1:54412] Internal Server Error: /user/login/kakao/ Traceback (most recent call last): File "C:\Users\SCY\D..
Facts 이번주에 한 일 1. 최종 프로젝트 기획 2. S.A. 피드백 후 반영해 기획 수정 + 최종 S.A. 작성 3. 모든 팀원 - 기본 MVP 개발 계획 수립 후 해당 백엔드 구현 4. 로그인, 회원가입 기능 구현 (Back) 5. 개인정보 수정, 프로필 CRUD 구현 (Back) 6. 친구신청/수락/거절 기능 구현 (Back) 7. 이메일 인증, 비밀번호 재설정 구현 (Back) Findings - 얻은 결과 그동안 구현해봤던 기능들에 완성도를 높이고 새로 시도해보는 기능들도 구현해 보았다. Feelings user app을 처음부터 끝까지 맡아서 하려고 하니까 상당히 막막하고 양도 많고 복잡하고 힘듦 그치만 하나하나 쌓아나가는 재미가 있당. 장고 DRF 많이 익숙해졌다고 생각했는데 아직도 나는..
드디어 미루고 미루던 SNS 인증 구현하기... 다른 api 먼저 다 만들고 하려고 끝까지 미뤄뒀다. 그냥 있는 거 긁어오는 거니까... 하고 ... 그렇게 안일했던 나는 하루를 꼬박 바쳤다고 한다. 항상 문제는 예상치 못하게 발생하니까 ⭐ 아무래도 테스트를 해보려면 다른 기능들과는 다르게 자바스크립트정도는 완성이 되어야 하니까 같이 작업했다. 아무리 봐도 틀린 게 없는데 자꾸 뭐가 안돼... 서버도 아니고 JS도 아니야... 모지................. 카카오고 구글이고 그놈의 redirect URI 랑 callback .URL 이 문제 하라는 대로 했는데도 잘못 등록해서 자꾸 오류가 나던 거다 나는 뭔가 api 가져와서 쓰는 게 더 어려운 것 같다.. 그리고 네이버는 아무리 해도 자꾸 서버에서..
친구추가 기능 구현하기 이번에 구현하고 싶었던 것은 친구추가 기능이다. 기존 팔로우, 팔로워랑은 다르게 관계가 언제나 쌍방이라는 차이점이 있고,신청 후 수락하는 과정이 필요하다. 일단 팔로우 할 때 했던 대로 ManyToMany필드를 만들었는데 friends = models.ManyToManyField("self", related_name='friends', blank=True) 이러면 일방이고 쌍방이고를 정하기도 전에 신청 > 수락이 되질 않는다. 실행되면 바로 DB가 업데이트 되어버리기 때문 그래서 기존 팔로우에 한 단계(신청)가 더 있는 만큼, 중간 테이블을 하나 추가하기로 했다. ManyToMany필드 때문에 생기는 테이블이 친구상태(누구와 누가 친구인지) 테이블이므로 친구신청상태 모델을 새로 만..
아침회의 의논 결과 DB는 MySQL 쓰기로 했다... 익숙한 게 최고다 오늘 한 일 유저모델, 프로필 모델 생성 로그인 회원가입, 개인정보 수정, 회원탈퇴(비활성화) 구현 완료 내일 할 일 - 전화번호 유효성 검사 추가하기 - 전화번호 필드 `unique` 처리 해야함 - 프로필 이메일 인증, 비번 재설정 이메일 인증 구현해야함 - 위치 api 로 사용자의 현재 위치 필드 추가해야함 (profile 테이블)
주제 정하기 드디어 최종프로젝트 ,,,,,,, 앞으로 6주동안을 결정하는 시간이기 때문에 조금 늦더라도 모두가 만족할만한 결과물을 위해 주제 선정부터 신중하게 결정하기로 했다. 그래서 주제 선정만 반나절 이상 걸렸지롱 프로젝트 주제 👉 커넥트미 (Connect ME) 👉 컨셉 - 은둔형 외톨이 탈출을 도와주는 커뮤니티 - 고민 상담 - 인간관계가 너무 어려워요! - 오프라인 만남 모집 - 친구를 만들고 싶어요! - 일단 집 밖으로 나가고는 싶은데 어디로 가야할지 모르겠다면? ERD 와이어프레임 S.A. https://rhetorical-cilantro-7e4.notion.site/S-A-2d2d9561556c439381949490d1ec7ab1?pvs=4 S.A. 프로젝트 rhetorical-cilant..
2024.04.19 글 업데이트! 업데이트 내용 : MySQL 버전. 끝. 다운로드 링크 : https://dev.mysql.com/downloads/windows/installer/8.0.html MySQL :: Download MySQL Installer Note: MySQL 8.0 is the final series with MySQL Installer. As of MySQL 8.1, use a MySQL product's MSI or Zip archive for installation. MySQL Server 8.1 and higher also bundle MySQL Configurator, a tool that helps configure MySQL Server. dev.mysql.com 아래에..
function changeFont() { var slides = SlidesApp.getActivePresentation().getSlides(); slides.forEach(function(slide) { var elements = slide.getPageElements(); elements.forEach(function(element) { try { if (element.getPageElementType() === SlidesApp.PageElementType.SHAPE) { var shape = element.asShape(); var text = shape.getText(); if (..
화면이 작아지면 네비바 위치가 바뀌게 하기 화면 양 옆에 사이드바가 있다. 근데 화면이 작아지면 사이드바가 화면을 가린다. 그래서 화면이 작아질 땐 사이드바를 위의 네비바로 바꿔버리기로 했다. 홈 글쓰기 로그인 회원가입 .navbar{ height: 50px; width: 100%; position: fixed; top:-50px; background-color: antiquewhite; } .navbar li{ list-style: none; } .navbar .container #navbar-right{ height: 50px; align-items: center; display: flex; flex-direction: row; justify-content: space-evenly; } /* 미디어 ..
해당 유저가 좋아요를 누른 게시글의 리스트를 불러오려고 하는데... 해당 함수에서 사용자를 판별하는 함수가 def get(self, request): user = request.user 이렇게 되어있다. 이러면 로그인 한 유저의 정보만 가져올 수 있어서 다른 사람 거를 못 보는데? def get(self, request, user_id): user = User.objects.get(id=user_id) 그래서 매개변수로 받아오게 바꿔줬다.. 프론트엔드도 바꿔야지...
계정 삭제 기능 개선 탈퇴 기능을 구현할 때, 탈퇴시 즉시 삭제되게 구현해둔 상태 그런데 사실 탈퇴라는 게, 일정 기간동안은 정보가 저장되어 있어야 여러모로 편하다. (탈퇴를 철회하고 싶을 수도 있는데!) 그래서 탈퇴한 계정에 인가해둔 권한만 막아두고(로그인도 불가), 일정 시간이 지나면 삭제되게 하기로 했다. 계정 재활성화 다시 활성화할 수 있도록 비활성화를 만들었으므로, 재활성화를 만들어야겠지? 재활성화는 이메일 인증으로 구현하기로 했다. # 계정 재활성화 class ActivateAccountView(APIView): def post(self, request): email = request.data.get("email") try: user = User.objects.get(email=email, i..
https://school.programmers.co.kr/learn/courses/30/lessons/120956 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ''' 첫시도 def solution(babbling): answer = 0 check = ["aya", "ye", "woo", "ma"] for i in babbling: for j in check: i = i.replace(j, "", 1) # babbling에서 주어진 단어를 삭제 if len(i) == 0: # 문자열이 남지 않은 요소만 count answer += 1 return ans..