Blog

includes vs set + has

✨존재하지 않는 수 찾기 함수는 정수 배열 A가 주어졌을 때, A에 존재하지 않는 가장 작은 양의 정수(0보다 큰)를 반환하는 문제를 풀면서 고민한 내용입니다. 처음에는 단순히 배열을 정렬한 후, 반복문을 사용하여 A에 존재하지 않는 가장 작은 수를 찾도록 코드를 작성했습니다. 정확도는 100%였지만 성능 점수가 25%로 매우 낮아, 제 코드의 문...

더 나은 추상화 만들기 - 메뉴아이템

[번역] DRY - 잘못된 추상화의 일반적인 원인을 읽고 작성한 코드를 분석해본 글입니다. 위 포스트을 읽으며 DRY가 잘못되는 과정에 작성된 코드가 내가 작성한 코드와 비슷해서 생각해보게 되었습니다. 코드를 읽을 때 가장 좋은 코드는 아래의 그림 왼쪽처럼 위에서 아래로 쭉 읽어나가기만 하면 되는 코드입니다. 하지만 내 코드는 오른쪽 그림만큼...

리액트 - react-Error-Boundary with react-query

ErrorBoundary 오류를 핸들링할 수 있는 컴포넌트이다. 오류가 발생한 컴포넌트 대신, fallback을 보여준다. fallback “어떤 기능이 제대로 동작하지 않을 때, 이에 대처하는 기능 또는 동작을 말합니다.” 리액트 공식문서를 보면 클래스 컴포넌트로 작성해야한다고 나와있다. 기본 사용 방법 오류를 관리할 컴포넌트를 Error...

타입오알엠 - value.toUpperCase is not a function at MysqlDriver.normalizeDatetimeFunction

부트캠프 마지막 팀 프로젝트를 진행하며, 백엔드 코드를 타입오알엠(TypeORM)을 사용하여 작성하기로 했습니다. 타입오알엠 공식 문서를 참고하여 마리아디비(MariaDB)와 연동하였고, @Entity()를 사용하여 테이블을 생성하려고 했는데 다음과 같은 오류가 발생했습니다. TypeError: value.toUpperCase is not a fun...

클로저

클로저 함수와 함수가 선언된 어휘적 환경(렉시컬 스코프)의 조합입니다. 렉시컬 스코프는 함수를 어디서 호출하는지가 아니라 어디에 선언하였는지에 따라 결정됩니다. 클로저는 함수가 속한 렉시컬 스코프를 기억하며 함수가 렉시컬 스코프 밖에서 실행될 때도 그 스코프에 접근할 수 있게 하는 기능을 말합니다. 내부함수가 외부함수의 값을 변경할 수 있는 것 입...

데브코스 TIL - CS 파트4

