공부의 기록/자바 풀 스택 : 수업내용정리

자바 풀 스택 11/21 오전 기록 001-1

파티피플지선 2024. 11. 21. 16:25

(7:58 a.m.)

7:30 조금 넘어 도착해서 자리를 선점했다 (앗싸 ㅋㅋ)

수업 시작 시간은 9:30이라 과제 복습 일지 5 작성을 시작했고,

커피를 사러 갔다 올까 말까 고민중이다.

 

(8:30) 프리스쿨 같이 들은 친구들이랑 커피 사러 갔다옴 ㅋㅋ

 

복습 일지 5작성 하다가 수업 들으면 될듯

 

<6개월 동안의 다짐>

1. 수업 시간에 배운 내용은 무조건 소화하기(큰 흐름을 이해해서 오픈북 시험을 공부한다 생각하기)

2. 수업 시간에 배운 내용 복습 꾸준히 하기(아침과 야자 시간 활용)

3. 수업 시간에 이해 안 된 건 바로바로 질문 + 끝나고라도 질문해서 해결하기

4. 열심히 하되 약간은 힘빼기

 

 

 

<9:30 1교시>

■ 앞으로 배우게 될 언어

 

1. javascript → 웹브라우저의 동작을 프로그래밍

 : 우리가 사용하는 여러 웹브라우저의 동작을 제어할 수 있음

 

2. java → 응용프로그램(여러 기능이 있는 소프트웨어)을 만들 수 있다.

응용프로그램이 실행되는 환경은 윈도우/안드로이드/맥OS 등등 다르다.

우리의 목적은 java로 윈도우 환경의 서버 컴퓨터(데스크톱)에서 돌아가는 응용 프로그램을 만드는 것이다.

나중에 리눅스 환경에 올려서 돌리는것도 배움(윈도우에서 자바로 만든거는 모바일 제외한 멀티플랫폼임)

java의 특징 : one source multiplatform (자바로 만들면 윈도우에서도 리눅스에서도 맥OS에서도 돌아간다)

즉, 하나의 소스 코드로 여러 운영체제에서 사용 가능하다

 

 

■ 우리가 배울 것 : 만들게 되는 응용프로그램

우리가 만들게 될 것은 WebServer Application이다.

WebServer Application은 자동화된 앱으로, 보통 인터넷에 연결된 어느 리눅스 환경에서 실행중이다가 누군가 인터넷 망으로 데이터를 요청하면 그걸 인터넷망으로 공급해준다.

 

우리는 자바가 제공하는 기반 시설의 웹서버어플리케이션을 활용하여 나머지 일부 프로그래밍을 추가해서 만들 예정

(비유 : 엑셀이라는 거에다가 함수 동작만 하는거, 우리가 할거는 엑셀을 만드는게 아니라 함수 동작 부분만 만드는거)

즉, 우린 만들어진 큰 틀에 동작을 입히는 걸 배울 예정.

 

웹브라우저에서 우리가 소비하는 컨텐츠를 공급받는 거는

웹브라우저와 대화를 하는 웹서버어플리케이션이라는 실체와 소통하며 데이터를 받아와서 우리 화면에 띄워줌

이를테면) 네이버에 콘텐츠를 공급하는 웹서버가 존재하고 우리가 사용을 요청하면 그 화면을 띄워줌.

 

언어를 안해본 사람은 어려울 수 있지만 경험이 없어서이지 생각보다 어렵지 않은거라고 생각하고 접근하자

 

 

 

■ 우리가 배울 것의 개념 : 웹 브라우저, 웹서버어플리케이션, 데이터베이스

우리가 앞으로 만들 것은 바로 웹 서버 애플리케이션!

이걸 만들기 위해서 배울 것들

 ① java : 웹애플리케이션을 동작시키게 하기 위해서

 ② DB&DB와의 대화 방법 : data를 저장하고 불러오는 방법을 알기 위해서

 ③ html&css&javascript : 웹서버가 웹 브라우저에 response하는 방식으로 클라이언트 화면을 만들어주기 위해서

 

 

