** 수업 중간 오픈북 테스트에 대한 설명내용 정리 **


* 어플리케이션 배포 : 로컬(혹은 개발서버)에서 개발된 어플리케이션 마일스톤을 실제 운영 서버에 올려서 구동하는 작업

 

* 배포(jspmvc의 예) : 프로젝트를 build해서 .jar파일 혹은 .war 파일 한개로 만들어서 <-(maven) 이거를 서버 머신에 이미 설치된 was환경 (JRE,  ApacheTomcat,...)에 넣어서 구동

 

* Maven : 프로젝트 객체 모델이라는 개념을 바탕으로 프로젝트 의존성 관리, 라이브러리 관리, 프로젝트 생명주기 관리 기능 등을 제공하는 프로젝트 관리 도구 (그 외 Gradle이란 것도 있다.)

 

* WhtieBox Test

    : 모듈의 원시 코드를 오픈시킨 상태에서 원시 코드의 논리적인 모든 경로를 테스트하여 테스트 케이스를 설계하는 방법 (테스트 과정 초기 적용)

  # 테스트 종류

    - 기초 경로 검사 : 테스트 케이스 설계자가 절차적 설계의 논리적 복잡성을 측정할 수 있게 해주는 테스트 기법

    - 제어 구조 검사

        1, 조건 검사 : 프로그램 모듈 내에 있는 논리적 조건을 테스트하는 테스트 케이스 설계 기법

        2, 루프 검사 : 반복 (loop) 구조게 초점을 맞춰 실시하는 테스트 케이스 설계 기법

        3, 데이터 흐름 검사 : 프로그램에서 변수의 정의와 변수 사용의 위치에 초점을 맞춰 실시하는 테스트 케이스 설계 기법

 

* BlackBox Test

    : 소프트웨어가 수행할 특정 기능을 알기 위해서 각 기능이 완전히 작동되는 것을 입증하는 테스트로, 기능 테스트

(테스트 과정 후반에 적용)

    - 동치 분할 검사 : 조건에 맞는 입력 자료와 맞지 않은 자료를 균등하게 검사

    - 경계값 분석 : 중간값이 아닌 경계값을 테스트 케이스로 선정

    - 오류 예측 검사 : 테스터의 경험과 감각으로 보충적 데이터 확인 

 

* 테스트 케이스 설계 : 특정 요구사항에 준하는지 확인하기 위해 입력값, 실행조건, 예상결과를 묶어 놓은 집합을 어떻게 할지 정의

 

* 테스트 자동화 도구의 장점

   - 반복적인 작업을 자동화, 인력 및 시간 절감

   - 향상된 테스트 품질 보장

   - 사용자의 요구사항 등을 일관성 있게 거머증

 

*소스코드 보안 약점

    - XSS(Cross Site Script) : 검증되지 않은 외부 입력 값에 의해 사용자 브라우저에서 악의적인 스크립트가 실행될 수 있는 보안 약점

 

*어플리케이션 성증 저하 운인

   - DB에 필요 이상의 많은 데이터를 요구하여 response 받는다.

   - 불필요한 커밋을 자주 발생

   - 데이터 손실이 발생할 경우

 

* 클린코드(소스코드의 최적화)의 작성원칙

   - 가독성, 단순성

   - 추상화

   - 의존성의 배제

 

* 릴리즈(release) : 운영서버에 배포가 모두 끝난 직후 EndUser가 실제 어플리케이션을 사용할 수 있는 단계(==OPEN)


white&black box test 출처 : https://sw-ko.tistory.com/400

배포관련 더 참고할 것 : https://dev-luna-archive.tistory.com/4

                              https://onlyfor-me-blog.tistory.com/177 (cmd에서 자바파일 컴파일 방법)

 

## 수업 중간 시험 전 수업 내용 + 시험(오픈북) 문제 내용 ##


* 통합 테스트 : 프로젝트 전체가 가지고 있는 기능/비기능 요구사항을 제대로 준수해 개발되었는지 전체적으로 테스트 실행

 

