일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- VSCode
- kubectl
- NCP
- nginx
- maven
- Spring
- IntelliJ
- Kubernetes
- react
- docker
- JavaScript
- Windows
- useEffect
- springboot
- JPA
- gson
- Git
- mybatis
- dbeaver
- MySQL
- LOG4J
- gradle
- intellijIDEA
- BPMN
- database
- wildfly
- Java
- tibero
- log4j2
- nodejs
- Today
- Total
목록분류 전체보기 (249)
두 손끝의 창조자
타입이 없으면 다음과 같은 문제가 발생할 수 있음 잘못된 파라미터 함수에 전달 원하지 않은 타입 변환 코드 계층 구조 이해 불가 AddUserToGroup(string, string) 위 메소드는 파라미터가 2개 있다. 하나는 유저일 것이고 하나는 그룹일 것인데 어느 것이 유저이고 어느 것이 그룹인가? 메소드 시그니처 가지고는 알수가 없다. 만약, 타입 파라미터를 아래처럼 정의했다면 AddUserToGroup(User,Group) 순서를 생각할 필요가 없다. AddUserToGroup(new User('u1'), new Group('g1')) 쓸때는 이런 식이 아닐까?
클래스의 속성이 모두 final 일 때 자동으로 컨스트럭터의 파라미터로 만들어 줘서 편리하게 쓸 수 있다. 하지만 속성 중에 String 등 같은 타입이 여러개 잇을 때 기대한 순서가 달라 실제 사용한 클라이언트에서 사용했을 때 순서와 필드를 추가했을 때 순서가 다를 수 있다. 매우 심각한 문제를 발생시키므로 속성 타입이 모두 다를 때나 가끔 사용하고 아니면 사용하지 말자.
gson을 아무 옵션 없이 쓰면 소수점이 없는 숫자도 모두 float 타입으로 변환한다. Number 타입 변환 전략을 수정하면 Long과 Double 중 하나로 변환하게 할 수 있다. gson = new GsonBuilder() .setObjectToNumberStrategy(ToNumberPolicy.LONG_OR_DOUBLE) .create();
ObjectMapper objectMapper = new ObjectMapper(); //noinspection deprecation objectMapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); 위 코드는 오브젝트를 컨버팅 할 때 타깃과 소스의 이름의 케이스를 무시하고 없는 경우도 오류내지 않고 가능한 것만 매핑하라는 옵션이다.
서버에 쉘 스크립트를 만들어 넣고 스크립트를 실행할 때 유의해야 할 점이 있다. 쉘 스크립트가 실행되는 위치가 쉘 스크립츠 위치와 상관없이 홈 디렉토리이다. 따라서 스크립트에 스크립트의 상대경로로 무언가 파일을 읽거나 쓰도록 했다면 서버에서 직접 실행했을 때는 잘 되지만 hidetake 같은 원격 쉘 실행도구로는 정확하게 실행되지 않는다. 경로에 유의하라
gradle 플러그인 hidetake 로 원격지에 있는 서버에 쉘 명령을 수행할 수 있다. ssh 로 최초 접속을 하면 알 수 업는 서버인데 계속 하겠냐고 물어보고 알았다고 하면 ~/.ssh/known_hosts 파일에 호스트 정보를 기록한다. 그 뒤는 안물어보게 되는데 hidetake로 ssh 명령 스크립트를 만들고 배포를 하고 사용하도록 했는데 해당 사용자는 해당 호스트 접속 이력이 없어 권한이 없다고 뜨거나 ssh 접속을 아얘 한적이 없다면 known_hosts 파일을 찾을 수 없다고 한다. 이럴때 간단하게 known_hosts 에 호스트 정보를 넣어주면 된다. ssh-keyscan -t rsa server.com >> ~/.ssh/known_hosts 윈도우즈에서는 git-scm에서 git을 설치..
SpringTest로 테스트 실행 전 Sql을 실행하려면 클래스나 메소드에 @Sql 애노테이션으로 미리 작성된 쿼리를 실행할 수 있다. 만약, 실행했는데 java.lang.IllegalStateException: Failed to execute SQL scripts for test context ---- 생략 at org.springframework.util.Assert.state(Assert.java:97) ~[spring-core-5.3.13.jar:5.3.13] at org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener.executeSqlScripts(SqlScriptsTestExecutionListener.java:254) ~..
구조 Car - Body < Part 구조가 있을 때, 즉 Car 는Body 와 1:1,Body 와 Part 는 1:n 관계가 있다. JPA에서는 모두 양방향 참조로 Car에서 Part 까지 접근 가능하고, 연관관계 주인은 Car -Body 에서는Body 가,Body < Part 에서는Part 가 가지고 있다. 엔티티 저장을 편리하게 하기위해서 모든 OneToXXX 는 cascade 모드를 ALL 로 하였다. 각 엔티티는 Audit 처리를 위해 Audit MappedSuperclass를 상속하고 이 클래스는 int 타입의 version 필드를 가지고 있다. 이 Audit 엔티티에 @EntityListeners 를 등록해서 Create, Update 시 버전을 올릴려고 AuditListener 을 구현하고..
포트 사용중인 프로세스 ID 찾기 netstat -ano | findstr :8080 프로세스 이름 확인 tasklist | findstr 10436프로세스 강제 종료 taskkill /pid 10436 /f
윈도우의 grep dir | findstr "검색어" 검색어에 공백을 주면 or 검색 /I 대소문자 구별 안함 /C:"문자열 그대로 검색" 파일 내 문자열 검색 findstr "찾는문자열" test.txt
커멘드 창 관리자 권한으로 실행 1. mysql service 등록 .\bin\mysqld.exe --install 2. db 초기화(root 패스워드 없이) .\bin\mysqld.exe --initialize-insecure 3. mysql 서비스 시작 net start mysql 4. db생성 등 초기화 sql(필요하면 사용) .\bin\mysql.exe -u root < .\init_db.sql 5. mysql 서비스 종료 net stop mysql 서비스 삭제시 sc delete mysql
다운로드 https://technet.tmaxsoft.com/ko/front/main/main.do 가입 후 로그인 다운로드 -> 데이터베이스 -> Tibero Tibero 6 다운로드 windows64(tibero6-bin-FS07_CS_2005-windows64-190396-opt-20210115174122-tested.zip) 265.02 MB 가장 밑에 Windows (x86) 64-bit 클릭 압축해제 다운로드한 파일 압축 해제 환경변수 설정 Tiebro용 환경변수 TB_HOME : (압축해제한경로)\tibero6 TB_SID : tibero PATH에 엔진 경로 추가 PATH : (압축해제한경로)\tibero6\bin;(압축해제한경로)\tibero6\client\bin Tibero Servic..
.gitignore 파일을 추가 **/$*내용 추가
mybatis-crud/UpdateInterceptor.java at master · lidatui/mybatis-crud · GitHub GitHub - lidatui/mybatis-crud Contribute to lidatui/mybatis-crud development by creating an account on GitHub. github.com Principle and Application of MyBatis Interceptor (ofstack.com) Principle and Application of MyBatis Interceptor Principle and Application of MyBatis Interceptor Directory 1. Intercept Object and Int..
로컬에 설치된 mySql 이라 ssl 이 필요 없는 경우 jdbc url에 useSSL=false 를 추가
denying non-fast-forward refs/heads/master (you should pull first) 원격지에 push 된 커밋을 되돌리고자 할 때 git push -f origin master 로컬 커밋을 reset 하고 push 하면 발생할 수 있는 오류이다. 원격지에 강제 push 할 권한이 없어서 발생한다. github에서는 강제 커밋할 수 있도록 옵션을 줄 수 있고 linux에 git 서버를 구축한 경우 서버에서 강제 커밋 받을 수 있는 옵션을 설정해야한다. bare 리포지토리에서 git config --global receive.denynonfastforwards false 로 옵션을 줄 수 있는데 false 로 설정이 안될 수 있다. 그럴때는 config 파일을 열어서 fa..
mac에서는 잘 동작하는데 윈도우에서는 동작이 안될 떄는 suppressions 파일을 지정하는 경로가 잘 못 됐을 수 있다. 리눅스 계열에서는 디렉토리 구분을 / 로 하지만 윈도우는 \ 로 하므로 둘다 되도록 정규식을 구성해야한다. 예를 들어 .*src[/\\]test[/\\].*\.java 같이 하면 테스트 소스만 걸러낼 수 있다.
>virtualenv [이름]하면 가상 환경이 만들어진다. 가상 환경을 활성화 하려면 >[이름]\Scripts\activate가상 환경을 비활성화 하려면 >[이름]\Scripts\deactivate
Maven으로 잘 불러오던 라이브러리가 어느 순간 Blocked mirror for repositories 에러를 뿜으면서 안됨. 이유는 3.8.1 부터 보안상의 이유로 HTTP 리포지토리를에 접근을 막았기 때문. 나같은 경우 같은 네트워크에 넥서스 리포지토리를 구축해놓고 라이브러리 공유차원에서 사용하고 있었는데 이 리포지토리가 HTTPS가 아니였기 때문에 오류났음. 리포지토리를 HTTPS 로 구동하게 하면 가장 좋겠지만 할 수 없는 경우 해결방법은 ~/.m2/settings.xml 에 미러 리포지토리를 추가하여 임시적으로 해결할 수 있음. 만약 maven 에 리포지토리가 mynexus http://111.11.11.111/nexus/content/groups/public true true 이었다면 ~/..