오늘은 Java/Spring 환경에서 사용하는 실무에서 SFTP/SSH 프로토콜을 사용하기 위해서 용하는 라이브러리 인 'Jsch' 사용법을 알아보려고 한다 위 포스팅을 목적은 내가 나중에 까먹었을 떄 위 포스팅을 보고 필요한 부분을 바로바로 복붙해 가기 위함이다.그러므로 내가 자주 썻던 메소드 및 사용예시에 대해서 만 설명해볼 예정이다.. 1. JSCH 란?http://www.jcraft.com/jsch/ 위 사이트는 공식문서 이다. 공식문서만 딱 들어가봐도 꽤나 오래되 보이는 사이트가 있고 그만큼 오래된 전통 라이브러리로 판정이 된다 2018년 6월이 마지막 업데이트로 생각보다 오래된(?) 라이브러리 이다 기술이 노후되고 관리되지 않았다고 안좋고 나쁜기술은 아니라고 생각한다 무료로 쓰는 입장에서, ..
평소에 Switch ~ case 구조를 잘 안사용할 것이라는 착각을 했지만 가끔 사용을 하기도 했고 JDK14 이후 변환이 있다길래 공부한 내용을 포스팅 해보려고 합니다 Java 버전이 업그레이드 됨에 따라 생기는 새로운 기능들을 사용하려고 할 때 실무 관점에서 계속 고민하게 되는 포인트가 있습니다. Java 버전이 빠르게 발전하면서 추가되고 바뀌는 문법을 적용하는게 무조건 가독성 향상 및 유지보수에 편할까? 라는 고민도을 계속합니다.요즘 클린 코드 를 공부하다보니 '실무' 와 '클린 코드' 사이에서의 뭔가 고민이 되는 포인트가 많이 있었습니다.일단 지금 회사에서는 내가 뭔가 새로운 것을 쓰면 다 설명을 해줘야 한다. 사람들한테...왜 먼저 찾아보지 않고 질문을 할까라는 생각도 하지만 일단 그런 이야기는..
들어가며개인적인 생각으로 디자인 패턴은 뭔가 코드를 공통화하고 추상화가 필요할 때 필요한 것 같다는 생각이 든다.현재 내가 겪고 실천해본 입장에서는 일단 공통 코드를 추상화하기 위해서 위 패턴을 적용해 보았다. 실무에서 비즈니스 로직을 만들다보면 'OOP' 랑은 뭔가 거리가 먼? 코드를 작성하고 있다는 생각이 든다.과연 OOP 는 무엇일까? 개념적인 부분은 알고있다.하지만 비즈니스에 내가 어떻게 적용을 하고 있고 어떻게 더 개선할 수 있을지에 대한 고민을 하고는 한다. 그리고 그 OOP 의 첫 걸음은 디자인 패턴을 조금씩 알면서 눈에 객체지향이 조금씩 눈에 들어오고 보이기 시작했다. 내가 겪은 상황은 이렇다.거래 데이터를 집계 해야하는 상황이다. 그리고 비즈니스 로직을 짜기전에 나는 항상 텍스트 및 ..
들어가며Java/Spring 을 사용하던 중 항상 직면하는 문제인 Null 처리(NPE) 에 관한 이야기를 해보려고 합니다. 여러분들은 Java 에서 Null 처리를 어떻게 하고 계시나요? 코틀린을 사용하시는 분들은 정확히는 잘 모르지만 Null 처리를 자동으로 해주기 때문에 딱히 신경을 쓰지 않아도 된다고 합니다.(부럽습니다..) 하지만 Java 를 사용하시는 분들은 보통 직접 Null 처리를 해야합니다 보통 어떠한 Parameter 를 통하여 값을 전달받을 때 NPE 방지를 위해서 Null 처리를 하고는 합니다.저는 위 Parameter 값에서 null 을 체크하기 위해 보통 아래와 같은 코드를 작성하고는 했습니다if(id==null) { throw new RuntimeException("Null ..
1. 들어가며실무를 하며 느끼는게 하나가 있다.내가 생각한대로 개발 일정 및 개발 요구사항이 평온하게 진행되는 경우는 없다고 느꼈다. 그렇기에 실질적인 요구사항에 맞춰 개발하는 나로써는 항상 이러한 고민을 하게 된다. '어떻게 하면 유동적으로 코드를 변경할 수 있을까?''어차피 요구사항이 계속 추가될걸 예상하고, 어떻게 코드를 추상화시켜서 내가 덜 고생할 수 있을까?' 라는 고민이 요즘들어 많이 든다. 평소에는 내가 코드를 짜는 방식은 일단, 작동은 되게 만들어 둔 후, 천천히 리팩토링 및 고도화를 시키는게 나만의 코딩 방식이였다. 하지만...바뀌는 요구사항들 및 버려지는 내 코드들을 보며, 느끼게 되었다. 처음부터 내가 코드 설계를 쪼금만 더 잘했다면??? 덜 고생하지 않았을까? 하는 생각을 한다. ..
들어가며업무를 하며 form 데이터를 서버에 보내야 할일이 생겼다.form 에서 User 가 Sign 을 하면 그 Sign 한 값을 서버로 보내야 했다. 위 사인한 값을 추출해서 서버로 보내야 했고, 서버로 값을 같이 보내기 위해 아래 방법을 사용했다.function onSignSave() { const canvas = document.getElementById('drawCanvas'); const dataUrl = canvas.toDataURL(); // 숨겨진 input 필드에 Data URL 저장 document.getElementById('signImg').value = dataUrl;} 위 코드를 사용하고 사용하여 input 폼에 Value 를 줘서 서버로 보내지게 만들었..
들어가며위 Jackson 라이브러리는 Spring 에서 객체를 직렬화, 역직렬화 할 때 필수 라이브러리이다.위 라이브러리를 사용 안하는 백엔드 개발자는 없을 것? 이라고 생각한다. 회사 코드를 보다가 자주 보이는 것이지만, 매번 검색하는 번거로움을 줄이기 위해 정리를 해놓으려고 한다. https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind Jackson 라이브러리를 사용하기 위해선 위 URL 에 접속해서 gradle or Maven 본인이 사용하는빌드 도구 코드를 따서 의존성 주입을 시키면 된다. Gradle// https://mvnrepository.com/artifact/com.fasterxml.jackson.cor..
들어가며가끔 JDK API 에 내부 구현이 궁금해 내부 구현을 파고들다 보면 몇몇의 상위 객체는implements Serializable 을 구현 하고 있는 것을 본적이 있을 것 입니다. 평소에는 그냥 이런게 있구나 하고 가볍게 넘기곤했다.그러다 JPA 관련 문서를 보다가, JPA 공식 문서에 Entity 의 기본 구현은 Serializable 을 구현하는 것이라는 것을 봤다. 하지만 저는 Entity 를 구성하면서 한번도 Serializable 을 구현한적이 없었죠. 그래서 궁금했습니다. 이게 뭐길래 다양한 객체 내부구현을 타고가다 보면 최상위에 있는지 왜? 이걸 구현하는지가 궁금했다. 그래서 한번 공부를 해봤다. 1. 직렬화, 역직렬화직렬화는 간단하게 설명해 객체를 외부의 자바 시스템에서도 사용할 ..