일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- react
- IntelliJ
- Windows
- Spring
- LOG4J
- nginx
- JavaScript
- NCP
- MySQL
- Java
- springboot
- Linux
- Git
- dbeaver
- Kubernetes
- maven
- nodejs
- docker
- sapfiorielements
- gradle
- mybatis
- log4j2
- gson
- useEffect
- tibero
- SAP
- VSCode
- BPMN
- database
- JPA
- Today
- Total
목록분류 전체보기 (263)
두 손끝의 창조자
의존성 넣기 org.apache.maven.plugins maven-source-plugin 3.2.0 maven-plugin 플러그인 넣기 org.apache.maven.plugins maven-source-plugin attach-sources jar 실행 mvn package maven.apache.org/plugin-developers/cookbook/attach-source-javadoc-artifacts.html Maven – Cookbook - How to attach source and javadoc artifacts maven.apache.org
1. 각 브라우저 주소창에 하기와 같이 입력 - 엣지 : edge://flags/#same-site-by-default-cookies - 크롬 : chrome://flags/#same-site-by-default-cookies 2. SameSite by default cookies 를 Default -> Disabled 로 변경
프로젝트 소스 파일이 workspace 안에 있다면 이클립스 프로젝트가 아니어도 쉽게 할 수 있다. 만약, 외부에 있는 프로젝트가 이클립스 프로젝트가 아닌데 Import를 하고 싶을 때는? 일단 workspace 안에서 외부에 있는 프로젝트 이름과 똑같은 이름으로 빈 프로젝트를 만든다. 빈 프로젝트를 만들면 .settings 디렉토리, .classpath, .project 파일이 생기는데 .project 파일만 외부에 있는 프로젝트에 복사해서 넣는다. workspace 안에 있는 프로젝트는 지운다. 그다음 import -> General/Existing Projects into Workspace 에서 실제로 있는 프로젝트를 넣고 options에 copy projects into workspace가 체크 ..
도큐먼트에 링크 넣기 {@link $code$}
전반적인 처리 절차 central.sonatype.org/pages/ossrh-guide.html#deployment OSSRH Guide OSSRH Guide Introduction Sonatype OSSRH (OSS Repository Hosting) uses Sonatype Nexus Repository Manager to provide repository hosting service for open source project binaries - be sure to review the full terms of service. OSSRH uses the Maven repository fo central.sonatype.org Gradle로 배포 방법 상세 central.sonatype.org/page..
java.lang.reflect.Type Type은 Java 프로그래밍 언어의 모든 Type에 대한 공통 수퍼 인터페이스입니다. 여기에는 Raw types, Parameterized types, Array types, Type variables, Primitive types이 포함됩니다. GenericArrayType ParameterizedType WildcardType TypeVariable Class
CheckStyle로 자바 코드의 스타일을 강제할 수 있다. 하지만 test 코드는 이 강제에서 좀 벗어나게 할 수 있는데 그걸 구현할 수 있는 모듈이 SuppressionFilter이다. checkStyle.xml 설정 파일에서 Checker 모듈 바로 밑에 모듈을 추가한다. config_loc 은 기본값으로 프로젝트 루트 기준으로 config/checkstyle 이 된다. 상대 경로로 지정이 안되니 이런 변수값을 활용해서 지정하는 수밖에 없다. checkStyle-suppressions.xml 파일에 무시할 파일의 패턴과 어떤 Check를 그냥 통과시킬지 정의하면 된다. 위 xml은 src/text 밑에 있는 모든 java 파일들에 대해서 JavadocPackage, FileLength, Missin..
wildfly는 VFS 를 사용한다. getClass().getResource() 를 하면 url을 가져오지만 실제로 존재하는 경로가 아니기 때문에 그 경로로 파일을 가져온다던지 하는 것은 안된다. getClass().getResourceAsStream() 메소드로 스트림을 바로 가져오던지 해야한다. 이렇기 때문에 클래스 패스 리소스 안에 어떤 파일들이 있는지 파일 목록을 가져오는데 문제가 있다. jboss에서 제공하는 라이브러리를 활용해서 처리해야한다.

