Skip to content
Bible, Lee, Data

Bible, Lee, Data

Faith, software, data, and everyday life.

EngineeringAll posts

Engineering

What Happens When Java Creates an Object?

Creating an object in Java takes only one line of code.BankAccount account = new BankAccount("100-001", 100_000);At first glance, the process seems straightforward: new creates an object, and the constructor assigns the arguments to its fields.That explanation is good enough for a simple class. It becomes incomplete, however, as soon as inheritance, static fields, field initializers, and ..

Engineering

What Do Classes and Objects Really Represent in Java?

A class is a blueprint, and an object is a concrete thing built from that blueprint.The analogy is useful. It explains why one class can be used to create many objects, just as one design can be used to manufacture many cars.But the analogy only takes us so far.Once we begin building real applications, more difficult questions appear:Which values belong together inside one object?Should an objec..

Engineering

What Does a C Pointer Store, and What Does Dereferencing Actually Change?

The most confusing part of learning pointers is rarely the amount of code involved. The example above contains only two lines, yet x, &x, p, *p, and &p all mean different things.Trying to memorize each expression as an isolated syntax rule tends to work only until pointers appear alongside arrays, functions, or structures. A more reliable approach is to begin with the objects that exist in memor..

Engineering

How C Evaluates Expressions

C operators look simple at first.Addition uses +, division uses /, equality uses ==, and conditions are combined with &&. Anyone who has worked with another programming language will recognize most of these symbols.The difficulty begins when a seemingly ordinary expression produces an unexpected result.A value assigned to a double may still lose its fractional part. A comparison may claim that -..

Engineering/Backend

Can a Timed-Out POST Request Still Succeed?

While studying retry strategies, I noticed that many explanations begin with a reasonable rule: retry an operation when the failure is temporary.The rule becomes harder to apply when the client cannot tell whether the operation failed.Suppose a client sends a POST request to create an order. The request times out before a response arrives. Retrying seems like the obvious next step. But what if t..

Engineering/Frontend

[TypeScript] Jotai: 상태 관리 라이브러리

오늘날 웹 애플리케이션은 효과적으로 데이터를 관리하고, 반응형 사용자 경험을 제공하기 위해 점점 더 복잡해지고 있다. 이에 따라 애플리케이션의 성능과 유지보수성을 높이기 위해 체계적인 상태 관리가 필수적이게 되었다. 특히 React와 같은 프레임워크를 사용할 때 컴포넌트 간의 데이터를 효율적으로 관리하고 일관된 상태를 유지하려면 상태 관리 라이브러리를 활용할 필요가 있다. 💡Jotai란?Jotai는 일본어로 원자(atom)를 의미하는 이름에서 유래했으며, React 애플리케이션에서 가장 작은 단위의 상태를 관리할 수 있도록 설계된 상태 관리 라이브러리이다. Jotai는 Recoil과 비슷한 Atom 기반의 상태 관리 라이브러리이며, 가볍고 쉽게 전역 상태를 관리할 수 있다. 원자 (atom)원자는 상태..

Engineering/Frontend

[TypeScript] Zod: 타입 검증 라이브러리

TypeScript로 프로젝트를 개발할 때, 데이터 유효성 검증은 필수적인 작업이다. 특히 클라이언트와 서버 간의 데이터 통신, 사용자가 입력한 폼 데이터, API 응답 데이터를 검증하는 과정에서 이 작업은 매우 중요하다.TypeScript는 컴파일 시점에서의 타입은 검증하지만, 런타임에서 발생하는 에러는 방지하기 어려워 별도의 데이터 검증 라이브러리가 필요하다. 이때 사용할 수 있는 것이 Zod이다. 💡Zod란?Zod는 TypeScript 기반의 스키마 선언 및 데이터 검증 라이브러리로, 데이터가 특정 형식과 구조를 따르는지 검증하기 위해 설계되었다. Zod는 데이터 유효성 검증과 타입 안전성을 강화하기 위해 만들어졌다. Zod를 사용하면 TypeScript와 함께 타입 정의와 데이터 검증을 손쉽게..

Engineering/Frontend

[JavaScript] es-toolkit: 유틸리티 라이브러리

JavaScript 개발에서 자주 사용되는 함수들을 모아 간편하게 제공하는 유틸리티 라이브러리는 생산성을 높이고 코드 품질을 개선하는 데 큰 도움이 된다. es-toolkit은 JavaScript API를 활용해 높은 성능과 작은 번들 사이즈를 제공하는 유틸리티 라이브러리이다. 💡es-toolkit란?es-toolkit은 토스에서 개발한 유틸리티 라이브러리로, 자바스크립트 개발에서 자주 사용되는 다양한 유틸리티 함수를 보완하고 확장하였다. 이 라이브러리는 lodash와 같은 기존의 유틸리티 라이브러리와 비슷한 기능을 제공하지만, 최신 JavaScript API를 활용하여 최대 97% 더 작은 번들 사이즈와 2~3배 빠른 속도를 보유하고 있다. 특히 TypeScript 타입을 내장하고 있어, 타입 안전성..