분류 전체보기

    [Article] 구글과 빙

    How search engines make money and why being the default search engine matters | Digital Watch Observatory A critical question arises about the underlying business model of online search engines like Google, Bing, Baidu, Yandex, and Yahoo. dig.watch 나도 항상 검색을 위해 구글을 이용했다. 하지만 요즘 검색을 해도 잘 안나오는 정보들은 chatgpt를 통해 물어보기도 한다. 최근 삼성이 기본 검색 공급자로 구글대신 빙을 검토하고 있다. chatgpt가 가져온 엄청난 효과이다. 검색이란 사용자가 원하는 정보를 빠르..

    [정리] REST API

    REST는 API에 대한 조건을 부과하는 소프트웨어 아키텍처 스타일이다. REST는 REpresentational state Transfer의 약자로 직역하면 "대표 상태 전송" 이다. 서버에서 클라이언트가 요청의 상태를 파악할 수 있게 하는게 핵심이다. REST는 아키텍쳐 스타일이다. 스타일은 제약조건의 집합인데 REST에서도 제약조건들이 몇가지 있다. 그중 uniform interface에 대해서 말하려고 한다. 1. Identification of resources REST는 기본적으로 리소스를 기반으로 URI를 설계한다. 예를 들면 유저의 정보를 받아오는 URI를 설계한다고 한다면 혼자서 개발하는 경우 어떤 URI를 쓰든 상관없다. /1 /user /data 위 3개 중 아무 URI로 해도 나만 ..

    [정리] Http Method 정리

    HttpMethod란 클라이언트와 서버사이에 이루어지는 요청과 응답데이터를 전송하는 방식을 일컫는다. 특히, 클라이언트가 서버에게 해당 URI에 요청을 보낼때 이러한 방식으로 요청을 보냅니다~ 라고 알려주는 것이다. 1. HttpMethod 종류 (1) GET 특정 리소스 표시 (읽기) (2) POST 특정 리소스에 엔티티를 제출할때 사용 (추가) (3) PUT 목적 리소스를 요청 데이터로 바꾼다. 데이터가 없다면 추가한다. (전체 수정 or 추가) (4) PATCH 리소스의 부분만을 수정하는데 사용한다. (부분 수정) (5) DELETE 특정 리소스 삭제 (6) HEAD GET method와 같지만 Body를 포함하지 않는다. (7) OPTIONS 목적 리소스의 통신을 설정하는데 사용, 내가 어떤 me..

    [Article] Ransomware

    ScanSource suffers a cyberattack | Digital Watch Observatory The attack affected the company's operations in North America and Brazil. dig.watch 미국의 큰 클라우드 기업인 ScanSource가 랜섬웨어 공격을 받았다고 한다. 현재 피해규모를 산정하고 있지만 랜섬웨어 공격을 한 사람을 밝히지 못했다고 한다. 랜섬웨어 공격이란 피해자의 데이터를 암호화하여 '암호화를 풀고싶다면 돈을 내라' 라고 하는것이다. 랜섬웨어는 주로 이메일이나 신뢰하지 않은 링크에서 파일 다운로드와 같은 경로로 공격한다. 랜섬웨어를 방지하려면 다음과 같은 방법이 있다고 한다. (1) 신뢰할 수 없는 링크 클릭 금지 (2) ..

    [Spring Boot] 어노테이션 정리

    @SpringBootApplication Spring Boot를 자동으로 실행시켜주며 @ComponentScan을 통해 Component를 Bean으로 등록시킨다. @EnableAutoConfiguration을 통해 미리 정의해둔 설정파일을 Bean으로 등록시킨다. @ComponentScan @Component, @Service, @Repository, @Controller, @Configuration 이 붙은 빈들을 찾아서 Context에 빈을 등록시켜준다. @Component 생성한 클래스를 Bean으로 등록시킬때 사용한다. @Bean 개발자가 컨트롤 불가능한 외부 라이브러리를 Bean으로 등록할때 사용한다. @Controller Controller로 사용되는 어노테이션이다. @Service 비즈니스..

    [Spring Boot] Setter vs Constructor vs Builder

    Spring boot로 코딩을 하다보면 객체의 값을 변경해줘야 할때가 있다. 방법은 크게 Setter, 생성자, Builder 3가지로 나뉜다. 1. Setter (자바빈즈 패턴) 자바 개발자들은 setter를 지양하라고 한다. 그럼 왜 setter를 지양하고 새로 객체를 생성해야 하는 생성자나 Builder를 사용해야 할까.. (1) 일관성 먼저 setter를 사용하면 언제든 값을 바꿀수 있다는 말이 된다. 다시말해 값을 바꿀수 없는 불변한 객체를 만들지 못한다는 말이 된다. (2) 가독성 만약 객체의 속성이 엄청 많아서 엄청나게 많은 setter가 있다고 가정한다. 그러면 객체만다 일일히 setName, setAge, ~~~ 을 계속 해주다보면 코드가 아주 더러워지고 나중엔 빠진 set 메소드를 찾고..