* 개요스프링 프레임워크 이용시 @Service나 @Autowired 사용하여 종전에 서비스 객체 선언하고 연결하는 동작을 XML로 정의하던 것을 대체한다. 프레임워크, API 만들어 사용하려 하다보면 어노테이션을 직접 정의해서 사용할 필요성을 느낌. * 기초 / 사용자 정의 어노테이션http://hamait.tistory.com/314 1. 다음과 같이 클래스를 선언만 해주면public @interface MyAnno {String value() default "default";String name();} 2. 다음과 같이 응용 가능@MyAnno(name="abc")public class MyAnnoUser { } - 어노테이션 선언시 사용할 수 있는 메타 어노테이션 @Retentation 어노테이션 ..
* 분명 내가 초보 수준의 개발자는 아니지만 '중급 개발자' 또는 하수가 아닌 '개발 중수' 라고 말하고 다닐만 한지는 예전부터 의문이었음.그래서 정리해봄. * 경력 년수에 따른 구분 내 체감은 SI 업계에서 중급은 만 5년을 기준으로 하지만 회사에 따라 6~7년을 중급으로 보기도 하고 기준은 제각각 https://okky.kr/article/205940(2012) - 7~10년을 중급으로 한다는 말도 있다삼X 기준 7년차(만 6년) 부터 중급이라고 한다. (학사 기준) - 종전에는 KOSA 에서 SW기술자 등급을 관리했지만 폐지되고지금은 경력 년수만 관리하고 있다. KOSA 기준의 중급은 정보처리 기사 취득후 3년 경력이었다. (지금은 무의미) * '중급' 의 실력 http://sijinjoseph.c..
* 개요 의 객관적인 기준이 있는건 아니지만 내가 생각할 때 초보를 넘어서려면 알아야 하는 것들 정리해 봄. * 참고- '자바 중급' 이란 제목을 단 강의 목록(강의목록)https://www.welcomekakao.com/learn/courses/9 http://itlove.tistory.com/category/%EC%9E%90%EB%B0%94/%EC%A4%91%EA%B8%89%28%EB%AC%B8%EB%B2%95%29?page=1 * 정규표현식문자열의 특정 패턴을 인식하고 치환할 수 있는 방법.정규표현식의 문법을 완벽하지 알진 못 해도문자열 처리시 검색해서 쓸 수 있을 정도는 되야 한다. http://dogcowking.tistory.com/85 * 리플렉션런타임에 클래스 멤버에 대한 정보를 가져올 수..
* 개요SQLQuery q = ...q.setParameter(enum값) 코드가 있었음 결과가 안 나오는 문제. * 원인- mysql 에 보내진 쿼리를 확인해 보니 다음과 같았음( 참고 : mysql 쿼리 보는 법 http://dogcowking.tistory.com/246) 2018-10-24T10:09:14.815899Z 60 Query/* dynamic native SQL query */ select .... 중략 .....where mType = x'ACED00057E72002B636F6D2E6369646F672E636F6E6372657465696E666F2E6D6F64656C2E436953656374696F6E245479706500000000000000001200007872000E6A61766..
* 개요sql 로그 / sql log / query log MySQL 쿼리 로그 보는 법 (SQL 로그)하이버네이트가 실제 보낸 SQL 확인시 유용 http://blog.plura.io/?p=4493 * 환경 MySQL 8Windows 10 * 해결 다음 쿼리 실행set global general_log=on; 해당 db 위치로 가면 컴퓨터이름.log 형태로 생성 ex:D:\ProgramData\MySQL\MySQL Server 8.0\Data\DESKTOP-061LV60.log - 설정 변경 시점 바로 적용됨. 재시작 필요없음.- show variables like '%general%'; 쿼리로 파일명 확인 가능
* 개요 Class Lion { ...@Embeddablepublic static class Animal implements Serializable{Long feet; ...} @Embeddedpublic Animal animal = new Animal() ; } 위 처럼 내부 클래스 정의하여 사용 가능한가? * 결론 : 가능 https://stackoverflow.com/questions/27745374/inner-class-as-hibernate-component - 불가능하단 의견 있었으나, 실험시 동작함 - 내부클래스에 @Embedable클래스 속성 선언시 @Embedded 선언시 가능 * 참고 : Embedded 사용법https://www.concretepage.com/hibernate/exam..
* 개요sudo rm * -rf 실행시 다음 메시지 보이며 동작 안함 /bin/rm: cannot execute [Argument list too long] * 해결https://stackoverflow.com/questions/11289551/argument-list-too-long-error-for-rm-cp-mv-commands find . -name "*" -print0 | xargs -0 rm
* 개요하이버네이트 이용,DB 접속시 다음 URL 사용 jdbc.databaseurl=jdbc:mysql://localhost:3306/130514cidogir?useUnicode=true&characterEncoding=UTF-8&autoReconnection=true&useSSL=false useUnicode, characterEncoding, autoReconnection, useSSL 등을 선언 하고 있는데실제로 동작하지 않는 문제 * 환경eclipseSpring 5hibernate 3 * 원인프로퍼티 간의 구분자를 & 가 아닌 & 로 쓴게 문제였음. XML 에서 url 쓸 경우 & 를 그대로 쓸 수 없고 & 를 사용하는 것이 맞음. 하지만 나는 jdbc.properties 파일을 사용하고 .....
https://stackoverflow.com/questions/34189756/warning-about-ssl-connection-when-connecting-to-mysql-database autoReconnect 라고 쓰인 곳도 있고autoReconnection 이라고 쓰인곳도 있음. - autoReconnect 가 작동했음.autoReconnection 안됨 * 환경 mysql 8 * 둘 다 안됐던 원인- 두가지 모두 동작 안 할 때도 있었음- 이유는 하이버네이트 설정 실수http://dogcowking.tistory.com/242
* 개요- 테이블 XXX 가 데이터 임시 보관 중이었음. 이 테이블이 꽉차 삭제해야 했는데 DROP TABLE 대신 XXX.ibd 파일 직접 삭제함. - 그 이후 테이블 사용하려고 하면 Error Code: 3510. Tablespace XXX doesn't exist. - 새로 만들려고 하면 Error Code: 1813. Tablespace XXX exists. * 해결REPAIR TABLE 이나 DROP TABLESPACE 도 먹히지 않았으며,방법은 무조건 ibd 파일 되살리는것백업해놓은거라도 갔다 놓으면 인식이 되고그 이후 DROP TABLE 통해 ibd 파일 삭제하여 하드디스크 용량 확보 가능
SQL Error: 144, SQLState: HY000Table XXXX is marked as crashed and last (automatic?) repair failed * 해결https://stackoverflow.com/questions/8843776/mysql-table-is-marked-as-crashed-and-last-automatic-repair-failed repair table 테이블명 게시물 목록 테이블 30만 ROW 처리에 4분 정도 소요됨
* 개요fts_0000000000000495_being_deleted.ibd fts_ ... _being_deleted.ibd 파일 생겼는데, 이거 지워도 되는건가? *https://stackoverflow.com/questions/41941925/any-way-to-reduce-fts-index-1-ibd-file-sizes-in-mysql-database-folderhttp://ronaldbradford.com/blog/what-is-fts_being_deleted-ibd-2014-01-29/ -innoDB FULLTEXT index 파일이다- FULLTEXT 인덱스 DROP 후 다시 만들거나- OPTIMIZE TABLE 가능? => 반) 효과 있는지 모르겠다 * 어쨌든.. 지워선 안된다
* 개요- binlog 파일뭐야?- binlog 파일 삭제해도 되나?- 다음을 요약함mysqlbinlog 사용법(1) (2014)http://mysqldba.tistory.com/85 * Binary Log - 컨텐츠 변경한 기록인 "event" 로 이뤄짐- mysqlbinlog 유틸 이용하여 텍스트로 변경 가능- slave 서버의 Relay Log 에도 적용 가능 mysqlbinlog binlog.000024 실행 일부# at 126618#180814 11:25:07 server id 1 end_log_pos 126693 CRC32 0x01d826aa Anonymous_GTID last_committed=264 sequence_number=265 rbr_only=yes original_committed..
* 개요alterAt 명령 실행위한 select 중 동일한 오류 계속 발생함. * 로그2018-08-22T05:23:24.996223Z 14 [ERROR] [MY-012611] [InnoDB] InnoDB: Operating system error number 2 in a file operation.2018-08-22T05:23:24.996991Z 14 [ERROR] [MY-012216] [InnoDB] InnoDB: Cannot open datafile for read-only: '.\130514cidogir\fts_0000000000000456_deleted.ibd' OS error: 712018-08-22T05:23:24.999323Z 14 [ERROR] [MY-012155] [InnoDB] Inn..
* 개요- 스프링이 갑자기 종료될 때 버퍼에 보관하고 있던 데이터를 DB 로 영속화 하는 코드를 짜고 싶어- 스프링 종료 전 특정 메서드 호출하는 방법 * @PreDestroyhttps://www.mkyong.com/spring/spring-postconstruct-and-predestroy-example/ * 기타 - destroy() - 자바 소별자 finalize() 는 안됨 * 참고스프링 라이프사이클https://blog.outsider.ne.kr/766ㄴㄴㄴㄴㄴㄴㄴㄴㄴㄴㄴㄴㄴㄴㄴ
* 개요 ex) 나는 바보입니다나는 개입니다나는 새입니다나는 코끼리입니다 나는 ???입니다 에서 ??? 를 가져오고 싶다 * 그룹 캡쳐 ()나는 (.*)입니다 표현하면 괄호친 부분을 캡쳐하여 가져올 수 있다. String[] as = {"나는 바보입니다", "나는 개입니다","나는 새입니다","나는 코끼리입니다","너는 개구리입니다",};for(String s : as ) { System.out.println(s); Pattern p = Pattern.compile("나는 (.*)입니다"); Matcher m = p.matcher(s); if(m.matches() ) { System.out.println("group 0 : " + m.group(0)); System.out.println("group 1 ..
* 개요정규표현식으로 A & B 표현하는 방법 ex)나는 바보입니다나는 천재입니다걔는 천재입니다 문장 있을때 나는&바보 를 검색 하고 싶다면... * 방법 1 - 단순하게 생각하면... 나.*바보|바보.*나 하면 될 것 같지만.. 이 방법은 단어 3개 이상 되면 모든 경우의 수 만들어주기가 복잡함 * 그래서 Lookahead 이용하여 표현- Lookahead(전방탐색) 패턴참고 : http://minsone.github.io/regex/regexp-lookaround - 나&바보&입니다 3가지 동시에 찾기 위해(?=.*나)(?=.*바보)(?=.*입니다) 표현하면 됨 - 나.*바보 는 '나' 를 찾고 나서 그 뒤이어 '.*바보' 를 찾음 전방탐색은 '.*나'를 찾고 이어서 '바보'를 찾는게 아니라,별도로 ..
* 개요- 웹 프로젝트 접속시localhost:8080/프로젝트 이름 또는localhost:8080/app 또는localhost:8080/패키지의 마지막 이름 (com.abc.def 면 def) 으로 이름 생성됨. - 이 이름 바꾸는 방법은? Reloading Context with name [/app] is completed * 해결프로젝트 선택 => Properties => Web proejct settingContext root 바꿀것. https://www.mkyong.com/eclipse/eclipse-how-to-change-web-project-context-root/ * 바꿨는데도 적용 안되는 경우Server 에서 해당 프로젝트 삭제 후 다시 추가clean 하여 재 적용 https://bu..
* 개요 ANTLR 사용하는 프로그램을 WAR 배포하자파싱 결과물이 물음표 ???나 깨진 문자로 바뀌어 있는 상황. * 원인 Lexer 에 집어넣을때 InputStream 을 써서 사용 InputStream is = new ByteArrayInputStream(atds.scr.getBytes())lex = new AtDefine2Lexer(CharStreams.fromStream(is, StandardCharsets.UTF_8) 이때 들어간 InputStream 이 잘못된 것 . * 해결 getBytes() 대신getBytes("UTF-8") 로 변경 * 참고이 상황은 개발 모드에서는 정상적으로 동작했으나WAR 로 export 하여 톰캣에 올렸을때만 나타난 증상 WAR 로 묶는 과정에서 사용하는 클래스의..