전체 글 174

[네이버 부스트캠프] 부스트캠프 1, 2주차 회고(1주차 밀린거 절 대 아 님)

부스트캠프 1, 2주차를 오늘부로 마무리지었다. 그렇다고 끝났을리가...3, 4주차가 남았다. 간단하게 어땠는지 주차별로 이야기 해보자 1주차 한짤요약 자바쟁이가 자바스크립트를 너무 우습게 봤다. 그냥 프로그래머스 레벨 0짜리 풀어보다가, 레벨 1짜리 다시 풀어보면서 부스트캠프 시작을 준비했다. 정확하게 뭘 했다고 말할 순 없지만, 일단 나는 function, var를 이용해서 코드를 짰었다. (지금보면 한대 갈기고 싶을 정도로 처참했다...) 다행히 같은 조에 자바스크립트를 하셨던 분이 계셨다. 바로 이거에 대해서 리뷰해주셨는데, 이게 왜 문제인지 이야기를 해주었었다. (그래서 바로 블로그 컨텐츠로 써먹었다... 유하~~) CS공부도 해야되는데, 자바스크립트도 공부를 해야되다니...정말 나는 아무것도 ..

장's 개발생각 2023.07.21

[JS] axios? 아씨오?

axios는 자바스크립트에서 비동기 통신방식이다. http의 요청과 응답을 처리할 수 있다. Promise 기반 : 비동기적으로 작업을 처리한다. 요청을 보내고 응답을 기다리기도 하며, then을 이용한 후처리, catch를 이용한 실패시 처리 까지 수행시킬 수 있다. http 요청 메서드 지원 : get, post, patch, delete, put등을 이용해 restful api를 만들 수 있다. 또한 여기서 get, delete과 같은 경우에는 body의 값을 요청에 넣어줄 수 없다는 경험으로 배운 특징이 있다. (대신 헤더, 세팅등은 넣을 수 있다) 요청과 응답 인터셉터 : 요청의 헤더를 json화 시키거나, body에 넣을 객체를 미리 선언한 후 넣어서 처리할 수 있다. 자동 데이터 변환 : 모..

[JS] 호이스팅이 그래서 도대체 뭔데?

이전에 변수들에 대해서 공부하는데, 호이스팅이라는 개념을 몰라서 따로 공부해야했다. 호이스팅이 뭘까? 우리가 쓴 코드를 생각해보아야 한다. 자바스크립트의 모듈에서 함수를 생성했을 때, 그 함수는 실제로 작성된 부분에서 생성된게 아니다. 생성단을 모두 위로 올려두고, 그 이후에 아래쪽에서 해당 부분을 만드는 것이다. 이런 방식의 호이스팅에는 몇가지 문제점이 존재한다. 선언된 변수와 함수가 먼저 선언되었기 때문에, 할당되기 전에 사용될 수 있다는 문제점(?)이 존재한다. 이게 왜 문제일까? 어떻게 보면 이점아닐까? 사용이 원할하잖아!!! 호이스팅은 선언만 끌어올리고 할당은 끌어올리지 않기 때문에 변수에 실제 값을 할당하기 전에는 undefined로 초기화되어 예기치 못하게 오류가 발생하게 할 수 있다 이렇게..

[JS] var, let, const에 대해서 공부해보자.

Var, Let, Const에 대해서 공부를 했어야 했다. 네이버 부스트캠프를 하면서 자바스크립트를 처음 써봤는데, 알고리즘만 풀어보고, 이론에 대해서 공부를 안해봤다. 그래서, 모든 변수를 var로 써버리다가 문제가 생겼었다. 그래서 이걸 대비하기 위해, 해당 내용들을 정리해보았다. 차이점 범위 var : 함수 내에서 선언하면 함수 안에서만, 밖에서면 전역 변수로 할당된다. let : 중괄호로 만들어진 블록 범위에서만 할당된다. const : 중괄호로 만들어진 블록 범위에서만 할당된다. 재선언 var : 같은 범위 내에서 변수를 재선언할 수 있다. let : 같은 범위 내에서 변수를 재선언할 수 없다. const : 변수를 재선언할 수 없습니다. 상수로 취급되며, 선언 시 초기 값을 할당해야 한다. 할..

[이론 공부] 테스트를 조금 더 많이 해보는건 어떨까?

