분류 전체보기 80

[프로그래밍] 절차지향과 객체지향 프로그래밍이란

절차지향 프로그래밍은 물이 위에서 아래로 흐르는 것처럼 순차적인 처리를 중요시 하는 프로그래밍 기법이다. 절차지향 프로그래밍(Procedural Programming) 프로그램을 일련의 절차나 순서로 보는 방식 데이터와 그 데이터를 조작하는 함수를 별도로 생각하며 C 언어가 대표적인 절차지향 언어이다. 장점 코드의 흐름을 쉽게 이해할 수 있고, 작성이 간단하다 컴퓨터의 처리구조와 유사해 실행속도가 빠르다. 단점 데이터와 함수가 분리되어 있기 때문에 대규모 프로그램애서 코드 관리가 어려울 수 있다. 객체지향 프로그래밍(Object-Oriented Programming) 실세계의 사물을 객체라는 개념으로 추상화하고, 이러한 객체들이 상호작용하는 것으로 프로그램을 구성하는 방식이다. 객체는 상태(속성)와 행동..

CS 2023.09.29

[프로그래밍] 동기와 비동기 방식의 차이점

동기와 비동기는 작업들이 어떤 순서로 실행되는지를 설명하는 개념이다 동기 동기 방식은 한 작업이 완료된 후에 다음 작업이 시작된다(작업들 사이에 순서가 있다) 특정 데이터 요청 후 해당 데이터가 도착할 때까지 기다린 뒤 이후 작업을 진행하는 방식 장점 코드의 흐름이 직관적이고 이해하기 쉽다(작업이 순차적으로 실행되어 읽기 쉽다) 디버깅이 비교적 간단하다. 코드의 흐름이 단순하기 때문 단점 앞선 작업의 지연 시간 동안 프로그램은 대기 상태에 머무르게 된다. (대기시간 연장) UI가 멈추거나 응답하지 않는 형식을 초래할 수 있다. (동기 작업이 오래 걸릴 경우) 비동기 비동기 방식은 여러가지 작업들이 동시에 실행되며 특정 순서를 따르지 않는다. 특정 데이터 요청 후 바로 다음 로직을 실행한다 장점 앞선 작업..

CS 2023.09.29

[프로그래밍] 블로킹과 논블로킹의 차이

블로킹과 논블로킹의 개념은 주로 I/O 작업에서 중요하게 쓰인다. 블로킹(Blocking): 블록된 상태를 의미한다 블록된 상태란 특정 연산이 종료될 때까지 프로그램 실행이 멈춘 상태를 말합니다. 다른 함수로 제어권을 넘겨주어 제어권이 돌아오기까지 기다립니다. 예시: 파일을 읽어오는 함수가 있을 경우 파일을 모두 읽어와야만 다음 함수를 실행 시킬 수 있음 논블로킹(Non-blocking): 논블록 상태를 의미한다. 어떤 함수가 호출되었을 때 그 결과를 기다리지 않고 바로 반환하는 것을 말합니다. 다른 함수를 호출하지만 제어권은 넘겨주지 않아 계속 진행됩니다. 예시: 위 예시와 다르게 파일 읽기를 요청한 후 즉시 제어권을 반환하여 다른 일을 진행할 수 있다.

CS 2023.09.29

시큐리티 antMatchers() 사용자 권한 null로 들어오는경우

시큐리티 로그인 회원가입 기능을 모두 마친 후 시큐리티 세부 설정을 하려고 시도했다. 보통 아래와 같이 사용한다. .antMatchers("/uesr/**").hasRole("USER") .antMatchers("/admin/**").hasRole("ADMIN") 이처럼 설정한 USER 권한과 ADMIN 권한을 보고 시큐리티에서 처리해 줘야 하는데 저 권한을 비교하는 값이 계속 null 값이 들어가 크기가 0으로 표시되었다. 권한이 없기 때문에 이런 경우 시큐리티가 권한을 차단한다. 해결 방안은 사소한 것이지만 UserDetails를 implements 할 때 기본값인 null 그대로 적용해서 났던 문제였다. 이렇게 바꿔주니 결과를 잘 받아서 시큐리티가 처리해 주었다. 이런 문제가 있었는데 인터넷에도 나..

