jinja2를 사용해서 ssr을 했더니 장점 : 서버에서 jinja 템플릿이 미리 jinja 문법을 해석해서 조건에 맞게 HTML 파일을 만들어주기 때문에 클라이언트가 JS로 장난질 치는걸 사전에 방지할 수 있고, 클라이언트 브라우저의 성능을 덜 탄다.
토큰의 장점 : 역시 사용자가 함부로 뜯어서 변조를 할 수 없다.
비밀번호를 그냥 request 폼으로 보내긴 했는데 어차피 탈취되면 해독되는건 똑같으니까 할 필요가 없었나? : 아 오히려 토큰으로 넣으면 보안에 불리하구나
문제를 안 읽고 했더니 개망. ssr인데 csr로 만들어버림. 포팅하느라 작업 과정이 개망. 다음부턴 원하는 스펙을 잘 정의하고 처음부터 그렇게 만들어야할듯,
기획을 조금 더 시간을 잡고 갔으면 좋았을듯
클라이언트에서 JS로 이벤트 할당하거나 setTimeout 쓰면 csr이 되어버리는건가? 경계가 살짝 모호한 것 같음.
ssr과 csr의 장단점
비밀번호 전송:
SSR과 CSR의 경계:
SSR의 장점:
SSR의 단점:
CSR의 장점:
CSR의 단점:
1.1 정보는 비트와 컨텍스트로 이루어진다
1.2 프로그램은 다른 프로그램에 의해 다른 형태로 번역된다
1.3 컴파일 시스템이 어떻게 동작하는지 이해하는 것은 중요하다
1.4 프로세서는 메모리에 저장된 인스트럭션을 읽고 해석한다
1.5 캐시가 중요하다
1.6 저장장치들은 계층구조를 이룬다
1.7 운영체제는 하드웨어를 관리한다
1.8 시스템은 다른 시스템과 네트워크를 사용하여 통신한다
틀렸던 것들
알게된 것들
슈도 코드
(N / 2) + 1 부터 1씩 더해지는 i
i가 소수인지 판별
만약 맞으면
N - i가 소수인지 판별
만약 맞으면
i, N - i 출력
for i in range(T):
N = int(input())
for i in range(2, N//2 + 1):
if isPrime(i) and isPrime(N-i):
print(i, N-i)
break
for문 빼먹었었음, i를 2번 씀,
for i in range(2, N//2 + 1):
이게 아니라
range(N//2, N)
이건데 무지성으로 2부터 시작함
정글 가이드 페이지에서 문제 풀어보려고 하다가 30분 지나면 답 보라고 하길래 그냥 답지 봄.
https://shoark7.github.io/programming/algorithm/tower-of-hanoi
N개의 원판을 움직이게 하려면
우선 N-1개의 원판이 2번째 탑에 위치하게 해야 함
(그래야 N번째 원판이 3번째 탑으로 갈 수 있으니까)
그렇게 했으면 이제 N번째 원판은 신경 안 써도 됨
N-1개의 원판이 3번째 탑으로 가려면
N-2개의 원판이 1번째 탑에 위치하게 해야 함
(= 3번째 탑이 아닌 탑에 위치하게 해야 함)
...
2개의 원판이 3번째 탑으로 가려면
1개의 원판이 2번째 탑에 위치하게 해야 함
총 2번 옮기면 됨
1개의 원판이 3번째 탑으로 가려면
1번 옮기면 됨 (= 경계조건)
즉, N개의 원판을 움직이게 하려면
'N-1개의 원판을 두 번 들었다 놨다 + N번째 원판 옮기기'가 필요함
def hanoi(N, start, to, via):
if N == 1:
move(start, to)
else:
# 원판 N-1개를 via에 놓는다
hanoi(N-1, start, via, to)
# N번째 원판을 to에 놓는다
move(start, to)
# 원판 N-1개를 to에 놓는다
hanoi(N-1, via, to, start)