Read, Write, Execute 권한폴더나 파일에 대한 사용권한을 변경하고 설정할 수 있다.일단 사용권한을 먼저 부여하기 전에 파일인지 폴더인지를 CLI에서 어떻게 확인할 수 있을까?바탕화면에 아래와 같은 CLI 명령어로 폴더와 파일을 만들어본다.
Linix기반의 운영체제의 PC에는 시스템 자체에 전역변수를 설정할 수 있다. 그리고 시스템에 설정한 전역 변수를 환경변수라고 한다. export를 이용하여 환경변수를 설정할 수 있다.터미널에 위와같은 명령어를 실행하면 다영한 환경변수가 있다는걸 볼 수 있다. 심지어
문제를 해결하기 위한 알고리즘 로직을 코드로 구현하기 위해서는 시간 복잡도를 고려해야한다.입력값의 변화에 따라 연산을 할 때, 연산 횟수에 비해 시간이 얼마만큼 걸리는가?효율적인 알고리즘을 구성했다는 것은 입력값이 커짐에 따라 증가하는 시간의 비율을 최소화한 알고리즘을
Greedy는 탐욕스러움 욕심이 많다는 뜻이다. Greedy Algorithm은 말 그대로 선택의 순간마다 당장에 보이는 최적의 상황을 찾아 최종적인 해답에 도달하는 방법이다. Greedy Algorithm은 탐욕 선택 속성(Greedy choice property)
Greedy Algorithm과 함께 언급하는 알고리즘이로 Dynamic Programing이 있다. DP라고 하는 이 알고리즘은 모든 경우의 수를 조합해 최적의 해법을 찾는 방식이다.Dynamic Programing의 원리는 주어진 문제를 여러 개의 하위 문제로 나누
김코딩과 박해커는 사무실 이사를 위해 짐을 미리 싸 둔 뒤, 짐을 넣을 박스를 사왔다. 박스를 사오고 보니 각 이사짐의 무게는 들쭉날쭉한 반면, 박스는 너무 작아서 한번에 최대 2개의 짐 밖에 넣을 수 없었고 무게 제한도 있었다.예를 들어, 짐의 무게가 70kg, 50
편의점에서 아르바이트를 하고 있는 중에, 하필이면 피크 시간대에 손님에게 거스름돈으로 줄 동전이 부족하다는 것을 알게 되었습니다.현재 가지고 있는 동전은 1원, 5원, 10원, 50원, 100원, 500원으로 오름차순으로 정렬되어 있고, 각 동전들은 서로 배수 관계에
N \* N의 크기를 가진 보드판 위에서 게임을 하려고 합니다. 게임의 룰은 다음과 같습니다.좌표 왼쪽 상단(0, 0)에 말을 놓는다.말은 상, 하, 좌, 우로 이동할 수 있고, 플레이어가 조작할 수 있다.조작의 기회는 딱 한 번 주어진다.조작할 때 U, D, L, R
자신이 감옥에 간 사이 연인이었던 줄리아를 앤디에게 빼앗겨 화가 난 조지는 브레드, 맷과 함께 앤디 소유의 카지노 지하에 있는 금고를 털기로 합니다. 온갖 트랩을 뚫고 드디어 금고에 진입한 조지와 일행들. 조지는 이와중에 감옥에서 틈틈이 공부한 알고리즘을 이용해 tar
\[A, B, C, D, E]로 이루어진 5장의 카드가 있다. 이 5장의 카드 중 3장을 선택하여 나열하려고 한다. 순서를 생각하며 3장을 선택했을 때, 카드를 나열하는 방법은 모두 몇 가지가 있을까?첫 번째 숫자를 선택할 수 있는 경우의 수는 5가지.두 번째 숫자를
약수: 어떤 수를 나누어떨어지게 하는 수배수: 어떤 수의 1, 2, 3, ...n 배하여 얻는 수공약수: 둘 이상의 수의 공통인 약수공배수: 둘 이상의 수의 공통인 배수최대 공약수(GCD. Greatest Common Divisor): 둘 이상의 공약수 중에서 최대인
가위바위보 게임은 2인 이상의 사람이 동시에 '가위, 바위, 보'를 외치고 동시에 가위, 바위 또는 보 중에서 한 가지를 의미하는 손 모양을 내밀어 승부를 결정짓는 게임입니다. 세 판의 가위바위보 게임을 할 경우, 한 사람은 세 번의 선택(예. 가위, 가위, 보)을 할
개업 이래로 항상 승승장구하는 '승승장구 치킨집'의 비결은 소스에 있다. 수많은 타사 브랜드 치킨집들이 승승장구 치킨집의 소스 비결을 알아내려고 했으나 빈번히 포기했다.그 이유는 5대째 내려오는 '비밀의 승승장구 치킨 소스 비율 레시피'는 70억 인구 중 사장님만 알고
평범한 블랙잭 게임에서 수시로 패배하자 흥미가 떨어진 김코딩은 박타짜에게 게임룰을 변형하여 새로운 카드 놀이를 해 볼 것을 제안합니다.새로운 룰은 다음과 같습니다.숫자로 이루어진 카드를 여러 장 받습니다.3장씩 카드를 고르고, 3장에 적힌 숫자들의 합이 소수인지 확인합
오늘은 빼빼로 데이입니다. 한 회사의 팀장은 출근길에 아몬드 빼빼로 M개와 누드 빼빼로 N개를 구매하여 아침 일찍 출근길에 나섰습니다.팀장은 자신보다 먼저 출근해 있는 직원들에게 구매한 빼빼로를 전부 나누어 주려고 합니다.단, 서로 질투하는 경우를 만들지 않기 위해 모
데이터를 저장하는 방법으로 파일에 데이터를 저장하거나 인메모리 형테로 데이터를 임시 저장하는 방법을 이용하였다. 이러한 방법으로 데이터를 저장할 수 있는데 왜 데이터 베이스를 사용할까? 데이터 베이스를 사용하지 않고 엑셀이나 CSV 파일등에 데이터를 저장해 사용하면 되
SQL에서 명령어를 수행하려면 세미콜론(;)을 꼭 붙여주어야 실행된다.“데이터베이스\_이름”이라는 데이터베이스를 생성한다.“데이터베이스\_이름”이라는 데이터베이스를 실행한다.USE를 이용해 데이터베이스를 선택했다면, 이제 테이블을 만들 수 있다. 아래의 표를 예시로 테
테이블을 생성하였다면 정보를 확인할 수 있다. 아래의 명령어를 사용하면, user로 만든 테이블의 정보를 확인할 수 있다.실행시 나오는 화면테이블을 생성하였는데, 새로운 정보를 삽입할 수 있다. 아래의 명령어를 사용하면 테이블 이름과 값을 설정하여 삽입한다.INSERT
MySQL에서 자주 사용되는 몇가지 명령어를 간략하게 살펴보자.SELECT는 데이터셋에 포함될 특성을 특정한다.일반 문자열숫자간단한 연산테이블과 관련한 작업을 할 경우 반드시 입력해야한다. FROM 뒤에는 결과를 도출해낼 데이터베이스 테이블을 명시한다.특정 특성을 테이
IN : 리스트의 값들과 일치하는 데이터를 필터하기쉽게 말해 ‘IN’연산자는 WHERE 절 내에서 특정값 여러개를 선택하는 SQL연산자이다.위의 테이블 customer에서 OR연산자를 사용하여 WHERE절에서 특정값을 여러개 선택하여 가지고 올 수 있는 것을 IN(’a
서로 관련이 있는 둘 이상의 테이블을 서로 공통된 부분을 기준으로 연결한다.해석 : FROM뒤에 오는 테이블\_1을 JOIN한다 테이블\_2와. JOIN하는 조건은 ON 뒤에 있는 공통된 테이블인 테이블\_1.특성\_A = 테이블\_2.특성\_B을 기준으로 한다.SQL
유어클래스에 있는 내용을 중심으로 문제를 풀어보자.sprint를 받아보면 폴더내에 .env.exmple 이라는 파일이 있다. 이 파일을 살펴보면 DARABASE에 관한 USERNAME, PASSWORD, NAME이 있는 것을 볼 수 있다.앞서 환경변수의 설정을 위해 d
Schema.sql에서 만들었던 user와 content의 테이블이 있을 것이다. mysql에 접속하여 데이터가 어떻게 되어 있는지 확인해보자.user 테이블에 존재하는 모든 컬럼을 포함한 모든 데이터를 확인하기 위한 SQLuser 테이블에 존재하는 모든 데이터에서 n
위의 사진 처럼 연결되어 있는 schema를 살펴보자. 위처럼 테이블을 만들어주기 위해 migrations/schema.sql의 part 5의 주석을 내용을 채워보자.category 테이블 만들기위의 코드를 이용해서 category라는 테이블을 만들어본다. 그 안의 데
이번 스프린트에서는 쇼핑몰 애플리케이션 Cmarket의 데이터베이스를 구축합니다. 모든 요청은 반드시 데이터베이스를 이용해야 합니다. 구현한 Cmarket이 영속적인 데이터를 가질 수 있도록, 더 이상 배열이나 객체 등을 이용해서 인메모리 형태로 데이터를 저장하지 마세
이제 route에서 궁금했던 부분을 시원하게 긁어줄 controller/index.js파일을 보자. MVC에서 controller의 역할은 View과 Model을 이어주는 역할을 한다. View에서 일어나는 Event는 route를 통해 분기되고 Event와 관련된 데
models는 이번 sprint에서 가장 어렵고 꽃과 같은 부분이었다. npm test의 내용에서도 post를 먼저 채우고 get부분을 채우라고 한다. 이유는, 데이터베이스를 확인하면 답이나온다. 아직 아무런 값이 들어가지 않았기 때문이다.그렇다면 왜 아직 아무런 값이
현재 orders 테이블을 보면, id, user_id, total_price, created_at이 들어가 있는 것을 확인할 수 있다.orders의 id는 PK로 자동생성되며 created_at도 마찬가지도 생성된 날짜에 따라서 자동으로 생성된다.user_id와 to
HTTP 프로토콜 내용을 암호화하여 보안성을 추가한 것이다.기존의 HTTP요청은 중간에 누군가가 요청을 들여다 본다면 그 내용을 그대로 볼 수 있었다. 그렇게 되면 중요한 개인정보가 쉽게 노출될 수 있었다. 하지만 HTTPS는 통신내용을 한번 암호화 하기 때문에 개인정
HTTP요청은 무상태성을 가지고 있는데 어떻게 정보가 유지되고 있을까? 바로 cookie 덕분이다. 웹사이트에 들어갔을 때, 서버가 일방적으로 클라이언트에 전달하는 작은 데이터서버가 웹 브라우저에 정보를 저장하고 불러올 수 있는 수단.해당 도메인에 대해 쿠키가 존재한다
서버가 클라이언트에 유일하고 암호화된 ID를 부여중요 데이터는 서버에서 관리.전달방법세션도 결국 쿠키에 유저의 정보를 담아주는 것이다. 세션으로 유저를 저장한느 쇼핑몰에서 김코딩이 장바구니에 물건을 담으려고 하는 경우가 있다.김코딩이 마음에 드는 물건을 장바구니에 담아
이번 sprint는 뒤의 Token과 OAuth에 비해 쉽게 이해할 수 있는 sprint였다. 이번에도 비슷하게 server와 client를 왔다갔다 하면서 하려고 했지만, 나눠서 해도 무리가 없을것 같아 나누어서 시작한다.먼저 server부터 살펴보자.이번스프린트에서
앞서 손쉽게 server를 만져보았다 이번에도 client에 대해 살펴보자.sprint를 시작하기에 앞서 어떠한 파일들이 들어있는지 확인해 보자.위의 코드를 보면 현재, App.js는 class형으로 되어있는 react라는걸 볼 수 있다.현재 Mypage는 props로
먼저 npm 모듈을 설치하고 파일을 하나씩 살펴보자.제일 먼저들어오는 것은 역시나 index.js이다. 이전엔 express-session으로 cookie에 대한 값을 설정해주었었는데, 현재 session을 사용하지 않으므로 cookie에 대한 설정은 따로 해주고 있지
index.js를 풀었으면 사실, 모든 문제를 해결한 것과 다름이 없다. 이후는 앞서 코드를 짰던 것에 연장선이다.앞서 index.js를 해결하였으니 accessTokenRequest.js파일을 채워넣자.채워넣기전 여기서는 무슨 역할을 하는지 생각해보자. http-he
이전에 서버를 했다면 이번엔 클라이언트쪽의 내용을 살펴보자.이번에도 각각의 컴포넌트가 어떤일을 하고 있는지를 먼저 파악을 해보아야 할 것이다.제일먼제 App.js를 살펴보자. 현재 App.js를 보면 어떠한 역할을 하고 있을까?setState를 보면 현재 isLogin
이번에는 Sprint 풀이를 Server와 Client를 나누지 않고 한번에 써보는게 많은 도움이 될것 같다. 하여 스프린트를 받은 후 모든 파일을 살펴보자.먼저 Server의 index.js파일이다. 또한 라우터를 직접 받아 연결해주는걸 볼 수 있었다. localho
우리는 앞서 Git 기초에서 개발자들이 협업하기에 최적의 툴이라는 것을 배웠다. 소프트웨어를 개발할 때에 개발자들은 동일한 소스코드를 함꼐 공유하고 다루게 된다. 동일한 소스코드 위에서 어떤 개발자는 버그를 수정하기도 하고 또 다른 개발자는 새로운 기능을 만들어 내기도
팀월들과 함께 작업하기 위해 각자 Remote Repository로 Fork한 후, Local에서 작업하기 위해서 Git clon명령어로 Repository를 Local에 가져온다.기본적으로 개발을 진행하는 과정에서는 main 브랜치가 아닌 dev브랜치를 하나 만들어서
우리가 만들고 있는 웹 서비스는 배포가 되지 않는다면 더 이상 의미를 가질 수 없다. 따라서 웹 개발자는 배포에 대한 기본지식을 탑재하고 있고 간단한 배포정도는 혼자 할 수 있어야 한다. 이 시간에는 배포를 위한 클라우드 서비스 AWS를 이용해서 애플리케이션을 배포한다
개발자들은 물자의 수송에 획기적인 단축을 가져다준 컨테이너 기술을 소프트웨어 수송, 즉 배포에 사용할 수는 없을까 생각을하기 시작하였다. 그 결과로 리눅스 컨테이너라는 것을 만들어내기에 이르렀다. 리눅스 컨테이너 기술은 그 자체로 훌륭하고 완성된 기술이었지만, 애플리케