전체 글 19

[PC] 나이트워커 출시 / 쿠폰

나다. 이 글이 뭐하는 글이냐면 본인은 코드 짜고 있어도 모자랄 시간에 게임을 하는 병X이다. 그러나 어쩌겠는가 재미있어 보이면 해야됨. 오늘은 에이스톰에서 개발하고 넥슨이 퍼블리싱 하는 나이트워커라는 게임에 대해 소개하려 한다. 나이트워커의 전작 혹시 최강의 군단이라는 게임을 알고 있는가? 아마 나와 비슷한 세대라면 해본 적이 있을지 모르겠다. 플레이해본 결과 당시 최강의 군단이 가지고 있던 시스템을 상당수 계승한 듯 보이는데 최강의 군단은 메이플 유니온과 비슷한 시스템인 "군단 레벨"이라는 것을 가지고 있었다. 군단 레벨은 각 플레이어블 캐릭터의 레벨을 총 합산하여 유저에게 혜택 아닌 혜택을 주는 시스템 이였던 것으로 기억한다. 당시 만신전이라는 던전에 입장하기 위한 입장권과 군단 주화를 줬던 걸로 ..

게임 2023.01.26

[Spring] Spring Framework의 탄생과 기능 (下)

나다. 이 글이 뭐하는 글이냐면 [Spring] Spring Framework의 탄생과 기능 (上) 나다. 이 글이 뭐하는 글이냐면 우리는 자바를 통해 웹 프로젝트를 제작할 때 Spring이라는 프레임워크를 사용한다. 아주 오래된 시스템의 경우 스트럿츠2 라는 프레임워크를 사용하는 시스템이 no-brain-dev.tistory.com 이전 글에 이어 Spring 기능에 대해 설명하는 글임. 딱히 상편에서 하편으로 이어지는 구성은 아니기 때문에 굳이 상편으로 돌아가서 읽고 와야 할 필요는 없지만 한 번에 많이 쓰기 귀찮아서 두편으로 쪼개놨다. 상편도 궁금하면 가서 보셈. ^오^ MVC란 무엇인가. 지나가다 한 번쯤 MVC라는 말을 들어 본 적이 있는가. MVC는 (Model - View - Controll..

Spring 2023.01.26

[Spring] Spring Framework의 탄생과 기능 (上)

나다. 이 글이 뭐하는 글이냐면 우리는 자바를 통해 웹 프로젝트를 제작할 때 Spring이라는 프레임워크를 사용한다. 아주 오래된 시스템의 경우 스트럿츠2 라는 프레임워크를 사용하는 시스템이 있다고 하는데난 식견이 좁아 본 적 없음. 어쨌든 대부분 자바 진영의 경우 Spring으로 통일되어 있다 봐도 무방한 상태인데 혹자들이 "혐자정부 프레임워크"라 부르는 전자정부 프레임워크 또한 Spring을 기반으로 한다. 이번 글에서는 Spring Freamwork의 탄생 배경 기능에 대해 알아보자. BS(Before Spring) 의 시기 때는 바야흐로 2000년대 초반 Spring이 탄생하기 전 개발자들은 EJB라는 기술을 사용했다. EJB는 여러 장점을 가지고 있었으나 치명적인 단점들을 가지고 있었는데 개같이..

Spring 2023.01.23

[JPA] no entitymanager with actual transaction available for current thread

나다. 이 글이 뭐하는 글이냐면 우리는 살면서 어이없는 일들과 마주하게 된다. 그리고 대부분의 어이없는 일들은 사소한 실수에서 비롯된다. 이 글의 제목 또한 굉장히 사소한 실수에서 발생하는 개 같은 일인데 이번 글을 통해 같은 실수를 하는 사람이 적어지길 바라는 마음으로 쓴다. 왜 이 오류가 발생했냐면 우리는 어떤 코드를 완성하면 테스트를 한다. 이는 척수반사와 같은 현상인데 테스트는 무조건적으로 시행되어야만 코드에 존재하는 하자를 검증할 수 있기 때문이다. 물론 비단 테스트를 할 때뿐 아니라 어느 경우든 발생할 수 있지만 내 생각에 대부분 테스트 단계에서 어떤 것을 저장할 때 발생하게 될 텐데 이 오류는 EntityManager가 persist() 함수를 호출 받았으나 함수를 처리 할 Transacti..

JPA 2023.01.04

[Info] API란 무엇인가.

나다. 이 글이 뭐 하는 글이냐면 여러분은 "Open API"라는 말을 들어본 적이 있는가? 아마 많은 곳에서 API라는 말을 들어본 적이 있을 것이다. 그만큼 API는 대중적으로 활용되고 있으며 그 성능 또한 우수하다. 이 글에서는 API가 무엇인지와 어떤 역할을 하는지에 대해 설명한다. API란? 우리는 API라고 한다면 감을 잡기 어려워하는 경향이 있다. 그 이유를 생각해 본 결과 아마 설명이 추상적이기 때문이라는 생각에 도달했다. API란 두 애플리케이션이 서로 질문과 응답을 하기 위한 "통신 규격의 정의"를 이야기하기 때문이다. 예전 어느 글에서 아마 언급한 적이 있다. API는 중국집에 배달을 시키기 위한 메뉴판이라고. 이렇듯 API는 요청하는 쪽과 응답하는 쪽의 통신을 하기 위한 "그들만의 ..

Info 2023.01.03

[Java] HashMap이란 무엇인가.

나다. 이 글이 뭐하는 글이냐면 우리는 자료구조를 사용하며 많은 난관을 해결한다. 그 중 HashMap을 굉장히 많이 사용하게 되는데 HashMap을 가장 쉽게 이해하는 방법은 꼬리표를 붙혀 물건을 넣어놓는 하나의 "금고" 로 생각하면 아주 쉽게 이해할 수 있다. 나와 같은 세대에 학교를 다녔거나 군 복무를 했다면 휴대폰 보관함에 대해 알고 있을 확률이 높다. 휴대폰 보관함에는 각자의 이름이나 출석번호 또는 군번 등이 적혀있고 휴대폰을 해당하는 칸에 보관하게 되어있다. 다음에 해당하는 구조가 딱 위의 비유와 적절하다 생각된다. Map 휴대폰보관함 = new HashMap(); 이번 글에서는 이 휴대폰 보관함이 어떻게 만들어지고 사용되는지 알아보자. HashMap이란. HashMap은 Java의 Map 인..

Java 2023.01.01

[Java] String이란 무엇인가.

나다. 이 글이 뭐하는 글이냐면 문자는 우리가 필수적으로 사용하는 요소다. 지금 당신이 보고있는 이 글 또한 문자로 구성된 하나의 정보집합체라고 할 수 있다. 자바를 배우며 우리는 숫자만 출력하지 않고 어떤 문장 또는 문자를 표현할 때가 있다. 그런 경우 우리는 주로 String을 사용하는데 당신은 String이 어떤 방식으로 우리가 입력한 문자 또는 문자열을 저장하고 사용할 수 있게 하는지 알고있는가. 이번 글에서는 String의 개념과 작동원리에 대해 설명한다. String과 char의 차이 먼저 String은 문자열이다. 문자 여러 개 붙혀놓은거 맞음 그거 ㅇㅇ 당신은 char라는 원시타입의 문자 변수를 알고있는가. 통상 char라 함은 하나의 문자를 저장하고 사용하기위해 사용된다. public c..

Java 2022.12.31

[IntelliJ] The specified project directory does not exist

나다. 이 글이 뭐하는 글이냐면 우리는 매일 어제와 다른 오늘을 맞이한다. 우리의 프로젝트 또한 어제와 다른 오늘을 맞이한다. 마지막 종료 후 다음날 다시 켰을때 갑자기 왠 개같은 오류들이 뿜어져나오는 경우는 아마 다들 겪어보셨으리라는 생각이 든다. 나 또한 오늘 마찬가지의 경우를 겪었다. 그냥 어제 하던거 다시 켰을 뿐인데 갑자기 프로젝트가 개병X이 되어있길래 해결은 했지만 다른 이들도 똑같이 겪을 수 있는 일이기 때문에 글을 쓴다. 그리고 이게 짧아서 쓰기 편함 ㅋㅋ 단, 이 경우는 Gradle을 쓰는 경우로 한정되어있다. 어떤 오류냐면 The specified project directory ~~~(대충 님 디렉토리 구조) does not exist 다음과 같은 오류를 보신적이 있을 수도 있다. 이..

Info 2022.12.31

[JPA] 연관관계 맵핑(다대일 / N:1)

나다. 이 글이 뭐하는 글이냐면 JPA는 객체와 데이터베이스의 싱크를 맞춰 객체로 데이터베이스를 쪼물딱거릴 수 있게 하는 기능을 가지고 있다. JPA가 그 둘을 이어주는 교량의 역할을 하지만 결정적으로 "어떤 요소를 어떤 요소에 이어줄지" 명시하는 것은 필수적이다. 삼라만상 모든 일들이 같다. 이번 글에서는 그 방법에 대해 예시와 함께 알아보자. 객체를 테이블에 맞추면? 먼저, 객체를 테이블에 맞추어 모델링 한 경우에 대한 예를 보자. 우리가(You) 배가 고파 전화를 통해 동네에 하나뿐인 중국집 청룡각(BlueDragonR, 간짜장/찹쌀탕수육 밖에 할 줄 모름)에 주문을 한다고 치자. @Entity @Getter @Setter public class You { @Id @GeneratedValue @Co..

JPA 2022.12.28

[JPA] JPA와 PK 그리고 Id

나다. 이 글이 뭐하는 글이냐면 오랜만에 글을 쓴다. "요세 무슨 일이 이렇게도 많은지" 라는 핑계로 잠깐 놀다가 왔다. 이번 글에서는 영속성 컨텍스트에서 특정 컨텐츠를 다루기 위해서 필수적으로 있어야만 했던 Id(식별자)와 그 값의 사용 전략들에 대해 알아볼거다. 아이디를 부여하는 방법 모든 일에는 순서가 있다고 했던가. 먼저 아이디를 사용하고 싶다면 아이디를 만들어야 사용할 수 있을 것이다. 우리는 간혹 테스트코드를 만들거나 간단히 어떤 요소를 테스트하고 싶을때 임시적으로 Long id = 1L; item.setId(++id); 와 같이 사용하고는 한다. 물론 아이디를 부여함에는 변함이 없으며 자동으로 1씩 증가하기 때문에 모든 요소에 중복되지 않는 고유적인 아이디를 부여함은 변하지 않는다. 하지만 ..

JPA 2022.12.28