프로젝트를 해보면서, 가장 중요하게 여겼던 것이 테스트였다. 기능을 빠르게 만들어 바로 적용시키기보다, 테스트를 통해 모든 경우의 수를 고려해, 이에 따른 결과들을 미리 확인 할 수 있다는 장점이 있기 때문이다. 여태까지는 생각 없이 테스트를 만들었다. 도메인 : Junit을 이용한 테스트 service(비즈니스 로직) : SpringBootTest를 이용한 테스트 controller : SpringBootTest를 이용한 테스트 이런 방식으로 단위테스트들을 만들었는데, 가장 큰 문제가 너무 무겁다는 것이다. 해결하기 위해 Mockito를 공부하다가 단위테스트, 통합 테스트, 인수 테스트를 알게 되었다. 단위 테스트 단위 테스트는, 말 그대로 '단위' 단위로 테스트를 한다는 뜻이다!!!( 말 참 재밌네 ..

[CS] 데이터베이스 - 키

키에 대해서 알기 전에 두 가지를 알 필요가 있다. 유일성 : 다른 튜플에 중복되는 값이 없는 성질(유일성을 갖춘 것들을 슈퍼키라고 부른다.) 최소성 : 다른 속성과 묶여 판단되는 것이 아닌, 단순 속성 자체로 판단될 수 있는 성질, 그리고 최대한 단순한 상태 이를 종합해 유일성과 최소성을 갖춰야 기본키가 될 수 있다고 한다. 유일성 + 최소성 = 속성 하나로 이루어진 데이터이며 다른 튜플과 중복되지 않는 값인 상태 를 갖춰야 기본키로 쓸 수 있다. 그러면 기본키는 뭘까? 유일성과 최소성을 만족시킨다. null값을 허용하지 않으며 중복되지 않아야 한다(유일성) 기본키는 자연키, 인조키중에 더 단순하게 생긴 것을 사용한다(최소성) 이런 키를 기본키라고 한다. 이런 녀석을 찾기 위해 우리는 후보키 라는 것을..

[CS] 데이터베이스 - 속성의 타입

숫자 타입 TINYINT SMALLINT MEDIUMINT INT BIGINT 용량 1Byte 2Byte 3Byte 4Byte 8Byte 값의 범위(부호 있음) -128~127 -128~127 -32768~32767 -8388608~ 8388607 -2147483648~ 2147483647 값의 범위(부호 없음) 0~255 0~255 0~65535 0~16777215 0~4294967295 문자 타입 CHAR 괄호를 쳐서 저장가능한 길이를 정할 수 있다. 0~255의 고정길이를 저장하게 된다. VARCHAR 괄호를 통해 0~65535의 길이를 정할 수 있다. 입력 길이만큼의 바이트 + 길이 저장용 1바이트의 공간을 가진다. 가변길이로 저장된다. TEXT 큰 문자열(게시물의 내용, 메일)에 쓰인다. BLO..

[CS] 데이터베이스 - 기본 구조

데이터베이스의 구조 엔티티 여러 개의 속성을 가진 객체. 필요한 속성들로 객체를 만들게 된다. 필요없는 속성이 테이블에 존재한다면 그 속성은 엔티티에 속하지 않게 된다. 약함과 강함 엔티티 A와 B가 있을 때, B가 A없이 존재할 수 없다면, B는 약한 엔티티이다. 예시) 게시물과 댓글 릴레이션 속성들을 표현하는 릴레이션 스키마, 스키마의 속성들을 가지는 릴레이션 인스턴스를 의미하는 튜플이 존재한다. 이들을 모아서 릴레이션이라고 한다. MySQL은 테이블, NoSQL은 컬렉션이라고 명명한다. 튜플 속성에 따른 각 행을 의미한다. 파일구조에서 레코드와 같은 의미를 가진다. 릴레이션 인스턴스(튜플)의 길이를 카디널리티라고 한다. 속성 릴레이션 스키마를 구성하는 열 속성에는 넣을 수 있는 값들이 정해져 있다...

[CS] 자료구조 2. 연결리스트

연결리스트 연결리스트의 구조는 빼빼로처럼 생겼다고 생각하면 받아들이기 쉬웠다. 먹고 싶은 부위인 초콜릿엔 필요한 값을 넣고, 그냥 과자 부분엔 포인터를 넣는다. 이 포인터에는 다음 값이 어디 저장되어있는지 주소를 저장한다. 하나의 빼빼로를 노드라고 부른다. 추가 연결리스트에서 노드를 집어넣기 위해서는 2가지 일만 해주면 된다. 이전 노드의 포인터를 집어넣으려는 노드의 주소로 지정한다. 다음 노드의 주소를 집어넣으려는 노드의 포인터로 지정한다. 확실히 배열과는 다른 차이가 있다. 시간이 길이에 상관되지 않는 상수값이기 때문에, O(1)의 시간 복잡도를 가진다고 한다. 조회 조회가 연결리스트의 단점이다. 5개의 노드가 연결된 리스트가 있다고 생각했을 때 원하는 값을 찾기 위해서는 모든 노드를 포인터의 지시에..

CS/자료구조 2023.06.06

[CS] 자료구조 1. 배열

선형 자료구조란? 선형 자료구조는 데이터가 저장되고 만들어지는 구조가 일직선상으로 존재하기에 붙은 이름이다. 크게 배열, 벡터, 리스트, 스택, 큐 정도를 다뤄보려고 한다. 배열 배열은 인덱스를 가지고 각 인덱스마다 값을 하나씩 저장하는 구조이다. 같은 타입의 변수를 가지고, 크기가 정해져 있으며, 데이터를 인접한 메모리 위치에 저장한다. 중복을 허용하며 순서(인덱스)를 가진다. 특징으로는 랜덤 접근이 가능하다. 즉, 랜덤으로 인덱스를 주었을 때 이를 바로 찾아올 수 있다는 뜻이다. (이렇게 말하는 것은 이러지 못하는 녀석이 있다는 뜻!) 추가 위에서 배열의 크기가 정해져 있다고 했다. 그러면 데이터를 추가할 때에는 어떻게 해야할까? 새로운 배열을 만들고, 내가 집어넣으려는 인덱스 이전까지의 배열을 복제..

CS/자료구조 2023.06.05