💻IT 19

[HTTP완벽가이드] 캐시

캐시 불필요한 데이터 전송을 줄임 네트워크 병목을 줄임 원서버 부하 감소 거리로 인한 지연 줄임 1. 불필요한 데이터 2. 대역폭 병목 3. 갑작스런 요청쇄도 4. 거리로 인한 지연 빛의 속도 그 자체가 유의미한 지연 발생 5. 적중과 부적중 캐시 적중 (cache hit), 캐시 부적중(cache miss) 1) 재검사 신선도 검사 캐시된 사본이 충분히 오래된 경우에만 재검사 원서버에 작은 재검사 요청 304 not modified 이럴땐 순수 캐시 적중보다 느리겠네. 다만 캐시 부적중 보다는 빠름 (근데 재검사 해서 신선하지 않을 경우에는 더 느린거 아닌가) If-Modified-Since 헤더 겟요청 호출 시 보냄 304는 해당 캐시된 사본 사용 404는 서버객체가 삭제된 케이스로 캐시는 사본삭제 ..

💻IT 2023.10.16

[HTTP 완벽가이드] TCP 커넥션 관리

1. TCP 커넥션 브라우저가 TCP 커넥션을 통해 웹서버에 요청을 보내는 순서 모든 HTTP 통신은 TCP/IP 를 통해 이루어진다. 1) URL에서 호스트명 추출 2) 호스트명에 대한 IP 주소 추출 3) 포트 번호 추출 4) IP와 Port로 TCP 커넥션 생성 5) HTTP 요청 보냄 6) HTTP 응답 수신 7) 커넥션 끊기 - TCP 커넥션은 인터넷을 안정적으로 연결 - HTTP에 신뢰할 수 있는 통신 방식 제공 - 순서에 맞게 정확히 전달 TCP 데이터 전송 방식 세그컨트 단위로 데이터 스트림을 나누고, 세그컨트를 IP패킷에 담아서 인터넷을 통해 데이터 전달 - IP 패킷 구성요소 IP패킷 헤더(IP정보), TCP 세그먼트 헤더(포트번호, 체크섬), TCP 데이터 조각(데이터) 유일한 TCP..

💻IT 2023.08.31

[git] git 헷갈리는 부분 정리

