본문 바로가기

아카이브/미륵관심법

(10)
비동기 함수에서 return 만 하는 controller의 await 처리 실험 결과 : await 처리한 것이 1ms 빠르다. 결론 : 1ms 의 차이라면 현재는 await를 의무화 하지 않아도 괜찮으나, 대용량 데이터를 처리하는 경우 await 처리가 좋을 것 같다. 테스트 한 API method : GET 데이터 개수 : 26개 JSON : { "fcmToken" : "fcmToken29", "name" : "iPhone 11 pro max", "mode" : "ALARM", "startTime" : "2023-09-16 00:00:00", "endTime" : "2023-09-20 00:00:00", "type" : "PHONE", "activeStatus":true, "user":[{ "userId" : "verdantjuly" }] } await 처리 하지 않았을 때 aw..
Exception Filters 1. exceptionHandler.ts를 만든다. // exceptionHandler.ts import { HttpException } from "@nestjs/common"; import { HttpStatus } from "@nestjs/common"; export class InternalServerErrorException extends HttpException { constructor() { super("일시적인 오류가 발생했습니다.", HttpStatus.INTERNAL_SERVER_ERROR); } } 2. catch 된 에러가 있다면 throw를 발생시킨다. catch (error) { throw new InternalServerErrorException(); } 결과 참고자료 : htt..
feat : 알림 GET POST DELETE - 알림 GET POST DELETE - 기기 GET POST userId 추가하여 변경 //notification.service.ts import { Injectable } from "@nestjs/common"; import { CreateNotificationDto } from "./dto/create-notification.dto"; import { InjectRepository } from "@nestjs/typeorm"; import { NotificationEntity } from "./entities/notification.entity"; import { Repository } from "typeorm"; @Injectable() export class NotificationsService..
PCM 펄스 부호 변조 PCM 펄스 부호 변조 아날로그 신호를 0과 1(2진법)의 디지털 신호로 변환하는 방법 (미륵관심법에서는 PCM 데이터를 16비트로 저장하여 32,000 ~ -32,000사이의 범위를 갖는다. 2의 16승 = 65,536) 소리 등의 연속되는 값을 기록하기 위해 쓰인다. 음원을 표현하는 방식 파형을 미세한 시간 단위로 쪼개 펄스열로 바꾼 후 그것을 '부호(code)화'하여 디지털 신호로 '변조(modulation)'해 내는 기술 표본화(Sampling) - 양자화(Quantization) - 부호화(Encoding)의 과정을 거쳐서 진행된다 ​ 첫번째 단계인 표본화는 연속적인 아날로그 신호를 일정 시간 간격으로 끊어서 그 값을 취하는 것이다. 이렇게 해서 얻어진 신호를 이산 신호(Discrete-time..
FCM Firebase 클라우드 메시징 FCM Firebase 클라우드 메시징 Firesbase에서 제공하는 알림 메시지 전송이 가능한 크로스 플랫폼 메시징 솔루션 FCM 수명 주기 흐름 FCM에서 메시지를 수신하도록 기기를 등록합니다. 클라이언트 앱의 인스턴스가 메시지를 수신하도록 등록하여 앱 인스턴스를 고유하게 식별하는 등록 토큰을 받습니다. 다운스트림 메시지 전송 및 수신 메시지를 보냅니다. 앱 서버가 클라이언트 앱에 메시지를 보냅니다. 메시지는 알림 작성기 또는 신뢰할 수 있는 환경에서 작성되며 메시지 요청이 FCM 백엔드로 전송됩니다. FCM 백엔드는 메시지 요청을 수신하고 메시지 ID와 기타 메타데이터를 생성하여 플랫폼별 전송 레이어로 보냅니다. 기기가 온라인 상태이면 메시지가 플랫폼별 전송 레이어를 통해 기기로 전송됩니다. 기기에..
PWA 프로그레시브 웹 앱 프로그레시브 웹 앱(PWA) 모바일 앱과 유사한 환경을 제공하는 웹용으로 개발된 앱 Google I/O 2016에서 처음 소개되었다. 특징 : 오프라인에서 작동하며, 알림을 보낼 수 있음 * PWA는 오프라인에서 작동하도록 설계되었지만 일부 기능은 인터넷 연결 없이는 정상적으로 작동하지 않을 수도 있다. 웹앱과 PWA를 구분할 수 있는 PWA 원칙 1. 발견 가능 : 컨텐츠를 검색 엔진을 통해 찾을 수 있습니다. 2. 설치 가능 : 기기의 홈 화면에서 사용할 수 있습니다. 3. 연결 가능 : 간단하게 URL을 전송해 공유할 수 있습니다. 4. 네트워크 독립적 : 오프라인이나 불안한 네트워크 연결에서 동작합니다. 5. 점진적 : 최신 브라운저의 모든 기능은 사용할 수 없지만 이전 브라우전의 기본 기능은 여..
미륵관심법 devices PATCH API async update(updateDeviceDto: UpdateDeviceDto) { try { const result = await this.deviceRepository.update( { uuid: updateDeviceDto.uuid }, { fcmToken: updateDeviceDto.fcmToken } ); if (result) return `기기가 재연결 되었습니다.`; else `기기 재연결에 실패하였습니다.`; } catch (error) { return "일시적인 오류가 발생하였습니다."; } } 응답하라 추억시대의 최종 발표가 끝나 드디어 미륵관심법을 위한 시간이 생겼다. 기본 기능은 구현하였지만 나아가 내가 더 개발해야 하는 부분이 있는지 검토하고 클린코드나 예외처리를 신경써야겠다.
미륵관심법 devices DELETE GET POST 예외처리 오늘은 가볍게 예외처리를 진행하였다. import { Injectable } from "@nestjs/common"; import { InjectRepository } from "@nestjs/typeorm"; import { CreateDeviceDto } from "./dto/create-device.dto"; import { DeleteDeviceDto } from "./dto/delete-device.dto"; import { Repository } from "typeorm"; import { DeviceEntity } from "./entities/device.entity"; import { UserEntity } from "../users/entities/user.entity"; @Inject..