rodpold의 등록된 링크

 rodpold로 등록된 네이버 블로그 포스트 수는 74건입니다.

java redis cache 사용시 list 결과물 가져올때 경고와 함께 캐시 데이터를 가져올 수 없는 경우 [내부링크]

문제 발생 아래와 같은 코드 사용중 다음과 같은 레디스 경고가 발생할 수 있다. @Cacheable(cacheNames = "listsCacheName", key = "#myKey") public List<MyList> findAll(String myKey) { List<MyList> myList = getMylist().stream().toList(); return myList; } Could not read JSON: Unexpected token (START_OBJECT), expected VALUE_STRING: need JSON String that contains type id (for subtype of java.lang.Object) at [Source: (byte[])"[{"@class":"... 이 경고는 redis 에서 list 데이터를 가져오려고 했으나 제대로 분석하지 못해 데이터를 가져올 수 없었음을 말한다. 따라서 이 코드는 캐시를 타지 않고 다시 한번 데이

supervisor 를 이용해 docker container 에서 두 개 이상의 프로세스 띄우기 [내부링크]

서론 docker 환경에서 개발 및 배포를 하다 보면 특정 상황에서 docker container 를 여러개 사용하지 못하고 단 하나에 프로세스들을 넣어 사용해야 하는 때가 오기도 한다. 물론 그러한 개발 방향은 일반적인 해결 방법이 아니며 docker 가 원하는 방향으로 개발하는 것도 아니다. 상황 혹은 필요한 경우 다른 업체로 완성된 결과물을 제공할 때 하나의 이미지로 동작하는 온전한 프로그램처럼 보이게 하고 싶은 경우 네이버 클라우드의 docker 배포 중 빌드 과정에서 하나의 이미지만 빌드할 수 있는 경우 구체적인 예시 php-fpm 과 nginx 는 각각의 컨테이너를 가지고 구동되어야 한다. 그런데 다른 앱과는 다르게 php 의 경우 nginx 가 앞단에서 먼저 서버 역할을 하며 php 파일을 php-fpm 을 통해 처리하여 결과를 제공한다. php가 어떤 빌드 결과물을 생성하고 nginx 가 그 결과물에 전달하는 것이면 좋겠지만 php는 인터프리터 언어이기 때문에 빌드과정

웹 3.0 조사해보기 [내부링크]

서론 웹 3.0에 대한 이야기가 많이 나오고 있다. 그리고 그 이전에는 무슨 이야기가 많이 나왔을까? 오늘은 부제가 있다. 오늘의 부제는 다음과 같다. 새로 생겨나는 용어를 주의하라 웹 1.0과 2.0 우선 웹 3.0에 대한 정의를 찾기 위해 많은 인터넷 글을 찾아보았다. 그런데 먼저 이 용어를 알기 위해서는 웹 1.0과 웹 2.0에 대해서 먼저 짚고 넘어가야 한다. 간단하게 표로 정리해보자. 비교 방식 웹 1.0 웹 2.0 시대 과거 서비스, 2004년 이전 현재 사용 중, 2004년부터 현재까지(2022) 인터넷 속도 모뎀 수준(엄청 느림) 현대의 인터넷 속도 서버의 위치 중앙 중앙 정보의 방향 단방향 -> 대부분 단순 정보만 제공(TV같은) 양방향 -> 유저가 서버에게도 컨텐츠를 올림 더 간단히 설명해서 웹 1.0은 사실 인터넷의 초기 모델로 할 것이 별로 없었다. 2004년 이전이라고 하지만 사실상 저 경계는 좀 모호하다. 왜냐하면 이것을 구분할만한 명확한 범위나 근거가 없기

jpa save(insert) 시 Validation failed for classes ... during persist time for groups [내부링크]

만약 JPA에서 insert를 했는데 Validation 실패가 떴다면 우선 에러를 먼저 살펴보자. 예시를 위해 테스트 코드를 작성했는데 이렇게 작성했다. @BeforeEach void setUp() { // 더미 사용자 데이터 추가 User dummyUser = User.builder() .userId("tester") .userPwd("1234") .userName("홍길동") .userNickname("테스터") .build(); userRepository.save(dummyUser); } 오류는 아래와 같다. Validation failed for classes [kr.co.myapp.domain.user.User] during persist time for groups [javax.validation.groups.Default, ] List of constraint violations:[ ConstraintViolationImpl{interpolatedMessage='널이어

맥 사용시 모니터 좌우가 바뀌는 현상 해결 [내부링크]

애플 모니터는 비싸서 못써봤고, 동일한 모니터 모델을 사용하면 위치 저장이 정상적으로 되지 않는다. 서론 지난번 "맥북 사용시 모니터의 모델명이 같으면 발생하는 문제"라는 내용에 대해서 포스팅을 작성한 적이 있다. 이 때는 결국 문제 해결을 하지 못했는데 지금은 약간 불편하지만 어느정도 해결 방법을 찾아 이 방법에 대해서 공유하고자 이 포스팅을 남긴다. https://blog.naver.com/rodpold/222802353358 맥북 사용시 모니터의 모델명이 같으면 발생하는 문제 주의: 이 포스팅엔 아직 완전한 해결책이 없음! 서론 회사에서 맥북으로 개발하는데 보통 듀얼모니터를 이... blog.naver.com 나 같은 불편한 사람이 더 이상 나오지 않았으면 좋겠다... 준비물 오늘은 총 3가지의 기능과 개념을 이해하고 사용해야 편하다. (자그마치 3가지 기술이 조합된 컴비네이션...) displayplacer automator 키보드 단축키 로 구성되어 있는데 이제부터 하나씩

Git 기본기 다지기 10 - revert, amend, cherrypick [내부링크]

서론 Git 을 사용하다보면 몇가지 낮선 용어가 있을 때가 있다. 그런 경우가 제목과 같은 경우인데 revert는 생각보다는 자주 사용하게 된다. 이번에는 각 명령어별 사용하는 상황과 기능에 대해서 설명하고자 한다. revert revert는 우리말로 돌아가는것에 해당된다. 이 명령어는 말 그대로 커밋을 되돌리는 역할을 한다. 우선 세부적인 기능을 설명하기 전에 어떻게 사용하는 것인지 명령어를 먼저 한번 확인해보자. $ git revert [해시코드] 해시코드가 뭘까? 이것은 각 commit 에 대한 id를 말한다. 혹시 해시코드에 대해서 조금 더 자세히 알고 싶다면 아래 링크를 타고 가서 보면 된다. https://blog.naver.com/rodpold/222771985511 해시(hash)란 무엇인가? 서론 해시(혹은 해쉬 라고 하지만 해시가 맞는 표기법이라 한다)란 단어를 어디선가 많이 본 적이 있을 것... blog.naver.com 그럼 이 해시코드는 어떻게 확인할까? 그

코로나 걸린 후기 - 이건 감기가 아니다 [내부링크]

코로나에 결국 걸렸다. 증상이 생겨난 시기는 2022년 7월 23일 토요일, 그리고 약 1주일간 격리한 후 회복되기까지 과정과 현재의 상태와 관련된 자료를 찾아 정리한 것을 공유하고자 한다. 걸리기 전 정보 30대 후반 남성. 얀센 백신을 맞고 모더나 백신으로 2차를 맞음. 다른 사람의 기준으로는 3차 백신까지 맞은 상태이다. 2022년 7월 23일 토요일 코로나 증상이 시작됐다. 처음엔 정말 경미한 증상이었다. 목이 아주 약간 간지러운 느낌이었고 나도 모르게 한두번 기침이 나왔다. 그래서 저녁쯤에 코로나 자가 검사 키트로 검사를 해보니 두 줄, 양성이 나오게 되었다. 이때까지도 몸이 아프다는 생각은 들지 않았다. 2022년 7월 24일 일요일 토요일에서 일요일로 넘어가는 밤과 새벽부터 몸이 안좋아진다는 느낌을 받기 시작했다. 주 증상은 가래와 몸살 기운이었다. 체온을 재 보진 않았지만 열이 나고 있는 것이 분명했다. 양성으로 표시된 키트를 들고 보건소로 향했는데 문이 닫아 있었다.

docker 환경의 redis 사용 중 자주 사용할만한 명령어 [내부링크]

서론 처음엔 잊어버리지 않을 것 같이 자주 사용하던 명령어도 시간이 지나면 대체 어떻게 했지? 하고 기억이 나지 않을 때가 많다. 심지어 이 포스팅도 과거에 비슷한걸 썼는지 안 썼는지 조차 기억이 나질 않는다... 그래서 나중에 검색으로라도 문제가 생겼을 시 디버그용으로 어떻게 접속해서 들어가는지에 대한 명령어 정리를 가볍게 해 둘 생각이다. docker에서 찾아 들어가기 1. 먼저 현재 돌아가고 있는 컨테이너를 확인한다, 이 때 port 설정이 어떻게 되어 있는지도 잘 확인한다. $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d84352234632 bitnami/redis:6.2 "/opt/bitnami/script…" 3 months ago Up 3 months redis-master 90c4da8bf621 bitnami/redis:6.2 "/opt/bitnami/script…" 3 months ago Up

Junit5에서 @BeforeAll의 정체... 왜 Static일까? [내부링크]

가정 개발자 A가 있다. A는 열심히 테스트 코드를 배우며 공부를 하고 있다. 이제 데이터베이스를 테스트해보기 시작한다. 단순한 CRUD를 처리하던 도중 갑자기 의문점이 든다. "테스트가 시작하기 전 한번에 데이터를 밀어 넣는 방법은 없을까?" 테스트 전에 수행하는 동작이 있는지 열심히 검색해본다. 드디어 @BeforeAll 이라는 어노테이션을 찾을 수 있게 된다. 보아하니 테스트 코드가 시작하기 전 한 번만 수행할 수 있게 해주는 어노테이션이다. 이거라면 테스트코드가 시작하기 전에 필요한 데이터를 밀어 넣고 테스트를 해 볼 수 있을 것 같다는 생각이 든다. 문제 처음부터 문제가 생긴다. @BeforeAll 어노테이션을 선언하면 메소드가 스태틱(Static) 이어야 한다는 것이다. 데이터를 미리 밀어넣기 위해 그 안에 @Autowired 된 Repository 를 가져오려고 한다면? 붉은색으로 에러를 내뱉게 된다. 스태틱도 아닌 것들은 이 곳에 발을 들일 수 없다며.. @DataJp

ChatGPT 잘 쓰는법 [내부링크]

서론 ChatGPT는 이제 많은 뉴스와 유튜브 등에서 소개되었고, 어느정도 인지도가 생겼다고 볼 수 있다. 또 그 엄청난 기능에 놀라 수많은 사용 예시들을 보며 감탄했을 수도 있다. 그런데 아마 상당수 사람들은 그렇게 감상하는 것에서 끝났을 가능성이 높다. 왜냐하면 아직 한국어에는 서투른 부분도 있고, 막상 질문을 하려면 어떤 것들을 해야 하는지 모를 수 있기 때문이다. 그래서 이번엔 ChatGPT에 대한 간략한 소개와 함께 어떻게 사용하는지 예시를 들어 설명하려고 한다. ChatGPT란 무엇인가? ChatGPT는 당연히 Chat와 GPT를 합친 말이다. Chat은 대화라는 뜻이겠지만 GPT는 무엇일까? 이 줄임말은 Generative Pre-trained Transformer 라고 한다. 위키에 있는 우리말로 표현하자면 "생성적 사전학습 변환기"이다. 우리말도 무슨 뜻인지 어렵다. 왜냐하면 이름 안에 인공지능 학습에 대한 알고리즘 기법을 표현했기 때문이다. 그냥 간단하게 풀어 설명

경고는 막 가리면 안 된다 [내부링크]

서론 플러터로 작업을 하다보면 다음과 같은 제안(약한 경고)을 받을 수 있다. Prefer const with constant constructors. 이것에 대해서는 약한 경고라서 주의에 해당되는 것이다. 작업 중 동작하는 것에 대해서는 별 다른 영향은 없을지라도 성능에는 영향이 갈 수 있기에 이러한 제안을 남겨주는 것이다. 이게 무엇인가? 다음과 같이 앱 바에 텍스트 하나를 표시하려고 한다. appBar: AppBar( title: Text('Next Page'), ), 그러면 Text 항목에 경고를 보여주고 추천대로 수정을 하게 되면 다음과 같이 된다. appBar: AppBar( title: const Text('Next Page'), ), 이게 뭘까? 이 귀찮은걸 모든 소스코드에 다 적용 해야하나? 심플한 해결? 우선 이를 해결하는 방법에 대해서 구글링을 하면 stackoverflow 에 다음과 같이 나온다. https://stackoverflow.com/questions/

자바 테스트시 Failed to load ApplicationContext [내부링크]

테스트코드 작성 후 실행을 해보면 다음과 같은 오류로 실행이 안 될 때가 있다. java.lang.IllegalStateException: Failed to load ApplicationContext 이때 내 경우에 테스트 결과에서 동작하지 않는 부분만 집중해서 오류를 봤는데 이러면 문제를 해결할 수 없다. 아래 스크린샷을 보자. 왼쪽 네모칸 말고 그 위를 눌러보자 Action: Consider defining a bean of type 'kr.co.myapp.api.service.MyUserService' in your configuration. ERROR 22-06-17 13:00:27[Test worker] [TestContextManager:252] - Caught exception while allowing TestExecutionListener [org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener

Git 기본기 다지기 7 - Branch [내부링크]

Branch는 가지 라는 뜻이다 서론 Git Branch는 소스코드의 상태를 여러 상태로 나누어 사용할 수 있는 기능을 가지고 있다. 이게 무슨 기능인지, 왜 필요한 것인지 어떻게 사용하는지 알아보자. master 혹은 main 지금까지 단계들을 따라오고 있었다면 사실은 이 브랜치라는 기능을 이미 사용하고 있었다. 그것을 확인해보고 싶다면 자신의 프로젝트 폴더로 이동해서 Shell 에 다음과 같은 명령어를 한번 입력해보자. $ git branch 그러면 다음과 같은 결과를 확인할 수 있다. 녹색 main 부분은 Github에서 생성했다면 main, Bitbucket 에서 생성했다면 master로 되어 있을 것이다. 이는 처음 자신의 원격 저장소를 생성할 때 처음 생성할 브랜치 이름을 물어보는 경우도 있고 자동으로 생성해 주는 경우도 있다. 어쨌든 대부분의 이름은 master 혹은 main이 될 것이다. 이제 이 브랜치를 하나 더 생성해보자. 그럴려면 조금 전 명령어에서 한 단어를 더

보안 시리즈 1 - 비밀번호가 뚫리는 이유 [내부링크]

서론 가끔씩 로그인을 하다보면 해외에서 시도한 로그인을 차단했다는 문구를 볼 때가 있다. 또는 로그인을 하지도 않았는데 인증 확인 메일이 오는 경우도 있다. 그들은 내 비밀번호를 대체 어떻게 알아냈을까? 방법 크래커(흔히 알고 있는 해커인데 나쁜짓을 하는 해커라고 보면 된다)가 회원의 비밀번호를 탈취하는 방법은 꽤 많은 방법이 있다. 여기서 문제는 비밀번호를 보호해야 하는 책임이 홈페이지 관리자에게 있는 경우가 대부분이지만 반대로 그렇지 않은 경우도 있다. 기본적인 원리와 함께 비밀번호를 보호하기 위해서는 어떻게 해야 하는지 약간의 프로그램 지식과 함께 알아보고자 한다. 마지노선 전투 - 백도어(Backdoor) 입구는 보안이 철저한데 뒷문이 열려 있네? 2차 세계대전에서 프랑스는 독일이 침공하지 못하게 대규모 방어선을 구축했다. 막강한 방어선을 구축한 것을 안 독일은 정면으로 이를 돌파하지 않고 그냥 우회했다. 이런 이야기는 개발자의 세계에서도 통한다. 백도어라는 이야기를 들어 보

Git 기본기 다지기 8 - Pull, Fetch, Merge [내부링크]

Merge 서론 Git의 핵심 기능은 Merge라고 할 수 있다. Merge란 우리말로 병합이라는 뜻이며, Git의 기능으로는 서로 다른 두 파일의 소스코드를 합쳐주는 역할을 한다. git pull git pull은 원격 저장소에서 업데이트된 내용이 있는지 확인하고 내 로컬 소스에 반영하는 기능이다. 우선 아래 스크린샷을 먼저 보자 서로다른 소스코드가 합쳐지는 과정 Git은 기본적으로 서로 다른 두 자리에서 각각 개발을 한 후 자신의 소스코드를 원격 저장소로 업로드 하는 일을 기본으로 한다. 그렇기 때문에 누가 먼저 push를 할지 pull을 할지 알 수가 없다. 그럼 결국 같은 파일을 동시에 수정하고 커밋하는 일이 발생하게 된다. 그 사례가 바로 위 스크린샷과 같은 사례인데, 왼쪽에 있는 사람은 둘째줄을 수정한 뒤 commit을 하고 오른쪽에 있는 사람은 세번째 줄을 수정한 뒤 commit하였다. 이는 서로 같은 파일을 수정한 것이다. 만약 윈도우 탐색기를 예로 들면 A가 만든 파

Github Copilot 테크니컬 프리뷰 종료 [내부링크]

Start my free trial 서론 Github Copilot은 Github의 수많은 소스코드를 학습하여 나온 결과를 바탕으로 코딩을 할 때 적재 적소에 필요한 소스코드를 추천해 주는 플러그인이다. 6월 21일까지는 테크니컬 프리뷰였기에 무료로 서비스를 이용해 볼 수 있었으나 2022년 6월 22일부터는 유료 서비스로 변경되었다. 그러나 아직은 60일간 free trial 로 무료로 사용할 수 있다. 자세한 깃허브 코파일럿에 대한 기능은 아래 링크 참조: https://blog.naver.com/rodpold/222728367994 GitHub Copilot 사용 후기 Microsoft가 인수한 GitHub에는 현재 Copilot이라는 서비스를 테크니컬 프리뷰 상태로 진행중이다. 그... blog.naver.com 결제 세부 정보 Start my free trial을 눌러서 무료 플랜을 이용한 후 자동 결제 서비스로 넘어가게 되는 방식으로 되어 있다. 만약 지금까지 테크니컬 프

보안 시리즈 2 - 비밀번호를 왜 복잡하게 설정하라고 할까? [내부링크]

서론 회원가입을 하다보면 비밀번호를 입력하는 절차는 거의 대부분 서비스의 절차 중 하나이다. 그런데 손쉬운 비밀번호로 적으면 비밀번호를 외우기도 쉽고 적기도 편할텐데 그렇게 하면 홈페이지는 자꾸만 숫자를 섞으라고 하고 특수문자를 섞으라고 한다. 어떤 곳은 글자 수 10자 이상에 대문자와 특수문자를 모두 섞어서 만들어야 한다고 한다. 대체 왜 그런 걸까? 무차별 대입 공격 - brute force attack 비밀번호를 모를때 이걸 푸는 방법은? 비밀번호가 4자리 숫자인 자물쇠를 생각해보자. 모르는 사람의 자물쇠고 이제 이 자물쇠를 해제해야 한다고 생각해보자. 그리고 주변엔 아무도 없다. 가장 먼저 단순하게 생각해 볼 수 있는 방법은 누구나 떠올릴 수 있다. 그렇다. 0000부터 9999까지 입력해보는 것이다. 컴퓨터 역시 마찬가지 방법을 이용할 수 있다. 이러한 공격 방식을 무차별 대입 공격(brute force)라고 한다. brute 라는 뜻은 짐승 같은 이라는 뜻을 가지고 있는데

Git 기본기 다지기 9 - Conflict [내부링크]

서론 Conflict 는 두 명의 서로 다른 개발자가 같은 소스코드를 수정한 뒤 커밋을 하고 push를 하게 되면 먼저 push한 사람은 정상적으로 적용되지만 나중에 push 한 사람은 Conflict가 발생했다는 메시지를 받게 된다. Git에서 가장 어려움을 겪는 충돌(Conflict)에 대해서 알아보려 한다. 발생하는 이유 Git은 기본적으로 온라인 저장소(원격 저장소)에 있는 소스코드를 내려받아 작업 후 작업이 끝나면 다시 온라인 저장소에 업로드 하는 과정을 반복하게 되어 있다. 그럼 이런 업무를 진행하는 사람이 2명 이상이 되면 어떨까? 서로 똑같은 소스코드를 각자 작업할때 각 개발자들은 Commit이라는 과정을 거치게 된다. 이전 포스팅에서 Commit이란 서류에 도장을 찍는 과정이라고 이야기 한 적이 있다. 이는 물리기 어려운 일에 해당되며(가능은 함) 하나의 이력으로써 남는 행위가 된다. https://blog.naver.com/rodpold/222781691435 Gi

1. 회사 이야기 - 개발자들은 회사에서 무슨 일을 할까? [내부링크]

생각해보니 개발에 대한 이야기만 쓰고 실제 개발자가 되어 회사에서 실무를 하며 겪는 일에 대해서는 쓴 적이 없어서 이러한 제목을 적었다. 그런데 사실 제목에 대한 정답은 "나도 알 수 없다"이다. 왜냐하면 수 많은 회사를 다녀본 것도 아니고 다른 모든 개발자들의 회사 이야기를 들어본 것도 아니기 때문이다. 그렇기 때문에 여기서 글을 쓰는 것은 개인의 경험을 적는 일기 형식 말고는 적을 글이 없다. 이것도 다른 입사 이전의 개발자를 꿈꾸는 사람에게 도움이 되었으면 좋겠지만, 문제는 내가 겪은 시대와 지금의 시대는 분명 차이가 있을 것이기 때문에 완전한 참고가 되지 않을 것 같다. 어쨌든 그래서 시기별로 다녔던 회사의 경험을 토대로, 처음 포스팅은 개발자를 시작한 2011년부터 시작하려고 한다. 게임 시나리오 작가 원래 나는 공대에 나오고 프로그램을 배우긴 했지만 개발자가 되고 싶지는 않았다. 대학교를 다니던 당시의 2003년도 개발자의 인식은 지금과는 너무도 달랐다. 당시의 개발자 인

보안 시리즈 3 - 개인정보가 유출될수록 사기 당할 확률이 높아진다 [내부링크]

피싱은 어디서든 일어날 수 있다. 서론 보이스피싱(사기 전화), 광고 문자, 카카오톡 그 외의 처음 보는 방식으로 접근하는 사기 수법, 그리고 앞으로도 예상하지 못한 수단으로 사기를 치려는 사람들은 계속해서 나타날 것이다. 이들은 어떤 방법으로 사기를 칠까? 개인정보의 중요성 민감한 개인정보는 사실 어떤것이든 될 수 있지만 그 중 가장 중요한 것은 어떤 요소가 자기 자신과 연결될 수 있는 것들이라면 민감한 정보라고 볼 수 있다. 예를 들어 이름, 전화번호, 집 주소 등은 매우 민감한 개인정보이다. 이러한 것들이 유출되면 제 3자가 이 정보를 보고도 특정인을 '추적'할 수 있기 때문이다. 마땅한 단어가 떠오르지 않아서 '추적'이란 단어를 썼는데, 이제 이 단어를 주목해서 어떤 방법으로 사기를 치는지 알아보자. 그 전에 개인정보가 어떻게 유출되는지 간략하게 알아봐야 한다. 개인정보가 어떻게 유출되는가 우선 개인정보, 그리고 민감한 정보가 있다. 이 정보들은 무엇을 말하는 것일까? 개인정

맥북 사용시 모니터의 모델명이 같으면 발생하는 문제 [내부링크]

주의: 이 포스팅엔 아직 완전한 해결책이 없음! 서론 회사에서 맥북으로 개발하는데 보통 듀얼모니터를 이용하는 경우가 많다. 그런데 모니터의 모델명이 같으면 맥북에서 저장한 모니터의 위치를 정상적으로 기억하지 못하고 회전된 모니터의 설정이 반대로 되거나, 모니터의 좌 우가 뒤집힌것처럼 되는 경우가 있다. 문제가 발생하는 세팅 및 원인 모니터 구성 모니터 구성은 사람마다 다르겠지만 내 경우엔 이런 형태로 구성되어 있다. 그리고 모니터 위쪽 말풍선을 보면 모니터의 모델명을 확인할 수 있는데 모델명 우측에 괄호(2) 라고 되어 있는 부분을 확인할 수 있다. 좌 우의 모니터 모델명이 똑같기 때문에 괄호로 구분되어 있는데 이 모니터의 좌 우가 뒤집히게 되는 것이다. 다음과 같은 상황에서 발생한다. 이는 100% 발생이 아니라 무작위 확률로 발생한다. 맥북의 전원이 종료된 후 다시 연결될 때 맥북이 슬립모드로 들어간 후 모니터의 전원이 절전 상태로 들어간 다음 다시 연결될 때 다른 곳에서 찾아본

Git 기본기 다지기 3 - git status, add, commit, push까지. 업로드를 하는 과정 [내부링크]

서론 이번 포스팅에서는 자신의 소스코드를 저장소로 업로드 하기까지의 과정에 대해서 설명하고자 한다. 각 과정별 예시와 함께 알고 넘어가야 할 요소를 짚어보자. .git git 으로 관리되고 있는 폴더라면 사실 .git 이라는 숨김 폴더가 있다. 이걸 확인하기 위해서는 아래와 같이 탐색기의 설정을 조금 만져줘야 한다. 탐색기의 보기 탭 > 숨긴 항목을 체크해보자 먼저 자신의 저장소가 있는 경로로 이동 후(스크린샷의 경우엔 hello-world) 위 스크린샷과 같이 보기 탭에서 숨긴 항목을 체크하면 아무것도 없던 폴더에 .git 이라는 폴더가 나타난다. 이제 이 .git 안에 뭐가 있는지 살펴보자. 무서워 보이는 파일들이 가득 들어있다 여러가지 파일들이 잔뜩 들어 있다. 하지만 이곳에 있는 파일들이 숨겨져 있는 이유는 그럴만한 이유가 있기 때문이다. 지금 굳이 깊게 들어갈 필요가 없다는 뜻이다. 그래도 뭐가 있는지 궁금한 사람들은 저기 선택된 config 파일을 더블클릭한 후 메모장으로

프로그래머라는게 뭘까? [내부링크]

실제로 프로그래머들은 회사에선 밝은 곳에서 일한다 첫 컴퓨터 내가 만났던 첫 컴퓨터는 1992년도에 본 알라딘 286이라는 컴퓨터였다. 지금은 구경도 하기 힘든 컴퓨터인데 당시에도 그랬다. 그 컴퓨터는 구경도 하기 힘든 것이었고 외삼촌이 얼리어답터라는 이유로 그 컴퓨터가 우리 집에 놓이게 된 것이다. 그 컴퓨터를 켜면 검은 화면에 녹색 영어 글자가 나온 후, 얼마 시간이 지나지 않아 검은색 화면에 녹색 프롬프트만이 깜빡이고 있는 것이 전부였다. 아무런 명령어도 몰랐고 해 볼 수 있는 거라곤 키보드의 영어 자판을 두드려가며 자신의 이름 석자 한번 적어보는 것이 전부였다. 그리고 컴퓨터는 우리 아버지에게도, 나에게도, 컴퓨터를 산 삼촌에게도 항상 같은 인삿말을 남겼다. Bad command or file name 영어를 모르는 우리 가족은 저게 무슨 뜻인지도 몰랐다. 뭔가 누르면 반응이 온다. 이것만이 첫 컴퓨터로 할 수 있는 "놀이"의 전부였다. 그리고 몇 개월이 지나서야 나는 그 녀

Git 기본기 다지기 4 - SSH 연결로 비밀번호 없이 Git 이용하기 [내부링크]

서론 이전 포스팅에서 이야기 했듯이 Bitbucket 에서는 이미 HTTPS 연결 대신 SSH연결을 권장하고 있고 SSH연결을 이해학고 있으면 더 안전하고 사용하기 편한 것도 사실이다. 이번 포스팅에서는 이 SSH연결에 대해서 이 기능이 어떻게 동작하는 것인지 간단하게 알아보고 사용 법에 대해서 익혀보고자 한다. RSA 암호화? 난데없이 암호화가 나와서 복잡할 수 있는데 여기서는 Git 에 대한 이야기만 할 것이라 RSA는 정말 찍어 먹는 수준으로만 알아보고 넘어가려고 한다. 어쨌든 이 암호화를 이용한 방식으로 인증을 거치기 때문에 비밀번호를 사용하지 않아도 되는 것이기 때문이다. 요점만 말하자면 다음과 같다. RSA 암호화 이것을 이용한 통신은 공개 키 라는 것과 비밀 키라는 두 가지의 키를 사용한다. 이 키는 소수(prime number)를 이용한 키로 숫자와 영문자로 인코딩되어 있다. 공개 키와 비밀 키는 누구나 컴퓨터에서 직접 쉽게 만들 수 있다. 공개 키는 암호 조립 설명서

MSA(MicroService Architecture) 마이크로서비스 아키텍쳐란? [내부링크]

이 사진의 의미는 뭘까? 서론 MSA를 검색하면 굉장히 많은 정보들이 나온다. 그리고 이게 요새 면접의 단골 질문이라는 것을 최근에 들어서 알게 되었다. 과연 대체 이게 뭐길래 MSA이야기가 많이 나오고 있을까? 이번 포스팅에서는 마이크로서비스 아키텍쳐에 대해서 깊게 들어갈 생각이 전혀 없다. 이건 그렇게 어려운 말도 아니며 복잡한 개념도 아니다. 하지만 서비스가 어떤 형태로 구성되는지 잘 모른다면 이를 이해하기 좀 어려울 수도 있다. 정답은 첫 이미지에 있다. 서비스는 어떻게 구성될까? 흔히 웹에서 어떤 서비스를 이용할때 그것이 어떻게 만들어졌는지 생각해 본적이 있는가? MSA를 이해하려면 그것부터 궁금증을 가져야 한다. 우리가 네이버에 접속해 들어간다면 그 네이버의 실체는 어디있을까? 왜 우리 집 컴퓨터에서도, 회사 컴퓨터에서도 네이버를 검색하면 동일한 네이버 홈페이지 정보가 나올까? 극적으로 줄여서 말하자면 네이버도 컴퓨터를 가지고 있다. 24시간 끄지 않는 컴퓨터이며 우리는

Git 기본기 다지기 5 - .gitignore [내부링크]

서론 제목에 적힌 단어는 어떤 기능을 하고 있는 파일 이름이다. Git 에서는 저 파일을 꽤 많이 사용하고 있으며, 없어도 동작하는 데는 상관이 없지만 다음 기능에 대한 설명을 읽어보면 반드시 필요한 기능이라고 생각될 것이다. .gitignore 의 기본 기능 .gitignre는 간략히 말하면 git에서 관리할 필요가 없는 파일을 제외하는 역할을 한다. 즉 이곳에 포함된 파일을 추적하지 않는다. 우선 .gitignore는 앞에 . 점이 들어가 있고 hello.txt 처럼 끝에 들어가는 .txt 같은 확장자가 없다. 이것은 리눅스 파일의 구조이기 때문인데 앞에 .이 붙어있는 파일은 숨김 파일이기 때문이다. (윈도우에서는 이런 규칙이 먹히지 않으니 그냥 잘 보인다) 이전 포스팅인 SSH로그인에서 자신의 id_rsa를 찾아가는 과정 중 .ssh 폴더의 경우도 사실은 마찬가지였다. 그래서 앞에 . 이 붙으면 폴더나 파일이나 리눅스에서는 숨김 파일로 만들어준다. 어쨌든 이 파일을 만들어 줘야

해시(hash)란 무엇인가? [내부링크]

서론 해시(혹은 해쉬 라고 하지만 해시가 맞는 표기법이라 한다)란 단어를 어디선가 많이 본 적이 있을 것이다. 블록체인에서 해시값이란 단어를 보거나, 프로그램을 배울 때도 해시 데이터라는 말을 들어본 적이 있었을 것이다. 그럼 이 해시가 대체 무엇일까? 이번 포스팅에서는 해시에 대해서 간략하게 알아보고자 한다. 해시는 꽤 많은 기법이 있으며 그 기법마다 다양한 알고리즘을 가지고 있기 때문에 여기서 전부 소개할 수가 없기 때문이다. 여기서는 해시가 무엇을 의미하는지 설명하는데 초점을 두려고 한다. 정의 해시는 프로그램 함수이다. 그리고 이 함수를 통과한 문자를 다시 되돌릴 수 없는 고정된 글자 수로 바꿔주는 역할을 한다. 이렇게만 보면 무슨 뜻인지 전혀 알수가 없다. 다음 예시를 한번 살펴보자. md5("hello") 5d41402abc4b2a76b9719d911017c592 md5("1") c4ca4238a0b923820dcc509a6f75849b md5("hello~ how are

테스트 코드 FIRST 원칙과 JUnit5 [내부링크]

테스트 코드는 그물일까? 서론 이번 포스팅은 아직 공부중인 단계인데 사실 내가 잘 하고 있는건지 확인도 필요하기 때문에 알아낸 사실에 한해 공유하고자 하는 마음이 더 커서 작성하게 되었다. 책을 찾아보고 인터넷을보고 유튜브를 찾아봐도 테스트 코드를 작성하는 원칙이나 로직만 있을 뿐 실제 노하우는 찾아보기가 힘들다. 그런데 그럴 만한 이유가 있는게 테스트 코드는 짜여진 소스코드에 따라 맞춤형으로 달라지기에 정확히 이런 경우에 이런 테스트 코드를 짜야 한다. 라는 정답이 있는 것이 아닌 것 같았다. (차라리 정답이 좀 있었으면 좋겠다) 아무튼 테스트 코드의 원칙에 대해서 간략하게 설명하고 그 원칙에 따라서 어떻게 테스트 코드를 짜면 좋을지 연구해보는 연구 목적의 글이 될 것 같다. 이대로 만들면 좋다 라는 것이 아닌 이런 상황에선 이렇게 해 보았다. 라는 공유 성 글이다. 테스트 코드란? 그럼 먼저 테스트 코드가 뭘까? 이해가 되지 않는 답변을 먼저 할 수밖에 없다. 테스트 코드는 프로

Git 기본기 다지기 6 - README.md [내부링크]

서론 다른 사람들의 Git 프로젝트를 받아봤다면 제목과 같은 README.md 혹은 readme.md 로 된 파일을 본 적이 있을 것이다. 만약 본 적이 없다면 github나 bitbucket 등의 온라인 저장소에 있는 다른 사람들의 저장소 메인에 들어가보자. 그럼 첫 화면에 아래와 같은 안내 문구를 본 적은 있을 것이다. 그것의 정체가 바로 readme.md 파일이다. readme.md 파일을 작성하면 나오는 모습 마크다운 확장자가 .md 로 끝나는 파일은 Markdown 이라고 쓰고 마크다운이라고 부르는 파일이다. 이것은 마크업 언어이기 때문에 양식이 있는 문서에 해당된다. 사실 이 마크다운만으로 문서를 따로 만들까 했는데 그렇게 복잡한 개념이 아니라 여기에 포함됐다.(나중엔 따로 만들수도 있다) 마크다운은 지금처럼 Git 프로젝트의 설명에도 쓰이고, 이메일, 협업용 문서 등 다양한 곳에서도 활용되고 있다. https://blog.naver.com/rodpold/222752172

GitHub Copilot 사용 후기 [내부링크]

Microsoft가 인수한 GitHub에는 현재 Copilot이라는 서비스를 테크니컬 프리뷰 상태로 진행중이다. 그럼 이 서비스가 무엇이고 어떤 이점이 있는지, 향후에는 어떻게 될지에 대해서 개인적인 의견을 적어보려고 한다. Copilot이란 무엇인가? Github Copilot의 메인 화면 설명에는 내 단짝이 될 프로그래머라고 한다. 대체 이게 무엇일까? 이를 좀 더 깊이 알고 싶다면 OpenAI의 GPT-3 라는 녀석을 알아야 한다. 하지만 나는 그렇게 까지 깊게 파고들며 설명하고 싶지 않다. 그저 이게 어떤 녀석인지 간략하게 설명하자면 Copilot은 코딩 중 필요한 곳에 꽤 적절한 소스코드를 추천해준다 여기서 중요한 점은 "꽤" 라는 것이다. 처음 이걸 사용한다면 아주 많이 놀랄 것이다. 마치 자동으로 프로그램을 짜 주는 마법같은 일이 벌어지고 있다고 생각하겠지만 실제로 사용하다 보면 그 정도까진 아니라는 것을 알 수 있다. 그럼에도 이 녀석은 이제 유료화가 된다 해도 옆에

MariaDB / Mysql 을 Docker 로 세팅하기 [내부링크]

Docker는 기본적으로 별도로 내 컴퓨터 혹은 서버에 프로그램을 설치하는 방식으로 서비스를 사용하는 방식이 아니라 컨테이너라는 어떤 별도의 묶음으로 실행되는 것이다. 해당 내용에 대해서는 아래 글 참조 https://blog.naver.com/rodpold/222606735045 docker에 대해 docker 를 설명한 글은 너무나도 많다. 특히 docker의 구조에 대해서 설명한 글이 서론에 자주 등장한다. ... blog.naver.com 세팅 개요 docker와 docker-compose 를 사용한다. docker-compose.yml 파일을 만들어 환경 설정을 한다. 도커 컨테이너를 실행한다. 기준은 mysql 기준으로 되어 있기 때문에 mariaDB와 약간은 다를 수도 있다. docker-compose.yml 파일 만들기 # docker-compose.yml version: "3.7" services: mysql: image: mysql:5.7 restart: alway

Google App Engine 소개 및 기초 사용법 [내부링크]

Google App Engine 은 Google Cloud Platform 내에 있는 수 많은 서비스 중 하나이다. 개요 App Engine 소개 첫 앱 만들기 배포하기 App Engine 소개 Google App Engine 소개 페이지 구글 앱 엔진은 매우 쉽게 설명하면 웹 호스팅 서비스이다. 기존의 Cafe24 나 가비아 등의 호스팅 서비스를 이용해본적이 있던 사람이라면 조금 더 익숙하게 다가올 것이다. 그러나 그러한 호스팅 서비스와 차이점 역시 가지고 있다. 기존 호스팅과의 차이점을 사용해보면서 느낀 점에 대해서 정리하자면 다음과 같다. 서비스 종류 기존 호스팅 Google App Engine 소스코드 업로드 방식 Filezilla 등의 FTP서비스를 이용해 직접 업로드 gcloud SDK를 설치하여 명령어를 통해 서버에 전송 가변적 인스턴스 (트래픽에 따라 유동적으로 대응하는 서비스) 일반적인 저렴한 서비스에는 없음(한 가상 환경 내부에서 동작한다) 가변적으로 인스턴스가 늘

마크업 언어란? [내부링크]

개요 마크업 언어(Markup Language)는 양식이 있는 문서의 한 종류이며 그 양식을 태그(좌, 우 부등호 처럼 생긴 꺽쇠 < > 로 구분)등으로 구분하여 문서 정보를 정확하게 전달하기 위한 목적으로 만들어진 문서이다. 이 중 상당히 많은 지분을 차지하고 있는 것이 HTML이며 줄임말을 풀어쓰면 Hyper Text Markup Language 라고 한다. HTML은 웹페이지를 구성하는데 사용되며 그 밖에도 여러 마크업 언어들이 존재한다. 줄임말로 Language 라고 쓰여 있어 마크업 언어라고 적지만 프로그래밍 언어와는 다르다. 마크업 언어는 단순한 정보 전달만을 하고 있을 뿐 프로그래밍 언어의 논리적인 부분(조건에 따른 분기 등)이 없기 때문이다. HTML은 프로그래밍 언어가 아닙니다 어디에 쓸까? 그럼 이런 문서는 대체 왜 생겼으며 어디에 사용하고 있을까? 마크업 언어는 이 자체로 뭔가가 있는 것은 아니고 여러 마크업 언어를 통틀어 말한다. 즉 HTML, XML 등을 마크

xml 파일이란? [내부링크]

xml 파일은 간단하게 말하면 주로 웹에서 데이터를 전송하기 위해 미리 약속해둔 방식으로 만들어진 문서를 말한다. 줄임말은 eXtensible Markup Language 이며 우리말로 하자면 확장 가능한 마크업 언어 라고 볼 수 있다. 이를 이해하기 위해서는 마크업 언어라는 것에 대해서 간략하게 알아야 할 필요가 있다. 마크업 언어란? - 특정 양식이 있는 문서를 통틀어 말하는 것으로 아래 링크 참조 https://blog.naver.com/rodpold/222752172285 마크업 언어란? 개요 마크업 언어(Markup Language)는 양식이 있는 문서의 한 종류이며 그 양식을 태그(좌, 우 부등호 처... blog.naver.com xml 의 생김새 xml 은 기본적으로 이렇게 생겼다(w3schools 의 샘플) <?xml version="1.0" encoding="UTF-8"?> <note> <to>Tove</to> <from>Jani</from> <heading>Rem

JSON 이란? [내부링크]

JSON은 Javascript Object Notation의 줄임말이다. 여기서 JS는 프로그래밍 언어인 Javascript가 맞다. JSON이 무엇인지 소개하기 앞서서 실제 개발을 하다보면 이 JSON 을 다양한 발음으로 발음하는데 현재는 "제이슨" 이라고 발음하는 것이 가장 널리 발음하는 방법이 되었다. 소개 JS가 자바스크립트라고 이야기 했듯이 JSON은 자바스크립트와 관련이 있다. 우선 이 녀석은 자료를 전달하기 위한 목적으로 만들어진 일종의 양식이다. 이러한 양식에 대해서 조금 더 깊이 알아보려면 아래쪽의 링크를 참고하면 된다. 마크업 언어란? https://blog.naver.com/rodpold/222752172285 마크업 언어란? 개요 마크업 언어(Markup Language)는 양식이 있는 문서의 한 종류이며 그 양식을 태그(좌, 우 부등호 처... blog.naver.com XML 이란? https://blog.naver.com/rodpold/22275349740

YAML, YML 이란? [내부링크]

YAML은 공식 홈페이지의 말을 따르면 YAML Ain't Markup Language 의 줄임말이다. 이것은 첫 글자 줄임말이 줄임말 전체를 의미하는 언어유희를 가진 줄임말이고, 이런 것들의 대표적인 것으로는 Linux(Linux Is Not UniX) 가 있다. 어쨌든 이 말을 우리말로 표현하자면 "YAML은 마크업 언어가 아닙니다" 라는 뜻이다. 사실 이 문서를 쓰기 위해 마크업 언어 -> XML -> JSON 까지의 문서를 만들었다. 왜냐하면 YAML이 앞서 말한 마크업 언어와 관련이 있는 역사를 가지고 있기 때문이다. 이 문서에 이해를 돕기 위한 링크들을 여기 붙여놓았으니 참고하면 좋을것 같다. 마크업 언어: https://blog.naver.com/rodpold/222752172285 XML: https://blog.naver.com/rodpold/222753497408 JSON: https://blog.naver.com/rodpold/222755536654 구조 먼저 공

Git 기본기 다지기 1 - 소개 및 설치 [내부링크]

Git 서론 Git에 대해서 시리즈별로 정리하여 최종적으로는 필요한 기능이나 명령어만 찾아볼 수 있도록 Cheat Sheet 를 만드는 것을 목표로 한 포스팅이다. Git은 기본기가 중요한데 이러한 사실을 모르고 사용하면 충돌(Conflict) 상황을 제대로 해결하지 못하고 패닉이 오게 된다. Git 에서의 충돌은 자연스럽고 의도된 것이며 Git의 핵심 기능 중 하나라고 볼 수 있다. 다만 IDE에서 붉은색으로 표시되는 것과, 충돌 이라는 용어 자체가 주는 오류의 느낌 때문에 해결하지 못하고 잘못되었다는 느낌을 받기 쉽다. 그렇지만 잘못된 것이 아니다. 이건 해결하기 위한 과정 중 하나고 이걸 사용해야만 진정한 Git 사용자가 된다고 볼 수 있는 것이다. 왜 Git을 쓸까? 최초엔 형상관리라는 시스템이 없었다. 형상관리란 소프트웨어의 변경 사항을 추적하고 관리하는 것인데 Git의 경우엔 프로그램 소스코드의 이력을 남기는 것이라고 생각하면 된다. 그럼 또 다른 질문이 들 것이다. 실수

Git 기본기 다지기 2 - git clone, 원격 저장소 세팅하기 [내부링크]

Git 서론 이번엔 Git 을 이용해서 소스코드를 커밋해 상태를 저장하고, 서버에 업로드하는 것 그리고 내려받는 것 까지 확인해보려고 한다. 먼저 소스코드를 서버에 올리기 위해서는 저장소(repository)가 있어야 하는데 온라인에서 이를 무료로 지원해주는 대표적인 두 저장소가 바로 Github와 Bitbucket 이다. 그럼 그 저장소에는 어떤 과정을 거쳐서 파일이 올라가게 될까? 그것은 다음과 같다. git의 소스코드가 원격 저장소로 올라가는 과정 여기서 화살표 아래의 글자가 명령어에 해당되고 그것을 주목하면 된다. add, commit, push 이렇게 세 명령어가 서버에 올라가는 과정에 해당된다. 이제부터 각 서버는 어떻게 만드는지, 그리고 서버에서 내 컴퓨터에 세팅은 어떻게 하는지, 그리고 저 과정을 통해 정상적으로 서버에 소스코드가 업로드 되는지 확인하는 과정을 진행하려 한다. 원격 저장소 선정 - Github 원격 저장소는 서론에서 적었듯이 사용자가 원하는 곳을 선택해

너무 오랜만에 포스팅 하네요 [내부링크]

이 글을 볼 사람이 몇이나 될지는 모르겠지만 ㅋㅋ 이제 이 블로그는 제가 공유하고 싶은 자료들을 올리는 공간으로 사용하고자 합니다. 그 안에는 당연히 네아월드도 포함되어 있을 것입니다. 그래서 다른 블로그에 있던 내용까지 전부 옮겨와야 하는데 그것이 너무 귀찮은 일이 될 수 있으므로, 언제 실행에 옮기게 될지는 모르겠네요 ㅋㅋ 자 그럼 나중에 뵈요~

프로그래밍 언어? [내부링크]

솔직히 말하면 대학교 때 C언어를 처음 배우면서 온갖 혼란을 겪었던 적이 있다. 지금도 개발자라고 말하기 부끄러운 실력이지만, 혼자 공부하며 프로그래밍 언어에 대한 기본 개념조차 익히지 못했던 시절을 기억하면서 이 글을 쓴다. 나 같은 사람이 나오지 않길 빌며 ㅋㅋ ========== 프로그래밍 언어라고 해서 복잡하게 생각할 것이 없다. 컴퓨터는 우리말로 하면 사실 계산이기며, 프로그래밍 언어는 그 계산을 위해 식을 만드는 과정이라고 생각하면 된다. 컴퓨터는 0과 1이라는 숫자로 실제 '계산'을 하지만 우리 눈으로 보기엔 그것이 숫자일 수도 있지만 알파벳 같은 문자일수도 있다. 하지만 일어나는 모든 과정은 '계산'이다. 우리는 계산기를 다루는 방법을 배우는 것이다. 이 점을 잊지 말자. 프로그래밍을 하기 위해 가장 귀가 닳도록 배우는 것들이 있다. 그런데 그 중에서도 중요한 것이 있으니 그게 바로 변수, 함수, 조건문이다. 물론 반복문도 중요하지만 일단 모르면 몸으로라도 때우듯이 코

정규표현식으로 한 문서에서 두 단어 찾기 [내부링크]

가끔 정규표현식으로 검색해야 할 때 두 단어가 모두 있는 경우를 검색해야 할 때가 있다. 이 때 다음과 같은 식을 쓰면 검색이 가능하다. 단, 한 문서 내에 한 라인에 있어야 한다. (?:\bword1\b.*\bword2\b) word1, word2 부분에 단어를 쓰면 된다. 다만 이렇게 검색하게되면 word1이 먼저 나오고 그 이후 word2가 나오는 경우만 찾게 된다. 만약 순서와 상관없이 두 단어가 모두 한 문서에 있는 경우를 찾고자 한다면 다음과 같이 검색한다. (?:\bword1\b.*\bword2\b)|(?:\bword2\b.*\bword1\b)

Unity gpgs 연동시 주의할 점 [내부링크]

유니티에 gpgs 연동할 때 많은 매뉴얼들이 제공되는데 몇 가지 포인트들을 정리할 겸 포스팅을 남긴다. 일단 대부분의 매뉴얼들대로 진행하는 것이 맞다. 하지만 숨겨진 요소들까지 미처 매뉴얼에서 제공되지 않아 빠진 부분들이 생기면 정상적으로 연동이 되지 않는다. (로그인 문제) gpgs 연동 후 정상적으로 로그인만 된다면 이후 문제는 어려울 것이 없겠지만 로그인 연동에서 애를 많이 먹었다. 다음 요소들을 한번 살펴보자. 연동 매뉴얼 뒤끝 서버의 개발자 매뉴얼에 상세한 설명이 나와있다. 주소 참고: https://developer.thebackend.io/unity3d/guide/federation/gpgs/ 핵심 요소 유니티, 구글 플레이 콘솔, 구글 클라우드 플랫폼 위 세 시스템에서 각각 해야 할 세팅이 있다. 즉 GPGS세팅은 저 세 군데 세팅이 핵심이다. 각 시스템에서 체크해봐야 할 요소는 다음과 같다. 구글 플레이 콘솔 - 앱을 생성해야 하고 빌드된 파일(apk, aab)업로드

이지모바일을 이용한 구글 리더보드 사용 [내부링크]

사전 세팅 플러그인 설치 이지모바일 플러그인을 설치했으면 Winodw -> Easy Mobile 메뉴가 생기며 설정을 확인할 수 있다. - 먼저 GPGS연동을 해야 하며 관련 자료를 참조한다. 리더보드 만들기 생성 구글 플레이 콘솔에 있는 앱 > 설정 및 관리 > 리더보드로 이동 리더보드에서 리더보드 생성을 누른다. 설정 필수 입력값은 이름이며 리더보드에 이름을 정하고 필요한 경우 점수의 종류와 아이콘 그림 등을 정하고 생성한다. 안드로이드 리소스 업데이트 리더보드를 생성하면 안드로이드 XML 리소스가 변경된다. XML 가져오기 앱 > 설정 및 관리 > 설정 에서 속성 섹션의 리소스 보기를 눌러 XML문서를 복사한다. XML 붙여넣기 복사한 XML문서를 easy mobile 메뉴 > game service 를 눌러 Android XML Resources 안에 붙여넣기 한다. 이후 하단의 Setup Google Play Games 버튼을 누르면 리더보드 정보가 업데이트 된다. Easy

리눅스 찾기 관련 정리 [내부링크]

리눅스 찾기 기능에 대한것, 자주 사용하는 명령어 정리 1. 파일 이름으로 찾기 1) 정확한 파일 이름 찾기 $ find . -name "파일이름" 현재 디렉토리를 포함하고 하위 디렉토리까지 해당 파일 이름을 가진 파일이 있는지 찾는다. 대소문자를 구분한다. 2) 파일 이름의 일부분만 기억이 날 때 찾기 $ find . -name "*일이름" 또는 $ find . -name "*일이*" 또는 $ find . -name "파일이*" (*) 아스테리스크 기호 이후엔 어떤 이름이 나와도 매칭해준다. 일부분만 기억이 날 때 주로 사용한다. 2. 소스코드 내부 찾기(ide 에서 흔히 Ctrl + Shift + F 같은 기능) $ grep -rni "찾을문자열" . --color=auto 위처럼 작성하면 현재 디렉토리 하위에서 매칭되는 문자열 라인 번호를 알려주고 매칭된 문자열을 강조해준다. 자주 쓸만한 옵션은 다음과 같다. 옵션명 기능 -r 하위폴더 포함 -n 찾은 문자열의 라인 번호 포함

docker에 대해 [내부링크]

docker 를 설명한 글은 너무나도 많다. 특히 docker의 구조에 대해서 설명한 글이 서론에 자주 등장한다. 그런데 그런 보이지 않는 부분까지 알면 더 좋겠지만 실무자들은 그런것 까지 파고들 시간이 부족하기도 하다. 어떻게 보면 그 기능을 사용하기 위한 정리된 자료만이 필요해서 그런 것일 수도 있다. 그래서 docker에 대한 내부적인 구동은 건너 뛰고 docker가 어떻게 쓰이는지 크게 두 가지로 구분해서 설명해보려 한다. 개요 1-1. 누군가 만들어둔 docker image를 가져다 쓴다. - 제일 흔하고 편함 1-2. 내가 직접 docker image를 만든다. - 리눅스 os 에 대한 지식이 필요함 3. 1과 2가 어쨌든 그 이미지를 가지고 서비스에 적용한다. 그 전에 잠깐 docker image: 정확한 표현은 아닌데 그냥 CD라고 생각하자. 실행시킬수 있는 환경이 들어 있다. 이 녀석은 무생물이라고 생각해보자. docker container: 도커 이미지를 가지고 실

redis, redis-sentinel, docker, haproxy, spring-boot lettuce 세팅에 대한 참조사항 [내부링크]

제목이 너무 복잡하고 긴데 환경에 사용되는 구성이 좀 복잡하기도 하고 다양한 방식의 캐시 세팅이 가능하기 때문에 실제로 자료가 필요한 사람들은 조각 조각난 자료를 참고해야 하기 때문에 정리 차 여기 적어두려고 한다. 참고가 되었던 고마우신 블로거님들 링크는 하단에 따로 적어두었다. 이 블로그에서는 연습용 세팅이 아니라 실무에서 문제가 생길만한 이슈 위주로 정리하려고 한다. 따라서 기본적인 세팅 가이드에 대해서는 하단 링크를 참조하거나 별도로 각 세팅에 대해서 검색하여 알아봐야 한다. 이 글의 목표 spring boot 로 서비스를 하면서 redis 캐시를 사용하고 안정화를 위해 redis를 이중화 하려는 경우 알아둬야 할 사항에 대해서 정리하려고 한다. 내부 테스트에서 문제 없는것을 확인 후 실서버에 반영하려고 했더니 예상하지 못한 문제가 발생하였기 때문이다. 기본 세팅 많은 예시들을 보면 맨 처음 세팅이 잘 되는지 확인하기 위해 테스트 환경을 꾸미게 되는데 이 때 주의해야 할 점이

시간의 신 티닌 [내부링크]

티닌은 시간의 신으로 로스에 의해 창조되었다. 시간의 신은 네아 월드의 자신보다 낮은 클래스를 가지고 있는 물질에게 스스로의 이름을 본딴 이름을 시간의 단위로 사용하게 하였다. 시간의 신인 티닌은 시간을 수평적으로 바라보지만 하급 클래스들은 그렇게 생각하지 못하기 때문에 수직적인 시간을 내려 주었다. 그래서 생겨난 티닌은 하루를 7개의 구간으로 나누었으며 해당되는 구간은 다음과 같았다. 1티닌 : 새벽 2티닌 : 아침 3티닌 : 오전 4티닌 : 점심 5티닌 : 오후 6티닌 : 저녁 7티닌 : 밤 1티닌 부터 시작되는 하루는 7티닌이 끝나면 다음날이 되며 티닌은 이렇게 하루를 정하였다. 하지만 이것만으로는 부족했다. 하루가 쌓이게 되면 한달이 오고 한달이 오면 일년이 되기 때문이었다. 또한 긴 하루를 7개만으로 나누는 것은 옳지 못하다고 생각한 티닌은 더 큰 개념과 세부적인 개념을 구성하였다. 하나의 티닌은 세개의 미닌으로 나누었다. 따라서 각각의 티닌은 3미닌을 가지며 하루는 총 2

네아월드 주변 행성 지도 [내부링크]

네아월드 은하계 - 네아월드 은하의 근처에는 비츠 은하가 존재하며 네비들은 비츠 은하에서 건너온 종족이다(지도제공은 양갱님이 해주셨습니다) 네아 월드 행성계 - 네아 월드와 인 네아월드가 존재하지만 네아 월드가 탄생한 시점에서 인 네아월드는 이미 폐허가 된 행성일 뿐이다. 하지만 시간을 연결하여 네아월드와 인 네아월드가 잠시동안 연결되는 시간이 존재한다. 네아월드에서는 다른 행성들을 살펴보기 매우 힘들다. 단지 별로 보일 뿐이다. 네아 월드의 위성으로는 달, 갈살, 뮤나가 존재한다. 달은 네아월드에 가장 근접해 있으며 노란색의 태양빛에 그대로 반사되어 밤하늘을 밝게 비추는 노란색의 위성이다. 갈살은 달 보다는 조금 작은 크기로 보이며 갈살의 모습이 원형으로 드러나도 그다지 밝게 비추지 못한다. 위성의 표면은 갈색 혹은 적색으로 보이고, 네아 월드에서 바라보면 붉은 행성으로 보인다. 갈살은 일반적으로 달과 대치되어서 떠오른다. 달이 점점 차오르는 날이면 갈살이 사라져가고, 갈살이 차오

네아월드 단편 포퓨림 펜 이 나왔습니다! [내부링크]

현재 상편까지 완성되었고, 곧 하편을 연재할 예정입니다. 완성되는대로 올리겠습니다. 상편은 메모란에서 확인할 수 있습니다.

켄크로 [내부링크]

네비루니우스 대륙에 존재하는 켄크로는 동굴이나 땅속에서 태어나 밖으로 나온다. 날개가 없는 곤충으로 6개의 다리로 걸어다닌다. 단체로 활동하지 않고 혼자 다니는데 그 크기가 무려 2M나 된다. 이러한 크기 덕에 네비루니우스 대륙의 사람들은 이를 길들여서 타고 다니는 법을 배웠으며 알노스와 비슷한 종류의 탈것이다. 하지만 켄크로가 알노스보다 더욱 날렵하게 생겼으며 그 속도도 알노스보다 1.5배나 빠르다. 켄크로는 알노스와 같은 단단한 날개 껍질이 없기 때문에 적의 공격에 쉽게 무너진다.

갈살나무 [내부링크]

갈살나무는 웨일대륙과 네비루니우스 대륙의 북부, 카라젬 대륙의 일부에서 발견할 수 있다. 이 나무는 춥지도 덥지도 않은 기후에서 쉽게 자라며 다 자란 나무의 높이는 최대 3미터다. 나무의 표면은 두꺼운 나무껍질이 안쪽의 매끈하고 얇은 몸체를 보호하고 있고, 이 두께는 다 자란 나무의 경우 인간 남성 한명이 양 팔로 안을 수 있는 정도의 두께이다. 가지는 여러갈래로 나눠지지만 전체 나무 높이의 절반 이하에 있는 가지들은 나무가 자랄 때 빼고는 더 이상 존재하지 않기 때문에 나무에 오르는 것이 쉽지많은 않다. 이 나무의 특징은 잎인데, 잎은 손바닥 만한 크기고 신기하게도 갈살빛을 받고 자란다. 갈살빛은 매우 희미해서 인간이나 기타 종족들은 이 갈살빛을 감지할 수 없지만, 갈살나무 잎은 갈살빛이 내리쬐는 동안만 잎의 방향이 갈살빛 방향을 향하고, 그렇지 않은 경우에는 시든 것처럼 쳐지게 된다. 갈살나무 잎은 식용으로는 사용되지 않지만 마법적 힘이 있기 때문에 마법 재료로 사용되기도 한다.

불꽃나무 [내부링크]

불꽃나무는 붉은 줄기에 주황색의 뾰족한 잎이 위로 솟아 있어 마치 불꽃처럼 보인다고 하여 이름 붙여졌다. 다른 식물들과는 달리 주황색의 잎을 가지고 있고 일년 내내 추운 지방에서 햇빛이 많이 내리쬐는 지역에서만 자랄 수 있다. 대개 웨일 대륙의 북쪽에 있는 노스웨일 황무지 근처와 카라젬 북부에만 볼 수 있는 희귀한 나무이다. 불꽃나무의 크기는 나무에 비해 작은 편인데 인간의 허리까지밖에 자라지 않는다. 하지만 불꽃나무의 잎은 미세한 열을 발산하여 추운 지방에 사는 사람들이 불꽃나무 가지를 꺾어다 보온을 하는 용도로 이용하기도 한다. 불꽃나무는 씨앗을 퍼뜨리는데 이 씨앗으로는 마법사들의 마법 재료로 이용되기도 한다.

몬스터: 네크 [내부링크]

네크는 네비루니우스 대륙의 남쪽 밀림 지역을 제외한 전 지역에 존재하는 위험한 생물체이다. 높이와 너비가 약 1미터까지 자라지만 매우 무겁다. 생김새는 전체적으로 흰색에 단단한 등껍질을 가지고 있고, 네 발로 기어다니며 짧은 꼬리와 뭉툭한 머리를 하고 있다. 주로 풀이나 작은 나무를 띁어먹으며 자라는 초식 동물이지만, 자신의 영역을 침범하여 가까이 오는 사람들에게는 포악하게 변한다. 이들이 주로 하는 행동은 다가오는 사람들에게 빠르게 달려가 단단한 등껍질로 들이받는 것이며, 많은 여행자가 네크의 모습만 보고 접근하였다가 다치는 경우가 많다. 네크는 다리를 식용으로 이용하는데 구워 먹으면 맛과 향이 뛰어나다고 알려져있다. 또한 흰 등껍질은 아주 단단해서 총이 나오기 이전인 기준년 1400년경 까지는 방패로 이용하기도 했다. "내가 왜 절름발이냐고?, 그때 난 처음에 하얀 바위인줄 알았는데 그게 움직인거야. 그리고는 나한테 달려왔었지."

슈의 수호자 페트리 [내부링크]

페트리는 인 네아월드가 시작되는 시점에 로스가 창조하여 만들어졌다. 인류의 신 사마스, 균형의 신 슐스, 시간의 신 티닌과 함께 만들어진 페트리는 로스가 세상의 남쪽에 얼어붙은 대륙을 만들고 나서 페트리의 대륙 완성작을 보고서는 마음에 들지 않아 추방하였다. 페트리는 그렇게 로스에 의해 창조되자마자 추방되었다. 하지만 로스의 실수로 인해 이브로스 디에가 탄생하고 네아월드를 만들기로 결심한 로스는 자신이 만든 종족인 슈를 보호하기 위해 페트리를 불러내었다. 페트리는 슈의 수호자가 되었고 그 즉시 슈들을 안전한 곳으로 대피시키기 위해 차원을 이동하였다. 그렇게 남쪽 대륙으로 이동하던 과정 중 슈의 일부가 알노스와 결합하면서 포퓨림이라는 새로운 종족이 탄생하게 되었고, 페트리는 그나마 결합되지 않은 나머지 슈를 대리고 세상의 남쪽에 존재하는 웻 대륙에 슈들을 보호하고 관리하기 시작했다. 로스는 결국 페트리를 웻 대륙을 지키는 수호신 역할을 하게 하고 자신은 이브로스 디에와 결판을 짓기 위

기계종족 네비: 과거편 [내부링크]

네비는 2미터나 되는 큰키를 가지고 있는 특이한 점을 제외하면 인간과 외모가 같다. 사실 이들은 네아월드 은하가 아닌 비츠 은하라는 먼 곳에서부터 넘어온 외계 종족으로 실제로 네비들은 네아월드 행성 밖의 우주선에서 생활한다. 게다가 외모 역시 알려져 있지 않았으며 지상에서 이름붙여진 네비들은 단지 이들이 보낸 기계장치에 불과하다. 따라서 대부분의 경우에는 우주선에 존재하는 네비는 이야기에서 제외하고 지상에서 돌아다니는 네비들에 대해서만 다룬다. 네비들은 지상으로 내려오기 전에 먼저 지상에 존재하는 대표적 생명체를 본따 만들어야 했고, 그 대상으로 인간을 선정했다. 그렇게 해서 만들어진 인간 모습을 한 네비들은 인간보다 훨씬 우월한 신체를 가지고 있었고, 힘과 체력, 지능 모든것이 네아월드에 있는 어떤 생명체들보다 뛰어났다. 그러한 네비들은 로스 신에 의해 받은 명령인 이브로스 디에를 제거하는 것이었고, 그 대상이 술탄이었다. 술탄은 마침 어둠의 마법을 연구하고 있었고 그 위치가 웨일

어둠의 종족 신디트 [내부링크]

온몸이 흑색으로 보이는 신디트는 비슷한 종족인 디트에게서 생겨난다. 디트들은 인간의 절반 정도 되는 키에 붉은 눈을 가지고 있는 종족으로 최초에는 인 네아월드의 남쪽 대륙에서 에카 신이 창조하여 탄생하였다. 초기의 디트들은 녹 신이 만들어낸 카릴과 전쟁을 하고 그 후에 인간들에게 자신들의 땅을 전부 내어주게 되지만 이후에 디트에게는 어떤 변화가 생기게 되었다. 이브로스 디에라는 로스 신의 반대적 힘을 가진 자가 디트들 중 하나를 변형하여 신디트를 창조해 내었고, 그 신디트는 자신의 이름을 살탄이라 부르며 어둠의 권능을 가지게 되었다. 신디트는 180센티미터의 비교적 큰 키에 이곳 저곳으로 근육들이 드러나 있는 것이 보인다. 아주 단단하게 생긴 몸을 가지고 있고, 머리에는 노란색의 뿔이 나 있으며 타오르는 듯한 붉은 눈은 여전하여 석양이 지는 곳에서 신디트들이 서 있으면 보는 것 만으로도 공포심을 느끼게 하기에 충분했다. 살탄은 디트들의 일부를 계속 신디트로 바꿨으며 초기에는 악랄한

적대적 몬스터 : 비쉬 [내부링크]

비쉬는 웨일 산맥의 전역에서 살고 있으며, 주로 황금의 계절부터 로스의 계절까지 추운 시기에 활동을 한다. 비쉬는 더운 여름이 되면 산맥을 따라 노스 웨일까지 올라가 동굴이나 바위 틈 등에서 서식한다. 비쉬는 1미터 정도 되는 키에 인간보다 훨씬 가로로 넓적하고 얇은 모습을 하고 있다. 옆에서 본 체구는 아주 왜소해 보이고 피부색은 흰색에 가까운 색이며 눈은 붉은빛을 띄고 있다. 또한 몸에는 털이 나 있으며 꼬리를 가지고 있지는 않다. 손과 발에는 날카로운 발톱이 있어 산맥의 험한 지형애도 매달려 다닐 수 있고 평평한 몸 덕분에 산 틈에서 불어오는 바람에 저항할 수 있다. 이들은 주로 산맥에서 돌아 다니는 여행자를 습격하거나 다른 초식 동물들을 사냥하여 끼니를 때운다. 주로 2~3마리씩 무리를 지어 다니며 가족과 같은 우애를 가지고 있어서 한마리가 죽게 되면 다른 비쉬들도 목숨을 걸고 달라붙는다. 비쉬는 지능이 낮아 거의 생존에만 신경쓰기 때문에 여행자 들에게는 골치 아픈 몬스터 중

진동검 [내부링크]

진동검은 제 2혼란기에 접어들 무렵인 1120년 경에 카라젬에서 제작되었다. 이 무기는 네비루니우스 대륙으로 수출되었으며, 몇 년 지나지 않아 전 세계로 퍼져 나갔다. 이 검의 초기 모델은 검 손잡이에 있는 버튼을 누르게 되면 빠른 속도로 검이 진동하게 되어 검의 파괴력을 끌어올릴 수 있게끔 만들어졌지만, 날 부분이 이 진동을 감당하지 못해 깨지는 경우가 많았다. 하지만 파괴력 만큼은 우수했으므로 고위층의 호위병들이 이 검을 착용하는 경우가 많았다. 진동검은 가격이 비쌌으므로 많은 사람들이 사용하기 보단 돈이 많은 쪽에서 이용하였다. 진동검은 시간이 지나면서 800년 이상 계속 개량되어 왔으며 검의 무게가 가벼워지고 다양한 모양을 만들 수 있거나 빛을 낼 수 있는 무기까지 발전하게 되었다. 이 검의 에너지 원천은 바닷물이며 이 바닷물에서 에너지를 끌어 올릴 수 있는 촉매제가 검의 손잡이에 들어 있다.

바닷물 에너지 [내부링크]

제 1혼란기가 막 끝난 무렵인 520년 경에 한 마베인이라는 인간 과학자가 마나 광석을 이용한 연구중에 바닷물이 이 광석에 닿으면 부글부글 하는 소리와 함께 큰 열이 발생한 다는 사실을 발견하였다. 마베인은 이 열 에너지를 가지고 여러 가지로 응용할 수 있을 것이라고 확신하고 많은 실험을 거쳤다. 그러나 그는 별다른 성과를 얻지 못하고 그저 마나 광석과 바닷물이 만나면 바닷물이 뜨거워진다는 사실 외에는 발견하지 못했다. 그 후로 약 100년이 지나서 마베인의 연구 일지를 발견한 코린 이라는 여성 포퓨림이 자신의 마법적 힘을 이용해 그의 연구를 훨씬 다양하게 만들 수 있게 하였다. 그녀는 이 힘을 바닷물 에너지라고 불렀으며 기초적인 힘 자체는 단순한 열로 시작하지만 다른 장치들을 이용하면 이 열을 다른 방법으로 사용할 수 있다는 사실을 알아내었다. 따라서 그녀는 마나 광석과 바닷물만 보급된다면 생명체가 할 수 있는 일을 초월한 힘을 얻을 수 있다고 발표하였다. 이 연구는 덴 국가의 수

젤리 연구 : 불균형 젤리, 젤리 투명화, 젤리 슈트 [내부링크]

젤리가 사용된지 500년이 지나서 기준년 1000년이 지날 무렵에는 젤리에 대한 새로운 개발들이 일어나면서 기존에 사용되던 단순한 젤리를 더 개량시켰다. 대부분은 젤리의 최초 발견자인 세노미안의 뜻에 거르는 전쟁의 목적으로 이용되었다. 1. 불균형 젤리 불균형 젤리는 젤리의 부드러운 성질을 한쪽 면에만 적용시킨 것으로써 반대쪽 면에는 칼도 막아낼 수 있을 만큼의 단단하고 탄성이 강한 표면으로 개량한 것이었다. 안쪽의 부드러운 면에서는 자유자재로 모양을 변형할 수 있으나 반대쪽으로는 강한 힘을 가해야만 모양을 변경할 수 있었다. 이렇게 한쪽은 부드럽고 한쪽은 단단한 젤리의 성질이 매우 불균형하다고 하여 불균형 젤리라고 부르게 되었다. 이 불균형 젤리를 나무판자에 바르게 되면 안쪽의 부드러운 성질이 충격을 흡수하고 바깥쪽의 단단한 면이 공격을 튕겨내게 되어서 적의 공격을 반사하는 방패를 만들 수가 있었다. 사람들은 그래서 이를 젤리 가시 방패라고 불렀다. 2. 젤리 투명화 젤리의 원래

네아 월드 소설 1편이 올라왔습니다. [내부링크]

갈라진 조각 챕터 1. 잃어버린 책이 올라왔습니다. 상단의 메모로그를 클릭하면 소설을 보실 수 있습니다. 이 곳에도 링크를 하였습니다. 프롤로그 바로가기 1편 바로가기

슈의 문화 [내부링크]

슈들은 차가운 피부를 가지고 있고 또한 그들은 체온이 변하는 생명체가 아니기 때문에 가능한 차가움을 유지해야 했다. 인간보다 체온이 올라가는 정도의 한계는 높아서 어느정도의 더위를 견딜 수는 있지만 인간이 덥다고 생각하는 정도의 더위라면 슈들에게는 매우 치명적이었다. 따라서 그들이 얼음의 세계인 웻 대륙에서 빠져 나올때부터 체온 관리에 큰 신경을 써야만 했다. 그렇게 해서 변화한 한가지가 바로 웃음이었다. 그들은 웃음이 전혀 없으며, 그와 비슷한 즐거움을 느끼지도 않는다. 슈는 행복 이라는 단어를 전혀 사용할 필요가 없었다. 하지만 슈들이 냉정한 성격을 가지고 있다고 볼 수는 없었다. 그들은 웃지 않지만 인간들의 유머를 알고 있고, 힘들지만 사용할 수는 있었다. (대부분의 인간들은 슈의 유머를 이해하지 못하며, 그들이 또한 왜 유머를 사용하는지 이해하지 못할 것이다. 따라서 거의 대부분의 슈들은 유머를 사용하지 않는다.) 그렇기 때문에 자연히 존재하지 않는것은 여가 생활이었다. 슈는

사우스 웨일의 언어와 노스 웨일의 언어 [내부링크]

사우스 웨일이나 노스 웨일은 같은 웨일 대륙 언어를 이용한다. 그러나 사우스 웨일과 노스 웨일은 왕래가 잦지 않기 때문에 언어의 세기나 사용하는 단어가 조금씩 다른 경우가 많았다. 주문을 많이 사용하는 노스 웨일에서는 연속되는 발음이 상당히 많아야 했기 때문에 부드럽게 이어지는 발음들이 매우 많아 "ㄹ"발음이 상당히 많이 섞여 들리게 되지만 주문이 발달되지 않은 사우스 웨일은 상대적으로 노스 웨일의 언어 보다 딱딱하거나 강하게 들리게 되었다. 서로 대화가 안되는 정도는 아니지만 다른 지역의 사람들을 만나게 되면 어느쪽의 사람인지 쉽게 느낄 수 있었다. 특히 텐 지역의 사람과 수도 레핀에 있는 사람들과의 언어 차이는 가장 강하기 때문에 그들의 대화만 듣고도 대번에 어떤 지방의 사람인지 알 수 있었다. 덴 도시는 지도 상으로는 북부에 해당되지만 사우스 웨일과 더 많이 교류를 하기 때문에 언어의 차이가 없으며 실제로도 사우스 웨일의 구역에 해당된다.

마법의 기원 [내부링크]

1세대 마법은 고대 마법이라고 불리우지만 네아 월드 이전의 세계인 인 네아월드에서도 마법은 존재하고 있었다. 인 네아월드의 마법은 고대 마법보다도 이전의 마법이었으며, 이 마법이 다음 세계로 전달되면서 최초의 마법이 탄생 되었다고 볼 수 있다. 최초의 마법은 물, 불, 바람, 땅, 신성의 다섯가지 속성이 전부였다. 마법사들은 이 속성을 대표하는 시약으로 적절한 배합을 통해 새로운 마법을 만들어 내었는데, 대개 마법의 안정성이 높지 않았고, 복잡한 마법을 구현할 수 없었다. 예를 들어서 기본적인 불 원소를 이용하면 작은 불씨를 만드는 것 부터 불 원소가 세개 이상 쌓이게 되면 강한 화염을 만들어 내고, 불과 땅이 섞이면 작은 화산같은 턱을 만들어 용암 공격을 하는 대부분이 공격적인 주문이었다. (신성 속성은 다른 원소와 결합되지 못했지만 네아 월드 세계로 넘어 오면서 부터는 개념이 바뀌게 되었다.) 이러한 마법들이 넘어오면서 약간 변형되어 물, 불, 달, 빛, 무속성을 대표하는 마법

마법의 제 3세대 : 혁명 [내부링크]

마법의 제 3세대는 슈의 시대 2년에 일어났으며 2세대 마법이 시작된 지 175년이 지난 후였다. 새로운 원소가 많이 등장하였으며 수없는 실패가 있었지만, 무엇보다도 이러한 연구를 활발히 한 것은 술탄의 후예들인 어둠의 마법 의회에 속한 사람들이었다. 어둠의 마법 의회의 사람들은 처음부터 마나를 부정하고 마법을 연구하였는데, 이는 지금껏 학회의 근본을 송두리째 뒤집는 학설이었다. 처음에는 학회에서도 이러한 의견을 무시했지만 점차 시간이 흐르면서 절대 무시할 수 없는 한 의견이 되었다. 어둠의 마법에서 주장하는 마법은 마나의 힘이 아닌 파장의 힘이었다. 사람의 목소리에서는 파장이 나오며 이 파장을 통해 마법 재료가 반응 함으로써 힘을 얻는다고 이야기 하였다. 이는 실제로 언어가 있는 타 종족이 마나를 다루지 못하는 이유가 단순히 지능적인 문제라고 말하는 것에 비해서는 훨씬 설득력이 있었다. 그래서 그들은 훨씬 효율적이라고 주장하는 새로운 주문 언어를 만들어 냈으며, 실제로 이 주문을

카라젬 인간 : 목소리 [내부링크]

카라젬 대륙은 90%이상이 카라젬 인간으로 되어 있으며 나머지 8%는 신디트이고 2%만이 그 외의 소수 종족으로 이루어져 있다. 또한 카라젬 대륙은 전 세계에서 가장 큰 대륙이며 인구수도 으뜸인 대륙이다. 이중 카라젬 인간들은 로스가 창조한 인간으로 다른 인간에 비해 외형은 같지만 가장 크게 다른점이 하나 존재한다. 그것은 바로 목소리인데, 카라젬 인간은 아주 높은 음의 목소리를 내기 때문에 보통 인간들은 듣지 못한다. 반면에 카라젬 인간들이 들을 수 있는 음의 범위는 인간보다 넓어서 인간들이 하는 말을 어느 정도는 알아들을 수 있다(인간 남성의 목소리는 듣지 못하고 인간 여성의 노랫소리중 고음에 해당 되는 부분을 들을 수 있다). 따라서 이들은 비슷한 종족끼리 모여 있어야 했기 때문에 한 대륙에 대부분 하나의 종족만이 살고 있는 것이다. 이들의 목소리는 멀리까지 퍼지지 못하기 때문에 대화에 눈빛 혹은 몸짓이나 손동작이 들어가며 서로 아주 가까운 곳에서 이야기를 한다. 따라서 다른

젤리물 [내부링크]

젤리물은 산업 혁명이 일어난 후인 기준년 860년 경에 개발되었다. 젤리물은 물과 젤리의 성분을 합친 성분으로써 고체 물이라고도 불리운다. 이것은 보통 튜브 안에 담겨 있어서 필요한 만큼만 짜서 사용하게 되는데, 사용법은 대부분 보트의 이동 원료로 사용된다. 젤리물을 보트 뒷면의 수면 부분에 짜서 발라주면 젤리물이 반응하면서 보트를 밀어내게 되고 그 힘으로 앞으로 나갈 수 있는 구조로 되어 있다. 사실 젤리물은 단가가 비싼 젤리를 원료로 하고, 속도도 바닷물 에너지에 비해 훨씬 느려서 바닷물 에너지를 이용한 보트가 더 많이 사용되지만, 젤리물을 이용한 보트는 소음이 전혀 없었기 때문에 밤에 잠입용으로 사용될 수 있는 장점이 있다.

끈끈이 발포장치 [내부링크]

끈끈이 발포장치는 끈끈이 발사장치에서 그 기원을 찾아볼 수 있다. 끈끈이 발사장치는 과학기술이 상대적으로 매우 발달한 카라젬에서 제 1 혼란기의 중반쯤에 개발되어진 무기였다. 끈끈이 발사장치의 구조는 현재의 젤리 성분이지만 가공되어지지 않은 끈적 거리는 점액질을 발사 할 수 있게끔 등 뒤의 가방에 다량이 담겨 있고, 총신까지 관으로 이어져 있다. 공기를 압축하여 발사하는 방식이며 공기의 압축 분량 조절을 실패한다면 한번에 많은 양이 발사될 수 있는 단점이 있었다. 끈끈이 발포장치는 이 발사장치를 개량해 제 2 혼란기에서 카라젬에서 다시 개발되어 졌다. 젤리 성분을 묽게 하는 성분을 섞어 한번에 지름 20센티짜리의 큰 구체를 발사할 수 있게 되었으며, 사거리는 500미터나 되었는데, 당시 개발 목적으로는 비 인명 살상용으로 제작되었으나, 얼굴에 맞아 숨을 쉬지 못하고 즉사 하는 문제가 생겨나기 시작했다. 따라서 카라젬에서는 이 무기가 필요성이 없다고 판단하여 더 이상 개발을 중지시켰고

하프 포퓨림 [내부링크]

일반적으로 로스는 다른 종족과의 교배를 좋아하지 않았다. 그 이유는 간단하였다. 여러 종족간에 교배를 통해 중간 종족이 계속 탄생하면 결국에는 모두 하나의 종족이 되기 때문이다. 그렇게 된다면 행성의 생존 문제에 큰 문제가 되기 때문에 신체적 구조 자체가 다른 종족과의 교배를 통해 새로운 종족이 탄생하지 못하게 막아 놓았다. 그러나 로스의 하위 신인 사마스가 창조한 인간은 로스가 만든 완벽한 인간보다 불안정했다. 게다가 사마스의 인간들은 포퓨림과 같은 지역에 살게 되었고, 결국에는 인간과 유사하게 생긴 포퓨림과 인간간의 중간 종족이 탄생하게 되었다. 이 종족은 인간의 뱃속이나 포퓨림의 뱃속에서도 태어날 수 있었으며 여전히 녹색의 머리칼을 하고 있었고, 귀는 절반만 뾰족하였으며 눈은 녹색의 빛을 띄는 검정색이었지만 날개가 존재하지 않았다. 또한 남성이 태어나지 않았으며 오로지 여성만이 태어났다. 포퓨림들은 이들을 환영하지 않았고, 인간은 맞이하였다. 포퓨림들은 이 새로운 종족에 대해

네아 월드 지도 - 네비루니우스 대륙 [내부링크]

곧 세계 지도가 공개될 예정입니다!

마법의 제 2세대 : 발견 [내부링크]

마법 세대는 끊임없이 발전했는데 처음에는 빠르게 성장하였다가 나중에는 천천히 성장하였다. 마법의 제 2세대는 1세대가 시작된지 불과 32년밖에 지나지 않았을 때였다. 번이 마법을 발견 한 후에 32년만에 죽음을 맞이한 것은 안타까운 일이었지만 이때부터 마법은 크게 성장하기 시작하였다. 초기에는 마법으로 사용될 원소가 물, 불, 달, 빛, 무 속성밖에 없는줄 알았지만 목숨을 거는 시험 끝에 수없이 새로운 원소들이 마법에 응용될 수 있다는 사실을 알았다. 그간 32년 동안에도 다른 원소로의 실험이 없었던 것은 아니었다. 그러나 몇몇 재료의 실험에서 거대한 폭발이 일어났고, 그것때문에 연구중인 포퓨림들이 목숨을 잃게 되었다. 따라서 기본 원소를 제외하고는 마법은 다른 원소로 사용할 수 없다 라는 결론을 내렸었다. 그런데 단이 무속성을 발견하던 해에 미코엘르가 실수로 연구중에 다른 물질을 섞어버렸고, 목숨을 잃어버릴 줄 알았던 미코엘르는 난생 처음보는 마법 효과를 보며 모든 원소가 위협적이

이동수단 : 알노스 [내부링크]

알노스는 인 네아월드 시절에 알노스라는 사람에 의해 발견되어진 거대한 벌레이다. 이 벌레는 검은색, 붉은색, 갈색, 초록색, 푸른색, 청록색의 빛깔을 가지고 있으며 검은색과 청록색이 가장 많은 빛깔에 속한다. 이 거대한 벌레의 길이는 약 2미터이며 높이는 1미터 정도인데 몸 전체가 딱딱한 껍질로 구성되어 있고 비행 능력이 없다. 등은 매우 넓직해서 알노스에 맞춰진 안장을 올리고 묶으면 훌륭한 이동 수단이 된다. 알노스는 이동속도가 빠른 편에 속하는데 사람이 전력질주 하는 만큼의 속력을 낼 수 있다. 전방의 더듬이로 방향을 감지하는데, 사람들은 이 더듬이를 끈으로 이어서 알노스가 달릴 방향을 잡아준다. 알노스는 꽤 순한 편이지만 붉은색이나 갈색은 고집이 세고 쉽게 길들여지지 않는다. 그들이 주로 먹는것은 나무 수액인데 길러진 알노스는 사람들이 설탕물을 만들어 알노스에게 공급해준다. 최초로 발견된 지역은 핀 헨리스이며, 세계가 이어졌을 때 웨일 대륙의 북부와 서부 부분의 추운 지방의 숲

물에서 나는 곡식 : 무르몰 [내부링크]

무르몰은 녹색의 줄기가 약 50센티미터이고 그 줄기를 따라 양 갈래로 진녹색의 잎이 20센티미터 정도 흐물거리며 퍼져 있으며, 줄기의 끝에는 지름이 20센티미터 정도 되는 둥그런 모양의 단단한 껍질이 쌓여 있다. 이것은 네비루니우스가 탄생하는 시점인 고대에도 존재하는 식물이었다. 이것은 물 속에서 자라는데 강에서는 자라지 않으며 바다에서만 자라는 수초라고 볼 수 있다. 이 수초는 자연적으로 기르지 않아도 해안가 바닥 쪽에 많은 양이 자라났지만 기준년 500년 즈음이 지나면서 인구가 늘어나고 기술이 발달하자 양식을 하는 양식업이 생겨났다. 무르몰의 줄기와 잎 자체도 먹을 수 있지만 가장 선호하는 것은 바로 열매라고 부르는 무르몰의 최상단에 있는 둥그런 껍질이다. 이 껍질은 매우 두꺼운 편인데 조심스럽게 구멍을 내면 안에서 노란색의 즙이 나오게 된다. 이 즙은 매우 단맛이며 이것으로 요리를 할 수 있다. 또한 줄기와 잎 부분은 물에서 나는 곡식이라고 할 만큼 곡물의 영양소를 많이 포함하

이동수단 : 에드 [내부링크]

에드가 맨 처음 발견 된 때는 부활기 2년이었다. 에드는 긴 네개의 다리가 평평하고 단단한 바위 같이 생긴 몸통에서 네 갈래로 갈라져 나와 있는 회색 빛의 생명체이다. 머리는 다리의 위치와 정 반대로 위쪽을 향하여 긴 목으로 이어져 있고 앞을 보고 있는데 머리와 다리를 쭉 뻗으면 그 키가 2미터나 된다. 에드의 뒤는 꼬리가 나 있으며, 앞다리 두개와 목 사이의 몸통에 전방으로 두개의 팔이 나 있다. 에드는 그래서 총 1개의 머리, 2개의 팔, 4개의 다리, 1개의 꼬리로 구성되어 있다. 에드는 주로 테피심해에서 살고 있으며 다른 동물에 비해 지능이 높은 편이어서 주인을 따를 줄 알고, 명령을 들을 수 있다. (매우 소소의 에드는 인간의 언어를 쓸 줄 안다) 그러나 인간과 같은 종족만큼의 지능은 가지고 있지 않다. 몸통은 정말로 바위처럼 단단하지만 머리와 팔다리는 그렇지 못하기 때문에 다리와 머리를 공격받으면 목숨이 위험해 지기도 한다. 또한 평평한 몸통은 무거운 것들을 많이 실을 수