* 유닛테스트 : 요구사항 한 개가 가지고 있는 다양한 로직들을 작은 단위로 쪼개서 단위별로 테스트(단위테스트

   >> 요구사항 기능 1개를 전체 테스트 해봄

 

* 통합 기능 테스트의 목적 : (테스트를 개발 과정 중 어느 타이밍에서든 한다.)

    - 테스트를 수행하기 전 명확한 목표의식을 가지기 위해

    - 테스트 범위를 명확하게 식별

       ex) 페이징이 안된다면 어떠한 행동을 했을 때 어떠한 반응을 하는지, 이미지와 설명이 있으면 최고

    - 테스트 간에 의사 소통을 원활하게 한다

 

* Junit : java 언어로 구현된 프로그램의 텥스트를 수행할 수 있는 유닛 테스트 도구들

 

* 테스트 원칙 

   - 단위 테스트를 수행해 보니 지난번 외주 직원이 개발한 유통 모듈에서 계속하여 오류가 발생하고 있다. 타 모듈에 비해 유통 모듈의 오류 발생률이 상대적으로 높다.

  +) 결함 집중의 원칙 : 시스템 자체가 가지고 있는 여러기능(모듈)들 중 에러나 결함은 특정 모듈에서 집중적으로 발생 

  +) 테스팅은 결함이 존재함을 밝힌다 : 결함이 발견되지 않았더라도 해당 소프트웨어에 결함이 없다고 증명된 것은 아니다.

  +) 살충제 패러독스 : 동일한 테스트 케이스로 테스트를 반복하면 새로운 결함을 발견하지 못할 것(새로운 테스트 케이스 추가하기)

  +) 테스트 정황 의존적 : 테스트는 테스팅 되는 대상에 따라 다른 방법으로 접근하는 것 필요

  +) 오류-부재의 궤변 : 개발된 시스템이 사용성이 지나치게 낮거나 처음 요구사항을 만족하지 못한다면, 결함을 모두 제거 했다 하더라도 품질이 높다고 볼 수 없다. 

 

 

* 단위 테스트 : (메소드 한개)에 정해진 input 여러종류를 넣었을 때, output이 예상한 대로 나오는가 (input들은 테스트 데이터)

 

* 단위 테스트 수행해서 일어나는 일 2가지 : pass or fail

   - fail 일 때 : 테스트 케이스를 불합격 처리, 결함 등록 (프로젝트 상황실 솔루션, 이슈트래킹, es) redmine, jira)한다.

 

* 단위 테스트 결함 관리 절차 : 단위테스트 수행 도중 발생하는 결함을 등록하고, 조치된 결함을 재테스트 하는 단위 테스트 절차 

 

* 결함 : application테스트 도중 예상치 목한 결과, 오동작, 오류화면

 

*Reopen : 결함을 개발자가 수정 완료했다 보고 -> 테스트(QA) 재 테스트를 하였으나 결함이 그대로 존재함. 그래서 개발자에게 다시 돌려보냄

 

* GIT이라는 형상관리시스템에서 commit과 push의 차이

  - commit : 파일 및 디렉토리에 대한 변경 사항을 git의 인덱스에 기록한다.  

  - push : 로컬 인덱스 및 오브젝트 변경 정보를 사용하여 원격 저장소를 업데이트

 


깃에 대한 내용 출처 : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=eleccom&logNo=130087427451 

추가한 테스트 원칙 출처 : https://eehoeskrap.tistory.com/15 >>똑같이 적지 않아 더 자세히 보고싶으면 참조하기

한 프로젝트를 맡게 된다면 꼭 알아야 할것.

 

## 수업 중간 테스트 전 수업 내용##


 

* 요구사항 확인 : 시스템이 가져야할 기능이나 만족해야 할 조건

   중요1 >> 제시하는 고객이나 사용자의 요구사항 도출

   중요2 >> 시스템 개발 측에서 어떻게 요구사항 도출을 유도하고 해당 요구사항을 시스템 개발 과정에 사용할지

 

* 프로젝트 수행의 4단계

    분석 -> 설계 -> 구현 -> 런칭

 

* 현행 시스템 분석 작업의 목적 : 개발하고자 하는 시스템의 개발범위 및 이행 방향성 설정

 ++) 시각적으로 표현 할 수 있으면 좋음.

 

