본문 바로가기

분류 전체보기

(125)
계층형 아키텍처와 컨트롤러 코드프레소 Java 웹 개발 체험단 활동 중 코드프레소 이러닝 강의 수강 - Spring Boot 웹 개발 입문 코드프레소 URL: https://www.codepresso.kr/ SW 아키텍처 건축을 할 때 설계도를 그려서 건물이 어떻게 지어질지 구상한다 SW도 마찬가지로, 실제 코드 개발 전에 최종 SW가 되어야 할 모습을 설계한다 SW 아키텍처란, SW의 구조를 정의한 것으로 SW를 구성하는 주요 요소들과 요소들의 관계를 정의한 것이다 SW 아키텍처 = SW 설계도 SW 아키텍처/디자인 패턴 패턴 : 되풀이되는 사건이나 물체의 형태로, 예측 가능한 방식으로 되풀이 된다 우리가 만드는 SW도 이전의 수많은 사람들도 만들고 고민했던 유형일 가능성이 높다 따라서 아키텍처/디자인 패턴이란, 특정 상황의 문..
처음 시작하는 SQL 프로그래밍 코드프레소 Java 웹 개발 체험단 활동 중 코드프레소 이러닝 강의 수강 - 처음 시작하는 SQL 프로그래밍 코드프레소 URL: https://www.codepresso.kr/ MySQL 소개 데이터베이스 소개 데이터베이스란 무엇인가? 데이터는 다양한 방법으로 관리 가능 (파일, 엑셀 등) 여러 사람이 공유하여 사용할 목적으로 통합하여 관리되는 데이터의 집합 자료 항목의 중복을 없애고 자료를 구조화하여 저장함으로써 자료 검색과 갱신의 효율을 높임 단순 파일로 데이터를 관리하는 것이 서류 더미라면 데이터베이스는 잘 정리 된 캐비닛 ​ DBMS Database Management System 데이터베이스를 관리하기 위한 프로그램 DBMS의 종류 (RDBMS) - MySQL, Oracle, PostgreSQL..
[Spring Boot + Security] @PreAuthorize로 토큰 확인하기 웹 애플리케이션을 개발하다 보면 로그인한 계정의 정보를 보여주는 마이페이지 등을 구현해야 할 때가 생긴다. 그런데 다른 계정의 토큰을 가진 사람이 여기에 접근하면 보안상 문제가 있기 때문에 컨트롤러 혹은 서비스에서 토큰 내부의 ID 값과 요청하는 ID 값을 확인하는 로직을 넣어주어야 한다. 문제 인식: 위처럼 요청하는 ID가 발급된 토큰 내부의 ID값과 일치하는지 확인하는 코드를 비즈니스 로직에 추가해주어야 한다. 그런데 비즈니스와는 상관없는 관심사 코드가 매번 들어가야 하므로 응집도가 떨어지는 단점이 있었다. 그래서 몇 가지 방법을 생각해봤다. 방법 1: token을 발급해주는 tokenProvider Bean 내부에서 검증해주는 로직을 작성하여 컨트롤러 or 서비스 내부에 넣는다. -> 처음에 이 방..
SW 유지보수성 향상을 위한 Clean Code 코드프레소 Java 웹 개발 체험단 활동 중 코드프레소 이러닝 강의 수강 - 실무자가 알려주는 Git 활용한 프로젝트 관리 코드프레소 URL: https://www.codepresso.kr/ Clean Code에 대한 서로 다른 시각 코드의 품질은 매우 주관적일 수 있는 주제이기 때문에, 개인마다 Clean Code의 기준이 다를 수 있다 개개인마다 좋은 코드에 대한 서로 다른 정의와 수준을 갖고 있으며, 갖고 있지 않기도 하다 SW는 다수의 개발자들이 협업하여 만들기 때문에 코드 품질, SW 품질에 대한 서로 다른 시각은 품질 향상의 걸림돌이 된다. 바라보는 시각이 다르기 때문에 표준이나 엄격한 정의는 없지만, 대가들의 아이디어에서 힌트를 얻을 수 있다. 왜 Clean Name이 중요할까? 우리는 개발..
Java의 static method는 왜 오버라이딩 되지 않는가 Java Static Method는 왜 오버라이딩 되지 않는가? static 키워드로 선언한 대상들은 JVM의 method 영역 (static 영역)에 들어간다. new 키워드로 선언한 대상들을 JVM의 heap 영역에 들어간다. static method는 객체의 인스턴스와 연결되지 않고, 모든 인스턴스가 method 영역을 통해 공유하는 구조이기 때문에 동적 바인딩을 수행할 수 없다. (method 영역도 마찬가지) 그렇다면 static method는 왜 사용하는가? 사실 static method는 객체지향 관점에서 별로 좋지 못한 설계이다. 객체들이 메시지로 주고 받는 컨셉이 static method는 전역적으로 공유되기 때문에, 성립하지 않기 때문이다. 그럼에도 사용하는 이유는 내 기준이지만 클래스..
[Java 프로그래밍 초급] 객체지향 기본 개념 코드프레소 Java 웹 개발 체험단 활동 중 코드프레소 이러닝 강의 수강 - 실무자가 알려주는 Git 활용한 프로젝트 관리 코드프레소 URL: https://www.codepresso.kr/ SW 개발 방법 단계 요구사항 수집 요구사항 분석 고수준 설계 상세 설계 구현 테스트 SW 개발 방법론 구조적 방법론 정보공학 방법론 객체지향 방법론 컴포넌트 기반 방법론 애자일 방법론 객체 지향 프로그래밍(Object Oriented Programming) 데이터와 데이터에 대한 연산을 수행하는 코드를 그룹화 한 객체를 중심으로 SW를 설계 개발하는 패러다임 시스템의 행위보다, 시스템에 참여하고 책임을 갖는 객체가 무엇인지에 주목 다수의 객체가 각자의 역할을 하고, 객체 간에는 메세지를 주고 받으며 전체 시스템을 ..
[실무자가 알려주는 Git 활용한 프로젝트 관리] Git 브랜치의 이해와 활용 코드프레소 Java 웹 개발 체험단 활동 중 코드프레소 이러닝 강의 수강 - 실무자가 알려주는 Git 활용한 프로젝트 관리 코드프레소 URL: https://www.codepresso.kr/ 1. Git 브랜치 브랜치 (branch) 본래의 소스코드로 부터 파생한 독립적인 작업 공간 최신 커밋을 가리키는 일종의 포인터이다. 매우 가볍다. 생성, 이동, 병합 (merge)이 매우 쉽다. 병렬적으로 작업하다 보면 흐름이 동기적으로 진행되지 않기 때문에 이를 관리할 수 있는 도구가 필요하다. Git에선 브랜치가 해당 기능을 수행한다. 브랜치의 개념부터 알아보자. HEAD 현재 브랜치를 가리키는 일종의 포인터 현재 브랜치의 마지막 커밋에 대한 스냅샷 브랜치를 분기하게 되면 해당 브랜치 이름으로 HEAD에서 갈라..
[코드프레소 체험단] 처음 시작하는 Java 프로그래밍 코드프레소 Java 웹 개발 체험단 활동 중 코드프레소 이러닝 강의 수강 - 처음 시작하는 Java 프로그래밍 코드프레소 URL: https://www.codepresso.kr/ 프리미엄 IT 교육 서비스 - 코드프레소 www.codepresso.kr Java 언어 특징 1. Write Once Run Anywere: 작성한 코드는 JVM이 설치된 곳이라면 어디에서든 돌릴 수 있다. 2. Class를 기본 단위로 구성된다. 3. 자동화된 메모리 관리, Garbage Collertor가 사용되지 않는 메모리자원을 회수 C/C++의 문제점, 플랫폼 의존성 컴파일된 프로그램을 다른 아키텍처에서 돌릴 수 없다. Bytecode와 JVM Java로 컴파일된 결과물을 Bytecode라 하는데, JVM이 설치된 곳이..
[코드프레소 체험단]Git입문 - 이론 코드프레소 Java 웹 개발 체험단 활동 중 코드프레소 이러닝 강의 수강 - 실무자가 알려주는 Git 입문 코드프레소 URL: https://www.codepresso.kr/ 프리미엄 IT 교육 서비스 - 코드프레소 www.codepresso.kr 이 글은 코드 프레소 Java 웹 개발 체험단 활동 중 실무자가 알려주는 Git 입문 강좌를 기반으로 작성하였습니다. Git이란? 협업 도구, 소스의 형상 관리를 위한 tool, 무료 소스 관리 시스템이다. Git을 활용하여, 로컬에서 자신의 개발 소스에 대한 관리가 가능하고 영구적인 백업과 다양한 협업이 가능하도록 한다. Git의 목표 1. 빠른속도 2. 단순한 구조 3. 비선형적 개발 4. 완벽한 분산 5. Linux 커널과 같은 대규모 프로젝트에 유용 G..
SpringBoot 중요한 설정 숨기기 스프링부트를 사용하여 개발하다 보면 여러 property들을 관리할 일이 생긴다. github와 같은 오픈된 저장소를 사용할 때 중요한 시크릿 키들을 같이 올리면 탈취당할 우려가 있다. 따라서 이러한 설정들을 숨기기 위해 내가 사용한 방법을 정리하고자 한다. 프로퍼티 우선 순위 1. 유저 홈 디렉토리에 있는 spring-boot-dev-tools.properties 2. 테스트에 있는 @TestPropertySource 3. @SpringBootTest 애노테이션의 properties 애트리뷰트 4. 커맨드 라인 아규먼트 5. SPRING_APPLICATION_JSON (환경 변수 또는 시스템 프로티) 에 들어있는 프로퍼티 6. ServletConfig 파라미터 7. ServletContext 파라미터 ..