전체 글
개발을 하다보면 git 사용은 필수적입니다. 오늘은 자주 사용하는 git 명령어들을 정리해보도록 하겠습니다! git 기본 명령어 정리 $ git status git 상태 확인 git 시작할 때 필요한 명령어(초기설정) $ git config --global user.name ““깃허브닉네임”” $ git config --global user.email ““깃허브이메일”” 내 github 계정을 디렉토리에 연결(맨 처음 github를 vscode와 연결할 때에만 입력하면 됨.) $ git init 로컬에 git 저장소 생성 $ git remote add origin 레포지토리주소. git github의 repository와 현재 로컬 디렉토리를 연결 $ git remote -v 연결이 잘 되었는지 확인 g..
std::vector 란? C++에서 C 스타일 배열을 대체하는 가변 크기 컨테이너 - 초기화 과정에서 데이터의 크기를 지정하지 않아도 됨 - 배열의 크기를 확장할 수 있음 #include #include using namespace std; int main() { // 벡터 생성 vector v1; // int 값을 저장할 비어 있는 벡터 생성 vector v2(10); // int 값 10개를 저장할 벡터 생성하고 0으로 초기화 vector v3(10, 1); // int 값 10개를 저장할 벡터 생성하고 1로 초기화 vector v4 {10, 20, 30, 40, 50}; // 유니폼 초기화(uniform initialization) vector v5(v4); // v4를 복사하여 v5 생성 vec..
Concurrent Processing은 우리 말로 '병행처리', Parallel Processing은 '병렬처리' 라고 불린다. 서로 분명 다르지만 비슷한 용어를 지닌 두 개념의 차이에 대해 알아보도록 하겠다. 1. Concurrent Processing(병행처리) 우리가 일반적으로 잘 아는 본 누이만 컴퓨터 구조를 보면서 살펴보자. program1, program2, program3가 있다고 가정해보자. 초창기 프로그램에서는 메모리 하나당, 하나의 프로그램만을 수행했다. 따라서 program1이 I/O를 수행하는 동안, CPU는 할 일 없이 놀고 있게 된 것이다. I/O는 기계적으로 움직이는 장치이고 cpu와 memory는 전자적으로 움직이는 장치이다. 전자적으로 움직이는 장치가 훨씬 빠르게 수행되므..
앞서 살펴본 JWT를 통한 인증방식을 만일 제 3자에게 탈취당할 경우 보안에 취약하다. 만일 token의 유효기간을 짧게 한다면 사용자의 로그인 시간이 짧아져서 불편하고, 유효기간을 늘리자면 토큰을 탈취달할 때의 보안이 취약해진다. 그래서 나온 방법이 Access Token과 Refresh Token이다. 처음 로그인을 완료하였을 때 Access Token과 Refresh Token이 동시에 발급된다. 이 토큰은 긴 유효기간을 가지면서 Access Token이 만료됐을 때 새로 발급해주는 열쇠가 된다. 1. 사용자가 로그인을 한다. 2. 서버에서 DB와 값을 비교하여 로그인을 완료한다. 3. Access Token과 Refresh Token을 발급한다. 이때 일반적으로 회원 DB에 Refresh Toke..
웹 서버는 Stateless 프로토콜인 HTTP를 사용한다. HTTP는 바로 직전의 한 통신도 기억하지 못한다. Stateless 하기 때문에. 따라서, 웹사이트에서는 이러한 인증을 관리하는 방안이 필요하다. 로그인 한 유저들에 대해 권한이 필요한 매 요청마다 재로그인을 시킬 수 없기 때문이다. 따라서 이 문제를 해결하기 위해 사용되는 것은 세션(session)과 토큰(token)이다. 1. 세션 기반 인증(session based authenticaton) 세션 기반 인증(session based authentication)에는 session과 cookie가 사용된다. 크롬 브라우저에서 '쿠키 및 사이트 데이터 삭제' 같은 기능을 써본 적이 있을 것이다. 여기서 cookie는 클라이언트가 웹 사이트에 ..
우리는 프로그래밍을 할 때, Java, C, Python 같은 high level langauge(고급 언어)를 사용한다. 하지만 이러한 high level language는 사람이 이해하기는 쉽지만, 하드웨어는 이를 이해하지 못한다. 하드웨어는 machine language(기계어)만을 알아들을 수 있기 때문이다. 따라서, 개발자가 작성한 프로그램을 하드웨어가 이해할 수 있도록 변환하는 작업이 필수적인데, 이러한 작업을 하는 것이 바로 Compiler와 Interpreter이다. 1. Compiler란? - 프로그램 runtime 이전에 소스 코드를 검사, 후에 machine language로 변환한다. -> 따라서 만일 오류가 있다면, 실행 전에 오류를 발견할 수 있다. - 소스 코드를 검사하는데에 ..
이번 글은 Django로 프로젝트를 시작하려고 마음먹은 개발 초보자 분들을 위해서 쓰는 글이다. 이미 장고로 개발을 시작하기로 결정했고, 프로젝트를 시작하기 위한 기초적인 설정들이 필요한 사람들을 위해 한단계씩 구체적으로 설명을 해보겠다. 1. 파이썬, vscode install 하기 장고는 파이썬 기반의 프레임워크이기 때문에 반드시 파이썬이 컴퓨터에 install 되어 있어야 한다. 내가 파이썬을 설치했는지 아닌지 헷갈린다면, cmd 창에 python 또는 python --verison이라는 명령어를 입력해보길 바란다. 아무것도 나오지 않는다면 python 홈페이지에 들어가서, 자신의 os를 선택한 뒤 install을 하면 된다. 2. 폴더를 생성하고 vscode를 켜기 내가 원하는 폴더를 생성하고 그..
문제 https://www.acmicpc.net/problem/8892 8892번: 팰린드롬 팰린드롬은 어느 방향으로 읽어도 항상 같은 방법으로 읽을 수 있는 단어이다. 예를 들어, civic, radar, rotor, madam은 팰린드롬이다. 상근이는 단어 k개 적혀있는 공책을 발견했다. 공책의 단어는 ICPC www.acmicpc.net #include using namespace std; typedef long long ll; int n; string s[101]; bool isPal(string s){ for(int i=0;2*i> n; for(int i=0;i> s[i]; } for(int i=0;i
문제 https://www.acmicpc.net/problem/1448 1448번: 삼각형 만들기 첫째 줄에 빨대의 개수 N이 주어진다. N은 3보다 크거나 같고, 1,000,000보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 빨대의 길이가 한 줄에 하나씩 주어진다. 빨대의 길이는 1,000,000보다 www.acmicpc.net #include #include #include using namespace std; bool compare(int x, int y){ return x > y; } int main() { int N; cin >> N; vector A; for(int i=0;i> temp; A.push_back(temp); } sort(A.begin(),A.end(),compare); ..