1. 소프트웨어 개발 프로세스 소프트웨어를 개발하기 위한 필요한 절차나 과정 소프트웨어를 기획/설계/구현/테스트하고 유지보수하는 단계로 구성 ✅ 소프트웨어 개발 프로세스 중요성 품질향상 (요구사항 분석/테스트 단계에서 오류 발견) 일정 준수 (작업 정리 및 진행사항 추적하여 프로젝트 종료일 예측) 의사 소통 촉진 (팀 구성원...

데브코스 TIL - CS 파트3

1. 데이터베이스 여러 사용자와 응용 시스템들이 사용 목적은 다르지만, 공통의 데이터를 서로 공유하여 사용할 수 있도록 통합하여 저장/관리하는 모임 ✅ 데이터베이스 성질 통합 데이터 (연관성이 있는 데이터를 모음, 중복 최소화) 저장 데이터 (컴퓨터로 접근 가능한 매체에 기록, 영구적/반영구적) 운영 데이터 (존재 목적이나 기...

데브코스 TIL - 셀레니움 IDE와 종단간테스트

셀레니움과 종단간테스트 ✅시나리오 노트 목록 조회, 노트 선택하여 제목과 내용 확인 로그인 상태에서 행할 테스트가 많으므로 로그인/로그아웃 기능은 코드 공용화 사용자 상호작용이 벌어지는 HTML 요소의 선택을 명확히 Assertion을 삽입하여 올바른 동작을 확인/검증 실습 1. 로그인/로그아웃 테스트 라이브러리화 로그인/로그아...

데브코스 TIL - 셀레니움 IDE 이용해서 테스트케이스 개발

Selenium IDE 이용해서 테스트케이스 개발 로그인/로그아웃 시나리오 테스트케이스 개발 HTML element들을 선택하거나 코드를 손으로 작성하는 것은 효율이 떨어지므로 Selenium IDE의 도움을 얻어 자동화된 시나리오 기록할 예정 그리고 기록한 시나리오 활용할 예정 Selenium IDE에서 사용했던 파일을 불러서 다시 시나...

파이썬 + 셀레니움 테스트 오류

pip 명령어를 사용해서 셀레니움에 파이썬 라이브러리를 설치했고, 다음 단계인 셀레니움을 이용한 테스트를 실행하였는데 문제가 발생하였다.. python first_test.py 윈도우 cmd창에 위와 같은 명령어를 입력하였더니 강의와는 다르게 Python만 출력되고 테스트코드가 실행되지 않았다. 이것 저것 뭐가 문젠지 확인해보다가 셀레니움 화면...

파이썬 pip 명령어 오류

부트캠프 스프린트 4 프로젝트에서 셀레니움 학습 실습을 진행하며, 파이썬 라이브러리를 설치해야했다. 나는 파이썬이 컴퓨터에 설치되어있지 않아 파이썬 공식문서 - windows에서 파이썬을 설치하였다. 그리고 나서 강의에서 알려준 pip install을 입력했는데 계속 오류 메세지가 출력되며 실행되지 않았다. 'pip'은(는) 내부 또는 외부 명령,...

프론트엔드 로컬 클러스터 실행 오류

부트캠프 스프린트 4 프로젝트에서 백엔드, 프론트엔드 모두 로컬 클러스터를 실행시키는 실습을 진행하였다. 강의는 Makefile을 사용하여 간단하게 make 명령어를 통해 실행시켰지만, 나는 윈도우를 사용하고 있어서 각각의 명령어들을 실행하여 이미지를 만들고 도커 허브에 푸시하였다. 그리고 yaml 파일을 실행하여 클러스터를 실행하였다. 프론트...

백엔드 + DB 컨테이너 연결 오류

부트캠프 스프린트 4 프로젝트에서 도커를 이용하여 테스트용 컨테이너를 만들어보는 실습을 진행했다. 3월 28일에 DB 컨테이너를 만들었고, 백엔드 컨테이너를 만들며 DB와 연결해주었다. 3월 29일에 프론트엔드 컨테이너를 만들고, 백그라운드에서 실행했더니 db, 백엔드, 프론트엔드 모두 컨테이너가 잘 실행되는 것을 확인하였다. 프론트엔드 서버도...

낙관적 업데이트 vs 비관적 업데이트

낙관적 업데이트 vs 비관적 업데이트 ✅비관적 업데이트 API 호출이 완료되고 데이터 또는 상태가 확인되면 UI를 업데이트하는 방식이다. 즉, 사용자 수정 요청 → 서버에 수정 요청 → 성공하면 화면 갱신의 과정을 통해 업데이트한다. 사용자는 서버에 요청하고 응답을 받을 때까지 UI의 변경을 기다려야하기 때문에 사용자 경험보다 중요한 데이터를 처...

웹 풀사이클 데브코스 3월 회고

💬 3월에 나는 무엇을 했나 ■ 부트캠프 스프린트3 프로젝트 (북스토어 프론트엔드) 2월부터 진행했던 스프린트3 북스토어 프론트엔드 파트를 개발하는 프로젝트가 종료되었다. 이번 프로젝트를 진행하며 react-query를 처음 사용해봤는데, axios를 사용해서 서버에서 받아온 데이터를 useState() 훅을 사용해서 관리하는 방식보다 효율적...

리액트 선언형프로그래밍

✨리액트 선언형프로그래밍 프로그램은 크게 명령형 프로그래밍과 선언형 프로그램으로 나눌 수 있다. ✅명령형 프로그래밍 명령형 프로그래밍은 어떻게에 집중하여 프로그래밍하는 방법을 말한다. 명령형 프로그래밍 장점 직관성: 단계를 명확하게 정의하므로 개발자가 프로그래밍의 동작 방식을 쉽게 이해할 수 있음 유연성: 절차적인 방식으로 문제를 해...

프론트엔드 jest 테스트 실패 오류 with react-hook-form

부트캠프 스프린트 4 프로젝트에서 회원가입페이지를 생성하고, 회원가입 폼이 제대로 작동하는지 단위테스트를 실행하는 실습을 하였다. 프론트엔드 코드는 각자 설계서에 맞춰서 자유롭게 작성하면 되었기 때문에 나는 react-hook-form을 사용하여 회원가입, 로그인 폼을 작성하였다. 개발서버에서 실제로 잘 작동하는 것을 확인하였고, 테스트 코드를 작...

양방향/단방향 바인딩

✨리액트 단방향 바인딩 ✅데이터 바인딩? 데이터 바인딩이란 UI와 UI가 표시하는 데이터를 연결하는 프로세스이다. 데이터가 변경되면 내부의 데이터가 자동으로 업데이트되어 변경 내용을 반영시킨다. 즉, 화면에 보이는 데이터와 브라우저 메모리에 있는 데이터를 일치시킬 때 사용하는 기법이다. ✅양방향 데이터 바인딩 양방향 데이터 바인딩은 사용자...

소프트웨어 요구사항 명세서

요구사항 명세서 요구사항 명세서는 요구사항 기술서, 요구사항 정의서라고도 불린다. 이는 고객의 요구사항(모든 기능)을 상세하게 정리한 내용을 의미한다. 요구사항은 여러가지 이유로 프로젝트 수행 도중에 변경될 수 있다. 워터풀(waterfall) 모델의 소프트웨어 개발 프로세스에서는 필수적으로 작성해야하지만, 애자일(agile) 방법론을 적용한다면 요...

이차원 배열

✨다차원 배열? 다차원 배열이란 2차원 이상의 배열을 의미하며, 배열 요소로 또 다른 배열을 가지는 배열을 의미합니다.출처 자바스크립트에는 다차원 배열을 정의하는 문법이 존재하지 않는다. 그래서 배열에 배열을 중첩하여 다차원 배열과 유사한 기능을 구현할 수 있다. 형태 배열 안에 배열이 있는 형태 // 이차원 배열 [[a], [b], ...

여러 조건을 만족하는 데이터 구하기

✨여러 조건을 만족하는 데이터 구하기 프로젝트를 진행하다보면 여러 조건을 만족하는 데이터를 구해야하는 경우들이 있다. 이를 연습해보기 위해 다음과 같은 조건을 가진 필터링 기능을 만들어 보았다. 💡필터링 조건 1. 사용자가 입력한 도서관 이름 필터링 사용자가 전체 도서관이 아니라 특정 도서관을 선택했을 때 해당 도서관에 있는 도서들만 검색...

컨테이너 가상화 와 도커

컨테이너 가상화와 도커 📘가상화? (virtualization) 컴퓨팅 자원(리소스)의 추상화를 일컫는 광범위한 용어 물리적인 컴퓨팅 자원의 특징을 다른 시스템, 응용 프로그램, 최종 사용자들이 자원과 상호 작용하는 방식으로부터 감추는 기술입니다. 즉, 컴퓨터 안에 또 다른, 가상의 컴퓨터가 존재하도록 하는 기술 ■ 가상화 컴퓨텅의 장점 ...

CRA 프로젝트에서 craco를 사용해서 절대경로 설정하기

✨CRA 프로젝트에서 craco를 사용해서 절대경로 설정하기 💡절대 경로가 필요한 이유? 리액트에서 작성해둔 컴포넌트 혹은 유틸함수들을 가져올 때는 기본적으로 상대경로를 사용해서 가져온다. 폴더 안에 폴더가 많아져 (뎁스가 깊어지면) 코드가 복잡해지기 때문에, 상대 경로보다는 절대경로를 사용하는 경우가 많다. // 상대경로 import BookI...

잘못된 경로로 진입했을 때 오류 처리하는 방식 (라우팅 중 발생하는 Notfound 오류)

✨잘못된 경로로 진입했을 때 오류 처리하는 방식 route path="*"를 사용하는 방식과 errorElement를 사용하는 방식이 있다. 📘 1. route path=”*” 모든 경로에 대해 일반적인 경로를 정의할 때 사용 /*때문에 모든 경우와 일치 주로 경로가 잘못되었을 때 Notfound 오류를 처리하기 위해 사용 잘못된...

객체를 상태로 다룰 때 불변성을 유지해야 하는 이유

✨불변성? 값이나 상태를 변경되지 않는 것s 기존의 상태 값을 변경하지 않고, 새로운 상태값을 추가하는 것 🔍리액트에서 불변성을 지켜야하는 이유? 리액트는 컴포넌트가 가지고 있는 props와 state의 이전, 이후의 값을 확인하고, 업데이트를 처리하기때문이다. 기존의 상태 값과 새로운 상태값이 동일하다면 변경된 것을 감지하지 못해 업데...

리액트에서의 KEY

✨리액트에서의 key React 공식 문서 - React에서 Key가 필요한 때와 이유 리액트에서는 Key 프롭을 사용해서 컴포넌트의 동일성을 식별합니다. 따라 key는 고유해야하며, key는 변경되어서는 안됩니다. 또한 리렌더링을 최적화합니다. 고유한 key를 가지고 있다면, 리액트는 변경된 내역만 확인하고 다시 렌더링하여 성능을 향상시킵니다....

데브코스 TIL - Day 48

24년 1월 29일 강의를 들은 내용을 기록한 글입니다. 타입스크립트 자바스크립트 프로젝트가 커지면 코드 관리가 어렵고, 디버깅이 어려워진다는 단점이 있다. 이를 보완하기 위해 사용하는 것이 타입스크립트이다. => 자바스크립트 + 타입 체크 📘타입 체크? 자바스크립트에서는 변수의 데이터타입을 명확하게 알 수 없어서 안정성이 떨어진다...

웹 풀사이클 데브코스 1월 회고

💬 1월에 나는 무엇을 했나 ■ 부트캠프 스프린트2 프로젝트 (백엔드 API 설계) 이번 달은 node.js + expresss를 사용하여 API 설계하는 프로젝트를 진행하였다. 프론트엔드 프로젝트만 해보다가 처음으로 백엔드 프로젝트를 진행하게 되었다. 주로 리액트라는 프레임워크를 사용해서 nodejs는 단순히 패키지를 설치하거나, 개발 ...

에라토스테네스의 체

소수를 판별하는 알고리즘 소수란? 1과 자신 이외의 자연수로 나눌 수 없는 자연수 에라토스테네스의 체란? 수학에서 소수를 찾는 빠르고 쉬운 방법 알고리즘 2부터 소수를 구하고자 하는 구간의 모든 수를 나열한다. 2는 소수이므로 오른쪽에 2를 쓴다 자기자신을 제외한 2의 배수를 모두 지운다 남아있는 수 중 3은 소수이므로 오른...

비밀번호 암호화 (crypto,Bcrypt)

강의를 듣기 전에 비밀번호 암호화로 유명한 Bcrypt 라이브러리를 사용하여 회원가입한 유저의 비밀번호를 암호화하는 로직을 작성했었다. 오늘 부트캠프 강의를 들으며 강사님이 nodejs의 내장 모듈인 crypto를 사용해서 암호화하는 내용을 보고 차이점이 궁금해 추가로 학습하였다. 📕비밀번호 암호화 방식 #단방향 암호화 평문을 암호화시킬 수 있음...

타입스크립트 - 타입 검사 방식

객체 리터럴을 대입했는지, 변수를 대입했냐에 따라 타입 검사 방식이 달라짐 객체 리터럴? 사람이 이해할 수 있는 문자나 약속된 기호를 사용해 값을 생성하는 표기법 중괄호{} 안에 프로퍼티를 정의함 객체 리터럴로 대입했을 때? 잉여 속성 검사가 실행됨 타입 선언에서 선언하지 않은 속성을 사용할 때 에러를 표시하는 것을 의미 interface E...

프리온보딩 비즈니스로직/UI 기능 구현

비즈니스 로직 액션을 일으키는 모든 함수들 주로 특정한 상황이나 조건에 따라 다르게 동작하도록 설계된, 말 그대로 어떠한 비즈니스에 맞춰진 작업 흐름 비즈니스 로직의 예시 가격 할인 로직 상황: “저희 책방에서는 매월 첫 구매 고객에게는 10% 할인을 제공할거에요. 또한, 특정 출판사와의 협약에 의해 해당 출판사의 책을 ...

프로그래밍 언어 활용 - 언어 특성

절차적 프로그래밍 언어 절차적 프로그래밍 (Procedural Programming Language) 절차적 프로그래밍 언어는 프로시저 호출의 개념을 바탕으로 하고 있는 프로그래밍 언어 명령형 프로그래밍이라고도 불림 ※ 프로시저 = 함수 특징 유지보수나 코드의 수정이 어렵다 복사해서 붙이지 않고도 같은 코드를 다른 곳에서 ...

데브코스 TIL - Day 10

스프린트1 프로젝트 만들기 1. HTML/CSS만 이용해서 나만의 포트폴리오 페이지를 만들기 배포 사이트 깃허브 코드 자바스크립트를 사용할 수 없기때문에 최대한 심플하게 만드려고 하였다. 내가 반응형 홈페이지 마크업하는 것을 홈페이지들을 넣었다. 마우스를 호버하면 프로젝트의 타이틀과 어떤 카테고리의 프로젝트인지 나타나도록 하였다....

프로그래밍 언어 활용 - 서버 프로그램 구현

보안 취약성 식별 보안 취약성 (Vulnerability) 정보시스템에 불법적인 사용자의 접근, 정상적인 서비스 방해, 정보시스템에서 관리하는 중요 데이터의 유출/변조/삭제에 대한 위협 위협이 발생하기 위한 사전 조건으로 응용 프로그램의 보안 취약점, 위협 요소, 허점을 탐지하는데 도움을 줌 침투 테스트 (Penetration Test) 시스...

데브코스 TIL - Day 5

23년 11월 20일 강의를 들은 내용과 추가로 더 학습한 내용을 기록한 글입니다. 브랜치 이름 규칙 메인 브랜치 : 사용자들이 사용하는 버전 메인 브랜치는 사용자들이 사용하는 버전이기때문에, 브랜치를 이용해 프로젝트를 복제한 뒤에 기능을 개발하거나 오류를 수정해야함! 메인 브랜치에 바로 개발/오류 수정 등을 하면 큰일남!!! ■ 브랜치 5종...

타입스크립트 - 타입스크립트 - 기본

타입스크립트 자바스크립트에 타입을 부여한 언어 동적인 자바스크립트는 런타임동작에 타입 오류를 확인하지만, 정적인 타입스크립트는 컴파일(자바스크립트로 변환)단계에서 오류를 확인함 자바스크립트 코드를 단순화하여 더 쉽게 읽고 디버그할 수 있도록 도와줌 코드를 더 쉽게 읽고 이해할 수 있음 코드 유형 검사를 통해 자바스크립트를 작성할 때 ...

데이터베이스 구축 - DB 물리 속성 설계/ 무결성/ 키

#DB 물리 속성 설계 파티셔닝 파티션보다 작은 논리적인 단위 나눔 성능 저하 방지 및 관리를 상대적으로 보다 용이하게 하고자 하는 기법 ■ 특징 전체 데이터 훼손 가능성이 줄고, 데이터 가용성이 향상됨 작은 단위로 관리하여 편리함 부하를 각각 파티션들로 분산시켜 성능을 향상시킴 수평분할에 활용되는 분할 기법 ■ 범위 유형 ...

데이터베이스 구축 - 물리 데이터베이스 설계

#물리 데이터베이스 설계 스토리지 데이터를 보존하고 간편하게 액세스할 수 있도록 개발된 기술을 사용하여 정보를 보존하는 저장장치 ■ DAS (Direct Attached Storage) 데이터 서버와 외장형 저장 장치를 전용 케이블로 직접 접속하는 방법 성능이 보장되며, 안정성도 뛰어남 접속방법이 상이하여 저장장치 공유에 문제가 있음...

원티드 프리온보딩 - 클린코드2

원티드 프리온보딩 - 클린 코드 2강 다른 사람들이 생각하는 클린코드는? 빠르게 이해할 수 있는 코드 확장성 가독성 명확한 목적성과 역할 기능에 충실한 코드 일관성이 중요한 이유 나쁜 코드라도 일관성만 잘 지킨다면 자동화도 할 수 있기 때문에! 일관성이 명확하다면 편집기, 정규식 조합으로 한번에 고칠 수 있다. ...

데이터베이스 구축 - SQL 응용 2

#SQL 데이터 정의어 (DDL) DDL 대상 ■ 도메인: 하나의 속성이 가질 수 있는 원자들의 집합 ■ 스키마: 데이터베이스 구조, 제약조건 등의 정보를 담고 있는 기본적인 구조 ■ 테이블: 데이터를 저장하는 항목인 필드들로 구성된 데이터의 집합체 ■ 뷰: 하나 이상의 물리 테이블에서 유도되는 가상의 테이블 ■ 인덱스: 검색을 빠르게 하기 위한...

기초부터 완성까지 프론트엔드 - day8

Day 8 오늘 읽은 범위 15장 프론트엔드 테스트 부록1 렌더링 방식과 프론트엔드 프레임워크 부록2 타입스크립트 부록3 코드 리뷰하기 책에서 기억하고 싶은 내용을 써보세요. 애플리케이션의 규모가 커지며 페이지의 로딩 속도, 반응 속도, 메모리 사용률 등 다양한 요소들의 성능 최적화가 중요해지기 시작 개발자 도구 - Perf...

소프트웨어 개발 - 인터페이스 구현

#인터페이스 구현 인터페이스 기능 이기종 시스템 또는 컴포넌트 간 데이터 교환 및 처리를 위한 기능 각 시스템의 교환 데이터 및 업무, 송수신 주체 등이 정의되어 있는 인터페이스 설계서를 보고 인터페이스 기능을 확인할 수 있음 인터페이스 정의서를 통하여 외부 및 내부 모듈의 기능을 확인할 수 있음 인터페이스 데이터 표준 확인 ...

기초부터 완성까지 프론트엔드 - day7

Day 7 오늘 읽은 범위 13장 프론트엔드 테스트 14장 스냅숏 테스트와 시각적 테스트 책에서 기억하고 싶은 내용을 써보세요. 프론트엔드 테스트 내부 코드의 다양한 연산뿐만 아니라 클라이언트 영역에 대한 사용자의 인터랙션도 고려하여 올바른 결과가 나오는지 검증해야 함 사용자 관점에서 최대한 사용자가 직접 사용하는 것처럼 시나리오...

절대 경로 사용해서 가독성 높이기

절대경로와 상대경로 ✨상대 경로 현재 파일의 위치를 기준으로 연결하려는 파일의 상대적인 경로를 의미 ■ 장점: 주소나 프로젝트 디렉토리 위치가 바뀌어도 내부 구조만 그대로라면 수정 없이 그대로 사용할 수 있음 ■ 단점: 코드를 import 해올 때 폴더가 깊어지면 복잡해지고 가독성이 떨어짐 #사용 방법 같은 폴더 내에 위치한다면 ....

소프트웨어 개발 - 애플리케이션 통합 테스트

#애플리케이션 통합 테스트 결합 관리 도구 단계별 테스트 수행 후 발생한 결함의 재발 방지를 위해 결함을 추적하고 관리하는 도구 유사 결함 발견 시 처리 시간 단축을 위해 결함을 추적하고 관리하는 도구 ■ 결함 관리 프로세스 에러 발견 → 에러 등록 → 에러 분석 → 결함 확정 → 결함 할당 → 결함 조치 → 결한 조치 검토 및 승인 ■...

소프트웨어 개발 - 애플리케이션 테스트

#애플리케이션 테스트 케이스 설계 테스트 케이스 (Test Case) 특정 요구사항에 준수하는 지를 확인하기 위해 개발된 입력값, 실행 조건, 예상된 결과의 집합 정확성, 재사용성, 간경성 보장 ■ 테스트 케이스 작성 절차 테스트 계획 검토 및 자료 확보 → 위험 평가 및 우선순위 결정 → 테스트 요구사항 정의 → 테스트 구조 설계 및 테...

기초부터 완성까지 프론트엔드 - day4

Day 4 오늘 읽은 범위 7장 BOM과 DOM 8장 브라우저 렌더링 과정 책에서 기억하고 싶은 내용을 써보세요. 문서 객체 모델(Document Object Model; DOM) 일종의 인터페이스로 해당 요소를 나타내는 노드, 노드의 속성을 나타내는 프로퍼티와 이를 조작할 수 있는 여러 메서드를 담아 구조화한 객체로 표현 노드 ...

소프트웨어 개발 - 제품 소프트웨어 버전 관리

#제품 소프트웨어 버전 관리 도구 형상 관리 지침을 활용하여 제품 소프트웨어의 신규 개발, 변경, 개선과 관련된 수정 사항을 관리하는 도구 소프트웨어 개발과 관련하여 코드와 라이브러리, 관련 문서 등 시간 변화에 따른 변경을 관리하는 전체 활동을 의미 제품 소프트웨어 버전 관리 도구 유형 ■ 공유 폴더 방식 개발 완료 파일을 약속된 위치의...

기초부터 완성까지 프론트엔드 - day3

Day 3 오늘 읽은 범위 5장 자바스크립트 심화 - 프로토타입과 스코프 6장 자바스크립트 심화 - 실행 컨텍스트 책에서 기억하고 싶은 내용을 써보세요. 자바스크립트에서는 프로토타입을 기반으로 객체 지향의 상속 개념을 구현 자신의 부모 역할을 하는 프로토타입 객체의 참조 링크를 가지고 있으며, 이 링크...

소프트웨어 개발 - 제품 소프트웨어 매뉴얼 작성

#제품 소프트웨어 매뉴얼 작성 제품 소프트웨어 매뉴얼? 제품 소프트웨어 개발 단계부터 적용한 기준이나 패키징 이후 설치 및 사용자 측면의 주요 내용 등을 문서로 기록한 것 사용자 중심의 기능 및 방법을 나탄낸 설명서와 안내서를 의미 제품 소프트웨어 설치 매뉴얼? 사용자가 제품을 구매한 후 최초 설치 시 참조하는 매뉴얼 ...

기초부터 완성까지 프론트엔드 - day2

Day 2 오늘 읽은 범위 3장 자바스크립트 기초 - 타입과 구문 4장 자바스크립트 기초 - 타입변환과 함수 책에서 기억하고 싶은 내용을 써보세요. 변수 선언 var : 값 덮어쓰기 가능, 함수 스코프를 기준으로 동작 let : 재선언 불가, 블록 스코프를 기준으로 동작 const : 재선언 불가, 블록 스코프를 기준으...

소프트웨어 개발 - 제품 소프트웨어 패키징

#제품 소프트웨어 패키징 #애플리케이션 패키징 개발 완료된 제품 소프트웨어를 배포하고 설치할 수 있도록 고객에게 전달하기 위한 형태로 제작, 설치와 사용에 필요한 제반 내용을 포함하는 매뉴얼을 작성하는 활동 ■ 특징 사용자 중심으로 진행 신규 및 변경 개발 소스를 식별 모듈화하여 상용 제품으로 패키징 신규/변경 이력을 확인 ...

기초부터 완성까지 프론트엔드 - day1

Day 1 오늘 읽은 범위 1장 프런트엔드 개발이란? 2장 HTML과 CSS 책에서 기억하고 싶은 내용을 써보세요. 클라이언트: 서비스를 이용하는 사용자 또는 사용자의 디바이스를 의미 클라이언트 영역: 사용자의 PC와 스마트폰에서 사용자가 서비스를 접하는 영역 프런트엔드 개발: 클라이언트 영역에서 서비스 사용자와...

소프트웨어 개발 - 단위 모듈

#모듈 구현 # 단위 모듈 구현 소프트웨어 개발에 있어 기능을 단위 모듈별로 분할하고 추상화하여 성능을 향상시키고, 유지보수를 효과적으로 하기 위한 구현 기법 ■ 모듈? 다른 것들과 구별될 수 있는 독립적인 기능을 갖는 단위 소프트웨어 구조 정적인 구조 ※컴포넌트: 런타임에 독립적으로 배포되고 실행되는 단위 ■ 단위 모듈 ...

개발 시간을 줄여주는 이름 짓기와 주석쓰기

개발자의 글쓰기라는 책을 읽으며 기록하고 싶은 내용이 생겨 이 글을 쓰게 되었다. 이 글에서는 변수명을 잘 짓는 방법에 대해서만 정리할 예정이다. 이 책에는 변수명을 잘 짓는 방법 외에도 개발자가 네이밍을 할 때 도움을 주는 내용들이 많이 담겨있다. 변수명 짓는데 어려움을 느끼거나 주니어 개발자들이 읽어보면 좋을 것 같다. 2장 개발 시간을 줄여주...

버전 관리 이해하기

#버전 관리 빈번한 업데이트를 체계적으로 관리하려면 소스 코드에 언제, 어떤 변화가 있었는지 기록하고 추적하는 버전 관리가 필요합니다. 한 프로젝트에서 여러 개발자가 동시에 많은 기능을 추가하고 코들 변경합니다. 그러다 보면 소스 코드 파일을 둘 이상이 수정하여 의도하지 않게 코드가 덮어써지는 충돌이 발생하기도 합니다. 이러한 복잡한 상황을 체계적...

소프트웨어 개발 - 자료구조

#자료 구조 컴퓨터상 자료를 효율적으로 저장하기 위해 만들어진 논리적인 구조 자료 구조의 분류 ■ 선형구조 (연속적 연결) 리스트, 스택, 큐, 데크 @리스트 1. 선형 리스트 배열과 같이 연속되는 기억장소에 저장되는 리스트 가장 간편한 자료 구조 접근 구조가 빠름 자료의 삽입, 삭제 시 이동이 필요 2. 비선형 리...

소프트웨어 설계 - 인터페이스 상세 설계

#내/외부 송·수신 연계 방식과 연계 기술, 통신 유형의 선택은 성능을 위한 가장 중요한 요소 ■ 내/외부 송·수신 연결 방식 직접 연계 방식 중계 서버나 솔루션을 사용하지 않고 직접 인터페이스 하는 방식 중간 매개체가 없어 처리속도가 빠르고 구현이 단순 개발 비용과 기간이 짧음 송/수신 시스템간 결합도가 높아서 시스템 변경...

소프트웨어 설계 - 인터페이스요구사항

#인터페이스 요구사항 확인 시스템들이 상호 접속을 통하여 특정 기능을 수행하기 위한 접속 방법이나 규칙에 대한 필수적 요구사항 인터페이스 요구사항 구성 구성요소들을 대상 시스템 및 기관과 서전에 연동 방안에 대한 협의가 필요 인터페이스 이름, 연계 대상 시스템, 연계 범위 및 내용, 연계 방식, 송신 데이터, 인터페이스 주기, 기타 ...

소프트웨어 설계 - 디자인패턴

#디자인패턴 ★★★★★ 공통으로 발생하는 문제에 대해 자주 쓰이는 설계 방법을 정리한 패턴 ■ 디자인패턴 장점 요구 변경에 따른 소스 코드 변경을 최소화할 수 있게 해줌 소프트웨어 코드의 품질 향상 범용적인 코딩 스타일 적용 가능 개발자 간의 원활한 의사소통 가능 설계 변경 요청에 대한 유연한 대처가 가능 소프트웨어 구...

소프트웨어 설계 - 객체지향설계

#객체지향설계 ★★★★★ #객체 지향 (Object Oriented) 속성과 메서드가 결합한 형태의 객체로 표현하는 기법 #객체 지향 구성요소 @클객 메 메인속 ■ 클래스 변수와 메서드를 정의하는 일종의 틀 데이터를 추상화하는 단위 하나 이상의 유사한 객체들을 묶어서 하나의 공통된 특성 표현 ■ 객체 물리적,추상적...

소프트웨어 설계 - 애플리케이션 설계

#애플리케이션 설계 - 공통 모듈 설계 ★★★ 재사용(Reuse) 개발 시간 및 비용 절감을 위하여 검증된 기능을 파악하고 재구성하여 시스템에 응용하기 위한 최적화 작업 기존 소프트웨어 또는 소프트웨어 지식을 활용하여 새로운 소프트웨어를 구축하는 작업 재사용의 유형 함수/객체 재사용 컴포넌트 재사용 애플리케이션 재사용 ...

소프트웨어 설계 - UI 요구사항 확인

#UI 요구사항 확인 ■ UI (사용자 인터페이스; User Interface) 넓은의미: 사용자와 시스템 사이에서 의사소통할 수 있도록 고안된 물리적, 가상의 매개체 좁은의미: 정보 기기나 소프트웨어의 화면 등에서 사람이 접하게 되는 화면 UX (사용자 경험; User eXperience) 사용자가 직·간접적으로 경험하면서 느끼고 ...

소프트웨어 설계 - 분석 모델 확인

#분석 모델 확인 ■ 모델링기법 모델(Model) 객체, 시스템, 또는 개념에 대한 구조나 작업을 보여주기 위한 패턴 개발 대상을 추상화하고 기호나 그림 등으로 시각적으로 표현함 소프트웨어에 대한 이해도를 향상할 수 있음 이해 당사자 간의 의사소통이 향상됨 문제가 발생하는 상황에 대한 이해를 높이고 해결책을 설명 향후 개발...

소프트웨어 설계 - 요구분석기법 (애자일)

#요구사항 확인 2 - 애자일 방법론 ■ 애자일 방법론 (Agile) 개발과 함께 즉시 피드백을 받아 유동적으로 개발하는 방법 빠른 비즈니스 시장에 기민하게 대응할 수 있음 아래 단계를 반복하여 수행 ① discover ② design ③ develop ④ test 프로젝트 요구사항은 기능 중심으로 정의 절차와 도구보다는 개인과...

소프트웨어 설계 - 요구분석기법 (UML)

#요구사항 확인 1 - 요구분석 기법 ■ 요구분석(Requirements Analysis) 사용자의 요구를 추출하여 목표를 정하고 어떤 방식으로 해결할 것인지 결정하는 단계 개발 대상에 대한 사용자의 요구사항 중 명확하지 않거나 모호하여 이해가 되지 않는 부분을 발견하고 이를 걸러내기 위한 과정 실제적인 첫단계로 사용자의 요구에 대해 ...

소프트웨어 설계 - 현행 시스템 분석 2

#현행 시스템 분석 2 - 네트워크/DBMS/비지니스융합 네트워크 분석 네트워크 개념 컴퓨터 장치들이 노드 간 연결을 사용하여 서로에게 데이터를 교환하는 기술 연결(데이터링크)들은 광케이블과 같은 유선 매체 또는 와이파이와 같은 무선 매체를 통해 성립 네트워크 현행 시스템 분석 구성된 네트워크 구조를 네트워크 구성도를 통해 분...

소프트웨어 설계 - 현행 시스템 분석 1

#현행 시스템 분석 1 - 플랫폼,운영체제 #플랫폼의 개념 애플리케이션을 구동시키는데 필요한 소프트웨어 환경 동일 플랫폼 내에서는 상호 호환이 가능하도록 만들어진 결합체 공급자, 수요자 등 복수 그룹이 참여하여 얻고자 하는 가치를 공정한 거래를 통해 교환할 수 있도록 구축된 환경 #플랫폼의 기능 소프트웨어 개발과 운영비용이 ...

원티드 프리온보딩 - 로그인 기능 구현하기 3 (내용)

원티드 프리온보딩 - 로그인 기능 구현하기 3강 내용 실습 코드 세션이란? 사용자의 로그인 이후 로그아웃 혹은 로그인 만료까지의 기간 연결 그 자체 신분증 같은 느낌(임시출입증) 세션 방식 로그인 : 사용자 로그인이 유효한 시간동안 서버에 세션 아이디를 기록해 두고 인증에 사용하는 방식...

원티드 프리온보딩 - 로그인 기능 구현하기 1

원티드 프리온보딩 - 로그인 기능 구현하기 1강 복습 실습 코드 로그인이란? 사용자가 시스템에 접근하거나 동작을 수행하는 것을 제어하고 기록하기 위한 컴퓨터 보안 절차 로그인이 필요한 이유와 구현을 위해 해야하는 것 1. 사용자 식별 해당 페이지에 접근하는 사용자가 누구인지 구분하기 위해 2. 접근 및 동작 제어 2-1. 권한이 ...

타입스크립트 확장하기 - 예시

우아한 타입스크립트 도서의 일부 내용을 정리한 포스트입니다. 타입 확장 쇼핑몰 어플을 사용하다보면 카테고리 메뉴는 카테고리 이미지와 카테고리 이름으로 이루어져있다. 이것을 `ICategoryMenu`라는 이름을 가지는 인터페이스로 작성해보면 다음과 같다. 여기서 `I`는 interface로 작성된 타입이라고 명시해줄 때 사용하는 방법이다. ...

타입스크립트 확장하기 - global.d.ts

쉽게 시작하는 타입스크립트와 타입스크립트 공식문서에 내용을 정리한 포스트입니다. 타입스크립트 - 유틸리티 타입 유틸리티 타입은 이미 정의되어 있는 타입 구조를 변경하여 재사용하고 싶을 때 사용하는 타입입니다. 타입스크립트 공식문서 1. Pick 타입 특정 타입의 속성을 뽑아서 새로운 타입을 만들어낼 때 사용합니다. ✅문법 Pick<대상...

타입스크립트 - 유틸리티타입

쉽게 시작하는 타입스크립트와 타입스크립트 공식문서에 내용을 정리한 포스트입니다. 타입스크립트 - 유틸리티 타입 유틸리티 타입은 이미 정의되어 있는 타입 구조를 변경하여 재사용하고 싶을 때 사용하는 타입입니다. 타입스크립트 공식문서 1. Pick 타입 특정 타입의 속성을 뽑아서 새로운 타입을 만들어낼 때 사용합니다. ✅문법 Pick<대상...

git init 오류

──────────────────────────────────────────────────────────────── 10:16:19 AM: "build.command" failed 10:16:19 AM: ──────────────────────────────────────────────────────────────── 10:16:19 AM: ​ 1...