이 글은 제가 회사에서 Nuxt3 에 대해 발표하기 위해 준비했던 자료를 토대로 정리 한 글입니다. 읽기 전 Universal Rendreing 이 뭔지 알아야 하므로 먼저 이전글을 읽어주세요. Nuxt3 의 Universal Rendering 이란 무엇인가.. 이 글은 제가 회사에서 Nuxt3 에 대해 발표하기 위해 준비했던 자료를 정리 한 글입니다. 때는 2023년 초 추운겨울.. 회사에 새로운 프로젝트가 시작된다는 소식이 들려왔다. 해당 프로젝트의 요구 jongmin4943.tistory.com 들어가며 Nuxt3 의 문서를 보다보면 Data fetching 섹션이 존재한다. 이전 글에서 이야기 했듯 $fetch 를 그냥 사용하게 될 경우 불필요하게 Api 호출을 두번 하는 경우가 생기며 Hydra..
들어가며 이 글은 1.템플릿 콜백 패턴으로 구현, 2. AOP 로 구현, 3. Spring Redission 의 한계와 극복 총 3편으로 이루어져 있습니다. 이번 글은 1.템플릿 콜백 패턴으로 구현 과 2.AOP 로 구현 을 기반으로 작성되었으니 먼저 읽어주시길 바랍니다. Spring Redisson 분산락(Distribute Lock) 좀 더 잘 써보기 (1/3) - 템플릿 콜백 패턴 들어가며 우선 이 글은 1.템플릿 콜백 패턴으로 구현, 2. AOP 로 구현, 3. Spring Redission 의 한계와 극복 총 3편으로 이루어져 있습니다. 여기서 사용한 예제코드에는 특정 문제가 있습니다. 해당 문제 jongmin4943.tistory.com Spring Redisson 분산락(Distribute ..
들어가며 이 글은 1.템플릿 콜백 패턴으로 구현, 2. AOP 로 구현, 3. Spring Redission 의 한계와 극복 총 3편으로 이루어져 있습니다. 이번 글은 1.템플릿 콜백 패턴으로 구현 에서 참고하는 부분이 있으므로 필요하시면 먼저 읽어주세요. Spring Redisson 분산락(Distribute Lock) 좀 더 잘 써보기 (1/3) - 템플릿 콜백 패턴 들어가며 우선 이 글은 1.템플릿 콜백 패턴으로 구현, 2. AOP 로 구현, 3. Spring Redission 의 한계와 극복 총 3편으로 이루어져 있습니다. 여기서 사용한 예제코드에는 특정 문제가 있습니다. 해당 문제 jongmin4943.tistory.com 여기서 사용한 예제코드에는 특정 문제가 있습니다. 해당 문제에 대한 이야..
들어가며 우선 이 글은 1.템플릿 콜백 패턴으로 구현, 2. AOP 로 구현, 3. Spring Redission 의 한계와 극복 총 3편으로 이루어져 있습니다. 여기서 사용한 예제코드에는 특정 문제가 있습니다. 해당 문제에 대한 이야기는 3편에서 할 예정입니다. 그리고 Spring Redisson 이 뭔지, 왜 쓰는지, 분산락이 뭔지 등등 에 대해서는 글이 너무 길어져 설명하지 않았습니다. 궁금하신분은 인프런의 "재고시스템으로 알아보는 동시성 이슈 해결방법" 강의 를 보시거나 해당 강의의 잘 정리된 블로그글을 첨부하니 참고해주세요. 사건의 시작 사내 그룹웨어에서 칸반 기능을 개발 하던 도중 사용 하시던 동료 두 분이 버그를 제보해주셨다. "저희 둘이 쓰는 칸반이 있는데 갑자기 순서가 이상해졌어요. 아마..
문제 나는 현재 회사에서 주로 사내 그룹웨어 개발일을 해왔었다. 해당 그룹웨어의 Front-End(이하 FE) 는 Vue3 로 구성되어있으며, 내가 입사할때 쯤 어느정도 뼈대가 만들어져있고 이제 막 기능들이 추가되고 있는 작은 프로그램이었다. 초기에는 프로젝트의 크기가 작아서 초기페이지 로딩속도에 문제가 없었다. 하지만 프로젝트에 초기 구상에 없던 기능이 계속해서 추가되며 크기가 커졌고 그에 따라 첫 페이지 진입시 실행되는 로직과 API 호출이 많아졌다. 개선된 현재는 Home으로 처음 접근시 소켓 연결 호출을 제외하면 거의 15개가량의 통신이 일어난다. 개선 하기전의 상태를 글로 설명하자면 (스크린샷으로 찍어놨어야하는데 깜빡했다..) 개선 되기 전에는 초기 페이지 접근시 필요한 대부분의 API 호출들이..
의문 자바 코드를 작성하다보면 종종 ArrayList 를 toArray 메서드를 이용해 배열로 바꿔야 할때가 있다. List temp = new ArrayList(); temp.add("test"); String[] strings = temp.toArray(new String[temp.size()]); 하지만 위의 코드는 Intelij 가 warning 을 만드는 코드이다. 실제로 Replace argument with empty array 를 클릭해보면 empty array 초기화로 코드를 바꿔준다. 왜 길이를 미리 정한 배열보다 길이를 0으로 초기화한 배열을 사용해야하는걸까? 검색결과 성능 차이 두가지에 대한 성능테스트는 stackoverflow 글에서 찾을 수 있었다. 해당 글을 보면 아주 재미있게..