HTML(Hyper Text Markup Language)은 페이지에 제목, 문단, 표, 이미지, 동영상 등을 정의하고 그 구조와 의미를 부여하는 정적 언어로 웹의 구조를 담당한다.CSS(Cascading Style Sheets)는 마크업 언어(HTML, XML 등)가
시멘틱 태그 SEMANTIC TAG HTML의 body영역안에 위 사진과 같이 화면을 나누기 위해 시맨틱 태그를 이용합니다. 자주 방문하는 포탈 사이트인 네이버나 다음을 방문해봐도 이렇게 구성되어 있다. BLOCK vs. Inline vs. Inline-block
먼저 터미널에"bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"를 붙여넣기 한다.터미널을 열어서 "$ brew install git" 명령어
파이썬을 공부하면서 가장 중요한 부분은 반복문 사용이다. 저는 '별 출력'을 통해 반복문에 익숙해졌습니다.for i in range(5): for j in range(i+1): print('\*', end='') print()for i in ra
Stack(스텍) 스택은 LIFO (Last In First Out)의 자료구조를 갖고 있다. 즉 먼저 들어간 항목이 나중에 나오고, 나중에 들어간 항목이 먼저 나오는 구조이다.
DFS를 알아보기 전에 꼭 재귀 함수와 스택에 대한 개념을 꼭 알고 있어야 한다.사진과 같이 재귀 함수란 함수 안에서 함수 자기 자신을 호출하는 방식이고, 일반적인 상황에서는 잘 사용하지 않지만 알고리즘을 구현할 때 매우 유용하게 사용된다. 재귀 함수가 운영될 때 스텍
BFS(Breadth-First search) 일단 너비 우선 탐색이라고 불리는 BFS는 말 그대로 너비를 우선해서 그래프를 탐색하는 기법인다. 시작점인 루트 노드와 같은 거리에 있는 노드를 우선으로 방문한다고 보면 된다. 위의 그림과 같이 숫자 0 노드를 lv.1
출처 visualgo.net/sorting병합 정렬은 Devide and Conquer에 관한 기본 개념이다. 즉 어떤 문제를 우선 작은 문제로 쪼개고 난 후 다시 조합하여 원래의 문제를 푼다는 것이다. 그렇다면 아래의 병합정렬 코드를 풀어서 설명하겠다.lt 와 rt는
퀵 정렬은 분할 정렬과 마찬가지로 Devide and Conquer와 거의 동일한 방법을 사용한다. 병합 정령이 후위 순회(왼쪽 자식 노드와 오른쪽 자식 노드가 끝나면 부모 노드로 이동) 방식을 사용했다면, 전위 순회(왼쪽 자식 노드와 오른쪽 자식 노드가 갈라지기 전
가장 실습을 진행하기 좋은 사이트는 https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_all 이다. 회원 가입이 필요 없다.MYSQL을 이용하여 DB를 모두 불러올 때는 아래와 같은 코드를 사용하
1) GROUP BY, HAVING GROUP BY를 사용할때는 특정 카테고리 별로 나뉜 데이터 값을 추출하고 싶을 경우에 사용된다. 전체 데이터에서 SupplierID 별로 그룹을 정했고 그 그룹별로 평균 price를 추출했다. 그룹으로 나눠진 테이블을 또 조건을
인터넷상에서 간단한 메시지 하나를 주고받기 위해서는 두 대의 컴퓨터 클라이언트와 서버로 나누어진 각각의 컴퓨터가 필요하다. 두 대의 컴퓨터가 거리상으로 멀리 있다고 가정하에 클라이언트 컴퓨터가 "Hello, World"라는 메시지를 클라이언트 컴퓨터에 보내기 위해서는
URI 설계에서 가장 중요한 것은 리소스 식별이다. 회원 정보를 관리하는 API를 만든다고 가정했을 때 설계 리소스의 의미는 회원을 등록하고 수정하고 조회하는 게 리소스가 아니다. 회원이라는 개념 자체가 바로 리소스다. 회원을 등록하고 수정하고 조회하는 것을 모두 배제
HTTP HEADER HTTP 전송에 필요한 모든 부가정보를 포함한다. 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트, 서버 정보, 캐시 관리 정보 등등 무수한 정보들이 들어간다. 표준 헤더가 무수히 많고, 필요시 임의의 헤더 추가 가능하다
캐시 미적용, 적용 캐시란 자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다. 캐시가 없다면 데이터가 변경되지 않아도 계속 네트워크를 통해서 데이터를 다운로드해야 한다. 인터넷 네트워크는 매우 느리고 비싸며 브라우저 로딩 속도가 느리다. 캐시를 사용
병행성이란 한 컴퓨터가 여러 일을 동시에 수행하는 것을 의미한다. 즉 단일 프로그램 안에서 여러 일을 쉽게 해결하는 역할을 하며 독립적으로 진행하는 것처럼 느끼게 해준다. 예를 들어 집에서 영화를 보던 중에 배가 고파서 배달음식을 시키기 위해서 잠시 영화를 멈춰놓고 다
동시성이란 흔히 말하는 멀티태스킹입니다. 우리가 어떠한 일을 할 때 '나는 멀티가 안돼'라는 말을 종종 하는 사람을 볼 수 있을 것이다. 맞는 얘기다 인간은 멀티, 즉 멀티태스킹이 될 수가 없다. 그러나 컴퓨터는 멀티태스킹을 지원한다. 예를 들어 노래를 들으면서 인터넷
사전적 의미에서 시맨틱은 "의미론적인"이라는 뜻이다. 말 그대로 컴퓨터가 웹사이트를 단순한 코드의 구성이 의미를 주어서 사이트라는 걸 알 수 있게 만드는 것이다. HTML5 버전에 오면서 만들어진 것이 시맨틱 태그이다.HTML5에서부터 도입된 시맨틱 태그는 개발자와 브
1. position 속성 - relative, absolute, fixed > static: 기본값, 아무런 영향을 주지 않는다. relative: 원래 있던 위치를 기준으로 top, right, bottom, left의 값에 따라 좌표를 지정한다. absolute
파이썬에서 화면에 출력을 하고자 할 때 사용하는 함수가 print 함수이다.예를 들어 Hellow, Python을 출력하고 싶을 때 print("Hellow, Python")이라고 입력해야 한다. 자세히 괄호 안에 큰따움표("")를 사용하였다. 파이썬에는 5가지 정도의
Python은 Module/package를 찾을때 3가지 순서로 장소를 찾는다.첫번째 sys.modules, 두번째 built-in modules, 세번째 sys.path 순서이다. 1. sys.modules 파이썬이 모듈이나 package를 찾기위해 가장 먼저 확인하
Database 란 데이터라는 단어와 베이스라는 단어가 합쳐져 만들어졌다. 컴퓨터 시스템에 저장된 정보나 데이터를 모두 모아 놓은 집합을 의미한다고 생각하면 쉽다. 이런 데이터를 오랜 기간 저장 및 보존하기 위해서 데이터 베이스를 사용하고, 데이터를 체계적으로 보존하고
프레임워크는 뼈대나 기반구조를 뜻한다. 프로그래밍을 진행할 때 필수적인 코드, 알고리즘 등과 같이 어느 정도의 구조를 제공해주기 때문에 프레임워크를 사용하는 프로그래머는 이 프레임워크의 뼈대 위에서 코드를 작성하여 프로그램을 개발하는 것이다.라이브러리는 특정 기능에 대
1. startproject 터미널을 이용해서 원하는 이동한후 $ django-admin startproject '프로젝트명'을 이용한다. 저는 practice라는 프로젝트를 생성했습니다. 상위 사진은 터미널로 생성된 프로젝트로 이동한후 tree를 확인된 사진이다.
Django basic 1에서 사용했던 프로젝트를 그대로 사용할 것이다. basic 1에서도 동일하게 url mapping을 했지만 좀 더 많은 view 작성해서 url과 mapping 해볼 것이다.일단 polls/views.py에 메서드를 추가해본다. polls/u
Model 을 작성하고 ORM을 통해서 Database에 Table을 만들고 데이터를 생성, 조회, 수정, 삭제하는 해볼 것이다. ORM 이란 영어로 Object-Relation Mapping, 객체(Object)와 관계형 데이터베이스(Relational)을 연결(Ma
Software 개발 시 여러 개발자들은 동일한 소스코드 위에서 동시에 독립적으로 다양한 작업을 진행하기 위한 개념이다. 즉 하나의 프로젝트를 여러 갈래로 나누어서 관리할 수 있다. 각각의 독립된 Branch에서 마음대로 소스코드를 변경하여 작업한 후 원래 버전과 비교
Many-to-Many 관계를 가진 Database에 대해 Backend API 구현하는 방법 2가지를 구현해 볼 거다. 첫 번째는 Foreign Key로 중간 테이블을 선언하여 M2M를 구현하는 방법, 두 번째는 ManyToManyField를 사용하면 구현하는 방법이
모델을 작성할 때 M2M 관계에서 ManyToManyField 사용하면 중간 테이블을 생성하지 않아도 django에서 자동으로 생성해 준다. 그때 테이블 간의 속성값이 존재하는데 그중 두 개 through, relate_name 속성을 설명하겠다.상위 코드를 기반으로
여태까지 특별한 프로젝트를 만들어 보지는 않았다. 이번에는 django를 통해 modeling을 해서 database를 연결시키고 view를 작성할 때 정규 표현식을 사용하여 회원가입의 기능을 구현해볼 것이다.User(사용자)라는 테이블을 만들 것이며 그 안에 이름,
웹서비스를 진행할 때 인증(Authentication)과 인가(Authorization)를 해줘야 하는 상황이 발생한다. 특히 비밀번호를 이용해서 인증과 인가를 해주는데 이 비밀번호가 database에 간단한 str 형태로 존재한다면, 보안상의 문제가 발생할 것이다.
사용자가 로그인이 성공되었을 경우 사용자는 서버에게 JWT 토큰을 받게 된다. 기본적으로 서버는 무상태 상태인데, 사용자가 로그인을 요구해야 하는 기능을 사용하게 될 때 request의 header에 토큰을 함께 보내주면 서버는 토큰을 읽어줘야 한다. 토큰을 읽을 때
이번에는 로그인을 통해 게시물을 작성과 추가기능을 구현하고 게시물에 댓글과 대댓글을 달아보는 기능을 만들어 보겠다. 제일 먼저 그동안을 users라는 앱에 작성했지만 데이터의 종류가 달라지는 시점에서 앱을 분리하는 것이 좋으니 posts라는 앱을 생성해서 따로 관리하겠
이번에는 게시물 좋아요와 좋아요 취소를 하는 기능과 팔로우와 언팔로우 하는 기능을 추가해 보겠다.어떤 사람이 좋아요를 누르는지 확인하기 위해서 user column을 user 테이블의 외래키로 놓았으며, like는 boolean 필드 속성을 사용하였다. 상위 코드를 살
웹 개발 프로젝트를 진행하던 중 추가 기능으로 임의의 숫자와 문자를 조합해서 임시 비밀번호를 response해야 했다. 이때 파이썬 기본적으로 제공하는 UUID 모듈을 사용하면 간단하게 해결할 수 있다.UUID는 기본적으로 어떤 개체(데이터)를 고유하게 식별하는 데 사
프로젝트에서 결제를 기능을 개발하던 중 결제가 진행되면 물건이 출고되었다고 변경해 주고 사용된 포인트를 차감해 저장해 주고 결제 전이었던 상태를 결제가 완료되었다고 상태를 변경해 주는 기능을 한 함수인에 구현해야 했다. 그런데 이처럼 한 함수 안에 여러 가지의 프로세스
웹사이트는 일반적으로 자바스크립트, CSS, 이미지 등의 파일들을 사용하는데, 이러한 파일들을 Django에서는 Static 파일이라 부른다. 이러한 Static 파일들을 체계적으로 관리하기 위하여 Django에서는 프로젝트 홈 디렉터리 (settings.py에서의 B
일반적으로 object를 생성할 때 쓰는 create() 메서드는 한 번 실행될 때 하나 query를 거쳐 하나의 object를 생성하게 된다. 그런데 만약 많은 개수의 objects를 생성할 때 bulk_create() 메서드를 사용하면 좀 더 효과적이다. 기능상의
이번에는 Type orm의 QuerryBuilder에 대해서 알아보겠다. QuerryBuilder 간단한 CRUD 작업에 진행된다. 쿼리가 복잡해질 경우 ORM이 어떻게 제공되는지 기억이 나지 않거나 나의 ORM 실력이 부족할 때 typeorm이 최대한 sql 문과 최