분류 전체보기 41

2강 - 필터란 무엇인가요?

Inflearn 최주호 강사님의 스프링부트 개념정리(이론) 강의를 듣고 정리한 내용입니다. 5. 스프링은 많은 필터를 가지고 있다. 필터: 사전 검열의 기능 like 문지기- Spring 자체의 필터 사용할 수 있고, 재정의해서 사용할 수 있고, 직접 만들어서 사용할 수 있다. tomcat이 들고 있는 필터: filter, 필터의 기능을 명세한 파일: web.xml Spring container가 들고 있는 필터 : interceptor 6. 스프링은 많은 어노테이션을 가지고 있다.(리플렉션, 컴파일체킹) 리플렉션 분석하는 기법 - 런타임할 때, 작동한다. 메서드, 필드, 어노테이션이 무엇인지 분석한다. 컴파일체킹 - @어노테이션: 주석+힌트 - 컴파일러가 인식한다. ex. 메소드 위에 @override..

1강 - 스프링의 핵심은 무엇인가요?

Inflearn 최주호 강사님의 스프링부트 개념정리(이론) 강의를 듣고 정리한 내용입니다. 스프링이란? 1. 스프링은 프레임워크이다. 정해진 틀에 맞춰서 작업해야함. 2. 스프링은 오픈소스이다. 소스코드가 공개되어있다. 내부 코드를 볼 수 있으며 고칠 수도 있다. & 무료 3. 스프링은 IoC 컨테이너를 가진다. Inversion of Control - 제어의 역전 - 제어 권한이 Spring에 있다. 참고, class: 설계도, object: 실체화가 가능한 것(ex. 가구), instance: 실체화한 것(ex. 의자) Spring이 모든 object를 모두 스캔한 다음에 heap 메모리 공간에 모든 object를 띄워놓음. - 즉, Spring이 object를 관리하는 것이다. 4. 스프링은 DI를..

2023 DDC 후기

2023년 1월 28일에 코엑스에서 진행된 2023 DDC에 참여 하였다. 멋쟁이 사자처럼에서 주관한 행사로 1월 28일~29일 양일간 진행되었다. 첫 날은 Develop Day로 데이터 사이언티스트, 프론트엔드 개발자, 백엔드 개발자님들의 성장 이야기를 들을 수 있었다. 패널토크를 통해 각 IT회사의 문화 등도 들을 수 있었다. 개발자로 회사에 취직했을 때, 어떤 마음가짐으로 임해야하는지 깨달았다. 어떻게 성장할지 끊임없이 고민하고, 노력하고, 도전하면서 자기 자신의 가치를 높여야한다는 것을 배웠다. 또한, 지금 되게 멋있게 보이고, 좋은 회사에서 일하고 계신 개발자님들도 이전에는 많은 실패나 어려움이 있었다는 것을 들으며 지금 나의 상황과 유사하다고 느꼈다. 그들이 성장하고 그 자리까지 갈 수 있었던..

행사 참여 2023.02.01

17장

17장 - 냄새와 휴리스틱 리팩터링이 필요한 코드에서 나쁜 냄새가 난다고한다. 코드를 작성하고 해당되는지 확인해야할 것을 정리해놓았다. 주석 - 부적절한 정보, 쓸모 없는 주석, 중복된 주석, 성의 없는 주석, 주석 처리된 코드 환경 - 여러 단계로 빌드 및 테스트 함수 - 너무 많은 인수, 출력 인수, 플래그 인수, 죽은 함수 일반 - 한 소스 파일에 여러 언어를 사용한다, 당연한 동작을 구현하지 않는다, 경계를 올바로 처리하지 않는다, 안전 절차 무시, 중복, 추상화 수준이 올바르지 못하다, 기초 클래스가 파생 클래스에 의존한다, 과도한 정보, 죽은 코드, 수직 분리, 일관성 부족, 잡동사니, 인위적 결합, 기능 욕심, 선택자 인수, 모호한 의도, 잘못 지운 책임, 부적절한 static 함수, 서술적..

클린코드 2022.06.30

15장~16장

15장 - JUnit 들여다보기 JUnit은 자바 프레임워크 중 가장 유명한 프레임워크이다. JUnit의 저자는 많지만 시작은 켄트 벡과 에릭 감마, 두 사람이라고 한다. 비행기를 타고가다가 세 시간만에 JUnit의 기초가 되는 코드를 작성하였다고 하는데 그 JUnit이 지금은 자바 프레임워크 중 가장 유명한 프레임워크가 되었다. JUnit의 프레임워크에서 가져온 코드를 보니 그야말로 '클린 코드'인 것 같다는 생각이 들었다. 심지어 이 책에서는 이 JUnit의 코드를 개선하며 이 세상에 개선이 불필요한 모듈은 없다고 말한다. 완벽한 것 같아도 코드가 개선될 여지는 있다는 것이다. 16장 - SerialDate 리팩터링 이 장에서는 JCommon 라이브러리에 SerialDate 클래스를 리팩터링해본다. ..

클린코드 2022.06.30

14장