* 현행 업무 관련 자료 수집 : 목표 업무 프로세스 정의서

 

* 현행 업무 관련 자료 수집 시 파악하려는 자료 : 업무지침, 메뉴얼, 업무관련 인터뷰, 이전 시스템 개발 산출물

    >> "목표 업무 프로세스 정의저" 매우 중요

    >> 산출물 : 문서, 코드, 실행파일...

 

* 개발 기술 환경 결정을 위한 고려사항 : 운영체제, DBMS, 웹 어플리케이션 서버,....

 

* 업무개선 작업(Pi) : 업무의 불편사항 등 개선점을 도출, 개선된 업무로 신규 시스템의 요건 정의하는 작업

 

* 에일리언 코드 : 특정 기능을 담당하는 개발자가 퇴사(외 이유로) 기능 관련 문서나 주석이 없어 코드나 함수를 전혀 분석할 수 없는 상황의 코드

 

*현생 시스템 관련 자료를 수집하기 위하여 분류한 기준

   1, 요구사항 변경 기준

   2, 개발팀과 사용자간 커뮤니케이션 용이 여부

   3, 하드웨어 및 네트워크 

 

* 요구사항의 분류

   >>나누는 기준 : EndUSER가 실제 사용감을 느끼는 기능인가

<기능적 요구사항> <비기능적 요구사항>
시스템이 어떤 기능을 갖추어야 하는지 요구 기능적인 부분 이외의 요구사항
시스템 기능을 정의 시스템 전체적인 특성
요건에 대한 시스템의 행동 시스템이 동작하는 방법 정의
시스템이 동작하는 내용에 대해 정의 시스템 성능, 신뢰성, 확장성, 운영성, 보안 등과 관련된 요건
요구사항 중 기능 측면에 대한 것 전체적인 특성을 '시스템이 요건을 충족해야 한다' 형태로 기술

* 제품요구사항(비기능적)

   - 사용성 :  사용자가 어떻게 쉽게 사용할 수 있는가

   - 효율성 

        1, 성능 : 특정 기능이 특정시간 내에 실행

        2, 공간 : 특정 기능 수행시 메모리를 최대 얼마까지 사용할 수 있는가

   - 신뢰성 : 특정 기능 실행시 실패할 가능성이 몇 %보다 낮아야 하는가

   - 이식성 : 다양한 플래폼 위에서 작동하는가

 

* 요구사항 도출 계획 작성 시 프로젝트 관리 측면 고려사항

   1, 요구사항 변경기준

   2, 개발팀과 사용자간 커뮤니케이션 용이 여부

   3, 요구 명세에 대한 객관적 판단

 

 * 정형 명세 : 요구사항을 기술하여 명세하는 방법을 수학과 논리학에 기반하여 자연 언어가 내포하는 애매모호함, 불확실성을 제거하는 명세기법

 

* 요구사항 개발 프로세스의 프름

    도출 -> 분석 -> 명세 -> 확인

 

*인수테스트 : TurnKey 프로젝트에서 최종 개발 완료하여 런칭 전 client(고객)과 수행하는 최종 인수 통합 테스트

 

*프로토 타이핑 : 새로운 요구사항을 도출하기 위한 수단, sw요구사항에 대해 소프트웨어 엔지니어가 해석 한 것을 확인하기 위한 수단으로 많이 사용하는 요구사항 확인 기법

 


제품 요구사항 출처 : https://ee-22-joo.tistory.com/2

수업시간에 설명들은거 다시 써보기


* 연계 데이터 구성 : 연계 데이터를 식별(식별자)하고 식별된 연계 데이터를 표준화 하는 과정

* 연계 데이터 식별 및 표준화 절차
     연계 변위 및 항목 정의 -> 연계 코드 매핑 및 정의 -> 변경된 데이터 구분 방식 정의  -> 데이터 연계

* 테이블 정의서(설계문서)
     - (ERD) : 데이터 모델링 정의서
     - 테이블/프로세스 연관도
     - 테이블 별 컬럼 속성 정의서

* 데이터 식별자 : PK(중복불가, 고유한 row데이터, not null)

