TIL
-
20230114 TIL 리소스를 구분하자TIL 2023. 1. 14. 17:44
포트폴리오 작업을 하다가 어떻게 API를 설계할지 고민이 되는 부분이 생겼다. 바로 특정 사용자의 답변 목록 부분이었다. 특정 사용자의 답변 목록은 위 내용으로 이뤄진 리스트인데, 답변의 추천수, 답변을 단 질문의 제목, 답변 날짜 등이 포함되어 있다. 다른 것은 괜찮은데 '답변을 단 질문의 제목' 이 고민의 근원이 되었다. 이미 답변 목록 API가 있었고, 이는 특정 질문의 모든 답변을 불러올 때 사용하고 있었다. 그리고 질문의 제목 없이 질문의 id만 포함되어 있었다. 그런데 특정 사용자의 답변 목록 API에서는 질문의 제목이 필요했다. 물론 동일한 URI로 사용자의 답변 목록일 때는 질문 제목까지 포함한 API를 만드는 것이 어렵지는 않지만 뭔가 찝찝했다. /answers?userId=1과 /ans..
-
20230113 TIL 조금씩 조금씩 실력이 늘고 있다TIL 2023. 1. 13. 12:38
몇 달 전만해도 거의 손도 대지 못하고 있던 금요일 코딩도장 문제가 이제 조금씩 조금씩 풀리고 있다. 물론 아직 레벨 2정도의 문제이기 때문에 갈 길이 멀지만, 그래도 이제 이해와 계획을 작성하고 작성한 것을 바탕으로 TDD로 문제가 풀 수 있게 되었다. 몇 주 전까지만 해도 계획을 세우고 계획을 바탕으로 문제를 풀기가 어려웠고, 계획과 실제 풀이가 다른 경우가 많았는데, 이제는 계획을 바탕으로 문제가 조금씩 풀리고 있다. 계획을 세우는 능력이 조금 늘었나보다! 그리고 이제는 RED-GREEN-REFACTOR 방식도 익숙해지고 있다. for문을 돌리기 전에 일단 아래와 같이 코드를 먼저 작성하고, public int totalRuntime(int cacheSize, String[] cities) { Li..
-
20230112 TIL 산책의 소중함TIL 2023. 1. 12. 22:20
오늘 처음으로 짝꿍님과 산책을 가봤다! 그리고 매우 성공적이었다! 점심을 먹고 오후가 되니 나른해서 집중력이 매우 떨어졌었다. 그때 짝꿍님께서 마침 산책을 권유해주셨다. 마침 날씨가 많이 춥지 않았고 햇살이 따뜻했다. 산책을 하면서 잡담을 하다가 포트폴리오 관련 조언도 받으면서 산책을 하고 돌아오니 잠시 나른해지긴 했지만 곧 다시 집중력이 회복되었다. 결과적으로 산책을 다녀오기 전보다 집중이 훨씬 잘 되었다. 홀맨님께서도 산책을 추천해주셨었는데 실제로 산책을 한 적은 한두번 이었던 것 같다. 시간이 아깝다는 생각에 어떻게든 책상에 앉아있으려고 했던 적이 많았는데 오히려 잠깐 시간을 내서 산책을 하는 것이 건강에도, 업무 효율에도 좋을 것 같은 생각이 들었다. 얼마 남지 않았지만 앞으로는 집중이 잘 되지 ..
-
20230111 TIL 될 때까지 방법을 찾아보기TIL 2023. 1. 11. 17:54
포트폴리오에서 이용자 검색 기능을 구현하는 과정에서 이때까지 만난 것 중 가장 복잡한 수준의 쿼리를 만나게 되었다. 사용자가 받은 추천 수를 기준으로 정렬을 하고 싶었는데, 질문에서 받은 추천 수가 있을 수도 있고, 답변에서 받은 추천 수도 있을 텐데, 질문에서 받은 추천 수와 답변에서 받은 추천 수를 합친 추천 수를 기준으로 정렬을 하고자 하였다. 그래서 처음에는 아래와 같은 방식을 이용하려고 하였다. @Formula("(SELECT SUM(count) " + "FROM " + "((SELECT COUNT(*) count " + "FROM answer_like_user_ids al " + "JOIN answer a " + "ON al.answer_id = a.id " + "WHERE a.author_i..
-
20230110 TIL CSS 코드는 위에서 아래로 실행된다.TIL 2023. 1. 10. 20:20
포트폴리오의 회원 목록 페이지를 작업하면서 이 페이지는 반응형으로 작업을 하는 것이 좋을 것 같은 기분이 들었다. 반응형을 적용하기 딱 좋은 grid이고, 반응형을 적용하지 않으면 너무 휑하거나 너무 좁아지는 등의 문제가 있었기 때문이다. 그리고 반응형을 모든 부분에 적용을 해보지는 못하더라도 적용을 해보고 싶었기 때문에 반응형을 적용해보았다. 그런데 이상하게 일정 크기 이상 줄여도 적용이 되지 않는 것이었다. display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1em; margin: 1em; @media (max-width: 640px) { grid-template-columns: repeat(1, minmax(0, 1fr)); ..
-
20230109 TIL 삭제를 어떻게 하면 좋을까?TIL 2023. 1. 9. 21:38
나도 드디어 삭제 기능을 추가하게 되었다. 일단은 정말로 디비에서 없애는 방식으로 구현을 해두긴 하였는데, 보통은 소프트 딜리트, 즉 디비에서 없애지 않고, 삭제되었다는 표시만 해두는 방식으로 진행한다고 한다. 이 방식을 사용하면 기존 기능들도 수정을 해줘야해서 일단 실제로 삭제가 되는 방식으로 작업을 했지만, 프로젝트 기능 완성 후에는 소프트 딜리트 방식으로 수정하려고 한다. 소프트 딜리트를 할 때 그렇다면 실제로 언제 디비에서 삭제를 하는지 궁금했다. 사용자가 삭제한 데이터를 무한정 들고 있는다면 물리적인 공간도 부족할 것이고, 사용자가 원치 않을 수 있기 때문에 언젠가는 삭제해야한다고 생각하기 때문이다. 일반적으로는 주기적으로 소프트 딜리트된 정보들 중 오래된 정보들을 지운다고 한다. 예를 들면 소..
-
20230108 TIL 리액트 에디터 라이브러리 비교하기TIL 2023. 1. 8. 22:33
아직은 그냥 input태그로 작성해두었지만, 질문 글 작성과 답변 글 작성 시 input혹은 textarea 태그만으로는 원하는 내용을 충분히 표현하기 힘들 것 같아서 에디터로 교체하려는 계획을 세웠다. 그런데 리액트에서 사용할 수 있는 에디터가 꽤 많고, 여러 툴 중에 장단점을 비교해서 적절한 도구를 찾아내는 것이 개발자의 덕목 중 하나이기 때문에 리액트 에디터 라이브러리의 장단점을 비교해서 나의 프로젝트에 적합한 라이브러리를 찾아보고자 한다. 리액트 에디터 라이브러리에는 CKEditor, Quill, TinyMCE등이 있다. 앞 기수 선배분 중 CKEditor를 사용하신 분이 계시고, 짝꿍님께서는 Quill을 사용하신다고 하셔서 그 둘을 먼저 검토해보았다. CKEditor가 Quill보다는 더 많은 ..
-
20230107 TIL 테스트 코드의 중요성TIL 2023. 1. 7. 21:48
프로그램을 만들수록 만들었던 모든 부분이 제대로 돌아간다는 것을 보장하기가 쉽지 않다. 왜냐하면 프로그램을 만들면서 기존 코드들을 수정하기도 하는데, 그러면 기존 기능이 제대로 동작한다는 것을 보장하기가 어렵다. 그렇다고 코드를 수정할 때마다 모든 기능을 다 테스트하려면 엄청난 시간과 에너지가 소모된다. 그래서 처음에는 테스트 코드와 구현을 함께 하는 것이 부담스러울 때도 있었지만, 프론트 테스트 코드만 150개 정도, 백 테스트 코드는 약 100개인 스케일이 되니 테스트 코드 덕분에 든든한 느낌을 느끼고 있다. 그리고 테스트 코드 덕분에 돌아가지 않는 기능을 쉽게 확인해서 고친 경우도 제법 있었다. 지금까지 한 작업이 프로젝트의 약 20% 정도밖에 되지 않았는데도 벌써 모든 기능을 스스로 확인해보기가 ..