ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 항해 99 5기 TIL_57
    항해 99 2022. 3. 8. 09:54

    ▶ Today I Learned

     

    <알고리즘>

     

    [ATM]

     

    소요시간: 25분

    해결여부: 해결

    백준 11399번

     

    이번 문제는 사실 팀원의 풀이를 먼저 들었었지만 정확히 기억은 나지 않았다.

    하지만 문제 자체는 쉽게 풀 수 있었다.

     

    const input = require('fs').readFileSync('./dev/stdin').toString().trim().split('\n')
    
    let p = input[1].split(' ').map(v => +v)
    let acc = 0
    let total = 0
    
    // 앞 사람의 시간이 뒷 사람의 시간보다 짧거나 같으면 됨
    // 그 다음 오름차순 정렬한 배열을 가지고 반복문을 수행하여 처음 인덱스부터 자신의 인덱스까지 더한 값들을 각각 모아
    // 그 값들을 총합해주면 됨
    p.sort((a,b) => a-b)
    
    for (let i = 0 ; i < p.length ; i++) {
    
       acc += p[i]
      total += acc  
    }
    
    console.log(total)

     

    <CS>

     

    [Docker]

     

    Go언어로 작성된 리눅스 컨테이너 기반으로하는 오픈소스 가상화 플랫폼,

    컨테이너 기술을 사용하여 애플리케이션에 필요한 환경을 신속하게 구축하고 테스트 및 배포를 할 수 있게 해주는 플랫폼

     

    다양한 프로그램, 실행환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순하게 해줌.

    백엔드 프로그램, 데이터베이스 서버, 메시지 큐등 어떤 프로그램도 컨테이너로 추상화할 수 있고 조립PC, AWS, Azure, Google cloud등 어디에서든 실행할 수 있음, 데이터는 도커 이미지라는 것으로 바뀌어 도커 허브라는 곳에 저장됨

    한 번 저장된 것은 얼마든지 불러낼 수 있음

     

    왜 사용하나?

    만약 서버를 옮겨 가거나 늘린다고 가정하면 새로 만드는 서버에 데이터베이스, 각종 툴 설치 등 매번 서버 환경을 세팅해야하는 번거로움이 생김

    => 도커는 기존의 것들을 그대로 옮겨 갈 수 있으며 어디서든 실행가능,

    예를 들어 A라는 서비스는 자바 7을 기반으로 작동하는 데 새로운 서비스는 자바 8를 기반으로 동작하는 경우

    도커는 각각의 컨테이너라는 독립된 공간 안에서 서비스들이 실행되는 것이기 때문에 서버 세팅을 바꾸어 줄 필요가 없음

    -> 서비스 운영이 매우 간편해짐

     

    cf) 컨테이너란?

     

    기존의 가상화 방식은 주로 OS를 가상화 혹은 반가상화 하는 것이었는데 이는 호스트 컴퓨터위에 가상 OS들을 물리적으로 나누어 사용하는 방식이라서 무겁고 느리다는 단점이 있었다.

    따라서 컨테이너를 사용하여 프로세스를 격리시켰고 CPU나 메모리는 프로세스가 필요로 하는 만큼만 사용되어 성능적으로도

    거의 손실이 없다.

    하나의 서버에 여러개의 컨테이너를 실행하여도 각각은 독립적으로 실행되어 마치 가벼운 VM을 사용하는 느낌을 준다.

     

     

    참고자료:

    https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html

    https://www.youtube.com/watch?v=tPjpcsgxgWc

    https://myjamong.tistory.com/297

     

    [스키마]

     

    데이터베이스의 구조와 제약 조건에 관해 전반적인 명세를 기술한 것

    데이터베이스 내에 어떤 구조로 데이터가 저장되는지를 나타내는 데이터베이스 구조

     

    조금 더 복잡하게 말하자면 개체의 특성을 나타내는 속성(Attribute),

    속성들의 집합으로 이루어진 개체(Entity),

    개체 사이에 존재하는 관계(Relation)에 대한 정의와 이것들이 유지해야 할 제약조건을 기술한 것

     

    특징

    1) 스키마는 데이터 사전(Data Dictionary)에 저장된다.

    데이터사전: 시스템 전체에서 나타나는 데이터 항목들에 대한 정보를 지정한 중앙 저장소로 이 정보에는 항목을 참조하는 데 사용되는 식별자, 항목에 대한 엔티티의 구성요소, 항목이 저장되는 곳, 항목을 참조하는 곳 등을 포함함

     

    2) 스키마는 현실 세계의 특정한 한 부분을 표현한 것으로서 특정 데이터 모델을 이용해서 만들어진다.

     

    3) 스키마는 시간 불변이다.

     

    4) 데이터의 구조적 특성을 의미한다.

     

    5) 인스턴스에 의해 규정된다.

     

    스키마의 3계층

     

    - 외부 스키마 (사용자 뷰)

    사용자나 응용프로그래머가 각 개인의 입장에서 필요로 하는 데이터베이스의 논리적 구조를 정의한 것

    전체 데이터베이스의 논리적인 부분으로 볼 수 있어 서브 스키마라고도 불림

    하나의 데이터베이스 시스템에 여러 개의 외부 스키마가 존재할 수 있으며 하나의 외부 스키마를

    여러 개의 응용 프로그램이나 여러 사용자가 공용할 수도 있음

    SQL을 이용하여 DB 쉽게 이용 가능

    프로그래머는 프로그래밍 언어를 사용하여 DB에 접근하기도 함

     

    - 개념 스키마 (전체적인 뷰)

    데이터 베이스의 전체적인 논리적 구조, 모든 응용 프로그램이나 사용자들이 필요로 하는 데이터를 종합한

    조직 전체의 데이터베이스로 하나만 존재

    개체간의 관계와 제약 조건을 나타내고 데이터베이스의 접근 권한, 보안 및 무결성 규칙에 관한 명세를 정의

    데이터베이스 파일에 저장되는 데이터 형태를 나타내는 것으로 단순히 스키마라고 하면 보통 개념 스키마를 의미함

    기관이나 조직체의 관점에서 데이터베이스를 정의한 것

    데이터베이스 관리자에 의해서 구성된다.

     

    - 내부 스키마 (저장 스키마)

    물리적 저장장치의 입장에서 본 데이터베이스 구조, 물리적인 저장장치와 밀접한 계층

    실제로 데이터베이스에 저장될 물리적인 구조를 정의, 저장 데이터 항목의 표현 방법, 내부 레코드의 물리적 순서를 나타냄

    시스템 프로그래머나 시스템 설계자가 보는 관점의 스키마

     

     

     

    참고 자료:

    https://coding-factory.tistory.com/216

    https://itkjspo56.tistory.com/94

     

     

     

    ▶ 느낀 점

     

    cs에 대해 서로 질문을 주고 받았는데 반 이상을 제대로 대답하기가 힘들었다.

    이걸 시작하면서 나름의 cs 공부를 했기에 꽤나 많은 것을 알게 되었지만

    아직도 알아야 할 것이 정말 많다.

    부트캠프 끝나고도 꾸준히 공부해야겠다 :3

     

    ▶ 공부 시 참고 링크들

     

    https://webclub.tistory.com/458

     

     

    '항해 99' 카테고리의 다른 글

    항해 99 5기 TIL_59  (0) 2022.03.10
    항해 99 5기 TIL_58  (0) 2022.03.09
    항해 99 5기 WIL_8  (0) 2022.03.07
    항해 99 5기 TIL_56  (0) 2022.03.06
    항해 99 5기 TIL_55  (0) 2022.03.06
Designed by Tistory.