목록전체 글 (41)
나는개발자니까
우리는 키라는 개념을 아주 중요하게 생각했고, 이전 글에서 키에 대해 아주 자세하게 공부해 보았다.이제 본격적으로 키 개념들을 사용해서 테이블의 관계를 정의해보자. 데이터베이스의 관계 방향관계형 데이터베이스의 관계에는 방향이 없다. 즉 양방향으로 관계를 가질 수 있다. 1. 단방향 관계우선 단방향 관계는 어떤 것이 있을까?객체 지향 프로그래밍 관점에서 Agent를 설계한다면 아래와 같을 것이다.class Agent { Long agentId; String name; List tasks = new ArrayList();}class Task { Long taskId; String name;} Agent → Task ⭕Agent는 Task 리스트로 인해 Task 객체에 접근할 수 있..
이제 개념적 모델링을 완료하였으니 논리적 모델링으로 넘어가자. 논리적 모델링논리적 모델링: 개념적 모델링을 기반으로 관계형 데이터베이스 구조에 알맞도록 변환하는 과정이다. 이 과정에서 엔티티는 테이블, 속성은 컬럼의 개념으로 변환되고, 각 테이블에 기본 키(Primary Key)와 외래 키(Foreign Key)를 정의한다. 논리적 모델링을 제대로 하기 위해 키(Key) 개념을 정확하게 짚고 넘어가자. 그냥 키 개념만 알면 되는거 아닌가?단순한 키 개념을 넘어서 키의 특징을 깊게 배우고,현대 데이터베이스 설계에서 해당 키를 어떻게 설계해야할지 제대로 알고 갈 필요가 있다.키를 어떻게 설계하느냐에 따라 빠른 요구사항 속에서 유지보수 과정이 기술 부채 덩어리가 될 수도 있고 아주 별거 아닌 일이 될 수도 있..
개념적 모델링 과정을 왜 거쳐야 할까?기획서를 봤을때, 내 머리 속에서 물리적 모델링이 어느 정도 그려지는데 왜 우리는 개념적 모델링부터 시작해야할까?혼자 가볍게 어떤것을 만들려고 한다면 상관없을 것이다. 근데 개발자는 개발 뿐만 아니면 협업이 아주 중요한 직무이다.개념적 모델링은 프로젝트 참여자(개발자, 기획자, PM 등)가 우리가 만들고자 하는 비즈니스를 모두 이해할 수 있도록 그림과 용어로 소통하여 내가 말하는 것과 상대방이 말하려고 하는 것이 일치하는지 맞추는 일련의 과정이다.따라서 프로젝트를 정의하는 아주 중요한 과정이다. 요구 사항 분석하기내가 요새 관심있는 AI Agent 서비스를 만든다고 가정하자.연습을 위해 아래와 같은 요구사항이 만들어보았다. 요구사항이 서비스는 사용자가 AI Agent..
이번 글에서는 3가지 소재를 다루려고 한다.왜 데이터베이스 설계를 공부하기로 했는지만약 잘못된 데이터베이스 설계한다면?그래서 어떤 “데이터베이스 설계 과정”을 거쳐야 하는지 데이터베이스 설계를 공부하기로 한 이유바이브 코딩과 AI 코딩이 일상이 된 시대에 풀스택 엔지니어로 일하면서, 늘 느끼는 것이 한가지가 있다.결국 프로젝트에서 가장 중요한 것은 ‘설계 과정’ 이다. 설계는 단순히 지금 기능을 구현하기 위한 과정이 아니다.이 프로젝트를 맡게 될 미래의 개발자인 나 자신을 위한 배려이자,팀과 회사가 계속해서 활용할 수 있는 지속 가능한 자산이며,장기적으로는 개발자로서의 나를 성장시키는 가장 큰 자산이기도 하다. 그래서 나는 당장의 구현보다는 프로젝트의 큰 그림을 볼 줄 아는 개발자가 되려고 항상 노력한다..
앞서 말했듯이 클로저를 이해하기 위해 변수의 유효 범위, 스코프에 대해 알아보자.스코프(scope)는 변수의 유효 범위이고 자바스크립트의 스코프는 전역 스코프와 함수 스코프가 있다. 1. 전역 스코프전역 레벨에 선언하는 것을 전역 스코프(global scope)라고 한다. 전역 스코프에서 변수를 선언하면 어디서든 호출할 수 있다. 전역 스코프와 hello 스코프 모두 global 변수에 접근할 수 있다.브라우저 환경에서는 window, Node.js 환경에서는 global 전역 객체에 전역 레벨에서 선언한 스코프가 바인딩 된다.var global = 'global scope'function hello() { console.log(globel)}console.log(global) // global scop..
이번 회사 프로젝트에서 상태관리를 Redux로 하고 있어 공식문서를 번역하면서 중요해 보이는 부분만 작성해보았다.Redux 왜 생겨났을까요?프론트엔드 개발이 복잡하고 어려운 이유는 무엇일까요? 단순한 웹 애플리케이션을 벗어나 점점 복잡한 기능이 늘어나고 있는 요즘, 웹 애플리케이션을 만들기 위해 많은 상태를 관리해야 합니다. 기존 프로젝트에서 계획에 없던 상태를 하나씩 추가해 나가 여러 상태를 관리하게 되면 어느 순간부터는 개발자 조차 상태가 언제, 왜, 어떻게 업데이트하는지 디버깅하기 어려운 시점에 도달하게 되며 버그를 재현하기 어렵습니다.이보다 근본적인 이유는 사람이 추론하기 어려운 끊임없는 변화(mutaion)와 비동기(asyncronicity)의 개념을 섞어서 사용하기 때문입니다. 이 문제를 해결..
자바스크립트 클래스란 무엇인가? 자바스크립트의 클래스란 특정한 객체를 만들기 위한 일종의 템플릿과 같은 개념이다. 따라서 클래스는 특정한 형태의 객체를 반복적으로 만들기 위해 사용하는 것이다. 자바스크립트 클래스의 코드에는 어떤 것이 있는지 하나씩 뜯어보자! 생성자 constructor는 생성자이며 객체를 생성하는 데 사용하는 특수한 메서드이다. 단 하나만 존재할 수 있으며 기본 생성자에서 별다르게 수행할 작업이 없다면 생략하는 것도 가능하다. class Car { constructor (name) { this.name = name } // SyntaxError: A class may only have one constructor constructor (name) { this.name = name } }..
자바스크립트로 코드를 작성하다보면 자주 함수 생성과 사용을 한다. 따라서 좋은 함수란 무엇인지 알아보자. 함수의 부수 효과를 최대한 억제하라 함수의 부수 효과 (side-effect) 란 함수 내의 작동으로 인해 함수가 아닌 함수 외부에 영향을 끼치는 것을 의미한다. 부수 효과가 없는 함수를 순수 함수라 하고, 부수 효과가 존재하는 함수를 비순수 함수라고 한다. 순수 함수는 언제 어디서나 어떠한 상황에서든 동일한 인수를 받으면 동일한 결과를 반환한다. 언제 실행되든 항상 결과가 동일하기 때문에 예측 가능하며 안정적이다. 그러나, 웹 애플리케이션을 만드는 과정에서 부수 효과는 피할 수 없는 요소이다. 만약 개발 중에 부수 효과가 꼭 필요하다면 리액트 관점에서 보면 부수 효과를 처리하는 훅인 useEffec..