
톰캣서버를 사용해 JSP와 Servlet을 배우고 있다. 웹페이지로 Servlet 출력을 하는데, 원하지 않는 출력이 나타나거나 브라우저마다 다른 출력이 나타나거나 한글이 깨지는 현상들이 일어나곤 한다. 왜그럴까? 형식들을 지정하지 않았기 때문이다. 여러 형식들을 지정해서 그에 맞게끔 브라우저가 읽어들이도록 해야한다. 1. Servlet 출력 형식 일단, 아래 코드부터 보자. @WebServlet("/HelloServlet") public class Hello extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IO..
Stream (스트림) 스트림은 자바8부터 추가된 컬렉션의 저장 요소를 하나씩 참조해서 람다식으로 처리할 수 있도록 해주는 반복자이다. 데이터 컬렉션 반복을 멋지게 처리하는 기능이라고 생각하면 이해가 쉽다. Iterator와 비슷한 역할을 하지만 람다식으로 처리하기 때문에 코드를 좀 더 간결하게 할 수 있으며, 내부 반복자를 사용하므로 병렬처리가 쉽다는 점에서 차이가 있다. Iterator를 이용해 ArrayList의 요소를 모두 처리하기 위한 방법은 다음과 같다. ArrayList arrayList = new ArrayList(Arrays.asList(1,2,3)); Iterator iter = arrayList.iterator(); while(iter.hasNext()) { int num = iter..

Collection(컬렉션) : 데이터의 집합, 그룹 Java Collections Framework는 이러한 데이터, 자료구조인 컬렉션과 이를 구현하는 클래스를 정의하는 인터페이스를 제공한다. 개발에 소요되는 시간을 절약하면서 최적화된 알고리즘을 사용할 수 있다. Java Collection Framework 의 상속구조 Collection 인터페이스에 선언된 주요 메서드 메서드 설명 boolean add(E e) Collection에 객체를 추가 void clear() Collection의 모든 객체 제거 Iterator iterator Collection을 순환할 반복자(Iterator)를 반환 boolean remove(Object o) Collection에 매개변수에 해당하는 인스턴스가 존재할 ..
자바를 사용하다보면 abstract 와 interface 의 기능과 차이가 헷갈릴 때가 많다. 그래서 정리를 해보고자 글을 쓰게 되었다. abstract (추상클래스) 추상클래스는 0개/하나 이상의 추상메소드를 가지고 있다. 추상메소드는 추상메소드는 함수의 바디가 아직 구현되어 있지 않은 abstract로 정의된 메소드를 말한다. public abstract class Car { /* 추상 메소드 */ public abstract void drive(); public abstract void stop(); /* 일반 메소드 */ public void startCar() { System.out.println("시동을 켭니다"); } } public class AICar extends Car{ @Overri..

인프런의 해당 강의를 듣고 정리한 내용입니다. www.inflearn.com/course/%EC%9D%B8%ED%85%94%EB%A6%AC%EC%A0%9C%EC%9D%B4-%EC%9B%B9%EC%95%B1 웹 애플리케이션 개발을 위한 IntelliJ IDEA 설정 - 인프런 본 강의는 Jetbrains(https://www.jetbrains.com/)사의 Java 프로그래밍 개발 툴인 IntelliJ IDEA에서 웹 프로그래밍을 시작하기 위한 설정 과정에 대해 소개하는 강의입니다. 초급 웹 개발 개발 도구 Jetbrains 웹 www.inflearn.com # Servlet 파일 생성 1. Maven 프로젝트 생성 org.apache.maven.archetypes:maven-archetype-webapp..

HTML, CSS, JavaScript를 이용해서 크롬앱인 ToDoList를 만들어봤다. 기본적으로 JavaScript를 조금 다룰 수 있기 위해서 도전해봤다.😊 만들면서 알게된 정보들 * 요소(Element) 관련 함수 * // HTML 요소를 추가할 수 있는 함수. 인수로 요소 이름 전달 const li = document.createElement('li'); const button = document.createElement('button'); // 선택한 요소 안에 자식 요소를 추가(마지막에) li.appendChild(button); document.querySelector('.todoList').append(li); * 이벤트(event) 관련 함수 * // form 태그의 submit의 디폴..

모바일용 RPG 게임을 만들어봤습니다. 뮬니스 왕국에서 퀘스트를 진행하며, 최종적으로 보스를 깨고 공주님을 구해야하는 퀘스트까지 구현했습니다. 1. 게임 설명 시작 장소입니다. 왼쪽 조이스틱으로 플레이어를 이동할 수 있으며, 공격 버튼과 점프 버튼이 있습니다. 왼쪽 위 UI에는 플레이어의 정보(레벨, 체력, 경험치)가 있고 오른쪽 위 UI에는 퀘스트/인벤토리 버튼이 있습니다. NPC에게 다가가면 대화하기 버튼이 뜨고, 대화를 할 수 있습니다. NPC의 머리위 말풍선을 참고하여 퀘스트의 상태를 알 수 있습니다. 현재 전구 모양으로 진행 가능한 퀘스트가 있는 것을 알 수 있습니다. NPC와의 대화 UI입니다. 진행할 수 있는 퀘스트의 내용을 보여주고 퀘스트 수락 버튼을 눌러 퀘스트를 수락할 수 있습니다. 왼..
▼ 정수 자료형의 크기 및 범위(LLP64/IL32P64, Windows) 자료형크기범위비교 char signed char 1바이트, 8비트 -128~127 unsigned char 1바이트, 8비트 0~255 short short int 2바이트, 16비트 -32,768~32,767 int 생략 가능 unsigned short unsigned short int 2바이트, 16비트 0~65,535 int 생략 가능 int signed int 4바이트, 32비트 -2,147,483,648~ 2,147,483,647 unsigned unsigned int 4바이트, 32비트 0~4,294,967,295 int 생략 가능 long long int signed long signed long int 4바이트, 3..

이번 게임은 유명한 모바일 게임 Hill Climb Racing 입니다.😊 옛날에 즐겨 했었던 기억에 만들어보았습니다. 맵 맵은 Sprite Shape로 만들어서 프리팹으로 생성하였습니다. 차량도 프리팹으로 생성하였습니다. 차량 차량의 하위 오브젝트에 바퀴 두개가 있는데, Wheel Joint2D 컴포넌트를 추가하여 사용합니다. 컴포넌트의 Connected Rigidbody 는 차량의 리지드 바디를 할당합니다. Suspension을 조정하여 차량이 빠르고 가벼운 느낌으로 바꿀 수 있습니다. 또한 차량의 리지드바디와 두 바퀴의 리지드바디의 요소들을 조정하여 원하는 무게와 속도로 조정할 수 있습니다. 엔진/브레이크 버튼을 누르면 위의 인스펙터에서 Use Motor를 이용해서 차량이 움직이도록 할 것입니다. ..

유니티로 타워 디펜스 게임을 만들어보았습니다. 😎 이름은 Battle Tower라고 하고, Kingdom Rush라는 유명한 게임을 참고하여 만들었습니다. 많이 부족하지만, 공부용으로 만든 것인 점 참고해주세요! 1. 게임 설명 게임은 메인메뉴가 나오고 레벨을 고르고 시작하게 됩니다. 맵은 해당 레벨의 타일맵을 프리팹으로 생성하여 배치합니다. 키보드 방향키를 통해서 카메라를 움직일 수 있습니다. 일단, 상단 오른쪽 위에 생명력, 돈, 몬스터 웨이브 수 가 UI로 나와있습니다. - 생명력은 몬스터를 죽이지 못하고 도착 지점을 지나버리면 감소하며, 0이 되면 게임 오버 입니다. - 돈은 타워를 사거나 업그레이드를 할 때마다 감소하며 몬스터를 죽일 시에는 추가됩니다. - 몬스터 웨이브는 가운데 위의 하얀색 버..