*데이터 표준화의 여러가지 정의들
    - 데이터 명칭 : 테이블 명 컬럼명은 보편적으로 인지되는 이름이어야 한다.
    - 데이터 정의 : 데이터 명칭에는 약어나 전문 용어는 가급적 사용하지 않는다.
    - 데이터 형식 : 정의된 데이터 형식을 잘 따른다.
    -데이터 규칙 : 발생 가능한 데이터 값을 사전(dictionary before)에 정의한다.

* 연계 메커니즘 : 데이터를 생성하여 전송하는 송신 체계& 데이터를 받아 DB에 반영하는 수신 체계

*POST 전송방식 특징
    - 목적 시스템에 데이터 전송을 목적으로 한 요청 httpMethod
    - FORM의 속성으로 설정 가능
    - 데이터가 http 전문의 body 요소에 들어간다.

* 송신 시스템이 데이터 통신을 목적으로 하는 수신 시스템과 직접 연계되어 있나?
     (Y) 직접 연계 방식
     (N) 간접 연계 방식

* 연계 오류 시 처리 결과
   모니터링을 이용한 확인 -> 구간별 로그 확인 -> 장애조치 -> 필요시 재작업

* 테스트 케이스 : 송신 시스템과 수신 시스템에서 확인해야 할 사항을 각각 도출하며, 송수신 시스템 각각에서 단순개별 데이터의 유효값을 체크하는 경우의 구와 데이터 간의 연관 관계를 체크하는 경우의 수로 식별하여 작성해야한다.


오늘 수업 시작으로 "세션과 쿠키"에 대한 이야기로 시작

이것들에 들어가기 전에 가볍게 처음 인터넷이 생길 당시의 환경에 대해 이야기를 들었다.
그 예로 유튜브가 개발당시쯤으로 과거로 가니 아마 최소 10년보다 더 먼 과거겠지
(구글에 유튜브가 들어가기 전이라고 했으니)

아마 내가 그때쯤 첫 스마트폰으로 스카이 베가 폰 쓴거로 기억하는데?

아무튼 그 당시에는 하드웨어 자원이 부족하고, 네트워크 환경과 같은 기술의 한계가 있었다고 한다.
간편하다는 장점이 있었지만 다른 연결을 유지하는 프로토콜을 전 세계에 쓰자니 단위비용이 비싸다고 한다.

그래서 연결을 유지하는 다른 프로토콜 대신 http를 사용한다는데
믿거나 말거나 내가 듣고 적으면서 시간이 지나 그 사이에 오류가 발생할 수 있으니까

+
다시 본론으로 돌아와 세션과 쿠키로 들어가면

이것들이 필요한 이유는 웹에서 클라이언트와 서버가 통신할 떄는 http 프로토콜을 이용해 통신하며
http프로토콜 특성 중 하나는 상태가 유지되지 않는다는 것
이런 단점을 보강하기 위해 사용된다.

세션객체 : 서버에 저장됨
쿠키 : 클라이언트에 저장됨
이렇게 비슷한 작용을한다

그러니까 내가 보고있는 jsp책에 따르면
세션은 서버에 저장이되어 접속시간에 제한을 두어 일정 시간 응답이 없다면 정보가 유지되지 않게 설정가능하다고 한다.
그 반대로
쿠키는 우리가 인터넷 서핑을하거나 다운로드를 하면 영구적으로 남는 경우가 있었다.
이제 쿠키가 뭔지 알게되네
다시말해서 쿠키는 하드디스크에 파일로 저장되기에 파일이 남아있는 한 유지된다.

-----------------------------------------------------------------------------------------------------------------------------

그리고 수업 중 int(4진수로 표현)에서 파생되서 나온 "비트와 바이트"
사실 학교 영상학 수업에서 배웠던거지만 중기말 후에는 원래 포맷이 정석아닌가?

일단 이것들은 2진수로 표현된다
bit는 0과 1로 표현되며 1byte는 8비트로 표현된다.
00000000 또는 00000001 이런식으로 표현된다구
고로 2^8이 1byte이라는거
00000000 00000000 00000000 이것들은 2^24개의 숫자들로 표현할 수 있다는거

오늘 처음 안 사실은 이것들은 역시나 양수뿐만 아니라 음수로도 표현가능하다고 한다
방금 표현은 00000000 이런식으로 표현 가능하다고 했는데
숫자 제일 왼쪽 처음에 1을 넣어 10000001 이렇게 표현하면 -1로 표현이라고 한다.
씐기해...
찾아보니 "부호비트"라는 이름을 가지고 있다고 한다.

-----------------------------------------------------------------------------------------------------------------------------
오늘 수업한거
예제 실행한거 붙이기전에 이거먼저.
여전히 매일 나랑 함께하는 오류 친구..^^

한번에 쫌 깔끔하게 가자 젭알..

중요한건 페이지마다 모두 저런 오류가 뜬다는거.
정말 계속 Origin 서버가 대상 리소를 위한 현재의 representation을 찾지 못했거나..
이거를 계속 검색해봤다고..

혼자 구글링하다가 결국 실패했습니다. 강사님 도움받았다..ㅎ 404오류..
이참에 오류 컬렉터 해보는것도 나쁘지 않을듯
찐으로.

결론부터 말하자면 역시나 경로문제.
첫번째로는 애초에 내가 파일을 만들때 내가 파일의 경로를 잘못 선택했다는거.
두번째로는 위의 사진에 대한 체크들이 되지 않았다는거.

invalidate caches는 문제해결 후 다시 찾아봤는데
이 메뉴를 사용하는 경우는 밑의 링크와 같이
같은 패키지 안의 클래스를 못찾아서 오류가 뜨는 경우 발생할때 사용한다고 한다.
https://lifetutorial.tistory.com/11
(그런데 왜인지 다 체크했었는데 다시 열어보면 체크가 없어져있다는거.?)

저건 수업내용 일부

드디어 됬당~
일단 수업의 또다른 일부인 코드!

좌)session Test&amp;nbsp; 우)sessionSet

이렇게 sesstionTest라는 메인아닌 메인페이지에서 3개의 화면을 표현할 수 있다는거.

sessionTest화면

요기서 원하는 것을 클릭하면

좌)sessionSet 적용화면 우)sessionDel &amp; invalidate 화면

화면과 같이 나타난다.
씐기해..즐거워..

또다른 예제. 이건 로그인, 로그아웃 그리고 원래의 페이지로 돌아가는 것까지.
코드는 책을 참고하여 적었다.(위에꺼도)


----------------------------------------------------------------------------------------------------------------------------------
++)추가로 알게된거
어제 공부 찾아보면서 "스크립틀릿"이라는 말을 봤었는데 무심하게 넘어간 나.
오늘 알게되었당!
바로 jsp에만 나오는거라고 한다.
스크립틀릿은 jsp에서 자바코드를 사용할 수 있게 해주는 거라는 것.
<%%>로 표현되고 이 안에 들어가는 것들이 바로 자바코드!

소올찌키 이것도 모르고 jsp공부한다고 했다니..으휴!


1,JSP와 HTML

JSP는 개발에서 그렇게 많이 사용되지는 않는다고는 하지만 이것을 알아야만

html과 자바 모두 이해하기에 효율적이다고 한다. 

결론적으론 많이 중요하다.. 

 

특징이라고 하면

1, 이식성

2,서버 자원의 효율적인 사용

3,간편한 VMC 패턴 적용

이 세가지가 있다고 한다. 

 

html과 jsp는 같지않다!

html은 jsp의 기본양식이고 

jsp의 페이지는 독립적이라 서로다른 웹으로 구현될 수 있다!

또한 html은 단순히 화면에 그대로 보여주는 역할이며

jsp는 요청시 실시간 작업 처리가 가능하다고 한다. 그리고 동적 스크립트릿계산이 있어 html과 속도는 다르다고 한다.

(스크립트릿 : jsp페이지에서 자바 코드 실행 시 사용되는 코드 블록)

 

또한 JSP환경을 만들때 서블릿이 있었는데 이건

