Skip to main content

16 posts tagged with "question"

View All Tags

· 2 min read
  1. Mapper란?
  2. (싱글톤 객체 + 의존성 주입)으로 객체를 의존하는 것과 static 메소드로 선언하여 의존, 사용하는 것의 비교
    • static 메소드를 사용하면 프레임워크에서 지원하는 의존성 주입 기능을 사용하지 못한다.
    • static 메소드는 보통 유틸성 객체에 유용하게 사용된다.
    • 동일한 클래스에 대해서 동일한 상태값을 보장하기위한 목적으로 static을 사용할 수 있다.
    • static 메소드는 객체지향적인 기능은 아니라고 볼 수 있을 것 같다.
  3. 클래스와 인스턴스의 생성 위치와 주기. static 변수와 메소드와 인스턴스 변수, 메소드의 생성 위치와 주기 비교.
  4. 알림 내용 템플릿 데이터를 enum에 저장 or db에 저장.
    1. https://jojoldu.tistory.com/137

· One min read
  1. Specification interface in DDD and JPA
  2. JPA 동적 인스턴스 생성.

  1. fcm에서 전송하면 해당 디바이스에서 어떻게 표시되는 것이지 ? 가령 위퍼블릭 앱이 켜져있으면 앱에서 보여준다 ?

  1. lock
    • shared lock (for share)
    • exclusive lock (for update)
    • 비관적 락, 낙관적 락.
    • 락의 범위, 락 해제 시점.
  2. msa
    • 분산 트랜잭션

· One min read
  • callback, Proimse object, async/await
  • then(), catch()
  • then(), catch()는 Promise객체의 메소드로 이해하고 있는데, contractSevice 객체에서 .catch()가 안먹혔었다. 이유는 ? then이 없어서 ?
  • 콜백함수는 리턴이 필요없다 ?

  • JPA에서는 jpa transaction 안에서 도메인이 변경되면 자동으로 업데이트 해준다 ?

· 2 min read
  1. value-object pattern
    1. feature. make and return new object when member value is changed.
  2. 백엔드 언어와 프레임워크 사용 추세.
    • 한국에서는 go, kotlin(spring)으로 신규프로젝트 진행을 많이 하는 추세.
    • kotlin은 과거부터 많이 사용된 java 기반의 spring과 완벽히 호환되기 때문에 전환이 비교적 쉬우나, JVM 기반으로 동작하기 때문에 싫어하는 사람도 많은 것 같다.
      • kotlin은 멀티플랫폼언어이기 때문에 JVM을 사용하지 않고 NATIVE로 바로 컴파일되는 것의 성능이 좋아지면 또 분위기가 바뀔지도 ?
      • kotlin이 어떤 원리로 여러 것들로 컴파일될 수 있는지이해해보자, 그리고 이런 독보적인 특징으로 발전 가능성이 어느정도까지 일지 판단해보자.
      • kotlin을 사용하면 syntax sugar? 언어단에서 로직을 단순화 하고 아기자기하게 다룰 수 있다. (go는 그런 맛이 없다고 한다.)

· One min read
  • trpc, grpc
  • promise.all
  • await, async
    • async await을 남용하지말자. 비동기로 동작해도 되는 로직은 굳이 붙일 필요없다.

· One min read
  1. declaring type of typescript
    • 타입스크립트에서 함수도 타입으로 지정이 가능하다. 다른 언어도 가능한가 ? 어떤 원리인가 ?

· One min read
  1. 서비스에 알림기능이 도입된다. 알림 종류는 sms 푸쉬 알림만 있다. 알림 케이스는 20가지 정도, 알림 서버 별도로 필요할까 ?