게이트웨이는 시퀀스 흐름이 프로세스 내에서 모이고 흩어지는 방식을 제어하는데 사용. 다른 액티비티와 마찬가지로 토큰을 소비하고 토큰 추가 만들 수 있다. 모든 비즈니스 프로세스 흐름을 정의하는데 결정, 분기, 모이기, 복사, 연결 등에 사용할 수 있음. 게이트웨이는 발산 및 수렴을 제어하는데 이 말은 여러 인풋, 여러 아웃풋을 가질 수 있다는 의미임. Exclusive Gateway 한 곳만 선택 Inclusive Gateway 모든 흐름이 평가되고 참인 곳으로 모두 토큰을 보냄 병렬로 흩어진 흐름을 모으는데도 사용. 토큰이 게이트웨이에 도착하면 다른 흐름에서 오는 토큰을 기다릴 수 있음 Parallel Gateway 흐름에 대한 평가를 하지 않고 모든 흐름으로 토큰을 보냄 Complex Gateway ..
오브젝트는 instanceof 로 간단하게 여부를 알 수 있다. 클래스끼리 관계를 알고 싶을 때는 isAssignableFrom 메소드를 이용하자. 예를 들어 A 인터페이스를 구현한 AA 클래스가 있다면 AA 클래스가 A 인터페이스의 서브타입인지 확인 하고자 할 때 A.class.isAssignableFrom(AA.class) 하면 됨
MSC000001: Failed to start service jboss.module.service. Spring 4 버전으로 다운그레이드 필요
Spring MVC를 사용하고 보안을 위해 스프링 시큐리트를 도입했다면 볼 수 있는 예외 스프링 시큐리티의 HttpSecurity 설정 중 matcher로 MvcRequestMatcher를 사용하면 발생한다. http.authorizeRequests( authorize -> authorize .mvcMatchers("/api/").permitAll() .mvcMatchers("/hello").permitAll() .mvcMatchers("/admin").authenticated() ) No bean named 'A Bean named mvcHandlerMappingIntrospector of type org.springframework.web.servlet.handler.HandlerMappingIntr..
A 테스트 클래스에서는 @ContextConfiguration(classes = {AppConfig.class}) 형태로 컨택스트를 가져오고 B 테스트 클래스에서는 @ContextConfiguration(/applicationContext.xml 형태로 컨택스트를 가져오도록 설정했을 때, A와 B클래스 테스트 실행 순서에 따라서 AppConfig 클래스 설정정보를 먼저 로드하거나 applicationContext.xml 의 설정정보를 로드하게 된다. 문제는 두 설정 정보가 똑같다면 상관없지만 다르다면 A또는 B테스트에서 설정이 정확하게 세팅이 안된다. 왜냐하면 컨텍스트 두개를 동시에 불러서 테스트 컨텍스트에 올리지 않기 때문에다. 먼저 올라온 놈이 먼저 세팅되고 하나는 무시된다. 이 문제를 해결하기 위해..
- push 전 git commit --amend git rebase -i HEAD~2 해서 reword - push 후 * base repository option git config receive.denyNonFastForwards false * push 취소 git push -f origin HEAD^:dev -- 누군가 받았을 때 로컬에서 커밋 수정 후 git push -f 이거 했을 때 ! [remote rejected] dev -> dev (non-fast-forward) 에러나면 강제 push 권한 있는지 확인 받은 사람한테 fetch 후 reset --hard 로 변경된 커밋으로 이동하라고 알려야 함 -- 안 받았을 때 로컬에서 커밋 수정 후 git push -f
커맨드 라인에서 "code" 로 vscode가 실행되어야 함 환경 변수 파일 열기 ~/.gitconfig 환경 변수 파일이 없으면 한번도 설정정보를 넣은적 없다는 의미임. 이메일을 등록하든, 이름을 등록하든 하나는 설정한 뒤에 하던지, 파일을 직접 만들면 됨. 아래 설정은 lt 명령어로 log를 그래프로 표시되게 하는 설정. git config --global alias.lt "log --oneline --decorate --graph --all"이렇게 한뒤 git log lt라고 치면 로그가 그래프로 나옴. log lt -10라고 치면 최근 10개만 나옴 환경 설정하기 커밋 메시지 등에 사용할 에디터를 vscode로 설정함 비교 기능도 vscode에서 실행되도록 설정함 [core] editor = co..
git reflog --date=local [branch]
대용량 파일을 읽어 라인별 처리를 하는 것을 시도하였다. DirectByteBuffer를 사용한 이유는 대용량 데이터를 시스템에서 읽어서 jvm에 올리는 비용을 줄이고자 함이었다. 내가 필요한 작업은 파일을 일어서 행별로 읽어들이는 거였는데 DirectByteBuffer는 행단위 Reader를 제공하지 않는다. 그래서 별도로 구현을 했는데 구현 과정에 byte배열에 복사하고 하는 과정이 제법 있어서그런지 이렇다할 성능개선은 보이지 았았고 오히려 느려졌다. DirectByteBuffer는 데이터를 읽어 별도로 다른 buffer에 넣지 않고 즉시처리, 예를 들어서 다른 socket으로 보낸다던지 하는 경우 성능개선에 도움이 될 것같다. import sun.nio.ch.DirectBuffer; import j..
github에서 PR을 올렸는데 실패하거나 수정 요청이들어오면 어떻게 하나? 일단 PR에 올라가는 커밋은 단일 커밋으로 해야 프로젝트 이력관리에 유리하게 때문에 그렇게 해야한다. 수정을 하면 커밋이 하나 더 발생할 텐데 그럼 어떻게 하냐? 로컬에서 변경사항을 만들어서 커밋 한 뒤에 한 커밋으로 다시 만든다. 한 커밋으로 만드는 것은 rebase --interactive로 해도 되고 내 같은 경우는 그냥 git commit --amend 로 전 커밋과 바로 합쳐서 한 커밋으로 만들었다. push -f 로 강제로 올리면 github에 올라간 pr도 같이 자동으로 새로운 커밋id로 변경되면서 다시 프로세스가 진행된다. 긋긋 가장 좋은건 올리기전에 체크체크체크
파일을 찾을 수 없을 때 주로 이 예외가 발생하지만, 파일이 너무 많이 열려있어서 OS에서 파일 여러는 것을 막아버릴수도 있다. 이때도 FileNotFoundException 이 발생한다. 메시지는 "Too many open files". 현재 OS에 설정되어 있는 최대 파일 오픈가능 개수를 확인한다. ulimit –a 명령어로 open files 설정값을 확인한 뒤 현재 특정 프로세스에 의해 열린 파일들도 확인한다. lsof -i :[port] 로 특정 포트를 사용하고 있는 프로세스를 확인한다. lsof -p [PID] | wc –l 로 현재 오픈되어 있는 파일들의 개수를 확인하고 적절한 값으로 변경한다. ulimit -n [변경개수] 명령어로 변경한다.
NioEndpoint->AbstractProtocol#process->Http11Processor#service->CoyoteAdapter#service 프로토콜이(HTTP/1.1 이면 Http11NioProtocol) 소켓에서 요청 정보를 받아서 처리할 프로세서를 가져온다. 프로세서는 AbstractProcessorLight를 구현한 구현체가 반환될텐데 HTTP/1.1이면 Http11Processor를 선택 할 것이다. 프로토콜은 프로세서의 service 메소드를 호출하면서 요청처리를 넘긴다. 프로세서에서는 처음으로 Request, Response 객체가 등장하고 CoyoteAdapter의 Service를 호출하면서 컨테이너에 Resquest와 Response객체를 넘긴다.