<10:30 2교시>

■ 우리가 배울것 2: 응용 javascript와 응용 java

우리가 배우게 될 내용 중 vue js와 react js는 javascript의 응용 버전으로 편리하게 자바스크립트를 작성할 수 있도록 도와주게 이미 만들어진 라이브러리들이고,

spring과 spring boot는 java의 응용 버전으로 회사나 팀 개발 시, 개개인의 개발자가 만든다면 개성 넘치고 중구난방일 java의 코드들을 정돈된 틀로 만들어서 누구든 유지 보수 할 수 있는 프레임워크임.

둘 다 코딩 내용이 많아질 때 유용하게 쓸 수 있는 기능이라서 배우게 될 것.

■ 우리가 배울것 3 : 내가 만든 웹서버어플리케이션을 아마존 웹서비스에서 관리하는 방법

우리가 윈도우 환경에서 개발하고 테스트 한 웹서버어플리케이션이 제대로 작동한다면 이것을 리눅스 환경에 올려서 서비스해볼 것인데, 그걸 서비스하기 위해 아마존 웹서비스를 활용할 것이다.

우리가 할 것은 아마존 웹서비스 기능을 이용해서 우리가 만든 웹서버어플리케이션을 관리하는 법!

 

 

■ 오라클 다운로드 하기

오라클은 다운로드 해놓으면 설치하는게 아니라 폴더로 다운로드 파일이 받아진다!

데이터베이스(DB) 역할을 하는 애라서 그런가보다!

 

오라클 압축해제 하기

 

 

DISK1> setup을 눌러 오라클 설치를 진행(설치하면서 비밀번호 입력한거 잘 기억해야함!!!!! 우리 수업에선            )

오라클을 설치하면 oracle은 백그라운드에서 실행되는 상태가 되고, 오라클에 접속하기 위해서는 명령 프롬프트를 사용해서 sqlplus를 불러야 한다.

 

 

 

명령 프롬프트의 화면이다.

옛날에 컴퓨터가 처음 등장했을 무렵에는 컴퓨터를 실행하면 우리가 보는 파란 윈도우 화면이 아니라 명령 프롬프트 화면만 나타났고, 마우스도 없이 키보드만으로 프로그램이 설치된 파일 경로를 직접 입력해서 실행을 시켰어야 한다고 하셨다.

(심지어 그런 식으로 게임이 설치된 경로를 입력해 실행하고 나서 종료 방법이 컴퓨터 전원 끄기였다고 한다 ㄷㄷ)

나는 관리자이고, system이라는 계정과 oracle 설치할 때 입력했던 비밀번호(우리 수업에서는          로 설정함)를 입력하면 되는데, 비밀번호는 잘 입력해도 나타나지는 않고 걍 엔터치면 접속됨.

윈도우에서는 오라클을 설치하면 자동으로 실행이 되는데, 맥OS에서는 sqlplus를 따로 설치하고 원격으로 오라클이 설치된 PC에 접속해야 한다고 함.

명령 프롬트에서 출력하고 싶은 문자열을 보고 싶을 때는 '싱글 따옴표'안에다가 작성한다.

 

 

<11:30 3교시>

처음으로 명령 프롬트로 sql에 접속할 때는 관리자 계정으로 접속을 하는데,

sqlplus 옆에 계정/비밀번호를 입력하고 엔터를 친다.

이때는 세미콜론(;) 을 입력하면 비밀번호로 인식되기 때문에 세미콜론을 입력하면 에러가 난다.

 

system으로 로그인 한 상태는 관리자로서 로그인한 상태고,

내가 이 데이터베이스의 관리자로서 다른 개발자들에게 데이터베이스를 사용할 수 있게 해주려면

사용자로서 계정을 부여해줘야 한다.

CREATE USER  아이디 IDENTIFIED BY 암호;

위 명령으로 USER 계정이 추가된다.

(SQL에서 로그아웃하기 위해서는 Exit을 쓰면 sqlplus를 다시 불러오는 과정부터 진행할 수 있다.)

