분류 전체보기

    [Linux] 리눅스 명령어 정리

    💡 Fundamental Concepts of Linux Kernel (커널) : The Core of Operating System OS (운영체제)는 핵심적인 부분을 담당하는 커널과 여러 다른 프로그램들(쉘, GCC, 패키지 등)로 이루어진다. linking, unlinking을 왔다갔다 하는 동적 소프트웨어는 주로 커널모드에서 실행된다. Shell (쉘) : 명령어 해석기 명령들을 읽어들이고 인터프리터에 전달한다. 리눅스에서는 GNU라는 쉘을 사용한다. Programs (프로그램) : 살아움직이는 객체 어떻게 수행되는지에 대한 인스트럭션들의 집합이다. 소스코드와 바이너리(machine language) 형태로 나뉜다. Processes (프로세스) 프로그램 실행 객체이다. 프로세스마다 할당된 가상 ..

    [Python] 백준 #1966 프린터 큐

    1966번: 프린터 큐 (acmicpc.net) 1966번: 프린터 큐 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 www.acmicpc.net 💡 알고리즘 자료구조, 큐 💡 접근방법 원소들을 Queue의 가장 뒤에 재배치하고, 가장 앞에 있는 원소는 pop해야한다. → 앞뒤로 pop, append가 자유로운 deque 사용 주어진 예시를 직접 그려보면, 두가지를 신경써서 구현해야 함을 알 수 있다. M번째 수가 몇 번째로 큰 중요도를 갖는가 → deque의 0번째 원소가 max인지 확인 M의 중요도와 같은 중요도가 있는가 → count변수로 해결 💡 코드 f..

    [TIL] 2021-08-29

    😊 Today I Learned 1. Youtube API 명세서 수정 validation 에러처리 100번대로 수정 일반적 에러는 보편적으로 100~500번대 사용 데이터베이스 에러 → 4000번대 사용 서버 에러 → 5000번대 사용 Response 에러 → 3000번대 사용 Request 에러 → 2000번대 사용 RESTful API에 맞도록 URL이름, 메소드 수정 Dao에서 값이 수정되는 쿼리가 실행되더라도, 삭제 관련 API일 경우에는 메소드를 PATCH가 아닌 DELETE로 변경 메소드가 DELETE, PATCH인 경우 URL에 /delete/, /patch/ 삭제 API 내용에 맞게 주어와 동사 수정 전체적으로 가독성이 좋아지도록 수정 😅 Comment 교내 해커톤 대회 경소톤 회의를 했..

    [TIL] 2021-08-27

    😊 Today I Learned 1. 영상 조회 필터링 추가 - 최신순, 오래된순, 조회순 filter번호를 query params로 받아옴 → swith문에 넘겨줌 → Dao로 연결되어 각각 다른 쿼리 실행 let videoRows; switch (filter) { case '1': videoRows = await videoDao.getOldVideo(userIdx); return res.json({ result: videoRows, isSuccess: true, code: 200, message: "오래된 순 영상 조회 성공" }); case '2': videoRows = await videoDao.getPopularVideo(userIdx); return res.json({ result: video..

    [TIL] 2021-08-26

    😊 Today I Learned Youtube API 수정하기 → JWT토큰 필요한 API 위주로 😢 Today's error Error 1. Cannot destructure property // 영상 삭제 app.patch('/videos/delete/:videoIdx', jwtMiddleware, video.deleteVideo); 로그인 API를 실행할 때 발급한 JWT토큰을 사용하는 API인데, Route에서 jwtMiddleware를 추가하지 않아 발생한 에러이다. Error 2. ReferenceError : connection is not defined videoDao.videoAccessCheck에서 Connection pool을 생성하지 않아서 발생한 에러이다. 데이터베이스에 연결된 C..

    [TIL] 2021-08-25

    😊 Today I Learned JWT를 사용하여 본인인증이 필요한 API들 수정하기 JWT payload부분에 userIdx를 넣어 토큰 발급 발급된 토큰을 이용하여 영상 삭제 API를 로그인해야 실행이 가능하도록 수정 ex) 영상 삭제 API, 프로필 수정 API 😢 Today's error Error 1 const passwordRows = await userProvider.passwordCheck(selectUserPasswordParams); console.log(passwordRows); if (passwordRows[0].Password !== hashedPassword) { return errResponse(baseResponse.SIGNIN_PASSWORD_WRONG); } userPro..

    [Network] REST API 설계하기

    💡 1. API란? Application Programming Interface API 구동원리 Route : 외부에서 요청이 들어오면 해당 URI에 맞는 Controller로 연결 ↔ 키오스크가 주문을 받아서 종업원에게 주문 전달 Controller : Route로부터 받은 데이터를 받고, Service / Provider에게 데이터를 넘겨주어 로직을 수행할 수 있도록 함, validation확인 (트랜잭션, 유효성 검사) ↔ 종업원은 주문이 적절한지, 누락된 사항은 없는지 확인하고 요리사에게 주문 전달 Service / Provider : 실제 핵심적으로 로직을 수행하는 영역 Dao : 데이터베이스와 실질적으로 연결되어 있는 객체 → 쿼리 수행 ↔ 요리사는 요리를 하고, 이 과정에서 냉장고에서 재료를..

    [Database] 데이터베이스와 SQL - DDL / DML / DCL

    Database & SQL (Structured Query Language) 데이터베이스는 엑셀과 비슷한 구조이다. 엑셀에서의 페이지 단위인 sheet가 데이터베이스의 table과 대응되고, sheet안의 데이터들이 각 table안의 데이터들이 된다. 이러한 데이터베이스는 SQL이라는 언어로 표현이 되고, SQL은 크게 세가지 종류의 명령어로 나눌 수 있다. 💡 1. DDL (Data Definition Language) → 데이터베이스의 테이블들을 정의하는 명령어이다. CREATE : 테이블 / 데이터베이스 생성 DROP : 테이블 / 데이터베이스 삭제 ALTER : 테이블 수정 💡 2. DML (Data Manipulation Language) → 테이블의 데이터들을 조작하는 명령어이다. SELECT..

    [Server] APM 소스설치 - 2. MySQL

    MySQL 소스설치 가상머신 우분투 환경에서 Apache 2.4.46 설치에 이어서 mysql 8.0.19를 설치하였다. 💡 1. 필수패키지 설치 MySql 수동설치에 필요한 패키지 CMake GNU make → apt-get으로 설치됨 GCC(C 컴파일러) → apache를 설치과정에서 설치됨 C++ or C99 컴파일러 → gcc가 설치됨 SSL library Boost C++ libraries ncurses library Perl → 이미 설치됨 $ apt-get update $ apt-get install cmake $ sudo apt-get install gcc g++ # 이미 최신버전이라고 뜬다. $ apt-get install libssl-dev # ssk library $ apt-get i..

    [Server] APM 소스설치 - 1. Apache

    1. APM 구동원리 Apache : 웹 서버 Php : 백엔드 프로그래밍 언어 Mysql : 데이터베이스 관리 시스템 손님이 홀서빙에게 주문 ↔ 클라이언트측의 사용자가 원하는 정보를 apache에 요청 홀서빙이 주방장에게 전달함 ↔ apache가 php에게 해당정보를 요청 주방장이 냉장고에서 재료를 가져와서 요리함 ↔ mysql을 통해 데이터를 가져와서 php코드를 html형태로 변환함 완성된 요리를 홀서빙을 통해 손님에게 전달함 ↔ 해당 html을 apache에 전송하고, 클라이언트에게 전달 2. Apache 소스설치 가상머신(Virtual Box) 기반의 우분투 환경에서 진행하였다. 💡 1. 필수패키지 설치 $ sudo su $ apt-get install gcc $ apt-get install -..

    [Server] VirtualBox 가상머신 속도개선

    Virtual Box 가상머신을 설치하고, 우분투를 실행시켰는데 너무 너무 너무 너무 느렸다. 😡😡 로그인화면에서 비밀번호를 치면 한글자당 10초씩은 기다려야 할 정도로 느리게 작동했다. 처음엔 노트북의 하드디스크 용량과 램 문제라고 생각해서 충분한 용량을 확보했고, 램 사용량도 줄여서 실행해보았지만 속도는 똑같았다. ⇒ Virtual Box에서 우분투의 여러 설정들을 변경한 결과, 만족스러운 속도를 만들 수 있었다. 1. 기본 메모리 확대 할당된 메모리를 1GB -> 3GB로 늘려주었다. 2. 프로세서 개수 가상머신에 할당한 CPU의 수를 늘려주었다. 3. 비디오 메모리 확대 4. 가속기능 반가상화 인터페이스를 기본값 → Hyper-v로 변경하였다. . . 위와같이 설정을 변경해주고, 다시 우분투를 켰..

    [Python] 백준 #11052 카드 구매하기

    11052번: 카드 구매하기 (acmicpc.net) 11052번: 카드 구매하기 첫째 줄에 민규가 구매하려고 하는 카드의 개수 N이 주어진다. (1 ≤ N ≤ 1,000) 둘째 줄에는 Pi가 P1부터 PN까지 순서대로 주어진다. (1 ≤ Pi ≤ 10,000) www.acmicpc.net [알고리즘] DP [접근 방법] N개의 카드 팩이 있고, N개의 카드를 구매하는 상황. D[i] = 카드 i개를 구매하는 최대 비용, dp[k] = 카드 k개가 들어있는 카드팩의 가격 일 때, 카드 i개를 구매하는 최대 비용의 경우의 수는 D[1] + dp[i - 1] D[2] + dp[i - 1] D[3] + dp[i - 3] ... D[i] + dp[0] [코드] 1 2 3 4 5 6 7 8 9 10 11 N = ..