반응형 분류 전체보기323 객체지향 설계 개념 객체지향의 목표는 실세계를 모방하는 것이 아니다. 실세계를 추상화하고 은유하여 새로운 세계를 창조하는 것이다. 실세계에 대한 비유는 객체지향의 다양한 측면을 이해하는데 도움이 된다 1. 객체를 스스로 생각하고 결정하는 현실세계의 사물에 비유하는 것은 상태와 행위를 ‘캡슐화’하는 객체의 ‘자율성’을 잘 설명 2. 현실의 암묵적인 약속, 명시적 계약을 기반으로 협력하여 목표를 달성하는 과정은 ‘메시지’를 주고 받으며, ‘협력’하는 객체들의 관계를 잘 설명 설계는 간단히 끝내고 빨리 구현에 돌입하라. 실제 코드를 작성해가면서 협력의 전체적인 밑그림을 그리면서 수정해 나가라. 사람의 인지능력 한계로 인해 설계를 완벽히 끝내고 코드 작성을 하겠다는 어려운 일이다. 객체지향의 본질 1. 시스템은 상호협력하는 자율적.. 2023. 8. 26. SpringBoot AWS S3 한글명 파일업로드 에러 SpringBoot에서 AWS S3에 파일 업로드 중 오류가 발생했다. 테스트 시 문제없이 동작하던 코드였는데 확인해보니 한글 파일명이 문제가 되었다. 아래 코드와 같이 S3에 업로드 되는 파일명은 중복 방지를 위해 UUID를 사용했고, 원본 파일명(originFileName)은 UserMetadata로 저장 하기 위해 코드를 추가했는데 원본 파일명(originFileName)이 한글인 경우 S3에서 오류가 발생했다. public String uploadImage(MultipartFile file) throws Exception{ String originFileName = file.getOriginalFilename(); String filePath = uploadPath + UUID.randomUUID.. 2023. 8. 20. 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. mac과 아이폰 와이파이(Wi-Fi) 비밀번호 확인 MacOS와 아이폰에서 와이파이 비밀번호 확인하는 방법을 각각 알아본다. MacOS 먼저 '키체인 접근'에서 좌측 '시스템'을 클릭하고, 오른쪽 화면에서 종류가 'AirPort 네트워크 암호'인 것들중 비밀번호를 확인하고 싶은 항목을 더블클릭한다. 다음으로 뜨는 화면에서 하단의 암호보기를 체크한다. 다음으로 시스템계정의 비밀번호를 입력한다. 이제 비밀번호를 확인할 수 있다. 아이폰 먼저 '설정'에서 Wi-Fi를 터치하고 화면을 이동한다. 우측 상단의 편집을 터치한다. 그러면 FaceID 등 본인인증 창이 뜨는데 본인 인증을 진행한다. 이제 비밀번호를 확인하고자 하는 Wi-Fi 항목의 오른쪽에 있는 (!)를 클릭한다. 마지막으로 암호 항목을 터치하면 암호가 보인다. 2023. 8. 18. Python Selenium 동적 페이지 크롤링(Docker) Python의 Selenium을 활용해서 동적 페이지 크롤링 하는 부분을 docker 환경에서 실행해본다. 일반적인 데스크탑 환경과 다른점은 docker는 linux 환경으로 UI가 없다는 점이다. 하지만 Chrome 브라우저는 사용하게 된다. 먼저 다음과 같이 Dockerfile을 작성한다. python은 3.9 버전을 사용하고 Google Chrome을 설치한다. 그리고 python 실행에 필요한 패키지들을 requirements.txt를 통해서 설치하고, python 샘플코드를 실행한다. FROM python:3.9 WORKDIR /app RUN apt-get -y update && \ apt install wget && \ wget https://dl.google.com/linux/direct/g.. 2023. 8. 13. 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. Python Selenium ChromeDriverManager 버전 오류(There is no such driver by url https://chromedriver.storage.googleapis.com/LATEST_RELEASE_115.0.5790) Python Selenium을 사용하여 동작하던 코드에서 갑자기 에러가 발생했다. 에러 내용은 ChromeDriverManager 관련된 에러였다. ValueError: There is no such driver by url https://chromedriver.storage.googleapis.com/LATEST_RELEASE_115.0.5790 계속 잘 동작하던 코드였고 코드에 변경도 없었는데 갑자기 에러가 발생한 상황이었다. 여기저기 찾아보니 Chrome이 115 버전으로 업데이트 되었는데 ChromeDriver는 아직 114가 현재 최신 버전이라서 발생한 문제였다. 아래 코드처럼 자동 최신 드라이버를 설치하도록 했는데 ChromeDriver는 현재 Chrome의 버전을 기준으로 설치하도록 동작하고.. 2023. 8. 13. 아이폰 붙여넣기 허용 팝업 제거 아이폰 앱을 사용하는 중에 다른 앱이나 다른 Mac디바이스 등에서 복사한 내용을 붙여넣기 허용하겠냐는 팝업이 계속 뜨는 경우가 있다. 정말 앱을 정상적으로 사용할 수 없을만큼 자주 뜨고해서 많이 불편한데 어렵지 않게 제거 할 수 있다. 아이폰에서 "설정" 앱을 실행시키고, 아래로 쭉 내려가보면 앱 별로 설정을 할 수 앱 목록들이 나온다. 붙여넣기 허용 팝업이 뜨는 앱을 선택한다. 앱을 선택하고 들어가면 하단에 "다른 앱에서 붙여넣기" 설정이 있다. 이 부분이 기본적으로 '묻기'로 되어있다. 다른 앱에서 붙여넣기 설정 항목을 선택하고 다음 화면에서 허용 or 거부를 선택해주면 끝이다. 필자 같은 경우 사용 편의를 위해 허용을 선택했다. 붙여넣기 허용 팝업이 뜨는 앱 별로 위의 방법대로 동일하게 설정을 해주.. 2023. 8. 5. 이전 1 ··· 12 13 14 15 16 17 18 ··· 41 다음 반응형