일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Java
- NaverCloudPlatform
- NooBLoL
- object storage
- OrientalUnity
- F-Lab
- 회고
- Enum
- ncloud
- junit
- ngrinder
- Naver Cloud Platform
- docker
- spring boot
- Naver Cloud
- spring
- navercloud
- papago
- 에프랩
- DBDocs
- Scheduler
- mybatis
- 네이버 클라우드
- 네이버클라우드
- Database
- Pinpoint
- Thymeleaf
- React
- NCP
- AssertJ
- Today
- Total
목록분류 전체보기 (82)
DevJong12
개요 프로젝트의 기능 개발은 완료되었다 보니 부하테스트를 진행해보고자 nGrinder를 설치해보고자 하였다. 이포스트는 nGrinder의 Controller와 Agent의 설치과정을 작성하였다. nGrinder란? 어플리케이션의 부하 테스트 용도로 많이 사용되는 툴중에 하나로 nGrinder는 Controller와 Agent로 구성이 되어 있으며 두개를 같은 서버에 설치해도 되고 서로 다른 서버에 설치를 해도 된다. ※ 부하테스트이다 보니 추천하는건 서로 다른 서버에 설치를 하는 것을 추천하며 Agent는 어플리케이션이 존재하는 서버에 설치해야 한다. ※ 공식문서에서 3GB의 Free Memory라는 문구를 봤던 것 같은데 다시 찾으려니 못찾겠다.. 해당 문구를 보고 새 Controller서버를 분할 하..
이전 포스트 [refactor]MyBatis에서의 Enum활용기 (By.boolean) 포스트를 작성하게 된 계기(?) 기존에 사용하던 코드에 대해서 수정을 하고자 많은 소스들을 찾아 봤으나 예제가 없었다. 검색을 하는데 없다. 어..진짜없었다. 그래서, 기록이 필요해 보여 작성 devjong12.tistory.com 개요 일단 MyBatis에서 Enum을 사용하는 글에 대해서 추가적으로 작성하게 될 줄 몰랐다.... 완벽히 이해를 하지 않고 일단 되게 해보자!가 원인이 되었다. ㅋㅋ;;;; 역시...잘알고 써야하는데..ㅠㅠ... 1편에서의 문제점은 다음과 같다. 여러개의 Enum을 제작하게 되어도 단 한개만의 Enum밖에 활용이 불가능 해당 문제를 인지하게 된건 다음 기능을 손보게 되면서 Enum으로 ..
개요 프로젝트를 진행하면서 기존에는 @PostMapping과 @GetMapping에 대해서만 사용을 했었다. 그러다보니 대부분의 Mapping을 셋팅 할 때 URL을 남겨줘야 하는 문제가 있었고, /만 선언을 하는경우는 거의 없었다. 이후, 회원정보의 수정기능에 대해서 제작을 하면서 다음과 같이 Controller영역에 대해서 개발을 진행했었다 //기존의 소스 @PostMapping("/user/update") public ResponseDto userUpdate(@Valid @RequestBody UserInfoUpdateDto userInfoUpdateDto) { return userInfoService.updateUserInfo(userInfoUpdateDto); } 다음과 같이 Mapping을 셋..
프로젝트 서버작업 진행하다 생긴거니...일단 이곳에 적기로 한다... Naver Cloud Platform을 사용하면서 발생한 문제로, 파일을 전송하려고 FTP를 처음 연결을 해보려했다.. 항상 고정관념은 21, 22번포트를 사용하기에 , 해당 번호로 될줄알고 했으나 FTP는 연결이 되지를 않았고, 조금 긴시간 삽질을 파게되서 기록으로 남기고자 한다... 먼저 필자가 사용하는 FTP는 CyberDuck을 사용중이며, iterm을 통한 서버 접속을 주로 하는편이다. 또한 FTP를 사용할 때 21, 22번포트가 사용이 불가능해서 ACG에 추가적인 포트를 개방하고 사용하려했으나 그마저도 진행이 불가능했다. 아래의 사진처럼 진행을 했었다. 추가적으로 IP의 경우에는 서버정보에 있는 포트포워딩 IP를 통한 접속을..
포스트를 작성하게 된 계기(?) 기존에 사용하던 코드에 대해서 수정을 하고자 많은 소스들을 찾아 봤으나 예제가 없었다. 검색을 하는데 없다. 어..진짜없었다. 그래서, 기록이 필요해 보여 작성해보게 되었다. 기술스택 Spring Boot 2.7 MariaDB MyBatis 2.2.2 해당 내용이 들어간 Gradle은 아래 사진 참고바랍니다. 왜? 참고할만한 Reference가 없었는지? 먼저 DB에서 해당 Type에 대해서는 TinyInt라는 타입으로 사용을 하고 있다. 즉 0과 1로 저장이 되지만 매칭이 True와 False로 0또는 1을 저장하는 Type의 컬럼이었다. True, False를 통한 사용이 가능하다보니, 기존에 데이터를 주고 받을 때 사용한 DTO는 아래에 첨부하였지만, likeTyp..
아침에 잠을 자고 일어나니 자주보던 사이트인 인벤에 글이 한개 올라왔다 트위치 망사용료에 대한 인벤 인터뷰 링크 해당 게시물을 보게 되었다. 글 내용을 한문장으로 표현하면 내일(22. 09. 30)부로 트위치에서는 최대 송출 제한을 720p로 제한을 한다는 글이었다. 이글을 보면서 개발자의 관점에서 봤던 문제들에 대해서 생각을 해보게 되었다. 먼저 망 사용료에 대해서는 위키를 참조하였다. 망 사용료는 인터넷 회선 접속료 각 ISP서비스 업체마다 다르게 명칭으로, 인터넷을 이용하는 사람이라면 누구든 ISP에게 사용료에 대하여 납부를 하는 것을 말한다. 유사 플랫폼인 아프리카Tv, 네이버 Tv와 같이 실시간 라이브 송출 서비스를 제공하는 유사 플랫폼에서는 고화질을 스트리밍 받기 위해서는 자체 솔루션 프로그램..
이슈 내용 아래의 사진처럼 resources/static/docs/index.html에 문서가 실재 존재하나, 경로를 입력할 경우 No Handler Exception이 발생하는 문제를 해결하는 과정에 대한 기록. 실제 Index.html이 실재 존재하나, 링크처럼 입력을 하게 될 경우, 해당 Bad_Request되고 있었다. 오류로 나오는 스택역시 NoHandlerFoundException이 발생하고 있었다. 발생 원인 해당 문제의 발생원인은 내가 셋팅한 프로젝트 설정으로 인해 발생한 문제다. 이유는 아래의 생각떄문에 했던 설정이 문제다. ResponseBody에 대해서 내가 직접 제작을 했으니, 어떤 잘못된 요청이 들어와도 내가 직접 제작한 Response Body로 응답이 가야하지 않을까? 그렇게 ..
오류사항 현재 제작중인 명령어중에 !핏시 라는 명령어가 있다. 해당 명령어를 활용하고 Override를 받은 onMessageReceived라는 메소드에서 사용을 하도록 진행하려 했다 하지만 메세지를 인식을 못하는 오류가 있었고 Debug로 봐도 메세지내용이 없고 MessageId로 보이는 Text밖에 없었다. 아래 코드의 getContentRaw()메소드가 Message Object의 Content를 String으로 가져오는 부분인데 계속 Null로만 들어오고 있었다. public class GayRosuMain extends ListenerAdapter { public static final String MESSAGE_RECEIVED_PREFIX = "!"; public static final Str..
프로젝트 명은 게이로수 봇이라고 적었지만 사실은 가로수 봇이다. 같이 게임을 했던 사람들끼리 농담삼아 게이라고 많이하는 편이라서 해당 워딩을 작성했다. 지금 게임을 많이 하진 않지만, 친했던 사람들과 계속 대화를 하다보니 약올리고자 하는 마음에? 한번 뭘로 해보면 좋을까?? 생각을 했다. 그러던 중 생각난 게 게임을 할 때 주로 사용하는 Discord를 활용해 보기로 했다. Discord로 Bot을 제작해 보기로.. 해당 포스트는 지속적으로 내용이 추가될 예정이다. 일단 해당 레포의 북마크부터..! GitHub - donsonioc2010/GayRosu_Discord_Bot: 괄오수 디스코드 븟 괄오수 디스코드 븟. Contribute to donsonioc2010/GayRosu_Discord_Bot d..
해당 글은 DBDocs에 대해서 사용을 해봤다는 가정 하에 포스트를 작성하였습니다. 이전에 포스트를 작성한 것이 있어 링크 같이 첨부합니다. DBDiagram에 대해서 - DBML에 대해 알아야 하기떄문 DBDocs란? 사용법은? 프로젝트의 막바지 무렵이 되서야 해당 문서화에 대해서 자동화 할 수 있는 것을 알게 된 부분이 아쉽긴 하지만 해보면 재밌을 것 같아 진행을 하게 되었다. 자동화 방법에 대해서는 DBDocs에서 튜토리얼에 소개된 대로 진행을 해보았다, 현재 진행했던 프로젝트역시 자동화를 Git Action으로 진행을 했었고 튜토리얼의 방법역시 Git Action을 활용하다 보니 바로 진행하게 되었다. 진행중인 프로젝트에 바로 넣을 까? 라는 생각을 했는데 그냥 Repository를 따로 제작하였..
필자가 전에 포스트한 DBDiagram에 대한 글이 있다. DBDiagram를 제작한 회사에서 제작한 서비스로 보였고, 문서화를 내가 제작한 쿼리(dbml파일)을 자동으로 해준다는 게 흥미로워서 사용을 해보고 기록을 남기게 되었다. 아래는 필자가 현재 올린 서비스 ERD에 대해서 자동으로 문서화를 해주고 페이지로 제작된 화면이다. 위의 DBDocs 링크와 튜토리얼 링크를 같이 첨부한다. 작성자의 DBDocs 링크 , DBDocs 링크 설치 방법 dbdocs의 경우에는 npm또는 yarn을 통해 설치를 한 이후에 설치가 가능하다. 그렇기 때문에 node부터 설치를 진행해야 한다. 필자는 개발환경이 현재 Macbook Air M1을 사용중이다. 아래의 명령어 두줄이면 설치는 끝난다. // 1. Node 설치..
DBDiagram을 추천하게 된 과정 필자의 경우 과거부터 ERDCloud라는 DB툴을 사용해서 ERD를 그려오고 있었다. 최근에 라이엇게임즈에서 개발한 리그오브레전드(이하 `LOL`)의 게임정보를 가져와서 RESTful API서버를 개발하는 프로젝트를 진행하고자 ERD설계를 진행하려고 예전과 같이 ERDCloud를 접속해보았다. 들어가자마자 불편한 점이 예전과 다르게 불편한 점이 바로 보였고 다음과 같았다. 광고의 영역 단 한개다. 기존의 경우에는 ERDCloud에 광고가 없었으나 현재는 생긴 모습이었고 아래 사진을 보면 광고의 영역이 좀 크다.....많이...이해는 되었고, 제거할 수 있는 기능이 있어서 자주 애용을 했던 서비스다보니 금액을 지불할 의향은 있었다. 제거에 필요한 금액은 크지 않았으나,..
개요 프로젝트의 기능 구현 진행을 위해 Redis를 셋팅하면서 문제가 발생하였다. 정확히는 Test의 설정과 관련된 의존성 문제이며, 해결하는 과정을 기록한 포스트이다. 설정 및 테스트 코드 먼저 설정의 경우 아래의 포스트를 참고하였다. Redis(레디스) | Spring Boot 프로젝트 연동하기 [DB, NoSQL] - Windows 10 | 레디스(Redis) 설치 및 명령어 [DB, NoSQL] - Windows 10 | 레디스(Redis) 비밀번호 설정 📌 구성환경 SpringBoot 2.5.6, Redis 3.2.100 build.gradle implementation 'org.springfram.. kitty-geno.tistory.com 테스트 케이스의 경우에는 작동여부만 판단하기 위해 작..
내가 프로젝트를 제작하면서 int를 대신하여 Integer를 사용하는 경우가 많았다. 보통의 경우라면 숫자를 사용할 때 int를 사용하겠지만 Integer를 사용했던 이유는 int의 경우에는 Null에 대한 표현이 불가능하지만 Integer의 경우에는 Null을 담을 수 있기 때문에 애용을 했다. Integer를 사용하면서 int를 사용할 때는 없던 equals가 존재했고 equals와 ==의 차이점에 대해서 알게되어 추후라도 Integer를 사용할 때 주의를 하고자 한다. 문제의 내용 먼저 코드를 보여주면서 문제를 보고자한다. 1 2 3 4 5 6 7 8 9 10 Integer integerA = 1000; Integer integerB = 1000; int intA = 1000; int intB = ..
개요 프로젝트의 기능 구현을 하면서, 회원가입을 진행 할 때 메일을 발송해서 인증을 진행하는 기능을 제작하게 되었다. 문자열이 많지 않다 보니 메소드에서 String으로 제작을 진행하고 있었으며, SimpleMailMessage를 활용해 내용을 제작한 이후, JavaMailSender를 통해 발송을 하고 있었다. 기존 소스의 문제점 크게 두가지의 문제점이 존재했다. 1. HTML형식으로 메일이 오지를 않고 모두 문자열로 인식. 2. 메소드에서 내용을 제작하다 보니 내용의 수정이 필요할 경우 무조건적인 소스코드의 수정 기존코드로직 메일 발송을 담당하는 메소드 받아온 내용들을 SimpleMailMessage에 담아 발송한다 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19..
개요 프로젝트를 진행하면서 UPSERT에 대하여 알게 되어, 게시판기능에 대하여 제작을 하면서 사용해볼 기회가 생겨서 활용하게 되었다. 기능 구현의 완료 이후 테스트를 진행하면서 지속적으로 JdbcSQLSyntaxErrorException가 발생하였다. 해당 문제에 대한 포스트를 남기고자 한다. 프로젝트 기술스택 JDK 11 Spring Boot 2.7.2 Mybatis MariaDB, H2 사용 쿼리, 설정 사용중이던 DB url url: jdbc:h2:tcp://localhost/~/h2/nooblol 문제가 발생한 쿼리는 다음과 같다. INSERT INTO bbs_articles(article_id, bbs_id, article_title, article_read_count, article_cont..
개요 현재 기능 구현을 진행하면서 로그인을 임베디드된 톰캣에 세션으로 정보저장을 하고자 HttpServletRequest를 받아야 하는 메소드를 제작을 하였는데, 해당 기능에 대해서 테스트케이스를 제작을 하고 싶었다. 일반적인 Object의 경우라면 Mock을 사용하면 되지만 HttpServletRequest, Response도 가능한가? 생각하면서, 찾아서 알게된 MockHttpServletRequest와 MockHttpServletResponse에 대해서 기록하고자 한다. 참고한 자료는 아래의 북마크이다. https://www.baeldung.com/java-httpservletrequest-mock How to Mock HttpServletRequest | Baeldung Learn multiple..
개요 이번에 프로젝트로 소스를 지속해서 작성을 하면서 재밌어 보이는? 정확히는 내가 제대로 Stream에 대한 이해를 하지 못해 발생한 Issue를 알아보고자 한다. 많은 이슈가 있지만 해당 이슈를 따로 포스팅 하는 이유는 프로젝트를 진행하면서 어? 왜이러지? 하는 호기심과 Stream을 앞으로도 많이 써야 하는 것중 하나라 생각하나 , 너무 모르고 쓴것같아 작성하게 되었다. 이슈내용 람다식을 사용하면서 지역변수를 사용하려고 했으나 지역변수를 사용할 수 없는 문제였다. 내가 작성하려 했던 코드와 유사한 방식의 코드를 아래에 구현해봤다. public static void main(String[] args) { LamdaThread a = new LamdaThread(); a.testStream(); } p..
현재 해당 포스트를 작성하는 시점에서 nCloud의 서버를 구성하고 있는 사양은 아래의 사진과 같이 설정이 되어있었다. 이후 도커를 활용하여 CD를 구성후 실행을 할 경우 배포가 되는데 Hello World만찍은 시점에서 많은 시간이 소요된다고 느껴 멘토링에서 서버의 사양과 관련한 이슈를 얘기를 해보게 되었다. 도커를 사용하게 될 경우 현재 docker-compose를 통하여 모두 동시에 실행을 하도록 하고 있는 상황인데 도커가 실행되면서 자세한 자원사용 상황에 대한 모니터링을 진행하지를 않고 그저 Docker의 최소권장사양보다도 미달되는 사양이다 보니 무례하게 질문을 해버렸었다.. 이후 직접적인 모니터링을 통해 확인을 해보니 Docker를 실행하게 될 경우 자원의 소모량은 프로젝트 이미지와 DB의 이미..
회사에 다니면서 가장 해보고 싶었으나 못했던 부분에 대해서 작업을 해보고자 한다. CI / Continuos Integration : 지속적 통합 CD / Continuos Delivery : 지속적 배포 두가지 의미이며, 초창기에 CD의 구상은 젠킨스를 진행하려했으며 CI에 대한 개념이 부족했어서 설계를 진행하지 않았었다. 먼저 CI에 대한 작업을 진행하면서 굳이 CD작업에서 젠킨스밖에 몰랐던 부분에서, 굳이 젠킨스의 사용없이 구상이 가능하다고 생각이 들어 설계를 변경하고자 생각하게 되었다. 사용된 툴? 설계를 진행함에 선택한 도구는 Git Action을 사용해보기로 하였다. Youtube 알고리즘의 간택으로 영상들을 보다 보니 간편한 설계가 가능해 보이면서도 해당 설계를 작성하는 과정이 너무 재밌어 ..