각종 학습 요약/Concept
-
JWT는 왜 base64로 encoding 하는 걸까?각종 학습 요약/Concept 2022. 7. 28. 10:53
요즘 JWT를 공부하고 있는데요. 사용할 때 보면 약속이라도 한 듯이 encode/decode해서 사용하더라고요. encrypt/decrypt도 아니고(그러니까 보안의 목적도 아니고), 굳이 난독화 해서 보낼 이유가 있나? 라는 생각이 들었어요. JWT는 서버 부하를 줄여주기 위해 도입되는 컨셉트인데, 쓸데없는 연산처리를 덧붙인다고? 그럴리가 없을텐데. 그럼 이유가 있을텐데. 고런 의식의 흐름이 흘러갔습니다. 그래서 일단 구글링을 해보았는데요. 시원하게 이해되는 명쾌한 답변은 얻지 못했습니다. 아쉽게도요. 그래도 찾아본 내용들을 바탕으로 개인적으로 생각을 해보았고, 제 나름대로 내린 답을 공유해보겠습니다. 비판적으로 수용해주세요. 😀 JWT가 사용될 환경을 상상해보자 하나의 서버가 모든 것을 처리할 수 ..
-
Concept: 영속성Persistence이란?각종 학습 요약/Concept 2022. 7. 5. 11:10
Concept: 영속성Persistence이란? 영속성이란 말 자체가 너무 낯설어서 어렵게 느껴지지만 개념 자체는 쉽기 때문에 간단히 짚고 넘어가고자 합니다. 영속성 혹은 지속성으로 번역되는 Persistence는 말 그대로 뭔가 유지되게 해주는 성질/상태입니다. 프로그램은 컴퓨터의 메모리 위에 생성되어 실행됩니다. 여기서 메모리란 대개 RAM을 말하는 것이죠. RAM은 휘발성 메모리이기 때문에 컴퓨터가 종료된다면 실행되던 프로그램의 상태를 유지하지 못합니다. 프로그램 상 유지되어야 할 값이나 상태가 존재한다면, 별도의 저장소에 기억해두도록 해야 합니다. 한 마디로 요약하면, 영속성은 프로그램의 값이나 상태를 별도의 저장소에 기록해서 머신이 종료되어도 프로그램의 상태가 유지되도록 하는 것입니다.
-
Concept: 시간복잡도의 기본적인 이해각종 학습 요약/Concept 2022. 5. 31. 11:21
시간복잡도Time Complexity의 기본적인 이해 이 글에서는 시간복잡도의 대표적인 유형과 기본적인 원리에 대해 이해해봅니다. 시간복잡도가 왜 낮아야 좋은 건지, 내가 짠 코드가 어떤 시간복잡도에 해당하는지는 알고 있도록 돕는 글입니다. 이 글을 읽어도 시간복잡도를 증명하거나 하는 일은 할 수 없습니다. 그 정도의 개념을 설명하고 있어요. 시간복잡도란? 시간복잡도는 매-------------------우!!!!!! 큰 수의 데이터 표본을 다룰 때에 좀 더 효과적으로 처리하고자 고안된 개념이에요. 시간복잡도 표기와 읽기 O(1), O(n)과 같은 식으로, 대문자 O 옆에 괄호를 쓰고, 그 안에 복잡도를 기록하는 식으로 표기합니다. 이 표기법을 빅오 표기법이라고 해요. 각각 오원, 오엔의 시간복잡도를 갖..
-
Concept : 재귀(Recursion)의 기본 개념 이해하기각종 학습 요약/Concept 2022. 5. 24. 11:08
재귀(Recursion)의 기본 개념 이해하기 이 글에서는 기존에 반복문으로 해결하던 문제를 재귀적 사고로 해결할 수 있다는 것을 알아봅니다. 재귀함수를 구성하는 기본적인 논리와 재귀함수를 구현할 때의 주의점에 대해 짚어봅니다. 재귀적(recursive) 호출이란? 재귀를 wikipedia를 찾아보면 자기 스스로를 참조하는 것이라고 정의되어있습니다. 스스로를 호출하는 함수(메서드)라고 보아도 무방할 것 같습니다. 왜 스스로를 호출하느냐? 그것은 문제가 해결될 때까지 특정 동작을 반복하기 위해서입니다. 근데, 여기쯤 왔다면 우리는 이미 반복을 위한 도구를 가지고 있죠. for와 while로 대두되는 반복문입니다. 반복문도 반복을 위한 것이고, 재귀도 반복적인 동작을 위한 것이라면 둘의 차이는 무엇이 있을까..
-
컴퓨터의 이해각종 학습 요약/Concept 2022. 4. 26. 17:00
컴퓨터의 이해 1.컴퓨터의 개념 입력받은 데이터를 / 정해진 규칙대로 / 처리해서 / 결과를 저장하고 / 출력하는 전자 장치 입력받고 출력받는 부분(사람과의 통신(?))을 담당: 하드웨어 연산: 하드웨어 하드웨어 위에서 연산되는 '내용': 소프트웨어 2.컴퓨터의 구성: 소프트/하드 2-1.소프트웨어의 종류 시스템 소프트웨어: 응용 소프트웨어를 실행하기 위한 플랫폼을 제공. 하드웨어에 접근/제어할 수 있도록 설계되어있다. 하드웨어와 사용자(가 사용중인 응용 소프트웨어) 사이의 계층. 로더, 드라이버, 컴파일러, 어셈블러 같은 것들. 흔히 비휘발성 메모리 위에 위치하게 된다(펌웨어). 응용 소프트웨어: 시스템 소프트웨어와 상반된 개념으로, 사용자의 문제를 직접 해결. 응용품(쉽게 말해 우리가 '프로그램'이라..
-
프로그래밍의 이해각종 학습 요약/Concept 2022. 4. 26. 17:00
프로그래밍의 이해 프로그래밍의 개념 컴퓨터의 빠른 연산력을 이용해서 문제해결을 컴퓨터에게 위임하는 것. 프로그램을 구성하는 것들 언어로 작성된 명령문의 집합 -> 그걸 컴퓨터가 사용할 수 있도록 재구성 - 컴파일, 빌드 사용자 친화적인 언어일 수록 "고수준의 언어다"라고 하고, 컴퓨터가 좋아하는 기계어에 가까울 수록 "저수준의 언어다"라고 함. 유용한 프로그래밍 도구: IDE IDE(통합개발환경)란 소스코드 작성, 실행, 디버그, 빌드, 모든 것을 하나로 할 수 있게 통합된 개발 환경을 제공하는 툴이다.