SW Jungle/TIL (Today I Learned)
-
[WEEK01/DAY02] python : 배열의 복사본을 삭제했는데 원본이 삭제될 때SW Jungle/TIL (Today I Learned) 2022. 9. 25. 02:48
python으로 재귀호출 알고리즘 문제를 풀던 중, 원본 배열이 필요해서 남겨두기 위해 복사본을 만들고 복사본의 일부를 del 명령어를 이용해 삭제했는데 원본이 같이 삭제되어 버리는 현상이 발생했다. 예를 들면, a = [1, 2, 3, 4, 5, 6] b = a# [1, 2, 3, 4, 5, 6] del b[0]# b배열의 0번째를 삭제했으므로 b배열은 [2, 3, 4, 5, 6]이 된다. # 나는 b배열의 일부분을 삭제했으니, a배열은 남아있어야 하는데... print(a)# [2, 3, 4, 5, 6] print(b)# [2, 3, 4, 5, 6] # ?????? 이렇게 되는 것이다. 왜 그런가 하니, 이것은 python의 객체 개념을 이해하지 못한 나의 잘못이었다. python에는 mutable ..
-
[WEEK01/DAY01] 백준 문제 : 소수 찾기SW Jungle/TIL (Today I Learned) 2022. 9. 24. 02:24
https://www.acmicpc.net/problem/1978 1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net 오늘 풀었던 알고리즘 중에 제일 어려웠던 문제다. 소수는 약수가 1과 자기 자신밖에 없는 1보다 큰 자연수를 말한다. 그래서 1보다 큰 자연수 n이 주어졌을 때 n이 소수인지를 판별하는 가장 간단한 방법은 2에서 n-1 까지의 모든 자연수로 나누어 보는 것이다. 만약 한 경우에라도 나누어 떨어진다면, n은 소수가 아닌 것이다. 위 방법으로 풀이하면 시간 복잡도가 O(N)이 된다. 좀 더 빠른 방법이 있는데, 굳이 2에서 n-1까지 반복하지 않고 √n 까지만 반복해도..
-
[WEEK00/DAY03] Jinja2 값을 Javascript에서 사용하기SW Jungle/TIL (Today I Learned) 2022. 9. 22. 05:01
Jinja2는 python에서 사용할 수 있는 templating engine이다. 자세한 설명은 아래 블로그를 참조하자. https://frhyme.github.io/python-libs/jinja_basic/ 이번 웹 사이트에서 구현하려는 기능은 본인이 남긴 댓글에만 수정/삭제가 가능하도록 만들어주는 것이었다. 그러기 위해서 클라이언트에 있는 로그인 ID 정보와 서버 댓글 DB에 있는 댓글 ID 정보를 비교해야 했다. 그 과정에서 Jinja2로 전달된 값을 활용해야 했는데, 문제는 Jinja2는 HTML로 만들어주기 때문에 비교 연산자를 쓰기에 부적합했다. 그렇다고 javascript에서 jinja2를 지원하는 것도 아니었다. 그래서 간단한 트릭을 이용했다. 먼저 html로 보내면, 그 값을 java..
-
[WEEK00/DAY02] flask jsonify - ObjectId 전달 에러SW Jungle/TIL (Today I Learned) 2022. 9. 21. 01:39
flask의 기능인 jsonify를 이용하여, javascript 쪽에 딕셔너리 형태의 데이터를 넘기려고 시도했다. 그러나 자꾸 다음과 같은 에러가 나는 바람에 한참 애먹었다. TypeError: Object of type ObjectId is not JSON serializable ObjectId가 JSON 형태로 시리얼라이즈 될 수 없다는 에러 메시지였다. 그렇다면 ObjectId는 무엇인가? 나는 데이터 관리를 위해 mongoDB를 사용했는데, ObjectId는 mongoDB에서 제공하는 unique한 형태의 id 값이었다. mongoDB의 공식 문서를 참고해보면, 대충 해석해보면, 12바이트 길이를 가지고 있는데 다음과 같은 구성으로 이루어져 있다: - 4바이트 길이의 타임스탬프 (ObjectId..
-
[WEEK00/DAY01] Jinja2, SSR(Server-Side Rendering)SW Jungle/TIL (Today I Learned) 2022. 9. 20. 02:07
Python에서의 Flask패키지를 이용한 Jinja2에 대해 배웠다. Jinja 템플릿은 Python Flask 패키지에 내장된 Template 엔진입니다. 개발자가 동적으로 변하는 웹 페이지를 쉽게 구현할 수 있도록 도와줍니다. 고정적으로 출력되어야 할 서식 html 코드가 존재하고 동적으로 변해야할 자리는 Jinja2 문법으로 비워둡니다. 이후 클라이언트가 웹 브라우저를 통해 엔드포인트에 접근하면 아까 비워둔 자리에 값을 설정하여 클라이언트에게 출력합니다. 이처럼 고정적인 행위와 변해야할 행위를 쉽게 할 수 있다는 장점이 있습니다. 출처 : https://salguworld.tistory.com/31 그리고 CSR과 SSR의 차이. CSR(Client Side Rendering)과 SSR(Serve..