개발
-
인천대학교 글로벌 앱센터 15.5기 파트장을 마무리 하면서개발/그 외 2023. 12. 23. 00:35
무엇을 했나? 23학년도 2학기 동안 앱센터에서 서버 파트장으로 활동하며 15.5기 서버 파트의 스터디를 이끌었다. 스터디를 진행하면서 파트원들에게 다양한 학습 기회를 제공하기 위해 노력했는데, 그 중심에는 내가 만든 커리큘럼이 있었다. 좋은 커리큘럼을 만들기 위해 고민했고, 아래와 같은 목표를 바탕으로 커리큘럼을 구성해 나갔다. Github Actions을 이용해 CI/CD 경험을 해 볼 수 있게 해 줄 것 따로 시간 내서 공부하는 게 아니라면 알지 못할 자잘한 지식들을 배울 수 있게 해 줄 것 다른 파트와 협업을 통해 일정 수준 이상의 결과물이 나올 수 있게 할 것 책에 나와있는 코드를 따라 치는 것만이 아니라, 협업 과정에서 필요한 지식을 쌓을 수 있게 해 줄 것 커리큘럼과 코드는 15.5기 Rep..
-
인천대학교 글로벌 앱센터 15기를 마무리 하면서개발/그 외 2023. 9. 2. 17:35
우물 안 개구리였던 내게 굉장히 좋은 경험이었다. 무엇을 배웠나? 서버 파트장의 주도로 스터디원들과 함께 SpringBoot의 기초적인 부분부터 ~ CI/CD까지의 이론을 공부한 후 배운 것을 바탕으로 To-Do List 애플리케이션을 직접 만들며 이론을 적용해 보는 시간을 가졌다. 처음에는 To-Do List 애플리케이션을 만드는 것이 만만하고 쉽게만 보였었는데, 스터디를 통해서 여러 가지를 배우고 난 뒤에는 제대로 서버 애플리케이션을 구성하는 것이 얼마나 어려운지 알게 되었다. 훌륭한 리더와 팀원들을 만나서 정말 많은 것을 배울 수 있었고, 다양한 주제에 대해 지식을 나누며 토론할 수 있어서 좋았다. 무엇이 새로웠나? Express.js 프레임워크를 통해 작은 프로젝트를 몇 개를 진행해 본 경험은 있..
-
제네릭개발/Java 2023. 7. 18. 17:16
제네릭은 Java 5부터 추가된 타입이다. 제네릭 타입을 이용하면 잘못된 타입이 사용될 수 있는 문제를 컴파일 과정에서 발견할 수 있다. 제네릭은 다음과 같은 이점을 가지고 있다. 1. 컴파일 시 강한 타입 체크가 가능해진다. 2. 타입 변환이 제거된다. 제네릭 타입 (class, interface) 타입을 파라미터로 가지는 클래스나 인터페이스를 말한다. 제네릭 타입은 이름 뒤에 부호가 붙고 사이에 타입 파라미터가 위치한다. 제네릭을 사용한 코드와 사용하지 않은 코드를 비교해 보면서 차이를 알아보자. public class Box { private Object object; public void set(Object object) { this.object = object; } public Object ge..
-
Spring Boot 3.X 에 Swagger3를 추가하기개발/Spring Boot 2023. 7. 16. 22:24
스프링 프로젝트에 의존성을 추가해준다. Maven org.springdoc springdoc-openapi-starter-webmvc-ui 2.1.0 Gradle // https://mvnrepository.com/artifact/org.springdoc/springdoc-openapi-starter-webmvc-ui implementation group: 'org.springdoc', name: 'springdoc-openapi-starter-webmvc-ui', version: '2.1.0' Swagger Configuration을 위한 클래스를 만들어준다. @Configuration public class SwaggerConfig { @Bean public OpenAPI springOpenAPI()..
-
Swagger에 대해개발/Spring Boot 2023. 7. 16. 21:18
Swagger UI 스웨거 UI는 OAS(OpenAI Specification; REST API 명세 포맷)을 통해 프로젝트의 API 문서를 만들어주는 프레임워크다. Springfox와 Springdoc은 스웨거 UI를 Spring Framework에서 사용할 수 있게 만들어주는 프로젝트이다. Springfox Swagger Spring Framework를 사용하는 프로젝트에서 Swagger를 이용할 수 있게 도와주는 라이브러리다. Springdoc Swagger Springfox Swagger와 마찬가지로 Swagger를 이용할 수 있게 도와주는 라이브러리다. Springfox가 업데이트를 중단한 사이 새로 시작된 프로젝트다. + Springdoc은 Webflux를 지원해 비동기방식의 웹개발을 지원한다..
-
초기화개발/Java 2023. 7. 16. 00:12
초기화 블럭 초기화 작업이 복잡하여 명시적 초기화만으로 부족한 경우에 사용된다. 초기화 블럭에는 두가지가 있다. - 클래스 초기화 블럭: 클래스 변수의 복잡한 초기화에 사용된다. - 인스턴스 초기화 블럭: 인스턴스 변수의 복잡한 초기화에 사용된다. class TV { static { // 클래스 초기화 블럭 } { // 인스턴스 초기화 블럭 } } 멤버변수의 초기화 시기와 순서 초기화가 수행되는 시기와 순서에 대해 정리해보자 - 클래스 변수의 초기화 시점: 클래스가 처음 로드될 때 단 한번 초기화 된다. - 인스턴스 변수의 초기화 시점: 인스턴스가 생성될 때마다 인스턴스 별로 초기화가 된다. 초기화 순서 - 클래스 변수의 초기화 순서: 기본값 -> 명시적 초기화 -> 클래스 초기화 블럭 - 인스턴스 변수..
-
생성자개발/Java 2023. 7. 15. 13:57
생성자는 인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메서드'이다. 생성자는 인스턴스 변수의 초기화 작업에 주로 사용되며 인스턴스 생성시 실행되어야 할 작업을 위해서도 사용된다. 생성자의 조건은 다음과 같다. 1. 생성자의 이름은 클래스의 이름과 같아야 한다. 2. 생성자는 리턴 값이 없다. [참고] 생성자도 메서드기 때문에 리턴값이 없다는 void를 붙여야 하지만, 모든 생성자는 리턴 값이 없으므로 void를 생략할 수 있다. 생성자라는 이름 때문에 생성자가 인스턴스를 생성할 것 이라는 오해를 하기 쉬운데 인스턴스는 new 연산자가 생성하는 것이지 생성자가 인스턴스를 생성하는 것은 아니다. 생성자는 인스턴스 변수들의 초기화에 사용되는 특별한 메서드일 뿐이다. TV tv = new TV(); // 1..
-
클래스, 객체와 인스턴스개발/Java 2023. 7. 15. 12:46
클래스 클래스란 '객체를 정의해 놓은 것' 또는 '객체의 설계도 또는 틀'이라고 정의할 수 있다. 클래스는 객체를 생성하는 데 사용되며, 객체는 클래스에 정의된 대로 생성된다. 객체 객체의 사전적인 정의는 '실제로 존재하는 것'이다. 우리가 주변에서 볼 수 있는 사물들을 객체라고 할 수 있다. 객체지향이론에서는 유형적인 사물, 무형적인 개념 둘다 객체로 간주한다. 예를 들어 TV 설계도(클래스)는 TV라는 제품(객체)을 정의한다. TV 설계도는 TV를 만드는데 사용된다. 클래스는 객체를 생성하는데 사용될 뿐, 객체 그 자체는 아니다. 인스턴스 클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화라고 하며, 어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스라고 한다. 객체와 인스턴스의 용어는 엄격히 ..