카테고리 없음 2023.09.20

[시큐리티]Spring Security 주요 기능

스프링 시큐리티는 자바 기반의 웹 애플리케이션 보안을 위한 포괄적인 프레임워크다. 인증 사용자 이름과 비밀번호를 사용한 폼 기반 인증 소셜 미디어 로그인 권한 부여 URL 경로에 따른 접근 제어 메소드 수준의 접근 제어 보안 설정 Java Config를 사용한 보안 설정 세션 관리 세션 고정 공격 방지 및 동시 로그인 제어 Remember-Me 인증 Remember-Me 구성 및 유효기간 설정 LDAP 지원 LDAP 서버와의 연동 OAuth 지원 OAuth 클라이언트 등록 및 구성 http.formLogin() .loginPage("/login") .defaultSuccessUrl("/dashboard") .failureUrl("/login?error=true"); .sessionFixation().ne..

Spring 2023.09.20

[Refactoring]리팩토링이란?

리팩토링이란 소프트웨어 공학에서 결과의 변경 없이 코드의 구조를 재조정함을 뜻합니다. 가독성을 높이고 유지보수를 편리하게 만드는 것 사용자가 보는 화면은 그대로 두면서 내부 로직이나 구조를 개성하는 행위를 유지보수라고 부른다 버그를 없애거나 새로운 기능을 추가하느 행위는 리팩토링이라 하지 않는다. 리팩토링의 목적 코드 가독성 향상 코드를 읽기 쉽게 변수명, 함수명, 클래스 구조 등을 개선하여 코드의 의도를 명확하게 전달한다 유지보수성 개선 중복 코드 제거, 함수 분리, 클래스 분리 등 버그 수정 및 안정성 향상 복잡한 로직을 단순화하거나 오류가 발생할 가능성이 있는 부분을 개선 확장성과 재사용성 강화 모듈화와 추상화를 통해 소스 코드의 재사용성과 확장성을 높여 유연한 구조를 구축한다 성능 최적화 중복코드..

카테고리 없음 2023.09.19

스웨거 데이터 Request가 null로 들어오는 문제

@ApiModelProperty(value = "가게 주소 상세 입력 필드", dataType = "String", name = "addressDetail") @JsonProperty(value = "address_detail") private String addressDetail; 해당 리퀘스트 파일을 만들어서 데이터를 가져오는 중 로직에 문제가 없음에도 null값이 나오는 문제가 있었다. 알고보니 스네이크 @ApiModelProperty에 name부분 이름을 스네이크케이스로 적어서 null값이 들어오고 있었다.

카테고리 없음 2023.09.14

[시큐리티] Jwt토큰 null 예외처리

프론트에서 테스트시 jwt토큰이 없으면 500에러가 나는 현상을 잡으려고 했는데 자꾸 안잡혔다 계속 찾아보다 보니 jwt는 필터단에서 걸러지는 부분이라 내가 작성했던 커스텀 에러가 못잡는 거였다. 그래서 throw new JwtException("토큰이 없습니다."); 이런 JwtException을 적용하니 에러를 잡아서 토큰Exception에 잘 넣어줬다 이렇게 토큰 예외처리도 했으니 커밋해야지~~ 하면서 스웨거 테스트를 했다 어머? 왠걸 로그인하려는데 이것도 시큐리티 필터가 막아버렸잔아? { "path": "/api/users/login", "error": "Unauthorized", "message": "토큰이 없습니다.", "status": 401 } 아 어떻게 해야하지 일단 급하게 null 체크..

Spring 2023.09.05