분류 전체보기 200

스프링 어노테이션 Value

현재 #code 개발 중에 어노테이션 Value 적용하다가 실수를 하여 이를 실수하지 않고자 글을 작성한다. @Value는 properties에 있는 정보를 쉽게 가져올 수 있다는 점이 있는 데 이를 사용하려고 @Value("social.kakao.client-id") 라고 해서 2시간 동안 뭐가 잘못되었는 지 확인한 결과 ${}를 하지 않아서라는 것을 파악하였다. SecurityConfiguration에서는 제대로 작성했는 데 Controller에 괜히 이상하게 작성해서 2시간이 사라졌다. @Value("${social.kakao.client-id}") 현재는 위처럼 다시 수정하여 잘 작동하였습니다.

Spring 2022.01.10

일상이에요

남들은 다 자고 있는 시간에 무슨 정신머리로 지금 글을 쓰고 있는 지 잘 모르겠는 오잎클로버입니다. 지금 #code 라는 커뮤니티를 개발하고 있습니다.... 웹을 하게될지 안드로이드만 하게 될지 확실하게 정해지지않았지만 죽이되든 밥이 되든 Rest API는 필수적이기 때문에 저 혼자서 Spring Boot을 사용하여 REST API를 만들고 있습니다. 현재 팀원은 서버 1명, 안드로이드2명, 디자인 및 프론트(였지만 현재는 자바를 공부중인)1명 을 포함하여 총 4명입니다. 참고로 서버1명, 즉 저 혼자 서버이기때문에 힘든 것이 이만저만은 아니지만 실력은 늘 것 같다는 생각이 듭니다. 조만간 Spring 카테고리에 글이 많이 올라갈 것 같습니다.... 그리고 OAUTH2 카카오, 구글, 깃허브 이 3가지를..

일상 2022.01.08

일단 마시고 본다. (제네릭)

