본문 바로가기

study

(27)
[WEB] REST API 0. API 어플리케이션과 프로그래밍으로 소통하는 방법 Web API: 웹 어플리케이션 개발에서 다른 서비스에 요청을 보내고 응답을 받기 위해 정의된 명세. 현재 웹개발은 추가로 직접 모든 것을 개발하지 않고 여러 Open API를 가져와서 활용하는 추세 (모든 api가 다 오픈되어있는건 아님) 이제는 사용자에게 HTML 파일을 보내는게 아니라 JSON 파일을 보냄 JSON 쓰는 이유? 데이터 전송을 위해 만들어진 형식이기 때문 HTML은 사람 보라고 만든 문서 1. REST API 개념 REST: '자원'과 '주소'를 지정하는 방법 웹 설계 상의 장점을 최대한 활용할 수 있는 아키텍처 방법론(규약이 x - 꼭 지키지 않아도 된다) 네트워크 아키텍쳐 원리의 모음 자원을 정의 (data에 어떻게 접근할 것..
[javascript] 자바스크립트로 알고리즘 풀 때 유용한 정보들 Algorithm with Javascript 자바스크립트로 알고리즘 푸는 걸 급하게 준비하면서 알게 된 유용한 팁들 모음 틀린 정보는 댓글로 알려주신다면 감사하겠습니다 🙇‍♀️ 1. 입출력 const readline = require("readline"); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); rl.on("line", function(line) { // 입력 받아서 처리하는 곳 rl.close(); }).on("close", function() { // 출력하는 곳 process.exit(); });저 코드 하나하나의 정확한 의미는 잘 모르지만 대강 해석하자면 rl에 입력을 받은 후 l..
CS_study 8회차 1. [DB] 스키마&DB언어 데이터베이스의 스키마란 무엇인지 설명하고 DDL, DML, DCL을 설명해보아라. 스키마란 데이터베이스의 설계도라고 할 수 있습니다. 데이터베이스가 가진 속성과 각각의 속성들의 제약조건을 담고 있는 것이 스키마입니다. DDL, DML, DCL은 모두 데이터베이스와 관련된 언어입니다. 먼저 DDL은 데이터 정의어로 데이터베이스 테이블을 생성, 수정, 삭제하는 명령어 입니다. DDL 명령어로는 CREATE, ALTER, DROP이 있습니다. DML은 데이터 조작어로 데이터베이스에 저장된 데이터들을 생성, 조회, 수정, 삭제하는 명령어 입니다. INSERT, SELECT, UPDATE, DELETE가 있습니다. 마지막으로 DCL은 데이터 제어어로 데이터베이스의 무결성을 위해 사용..
CS_study 7회차 1. [IT트렌드] MSA MSA에 대해 들어본 적 있나요? 설명해보세요. MSA란 '마이크로 서비스 아키텍처'의 약자로, 복잡한 웹 시스템에 맞춰 등장한 아키텍처입니다. 기존의 아키텍처는 전체 애플리케이션이 하나의 덩어리로 이루어져 있는 '모노리틱 아키텍처' 입니다. 애플리케이션이 하나이기 때문에 개발, 배포 및 테스트가 간단하다는 장점이 있지만 시스템 구조가 복잡해졌을 때 단점이 생깁니다. 작은 기능의 수정에도 시스템 전체를 빌드해야하기 때문에 비효율적이고, 특정 기능이 마비되면 다른 기능들이 영향을 받게 되기 때문입니다. 이러한 단점을 해결하기 위해 마이크로 서비스 아키텍처가 등장했습니다. 단일 프로그램을 각 컴포넌트로 나누어 작은 서비스의 조합으로 구축하는 방법입니다. 각 컴포넌트는 개별적으로 개..
CS_study 6회차 1. [Front] DOM/가상 DOM DOM과 가상 DOM에 대해서 비교 설명하시오. DOM이란 Document Object Model로 웹페이지를 이루는 태그들을 트리구조로 만든 모델을 의미합니다. DOM과 가상 DOM을 비교하기 위해 브라우저가 화면을 렌더링 하는 방법을 말씀드리겠습니다. 우선, html태그를 파싱하여 DOM 트리를 구성하고, 동시에 스타일시트에서 CSS를 파싱하여 스타일 규칙을 만듭니다. 이 두가지가 합쳐져서 렌더 트리를 만듦으로써 렌더링합니다. 그러나 이는 DOM 트리가 수정될 때마다 렌더 트리가 계속 갱신되기 때문에 불필요한 렌더링이 많아진다는 단점을 가지고 있습니다. 이를 해결하기 위해 등장한 것이 가상 DOM입니다. 화면에 변화가 생길 때 마다 실시간으로 DOM 트리를 수정..
CS_study 5회차 1. [개발상식] Java vs C Java와 C의 차이를 설명하시오. Java는 객체지향언어이고, C는 절차지향언어라는 점이 가장 큰 차이라고 생각합니다. 절차지향언어는 실행 순서와 절차가 중점이 되는 반면, 객체지향언어는 추상화된 데이터인 '객체'의 종류와 속성이 중점이 됩니다. 가령 '자판기' 프로그램을 만든다고 할 때, 절차지향언어는 '고객이 돈을 넣으면 돈을 검사해서 제품과 거스름돈을 준다'는 순차적인 절차를 중시합니다. 따라서 오류가 발생했을 때 순차적으로 수정해야하는 어려움이 있습니다. 반면 객체지향언어는 '고객', '돈', '제품' 이라는 객체를 만들고 이들간의 상호작용을 통해 자판기를 만들어낸다고 할 수 있습니다. 따라서 오류 발생 시 해당 객체만을 찾아 수정하면 되기 때문에 유지보수가 ..
210617_백준 17143. 낚시왕 (삼성 기출) 📝 알고리즘 일지_210617 백준 #17143. 낚시왕 (삼성 기출) 키워드: 구현 링크: https://www.acmicpc.net/problem/17143 1. 문제 분석 + 필요한 개념 상어의 이동방식: 벽에 닿으면 방향이 바뀜 이 때 순서가 중요했다. 벽에 닿을 때 방향을 반대로 설정한다음 이동해야 index error가 나지 않는다. 삼성 기출 답게 하라는 대로 구현하면 된다. 2. 접근 방법 속력 조절: 한정된 길이를 왔다갔다 하기 때문에 속력이 커졌을 때를 대비하여 (행/열의 길이 -1)%2 로 나누어주었다. 상어의 이동: 문제에서 하라는 대로 이동을 1칸 단위로 구현했는데, 1번의 속력 조절을 활용한다면 n칸 이동을 한번에 계산할 수 있다. 다른 스터디원들이 실제로 그렇게 구현했다. 구현..
CS_study 4회차 1. [운영체제] 스레드와 멀티 스레드 스레드와 멀티 스레드의 차이에 대해 설명하고, 멀티 스레드의 장단점을 설명해보세요. 스레드는 프로세스의 실행단위입니다. 프로세스가 하나의 프로젝트에 비유한다면 그 프로젝트를 위해 일하는 개발자를 스레드라고 할 수 있을 것 같습니다. 멀티스레드는 이러한 스레드가 여러 개가 있어, 프로세스 내 작업을 분할하여 작업하는 것입니다. 멀티스레드의 장점은 프로세스 내의 자원을 공유하기 때문에 자원 중복를 막을 수 있다는 것입니다. 또한, 일꾼이 여러명이면 일 처리가 빠르듯 멀티스레드는 사용자의 요청에 대한 응답 속도가 빠릅니다. 하지만 자원을 공유하기 때문에 하나의 스레드에 문제가 생기면 다른 스레드에도 영향을 미친다는 점이 단점으로 작용할 수 있습니다. 2. [네트워크] H..
210505_카카오 기출. 수식 최대화 📝 알고리즘 일지_210505 Programmers #2020 카카오 인턴십. 수식 최대화 링크: https://programmers.co.kr/learn/courses/30/lessons/67257 키워드: 분할정복 1. 문제 분석 + 필요한 개념 하나의 수식 속 연산자들의 우선순위를 정하고, 그 순위에 따라 계산한 값 중 최댓값을 구한다. 처음 문제를 풀 때는 연산자와 숫자들을 따로 리스트에 담은 다음, 우선순위에 따라 연산자와 피연산자들을 pop하는 방법을 생각했다. 그러나 pop으로 기존의 리스트를 훼손시키면 인덱스 번호가 다 망가지기 때문에 구현하기가 힘들었다. 재도전했을 때는 알고리즘 시간에 배웠던 분할 정복을 활용해보았다. 연산자 기준으로 수식을 쪼개가며 계산을 하고, 그 계산 값으로 다음 ..
210502_카카오 기출. 무지의 먹방 라이브 📝 알고리즘 일지_210502 Programmers #2019 KAKAO BLIND RECRUITMENT. 무지의 먹방 라이브 링크: programmers.co.kr/learn/courses/30/lessons/42891 키워드: 그리디알고리즘 / 우선순위큐 1. 문제 분석 + 필요한 개념 1~N번의 음식을 돌아가면서 먹는다. K초까지 먹은 후, 그 다음에 먹을 음식의 번호는? 처음에는 '돌아가면서 먹는다' 라는 표현 때문에 문제 그대로 1초에 하나씩 먹는 코드를 구현해버렸다...😅 정확도는 99% 맞았는데 효율성은 0점인 처참한 결과를 받았다. 고민하다 결국 '이코테' 책의 풀이를 참고했다. 여기서는 우선순위 큐를 이용하여 그리디하게 풀었다. 그리디하게 풀면 기존의 풀이처럼 일일이 초단위로 데이터를 변..