본문 바로가기
반응형

개발/기타48

객체지향 설계 개념 객체지향의 목표는 실세계를 모방하는 것이 아니다. 실세계를 추상화하고 은유하여 새로운 세계를 창조하는 것이다. 실세계에 대한 비유는 객체지향의 다양한 측면을 이해하는데 도움이 된다 1. 객체를 스스로 생각하고 결정하는 현실세계의 사물에 비유하는 것은 상태와 행위를 ‘캡슐화’하는 객체의 ‘자율성’을 잘 설명 2. 현실의 암묵적인 약속, 명시적 계약을 기반으로 협력하여 목표를 달성하는 과정은 ‘메시지’를 주고 받으며, ‘협력’하는 객체들의 관계를 잘 설명 설계는 간단히 끝내고 빨리 구현에 돌입하라. 실제 코드를 작성해가면서 협력의 전체적인 밑그림을 그리면서 수정해 나가라. 사람의 인지능력 한계로 인해 설계를 완벽히 끝내고 코드 작성을 하겠다는 어려운 일이다. 객체지향의 본질 1. 시스템은 상호협력하는 자율적.. 2023. 8. 26.
nodejs NVM(Node Version Manager) 설치 및 활용 nodejs 버전을 관리해주는 NVM(Node Version Manager)을 사용하면 여러 버전의 nodejs를 자유롭게 사용할 있어서 편리하다. 어플리케이션들이 여러 버전의 nodejs를 활용해서 개발이 되는데 각각의 어플리케이션 마다 서로 다른 nodejs 환경일 경우 매번 맞춰주는게 많이 번거롭다. nvm을 사용하면 이런 상황에서 여러 버전의 nodejs를 편리하게 스위칭할 수 있다. nvm 설치 nvm 설치는 아래 명령어 한줄이면 된다. curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.4/install.sh | bash 최신 버전의 nvm은 아래 사이트에서 확인해서 최신버전으로 설치해준다. https://github.com/nvm-sh/.. 2023. 8. 19.
Oracle 비밀번호 만료(ORA-28001: the password has expired) Oracle 접속 비밀번호가 만료가 되면 아래와 같은 에러가 뜨면서 접속이 안된다. Caused by: java.sql.SQLException: ORA-28001: the password has expired 위와 같은 에러가 발생하는 경우 비밀번호를 변경해줘야 한다. 비밀번호 변경 방법은 아래와 같다. 먼저 Oracle DB로 접속을 한다. sudo su - oracle #sqlplus 접속 sqlplus "/as sysdba" 다음으로 신규 비밀번호를 설정해준다. # 비밀번호 변경 # 형식: [ alter user 유저명 identified by 비밀번호; ] # 샘플 alter user testuser identified by "mypassword"; 참고로 기본적으로 Oracle 비밀번호 만료가 .. 2023. 8. 13.
git fatal: the remote end hung up unexpectedly 오류 조치 git 사용 중에 commit 내역을 push 하려고 할때 다음과 같은 에러가 발생했다. send-pack: unexpected disconnect while reading sideband packet fatal: the remote end hung up unexpectedly 위 오류는 git에서 기본적으로 한개 파일의 최대 용량이 1MB로 설정되어 있고, 그것을 초과한 파일을 push 할 때 발생하는 오류였다. 해결하기 위한 방법은 아래와 같이 진행하라고 한다. git config --local http.postBuffer 2048M 하지만 필자는 동일한 오류가 계속 발생했다. 그래서 아래 설정을 추가해봤다. git config --local ssh.postBuffer 2048M 이제 정상적으로 pu.. 2023. 7. 30.
Gradle fat jar(의존성 포함한 jar) 생성, shadow plugin 활용 일반적으로 Gradle로 jar를 빌드하게 되면 의존성을 설정한 외부 라이브러리(dependency)들은 포함이 되어있지 않다. dependency가 모두 포함된 jar로(fat jar) 빌드하기 위해서는 jar 빌드 시 아래 설정들을 추가해준다. 적용한 gradle 버전은 7.4 기준이다. jar{ enabled=true archiveClassifier = '' // use empty string from { // 의존성 포함 configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } } duplicatesStrategy = DuplicatesStrategy.EXCLUDE // 중복처리 } 설정된 jar로 빌드를 하고 .. 2023. 7. 22.
poi SXSSFWorkbook createSheet FontConfiguration NullPointException Java에서 엑셀을 다룰 때 Apache POI 라이브러리를 자주 사용하게 된다. 그리고 대용량 처리를 위해서 Streaming API를 사용하는 SXSSFWorkbook을 사용하는데 서버에 올려서 테스트 중에 아래와 같은 에러가 발생했다. Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed; nested exception is java.lang.InternalError: java.lang.reflect.InvocationTargetException] with root cause java.lang.NullPointerException: null at j.. 2023. 7. 3.
DBeaver posgresql JDBC 드라이버 수동 설정 DB Clinet Tool로 많이 사용하고 있는 DBeaver에서 DB 드라이버 수동 설정하는 방법을 알아본다. 먼저 posgresql의 드라이버를 다운로드 받는다. https://jdbc.postgresql.org/download/ 이제 DBeaver에서 postgresql database 연결 설정을 시작한다. 'DB 연결 설정'에서 우측하단의 Driver Settings를 클릭한다. Driver Settings 팝업에서 두번째 탭 "Libraries"를 클릭한다. 그럼 기본으로 설정된 라이브러리들이 몇가지 보이는데 불필요함으로 모두 선택하고 Delete를 한다(Optional). 그리고 Add File를 선택해서 다운로드 받은 postgresql jdbc 드라이버를 추가 후 OK를 눌러 팝업을 닫는.. 2023. 6. 19.
PostgreSQL 문자열 합치기 PostgreSQL에서 문자열을 합치는 방법을 알아보자. PostgreSQL은 기본적으로 Oracle과 문법이 많이 비슷하다. 1. '||' 사용 // 문법 STR1 || STR2 || ... // 예시 'Hello' || 'World' // HelloWorld 한가지 주의할 부분은 합치려는 문자열 중에 NULL이 있는 경우 NULL이 리턴된다는 것이다. 'Hello' || NULL || 'World' // NULL 2. CONCAT 사용 // 문법 CONCAT(STR1, STR2,...) // 예시 CONCAT('Hello', 'World') // HelloWorld CONCAT을 사용할 때는 NULL이 포함이 되어도 NULL을 무시한다. 'Hello' || NULL || 'World' // Hello.. 2023. 5. 29.
반응형