Home

0

프로그래머스 - 키패드누르기 Cpp

문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/77484 프로그래머스 - 키패드누르기 Cpp 프로그래머스 - 키패드누르기 Python #include <iostream>#include <map>#include <queue>#include <string>#include <vector>using namespace std;bool isLeft(int number) { if (number == 1 || number == 4 || number == 7) { return true; } return false;}bool isRight(int number) { if (number == 3 || number == 6 || number == 9) { return true; } return false;}bool isMiddle(int number) { if (number == 2 || number == 5 || number == 8 || number == 0) { return true; } return false;}string solution(vector<int> numbers, string hand) { string answer = ""; map<int, pair<int, int>> keypad; keypad[1] = {0, 0}, keypad[2] = {0, 1}, keypad[3] = {0, 2}; keypad[4] = {1, 0}, keypad[5] = {1, 1}, keypad[6] = {1, 2}; keypad[7] = {2, 0}, keypad[8] = {2, 1}, keypad[9] = {2, 2}; keypad[0] = {3, 1}; pair<int, int> left_point = {3, 0}; pair<int, int> right_point = {3, 2}; cout << keypad[2].first << " " << keypad[2].second << endl; for (int number : numbers) { if (isLeft(number)) { left_point = keypad[number]; answer.append("L"); } if (isRight(number)) { right_point = keypad[number]; answer.append("R"); } if (isMiddle(number)) { pair<int, int> key_point = keypad[number]; int left_dist = abs(key_point.first - left_point.first) + abs(key_point.second - left_point.second); int right_dist = abs(key_point.first - right_point.first) + abs(key_point.second - right_point.second); if (left_dist == right_dist) { if (hand == "right") { right_point = keypad[number]; answer.append("R"); } else { left_point = keypad[number]; answer.append("L"); } } else if (left_dist < right_dist) { left_point = keypad[number]; answer.append("L"); } else { right_point = keypad[number]; answer.append("R"); } } } return answer;}

0

Redux Saga

