프로젝트를 진행하면서 컨텐츠 이동 기능을 만들어달라는 추가 요청이 있어 기능을 구현하다 컨텐츠가 동적으로 하나 추가 될 때마다, 하나의 array에 값을 보관하고 있다는 것을 알게되었다. 이 array에 담긴 순서대로 화면에 표시되니, array 안의 값들의 순서를 변경해주어야 했다. 그때 사용한게 javascript 구조 분해 할당이다. 구조 분해 할당 배열이나 객체의 속성을 해체하여 그 값을 개별 변수에 담을 수 있게 하는 javascript 표현식 https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment 구조 분해 할당 - JavaScript | MDN 구조 분해 할당 구문은 배열이..
두 사람이 주고 받은 대화를 tb_tx와 tb_rx로 나누어서 저장한다. 두 테이블은 동일한 구조고, tx 한번, rx한번 순서대로 이야기를 한다. tb_tx와 tb_rx는 아래의 컬럼을 가지고 있다 id 한 대화의 아이디 talk_text 발화 내용 talk_seq 발화 순서 regist_date 등록일 만약 regist_date가 rx와 tx가 동일하다면 단순히 union all로 데이터를 합쳐서 order by regist_date로 하면 될 것이다. (union은 중복을 제거하기 때문에, 두 데이터의 중복이 확실히 없다면 union all을 쓰는게 성능면에서 좋다) 그런데 여기서 문제는 등록일이 동일하다는 것이다. why...왜 그렇게 되어있는지는 모른다.. 이럴 때 해결 방법을 알아보자. 우선,..
mybatis의 selectKey를 사용하면 insert나 update구문을 실행시키기 전이나(order="BEFORE"), 후에(order="AFTER") 원하는 특정 값을 받을 수 있다. 아래는 ID값을 1 증가 시킨 후 증가 된 아이디를 select 하는 구문이다. 여기서 주의 할 것은 parameterType이다. 실제로 쓰이는 값은 name하나이지만, nextId라는 값을 받기 위해서는 이 값을 받아 줄 수 있는 무언가가 필요하다. name 만 사용한다고 생각하여 parameterType을 String으로 쓰면 아래 에러를 볼 수 있다. "nested exception is org.apache.ibatis.executor.executorexception: no setter found for th..
아래와 같이 반복되는 값이 많으면, 우리는 변수를 사용하고 싶다. 현재 날짜가 세번이나 반복된다. SELECT CASE WHEN ((SELECT COUNT(*) FROM TB_INFO I WHERE I.REGIST_DATE > DATE_FORMAT(NOW(), '%Y%m%d')) = 0) THEN CONCAT(DATE_FORMAT(NOW(), '%Y%m%d'), '-', '0001') ELSE CONCAT(DATE_FORMAT(NOW(), '%Y%m%d'), '-', LPAD(NEXT_ID + 1, '4', '0')) END AS no FROM TB_KEY_GENERATE WHERE NAME = 'injeong'; mysql 변수 사용법은 간단하다. 아래처럼 사용하면 된다. @변수명:=값 SELECT A..
한 컬럼 값의 최댓값을 가져와서 +1을 해줘야 할 때 바로 생각해 낼 수 있는 방법은 아래와 같이 서브쿼리를 사용하는 방법이다. UPDATE tb_key_generate SET NEXT_ID = (SELECT NEXT_ID FROM tb_bot_key WHERE name = 'injeong') + 1 WHERE name = 'injeong'; 그러나 항상 서브쿼리는 성능이 안좋다는 이야기를 많이 들어서 변경 방법을 찾아보니 join으로 변경 할 수 있었다. (사실 이정도 쿼리는 성능상의 차이가 없다. 하지만 조인으로 변경 할 수 있는지를 아는것과 모르는것은 하늘과 땅차이라고 생각한다. ) UPDATE tb_key_generate t1 INNER JOIN tb_key_generate t2 ON t1.nam..
1️⃣ template 작성 - 아래와 같이 리스트 안에 맵, 맵 안에 리스트를 가진 구조의 데이터를 파싱 할 것이다. [ { "date":"", "time":"", "categoryName": "", "keyword" : [ "keyword1", "keyword2", "keyword3" ] } ] 2️⃣ 데이터 파싱하기 async function drawAssessmentList(assessmentList) { let template = document.getElementById("trTemplate").innerHTML; Mustache.parse(template); _.forEach(assessmentList, (assessment, i) => { let keywords = assessment.ke..
axios는 기본적으로 비동기이기 때문에, 순서대로 실행되지 않는다. 처음 착각한 부분은 요청하고 바로 데이터를 받아와서 then 구문이 실행한다고 생각한 부분이다. 아래 코드는 forEach로 반복을 하고 있는데 나는 요청/응답-요청/응답-요청/응답 이렇게 실행 되는 줄 알았는데, 아래 코드는 요청-요청-요청-응답-응답-응답 이런식으로 실행돼었다. 그래서 원하는 데이터를 가지고 로직을 수행 할 수 없었다. ❎ 기존 코드 function contentsList(intentList) { _.forEach(intentList, (intent)=> { let intentId = intent.intentId; if(!contentSet.has(intentId)) { axios.get(url, {params : ..
다중디비 설정은 간단한데 아주 중요한..부분이 있다. 이 부분을 놓치면...몇시간동안 뻘짓 할 수도 있으니...꼭 확인하기! 0️⃣ DB dependency - 오라클은 maven에서 정식으로 지원하지 않기 때문에 아래처럼 repository를 설정해줘야 드라이버를 다운받을 수 있다 - DB버전 : 오라클 11g , mariaDB 10.6 oracle ORACLE JDBC Repository http://www.datanucleus.org/downloads/maven2/ com.oracle.ojdbc ojdbc8 19.3.0.0 org.mariadb.jdbc mariadb-java-client 2.6.0 1️⃣ datasource 설정 classpath:/egovframework/egovProps/glo..
- Total
- Today
- Yesterday
- 전자정부프레임워크
- 리액트
- Spring
- react
- 톰캣
- mysql
- 스프링
- Kubernetes
- nginx
- Linux
- 쿠버네티스
- centos
- tomcat
- 오토에버코테
- softeer java
- gcp
- 자바
- 현대코테
- 도커
- javascript
- 아파치카프카
- springboot
- 코테
- Docker
- 현대오토에버
- softeer
- 코딩테스트
- 자바스크립트
- java
- 자바코테
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |