The CodeDeploy agent did not find an AppSpec file within the unpacked revision directory at revision-relative path "appspec.yml". The revision was unpacked to directory "/opt/codedeploy-agent/deployment-root/7a4336d8-06e1-4025-abe0-192e0bffa4e1/d-L0T638J4B/deployment-archive", and the AppSpec file was expected but not found at path "/opt/codedeploy-agent/deployment-root/7a4336d8-06e1-4025-abe0-192e0bffa4e1/d-L0T638J4B/deployment-archive/appspec.yml". Consult the AWS CodeDeploy Appspec documentation for more information at http://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file.html
The overall deployment failed because too many individual instances failed deployment, too few healthy instances are available for deployment, or some instances in your deployment group are experiencing problems.
비슷한 역할을 하는 속성과 메소드들을하나의 클래스로 모은것을 캡슐화 라고 한다. 캡슐화에 속한 개념으로 정보 은닉이라는것이 있는데, 캡슐 내부의 로직이나 변수들을 감추고 외부에는 기능(api)만을 제공하는것을 의미한다.
상속
상속이란 클래스를 재사용 하는것이다. 상위 클래스를 하위 클래스에서 상속 받게 되면 상위 클래스의 멤버변수나 메소드를 그대로 물려 받을 수 있다. 상속이 있기 때문에 코드를 재활용할 수 있고 그렇기 때문에 생산성이 높고 유지보수 하기가 좋다.
추상화
추상화라는것은, 어떤 실체로부터공통적인 부분이나 관심 있는 특성들만 한곳에 모은것을 의미한다. 예를들어서, 지구를 본따 만든 지구본을 예로 들 수 있다. 지구본은 실제 지구로 부터 관심 있는 특성들(대륙의 위치, 위도,경도)만 뽑아서 만든것이다. 지구를 추상화해서 지구본을 만들었다.
객체지향에서의 추상화는 어떤 하위클래스들에 존재하는공통적인 메소드를 인터페이스로 정의하는것을 예로 들 수 있다.
다형성
다형성은,같은 모양의 함수가 상황에 따라 다르게 동작 하는것을 의미한다. 오버로딩과 오버라이딩이 있는데, 오버로딩이란것은 함수의 이름은 같으나 함수의 매개변수 숫자, 타입등을 달리해서 다르게 사용하는것을 의미하고, 오버라이딩은 상위 클래스의 메소드를 하위 클래스에서 똑같은 이름으로 재정의 하는것을 의미한다.(덮어씌우기) 이렇게 되면, c++의 경우에는 상위 클래스 타입 변수에 하위 클래스를 담은 상태에서 메소드를 호출하면 상위 클래스의 메소드가 호출되고, 하위 클래스 타입 변수에 하위 클래스를 담으면 하위 클래스의 메소드가 호출된다. 즉, 메소드의 이름은 똑같은데, 상황(상위 클래스의 참조 변수냐 하위 클래스의 참조 변수냐)에 따라 호출 되는 메소드가 다른것이다.
PetService petService = new JdbcPetService();
Pet pet ;
try {
pet = petService.get(id_);//펫id
pet.setId(id_);
pet.setName(name);
pet.setGender(gender);
pet.setBirthday(birthday);
pet.setPersonality(personality);
// pet.setMemberId(id_);
pet.setBreedId(breedId);
petService.updatePetProfile(pet);
} catch (Exception e) {
resp.sendRedirect("exception.html");
}
JdbcPetService.java수정
Pet테이블에 없는열이름으로 게터 세터하고있어서 '열명이 부적합하다'는 에러 발생
Pet테이블에 없는 애들 지우기
sql left join적용해서 getList()와 형식맞추기
@Override
public Pet get(int id) {
// String sql = String.format("SELECT * FROM PET WHERE PET.ID=%d", id);
String sql = String.format("SELECT P.*,B.NAME BREED,TO_CHAR(SYSDATE,'YYYY')-TO_CHAR(BIRTHDAY, 'YYYY')+1 AGE FROM PET P LEFT JOIN BREED B ON B.ID = p.breed_id WHERE P.ID =%d", id);
try {
String url = "jdbc:oracle:thin:@hi.namoolab.com:1521/xepdb1";
Class.forName("oracle.jdbc.OracleDriver");
Connection con = DriverManager.getConnection(url, "PETHARU", "1357");
Statement st = con.createStatement();
ResultSet rs = st.executeQuery(sql);
rs.next();
String name = rs.getString("name");
String gender = rs.getString("gender");
String birthday = rs.getString("birthday");
String personality = rs.getString("personality");
int age = rs.getInt("age");
Pet pet = new Pet();
pet.setName(name);
pet.setGender(gender);
pet.setBirthday(birthday);
pet.setPersonality(personality);
pet.setAge(age);
rs.close();
st.close();
con.close();
return pet;
} catch (Exception e) {
e.printStackTrace();
throw new ServiceException();
}
}
Select option DB연동
강아지 품종테이블은 Pet과 별도이므로
- DB : Breed 테이블에 품종 및 아이디 미리 insert후, 사용자는 breed_id만 사용
- JdbcPetService : Reg, edit 의 sql에 left join 적용
- JSP(HTML) : select 태그 입력, name = "breed_id" 적용
view table생성하면 left join의 번거로움을 줄일 수있고 sql도 간편해진다고하는데 , 뷰를 위한 left join을 일단 해야하는데 left join이 잘안된다.. 내일은 이걸로 시간 다보내겠구나
개발자 : 프로그래밍 언어를 통해 운영체제 위에 돌아가는 프로그램을 만드는 사람, 컴퓨터에게 일을 시킨다.
컴파일러 :프로그래밍 언어를 사용해 컴파일러에게 명령을 전달하면 컴파일러가 그 명령을 기계어인 0과 1로 변환해 컴퓨터에게 전달을 하는방식
IDE : 개발자들의 작업을 도와주는 기능들이 있는 프로그램 , 통합 개발 환경 Intergrated Development Environment
개발하기위한 모든것들을 제공해주는 환경
ex, 안드로이드 위에 올라가는 애플리케이션을 만들기위해서는 안드로이드 스튜디오 IDE사용
프로그래밍언어를 구분하는 하나의 기준:
-고수준 : 인간 친화적인 언어, 저수준보다 작동이 느리다(사양에 따라 다름) ,스마트폰, 데스크탑
-저수준 : 컴퓨터 친화적인 언어 , IPTV,스캐너,프린터,프로젝트
컴퓨터 구성요소
메인보드에..
-CPU : 컴퓨터의 머리역할 (프로그램의 실행)
-메모리(RAM) :CPU의 개인 작업공간 (CPU가 더이상 보조기억장치에 필요한 데이터를 요청하지않고, 데이터뭉치를 보조기억장치에서 메모리로 한번에 옮겨놓고 메모리안에서만 작업)
-하드디스크(HDD) : 컴퓨터의 창고
-보조기억장치(SSD) : 컴퓨터의 창고 (바탕화면에서 포토샵더블클릭, 보조기억장치에 저장된 프로그램실행)
운영체제 : 하드웨어관리 (하드웨어의 용량, 보조기억장치관리, 프로그램 설치,실행) , CPU와 메모리등을 관리
-윈도우 by 마이크로소프트 :C#, visual basic, c++, JavaScript
-맥 OS, IOS by 애플 : Object-c, swift
-안드로이드 by 구글 : java,kotlin
JVM(Java virtual machine) : 각 운영체제 위에 JVM이라는 소프트웨어가 만들어짐
자바로만 프로그램을 만들어도 모든 운영체제에서 사용 할 수있다
네트워크
LAN : 컴퓨터가 연결된 작은 지역 Local Area Network
MAN : Metropolitan Area Network, 도시의 여러 LAN을 하나로 연결
WAN : 도시와 도시, 나라와 나라를 모두 연결
앱스토어에서 카톡다운로드시 : 나의 스마트폰 "카톡설치파일보내줘" -> 컴퓨터가 연결되어있는 네트워크 "142,203,124,152주소로 카톡설치파일보내줘" -> 애플이 켜놓은 컴퓨터"파일이거받아 - >컴퓨터가 연결되어있는 네트워크 - >나의 스마트폰
서버 : 클라이언트 요청에 응답하는 컴퓨터, 데이터를 주는 컴퓨터
리눅스 : made by 리누스 토발스 (깃도 만듬)
리눅스 위에서 서버프로그램을 돌린다
리눅스 : 하드웨어를 관리해서 사용자가 프로그램을 사용하기 쉽게 도와주는 윈도우나 맥같은 운영체제, 그래픽 UI없이 명령어로 동작
우분투 : 리눅스 버전중 하나
안드로이드 : 리눅스의 개량버전
호스팅업체 : Cafe 24, 가비아 . 아마존의 AWS 등 , 서버제공
API: 클라이언트, 서버와 같은 서로 다른 프로그램에서 요청과 응답을 주고 받을 수 있게 만든 체계
API는 서버 개발자가 개발하고 ,클라이언트 개발자는 그 API를 사용
ex, 서버주소/A라고 신호를 보내면 서버가 로그인 기능을 수행하고 응답
API를 통해 요청과 응답을 주고 받을때는 데이터도 같이 담긴다
CRUD : 데이터를 다룰떄 기준이 되는 요청
C : creat 타임라인에 사진을 올리는 요청
R : read 타임라인에 사진을 불러오는 요청
U : upgrade 바꾸는 요청
D : delete
CRUD관심에서 데이터를 바라봐야한다
RESTful API : Representational State Transfer, 상황마다 다양한 방식으로 변형해서 사용
Creat : POST
Read : GET
Update : PUT(전체) / PATCH(일부)
Delete : DELETE
클라이언트에서 요청을 보내면 서버는 응답을한다. 이때 잘됐어, 잘안됐어에 체계가있다.
잘됐어는 200번대
잘안됐어
-클라이언트의 요청때문 : 400번대
-서버내부적문제 : 500번대
404 : 보통 정의되지 않은 요청을 보낼때 나타난다. 서버는 문제없이 돌아가는데 요청이 이상하다는 얘기
API : 소프트웨어가 다른 소프트웨어의 기능을 쓰기위해 중간에 필요한 체계.
기능을 사용하기 위해 주소로 요청을 보내면 응답을 해주는 소프트웨어끼리의 체계
내 소프트웨어 "API요청"-> 다른소프트웨어 "한글번역기능"응답
SDK : software development kit 의 약자
소프트웨어를 개발할때 도움을 주는 다른 소프트웨어
ex. 내소프트웨어에 구글지도 SDK설치, 구글지도 SDK에서 제공해주는 API사용
요청과 응답을 주고 받을때의 형식
XML
JSON : 중괄호로시작, 키와 값으로 이루어짐, 키와 값은 콜론으로 구분
클라와 서버는 요청과 응답을 주고받고, 그때 필요한 데이터들을 JSON형식으로 주고받는다
애플리케이션 : 운영체제위에 올라가는 프로그램, 설치해야하는 프로그램, 응용프로그램, 어플, 앱
웹
HTTP :운영체제나 프로그램에 상관없이 일정한 형식이 언제나 동일하게 보이도록 하는 개념등장
태그 ; HTML을 구성하는 코드
HMTL: 브아루저가 볼 수있는 문서를 적는 언어
Javascript : 사용자가 a를 쳤단느 것을 감지 -> a에 해당하는 실시간 검색어 목록을 조회하는 API요청을 네이버 서버로 보냄(GET요청)->네이버서버가 a에대한 실시간 검색어 목록을 정리해서 응답(JSON형식)->javascript는 그 응답을 열어서 HTML로 바꿈
관계형 데이터 베이스 관리 시스템 (RDBMS) : 관계형 데이터베이스의 철학으로 만들어진 관리시스템