전체 글

· Study/Spring
2000년대에 로버트 마틴(클린코드 저자)이 객체 지향 프로그래밍 및 설계의 다섯 가지 기본 원칙을 정의하였다. 이를 앞 글자를 따 SOLID라고 한다. SOLID 1. SRP(Single Responsibility Principle, 단일 책임 원칙) - 한 클래스는 하나의 책임만 가져야 한다. - 설계에 변경이 있을 때 그에 따른 파급 효과가 적으면 단일 책임 원칙을 잘 따른 것이라 할 수 있다. 2. OCP(Open/Closed Principle, 개방/폐쇄 원칙) - 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다. - 확장하려면 당연히 변경이 필요한 것이 아닌가? -> 아니다. '다형성'을 잘 활용하여 '역할'과 '구현'을 분리하면 가능하다! - 다형성을 잘 활용해도 구현 객체..
· Study/MySQL
앞서, 구름IDE에서 스프링부트 개발환경 세팅하기 글을 썼지만 그 방법으로 할 필요가 없었다. 추가로 jpa와 mysql 사용까지 추가하여 다시 정리하고자 한다. 이대로만 따라한다면 당장 구름IDE에서 간단한 Springboot 프로젝트하는데에는 문제 없을 것이다. 1. springboot, gradle로 컨테이너 생성(mysql 관련 설정x) - 말 그대로 컨테이너 생성에서 소프트웨어 스택은 Springboot를 선택하고 Template은 Gradle을 선택하고 추가 모듈/패키지는 하나도 선택하지 않은 채 컨테이너를 생성한다. 2. mysql 설치하기 터미널 창에서, terminal# sudo apt-get install mysql-server terminal# service mysql start te..
· Study/Spring
스프링부트 개발을 하면서 겪었던 에러들과 그 해결방법을 정리해보았다. ※ 개인의 개발 환경에 따라 발생 원인이 다르거나, 동일한 방법으로 해결되지 않을 수도 있으며 같은 에러라도 다른 다양한 이유 때문에 발생할 수 있음을 명심하자! 해당 에러들이 발생하고 해결한 환경은 구름IDE Springboot Container(gradle) 컨테이너, Spring boot 1.5.10 , Gradle 4.6 , Java 8 이다. 에러메시지) ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111) -> cmd에서, service mysql start 하여 mysql을 시작한 후 m..
· Project
파이썬 소켓 기반 채팅 프로그램을 제작하면서 공부했던 내용도 따로 정리해보았다. https://hyobn.tistory.com/32 [파이썬] 채팅 프로그램 공부했던 내용 파이썬 멀티스레딩(Multi Threading) from threading import * x = Thread(target=yhb, args=('A',)) x.start() target : 쓰레드가 실행할 함수를 지정. args : target으로 지정한 함수에 넘길 인자. start() 함수.. hyobn.tistory.com 1. WinError 10038 [WinError 10038] 소켓 이외의 개체에 작업을 시도했습니다. 발생 원인 : 데이터 송수신 완료 전에 소켓을 close하면 발생한다. 해결 방법 : 코드에서 close(..
· Study/Spring
제목 그대로 구름 ide에서 스프링부트 개발 환경을 세팅하는 방법을 정리해보았다. 1. 소프트웨어 스택은 Spring Boot을 선택하고, Template은 gradle을 선택하여 컨테이너를 생성한다. Maven vs Gradle Template에는 Maven과 Gradle 둘 중 하나를 선택할 수 있는데, Maven과 Gradle은 빌드 관리 도구로, 생성한 프로젝트 내에서 작성한 Java코드와 각종 xml, properties 등을 JVM이 인식할 수 있도록 패키징 해주는 역할을 한다. 또한 애플리케이션을 개발하면서 필요한 외부 라이브러리들을 자동으로 관리해주는 도구이다. Maven은 빌드 중인 프로젝트, 빌드 순서, 외부 라이브러리의 종속성 관계 등 모든 정보를 pom.xml 파일에 명시한다. 이에..
· Retrospect
5월 초에 첫 휴가를 다녀와서 격리가 풀리자마자 1일 1 커밋을 시작했다. 처음 시작한 취지는 의미 없이 허비하는 시간을 줄이고 공부하는 습관을 기르기 위함이었다. 『지속하는 힘 - 고바야시 다다아키』 에서 특정 행동을 66일간 반복하면 습관이 된다는 문장을 보고 딱 66일 동안만 하루도 빠짐없이 공부하고 기록해보자 라는 생각으로 시작했는데 100일 넘게 지속하게 되었다. 하루 종일 힘든 작업을 했든, 개인정비 시간에 근무가 있든, 어쨌든 매일 적어도 1시간은 공부할 시간이 있는 환경에서 근무하고 있기에 하고자 하는 의지만 있다면 1일 1 커밋은 어렵지 않은 도전이라고 생각했다. 115일간 400여 개의 커밋을 했는데 주로 알고리즘 공부와 소켓 통신 공부를 했다. 각각의 레파지토리에 대해 간단하게 정리하..
· Algorithm
최근 백준 온라인 저지(boj.kr)를 활용하여 알고리즘 문제를 중점적으로 풀면서 겪었던 에러를 몇 가지 기록하고자 한다. 알고리즘 문제를 풀다 보면 정말 단순한 이유나 오타에서부터 생각지도 못한 에러까지 다양한 원인으로 인해 1시간 넘게 삽질하는 경우가 빈번하게 발생한다. 부딪혔던 문제들의 원인을 잘 기억하고 해결 방법을 숙지해서 같은 실수를 반복하지 말자!! 1. 런타임 에러(Runtime Error) : 프로그램이 비정상적으로 종료된 경우 발생한다. 런타임 에러에는 다양한 원인이 존재하지만, 나는 OutOfBounds, Segfault 두 가지의 런타임 에러를 경험해 보았다. 근데 사실 이 두 개가 가장 대표적이고 대중적인 런타임 에러인 것 같다. A. OutOfBounds : 배열, 벡터 등 컨테..
hyobinside
2023년의 나에게