위에서 추가한 acorn 계정으로 로그인 하면 끝나는게 아니고 , acorn 계정에도 권한을 부여해줘야 데이터베이스에 연결하고 사용할 수가 있다.

그래서 GRANT RESOURCE, CONNET TO 라는 명령어로 새로운 계정 acorn에 권한을 부여해준다.

 

그러면 이제서야 acorn 계정이 데이터베이스에 로그인할 수 있다.

 

데이터 베이스는 표의 형태로 자료들을 저장하게 된다.

표에 담길 내용들은 일정 항목들에 대해 자료들이 목록처럼 나열되어 있을 것이다.

 

acorn 계정에서 table을 만들려고 하면

CREATE TABLE 테이블 이름(칼럼명 데이터유형, 칼럼명 데이터 유형, ... );

명령어를 사용한다.

데이터 유형은 숫자(NUMBER), 문자(VARCHAR2(문자열길이)), 날짜가 대표적이다.

 

생성된 테이블은 바로 보이진 않는다.

 

테이블에 데이터를 입력하는 방법은

INSERT INTO 테이블이름 (칼럼명, 칼럼명2, ...) VALUES (해당 값, 해당 값, ...);

명령어를 사용함으로써 1줄의 행 (row) 데이터를 생성할 수 있다.

일단은 이 명령어에 익숙해지기 위해 직접 3줄을 입력해서 테이블에 값을 집어넣기로 한다.

 

표의 길이를 길게 해주고 싶으면

SET LINESIZE 숫자

명령어를 입력해서 표의 길이를 변화시켜주는데, 숫자 뒤에 세미콜론을 찍지 않아도 명령어가 실행되는 애라서 그냥 해도 된다.

 

표를 보고 싶을 때(=참조하고 싶을 때 = 표에서 특정 값들을 선택해 오고 싶을 때)에는 SELECT 명령어를 사용하는데, SELECT 뒤에 올 수 있는 조건문이 많아서 SELECT 명령어를 실행할 때에는 세미 콜론을 입력하기 전까지 엔터로 줄 구분이 가능하다.

 

 

<12:30 4교시>

방금 전까지 입력했던 창(session1)의 모든 데이터들은 임시로 반영된 상태이기 때문에

새로운 프롬프트 창(session2)을 열고 표를 참조하려면 참조되지 않는다.

임시로 반영된 상태의 창을 우선 저장하고 싶으면 COMMIT 명령어를 사용해서 현재까지의 표를 반영한다.

만약에 여기 commit complete 이후서부터 임시 반영된 내용을 작성하다가 commit을 누르지 않고 rollback을 눌러버리면 임시 반영된 영역을 전부 지우고 지금 화면의 commit까지 리셋되는 꼴이다. 

그리고 일단 별도의 옵션을 설정하지 않고 설치한 상태면, commit 명령을 하지 않아도 프롬프트 창을 닫아서 자동으로 commit 할 수 있다고 한다.

commit 없이 누른 영역들은 모두 임시 반영된 상태의 영역들이어서 rollback으로 언제든지 지울 수 있다.

commit 없이 새로운 창에서 볼 때는 update(수정)된 값이 보이지 않고, 그 전에 commit한 값만 보인다.

select 할 때는 내가 원하는 칼럼이름만 선택해서 조회할 수도 있다.

테이블에서 row를 삭제할 때는 delete를 쓴다.

delete외에 delete와 같이 삭제하는 기능이 있지만

row가 아닌 다른 것들(사용자 계정이나 테이블 등)을 삭제하는 명령어는 drop이다.

 

 

 

 

이 아래는 점심 시간 전에 sql 코드 배운 내용들을 전부 삽질해본 내용이다.

에러 코드도 다 포함시켜놔서 나중에 내가 뭘 잘못 기억하고 있었는지 오답노트처럼 확인해보려고 모두 긁어놨다.

Microsoft Windows [Version 10.0.22631.4460]
(c) Microsoft Corporation. All rights reserved.

C:\Users\acorn>sqlplus

