컴퓨터는 기본적으로 전기 신호의 유무, 즉 0과 1만을 이해할 수 있다. 그런데 어떻게 그런 컴퓨터가 ‘문자’로 된 명령어를 이해하고 처리하고 출력할 수 있는걸까? 기본 용어에 대한 이해문자 집합컴퓨터가 인식할 수 있는 문자의 모음을 문자 집합(character set)이라고 한다. 컴퓨터는 문자 집합에 속해 있지 않은 문자는 이해할 수 없다.예를 들어 문자 집합이 {a, b, c}인 경우, 컴퓨터는 d나 e 같은 문자는 이해하지 못한다. 인코딩컴퓨터는 결국 0과 1만 이해할 수 있다. 문자 집합에 속한 문자라고 한들, 그 문자를 그 상태 그대로 이해할 수 없다.컴퓨터가 이해할 수 있도록 문자를 0과 1로 변환하는 과정이 필요하다. 이를 인코딩(encoding)라고 한다.같은 문자 집합에 대해서도 다..
자바가 공개되었을 당시, 자바는 한 번 작성하면 어느 운영체제에서든지 실행할 수 있다는 막강한 장점으로 많은 개발자들을 끌어모았다.과거에는 운영체제별로 프로그램을 다르게 짜야 했다. 하지만 컴퓨터에 자바 가상 머신만 설치되어 있다면, 자바 프로그램은 어디서든지 실행 가능하다. 자바의 작동 과정1. 소스 코드java 언어로 소스 코드 파일을 작성한다. 파일의 확장자는 .java이다. 2. 컴파일javac(자바 컴파일러)를 실행해서 java 파일을 컴파일한다.컴파일러는 문법상 오류가 있는지 확인한다. 3. 바이트 코드컴파일 단계에서 오류가 없다면 class 파일을 생성한다. 파일의 확장자는 .class이다.class 파일은 ‘바이트코드’로 이뤄져 있다. 4. JVMJVM(자바 가상 머신)을 통해 clas..
세상에는 다양한 종류의 컴퓨터가 있다. 아두이노, 라즈베리 파이와 같은 작은 컴퓨터부터 스마트폰, 노트북, 데스크톱, 서버 컴퓨터에 이르기까지 그 크기와 용도도 제각각이다. 하지만 그 어떤 컴퓨터라도 내부를 이루는 핵심 부품은 크게 다르지 않다.컴퓨터의 핵심 부품은 중앙처리장치(CPU) / 주기억장치(메모리) / 보조기억장치 / 입출력장치로 이뤄져 있다. 주기억장치(메모리)메모리는 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품이다.프로그램이 실행되기 위해서는 반드시 메모리에 저장되어 있어야 한다. 주기억장치에는 다음 두 종류가 있다.RAM(Random Access Memory)ROM(Read Only Memory)가 있다.이 중에서 컴퓨터의 작동 원리를 파악하는 데에 있어 더 중요한 장..
티스토리 카테고리 html 구조티스토리 스킨이 어떤 구조인지 알아보고 싶으면 F12를 눌러 개발자 모드에서 확인할 수 있다.사이드바의 카테고리 html 기본 구조를 최대한 단순하게 표현하면 아래와 같다.(※ 티스토리 기본 스킨이 무엇이냐에 따라 조금씩 다를 수 있음!) 분류 전체보기 ### @@@ 위 html 코드를 그림으로 그리면 이런 구조이다. 티스토리 카테고리 커스텀하기카테고리의 html 구조를 알면 CSS 커스텀이 훨씬 수월하다.스킨편집으로 들어가서 CSS 파일을 수정하여 카테고리 디자..
엔터 키 눌렀을 때 줄바꿈 되는 현상chat GPT에서 명령을 입력하고 enter 키를 누르면 명령이 제출(submit)된다.shift + enter 키를 동시에 누르면 줄바꿈 된다.그런데 가끔씩 enter 키만 단독으로 눌렀는데 제출이 되지 않고 줄바꿈이 일어날 때가 있다.그럴 때 마다 키보드에서 손을 떼고 마우스를 이용해 제출 버튼을 클릭해야되는 번거로움이 발생한다. 원인브라우저가 전체 화면일 때는 enter 키를 누르면 제출된다.반면, 브라우저가 창 모드되거나 모바일 환경에서는 enter 키를 누르면 줄바꿈이 일어난다.모바일에서 Enter 키를 눌러 실수로 제출하는 것을 방지하기 위한 것이라고 추측할 수 있다. 해결 방법브라우저가 창 모드일 때 enter 키로 명령을 제출할 수 없다.어떻게 ..
객체 지향 설계 5가지 원칙좋은 객체 지향 프로그램을 설계하기 위해서 지키면 좋은 5가지 원칙이 있다.SRP, OCP, LSP, ISP, DIP 이 5가지의 앞글자를 따서 SOLID 라고 부른다. 단일 책임 원칙SRP, Single Responsibility Principle한 클래스는 하나의 책임만 가져야한다. 개방-폐쇄 원칙OCP, Open/Closed Principle확장에는 열려있으나, 변경에는 닫혀있어야 한다.다형성을 활용하면 OCP를 지킬 수 있다. 리스코프 치환 원칙LSP, Liskov Substitution Principle객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.하위 클래스는 인터페이스 규약을 다 지켜야 한다는 것이다.다형성을 지원하기 ..
절차적 프로그래밍은 프로그램을 명령어의 순서로 바라보지만, 객체 지향 프로그래밍(OOP)은 프로그램을 여러 개의 독립된 객체들의 상호작용으로 본다.객체 지향 프로그래밍은 현실 세계를 더욱 잘 반영하며, 코드의 재사용성과 유지보수성을 높이는 데 중점을 둔다.이번 글에서는 객체 지향 프로그래밍의 특징인 추상화, 캡슐화, 상속, 다형성에 대해 알아보자. 캡슐화(Encapsulation)변수와 함수를 하나의 단위로 묶는 것을 의미한다.대체로 클래스를 통해 구현된다. 정보 은닉프로그램의 내부 구현을 외부에 드러나지 않도록 감추는 것을 의미한다.외부로의 노출을 최소화함으로써 모듈간의 결합도를 떨어뜨려 유연함과 유지보수성을 높인다.클래스 외부에서는 노출된 특정 메소드에만 접근이 가능하다. 접근 제한자public ..