일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- docker
- JavaScript
- smui
- PostgreSQL
- Svelte LifeCycle
- 인라인핸들러
- TypeScript
- :=
- GraphQL
- ...$$restProps
- apiTest
- golang
- 도커
- react
- mock
- onDestory
- docker-network
- 도커컨테이너
- cron
- Terraform
- IAC
- bitwiseNot
- nestjs
- svelte
- GIT
- 번역
- githook
- reactjs
- testing
- go
- Today
- Total
목록전체 글 (73)
Den`s blog
Array Go 에서 Array 는 그 크기를 제한해주어야 한다. 또한, 그 타입도 지정해야 하며, 그 안에 값들을 세팅하는 것도 나로서는 좀 색달랐다. names := [5]string{"shin", "yeong", "hyeon"} // Define names[3] = "den" names[4] = "den-shin" 첫 번째 라인과 같이 대괄호 안에 Array 의 크기를 넣어주고 대괄호 뒤에 타입을 지정해준다. 그리고 값들을 중괄호 안에 넣어서 정의 해준다. 그 후에 추가하는 것들은 그 아래 라인들과 같이 진행해주고, 만약 names[5] = "anything" 을 해준다면 컴파일 에러가 난다. 그런데, 크기 지정은 사실 실무에서 그렇게 사용하지 않는다, 크기가 없는 Array 는 어떻게 지정할까 ?..
For Go 에서는 다른 언어에서의 forEach, for in 같은 것은 존재 하지 않고 오직 for 만이 있다. 그리고 range 와 보통 사용하는데, go 만의 특색있는 for 문을 살펴보도록 하자, 근데 이런 점들이 참 Go 를 바라보는 시선이 호불호가 많이 갈리는 이유인가보다. func add(numbers ...int) int { // with range for index, number := range numbers { // execute } // ignore index for _, number := range numbers { // execute } // normal for for i := 0; i < len(numbers); i++ { // execute } ...생략 } If / Swit..
이전포스팅에서 끝날때 까지 끝나는게 아닌 함수 안의 defer 에 대해서 알아보았다. defer 를 함수 최상단에 써 두었었는데, 쉬운 이해를 위해서 그랬고 중간에 넣어도 진행이 가능하다. defer 는 해당 라인이 됐을 때 그저 스택에 쌓아 둔다. func a() { i := 0 defer fmt.Println(i) i++ return } 위 함수의 결과물은 0 이다. 실행 자체는 return 후라서 1이 되어야 할 것 같지만, 스택에 쌓인 시점의 i의 값은 0이기 때문이다. 또한, 스택이기 때문에 후입선출이 된다. func main() { fmt.Println("counting") for i := 0; i < 10; i++ { defer fmt.Println(i) } fmt.Println("done"..
Function Go 에서는 꽤 유용한 기능들이 많고 Go 만의 특이점도 많다. 아래에서 천천히 살펴보자. 1. 모든 타입 설정 정적 언어이다 보니 당연하게도 파라미터 타입과 리턴 타입을 설정해 주어야 한다. 그런데 만약, multiply 와 같은 곱셈 함수처럼 모든 파라미터가 같을 때 어느 정도 생략이 가능하다. func multiply(a int, b int) int { return a * b } function multiply2(a, b int) int { return a * b } 2. 여러 값 반환 다른 언어에서 여러 값들을 반환 하려면 보통 Array / Object 를 이용해서 반환하며, 리턴 타입이 Array / Object 가 된다. 그러나 Go 에서는 여러 값 반환이 가능하다..!? f..
Graphql 은 기본적으로 Http 통신이지만, WebSocket 도 가능한 방법이 있다. PubSub 을 이용하면 되는데, 이 것을 NestJS에서 글로벌 하게 사용 하는 법을 알아보자. 기본적인 사용법은 문서를 따라하면 쉽게 가능하다. PubSub는 글로벌하게 사용하는 것이 거의 필수적인데, WebSocket 이다 보니 여러개를 띄우면 안되기 때문이다. (listening -> publish) import { PubSub } from 'graphql-subscriptions'; import { Global, Module } from '@nestjs/common'; import { PUB_SUB } from './common.constants'; const pubSub = new PubSub(); @..
Svelte 에 대해서 알아보도록 하기 위해 공식 문서를 번역해보도록 했다. (잘할 수 있을런지 모르겠다.. 오역은 따끔하게 알려주세요) Write less code All code is buggy. It stands to reason, therefore, that the more code you have to write the buggier your apps will be. Writing more code also takes more time, leaving less time for other things like optimisation, nice-to-have features, or being outdoors instead of hunched over a laptop. In fact it's wide..
한 Object 가 많은 Depth 를 가지고 있고, 특정한 데이터를 가져오려면 많은 Depth 를 지나서 가져온다고 가정하자. 그렇다면, 보통 해당 Depth 들이 존재하는지 체크를 보통 한다, 그러나 이게 여간 귀찮은 일이 아니다. 예를 들어 아래와 같은 Object 가 있다고 보자. const test = { depth1: { depth2: { depth3: "test" } } }; test 의 depth1 의 depth2 의 depth3 에 접근하려면, 일단 test 있는지, 있다면 그 안에 depth1 이 있는지 …. 계속 해나가야 한다... 근데 이것을 한번에 아름답게 해결해줄 수 있는 것이 ES2020의 Optional Chaining 이다. 있는지 확인하고 싶은 것을 dot(.) 으로 연결..
ParseInt 의 약어가 존재한다는 것을 알아내게 되는 일이 있었다. parseInt('1') 은 +'1' 과 동일하다는 것이다. 이 글을 보고 으잉? 하는 사람들도 있을 것 같아서 아래 사진을 첨부해본다. 나만 몰랐던 거 아니라고 해주세요 그런데 +1 표현을 처음 봐서, 익숙치 않아서 그럴진 몰라도 가독성이 그리 좋아보이진 않아서 실무나 프로젝트에 쓸 것 같지는 않다… 그러나, 브라우저별로 속도가 다르고 일부 연산 값이 다르다. 브라우저 속도 결과 값
NestJS 에서는 AutoValidation 기능을 해주는 사랑스러운 아이가 있다..! @nestjs/common 에 있는 ValidationPipe 라는 아이. const app = await NestFactory.create(AppModule); app.useGlobalPipes( new ValidationPipe({ whitelist: true, forbidNonWhitelisted: true, transform: true, }), ); const app = await NestFactory.create(AppModule); app.useGlobalPipes( new ValidationPipe({ whitelist: true, forbidNonWhitelisted: true, transform: t..
코드의 실행시점에서만 알 수 있는 Type/Key 들이 있는데, 이를 정의를 하고 싶다, 꼼꼼해지려면 뭐 예를 들어 오브젝트를 받긴 할건데 이 것의 값들이 동적으로 변해야하는 상황 (예를 들면 여러 API 를 통합하는 것이 될 수 있다) 그럴 때 사용할 수 있는 것이 Indexable 이다. 코드부터 보고 시작하자. interface Indexable { [key: string]: any; } Index Signature [] 로 감싸주면 된다. const indexable: Indexable = { test1: 1, test2: 2, test3: 3, }; Object.keys(indexable).forEach((k) => console.log(indexable[k])); // 1, 2, 3 해당 문법..