SQL*Plus: Release 11.2.0.2.0 Production on 목 11월 21 12:59:27 2024

Copyright (c) 1982, 2014, Oracle.  All rights reserved.

Enter user-name: system
Enter password:

Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

SQL> create user acorn2 identified by acorn1234;

User created.

SQL> exit
Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

C:\Users\acorn>sqlplus acorn2/acorn1234

SQL*Plus: Release 11.2.0.2.0 Production on 목 11월 21 13:00:09 2024

Copyright (c) 1982, 2014, Oracle.  All rights reserved.

ERROR:
ORA-01045: user ACORN2 lacks CREATE SESSION privilege; logon denied


Enter user-name: system
Enter password:

Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

SQL> grant resource, connect to acorn2
  2  ;

Grant succeeded.

SQL> exit
Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

C:\Users\acorn>sqlplus acorn2/acorn1234

SQL*Plus: Release 11.2.0.2.0 Production on 목 11월 21 13:01:25 2024

Copyright (c) 1982, 2014, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

SQL> create table
  2     booklist
  3  ;

*
ERROR at line 3:
ORA-00906: missing left parenthesis


SQL> create table booklist(id, title, author, year);
create table booklist(id, title, author, year)
                      *
ERROR at line 1:
ORA-02263: need to specify the datatype for this column


SQL> create table booklist(id number, title Varchar2(50), author varchar2(50), year number);

Table created.

SQL> insert (id, title, author, year) values(1, '오만과 편견', '제인 오스틴', 1800);
insert (id, title, author, year) values(1, '오만과 편견', '제인 오스틴', 1800)
       *
ERROR at line 1:
ORA-00925: missing INTO keyword


SQL> insert into (id, title, author, year) values(1, '오만과 편견', '제인 오스틴', 1800);
insert into (id, title, author, year) values(1, '오만과 편견', '제인 오스틴', 1800)
             *
ERROR at line 1:
ORA-00928: missing SELECT keyword


SQL> insert into booklist (id, title, author, year) values(1, '오만과 편견', '제인 오스틴', 1800);

1 row created.

SQL> insert into booklist (id, title, author, year) values(2, '데미안', '헤르만 헤세', 1800);

1 row created.

SQL> select from booklist;
select from booklist
       *
ERROR at line 1:
ORA-00936: missing expression


SQL> select * from booklist;

        ID
----------
TITLE
--------------------------------------------------------------------------------
AUTHOR
--------------------------------------------------------------------------------
      YEAR
----------
         1
오만과 편견
제인 오스틴
      1800


        ID
----------
TITLE
--------------------------------------------------------------------------------
AUTHOR
--------------------------------------------------------------------------------
      YEAR
----------
         2
데미안
헤르만 헤세
      1800


SQL> linesize 500;
SP2-0734: unknown command beginning "linesize 5..." - rest of line ignored.
SQL> set linesize 500;
SQL> select title, author, year from booklist;

TITLE                                                                                                AUTHOR            YEAR
---------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------- ----------
오만과 편견                                                                                          제인 오스틴       1800
데미안                                                                                               헤르만 헤세       1800

SQL> update year='1900' from booklist where id=2;
update year='1900' from booklist where id=2
           *
ERROR at line 1:
ORA-00971: missing SET keyword


SQL> update set year='1900' from booklist where id=2;
update set year='1900' from booklist where id=2
       *
ERROR at line 1:
ORA-00903: invalid table name


SQL> update booklist set year ='1900' where id=2;

1 row updated.

SQL> select * from booklist
  2  ;

        ID TITLE                                                                                                AUTHOR
  YEAR
---------- ---------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------- ----------
         1 오만과 편견                                                                                          제인 오스틴
  1800
         2 데미안                                                                                               헤르만 헤세
  1900

SQL>

 

옆에 짝꿍은 음식 메뉴 가격으로 표를 만들었다. 천재. 나도 해봐야지.

 나처럼 무식함이 뽀록날 필요가 없었따... 연도를 왜 집어 넣은거야 지선 이 바보야...