요구사항 명세는 프로젝트를 진행하는 데 있어서 가장 중요하다고 할 수 있는데요. 그리고 개발자는 요구사항이 적힌 명세를 보고 그에 맞는 개발을 하는 것이 가장 중요합니다. 하지만 이러한 요구사항은 프로젝트 중간에도 변경이 될 수 있는데요. 이때 변경은 일부만 변경하는 세부 구현사항이 변경될 수도 있는 반면에 전체적인 구조가 변경되는 경우도 있기 때문에 주의해야 합니다. 또한 테스트 케이스를 작성(TDD)할때도 요구사항을 반영해야 합니다. 클라이언트의 요구에 따라서 요구사항을 도출을 하는데 그것이 바로 프로젝트의 시작이 됩니다. 요구사항 명세서 요구사항 명세서를 작성하는 방식으로는 기본적으로 아래 방식을 이용하는데요. Software Requirement Specification(SRS) 구현물의 기능/비..
Contribution 프로젝트는 크게 네이버와 같은 사이트, 혹은 간단한 로그인 기능과 같이 요구사항대로 결과물을 만드는 걸 프로젝트라고 합니다. 프로젝트를 만들 때 우리는 과연 코드 작성만 하는 걸까요? 프로젝트를 만들기 위한 기획, 테스트, 배포, 가이드 등등 다양한 작업도 프로젝트가 될 수 있는데요, 기여 활동도 마찬가지입니다. 코드뿐만 아니라 프로젝트에 다양하게 의견을 어필하는 것도 기여활동이 될 수 있는 것입니다. 코드 외 적 기여활동 코드 기여활동 오타수정 번역 문서 설명추가 배너 문구 수정 제안 UI/UX 제안 버그 픽스 기능 추가/수정/삭제 리팩토링 버전, 외부모듈(업데이트 / 교체) 에러메세지 리소스 테스트 케이스 추가 이렇게 기여활동에는 다양한 것들이 존재하는데요 이 기여활동에 해당되..
오픈소스를 만들기 위해 작성하는 문서들은 종류가 다양한데요. 대부분 문서들은 md 파일이나 txt 파일로 생성을 합니다. 오픈소스를 생성한다면 기본문서는 필수로 작성을 해야 하고 추가적인 문서는 선택에 따라 작성을 하면 되는 것 같습니다. LICENSE(기본) 오픈소스 라이선스 전체문서 명시를 하는 문서로 이 파일이 존재한다면 해당 프로젝트는 라이선스를 갖고 있다는 의미를 내포합니다. 보통 위치는 최상의 디렉토리에 있습니다. 관리하는 라이선스가 많다면 따로 관리하는 경우도 있습니다. READEME(추가) 보통 사용설명서로 작성되는 README에도 라이선스 관련 문서를 작성하기도 합니다. 일반적인 프로젝트 코드 목적 뿐만아니라 사용 시 주의사항도 적을 수 있기 때문이라 생각됩니다. COPYRIGHT (추가..
개발자들의 문화중에 지식을 공유하는 문화가 있는데요. 우리가 코드를 작성하다 막히는 부분 혹은 에러 난 것을 해결하기 위해 검색을 통해 해결할 수 있는 것도 바로 이 지식을 공유하는 문화 덕분이라고 생각합니다. 이러한 개발자들이 지식을 공유하는 플랫폼에는 여러가지가 존재하지만 stackoverflow, github, open source가 대표적이라고 할 수 있습니다. 그중 오늘은 오픈소스에 대해서 이야기를 해보려고 합니다. 오픈소스란? 오픈소스는 제한없이 누구에게나 공개된 소스 코드를 말하는데요, 이렇게 공개된 소스 코드를 통해 검사해주기도 하고, 수정해주기도 하는 기여자가 생기기도 합니다. 그렇다면 왜 우리는 소스코드를 공개하는 걸까요? 그 이유는 내 눈에 보이지 않던 버그나 아이디어가 다른 개발자의..
메모리의 구조 메모리는 기본적으로 코드영역 와 스택영역 힙영역, 데이터 영역으로 나뉩니다. 코드영역은 실행할 명령어들이 순서대로 쌓이고 CPU가 코드영역에서 하나씩 가져가 처리를 하는방식이고 스택영역은 기본적으로 선형 자료구조로 메모리에 들어온 데이터들의 입구와 출구가 같습니다. 때문에 후입선출방식(FILO : First In Last Out, 처음 들어온 게 가장 마지막에 나간다.)으로 동작을 합니다. 힙 영역은 컴파일 시에 메모리를 할당하는 게 아니라 코드가 실행할 때 사용자로부터 할당메모리를 입력받기 때문에 동적메모리라고도 불립니다. 데이터 영역은 전역변수와 static 변수가 저장되는 메모리 영역으로 이 메모리는 프로그램이 종료를 하게 되면 같이 소멸하게 됩니다. 메모리의 할당 일반적으로 메모리의..
프로그래밍 언어로 컴파일 언어와 스크립트 언어가 존재합니다. 우리가 작성한 코드들은 컴퓨터가 알아들을 수 있는 기계어로 번역을 해주어야 하는데요 이때 해당 번역 과정을 컴파일러가 한 경우와 인터프리터가 번역을 한경우로 나뉘는데요. 컴파일러로 번역을 한 경우 컴파일언어, 인터프린터가 번역을 한경우 스크립트언어라고 합니다. 컴파일 언어 컴파일 언어는 소스코드를 컴파일 해서 기계어를 읽어 실행시키는 언어입니다. 컴파일 언어의 특징 문법적 제약이 많아서 작성이 어렵다. 운영체제마다 사용하는 기계어가 다르다. 즉, 운영체제마다 작업을 다르게 해줘야한다. 기계어로 프로그램이 실행되어 프로그램 소스코드 유출이 어렵다. 컴파일 작업(번역 작업)은 시간이 걸리지만 이후에는 기계어를 읽는거라 실행속도가 빠르다. 스크립트 ..
동기와 비동기 동기와 비동기 개념 동기 동기는 요청한 작업을 완료했는지를 확인하여 순차적으로 처리하는 것을 말합니다. 비동기 비동기는 요청한 작업을 완료했는지 확인하지 않고 비순차적으로 처리하는것을 말합니다. 동기와 비동기 처리 순서 동기 A,B,C 요청 👉 A → B → C로 순서대로 실행 예시) A영화 예매를 하기 위해 줄을 섰는데 A가 1장, B가 100장, C가 2장을 구매하려 한다. 이때 직원이 일처리를 어떻게 하는가? A는 한 장이라서 바로 티켓을 받을 수 있다. (B와 C는 한 장만큼 기다림) B는 백장이라서 백장의 예매 처리가 될 때까지 기다렸다가 백장 티켓을 받는다. (C는 백한장만 큼 기다림) C는 마지막으로 두장 처리가 된 후 티켓을 받는다. 즉 A, B, C 순차적으로 처리하기 때문..
우리가 웹사이트를 이용하다 보면 '세션이 만료되어 로그아웃 되었습니다.' 혹은 ' 세션이 만료되었습니다. 다시 로그인 후 시도해 주세요.'와 같은 문구를 만날 수 있는데요 이는 곧 로그인이 풀렸다는 뜻이 됩니다. 인증 Authentication 인증은 곧 로그인을 이야기 합니다. 그렇다면 우리가 로그인이 필요할 때가 언제가 있을까요? 쇼핑몰 이용시 장바구니 이용할 때 쇼핑몰 상품을 구매할 때 마이페이지 들얼갈 때 즉 사이트에서 가입되어있는 유저만 이용할 수 있는 기능을 이용할 수 있게 도와줄 수 있는 것을 말합니다. 인가 Authorization 가입되어있는 사람들 중에서도 관리자와 일반유저를 나눠서 접근 페이지가 다를 때 해당 페이지에 접근 권한이 존재하는가를 확인할 때 사용하는 것을 말합니다. 관리자..
env 환경변수를 사용하는 이유 개발을 하다 보면 외부에 노출이 되면 안 되는 값들이 존재합니다. 예를 들어서 데이터베이스의 정보 혹은 인증 정보와 같은 값들은 보안을 신경 써 주어야 하는데 이때 사용하는 것이 바로 env 환경변수 파일입니다. 그렇다면 env 환경변수가 무엇일까요? env 환경변수란? env 환경변수는 말 그대로 프로젝트에서 동작하는 방식에 영향을 미치는 동적인 값들을 모아놓은 정보를 말합니다. env 사용 전 준비 npm install dotenv env를 사용하기 앞서서 일단 npm에서 dotenv를 설치해 줍니다. 설치를 했으면 env 파일을 만들어야 되겠죠? env 파일은 어디에 생성을 해야 할까요? 바로 프로젝트의 최상단폴더에 생성을 해야 합니다. 만드는 건 아주 간단합니다. ..