자바는 최적화를 시키는 데 도움을 주는 형태인 generic이 있습니다. 제네릭은 코드를 최적화 및 일반화시키는 데 있어 굉장한 도움을 줍니다. 자바를 한 지 얼마 되지않으셨거나 혹은 제네릭을 쓰지않은 채로 개발을 하면 중복코드가 굉장히 많이 생길뿐더러 중복 클래스 역시 많이 생깁니다. (물론 예외처리시에는 중복 클래스를 여러개를 사용하는 경우가 더러 있습니다.) 예시를 들어 설명해드리자면 어떠한 형태를 입출력하는 클래스를 만든다고 가정을 해봅시다. 그러면 대표적인 형태인 정수(Integer), 부동소수점수(Float), 실수(Double), 문자열(String) 등 여러가지가 있을 겁니다. 이를 하나하나 클래스로 나타나면 대충 이런 형태일 겁니다. public class IntegerPrinter { ..

공부/Java 2022.01.08

Absinthe 개발 일지 (22/01/06)

스타크래프트2 봇 Absinthe를 다시 데리고 온 오잎 클로버입니다. 원래는 Java를 사용하는 프레임워크인 Ocraft로 개발을 할려고 했으나 정보도 너무나도 부족하고 시간도 많이 없기에 기존에 2주정도 시간을 들여 개발하였던 적이 있었던 pysc2로 개발하고자합니다. (시간이 남는다면 Ocraft로도 새로운 봇을 만들려고 시도해보도록 하겠습니다.) 먼저 기존 코드를 활용하였습니다. 기존 코드 링크 제가 구현하고자하는 중요한 기능들은 관문 (차원관문) 에서 생산할 수 있는 모든 유닛을 생산하는 것 관측선 및 불멸자 사용 광전사 돌진 업그레이드 추적자 점멸 업그레이드 및 사용 고위기사 사이오닉 폭풍 업그레이드 및 사용 인공지능 아주 어려움 (랜덤) 승리 위와 같습니다. 먼저 천천히 테크를 정해서 관문에..

일단 마시고 본다. (인터페이스 default와 static)

제가 자바를 독학으로 3년정도하였는 데도 역시 가끔 까먹는 경우가 발생하여 이를 계속 이해하고 기억하고자 글을 쓰게 되었습니다. 제목이 일단 마시고 본다. 의 의미는 자바의 유래로 말장난을 한 것입니다. (자바 언어는 자바 커피에서 유래된 이름입니다. 그래서 일단 자바를 마시고 나서 이해를 하자. 즉, 일단 개발해보면서 차차 이해해가자 라는 의미입니다.) 먼저 다른 중요한 것들은 다 빼먹고 인터페이스부터 시작하는 이유는 인터페이스의 default 메소드와 static 메소드 때문에 쓰기 시작했습니다. 일단 둘 다 인터페이스에서 메소드를 정의를 하여 이를 그대로 사용할 수 있다는 공통점이 있지만 자바는 최적화 언어의 대명사처럼 굳이 똑같은 기능들 2개나 제공해주지않았을 거라는 믿음에서 천천히 알아보았습니다..

공부/Java 2022.01.05

일상이에요

안녕하세요. 학생분들은 현재 방학이실 거고 직장을 다니시는 분들은 지금도 열심히 일을 하고 계시지 않을까 싶습니다. 다들 파이팅입니다. 저는 지금 방학동안 크게 3가지 일을 하고 있습니다. 하나는 학교와 관련된 일이고 나머지들은 학교와는 무관하나 개인적으로 협업적으로 진행하는 것들입니다. 하나는 멘토 멘티를 진행 중입니다. 신입생(이하 7기)들과 함께 진행 중입니다. 2멘토 4멘티로 1팀으로 나름 잘 진행 중인 것 같습니다. 선생님께서 멘토멘티를 진행하면서 선생님들의 마음을 조금이나마 이해하실 수 있을 것이라고 했던 말씀이 이제서야 공감이 갑니다. 정말 공감 많이 됩니다. 나머지 중 하나는 협업이라면 협업 프로젝트인 '#CODE'를 진행하고 있습니다. #CODE를 짧게 설명드리자면 개발자 커뮤니티인데, ..

일상 2022.01.05

스타크래프트 2 봇 개발 일지-3(Ocraft)

지난 번에 건설 작업 후 놀고 있는 일꾼에게 다시 명령을 내리는 것을 했었습니다. 이번에는 배럭 건설 및 마린 생산, 그리고 최종적으로 공격이다. 필수 메소드 private int countUnitType(Units unitType) { return observation().getUnits(Alliance.SELF, UnitInPool.isUnit(unitType)).size(); } 위 메소드는 해당 유닛 종류가 몇 기나 있는 지 반환해주는 메소드이다. 병영 건설 private void tryBuildBarracks() { if (countUnitType(Units.TERRAN_SUPPLY_DEPOT) < 1) { return; } if (countUnitType(Units.TERRAN_BARRACKS..

스타크래프트 2 봇 개발 일지-2(Ocraft)

지난 번에는 SCV 건설, 그리고 보급고 건설을 하였습니다. 이번에는 건설 직후, SCV가 노는 경우, 다시 작업에 착수하기 위한 코드를 작성할 것입니다. 일꾼 관리 스타크래프트2 같은 경우, 게임시작과 동시에 미네랄로 자동으로 보내주지만 그이후부터는 플레이어가 알아서 조절을 해야합니다. 그렇기때문에 건물 건설 등과 같은 미네랄 채취 외에 작업이 주어진 후에는 수동으로 다시 채취하도록 해야합니다. 보통 건물이 다 지어지면 자동으로 shift + 미네랄 우클릭을 해서 건물이 다 지어진 후 즉시 미네랄 채취 명령합니다. 이와 같이 개발하기 위해 제일 가까운 미네랄 하나를 찾아서 반환하여 놀고 있는 SCV에게 다시 미네랄을 채취하도록 합니다. private Optional findNearestMineralPa..

스타크래프트 2 봇 개발 일지-1(Ocraft)

지난 번에는 기본적으로 스타크래프트2 봇을 테스트를 해보았습니다. 이번에는 일꾼 생산 및 보급고 건설을 해볼 겁니다. 일단 일꾼 생산 같은 경우에는 onUnitIdle 메소드를 오버라이딩하여 일하는 유닛들을 가져옵니다. UnitInPool 이라는 클래스가 어떤 클래스인지 그리고 어떤 방식으로 진행이 되어가는 지 잘 파악하지 못하였기때문에 원리를 제가 이해한 방식대로 한다면 UnitPool에 저장되고, UnitInPool에 인스턴스화된 것들을 가지고 오는 것 같습니다. SCV 생산 @Override public void onUnitIdle(UnitInPool unitInPool) { Unit unit = unitInPool.unit(); // 아직도 이해 못함 원리를 switch ((Units) unit...