14장-점진적인 개선 여기서는 직접 코드를 개선하는 과정을 보여준다. 일단 프로그램이 돌아간다고 다음 업무로 넘어가지 말자! 이 코드를 검증하고 개선하는 것이 필수적이다. 코드를 고치는데 난잡해지는 것 같은 느낌이 들면 멈춰보자! TDD를 이용하여 개발하며 개선을 할 때는 자잘한 변경을 하면서 변경 전후의 시스템이 비슷하도록 해야한다. 프로그램을 완전 갈아엎는 것을 개선이라고 보기는 어렵다. getter와 setter를 사용하며 메소드, 생성자 간에 인수 전달이 명확하고 효과적으로 하도록 한다. 만든 함수, 넘긴 인자가 다 쓰여야한다. 클래스와 함수에 되도록 하나의 책임, 하나의 기능을 담당하도록 구성한다. 계속 테스트를 실행해보는 것이 필요하다.

클린코드 2022.06.30

'바른 글씨' 프로젝트 회고록

졸업프로젝트가 드디어 끝났다..! 졸업프로젝트에 대한 간단한 소개와 전반적인 수행 과정, 프로젝트를 끝내고 나서 배운 점, 느낀 점 등에 대해 회고록을 작성해보고자 한다. 졸업프로젝트 (2021-2학기~2022-1학기) 지금 내가 재학하는 대학교 컴퓨터공학과에서는 졸업프로젝트 수행이 졸업 요건 중에 하나이다. 정확히 말하면 '캡스톤 디자인 프로젝트'이지만 대부분의 사람들이 그냥 졸업프로젝트라고 부른다. 언제 할지는 자유이지만 2개의 학기에 걸쳐 이수해야하므로 일단, 커리큘럼 상에는 3학년 2학기와 4학년 1학기에 하는 것으로 정해져있다. 나는 지금까지 휴학 없이 쭉 학교를 다녔기 때문에 커리큘럼대로 3-2, 4-1에 해당 과목을 수강하였다. 사실상 2개의 학기를 연속해서 수강해야하므로 겨울방학도 프로젝트..

졸업프로젝트 2022.06.28

11장~13장

11장-시스템 사용과 제작 분리 - 의존성 주입 - 단일 책임 원칙 클래스는 수동적으로 작동, setter나 생성자를 이용하여 의존성을 주입한다. AOP - Aspect Oriented Programming, 관점 지향 프로그래밍 - 관점: 특정 관심사를 지원하려면 시스템에서 특정 지점들이 동작하는 방식을 일관성 있게 바꿔야한다. - 영속성 제공 자바 프록시 - 단순한 상황에 적합 - 개별 객체나 클래스에서 메서드 호출 감싸기 순수 자바 AOP 프레임워크 AspectJ 관점 - 관심사를 관점으로 분리하는 가장 강력한 도구: AspectJ 언어 테스트 주도 시스템 아키텍처 구축 - 상황에 맞게 새로운 기술을 채택해 아키텍처 변경 가능 깨끗하지 못한 아키텍처는 도메인 논리를 흐리며 기민성을 떨어뜨리고 제품 ..

클린코드 2022.06.27

7장~10장

7장 - 예외처리 오류가 발생하면 예외를 던져라! try문에서 실행하는 메소드를 정의할 때 예외를 throws하는 형식으로 코드를 작성한다. try-catch-finally문을 작성하여 프로그램 안에다 범위를 정의하자. 강제로 예외를 일으키는 테스트 케이스를 작성한 후 테스트를 통과하게 코드를 작성하는 방법을 권장한다. 예외를 던질 때 로깅을 하는 것이 좋다. 외부API를 사용할 때 감싸기 기법(Wrapper 사용)를 쓰는 것이 좋다. null을 반환/전달하지 말아라. 8장 - 경계 외부 코드를 내 코드에 깔끔하게 통합하는 방법 Generics 사용하는 것도 좋지만 사용자에게 불필요한 기능까지 제공한다는 단점이 있다. 경계 인터페이스를 다른 클래스 안으로 숨겨서 공개 API의 인수로 넘기거나 반환값으로 ..

클린코드 2022.06.02

[그로쓰][MariaDB/Mysql][Spring boot] DB에 저장한 Json 데이터 Spring boot에서 불러와서 사용하기, PostMapping으로 RequestBody에 Json 받아서 사용하기 - Spring boot에서 Json 활용하기

서론 이전편에서 MariaDB에 Json 데이터를 저장하였습니다. 저희 프로젝트에서는 사용자가 원하는 문학작품을 원하는 글씨체를 선택하여 전자 필기를 연습하도록합니다. 따라서 사용자가 글씨를 썼을 때 교본의 글씨와 분석하는 과정이 필요합니다. 그러므로 DB에 교본 글씨 분석 결과를 Json 형태로 저장하였고 사용자의 글씨를 json 형태로 PostMapping으로 받도록 설계하였습니다. 본론 1단계: 전달받을 Json 데이터 형식 파악하기 전달받을 Json 데이터 형식은 아래와 같습니다. json형식과 array 형식이 합쳐져 있는 복잡한 형태입니다. (음절: x좌표, y좌표, 가로길이, 세로길이, 중심점의 y좌표 / 음소: [한음절의[x좌표, y좌표, 가로길이, 세로길이]]) [ { "syllable"..

졸업프로젝트 2022.05.16