이번 주 목표
A Tour of Go 이해하고 변형하기
오늘 목표
A Tour of Go 이해하고 변형하기
오늘 한 것
A Tour of Go 이해하고 변형하기
오늘 스케줄
6:00 기상, 샤워, 아침 식사
7:00 산책
9:00 공부
12:00 점심 식사
13:00 ~ 16:00 자유
Devleveling
16:00 ~ 18:00 개발
18:00 ~ 19:00 저녁 식사
19:00 ~ 23:00 개발
0-0. Nest.js - provider
Controller 외에 Service, Repository, Factory, Helper 등의 Dependency를
Nest Core가 Register 할 수 있도록 등록하는 곳
@Injectable()
이런 Dependency들을 등록하기 위해서 사용하는 데코레이터
주요 아이디어 : 종속성으로 주입 될 수 있다는 것
객체가 서로 다양한 관계를 생성할 수 있으며
이러한 객체를 "연결"하는 기능이
주로 Nest 런타임 시스템에 위임될 수 있음을 의미
// cats.service.ts
import { Injectable } from '@nestjs/common';
import { Cat } from './interfaces/cat.interface';
@Injectable()
export class CatsService {
private readonly cats: Cat[] = [];
create(cat: Cat) {
this.cats.push(cat);
}
findAll(): Cat[] {
return this.cats;
}
}
// cat.interface.ts
export interface Cat {
name: string;
age: number;
breed: string;
}
// cats.controller.ts
import { Controller, Get, Post, Body } from '@nestjs/common';
import { CreateCatDto } from './dto/create-cat.dto';
import { CatsService } from './cats.service';
import { Cat } from './interfaces/cat.interface';
@Controller('cats')
export class CatsController {
constructor(private catsService: CatsService) {}
@Post()
async create(@Body() createCatDto: CreateCatDto) {
this.catsService.create(createCatDto);
}
@Get()
async findAll(): Promise<Cat[]> {
return this.catsService.findAll();
}
}
참고자료 :
https://docs.nestjs.com/providers#custom-providers
https://medium.com/crocusenergy/nestjs-providers-%EA%B0%9C%EB%85%90-%EB%B0%8F-%EC%8B%A4%EC%8A%B5-e811bccb809a
0-1. https
HTTP 프로토콜의 보안 버전
암호화 프로토콜을 사용하여 통신을 암호화
이전에는 SSL로 불렸으나 TLS로 불림
비대칭 공개 키 사용하여 통신을 보호
두 개의 서로 다른 키를 사용하여 통신을 암호화
개인 키 - 웹사이트 소유자가 관리, 비공개로 유지, 웹 서버에 있으며 공개키로 암호화된 정보를 해독하는 데 사용
공개 키 - 안전한 방식으로 서버와 상호 작용하고자 하는 모든 사람이 사용할 수 있다.
공개 키로 암호화된 정보는 개인 키로만 해독할 수 있다.
HTTPS가 중요한 이유 : 패킷을 탈취하여도 무의미한 문자로만 인식이 된다.
HTTPS에서 사용하는 포트 : 443
0-2. SSL 인증서
포함 정보
- 인증서가 발급된 대상 도메인 이름
- 발급받은 사람, 조직, 장치
- 발급한 인증 기관
- 인증 기관의 디지털 서명
- 관련 하위 도메인
- 인증서 발급 날짜
- 인증서 만료 날짜
- 공개 키(개인 키는 비밀로 유지됨)
SSL에 사용되는 공개 키와 개인 키는 기본적으로 데이터를 암호화하고 서명하는 데 사용되는 긴 문자열
공개 키로 암호화된 데이터는 개인 키로만 해독할 수 있습니다.
인증서는 웹사이트의 원본 서버에서 호스팅되며, 웹사이트 로드를 요청하는 모든 장치로 전송됩니다.
대부분의 브라우저에서는 사용자가 SSL 인증서를 볼 수 있습니다.
Chrome의 경우 URL 표시줄 왼쪽에 있는 자물쇠 아이콘을 클릭하면 됩니다.
웹 사이트에서 SSL 인증서가 필요한 이유는?
웹 사이트에는 SSL 인증서가 있어야만 사용자 데이터를 안전하게 유지하고,
웹 사이트의 소유권을 확인하며,
공격자가 사이트의 가짜 버전을 만드는 것을 방지하고,
사용자의 신뢰를 얻을 수 있습니다.
참고 자료 : https://www.cloudflare.com/ko-kr/learning/ssl/what-is-an-ssl-certificate/
1. Go 에서 json 사용하는 방법
json을 명시해 주지 않으면 필드 이름이 대문자로 사용된다.
Struct tags such as json:"artist" specify what a field’s name should be when the struct’s contents are serialized into JSON. Without them, the JSON would use the struct’s capitalized field names – a style not as common in JSON.
참고 자료 : https://go.dev/doc/tutorial/web-service-gin
// album represents data about a record album.
type album struct {
ID string `json:"id"`
Title string `json:"title"`
Artist string `json:"artist"`
Price float64 `json:"price"`
}
2. Hello, 世界 를 Hello, Buddy로 변형
3. 출력되는 시간에 하루 뒤의 날짜 출력하기
time.Day는 없어서 time.Hour에 24를 곱했다.
var today = time.Now()
var tommorow = today.Add(time.Hour * 24)
4. math/rand 응용
100의 범위 추출하기
5. factored import 문
// 지양
import "fmt"
import "math"
// 지향
// factored import 문
import (
"fmt"
"math"
)
6. 첫 글자를 대문자로 쓴 것만 export 가능
대문자가 아닌 경우에는 패키지 바깥에서 접근이 안 됨
7. 변수 이름 뒤에 type
다른 언어와 달리 Go에서 뒤에 type을 지정하는 이유 : 가독성 > 코드 작성 효율 증가
참고 자료 : https://go.dev/blog/declaration-syntax
8. 같은 type의 매개변수를 사용할 때 타입 선언 한 번만 가능
func add(x, y int) int {
return x + y
}
9. 한 함수는 몇 개의 결과든 반환 가능 (복수개의 결과)
10. naked return : 이름이 주어진 반환 값
return 문은 괄호 안에 정해진 값을 반환
! naked return문은 짧은 함수에서만 사용되어야 한다.
긴 함수에서는 가독성이 떨어지기 때문이다.
11. var 변수에 대한 목록을 선언, 마지막은 type
var 변수명, 변수명, 변수명 타입
12. 변수 선언에서 초깃값이 존재한다면 타입 생략 가능
정리
// 지양
import "fmt"
import "math"
// 지향
// factored import 문
import (
"fmt"
"math"
)
json을 명시해 주지 않으면 필드 이름이 대문자로 사용된다.
time.Day는 없어서 time.Hour에 24를 곱한다.
첫 글자를 대문자로 쓴 것만 export 가능
// 같은 type의 매개변수를 사용할 때 타입 선언 한 번만 가능
func add(x, y int) int {
return x + y
}
var 변수명, 변수명, 변수명 타입
변수 선언에서 초깃값이 존재한다면 타입 생략 가능
한 함수는 몇 개의 결과든 반환 가능 (복수개의 결과)
naked return : 이름이 주어진 반환 값
return 문은 괄호 안에 정해진 값을 반환
! naked return문은 짧은 함수에서만 사용되어야 한다.
긴 함수에서는 가독성이 떨어지기 때문이다.
KPT
Keep
원점으로 돌아가서 공부하려 하는 것
Problem
CS지식을 잘 모르는 것
Try
모르는 게 있으면 짚고 넘어가자
소감
https를 제대로 대답하지 못했을 때 정말 창피했다. 정신 차리고 뭐든 배우자.
'verdantjuly > Today I Learned' 카테고리의 다른 글
TIL 20240129 (0) | 2024.01.29 |
---|---|
TIL 20240128 (0) | 2024.01.28 |
TIL 20240125 (0) | 2024.01.25 |
TIL 20240122 (0) | 2024.01.23 |
TIL 20240118 (0) | 2024.01.18 |