문득 우리가 웹페이지를 생성하기 위해 사용하는 HTML이 어떻게 탄생하게 되었는지 궁금해져서 이 글에 정리해볼까 한다. 아래의 그림은 대략적인 HTML의 발전과정을 연도별로 그린 것이다. SGML(Standard Generalized Markup Language) - HTML의 근본 먼저 처음에 HTML이 생겨나게 된 목적은 하나이다. 웹페이지의 컨텐츠들을 다양한 환경(브라우저)에서 열람을 해도 동일하게 볼 수 있도록 하나의 표현 언어를 생성할 필요성이 생겨난 것이다. 그 약속된 언어의 표현을 정의하려다 보니 이미 존재하는 SGML이라는 것이 눈에 띄었다. SGML(Standard Generalized Markup Language)이라는 것은 문서용 마크업 언어를 정의하기 위한 메타언어이다. 즉 웹페이지..
자바에서 String 클래스를 사용하면서 하나의 의문점이 생겨서 이 글에 정리해보도록 한다. 보통 초기화를 할 때 두 가지 방법이 존재한다. 직접 문자열 상수를 넣거나, new 연산자를 이용하여 사용하는 것이다. 그 형태는 아래와 같다. String s = "Hello World!";String s = new String("Hello World!"); 위 문법을 적용시킨 코드를 통해 자세히 알아보도록 하자. public class StringTest { public static void main(String[] args) { String s1 = "Hello World!"; String s2 = new String("Hello World!"); System.out.println(s1); System.ou..
우분투에서 작업하던 자바 프로젝트 파일을 압축하여 윈도우에서 프로젝트를 열었다. 그런데 이런 현상이 일어났다. 영어는 잘 보이는데 한글이 이상한 문자로 보이는 것이다. 그래서 이 해결방법을 찾아보니 인코딩 형식의 차이였다. 위 스크린샷에서 확인할 수 있듯이 우분투에서는 기본적으로 텍스트 편집기의 인코딩 방식이 UTF-8로 지정되어 있었다. 그렇다면 윈도우에서 이클립스의 기본 텍스트 편집기의 인코딩 방식은 무엇일까? 위 스크린샷을 확인하면 알 수 있듯이, 윈도우 환경에서는 MS949방식을 기본으로 선택하고 있기 때문에 각 인코딩 방식의 차이로 한글의 표현방식이 달라서 한글이 깨져서 보이는 것이다. 이는 인코딩 방식을 동일하게 설정하주면 알 수 있다. UTF-8에 대하여 조금 더 알고 싶다면 아래 링크에 정..
오버로딩(Overloading) 오버로딩(Overloading)이라는 뜻은 사전적으로 '과적하다.'라는 뜻이다. C언어에서는 함수명이 고유하게 존재해야 한다. 즉 하나의 함수가 하나의 기능만을 구현해야 한다는 것이다. 하지만 자바에서는 하나의 메소드 이름으로 여러 기능을 구현하기 때문에 '과적하다.'라는 뜻의 이름을 붙여준 것으로 보인다. 오버로딩의 정의는 자바의 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메소드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메소드를 정의할 수 있다. 오버로딩의 조건 메소드의 이름이 같고, 매개변수의 개수나 타입이 달라야 한다. 주의할 점은 '리턴 값만' 다른 것은 오버로딩을 할 수 없다는 것이다. 아래의 코드를 통해서 예를 들어보자..
제어자 클래스, 메소드, 변수의 앞에 public, final 이런식으로 선언부를 제외하고 앞에 붙어있는 것들을 보았을 것이다. public static void main(String[] args) { // TODO Auto-generated method stub } 이클립스에서 자동으로 main을 생성하면 위와같은 형식의 main메소드가 생성된다. void main(String[] args)까지는 이해할 수 있겠다. 근데 앞에 붙어있는 public과 static은 어떤 역할을 하는 것일까? 이들은 제어자라고 불린다. 선언부에 함께 사용되어 부가적인 의미를 부여하는 역할을 한다. 대표적으로 접근 제어자가 있고, 그 이외에 다른 기능을하는 제어자들이 존재한다. 이 개시물에서는 접근 제어자만 다뤄보도록 하겠..
먼저 프로그램에서 오류라는 것은 무엇일까? 오류라는 것은 프로그램이 비정상적으로 종료되거나 잘못된 행동을 하는 경우가 있는데, 이러한 행동들의 원인을 프로그램 오류(Program Error)라고 한다. 에러 이러한 에러들은 발생 시점에 따라 컴파일 에러와 런타임 에러로 나눌 수 있다. 컴파일 에러는 말 그대로 컴파일 시에 발생하는 에러이고, 런타임 에러는 실행중에 나타나는 에러이다. 그리고 덧붙여서 논리적 에러가 있는데, 이는 프로그램의 실행에는 문제가 없으나 의도와 다른 행동을 하는 것을 말한다. 컴파일 에러 - 컴파일 시 발생하는 에러런타임 에러 - 실행중에 발생하는 에러논리적 에러 - 실행에는 문제가 없으나 의도와는 다른 행동을 하는 것 우리가 프로그래밍을 할 때, 다양한 IDE를 사용하는데 그것은..
클래스 디자인(Class design)이라는 것은 한 프로그램의 클레스를 설계하는 것이다. 어떤 건물을 지을 때 건물의 설계도를 그리고 그 설계도에 따라서 건물을 짓는다. 그리고 그 설계도라는 것은 규모가 커질수록 중요도가 높아진다. 소프트웨어도 마찬가지이다. 만약 소규모 프로젝트를 진행함에 있어서 설계도는 간단하게 넘어갈 수도 있다. 하지만 프로젝트의 규모가 커질수록 그 설계도는 정교하게 작성되어야 할 것이다. 먼저 클래스, 추상 클래스, 인터페이스의 개념을 잡고 넘어가도록 하자. 클래스(Class) 클래스는 하나의 설계도라고 보면 될 것이다. 클래스에는 멤버변수, 메소드, 내부 클래스 등이 존재할 수 있다. 이 클래스라는 설계도를 통해 실체화한 것이 객체(Instance)이다. 또는 인스턴스라고 말하..
IP(Internet Protocol) IP 주소를 알기전에 간단하게 IP를 먼저 알아보자. 이는 Internet Protocol의 약자로 패킷 교환 네트워크(인터넷)에서 데이터를 주고받을 때의 통신 규약이다. OSI계층에서 IP계층은 호스트의 주소지정과 패킷분할 및 조립 기능을 담당한다. IP Address(Internet Protocol Address) 우리는 편지를 보낼때 도착 주소를 반드시 명시해야한다. 그래야 그 편지는 우리가 원하는 목적지에 잘 전달될 것이다. 그리고 보낸 곳이 어딘지 정확히 명시해 주어야 받는 사람이 알 수 있을 것이다. 컴퓨터에서도 마찬가지 이다. 각기 떨어져 있는 컴퓨터들이 다른 컴퓨터로 데이터를 전송하고 주고받기 위해서는 각 컴퓨터들의 주소가 존재해야 한다. 그래야 내가..