목록전체 글 (149)
Taking baby-developer steps
오늘의 키워드 물리 계층 전기 신호 디지털 신호 랜 카드 케이블 허브 오늘의 목표 전기 신호를 이해한다. 랜 케이블을 이해한다. 리피터를 이해한다. 허브를 이해한다. •전기 신호 0과 1만으로 이루어진 비트열을 전기 신호로 변환하려면 다음 그림과 같이 맨 아래 계층인 물리 계층의 기술이 필요하다. 네트워크를 통해 데이터를 주고 받을 대는 0과 1의 비트열을 전기 신호로 변환해야한다. 전기 신호의 종류에는 아날로그 신호와 디지털 신호가 있다. 다음 그림에서 물결 모양 전기 신호를 아날로그 신호라고 하며, 아날로그 신호는 전화 회선이나 라디오 방송에 사용되는 신호이다. 아래쪽 모양 전기 신호를 디지털 신호라고 한다. 그럼 데이터는 어떻게 이런 전기 신호로 변환 될까? 다음 그림과 같이 데이터 송신 측 컴퓨터..
네트워크에서는 통신을 하기 위해 지켜야 하는 규칙이 있다. 통신의 기본 규칙인 프로토콜에 대해 배운다. 오늘의 키워드 프로토콜 OSI 모델 TCP/IP 모델 캡슐화 역캡슐화 헤더 오늘의 목표 프로토콜을 이해한다. OSI 모델과 TCP/IP 모델을 이해한다. 캡슐화와 역캡슐화를 이해한다. • 프로토콜이란? 네트워크에서 문제없이 통신하려면 규칙(약속)을 지켜야 한다. 서로 다른 나라 사람들이 만났을 때 서로 알아들을 수 있는 언어로 대화를 나누는 것과 비슷하다. 서로 대화할 때 “영어로 대화한다”는 규칙을 정해두면 문제없이 대화할 수 있다. 이와 같은 규칙을 프로토콜(protocol)이라고 한다. 네트워크에 대해 공부할 때는 매우 중요한 용어이니 꼭 기억할것! 프로토콜에 대한 이해를 돕기 위해, 편지를 예를..
오늘의 키워드 •네트워크 •패킷 •비트와 바이트 •랜(LAN) •왠(WAN) •서버(server) 오늘의 목표 • 네트워크가 무엇인지 이해한다. • 패킷을 이해한다. • 랜과 왠에 대해 이해한다. ⇒ 네트워크를 처음 배우는 초급자가 꼭 알아야할 네트워크 기초 지식들 •네트워크 먼저 네트워크는 다양한 기능이 결합되어 있다. 이 기능은 여러 계층(레이어) 형태로 구성되어 있다. 계층 구조를 이해하면 문제가 발생한 원인이 네트워크 장비인지, 애플리케이션인지 판단할 수 있다. 우리가 공부할 “네트워크”란 컴퓨터 네트워크이다. 두대 이상이 연결되어있으면 훌륭한 컴퓨터 네트워크가 되고, 컴퓨터 간에 필요한 데이터(정보)를 주고 받을 수 있다. 인터넷? → 전 세계의 큰 네트워크부터 작은 네트워크까지를 연결하는 거대..
운영체제? •컴퓨터 하드웨어를 관리하는 소프트웨어 •유저와 하드웨어 간의 중간다리 역할을 한다. 컴퓨터 시스템엔 크게 4가지의 컴포넌트가 있다고 생각할 수 있다. •하드웨어 •OS •애플리케이션 프로그램들 •사용자 유저는 OS에 요청만 하면 서비스를 제공 받을 수 있다. 사실 운영체제의 정의는 매우 많다. 단 한가지로 정의 할 수가 없기 때문. 주로 흔하게 많이 하는 정의는 그저 “the one program running at all times on the computer”일 뿐. 이 흔한 정의대로, 운영체제를 항상 작동되고 있는 한 프로그램이라고 본다면, 운영체제의 가장 중요한 부분은 바로 “커널”이다. 커널에서 시스템 프로그램과 애플리케이션 프로그램들에 대한 “인터페이스”를 제공해 준다. 전통적인 ..
운영체제가 뭘까? 왜 배워야 할까? → 운영체제란, 컴퓨터 시스템을 운영하는 소프트웨어! ->컴퓨터는 뭐지?→ 정보를 처리하는 기계! → 정보는 뭔데? → 클로드 섀넌의 정의에 의하면, 어떤 사건 x가 있을 때, 이 사건 x의 정보량(부피, 크기 )는[I(x)] 이 사건이 발생할 확률[P(x)]에 -log2 한 값이라고 정의한다. ex> 동전 던지기 어떤 사람 A가 동전을 던져서 앞면이 나왔는지, 뒷면이 나왔는지(확률은 1/2) 를 B에게 전달 한다고 할 때, 전달하는 정보의 량[I(x)] = -log2(1/2) =- log2(2^(-1)) = log2(2) = 1 • 정보의 단위는 뭘까? ⇒ bit 즉, 정보란 “어떤 불확실한 상황”을 측정해서 수치적으로 표현한 것이다! •이런 정보를 컴퓨터는 어떻게 ..
이번 장은 "이상한 나라의 앨리스"이야기의 한 부분을 인용해, 해당 부분에서 "앨리스"라는 객체가 지닌 "상태"와 "행동"이 어떻게 연관되어있고 의존적인지를 이해시켜준다. 이 앨리스 비유에서 가지는 앨리스의 특징은 다음과 같다. 앨리스는 상태(키 120cm)를 가지며 상태는 변경 가능하다. 앨리스의 상태를 변경시키는 것은 앨리스의 행동이다.(이야기 속 버섯 베어물기, 물마시기, 케이크 먹기) 행동의 결과(물마시기)는 상태에 의존적(원래 키(120이라는 상태)에서 0.5배가 된다)이며 상태를 이용해 서술할 수 있다. 행동의 순서가 결과에 영향을 미친다.(앨리스가 여러가지의 문을 거쳐서 정원에 도착하는데, 각 문의 크기가 제각각이라 각 문의 크기에 알맞은 상태가 되려면 행동의 순서가 중요하다) 앨리스는 어떤..
시너지를 생각하라. 전체는 부분의 합보다 크다 -스티븐 코비- 객체지향의 목표는 실세계를 모방하는 것이 아니다. 오히려 새로운 세계를 창조하는 것이다. 객체 지향을 설명할 때 "객체"를 현실 세계의 "사물"로 표현하는 것을 많이 보아왔다. 이는 설계 및 구현하는 실무적인 관점에서는 딱 맞는 표현은 아니지만, 초심자들이 기본 사상을 이해하고 학습하기에는 효과적이다. 책의 초반 부에서는 이 전통적인 관점, "객체지향은 실세계를 모방한다"라는 관점을 빌려 객체지향의 세계를 이해시킨다. 먼저, 객체지향에서 가장 중요한 개념 세가지는 역할, 책임, 협력이다. 협력은 요청과 응답으로 이루어져있다. 문제를 해결할때 다수의 역할이 필요하기 때문에, 하나의 요청이 또 다른 대상에게로 요청을 유발한다. 따라서 요청은 연쇄..
- 기능 도출 1. 출력 메서드(파라미터 : 문자열 / return : X) - 파라미터로 전달받은 문자열을 터미널에 출력한다. - (게임 시작, 피드백, 재시작혹은 종료 시 사용자에게 알리기 위함) 2. 랜덤 수 선택 메서드(파라미터 : X / return : int(3자리 정수)) - 랜덤한 3자리 숫자 정수를 반환한다. - camp.nextstep.edu.missionutils.Randoms의 pickNumberInRange()를 활용 - 각 자리 숫자는 중복을 허용하지 않는다. 3. 입력 유효성 검사 메서드 (파라미터 : 문자열 / return : null 혹은 exception) - 사용자가 입력한 값의 유효성을 검사한다. - 2종류의 입력이 유효하다. (게임 도중 : 3자리 숫자 정수로 변환가..
현재 내 컴퓨터에서(터미널에서) 디폴트로 사용하는 java와 javac의 버전을 다음 명령어로 확인 할 수 있다. java -version javac -version 내가 사용하고 있는 mac OS에서는 brew를 이용해 openjdk@17를 깔았다. brew install openjdk@17 그런데, 이 패키지 어디에 깔렸는지를 알 필요가 있었다. 다음 명령어로 brew가 해당 패키지를 어느 경로에 저장했는지 알 수 있다. brew --prefix openjdk@17 보통은 /user/local/opt/openjdk@17/ 이 Homebrew를 사용해 OpenJDK 17을 설치했을 때의 기본 설치 위치라고 하는데, 나는 /opt/homebrew/opt/openjdk@17 에 설치되어있었다. 다음 명령어..
3tier 구조 중 wordpress-php 서버를 만드는 도중, alpine:3.17 기반 컨테이너 내부에서 wp core install command로 wordpress를 설치하려는데 다음과 같은 에러가 발생했다. 이 에러는 WordPress가 MySQL database에 connect 하기 위해 "필요한 extension"을 php server가 가지고 있지 않다는 의미라고 한다. (https://kinsta.com/knowledgebase/php-installation-missing-mysql-extension-required-by-wordpress) 1. php, wordpress의 버전을 확인한다. 최신 버전의 php와 오래된 버전의 wordpress를 사용하는 경우 이와같은 문제가 발생 할 ..