회고/코드스쿼드 - Java 과정

[TIL] 코드스쿼드 2022 백엔드 41일차 회고(9주차)

jwKim96 2022. 3. 8. 11:58

오늘은 무슨 일이?

지난주에는 공부 컨디션이 별로여서, 주말에 푹 쉬고왔더니 오늘은 컨디션이 좋았습니다.
이를 스크럼때 공유했는데, 동료분들도 이 시기에 다들 비슷하셨던 것 같습니다.

뽀모도로 봇

오전에 한창 1단계 마무리를 하고있을 때, 쿠킴이 뽀모도로 타이머가 울렸다고 다같이 휴식 하자고 했습니다.
그래서 10분동안 움직이고 스트레칭을 하니 머리에 피가 돌면서 피로가 가셨습니다.
할 일이 있을때는 쭉 달리는 경향이 있었는데, 뽀모도로 봇(?) 덕분에 잠시 가지는 휴식이 주는 효과를 알게되었네요.
그래서 오후에는 휴대폰에 1시간 타이머를 해놓고 중간 중간 쉬면서 하니, 오늘은 피로감이 많이 없는 것 같습니다.

알고리즘 스터디

오늘은 처음으로 알고리즘 스터디를 하는날 이었습니다.
이번주는 아더DFS, BFS, 매개변수 탐색에 대해 내용을 공유해주셨습니다.
저는 DFS, BFS가 경로 탐색과 넓이 탐색등 좌표평면에서만 사용해봤는데, 그래프에도 사용될 수 있다는 것을 알게되었습니다.
그리고 이번에 처음 알게된 매개변수 탐색도 지난주에 문제를 풀면서 삽질하고나서 오늘 설명을 들으니 더 내용이 와닿아서 좋았습니다.

Mustache 의 매직?

저녁 공부중에 mustache 에서 'private 속성의 getter 가 없는데 왜 view 에서 출력이 가능한가'에 대해 동료들과 얘기했었습니다.
Thymeleaf 는 getter 가 없으면 예외가 발생하는데, mustache는 예외도 발생하지 않고 view 에서 참조가 가능했습니다.
private 속성에 강제로 접근하는건 리플렉션밖에 없다고 생각했었는데, 소스 레벨에서 확인하고싶어 mustache 소스를 찾아봤습니다.

해당 저장소에 들어가서 github.dev로 이동한 다음, 검색탭에서 setAccessible 메소드를 검색해보니

  • setAccessible : 속성이나 메소드의 접근 가능 여부를 강제로 설정하는 메소드(true: 접근 가능, false: 접근 불가)

BaseObjectHandler.java 에서 속성 제어 리플렉션 클래스인 Field 로 접근 가능 여부를 변경하는 로직을 찾았았습니다.
즉, 우리가 Controller 에서 model 에 넣은 객체는 mustache view 로 넘겨지고, view 에서 특정 속성에 접근하려하면
mustache 는 getter 여부에 상관없이 강제로 그 속성에 접근하여 값을 가져오는것 입니다.

인상깊었던 점은?

  • 아더의 알고리즘 강좌👍
  • mustache의 리플렉션

아쉬웠던 것은?

  • 저녁식사 후에 뒹굴거리면서 조금 허비한 시간
    (내일은 알차게 써야겠습니다.)