DEV.EUN
<
2025 April
>
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
2025-04-03

    무언가를 기억하는 데에 확실히 나와 연관된 것과 적용해보는 게 가장 기억이 잘 되는 것 같다.

    책 "개발자 원칙"의 내용 중, '소프트웨어 디자인 원칙'에서

    소프트웨어 디자인을 정의하지 않았는데 디자인의 원칙으로 거론하는 것은 상관/인과 관계가 없는 설명이기 때문입니다. 그래서 책을 읽고 나면 무슨 말인지도 모르겠지만 무슨 뜻이었는지도 모르게 됩니다.

    라고 한 문장이 확 와닿았다.

    전 날, Feature Toggles를 점진적으로 개선해 나가는 코드를 작성했다. 개선의 마지막은 전략 패턴을 적용하는 것이었는데, 책을 읽었을 때는 아예 이해조차 안가던 것이 코드를 직접 작성해보고, 내가 적용을 해보니까 약간은 이해가 갔다.

    이런 걸 보니 역시 모든 경험은 "나"로부터 시작되어야 한다는 것을 다시금 깨달았다.


    • happen-before은 java에서 메모리 일관성을 보장하기 위한 Java 규칙
    • Java의 Future은 비동기-블락킹으로 동작한다
      • 작업 자체는 비동기로 수행하지만
      • 그 작업의 결과를 받는 쪽에서는 블락킹
    • Runnable과 Callable 모두 현재와는 다른 스레드에서 작업하기를 기대하고 디자인된 클래스
      • 둘 다 파라미터를 받지 않음
      • Runnable은 결과를 리턴하지 않고, 체크예외를 던질 수 없음
      • Callable은 결과를 리턴할 수 있고, 체크 예외로 던질 수 있음
    • websocket
      • handleTanspontEror에서 로직 순서가 close~ cleanup 이어야 함 session claseO 시 에러 발생할 수 있음
        try catch로 묶어서, 에러 발생할 경우 따로 Cleanup해주어야 함
        afterConnectionClosed0 에서 session.close 호출할 필요 없음 이미 closed 된 후에 호출되는 메소드임
        텍스트와 바이너리 모두 쓰기 때문에 웹소켓핸들러를 AbstractWebSocketHandler 를 상속해야함
    • 텍스트만 쓴다면 -> TextWebSocketHandler
    • 바이너리만 쓴다면 -> BinaryWebSocketHandler