웹 서버 상에서 실행되는 자바의 클래스 파일로 기본적으로 자바의 모든 API를 그대로 사용 할 수 있으며 자바의 장점을 가지고 있고, 자바 클래스와 비교할때 서브릿 인터페이스를 구현해 작성해야한다. 

그리고 입출력을 HTTP프로토콜의 요청과 응답 형태로 다룬다는것.

 

2, GET방식 POST방식 호출

**GET : 입력한 데이터 값을 URL에 붙여서 전송

-데이터 노출로 보안 취약

-전송속도 빠름

 

**POST : 입력한 데이터를 본문에 포함해 전송하기에 URL에 입력데이터 값 붙이지 않음

-URL이 보이지 않아 보안 우수

-전송할 데이터 길이 제한 없음(본문에 다 있으므로)

-복잡한 데이터 전송 시 유용

 

출처 : https://all-record.tistory.com/100

-----------------------------------------------------------------------------------------------------------------------------------

[오전]

처음 jsp파일을 run시키게 되면 한글이 깨져서 외계어가 되는 것을 볼 수 있다.

그럼 이것부터 고치고 시작하기

우측 상단에 있는 edit configrattion에 들어가서 파일이 시작되는 브라우저가 크롬으로 되어있는지도 확인해보고

VM option에

"-Duser.language=en -Duser.region=us"로 변경해준다.

 

이것으로 오류들은 영어로 변경시켜줘서 깔끔하게 보이지

 

doGet이라는 메소드 안에 밑의 정보들을 입력시켜서 작동된다.

코드를 좀 더 이야기 해보자면 

 

String 부분의 정보들은 client의 요청을 받아오며

UTF-8이라는 방식으로 응답을 해주는 것으로 설정을 한다.

+)UTF-8이란: 한국어랑 영어 모두 지원하는것

그리고 그 밑의 내용은 응답할 내용 데이터 표현 방식을 타나낸다. 

 

지금 내가 작성한 파일을 작동시키기 위해서는 기본적으로 run을 시켜서 나온 결과물 링크 뒤에

"login?id=hhhh&passwd=ffff&name=zzero&age=100"이라는 값을 주어서 실행시키면 이와 같은 결과물이 나온다.

 

-----------------------------------------------------------------------------------------------------------------------------------[오후]

 

 하다가 도중에 놓쳐버린 탓에 진도 따라가기 허덕였다.

사실 진도는 나가는데 혼자 방황한것도 있구..

 

405 오류는 왠말이냐

어디선 http가 활성화 되어있지 않아서 그런거다. 마법사(?)이런 곳에 들어가면 있다고 하고

어디서는 get메소드를 사용하면 안되는데 사용해서 그런거다라고 한다.

뭐가 정답이지는 모르겠지만.

 

오류뜬지 5시간만에 해결-(속시원하네)

수업이 끝나고 post/get방식을 위에 정리하면서 설마..하고 수정했는데 드디어 해결.!!

별거 아니네.!

엉성하지만 처음엔 우측의 호출방식을 POST로 해뒀는데 GET으로 변경하니 되따..!

왜냐!!

우측을 확인해보면 /memReg로 표현되는데 post와 get의 개념을 확인해보면

post는 본문에! get은 url에 붙는데 어쩌면 뇌피셜이지만 @WebServlet은 웹 매핑인데 

뒤에 /memReg를 붙는걸 보고 옳다구나! 하면서 바꾸니 되네?

 

 

결과는 뭐. 요로꼬롬 마음엔 안들지만 이건 뒤에 더 붙이면 되니까

사실 url은 저번 수업시간에 다룬거지만 오늘 제대로 보기

그리고 사실 그다지 관심을 두지 않았는데 이번 기회로 공부하는걸로

미룬자에게는 댓가가 따르니라..ㅎ

 

< url >

보통 인터넷 주소라고 알고 있겠지만. 이것은 100센트의 정답이 아니라

파일에 대한 웹상의 고유 주소를 의미한다. 

이미지, 동영상, 소리 모든 것들의 주소라고 할 수 있다.

그리고 하나하나의 주소를 가지는만큼 고유하다고 할 수 있다.

 

그래서 html을 제작할때 이미지의 파일을 넣는 경우도 있었지만

url을 넣는 경우도 있어서 신기하게 봤던 기억이 있다.

출처 : https://www.grabbing.me/URL-018cdd1bb4b541fab6246569244fcf93

프로토콜 많이 들어봤지만 사실 잘 몰라..

그럼 다음에 이것도 따로 더 찾아봐야할거 같고

일단 url 구조는 이렇다고 한다.

 

사진에는 5등분으로 나눠지지만 더 세분화 된다는거에 휴..

 

1,프로토콜

네트워크 상에서 서로 다른 컴퓨터끼리 데이터를 주고 받기 위한 통신 규약

여기서 http와 https를 발견할 수 있는데 s로 인해 규격은 같지만 https로 인해 보안이 좀 더 강화 된다는 것

그치만 https는 안전하게 데이터를 주고 받을 수 있지만 그만큼 속도가 조금 느리다고 한다.

 

2,호스트 주소

사용자 정보로 컴퓨터의 주소를 나타낸다고 하지!

여기서 궁금증은 그럼 같은 사이트를 들어간다고 해도 이 주소는 변할까? 

더 나아가서 이건 ip와 같고 호스트 주소라고 말하지만 실은

호스트 주소는 ip주소보다 작은 범위에 해당한다고 한다.

그래서 ip주소는 네트워크주소와 호스트주소의 합이라고 하죠ㅎㅎ

 

3,포트번호

컴퓨터에서 실행되는 있는 프로세스의 주소라고 한다.

그래서 포트번호를 입력하지 않을땐 프로토콜이 가지고 있는 기본 포트번호 적용된다고 한다.

표준 포트를 사용하면 생략 가능하고 http는 80번 https는 443이 적용된다.

 

4,경로라 하지만 "매개변수"라고 합니다

서버 내에 맞추어진 경로로 가는 영역

여기서 ASCII에 해당하는 문자는 해당되지만 사용안되는 경우

%로 시작하는 16진수(16을 기수로 하는 번호체계) 문자코드를 사용한다고 한다.

공백은 +나 %20으로 변경해 사용(그냥 공백이 없이 꽉꽉이군)

 

5,쿼리

쉽게 말하면 매개변수와 부분 식별자의 만남으로 

url에서 추가적인 데이터를 표현할 때 사용된다고 한다.

솔직히 여기서 이해가 되지 않는데

 

일단! 파일 이름과 퀴리 사이에는 ?로 구분지으며

세그먼트의 모임들로 구성되어 &구분된다고 한다.

?type=post&returnURL=%2Fmanage%2Fposts%2F

지금 이 글을 쓰고 있는 지금 1개의 &가 있어 두개의 세그먼트를 가진다고 할 수 있겠지. 

 

-----------------------------------------------------------------------------------------------

 

< 상대경로 / 절대경로 >

다른 언어들을 아직 공부하지 않아서 잘 모르겠지만 

현재 공부하고 있는 자바같은 경우(이 정도는 비슷하겠지 머)

 

위의 내용이 연결되겠지만 프로그램에서 경로를 표현하는 방식에도 두가지가 있는데

바로 "상대경로"랑 "절대경로"가 있다고 한다. 

수업을 들어보니 말만 거창하지 의미는 나름 단순했다.

 

상대경로(relative) : 현재의 위치로 부터 다른 경로를 비교해 표시한다

상대경로는 아래 그림의 기준인(css)파일로 그 전 파일이 project이라는 것을 알 수 있다.

거의 \로 구분되어있어 경로를 알 수 있다.

표현할때는 ..\..\이런식으로 표현된다는거

(역슬레쉬 왜 안되냐;;)

 

절대경로(absolute) : 위에서 봤던 url의 전체의 모습이나 최상위 디렉토리가 반드시 포함 된 경로

밑에 보이는 전체 주소가 절대경로가 될거고 

사실 코딩으로 경로를 사용할때 절대경로는 경로 전체를 기입하면 되겠지만

상대경로를 제대로 사용할 수 있을지는 모르겠다.

지우고 새로했다지만 

제대로 지워졌는지도 알수없는 노릇이라 이걸 기록하는게 맞는지도 모르겠지만

