본문 바로가기

전체 글

(133)
(Java) 프로그래밍에서 비즈니스 로직 영역 구분 홈페이지 회원 가입의 시스템을 예로 든다. 가입 시스템에서 회원 아이디 중복체크를 개발할 때 작업 순서를 보자. 1. 중복된 아이디가 있는지 여부를 체크하는 과정 2. 사용자에게 중복체크의 결과를 화면영역에서 표시하는 과정 2번 영역은 Presentaion 영역, 흔히 View 영역이라고 많이 불리운다. 가공된 데이터를 단순히 표시만 해주는 영역이다. 위에서 언급된 데이터의 가공을 담당하는 곳이 바로 1영역이고 이곳을 Logic 영역, Model 영역이라고 한다. 비즈니스 로직 Logic 영역에서의 코딩 작업을 흔히 비즈니스 로직이라고 한다. 아이디 중복 찾기는 아래와 같은 비즈니스 로직으로 작성되게 된다. 아이디 값 저장 => 회원 정보 DB 연결 => DB에 아아디 값 있는지 여부 확인 =..
(Java) JPA, Entity, DAO, DTO, VO 개념 JPA(Java Persistence API) 자바 진영의 ORM(객체관계매핑, Object-relational mapping) ORM 참고자료 : https://gmlwjd9405.github.io/2019/02/01/orm.html persistence : 영속성. 프로그램이 종료되더라도 사라지지 않는 데이터의 특성 객체-관계매핑 : OOP에서 객체는 클래스로 RDB에서 데이터는 테이블로 사용되는데 그 둘을 자동으로 매핑(연결)해주는 것을 말한다. JPA 기본 어노테이션 참고자료 : https://bit.ly/3c6mBK5 Entity Entity 클래스는 DB의 테이블에 존재하는 Column들을 필드로 가지는 객체를 말한다. Entity는 DB의 테이블과 1대 1로 대응되며, 때문에 테이블이 가지지..
(컴퓨터 기초) 비트 XOR 할당 사용 비트 XOR 할당 연산자(^=)는 두 피연산자의 이진 표현을 사용하고 이에 대해 비트 XOR 연산을 수행하고 결과를 변수에 할당한다. 컴퓨터의 연산은 숫자 0과 1로만 이루어져 있고 비트 연산은 피연산자를 2진수로 인식해서 처리한다. 비트 XOR의 연산도 2진수로 진행이 된다. 아래의 2진수는 8bit 기준으로 나타낸 것이다. ※ 8bit - 비트는 한 덩어리(마디)의 조각을 의미하고 8bit는 한 마디를 8조각으로 나누었다는 의미이다. - 서구권에서는 1개의 문자를 처리하는데 8bit를 사용한다. 그래서 정보처리의 기본단위로 8bit를 사용한다. 10진수 2진수(8bit) 0 0000 0000 1 0000 0001 2 0000 0010 3 0000 0011 4 0000 0100 5 0000 0101 6..
(컴퓨터 기초) 비트 연산자 비트 연산자는 비트(bit) 단위로 논리 연산을 할 때 사용하는 연산자이다. 왼쪽이나 오른쪽으로 전체 비트를 이동시킬 때도 사용한다. 비트 연산자설명 비트 연산자 연산자 설명 ~ 비트를 1이면 0으로, 0이면 1로 반전시킴. (비트 NOT 연산) & 대응되는 비트가 모두 1이면 1을 반환함. (비트 AND 연산) | 대응되는 비트 중에서 하나라도 1이면 1을 반환함. (비트 OR 연산) ^ 대응되는 비트가 서로 다르면 1을 반환함. (비트 XOR 연산) 지정한 수만큼 비트들을 전부 오른쪽으로 이동시킴. (right shift 연산) 비트 연산자 진리표: 각 비트의 값에 따라 얻을 수 있는 가능한 비트값을 표로 나타낸 것 XOR 연산자 배타적 논리합(exclusive OR). 두 개의 피연산자 중 하나만이..
(canvas) 마우스로 사각형 여러개 그리기 (feat.forEach) JS나 React에서 canvas 태그를 활용하여 하나의 캔버스 태그에 여러개의 사각형을 그리는 방법을 설명하겠다. 마우스로 사각형을 그리는 주제를 검색하면 자료가 많이 있지만 한번 그린 사각형에 또 다른 사각형을 추가할 수 있는 방법을 설명한 자료는 찾기가 어려워서 공유하고자 한다. canvas에서 마우스로 사각형을 한번만 그리는 것을 안다는 가정하에 결론을 먼저 말하자면 '현재 내가 그리고 있는 rectagle의 정보를 useState를 활용하여 elements 변수에 배열 형태로 저장해주고 다음 사각형을 그릴 때 저장된 elements와 현재 그리고 있는 rectagle의 정보를 forEach로 순회하며 strokeRect 해주는 것이 포인트이다.' 아래는 마우스가 이동할 때 호출되는 drawing..
[JS] 마우스 클릭 좌표 (feat. canvas) JS 에서 2D로 화면에 그림을 그릴 때 canvas를 많이 활용한다. 이때 마우스 클릭의 좌표의 값을 체크하는데 기본적인 좌표값의 이름들을 알아보자. 중요도 순서 1. clientX, clientY 뷰포트를 기준으로 좌표를 표시한다. 스크롤바가 움직이더라도 마우스로 클릭한 clientX, clientY의 값은 바뀌지 않는다. 2. offsetX, offsetY DOM을 기준으로 좌표를 표시한다. React에서 useRef로 설정한 DOM 객체의 영역에서 왼쪽 상단 모서리 부분(0, 0)을 기준으로 offsetX와 offsetY 좌표값을 출력한다. 나머지 screenX, screenY pageX, pageY도 있다. 추가 참고는 아래 링크 https://hianna.tistory.com/493
(알고리즘) binary Search(이진탐색) 이진탐색 문제 오름차순 정렬된 정수의 배열(arr)과 정수(target)를 입력받아 target의 인덱스를 리턴해야 합니다. const binarySearch = function (arr, target) { let left = 0; let right = arr.length - 1; while(left target 인 경우 - arr[mid]를 기준으로 배열의 오른쪽에 target이 있을 수 있다. - 그래서 다음 차례에서 그 배열의 오른쪽에서 탐색을 할 것이기 때문에 left의 값은 mid + 1이 된다. 2) arr[mid] < target 인 경우 - arr[mid]를 기준으로 배열의 왼쪽에 target이 있을 수 있다. - 다음 차례에서는 배열의 왼쪽에서 탐색을 할 것이기 때문에 right의 값은 ..
(SQL) union을 활용한 결과물 order by 하기 프래그래머스 SQL 문제를 통해 union으로 2개의 쿼리문이 합쳐진 결과물을 order by하는 방법을 알아보자. 문제 설명 FRIENDS 테이블은 게임 내 친구 관계 정보를 담고 있습니다. FRIENDS 테이블 구조는 다음과 같으며 ID1, ID2 쌍은 ID1과 ID2가 서로 친구라는 뜻입니다. 이 테이블에서, 친구 관계는 양방향이며, 친구 관계가 중복으로 등록되는 경우는 없습니다. (id1가 id2의 친구이면 id2는 id1의 친구이고, 레코드 id1, id2가 등록되어 있을 때, 레코드 id2, id1가 등록되는 경우는 없습니다) FRIENDS 테이블 구조 NAME TYPE NULLABLE ID2 VARCHAR(N) FALSE ID3 VARCHAR(N) FALSE 문제 FRIENDS 테이블로, s..