· One min read
  1. 모듈을 global로 import받거나, 사용하지 않는 객체도 제공하는 module을 import 받았을 때 성능상 이슈는 없나 ?
    • 사용하지 않아서 인스턴스 생성이 안되니깐 ?
  2. nestjs에서 module을 효율적으로 관리할 수 있게 설계하는 방법.
    • 중복해서 import하지 않도록.
    • 사용하지 않는 객체를 import 하지 않도록.
  3. TypeError: Class extends value undefined is not a function or null
  4. repository와 service 사이에 data service 객체를 활용하는 것에 대한 best practice 혹은 관련 아키텍처가 궁금하다.

· One min read
  • DTO Naming Convention
    • request, response라는 이름과 dto를 함께 사용?
    • name + httpmethod + request,response + dto 라는 형식으로 적용해봄.
    • dto 이름이 길어지게 된다.

· One min read
  • 구현이 아닌 추상화에 의존해야하는 이유.
  • 전략 패턴 (Strategy Pattern)
  • 서브 클래스(sub class), 구성(composition)
  • 데코레이터 패턴이 객체에 추가 요소를 왜 동적으로 더하는 거지 ?
    • 인스턴스를 인자로 넣어서 데코레이팅 할 수 있으니깐 ? (인스턴스는 런타임 환경에서 생성됨.)

· 3 min read
  • 다오 가입 온체인 로직을 호출할 때, 트랜잭션 전송을 서버에서 하고, 이 때 상용되는 어드민 지갑은 기존에 하나였다. 트랜잭션 전송 주체가 되는 지갑이 하나이면 동시에 다오 가입 api를 호출 했을 때, nonce too low 이슈가 발생하게 된다. 이를 해결하기 위해 어드민 지갑을 5개로 운용하고, 해당 5개 어드민 지갑의 사용 여부 값을 메모리(레디스)의 set 데이터 스트럭쳐를 활용하여 로직을 구현하였다. 따라서 유저는 5개의 어드민 지갑 중 사용되지 않는 지갑을 메모리에서 찾아와 온체인로직을 호출하게되며, 유저가 호출하는 시점에 5개 어드민 지갑이 모두 사용되고 있으면 유저는 리트라이를 해야한다.
  • 이 때, 유저가 동시에 호출하게되면 결국 메모리에 어드민 지갑 사용여부를 조회하는 시점도 거의 동시에 이뤄지며 따라서 두 유저가 동일한 어드민 지갑을 사용하여 호출하게 되어 nonce too low이슈가 발생한다.
  • 우선은 메모리에서 사용되고 있지 않은 어드민 지갑들을 찾아서 그 중 랜덤하게 하나를 사용하도록 했지만, 결국 두 유저가 동시에 동일한 지갑으로 호출할 가능성은 존재한다.
  • 5개의 어드민 지갑을 적절히 분산해서 유저에게 할당을 어떻게 할 수 있을까?
    • 메모리에 lock ?

· One min read
  • 온체인로직 오프체인 로직 순서로 동작시킬 때, 온체인 성공, 오프체인 실패하는 케이스가 안생기게 하려면 어떻게해야할까?
    • getPast와 같은 안전장치 로직을 통해 보완할 수 있다. 다만 위퍼블릭에서는 이벤트에서 얻을 수 있는 값만으로 오프체인로직을 처리할 수 있는지 불확실하며, 불가능 하다면 메모리나 db에 오프체인 실패 시 처리를 위해 임시로 값을 저장해놓을 필요가 있다.

· One min read
  • 타입스크립트의 type 이란 ?
    • type alias로 새로운 타입을 지정할 수 있고 두개의 함수를 하나의 타입으로 지정하는 것과 같은 것이 가능하다.
    • 다른 언어에도 이런 것이 있나 ?
  • 동기와 비동기
    • 동기화된 함수들은 순서대로 처리, 비동기화된 함수들은 순차적으로 처리되지 않음.
  • 콜백 함수
  • CASCADE DELETE
    • FK에 해당 옵션을 설정하면 부모테이블의 데이터를 삭제했을 때, 자식 테이블도 함께 삭제한다.