목차 Redux Saga Redux Middleware 만들기 Redux 사용하기 - 계산기 만들기 Redux 사용하기 Redux Saga 액션을 모니터링하고 있다가 특정 Action 이 발생하면 특정 작업을 진행한다. 비동기 작업을 진행할 때 기존 요청을 취소 할 수 있다. 특정 Action 이 발생했을 때 다른 액션을 디스패치 하거나 자바스크립트 코드를 실행할 수 있다. Generator 에 기반한 미들웨어 Generator 함수의 흐름을 특정 구간에 멈춰 놨다가 다시 실행 할 수 있다.return 값을 여러번 보낼 수 있다. import { delay, put, takeEvery, takeLatest } from "redux-saga/effects";const SET_DIFF = "counter/SET_DIFF";const INCREASE = "counter/INCREASE";const DECREASE = "counter/DECREASE";const INCREASE_ASYNC = "NCREASE_ASYNC";const DECREASE_ASYNC = "DECREASE_ASYNC";export const setDiff = (diff) => ({ type: SET_DIFF, diff });export const increase = () => ({ type: INCREASE });export const decrease = () => ({ type: DECREASE });export const increaseAsync = () => ({ type: INCREASE_ASYNC });export const decreaseAsync = () => ({ type: DECREASE_ASYNC });function* increaseSaga() { yield delay(1000); yield put(increase()); // put 은 dispatch 와 비슷한 개념}function* decreaseSaga() { yield delay(1000); yield put(decrease());}export function* counterSaga() { yield takeEvery(INCREASE_ASYNC, increaseSaga); yield takeLatest(DECREASE_ASYNC, decreaseSaga);}const initialState = { number: 0, diff: 1,};export default function counter(state = initialState, action) { switch (action.type) { case SET_DIFF: return { ...state, diff: action.diff, }; case INCREASE: return { ...state, number: state.number + state.diff, }; case DECREASE: return { ...state, number: state.number - state.diff, }; default: return state; }} import React from "react";import { useSelector, useDispatch } from "react-redux";import Counter from "./Counter";import { increase, decrease, setDiff, increaseAsync, decreaseAsync,} from "../modules/counter";const CounterContainer = () => { const { number, diff } = useSelector((state) => ({ number: state.counter.number, })); const dispatch = useDispatch(); // const onIncrease = () => dispatch(increase()); // const onDecrease = () => dispatch(decrease()); const onIncrease = () => dispatch(increaseAsync()); const onDecrease = () => dispatch(decreaseAsync()); const onSetDiff = (diff) => dispatch(setDiff(diff)); return ( <Counter number={number} diff={diff} onIncrease={onIncrease} onDecrease={onDecrease} onSetDiff={onSetDiff} /> );};export default CounterContainer;

0

Redux Middleware 만들기

목차 Redux Saga Redux Middleware 만들기 Redux 사용하기 - 계산기 만들기 Redux 사용하기 Redux Middleware 만들기Middleware 생성Dispatch 되는 이력을 콘솔로 찍는 로거를 만든다. const myLogger = store => next => action => { console.log(action); const result = next(action); // 반환하는 result 는 Container 에서 Disaptch 됐을 때 결과 물이 result return result;}export default myLogger; Middleware 적용applyMiddleware 함수를 이용해 Redux 에 미들웨어를 적용한다. import React from 'react';import ReactDOM from 'react-dom';import './index.css';import App from './App';import reportWebVitals from './reportWebVitals';import { createStore, applyMiddleware } from 'redux';import rootReducer from './modules';import { Provider } from 'react-redux';import myLogger from './middlewares/myLogger';const store = createStore(rootReducer, applyMiddleware(myLogger));ReactDOM.render( <Provider store={store}> <App /> </Provider>, document.getElementById('root'));reportWebVitals();

0

네트워크 - HTTP 메시지 구조

네트워크 - OSI 7 계층과 TCP/IP 5계층 네트워크 - HTTP 네트워크 - HTTP Version 네트워크 - HTTP 메시지 구조 네트워크 - HTTPS Post not found: computer-science/network/tcp HTTP 메시지 구조 HyperText Transfer Protocol 의 약자로 HTML 문서를 전송하기 위해 만들어진 규약조건이다.HTTP는 TCP/IP 기반으로 되어있다. HTTP 통신 방식HTTP는 기본적으로 요청/응답 구조 Client 요청 MessageJson 데이터 curl –http1.1 http://localhost:8888/greeting -v -H “Content-Type: application/json” -d ‘{“hello”:”json”}’ POST /greeting HTTP/1.1Host: localhost:8888Accept: */*Content-Length: 16Content-Type: application/jsonUser-Agent: curl/7.71.1{"hello":"json"}

0

네트워크 - HTTP Version

HTTP Version 네트워크 - OSI 7 계층과 TCP/IP 5계층 네트워크 - HTTP 네트워크 - HTTP Version 네트워크 - HTTP 메시지 구조 네트워크 - HTTPS Post not found: computer-science/network/tcp HTTP/0.9 간단하게 HTML 객체 를 받아오기 위해 만들어진 프로토콜이다. 때문에 GET메서드 만을 지원한다. 멀티미디어 콘텐츠에 대한 MIME 타입이나, HTTP 해더, 버전 번호는 지원하지 않는다. HTTP/1.0 버전 번호, HTTP 헤더, 추가 메서드, 멀티미디어 객체 처리를 추가했다. 웹페이지와 상호작용하는 폼을 실현 하나의 커넥션에 하나의 요청과 하나의 응답만 가능 요청GET /greeting HTTP/1.0Host: localhost:18888Connection: closeAccept: */*User-Agent: curl/7.71.1 응답

0

네트워크 - HTTPS

네트워크 - OSI 7 계층과 TCP/IP 5계층 네트워크 - HTTP 네트워크 - HTTP Version 네트워크 - HTTP 메시지 구조 네트워크 - HTTPS Post not found: computer-science/network/tcp 네트워크 - HTTPSHTTPS의 마지막 S는 Over Secure Socket Layer의 약자로 보안이 강화된 HTTP라는 것을 알 수 있다. SSL/TLS 에서 HTTP 가 작동할 경우 HTTPS 라고 부른다. HTTPS 와 SSL 이 같은 것이 아닌 SSL 위에 올라가는 프로토콜 중 하나가 바로 HTTPS 다. 암호화 이점 기밀성의 원칙 에서 보면 통신 내용이 공격자에게 노출(snipping) 되는 것을 막을 수 있다. 무결성의 원칙 에서 보면 통신 내용을 타인이 함부로 변경 하는 것을 막을 수 있다. 기밀성의 원칙과 무결성의 원칙을 통해 서버와 클라이언트는 서로 신뢰를 할 수 있다. SSL (Secure Socket Layer)-

0

네트워크 - HTTP

네트워크 - OSI 7 계층과 TCP/IP 5계층 네트워크 - HTTP 네트워크 - HTTP Version 네트워크 - HTTP 메시지 구조 네트워크 - HTTPS Post not found: computer-science/network/tcp HTTP란 HyperText Transfer Protocol 의 약자로 HTML 문서를 전송하기 위해 만들어진 규약조건이다.HTTP는 TCP/IP 기반으로 되어있다. Client - Server 구조 Stateless (무상태) 프로토콜 비 연결성 Client - Server 구조 클라이언트는 서버에 요청을 보내고 서버로부터 응답을 기다리는 단방향 통신 구조 Request Response 구조 Stateless (무상태) 프로토콜

0

네트워크 - OSI 7 계층과 TCP/IP 5계층

네트워크 - OSI 7 계층과 TCP/IP 5계층 네트워크 - HTTP 네트워크 - HTTP Version 네트워크 - HTTP 메시지 구조 네트워크 - HTTPS Post not found: computer-science/network/tcp 네트워크 - OSI 7 계층과 TCP/IP 5계층 OCI 7 계층 다양한 컴퓨터 시스템이 표준 프로토콜을 사용하여 통신할 수 있도록 국제 표준화 기구(ISO) 에서 만든 개념 모델이다. OSI 표준 모형은 7계층으로 이루어져 있다. 계층별로 역할을 분리해서 각 계층이 독립적으로 기능을 수행하고, 계층 간 통신을 통해 전체 통신 프로세스를 가능하게 한다. TCP/IP 5 계층 프로토콜 프로토콜 : source와 target간의 데이터를 어떻게 주고 받을 지에 대한 규약(방법)이다. 크게는 동기식 과 비동기식 으로 나뉘게 된다.

0

Spring - Embeded Redis 사용하기

Spring Boot - Embeded Redis 사용하기보통 Redis를 사용하는 스프링 프로젝트를 Local에서 프로젝트 실행시 Redis를 선행적으로 설치해줘야 한다. 이 문제를 Embedded Redis를 사용해 프로젝트가 Local 환경에 의존적이지 않고 프로젝트 만으로 구동할 수 있도록 한다. 의존build.gradle implementation 'org.springframework.boot:spring-boot-starter-data-redis'//embedded-rediscompile group: 'it.ozimov', name: 'embedded-redis', version: '0.7.2'} application.yml spring: redis: host: localhost port: 6379 profiles: active: local local에서 프로젝트를 진행하기 위한 설정이다. Profile 어노테이션을 통해 -Dspring.profiles.active=local 옵션이 주어졌을 때 해당 설정을 사용할 수 있다 EmbeddedRedisConfig

0

Spring AOP Pointcut 표현식 - this, target

목차 Spring AOP Pointcut 표현식 - this, target Spring AOP Pointcut 표현식 - 매게변수 전달 Spring AOP Pointcut 표현식 - bean Spring AOP Pointcut 표현식 - @annotation, @args Spring AOP Pointcut 표현식 - @target, @within Spring AOP Pointcut 표현식 - args Spring AOP Pointcut 표현식 - within Spring AOP - Pointcut 표현식 execution Spring 핵심원리 고급편 - Pointcut Spring 핵심원리 고급편 - this, target