❓ 컴포넌트란? 컴포넌트란 UI 또는 기능을 부품화해서 재사용이 가능하게 만드는 것이다. 동일한 UI를 재활용하므로, 원본만 변경하면 모두 적용되게 한다. 데이터는 각 컴포넌트에 맞게 변경하여 사용이 가능하다. ✍️ 컴포넌트 작성 방법 클래스형 import { Component } from "react" class New extends Component { render(){ return 이것은 클래스형 컴포넌트 } } export default New 함수형 // 함수형 컴포넌트 작성법 1 function New(){ return 이것은 함수형 컴포넌트 } export default New // 함수형 컴포넌트 작성법 2 const New = () => 이것은 함수형 컴포넌트 export default ..
✍️ 정의 React는 javascript를 쉽고, 효율적으로 사용할 수 있도록 Facebook에서 만든 도구이다. Component라는 부품을 만들어 큰 프로젝트에서 페이지를 만들 때, 갈아끼우는 방식으로 개발할 수 있다. 대표적인 서비스로 페이스북, 인스타그램, 에어비앤비 등이 있다. ❓ React를 배워야하는 이유 대표적인 프론트엔트 도구로 React, Angular, Vue 가 있다. 이중에서 React를 배워야하는 이유는 다음과 같다. 가장 많은 사용자 수 npm은 javascript로 만들어진 도구들을 다운로드 받을 수 있는 사이트인데, 이런 npm trends라는 npm에서 다운로드된 도구들의 다운로드 경향을 보여주는 사이트에서 다운로드 수가 가장 많다. React 하나를 배우면 웹, 안드로..
✍️ 정의 javascript 언어를 간편하게 사용할 수 있도록 단순화시킨 오픈 소스 기반의 자바스크립트 라이브러리 HTML의 DOM 조작과 이벤트 제어, 애니메이션 그리고 Ajax까지 웹 화면을 다루는 자바스크립트 라이브러리 지금은 Angular, React, Vue 와 같은 화면을 다루는 여러 기술들이 있지만, 그전에 화면 개발을 쉽게 해주는 라이브러리였다. 📘 Write less, do more - jQuery가 가지 철학 즉, 적은 코드로 생산성을 높이자는 뜻으로 해석할 수 있겠다. jQuery가 제공하는 기능 DOM과 관련된 처리를 쉽게 구현할 수 있다. 규칙성을 가지고 이벤트를 처리할 수 있다. 애니메이션 효과를 쉽게 만들 수 있다. Ajax 처리 방식을 편리하게 사용할 수 있다. 🔎 제이쿼리..
✍️ 정의 각 단계마다 가장 좋은 것만 선택하여 해답을 구한다. 현재 상태에서 보는 선택지 중 최선의 선택지가 전체 선택지 중에서 최선의 선택지라고 가정하는 알고리즘이다. 지금 선택이 앞으로 남은 선택에 어떤 영향을 끼치질 고려하지 않는다. 탐욕법을 적용하기 위해서 지역적으로 최적이면서 전역적으로 최적이어야 한다. 단계마다 하는 선택이 지역적으로는 최선이지만, 모든 단계를 거쳐 최종적으로 나온 해답이 최적이란 보장은 없다. 🔎 적용 조건 greedy choice property 앞의 선택이 이후 선택에 영향을 주지 않는다. 각 단계에서 가장 좋은 것을 선택하는 행위가 최적해로 가는 길이다. optimal substructure 문제의 최적해가 부분 문제에서도 최적해이다. 전체 문제 안에 여러 단계가 있고..
✍️ 정의 BFS 란? Breadth-First Search 시작 정점 방문 후 가까운 정점을 우선 방문한다. 넓게 탐색하는 방법 두 노드 사이의 최단 거리 및 최단 경로를 구할 때 자주 사용한다. 큐를 이용해서 구현 장점 최적해 찾음을 보장한다. (미로찾기 등 최단거리 구하기) 검색대상의 규모가 크지 않고, 검색 시작 지점으로부터 원하는 대상이 별로 멀지 않을 때. 단점 경로의 특징을 가지지 못한다. DFS 란? Depth-First Search 시작 정점 방문 후에 다음 분기로 넘어가기 전 해당 분기를 완벽하게 탐색하는 방식 스택 또는 재귀함수로 구현 장점 최선의 경우 빠르게 해를 찾을 수 있다. 검색 대상 그래프가 정말 크다면 DFS를 고려 단점 찾은 해가 최적의 해가 아닐 가능성이 있다. ⏰ 시간..
✍️ 정의 이진 탐색, Binary Search 라고도 한다. 순차적 탐색보다 빠른 탐색을 위해 나온 탐색 방법으로 실제로 이분 탐색의 시간복잡도가 순차적 탐색보다 낮다. 🆚 순차적 탐색 vs 이분 탐색 순차적 탐색 정렬된 배열 안에서 특정 원소를 찾기 위해 인덱스 0부터 차례로 탐색 이분 탐색 정렬된 배열 안에서 특정 원소를 찾을 때, 인덱스 left와 right의 중간값과 비교 중간값과 비교해서 찾는 원소가 아니면 인덱스 left 또는 right를 다시 정해준다. 인덱스 left와 right를 정할 때마다 탐색 범위는 반으로 줄어든다. 🔎 이분 탐색 방법 처음 범위는 인덱스 left = 0, right = 끝, mid = (left + right) / 2 mid의 값과 찾는 원소를 비교한다. mid ..
관습적으로 Javascript를 이용한 네트워크 요청의 경우, HTTP 헤더 중 X-Requested-With 값을 XMLHttpRequest 로 설정하여 전달한다. jquery의 ajax 구문을 이용할 땐는 이 헤더가 기본적으로 설정되는듯 하다. 따라서 request.getHeader("X-Requested-With") == "XMLHttpRequest" 의 경우에는 ajax라고 생각해야 될 듯 하다. 인용 https://yiunsr.tistory.com/875 HTTP 헤더 중 X-Requested-With 에 대해 파이썬 flask 웹 프레임워크 버전을 2.0 대로 업데이트 하는 테스트를 진행하였다. 기존에는 request.is_xhr 이라고 해서 ajax 로 전달되는 것인지 아니면 http 에서 ..
on : join 전에 조건을 필터링한다. where : join 후에 조건을 필터링한다. 공통점 inner join 을 할 때는 차이가 없다. 차이점 outer join 시, on으로 조건을 적용시켜야 원하는 결과를 얻을 수 있다. 여기서 원하는 결과는 outer table에 null 값들을 포함한 행들이 join의 결과값으로 반환된 것을 말한다. on 명령어 select m.id, m.username, t.id, t.name from member m left join team t on m.team_id = t.id AND t.name = "teamA"; where 명령어 select m.id, m.username, t.id, t.name from member m left join team t on m..
CQS 란? 어떠한 메서드를 호출했을 때, 내부에서 변경(side effect)가 일어나는 메서드인지, 내부에서 변경이 전혀 일어나지 않는 메서드인지 명확히 분리하는 것이다. 전자를 상태를 변경시키는 Command, 후자를 조회의 기능을 하는 Query라고 한다. 이 원칙을 지킴으로써 얻는 점 데이터 변경 관련 이슈가 발생했을 때, 변경이 일어나는 메서드만 찾아보면 되므로 유지보수가 좋아진다. 개발 시 권장 방법 insert - id만 반환한다. update - 아무것도 반환하지 않는다. 조회 - 내부의 변경이 없는 메서드로 설계한다.