본문 바로가기

분류 전체보기

(88)
Node js [mongoose-crud 만들기] 몽고DB자체에는 스키마를 지정하는 기능이 없지만 몽구스 라이브러리를 사용하면 스키마를 지정할 수 있다. 1. 스키마 var mongoose = require("mongoose"); var Schema = mongoose.Schema; // 스키마 객체생성 const personSchema = new Schema({ name: String, age: Number, email: { type: String, required: true }, }); module.exports = mongoose.model("Person", personSchema); 스키마 객체를 생성하고 module.exports로 PersonSchema 스키마객체를 내보낸다. 2. 몽구스 CRUD const express = require("..
Node js mongoDB CRUD const { MongoClient } = require("mongodb"); const uri = "mongodb+srv://:^@/test(데이터베이스이름 test로 지정)?retryWrites =true&w=majority"; // useNewUrlParser: true 옵션은 몽고디비 드라이버 3.0버전이후로 생긴 새로운 URL파서를 사용한다는 옵션 const client = new MongoClient(uri, { useNewUrlParser: true }); async function main() { try { await client.connect(); console.log("MongoDB 접속 성공!!!"); //collection -> 관계형 데이터베이스의 테이블과 동일한 의미 const ..
쿠버네티스 개념 및 실습 개념 1. 쿠버네티스는 여러 컨테이너를 관리하기위한 오케스트레이션 도구이다. 2. 클러스터는 여러대의 서버가 모여 쿠버네티스같은 하나의 논리적 단위를 구성하는것을 의미한다. 클러스터 관리자는 노드라고 하는 각각의 서버를 관리한다. 3. 쿠버네티스 애플리케이션은 컨테이너에서 실행되고 한 컴포넌트를 여러 컨테이너에서 여러번 실행하여 스케일링을 구현( 처리능력)하고 가용성을 확보할수 있는 장점이 있다. 또 쿠버네티스트는 컨테이너 외에도 여러가지 리소스를 관리하는데 대표적인 3가지로는 1.애플리케이션 구성정보를 관리하기 위해 기술한것을 yaml(애플리케이션 매니페스트라고 한다.) 파일로저장할수 있고 2.스토리지제공 그리고 3.민감한 정보를 포함하는것도 안전하게 보관할수 있다. 실습 쿠버네티스는 어떻게 컨테이너를..
Node js 비동기 [promise, async await] 자바스크립트는 싱글스레드라 콜스택이 하나라서 한번에 하나의 작업만 가능하다 그런데 Node js의 비동기를 사용하면 임의의 순서로 또는 동시에 작업을 실행할수 있다. 비동기 중에서 가독성이 좋지 못한 콜백함수를 대체하려고 나온게 promise함수이다 function getResult(user) { return new Promise((resolve, reject) => { resolve(`success register ${user.name}`); }); } resolve(성공) reject(실패) promise의 단점은 프로미스 성공 실패처리 함수를 둘다 사용할 수 있다. 그리고 then()과 catch()함수를 연결하는 체이닝 방식(함수를 연결해서 계속 호출하는 방식)을 사용해서 로직이 길어져서 복잡해질..
러스트 impl 트레이트 반환타입 제네릭타입을 많이 쓰다보면 괄호가 많이 달린 반환 타입을 볼수 있다.use std::iter; use std::vec::IntoIter; fn cyclical_zip(v:Vec, u: Vec) -> iter: Cycle { v.into_iter().chain(u.into_iter()).cycle() } 이럴때 반환타입을 impl Trait으로 리펙토링하면 거기에서 구현하고 있는 트레이드만 지정할 수 있게 된다. use std::fmt::Display; fn print(val: impl Display) { println!("{}", val); } fn main() {} 하지만 단점도 존재하는데 함수에서 반환되는 Circle, Triangle, Rectangle 타입이 제각각일수 있어서 오류가난다. 명심해야..
러스트 제네릭 스트럭트 pub struct Queue { older: Vec, younger: Vec Queue는 임의의 요소 타입 T에 대해서라고 읽으면 된다. 예를들어 Queue에서 T의 타입은 String타입 Queue에서 T의 타입은 char타입 Vec 벡터타입도 제네릭스트럭트이다. impl 블록은 함수의 집합체이고 스트럭트 타입의 메서드가 된다. pub struct Queue { older: Vec, younger: Vec, } // struct 필드에 접근할 때는 .을 붙인다. impl Queue { // Self는 자신의 대상이되는 타입을 가르킨다 여기서 Self가 가르키는것은 Queue이다. pub fn new() -> Self { //객체를 사용하기위해 생성자 함수 정의 Queue { older: Vec::ne..
도커 이미지 태그를 사용하여 버전관리 패키징 했던 Go 애플리케이션 이미지 gallery에 major. minor. patch 형식의 버전태그를 부여했다. latest는 최신버전 2는 minor 업데이트 특정 패치 버전을 받고 싶으면 2.1이나 2.1.106로 선택하면 된다. major 버전 태그를 지정해 사용한다면 지속적인 업데이트를 받겠지만, 예기치 않은 기능 변경을 겪을 수 있다. 가능한 정확한 버전을 지정하는게 좋다. 도커 교과서 - 예스24 (yes24.com) 도커 교과서 - 예스24 도커 전문가가 알려주는 실전에 강한 도커 사용법!입문자에게 딱 맞는 구성으로 시작하자!200개의 실습으로 실전 투입을 위한 준비를 마치자!이 책은 저자가 수년에 걸쳐 완성한 ‘하루 1시간 학 www.yes24.com
Docker(도커) 및 Docker로 Apache서버 띄우기 실습 1. 도커를 사용하는 이유 (버전 관리가 용이하다) 도커는 리눅스 운영체제를 갖추고 있고 데이터 또는 프로그램을 격리시키는 기능이다 도커가 필요한 이유는 다함께 개발을 할때 예를들어 MYSQL 데이터 베이스 버전5.0, 또 다른 쪽은 버전 8.0이면 문제가 생기곤하는데 이때 도커를 사용하면 각각에 컨테이너를 만들어 따로 격리시킬수 있다. 그리고 여러 컨테이너 안에서 같은 프로그램을 실행할 수 있다. 워드프레스 프로그램을 사용하려면 아파치(웹서버), MYSQL(데이터베이스), 워드프레스가 필요한데 이들을 각각 별도의 컨테이너로 구성할 수 있다. 도커에 원칙중에 하나에 컨테이너에 한 프로그램이 원칙이다. 그런데 여기서 버전이 바뀌면서 컨테이너를 폐기하고 새로운 버전으로 만들면 데이터는 사라질 위험이 있어서 ..