git을 혼자만 쓰다보니 쓰는 기능이 한정되어 있고, 직전 실무는 SVN을 썼고 브랜치 전략이란게... 없었다. 아주 오래전 git flow 를 경험해본적이 있지만 잘 기억이 나지 않아 한번 정리해보았다. git master branch의 default namemaster vs main 예전에는 master로 default name이 사용됨 요즘에는 main이 default name으로 생성됨 origin : remote repository url을 참조하기 위한 alias같은 것. remote: origin이 참조하는 remote repository에 특정 커맨드를 수행하기 위해 사용하는 커맨드 pull과 fetch의 차이pull: remote repository의 내용을 가져와 자동 병합 (fetch..

💻IT 2023.04.23

[Kotiln] No default constructor for entity

문제엔티티 인스턴스 생성 시 발생하는 기본 생성자 없음 오류 기존 Java + spring boot 조합에서는 lombok을 설치해서 @NoArgsConstructor 어노테이션 사용. Kotlin에서는 dataClass를 지원하여 lombok의 대다수의 기능을 대체. lombok 사용 안하고 어떻게 해결? 해결 kotlin-jpa plugin 설치하면 @Entity @Embeddable @MappedSuperclass 의 기본 생성자 자동 생성 plugins { kotlin("plugin.jpa") version "1.6.10" }

💻IT 2023.03.27

[클라우드 네이티브] 클라우드 네이티브 기술이란?

클라우드 네이티브의 정의 클라우드 네이티브를 설명하기에 앞서 과거의 어플리케이션 구축 방식을 살펴 보면, 차근차근 단계를 밟아나가는 워터폴 방식과 하나의 덩어리로 이루어지는 모노리식 구조와 온프레미스 방식으로 시스템을 구축해 왔다. 그러나 클라우드 시대가 도래함에 따라, 많은 시스템의 인프라가 클라우드를 전환이 되었다다. 이 때 주로 사용한 마이그레이션 방법이 리프트 앤 쉬프트 방식이다. 말 그대로, OS, 데이터, 애플리케이션을 그대로 클라우드로 옮기는 것을 의미한다. 이 방식은 어플리케이션 관점에서는 큰 변화가 없기 때문에, 클라우드가 제공하는 리소스 활용의 유연성과 확장성의 이점을 활용하는데는 한계가 있다. 그래서 나온 개념이 바로 클라우드 네이티브이다. 클라우드 네이티브란 클라우드가 제공하는 장점..

💻IT 2022.04.07

[jqxGrid] cellsrenderer not working (callback function not called)

문제 jqxGrid cell을 커스텀하게 render할 필요가 있어서, column property에 cellsrenderer를 추가하여 콜백 함수를 설정 그런데 별짓 다 해봐도 cellsrenderer로 설정한 콜백함수가 호출되지 않음 해결 cellsformat, cellclassname, cellalign 등등 property를 하나씩 빼보면서 테스트 해봄. 결국 type='number' 제거하니 호출되는 것 확인. When you want to use "cellsrenderer" property, don't use "type" property at the same time.

💻IT 2022.01.27

[Java] Java 8 Method Reference (메소드 참조)

메소드 참조 (Method Reference) 메소드 참조는 람다 표현식의 특별한 타입중 하나이다. 이미 구현되어 있는 메소드를 참조함으로써, 람다식을 좀 더 심플하게 만들 때 사용된다. 4가지 타입의 메소드 참조가 있다. 1. 정적 메소드 참조 문법 ContainingClass::staticMethodName 정적 메소드가 포함된 클래스::정적 메소드명 예제 // 람다식으로 list의 원소 절대값 만들기 List list = Arrays.asList(1, -5, 2, -7, -3); list.stream().map(num -> Math.abs(num)) .forEach(num -> System.out.println(num)); // 정적 메소드 참조로 변경 list.stream().map(Math::a..

💻IT/Java 2021.12.12

[Java] Java 8 Functional Interface

Functional Interface Functional Interface들은 java.util.function 패키지에 포함되어 있으며 람다 표현식이나 메소드 참조를 위한 target type을 제공한다. Functional Interface는 인터페이스이면서 내부에 추상 메소드를 한 개만 가진다. 해당 package 내에 많은 Functional interface가 존재하지만, 그 중에서도 중요한 4가지의 Functional interface에 대해서 알아보고자 한다. (Predicate, Function, Consumer, Supplier) Predicate Predicate는 인자를 받아서 true나 false를 리턴한다. @FunctionalInterface public interface Pre..

💻IT/Java 2021.12.10

[Java] Java 8 Optional

참고 https://www.oracle.com/technical-resources/articles/java/java8-optional.html https://www.baeldung.com/java-difference-map-and-flatmap NullPointerException !? 개발을 하면서 많이 경험했던 Exception은 아마 NullPointerException 이 아닐까 싶다. 위와 같은 모델 구조가 있다고 가정했을 때, 차에 포함된 네비게이션의 버전을 알고 싶다. String version = computer.getNavigation().getVersion(); Car에서 Navigation은 옵션 중 하나이다. 만약 Navigation이 없는 차라면 해당 코드 호출 시 NullPoin..

💻IT/Java 2021.12.09

[Jira][Agile] Initiative, Epic, Story, Task 차이

참고 https://www.atlassian.com/ko/agile/tutorials/epics https://www.atlassian.com/ko/agile/project-management/epics Epic, Story, Task ? Epic 완료 하기 까지 긴 시간이 필요하거나 몇 번의 스프린트가 요구되는 큰 업무 덩어리 여러 개의 스토리로 또는 태스크로 쪼개질 수 있음 Story 유저 스토리로 불리며, 엔드 유저의 관점에서 쓰여진 간단한 요구 사항 스토리는 하나의 심플한 이야기라고 할 수 있음 연관된 스토리들이 모여서 하나의 에픽을 생성 Task? (Task > Sub Task) 스토리를 완료하기 위해 개발자가 작업해야 하는 단위 작업 Example A라는 회사에서 로켓 발사를 추진할 계획이며,..

💻IT 2021.12.06