전체 글 60

JPA limit

JPA를 이용해 쿼리를 작성할 때 1개의 데이터만 불러와야 할 때가 있었다. 그리하여 나는 @Query 어노테이션을 이용했다. @Query("select h from testVo h where h.hmName = :hmName limit 1") 하지만 limit에서 에러가 발생했다. 이유는 Hibernate의 HQL 문법에서는 SQL의 LIMIT을 지원하지 않기 때문에 발생한 일이었다. 스택오버플로우에 서칭해본 결과 이렇게 구현하니 최대 한 개의 데이터를 뽑을 수 있었다. @Query(value="select h from testVo h where h.hmName = :hmName ") List findAllByhmName( String hmName ,Pageable pageable); default L..

DB/JPA 2020.10.07

Elastic Beanstalk, EC2

EC2의 뜻은 Elastic Compute Cloud이다 C가 2개라서 EC2이다. EC2는 가상서버환경으로 우리가 원하는 환경에 맞게 설치하여 사용할 수 있다. EBS는 ElasticBeansTalk로 EC2보다 편리하게 제공되는 기능이 많다 로드 밸런싱(ELB), 오토 스케일링, health check 등 제공 해주고 내가 무슨 환경인지에 따라 미리 구축되서 나온다. EC2로 환경을 구성할 경우엔 우리가 따로 설치해야하는 점이 있다. aws.amazon.com/ko/elasticloadbalancing/ Elastic Beanstalk를 이용한 무중단 배포 구축 1 우리는 Elastic Beanstalk를 이용하여 로드밸런싱을 사용하기 위해 하나의 ElasticBeanstalk 안에 ec2 두개를 포..

인프라 2020.09.26

AWS- appspec.yml root

우리 서비스는 Code pipeline을 통해 배포를 한다 pipeline의 단계는 총 소스-빌드-배포 3가지 구성으로 되어있다. 소스트리는 깃허브와 연결하여 커밋할시에 바로 변경 릴리즈를 감지하여 소스로 간다음 그다음 빌드로 넘어가게 된다. 이때 우린 build중에 환경을 구축하기 위해 프로젝트에 buildspec.yml 파일을 작성해야한다. version: 0.2 phases: install: runtime-versions: java: openjdk8 build: commands: - echo [PHASE] Entered the build phase... - gradle bootjar post_build: commands: - echo [PHASE] Entered the post_build phase..

REACT 2020.09.24

gapi oauth2 - google Calendar

GAPI is Google's client library for browser-side JavaScript. It's used in Google Sign-in, Google Drive, and thousands of internal and external web pages for easily connecting with Google APIs. gapi 란 브라우저 쪽 자바스크립트를 위한 구글에서 제공해주는 클라이언트 라이브러리다. gapi는 구글 로그인, 드라이브 등 api를 쉽게 연결할 수 있도록 도와준다. 나는 리액트를 이용하여 gapi Google Calendar와 FullCalendar을 연동 시켰다. 1. index.html index.html에 gapi를 로드하기 위해 를 넣어준다. 이 외의 ..

REACT 2020.09.15

HTML5/ novalidate

novalidate란 html5에 새롭게 추가된 요소로 html5에서 유효성 검사를 하지 않겠다는 의미이다. 이렇게 될경우 novalidate를 명시하지 않을 때는 그냥 required 표시를 안띄고 바로 넘어가게 된다. 이는 내가 jquery의 validate를 사용할 때 알게되었다. $("#projectForm").validate({ rules : { Revenu : "required", Labor : "required", }, messages: { Revenu : { required: "please input revenu" }, Labor : { required: "please input Labor " } }, submitHandler: function (form) { console.log("클릭"..

HTML5 2020.08.18

React / 환경변수 설정 DefinePlugin

React에서 개발환경에 따라 API를 다르게 호출할 수 있는 경우가 있다 예로들면 local : axios.get("http://gateway:9010/test/api") dev : axios.get("http://devway:9010/test/api") prd : axios.get("http://prdway:9010/test/api") Webpack by default does not provide any process to load ‘.env’ files. but there many plugins and libraries that can do the same task. 출처 : https://medium.com/@bhautikbharadava/environment-variables-webpack-c..

REACT 2020.08.11

[리액트,React] Props 부모-자식 전달

구조는 Template - 자식1 - 자식2 설계 되어있다. 1. 먼저 최하위 자식인 MyModal에서 onDeleteLeave 함수를 실행할 경우 props로 넘어온 handleSubmit에다가 startDate값과 cnt를 넘겨준다. 2. 그럴경우 부모의 바로 밑인 하위자식이 CalendarForm은 handleSubmit으로 받아온 값을 this.props.handleApplyTemps로 값을 넘겨준다. 3. 그러면 상위부모인 Template은 CalendarForm의 handleApplyTemps 값을 가진 handleSubmit의 값을 받아온다. function MyModal(props) { const onDeleteLeave = param => { props.handleSubmit(startD..

REACT 2020.08.10

React // Object.map is not a function

React에서 .map 을 써서 데이터를 뿌려줄 경우 생각보다 나한테 .map is not a function 에러가 번번히 떴다. 원인은 .map()은 배열에만 가능하단 것이다. 그리하여 주로 map에서 원치 않는 포맷들로 이뤄진 데이터를 뿌려주려 할때 생기는 에러다. 예로들면 중괄호, 대괄호도 에러의 원인이 될 수도 있다. 아니면 state나 props의 형태가 Object가 아닌걸로 되어있을 수도 있다. 일단, 이 에러를 숨기는 방법 -> 이 방법은 에러를 완전히 해결한다고 볼 수 없다. 1. JSX안에는 중괄효를 이용해서 표현식을 이용할 수 있다. {tmId.map((tm,index) => { return( {index+1} {tm.hmName} {tm.leaveCategory} {tm.stDat..

REACT 2020.08.10

React/FullCalendar next,prev 이벤트 핸들링

내가 못찾은건진 모르겠지만 FullCalendar의 next,prev 버튼을 누를 경우 react fullCalendar에서 특정 함수를 실행시켜 줄 수 있는 메소드(?)를 제공해주지 않아 정말 많은 시행착오들이 있었다. --FULLCALENDAR 일단 여기에서 next와 prev를 누를경우 특정 함수를 실행시키고 싶었다 1. 버튼 생성 -> FullCalendar의 prev버튼 trigger -> 함수 실행 ==> 비효율적 2. FullCalendar의 customButton 생성 FullCalendar에서 제공해주는 event 가 유일하게 달이 바뀔때마다 실행되는 요소이기에 위의 코드처럼 event={this.monthChange} 함수를 실행해주었다. monthChange = () => { var ..

REACT 2020.08.07
728x90
반응형