본문 바로가기

전체 글

(267)
[프로그래머스 SQL] 오랜 기간 보호한 동물(2) / TIMESTAMPDIFF / TO_SECONDS 모 시험에서 시간 차이를 계산하는 문제가 나왔다. 이전에 SQL로 시간을 다루는 문제를 풀어본 적이 없어서 해당 문제는 풀지 못했다. 프로그래머스에 시간을 계산하는 비슷한 문제가 있어서 제시한다.https://school.programmers.co.kr/learn/courses/30/lessons/59411 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 입양 간 동물들을 보호한 시간 (나간 시간 - 들어온 시간)을 기준으로 내림차순 정렬하는 문제다. 시간을 계산하는 함수만 알고 있다면 정말 쉽게 풀리지만, 모르면 못푼다.이때, MYSQL에서 시간 관련 타입은..
[백준] 2292 벌집 수학적 풀이 https://www.acmicpc.net/problem/2292입력: N(1 ≤ N ≤ 1,000,000,000)출력: 주어진 방까지 이동할 때 최소 방의 수최소로 이동하는 방의 수는 다음과 같은 규칙을 가지고 있다.방 번호(N)이동하는 수(K)112 ~ 728 ~ 19320 ~ 374위 숫자에는 어느 정도 규칙성이 있다. 범위 내 마지막 번호(E) - 1 => 6의 배수이다.방 번호(S ~ E)(E - 1) / 6이동하는 수(K)1(1 - 1) / 6 = 012 ~ 7(7 - 1) / 6 = 128 ~ 19(19 - 1) / 6 = 3320 ~ 37(37 - 1) / 6 = 64(E - 1) / 6 값은 1 ~ 이동하는 수 K에 대해 1 ~ (K - 1) 까지의 등차수열 = (k - 1) * k / ..
[WEB] HTTP Method HTTP Method https://developer.mozilla.org/ko/docs/Web/HTTP/Methods 비교적 자주 사용되는 HTTP 메서드는 다음과 같다. GET: 서버에 특정 리소스를 요청. 정보를 가져올 때 사용 POST: 서버에 데이터를 제출. 데이터를 추가 / 업데이트할 때 사용 PUT: 특정 리소스 전체를 갱신(대체) PATCH: 특정 리소스의 일부를 수정 DELETE: 특정 리소스를 제거 MDN에서는 다음 3가지 특성을 기준으로 HTTP 메서드를 설명한다. 안전함(Safe): 메서드가 서버의 상태를 변경하지 않는다. 안전한 메서드는 멱등성을 가지지만, 역은 성립하지 않는다. ex) PUT은 멱등성을 가지지만, 서버의 상태를 변경한다. GET / HEAD / OPTIONS 캐시..
HTTP HATEOAS 하이퍼미디어는 멀티미디어(텍스트, 이미지, 영상 등)를 하이퍼 링크를 통해 이동할 수 있는 비선형 구조를 의미한다. HATEOAS는 직역하면 "어플리케이션 상태 엔진으로써의 하이퍼미디어"이다. 상태 엔진을 state machine으로 해석하면, 애플리케이션의 상태를 전이(조작)하는데 하이퍼 미디어를 이용한다 정도의 의미가 된다. 구체적으로는 서버가 응답할 때 요청된 자원과 해당 자원과 관련된 링크를 함께 보내는 형식으로 표현된다. { "id": 123, "name": "John Doe", "age": 30, "links": [ { "rel": "self", "href": "https://api.example.com/users/123" }, { "rel": "update", "href": "https://..
[WEB] REST & REST API REST(Representational State Transfer) 논문: https://ics.uci.edu/~fielding/pubs/dissertation/top.htm REST는 네트워크 환경에서 통신을 관리하기 위한 설계 지침을 의미한다. 이때, REST의 모든 제약조건을 지켜야 한다는 의미가 아니라, 지키면 네트워크 통신을 설계하기 유리하다는 측면으로 바라보는 것이 좋다. REST를 만족하는 아키텍처는 다음과 같은 제약조건을 따라야 한다. Client - Server Stateless Cache Uniform Interface Layered System Code On Demand Client - Server 클라이언트와 서버로 분리되어야 하며, 둘은 의존성이 없어야 한다. 관심사 분리를 통해 ..
AOP AOP(Aspect Oriented Programming) 소프트웨어에서 공통적인 관심사를 모듈화하고 분리하는 프로그래밍 방식. 개발을 하다 보면 특정 서비스나 도메인에 종속되지 않고, 여러 서비스에서 공통적으로 사용되는 기능이 존재한다. 예를 들어 트랜잭션, 로깅, API 사용자 권한 검증 같은 작업은 특정 서비스의 핵심 내용과 관련이 없으며, 프로그램 전역에서 공통적으로 사용된다. 이들은 핵심적인 서비스를 구현하기 위해 필요한 부수적인 기능을 수행한다. 이처럼 특정 모듈에 종속되는 대신 여러 모듈에서 공통적으로 사용될 수 있는 프로그램 상 특정 측면(Aspect)을 횡단 관심사(Cross-cutting concern)라고 부른다. 전통적인 객체지향 프로그래밍 방식에서는 서비스의 핵심과 횡단 관심사가 ..
객체 지향 프로그래밍의 배경 도입 현재 널리 사용되는 프로그래밍 패러다임에는 절차적 프로그래밍, 객체지향 프로그래밍, 함수형 프로그래밍이 있다. 이 중 가장 많이 사용되고, 중요하다고 생각하는 프로그래밍 패러다임을 하나 고른다면 대부분의 사람들은 객체지향 프로그래밍을 선택할 것이다. 많은 언어들이 클래스를 시작으로 상속, 인터페이스 등의 객체지향과 관련된 기능을 포함하고 있으며, 실제로 이를 이용하여 개발하는 경우가 많기 때문이다. 그렇다면, 객체지향 프로그래밍 방식은 왜 널리 사용되고, 중요한 패러다임으로 자리 잡았을까? 이번 글에서는 객체지향이 왜 등장한 배경을 다뤄보고자 한다. 소프트웨어의 복잡함 객체지향을 논하기에 앞서, 개발을 통해 달성하고자 하는 목표인 소프트웨어에 대해 생각해 보자. 세상에는 정말 다양한 요구사항이 있으..
[typescript] generic + constructor 타입에서 생성자 파라미터 타입 추론 결론 생성자에 대한 타입을 지정할 때 반환 값 T만 지정하는 대신, 파라미터 P에 대한 정보도 함께 지정하면 ConstructorParameters을 통해 제네릭 타입의 생성자 파라미터를 추론할 수 있다. IConstructor = new (...args: any) => T 정의는 생성자 파라미터가 any로 고정되어 있어 추론이 발생하지 않으나, args의 타입도 추론하도록 제네릭 타입 매개변수 P로 분리해두면 ConstructorParameters가 이를 추론한다. // 생성자 파라미터도 인식하는 클래스 생성자 타입 정의 export type IConstructor = new (...args: P) => T; // 테스트 클래스 export class Bullet extends GameObject { ..