1. 자바의 메모리 영역자바의 메모리 영역은 크게 메서드, 스택, 힙 영역으로 나눌 수 있다.하나의 클래스로 여러 개의 인스턴스를 생성하면, 인스턴스의 필드 값은 힙 영역에 저장되고 메서드는 공통으로 사용하도록 메서드 영역에서 관리되고 실행된다.스택은 메서드 호출과 지역 변수를 관리할 때 사용한다.멤버 변수의 종류인스턴스 변수와 클래스 변수로 나눠진다.- 인스턴스 변수: 힙 영역- 클래스 변수(정적 변수 또는 static 변수): 메서드 영역 - 클래스 변수는 `Data.count` 와 같이 클래스를 통해 접근한다. 정적 메서드정적 메서드는 객체 생성이 필요없이 메서드 호출만으로 필요한 기능을 수행할 때 주로 사용한다.유틸성 기능을 제공하는 클래스를 만들때 주로 사용할 수 있다. 같은 클래스 내부에 있..
전체 글
Material Design, HIG구글과 애플은 각각 디자인 가이드라인을 제시한다.구글은 Material Design, 애플은 HIG(Human Interface Guidelines)공통점은 디자인 원칙을 제시하고 피그마 템플릿을 제공한다.차이점은 구글은 오픈소스 형태로 컴포넌트 코드를 제공하고, 애플은 SwiftUI, UIKit, AppKit 등 애플 생태계 개발 Kit을 제공한다.개인적인 감상은 가이드의 내용은 둘 다 좋고 보기에는 구글쪽이 편했다.구글은 각 경우의 사용법에 대해 움짤 또는 이미지를 적극적으로 사용한다.애플은 줄글로 많은 양의 모범 사례를 제시해준다. 밑에서 직접 확인해보자.https://m3.material.io/components/progress-indicators/guideli..
Nextjs와 React를 쓰면서 몇 번 사용했던 useTransition에 대해 학습한 기록임.글 쓸때는 AI를 전혀 쓰지 않아서 문체가 정제된 글은 아니다. 의식의 흐름대로 작성했다.React18과 동시성useTransition은 동시성 렌더링을 적용한 React 18 버전부터 존재한 훅이다.학부 때 컴퓨터구조였나 운영체제에서 싱글코어와 멀티코어일 때 동시성과 병렬성에 대해 배웠는데 동시성은 싱글코어와 매칭된다.동시성은 자원의 제약이 있는 상황에서 여러 일이 동시에 일어나는 것처럼 하려고 일을 잘게 쪼개서 처리한다.싱글코어와 같이 일꾼(Stack)이 하나뿐인 싱글스레드인 브라우저의 V8 엔진 위에서 돌아가는 React에서는 화면을 그릴 때 어쩔 수 없이 blocking이 일어나는데, React 18에..
라기보다는자기 점검을 위해 스스로 물어본 질문들SPA, MPA 페이지 렌더링 방식의 장단점을 이해하고 적용하고 있는가?API 응답으로 받은 데이터를 잘 보여줄 수 있는가?로딩 상태를 적절히 처리할 수 있는가?에러 상태를 구분하여 설명할 수 있는가?에러 핸들링에 대한 본인의 기준이 있는가?에러를 로깅하고 있는가?에러면 다 로깅하면 되는가?에러 로그에 포함되어야 하는 정보는 어떤 것들이 있고 왜 그렇게 생각하는가?에러 발생 시 빠른 대응을 위한 알림 체계가 세워져있는가?브라우저, 홉, 서버 등 레이어별 캐싱을 적절히 활용하고 있는가?페이지 성능 측정에 사용되는 요소들을 알고 있는가?페이지 성능을 개선해본적이 있는가?이미지 최적화를 해본적이 있는가?SPA의 배포 환경을 구성할 수 있는가?MPA의 배포 환경을 ..
키워드별 간단 정리클래스객체 지향 언어인 자바의 기본 문법전공 때부터 지겹게 들어왔던 붕어빵 틀이다.붕어빵 틀로 붕어빵을 만들면 그 붕어빵은 인스턴스라고 불린다.변수의 데이터 타입 종류: 기본형과 참조형int, long, double, boolean 이런 데이터 타입이 기본형(primitive type).String, Array, Class가 참조형. 기본형은 메모리 위치에 그 데이터 값이 그대로 저장되는거고참조형은 변수에 그 데이터가 저장된 위치를 담아서 접근할 수 있게 하는 타입이다. 자바에서 대입은 항상 그 변수의 값을 복사해서 넣도록 동작한다.데이터 타입에 따라 해당 변수에 담긴 값이 기본형인지 참조형인지만 이해하면 동작은 쉽게 추론할 수 있다.2017년 당시나 JS를 배울때는 call by va..
입문타입(명시적, 묵시적 형변환)반복문조건문입출력(System.out, Scanner 클래스), 배열(1차원, 2차원, 선언 및 초기화 방법, Enhanced For Loop)메서드메서드 오버로딩메서드 이름이 같지만 파라미터의 타입(그리고 순서)을 다르게 호출하고 싶을 때 여러 종류로 메서드를 선언할 수 있는 방식오버로딩은 함수 선언, 호출 시 메서드 시그니처(함수이름 & 파라미터 타입(순서)로 식별한다. 음 재밌다 ^^
~인프라 용어는 AWS 기준임~사라지는? 유저IP브라우저에서 백엔드 API를 바로 호출하는 경우엔 HTTP Request Header에 IP가 담긴다.따라서 백엔드 ALB의 XFF 정책에 따라 그 IP를 X-Forwarded-For에 붙여주기 때문에 백엔드는 별도 작업 없이 유저 IP를 읽을 수 있다.(일반적인 SPA 환경의 경우이다) 하지만 Next.js 환경처럼 백엔드 API를 별도의 서버를 거쳐서 요청하는 경우에는 유저 요청을 전달하는 게 아니라 서버가 새로 만드는 요청이라, 백엔드에서 받는 HTTP Request Header Source IP가 유저가 아닌 NAT Gateway IP(Next.js 서버가 Private Subnet에 있는 경우로 가정)로 찍힌다. 그래서 Next.js서버에서 유저 ..
해당 끄적 글은 제가 경험한 서비스들의 일반적인 DNS 관리방식에 대해 다룹니다.나중에 이 글을 읽으며 쉽게 DNS 개념을 떠올리기 위한 스토리텔링입니다.1. 도메인 구매도메인은 가비아(Registrar)를 통해 등록한다.나는 가비아를 통해 kuma.com 을 구매했다.레지스트라(Registrar)는ICANN(국제인터넷주소관리기구)의 공인을 받아 도메인 등록을 대행하는 업체이다.최종 사용자를 대신해 도메인을 판매, 관리하며, 원하는 도메인을 직접 검색하고 구매할 수 있다.2. DNS 서버 등록 이제 .com DNS 서버에 kuma.com 레코드에 대한 라우팅 규칙을 추가해줘야하는데, .com은 미국회사인 Verisign이 관리하고있다(우리가 직접 추가할 수는 없다는 의미)개념: dns 쿼리는 상위 NS..
