분류 전체보기
MYSQL 날짜 형변환 과 데이터가 없어도 날짜 출력하는 방법
개발환경 - Java8, Mybatis, SpringBoot, gradle, mariaDB, JSP 목적과 문제발생 - 기간별 데이터를 출력해야하는데 데이터가 없는 기간은 조회되지 않았다. 해결방법 1. 출력할 날짜 템플릿을 만드는 쿼리를 작성한다. 2. 모듈도 중복되서 출력되면 안되므로 기간 템플릿 쿼리와 조인하여 최종 템플릿 쿼리를 픽스한다. 3. 템플릿 쿼리에 넣을 데이터를 가지고 있는 테이블을 조인한다. 하기는 문제해결 과정으로 쿼리 변천사이다. SELECT IFNULL(MONTH(B.접수일), 0) AS 접수일 , A.세부코드명 AS 모듈명 , A.세부코드 AS 세부코드 , COUNT(B.진행상태) AS 접수건수 FROM (SELECT * FROM 공통코드 WHERE 회사SEQ = #{회사SEQ..
MYSQL 쿼리문 통계(일간/주간/월간/기간별), DATE_FORMAT() 알아보기
MySQL 쿼리문(일간/주간/월간/기간별) // 일간통계 SELECT DATE(`날짜컬럼`) AS `date`, sum(`value`) FROM test_st GROUP BY `date`; // 주간통계 SELECT DATE_FORMAT(DATE_SUB(`날짜컬럼`, INTERVAL (DAYOFWEEK(`날짜컬럼`)-1) DAY), '%Y/%m/%d') as start, DATE_FORMAT(DATE_SUB(`날짜컬럼`, INTERVAL (DAYOFWEEK(`날짜컬럼`)-7) DAY), '%Y/%m/%d') as end, DATE_FORMAT(`날짜컬럼`, '%Y%U') AS `date`, sum(`value`) FROM test_st GROUP BY date; // 월간통계 SELECT MONTH(`날..
🔥자바스터디🔥 자바의 정석 CH16 네트워킹
1. 네트워킹(Networking) 네트워킹(networking)이란 두 대 이상의 컴퓨터를 케이블로 연결하여 네트워크(network)를 구성하는 것을 말한다 1.1 클라이언트/서버(client/server) '클라이언트/서버는 컴퓨터간의 관계를 역할로 구분하는 개념이다 서버(server)는 서비스를 제공하는 컴퓨터(service provider)이고 클라이언트(client)는 서비스를 사용하는 컴퓨터(service user)가 된다. 네트워크를 구성할 때 전용서버를 두는 것을 서버기반모델 이라고 하고 각 클라이언트가 서버역할을 동시에 수행하는 것을 P2P모델 이라고 한다 - 서버는 제공하는 서비스의 종류에 따라 파일서버 메일서버, 어플리케이션 서버 등이 있다 1.2 IP주소(IP Address) IP주..
[React ] Redux와 useReducer의 차이, Context API 사용하기
Redux를 사용하는 이유 리액트 프로젝트의 경우 대부분의 작업시 부모 컴포넌트를 통해 하위 컴포넌트의 데이터를 업데이트 한다. (데이터의 연관이 있는 컴포넌트끼리 ref를 사용하여 전달할 수 있으나 코드가 꼬이는 문제로 인해 지양한다) 컴포넌트의 갯수가 적을때는 문제가 되지 않지만, 점점 늘어날수록 유지보수의 어려움이 발생한다. 예를 들어 변수명의 변경을 하면 연관된 컴포넌트 파일 모두에 수정을 거쳐야된다. 그러나 리덕스를 사용하게 되면 데이터 상태를 컴포넌트 외부에서 관리하기 때문에 과정을 단순화 시킬 수 있게 된다. - Reducer : 업데이트 로직을 정의하는 함수 subscribe(상태 변화 감지요청) >> action(상태 변화) >> dispatch(상태업데이트, st..
🔥자바스터디🔥 자바의 정석 CH15 입출력(I/O)
1. 자바에서의 입출력 1.1 입출력이란? 컴퓨터 내부 또는 외부의 장치와 프로그램간의 데이터를 주고받는 것 1.2 스트림(stream) 자바에서 입출력을 수행하기 위해 두 대상을 연결하고 데이터를 운반하는데 사용되는 연결통로 먼저 보낸 데이터를 먼저 받게 되어 있으며 중간에 건너뜀 없이 연속적으로 데이터를 주고 받는다 1.3 바이트기반 스트림 - InputStream, OutputStream 스트림은 바이트단위로 데이터를 전송하며 입출력 대상에 따라 다음과 같은 입출력스트림이 있다. 1.4 보조스트림 실제 데이터를 주고받는 스트림이 아니기 때문에 데이터를 입출력할 수 있는 기능은 없지만, 스트림의 기능을 향상시키거나 새로운 기능을 추가할 수 있다 // 먼저 기반스트림을 생성한다. FileInputStr..
[React] 리액트 라이프사이클, Hooks 알아보기
웹게임 가위바위보 본 강의에서는 react의 component를 상속받은 class component를 사용한다. React에서 extends Component 후 성능적 이슈가 있을지 react devtools로 확인 후 pure Component를 사용할지 결정 쓸데없이 리렌더링이 일어날 때는 pure Component로 전환한다. background-postion을 통해 하나의 이미지의 부분부분을 재조명해준다 React life cycle 클래스 컴포넌트의 경우 -> constructor -> render -> ref (있을 경우) -> componentDidMount -> (setState/props 의 값이 변경될 때 -> shouldComponentUpdate(true) -> render ->..
[React ] Webpack으로 React.js 빌드하기
webpack을 사용하는 이유 웹팩은 모듈 번들러이다. 코딩할 때 편의를 위해 여러 개의 모듈로 나눠서 작업하는 경우가 많은데, 브라우저에서 파일 단위 모듈 시스템을 이용하는 것은 많은 네트워크 비용 낭비를 유발한다. 이러한 문제를 해결하기 위해서 여러 개의 모듈을 하나의 파일로 묶어서 보낼 모듈 번들러가 웹팩이다. 웹팩에서는 자바스크립트, 스타일시트, 이미지 등 모든 것을 모듈로 취급한다. (webpack을 이용하기 위해서는 node(자바스크립트 실행기)를 알아야한다.) (실제 서비스할때는 webpack을 사용하지 않고, 개발시에만 사용한다.) 모듈 시스템과 웹팩 설정 (react 기본 설정) 1. package.json (실행 명령어 >> npm init) package.json package nam..
🔥자바스터디🔥 자바의 정석 CH14 람다와 스트림
1. 람다식 1.1 람다식이란? 람다식은 메서드를 하나의 식(expression)으로 표현한 것. - 객체 지향 언어보다는 함수 지향 언어에 가깝다. - 함수를 간략하면서도 명확한 식으로 표현할 수 있도록 해준다. - 메서드를 람다식으로 표현하면 메서드의 이름 및 반환 값이 없어지므로 익명 함수 라고도 한다. - 람다식의 형태는 매개 변수를 가진 코드 블록이지만 런타임 시에는 익명 구현 객체를 생성한다. 1.2 람다식 작성하기 (타입 매개변수) -> { 실행문; ... } ex) - ExFunctionInterfaceTest.java interface ExFunctionInterface { public void method(); } public class ExFunctionInterfaceTest { p..
[React / Node.js] 유튜브 사이트 클론코딩 - 에러 해결, React, ES6 문법 알아보기
error 내용 Router.use() requires a middleware function but got a Object .... 동영상 강의 그대로 쓰다보니 화면에 나오지 않은 코드를 안적어서 생겼던 문제, 이 부분은 server(node) 쪽 router에다 video upload 를 저장하는 내용을 적었던 부분인데 module.exports = router; 동영상 강의 그대로 쓰다보니 화면에 나오지 않은 코드를 안적어서 생겼던 문제, (강사님이 미리 작성했던 모듈에서 복붙해오셨던거라 router를 export 해주는 부분이 안보였었다... ) Express.js server단의 controller 역할(url에 따른 모듈 매칭(route 이용))을 한다 app.use 또는 app.method ..
🔥자바스터디🔥 자바의 정석 CH13 쓰레드
13장. 쓰레드 -프로세스 & 쓰레드 프로세스 : 실행 중인 프로그램 프로세스 구성 : 필요한 데이터 & 메모리 등의 자원, 쓰레드 쓰레드 : 실제로 작업을 수행하는 것 ** 쓰레드가 둘 이상이면 멀티쓰레드 프로세스라고 한다. ex) 프로세스 = 공장 , 쓰레드 = 일꾼 이라고 생각하면 이해하기 쉽다. -멀티쓰레딩 장점 단점 - CPU사용률을 향상시킨다. - 자원을 보다 효율적으로 사용 가능하다. - 응답성이 향상된다. - 작업 분리 -> 코드가 간결해진다. - 자원을 공유하는 특성 존재 - 동기화(synchronization), 교착상태(deadlock) 같은 문제들을 고려하면서 프로그래밍 진행 -쓰레드의 구현 & 실행 - Thread클래스를 상속받는다. - Runnable인터페이스를 구현한다. ** ..
🔥자바스터디🔥 자바의 정석 CH12 지네릭스, 열거형, 어노테이션
1. 제네릭(Generic) 1.1 제네릭? 제네릭의 정의 - 제네릭(Generic)은 컴파일 시 타입을 체크 해 주는 기능이다. - 또는 타입을 파라미터화 해서 컴파일 시 구체적인 타입이 결정 되도록 하는 것이다. 제네릭의 장점 - 객체의 타입 안정성을 높인다. ※ "타입 안정성을 높인다"는 것은 의도하지 않은 타입의 객체가 저장되는 것을 막고, 저장된 객체를 꺼내올 때 원래의 타입과 다른 타입으로 잘못 형변환 되어 발생할 수 있는 오류를 줄여준다는 뜻이다. - 형 변환의 번거로움을 줄여준다. 1.2 제네릭 클래스의 선언 - 제네릭 클래스를 작성할 때, Object 타입 대신 타입 매개변수(E)를 선언해서 사용한다. ① 예를 들어, ArrayList 클래스는 다음과 같이 정의 되어 있었다. public..
[React / Node.js] react-router 리액트 라우터 알아보기
react-router 라우팅 : 다른 주소에 따라 다른 뷰를 보여주는 것 리액트에서 라우팅 기능을 제공하고 있지 않기때문에 직접 구현하여 사용해야한다. 그렇기 때문에 react-router 는 리액트를 사용함으로써 필수적이라 할 수 있다. - 클라이언트 사이드에서 이뤄지는 라우팅을 간단하게 해준다. - 서버 사이드 렌더링을 도와준다. import { BrowserRouter } from "react-router-dom"; react-router-dom의 라우터는 와 두가지가 있다. 는 HTML5의 history API를 활용하여 UI를 업데이트하고, 는 URL의 hash를 활용한 라우터로 정적인(static)페이지에 적합하다. import { Route, Switch } from "react-route..