본문 바로가기

전체 글320

[SpringBoot] Apache MINA 를 이용한 Sftp 접속 및 파일 업로드 예제 입니다. 1. maven repository 사이트에서 직접 3개의 jar 파일을 다운로드 하고 , implementation 진행 하였습니다. sshd-common-2.15.0.jarsshd-core-2.15.0.jarsshd-sftp-2.15.0.jar //mina sshd implementation name : 'sshd-core-2.15.0' //mina sshf-sftp implementation name : 'sshd-sftp-2.15.0' //min sshd-common implementation name : 'sshd-common-2.15.0' 2. Sftp 에 접속 하여 파일 업로드 하는 예제를 작성 해 보았습니다.import java.nio.file.Files;import java.nio.fi.. 2025. 5. 11.
[Ubuntu 24.04] openssh-server offline 설치 테스트 1. 인터넷이 연결되어 있는 동일한 Ubuntu 환경 에서 deb 파일을 받아서 설치 시도 하였습니다.$ sudo apt-get update$ sudo apt-get install --download-only openssh-server 2. 다운로드 된 deb 파일들은 해당 디렉터리에서 확인 할 수 있었습니다 .$ cd /var/cache/apt/archives/openssh-client_1%3a9.6p1-3ubuntu13.11_amd64.debopenssh-server_1%3a9.6p1-3ubuntu13.11_amd64.debopenssh-sftp-server_1%3a9.6p1-3ubuntu13.11_amd64.deb3. 오프라인 환경에서 dpkg -i *.deb로 설치 시도 시에 아래와 같은 에러가.. 2025. 4. 30.
[Ubuntu 24.04] Docker Offline으로 설치 테스트 1. https://download.docker.com/linux/ubuntu/dists/noble/pool/stable/amd64/ 에서 최신 deb 파일들을 다운로드 하였습니다.dists / { version_codename} / pool / stable / {아키텍쳐 } 24.04의 경우 noble 이었습니다. 2. 오프라인 환경의 ubuntu에 다운로드 한 .deb 파일을 복사한 후 설치 하였습니다.$ sudo dpkg -i *.deb $ sudo docker ps -a 명령어가 실행 되는 것 확인 하였습니다. 사용자 계정에도 docker 명령어 실행 시에 sudo 없이 실행 하기 위하여 $ sudo usermod -aG docker {사용자계정} 을 실행 하였습니다. $ sudo syst.. 2025. 4. 23.
[nestjs] luxon 을 이용하여 심플하게 날짜 및 시간 포멧팅 처리 예제 string type의 날짜 시간 형태의 문자열을 DateTime으로 변환 후 , 원하는 포멧으로 변경 하여 리턴 하는 예제 와 ,,, 현재 일시에서 날짜 연산을 진행 하여 원하는 포멧으로 리턴 하는 예제 작성 해 보았습니다.import { Logger } from "@nestjs/common";import { DateTime } from "luxon";export class CnvDateStrHelper { private static readonly logger = new Logger(CnvDateStrHelper.name); static convListDateTimeStr(sourceStr : string) : string { try { return DateTime.fromFor.. 2025. 4. 4.
[typeorm] createQueryBuilder 를 이용한 MYSQL FULLTEXT SEARCH 검색 테스트 예제 intest 라는 Entity는 아래와 같이 정의 되어 있습니다 . @Entity({ name : 'INTEST'}) export class InTest { @PrimaryColumn({name : "intestgroupid" , nullable : false }) intestgroupid : string; @ManyToOne(() => TestDataDetail , (testdatadetail) => testdatadetail.intestgroupid) @JoinColumn({ name : 'intestgroupid' , referencedColumnName : 'intestgroupid'}) testdatadetail : TestDataDetai.. 2025. 4. 4.
[JAVA] Simple 하게 method name 구하기 C# 의 nameof 메서드 처럼 심플하지는 않습니다 ;ㅁ; @Servicepublic class TestService {private final Logger logger = LogManager.getLogger(TestService.class); private String getMethodName() { return StackWalker.getInstance().walk(a -> a.skip(1).findFirst().get().getMethodName()); } private void TestMethod() throws Exception { logger.info("%s method Occurred".formatted(getMethodName())); }.. 2025. 3. 29.
[JAVA] 문자열 포맷팅 예제 "".formatted 가  String.format 보다 더 간편한 것 같습니다.. (1). 기존 String.format 이용 String.format("%s/%s.%s", FilenameUtils.getPathNoEndSeparator(x.getString("filepath")) , x.getString("filename") , x.getString("extension")); (2). "".formatted 이용 "%s/%s.%s".formatted( FilenameUtils.getPathNoEndSeparator(x.getString("filepath")) , x.getString("filename") .. 2025. 3. 29.
[typeorm] countBy 사용시에 동일한 컬럼 두번 정의 불가 TypeORM의 countBy()는 where 조건을 객체 형태로 받기 때문에, 같은 컬럼에 여러 개의 조건을 적용하려면 배열을 사용해야 한다고 하네요 ,,배열 안에 동일한 컬럼명을 두번 명시 할 수가 없었습니다MoreThanOrEqual ,LessThanOrEqual  대신 Between 으로 처리 해 보았습니다. ex) async getUnReadCount(userToken : TokenPayload) : Promise { this.logger.log(`${this.getUnReadCount.name} Occurred`); const startDt = `${CnvDateStrHelper.getDaySpanStr(-7)}000000`; const endDt = `${CnvDateStr.. 2025. 3. 20.
[JAVA] File Header 확인 하여 , TIFF 또는 PDF 파일 여부 체크 예제 private boolean debugOutputMode = false; /** * * @param fileHeader * @return True 일경우 PDF 또는 TIFF 파일 */ public boolean CheckFileHeaderTiffOrPdf(byte[] fileHeader) { try { String tiffHeaderChk = new String(Arrays.copyOfRange(fileHeader, 0, 2)); if(debugOutputMode) System.out.println(String.format("tiffHeaderChk=%s",tiffHeaderChk)); //Little Endian 또는 BigEndian 일 경우 i.. 2025. 3. 16.