1110 TIL

looggi·2022년 11월 10일
1

스파르타 내배캠 AI-3

목록 보기
61/130

😻 컨테이너 생성 오류 해결~~!!

  • docker ps -a 사용하진 않지만 죽어있는 포트?까지 확인하기 ➜ 근데 여기서 암것도 안나옴

  • sudo netstat -tnlp
    netstat : 현재 사용하고있는 TCP 포트를 조회(=TCP 통신을 진행중인 서비스 연결상태 확인)
    t: TCP n:10진수 l:Listening(열림) p:port를 사용하고있는 프로세스 상세정보표시(root권한필)
    state-listen 은 트래픽이 들어오고 있다는걸 의미하는듯

  • 결과 확인하기
    -local address 0.0.0.0은 특정 IP와 연결되어있지 않음을 의미
    -foreign address 0.0.0.0은 아직 통신이 시작되지 않았음을 의미
    -state: 현재 서비스의 연결상태

    • LISTENING : 서비스를 기다리는 상태
    • ESTABLISHED : 다른 컴퓨터와 연결된 상태
    • CLOSED : 연결이 완전히 종료된 상태
    • TIME WAIT : 연결은 종료되었으나 잠시 소켓을 열어놓은 상태..ㅎㅎ
  • sudo service nginx down 아니고 sudo service nginx stop
    ➜ nginx 멈추고 포트 사용중지돼서

  • 컨테이너 생성 명령어sudo docker run -d -p 80:80 httpd:latest 입력하고 sudo docker ps로 확인하면 잘된걸 확인할 수 있음 꺄하ㅏㅏ❤


🌞 아침퀴즈

🔎 회원가입

http://127.0.0.1:8000/users/signup/ 로 username이 아닌 email 과 password를 포함한 json으로 POST 요청 보내서 회원 가입 처리를 해주세요.
-조건1. 회원가입 성공 시 “회원 가입이 완료되었습니다” 메세지를 Response 해주세요
-조건2. 회원 가입이 완료된 user 객체에서 생년월일 (date_of_birth column)은 필요하지 않습니다.
➜ user/models.py에서 관련 항목 모두 삭제
required_fields
-조건3 회원 가입이 완료된 user의 password는 해싱되어 있어야 합니다.
➜ user/serializers.py에서 회원가입에 사용되는 시리얼라이져에서 set_password(password)
password는 super()로 만들어진 게 아니라서 마지막에 꼭 save() 해줘야함

🔎 로그인

http://127.0.0.1:8000/users/api/token/ 로 username이 아닌 email 과 password를 포함한 json으로 POST 요청 보내서 accesstoken을 발급받으세요. (힌트: User model을 customize하세요)
➜ user/models.py 유저클래스에서 USERNAME_FIELD = 'email'

🔎 access token 커스터마이징

access token의 Payload에 아래와 같이 email과 token_message를 포함시키세요.

1. user/views.py 에서 CustomTokenObtainPairView(TokenObtainPairView) 클래스 생성( 상속받는 뷰는 임포트해주기!)
https://django-rest-framework-simplejwt.readthedocs.io/en/latest/customizing_token_claims.html
2. user/serializers.py 에 추가해서 ##으로 둘러싸인 부분처럼 커스터마이징해주기

from rest_framework_simplejwt.serializers import TokenObtainPairSerializer
from rest_framework_simplejwt.views import TokenObtainPairView

class MyTokenObtainPairSerializer(TokenObtainPairSerializer):
    @classmethod
    def get_token(cls, user):
        token = super().get_token(user)

        # Add custom claims
        token['email'] = user.email
        token["token_message"]="sparta_time_attack"
        # ...

        return token

근데 1,2 둘다 views.py에서 해도 된다고 공식문서에 나와있대서 그냥 views.py에서 했는데 잘 됨!

🔎 추가문제

customized 된 user를 admin page에서 조회가 가능하도록 만들어보세요.(패스워드 해싱된 상태)
➜ admin.py에서 admin.site.register(MyUser) 추가(UserAdmin은 삭제)

🔎 답안

https://github.com/kangtegong/timeattack

🖤 왜그래

나 또 깃이그노어 안만들어서 다 올릴뻔했다ㅋㅋㅋ.ㅋ.ㅋㅋ..
git reset해서 해결하긴 했는데 HEAD붙이는건지 안붙이는 건지 헷갈려서 다시해봄

  • 일단 스테이징

  • git restore --staged .

  • git reset HEAD

  • git reset HEAD -- & git reset HEAD -- .

  • git reset

다 되니까 당황스러운데..
무튼 HEAD는 현재 브랜치의 최신 커밋을 포인팅하는 거고 아까는 커밋을 하기 전 상황이라서 헤드 자체가 없어서? HEAD를 붙여서 리셋하려고 했을 때 명령어가 안먹었던 것 같고 지금은 아까 푸쉬하고 난 뒤의 상황이니까 헤드가 있어서 갈 곳이 있어서 가능한 것 같다

requirements.txt 만드는 것도 깜빡하고
리포 만들어놓고 연결 안해놓고 푸쉬하고.. 왜그래도대체ㅔㅔㅔㅔㅔㅔㅔㅔㅔㅔㅔㅔㅔㅔㅔㅔ


🐰 토끼반 알고리즘

🥕 나머지가 1이 되는 수 찾기

def solution(n):
    for i in range(n):
        if n%(i+1) == 1:
            return i+1
def solution(n):
    return [x for x in range(1,n+1) if n%x==1][0]

➜ 리스트 축약식 잘 쓰는 사람보면 정말 짱멋있다 어떻게 저렇게 안헷갈리고 한줄로 딱 쓰는지 그리고 리스트인 점을 저렇게 잘 활용하다니.. 첫번째 원소를 꺼낸다니.. 와우..!

🥕 약수의 개수와 덧셈

def solution(left, right):
    total = sum(list(range(left,right+1)))
    odd = 0
    even = 0
    for i in list(range(left,right+1)):
        count = 0
        for j in range(1,i+1):
            if i%j==0:
                count += 1
        if count%2 != 0:
            odd -= i
        else:
            even += i
    return even+odd

➜ 제곱일 때만 홀수개가 나온다고 확신이 안들었는데 지금보면 왜 확신이 안들었는지 모르겠다 특히 잘 푼 답을 보면 더 그렇다^^
그리고 짝수인거랑 홀수인거랑 둘다 같은 변수에서 빼주면 되는데 왜 굳이 나눴는지 지금 보니 좀 그렇네..

def solution(left, right):
    answer = 0
    for i in range(left,right+1):
        if int(i**0.5)==i**0.5:
            answer -= i
        else:
            answer += i
    return answer
profile
looooggi

0개의 댓글