일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Git
- Windows
- MySQL
- IntelliJ
- Kubernetes
- react
- dbeaver
- LOG4J
- JPA
- JavaScript
- BPMN
- wildfly
- gson
- mybatis
- Spring
- nodejs
- gradle
- Java
- nginx
- tibero
- springboot
- database
- jetbrains
- NCP
- docker
- log4j2
- maven
- intellijIDEA
- VSCode
- useEffect
- Today
- Total
목록분류 전체보기 (237)
두 손끝의 창조자
private List splitSql(String sqlChunk) { StringBuilder sb = new StringBuilder(); List sqlList = new ArrayList(); boolean openQuote = false; for (int i = 0; i < sqlChunk.length(); i++) { char c = sqlChunk.charAt(i); if (c == '\'') { openQuote = !openQuote; } if (c == ';' && !openQuote) { sqlList.add(sb.toString().trim()); sb = new StringBuilder(); } else { sb.append(c); } } re..
ssh-keyscan -t rsa [접속하고자하는호스트주소] >> ~/.ssh/known_hosts gradle에서 org.hidetake.ssh 를 이용하여 파일을 업로드 하는 등 스크립트를 실행하려고 하니 com.jcraft.jsch.JSchException: reject HostKey 오류가 발생했다. OS에 해당 호스트에 대한 정보(?)가 없기 때문인것 같은데 위 명령을 수행해서 known_hosts에 추가한다.
Gson gson = new GsonBuilder() .registerTypeAdapter(new TypeToken() { }.getType(), (JsonDeserializer) (element, typeOfT, context) -> { if (element.isJsonPrimitive()) { return new Table(Collections.emptyList()); } else { JsonElement jsonElement = ((JsonObject) element).get("T_DATA"); if (jsonElement.isJsonObject()) { CompanyInfo deserialize = context.deserialize(jsonElement, CompanyInfo.class); re..
Map에 Key가 abc01 이고 Object 필드의 필드명이 abc_01 일 때 서로 매핑 가능하도록 하려면 매핑전략을 정의해야한다. Gson gson = new GsonBuilder() .setFieldNamingStrategy(f -> concatUnderscoredIndex(f.getName())) .create(); String concatUnderscoredIndex(String str) { if (str == null) return null; if (!str.contains("_")) return str; int i = str.lastIndexOf("_"); if (i == 0) return str; String prefix = str.substring(0, i); String suffix ..
netstat -tnlp | grep [찾을 포트 번호]kill -9 [프로세스 번호]
SELECT * FROM ( SELECT sid || ',' ||serial# "Sid,Serial" ,username "Username" ,status "Status" ,ipaddr "IPaddr" ,to_char(logon_time,'yy/mm/dd hh24:mi:ss') "Logon_Time" ,prog_name "Program" --,pga_used_mem/1024 "PGA(KB)" ,wlock_wait "Wlock_Wait" --,NVL(sql_id, prev_sql_id) "SQL_ID" ,NVL(sql_id, prev_sql_id) || '/' || NVL2(sql_id, sql_child_number, prev_child_number) "SQL_ID" --,client_pid "Client..
데이터베이스 네비게이터에서 데이터 소스를 선택 후 제네럴 선택 Customize 버튼 클릭 다른건 다 필요없고 스키마와 테이블만 표시하도록 체크 아래 Schemas / Users 클릭 유저 추가 표시 예외 조건 추가 여기서 이걸 추가 안하면 시스템 오브젝트 언더바로 시작하는 것들 등등 다 표시된다. 결과 매우 깔끔쓰
이미지 다운 host>docker run -i -t -p 8629:8629 --name tdb_ubuntu --platform linux/amd64 --hostname [호스트이름] ubuntu /bin/bash --platform linux/amd64 옵션은 arm image가 아닌 amd64 이미지를 사용하도록 한다. 호스트 이름은 라이선스에서 지정한 호스트이름과 같아야 한다. 터미널에서 hostname 쳤을 때 보이는 이름 우분투 업데이트 container>apt update && apt upgrade && apt dist-upgrade container>apt install sudo vim container>apt install libaio1 libncurses5 우분투 환경설정 환경설정 파일 열..
windows 11 version 22h2 로 업데이트 한 뒤 tibero를 실행하려고 tbboot 명령했더니 아무런 반응을 하지 않는다. tbdown 명령을 내려도 마찬가지. 윈도우 서비스 목록에 티베로가 없음을 확인하고 서비스 등록을 다시 했다. tbinstall %TB_HOME% %TB_SID% 해결됨.
특정 경로에 있는 모든 jar 파일 implementation fileTree(dir: 'libs', includes: ['*.jar']) 파일 지정 implementation files('libs/bla.jar')
select * from table명 으로 조회해서 그리드에서 직접 데이터 변경하고 싶은데 Column is read-only: No corresponding table column. 뜨면서 안되고 잠겼다고 뜰 때 조회할 때 스키마를 붙여서 조회해볼 것. select * from 스키마명.테이블명
SMTP 서버 설정정보로 세션을 흭득하고 MimeMessage에 세션을 가지고 메시지를 만들고 Transport 로 메시지를 전송한다. 세션을 만들때 default세션으로 가져오면 다른 계정에 대한 정보를 인지하지 않고 기본세션정보만 가져오기 때문에 유의해야한다. import org.springframework.util.StringUtils; import javax.mail.*; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Propertie..
ctrl+f 를 눌러서 찾기/바꾸기 창을 연 뒤에 정규식 옵션을 체크하고 찾기에 #\{(\w+)\}바꾸기에 :$1를 넣는다. 그 반대는 :(\w+)#{$1}이다.
스프링부트 등 jar 로 말려있는 자원 내부에서 특정 리소스를 참조할 때 로컬에서 테스트할 때는 잘되나 서버에서 실행하면 오류가 발생할 수 있다. 리소스에서 읽을 때 File을 받아오지말고 스트림으로 받아 와서 처리. 왜 그런지는 확인 필요. Spring Boot에서 src/main/resource 파일 접근 방법 및 주의사항. — wedul
메인 모듈에 mapper 가 있는데 테스트 모듈에서 매퍼 파일을 못 읽어서 Mapped Statements collection does not contain value for 와 같은 예외가 발생할 수 있다. 대부분의 경우 id를 잘 못 넣은 케이스지만 매퍼 파일 자체를 해당 모듈에서만 읽어서 발생하는 문제일 수 있다. String MYBATIS_MAPPER = "classpath*:/mappers/**/*.xml"; 매퍼 경로를 위와같이 변경하고 시도해보자.
프로젝트에서 여러가지 DataAccess 기술을 쓰고 있는데 한 트랜잭션에서 다양한 기술을 사용할 때는 유의 할 점이 있다. JPA에서 데이터를 저장하고 난 뒤 flush를 해야 다른 기술에서 그 데이터를 확인 할 수 있다. mybatis도 유사한 기능이 있는데 캐시를 가지고 있어서 flush를 해줘야한다. 이 캐시 자체의 범위를 조정하거나 쓰는 옵션이 있는데 링크를 참조. [오픈소스] MyBatis 내장 cache에 대해서 (tistory.com)
MappedStatement mappedStatement = sqlSession.getConfiguration().getMappedStatement(s); List resultMaps = mappedStatement.getResultMaps(); ResultMap resultMap = resultMaps.get(0); Class type = resultMap.getType();
EntityManagerFactory는 DataSource와 연관되어 있다. 스프링 환경에서 사용하는 경우 EntityManagerFactory는 빈으로 등록해서 사용하는게 효율적이라 등록 후 사용중이라면 ApplicationContext에서 Factory를 가져올 수 있다. @Transactional 로 트랜잭션 관리를 한다면 @PersistentContext 애노테이션으로 쉽게 현재 스레드의 EntityManager를 가져올 수 있다. @PersistentContext EntityMager em; 그러나 트랜젝션을 직접 관리한다면 아래 방법으로 가져올 수 있다. EntityManager em = EntityManagerFactoryUtils.getTransactionalEntityManager(emf);
git config --global pull.ff only 리모트에 자신 커밋 보다 상위에 다른 뭔가가 있으면 merge 할 때 오류가 뜬다.