미래의 내가 새로운 PC에 다운로드할때를 대비해서 기록!

해봤는데 안했다고 우기기 싫다공.

 

일단 "TomCat"에 사이트에 들어가니 기여우..ㄴ? 고양이가 기다리고 있군

각자 컴퓨터에 맞게 다운로드를 하고 

수업에서 zip으로 다운로드를 하라고해서 했지만 이유는 모르겠지만

하라고 하니까.. 뭐.. 다음에 다운로드할때는 그때의 사양에 맞춰서 다운로드 하는걸로

 

 

다운로드만 해서는 역시나 아무것도 되지 않는다는걸 직감으로 알았습니다.

그치만 말하는 감자는 일단 bin파일까지 들어가서 파일 링크 복사까지 하고 기다리는거루

 

 

수업은 들었지만 소올찍히 반은 흘러가서(멀티안됨)

결국 강사님 SOS쳐서 도움받았다.

환경변수 들어가서 JAVA_HOME만들고 

path도 새로 설정.

 

(기억이 조금이라도 남았을때 하나라도 남기자!)

추가로

cmd창에 java -version / javac - version / DIR을 순서대로 입력하면 

Tomcat의 정보가 쥬르륵 나온다.

(저 사진은 두번째에 했을때 급하게 캡쳐한거라 startup.bat이 없당..)

 

여기서 startup.bat이라는 목록을 보고 그 다음에 bin링크를 집어넣었던걸로 기억하는데 

지우고 다시 해보니까 그 목록이 없더라구.

압축 푼 파일에도 bat과 sh가 나눠져있지않고 똑같은 이름으로 되어있길래 

임의로 변경했다.(이게 나중에 문제생길지는 모르겠지만)

 

대강 bat은 window 배치파일이고

sh은 shell script이다.

 

 

실행해보면 이렇게 된다. 

링크창에 localhost:8080을 입력했을때 저 창이 떠야지 성공

굉장히 어렁뚱땅이네.?

 

다른 곳에 들어가보니 bin 파일에서 startup.bat에 들어가면 자동으로 된다고 하긴 하는데

처음에 설치했다 지웠다가를 반복해서 저 방법으로 내가 성공할지는 미지수이다.

 

 

 

cmd창은 이번에 처음 안거라 너무 생소하고 어렵구만 만간 시간내서 공부해야겠다.

'처음'이라는 단어가 도피처로 변하는 과정이 반복되지 않기를 다짐하며

 

-----------------------------------------------------------------------------------------------------------------------------------

 

내가 컴퓨터에 설치한 intellij에서 파일을 새로 만든다면!

 

일반적으로는 제일위의 JAVA를 사용하겠지만 이번엔 Java Enterprise를 사용!

여기서 주의할 건 project template는 web으로 설정하기!

파일 다시 만들어보겠다고 지우고 다시할때 저렇게 설정안해서 오류떴다..ㅎ

강사님 SOS치고 다시 보면서 깨달아서 부끄러웠다고..

그리고 group이름도 한번 변경해주기

파일 위치 설정은 이제 당연하게 확인해주는 요소고?!?!

 

그리고 다음으로 넘어가는데 그냥 넘어가는게 아니라

중간에 많은 목록이 뜨면서 있는데

Servelt이라는 체크창이있는데 무조건 체크!!!

이것도 안하면 고생한다야..

 

디버깅 하는 설정으로 들어가서 이것도 당연하게 설정해주기

(처음에 이것도 엄청 헤매서 힘들었던 기억이있네..ㅎ)

그리고 run했을때 뜨는 화면은 크롬으로!

왜냐고? 오류를 최소화 하기 위해서 크롬으로 한다고 한다.

그리고 Application server도 확인해주기

 

그리고 server옆에 목록으로 넘어가서 +누른후 추가해주기

이래야 브라우저랑 연결되는거 같다. 

잘모르면 저 모양이라도 기억해둬야지

 

설정이 끝나고 run해보면 

startup.bat파일이 작동하고 있으면 오른쪽 아니면 왼쪽으로

작동하는 것을 알 수 있다.

 

으휴 힘드러

+ Recent posts