TensorFlow [TensorFlow] 워드 임베딩 텍스트 벡터화 기계 학습 모델은 벡터(숫자 배열)를 입력으로 사용한다. 텍스트로 작업할 때 가장 먼저 문자열을 숫자로 변환하는 벡터화 작업이 필요하다. 1. One-hot encodings 설명 단어를 이진 벡터로 표현하는 방법이다. 각 단어는 고유한 인덱스에 해당하는 위치에 1을 가지고, 나머지는 0으로 채워진 벡터로 변환된다. 장점 단어의 존재 여부를 표현하는 간단하면서도 효과적이다. 단점 단어 간의 의미적 관계나 유사성을 반영하지 못하며 벡터의 차원이 매우 크고 희소한 문제가 있다. 2. 각 단어를 고유 번호로 인코딩 설명 각 단어에 고유한 정수 인덱스를 할당하여 단어를 숫자로 표현하는 방식이다. 장점 단어를 효과적으로 컴퓨터가 처리할 수 있는 형태로 반환할 수 있다. 단점 단어 간의 의미적 관꼐나.. TensorFlow [TensorFlow] 기본 텍스트 분류 기본 텍스트 분류 🔎 개요 텍스트 분류(Text Classification)은 주어진 텍스트를 특정 카테고리들 중 하나로 분류하는 자연어 처리(NLP 분야의) 작업이다. TensorFlow는 텍스트 분류를 위한 다양한 기능과 도구를 제공한다. 📌 주제 영화 리뷰를 사용한 텍스트 분류 IMDB 데이터셋에 대한 감정 분석을 수행하도록 이진 분류기 훈련 📝 과정 ① 데이터셋 다운로드 및 탐색 ② 데이터셋 로드 ③ 훈련을 위한 데이터셋 구성 ④ 성능을 높이도록 데이터셋 구성 ⑤ 모델 생성 ⑥ 손실 함수와 옵티마이저 ⑦ 모델 훈련 ⑧ 모델 평가 ⑨ 정확도와 손실 그래프 그리기 ⑩ 모델 내보내기(새로운 데이터로 추론) 💻 개발환경 구글 코랩(Colab) : 클라우드 기반의 무료 Jupyter 노트북 개발 환경 Te.. TensorFlow [TensorFlow] 기본 이미지 분류 기본 이미지 분류 🔎 개요 이미지 분류(Image Classification)는 컴퓨터가 일련의 이미지를 분석하고 해당 이미지가 어떤 범주에 속하는지 판단하게 만드는 것을 말한다. TensorFlow를 사용하면 간단하게 이미지 분류를 시작할 수 있으며 커스텀 모델을 구현하여 더 복잡하고 구체적인 문제를 해결할 수 있다. 📌 주제 패션 MNIST 데이터셋을 사용하여 운동화나 셔츠 같은 옷 이미지를 분류하는 신경망 모델 훈련 📝 과정 ① 패션 MNIST 데이터셋 임포트 ② 데이터 탐색 ③ 데이터 전처리 ④ 모델 구성(층 설정, 모델 컴파일) ⑤ 모델 훈련(모델 맞추기, 정확도 평가, 예측) ⑥ 훈련된 모델 사용 💻 개발환경 구글 코랩(Colab) : 클라우드 기반의 무료 Jupyter 노트북 개발 환경 Te.. TensorFlow [TensorFlow] 텐서플로 2.0 시작하기 TensorFlow 1. TensorFlow 구글에서 개발한 오픈소스 딥러닝 프레임워크이다. 기계 학습 및 딥러닝 모델을 구축하고 실행하는데 사용된다. 딥러닝 모델을 만들기 위한 도구와 기능을 제공하여 개발자들이 모델을 훈련시키고 예측을 수행하는 과정을 쉽게 할 수 있도록 도와준다. 텐서플로는 이미지 인식, 반복신경망 구성, 기계 번역, 필기 숫자 판별 등 다양한 신경망 학습 작업에 사용된다. 이를 통해 이미지나 텍스트 등 다양한 데이터에서 패턴을 인식하고 예측하는데 활용된다. 텐서플로는 사용자에게 유연성과 성능을 제공하며, 대규모 데이터셋에서도 효율적으로 작동할 수 있다. 2. Tensor 텐서플로의 핵심 개념은 텐서(Tensor)이다. 텐서는 다차원 배열로, 숫자 데이터를 표현하는데 사용된다. 스칼라.. 프로젝트 [개인프로젝트] 이미지 파일 관리 시스템 프로젝트 소개 📅 진행기간 2023.06.01 ~ 2023.06.23 👩🏻💻 팀구성 개인프로젝트 🔎 개요 - 이미지 파일 관리 시스템 💻 개발환경 - 프로젝트 도구 : IntelliJ, VSCode - 기술 스택 : Spring WebFlux, Vue.js, MongoDB 📚 요구사항 (1) Spring WebFlux로 웹 백엔드 API 서버 구축 - 비동기 논블로킹 방식으로 이미지를 업로드하는 API 구현 - 이미지 업로드시 이미지 서버 저장과 함께 이미지에 대한 메타 데이터가 데이터베이스(MongoDB)에 함께 저장 - 조회시 이미지와 함께 메타데이터도 확인가능 - 필수 API 명세 Method URI Request Param Request Body Description GET /images 자유롭.. 프로젝트 [개인프로젝트] 이미지 파일 관리 시스템 프로젝트 소개 📅 진행기간 2023.06.01 ~ 2023.06.23 👩🏻💻 팀구성 개인프로젝트 🔎 개요 - 이미지 파일 관리 시스템 💻 개발환경 - 프로젝트 도구 : IntelliJ, VSCode - 기술 스택 : Spring WebFlux, Vue.js, MongoDB 📚 요구사항 (1) Spring WebFlux로 웹 백엔드 API 서버 구축 - 비동기 논블로킹 방식으로 이미지를 업로드하는 API 구현 - 이미지 업로드시 이미지 서버 저장과 함께 이미지에 대한 메타 데이터가 데이터베이스(MongoDB)에 함께 저장 - 조회시 이미지와 함께 메타데이터도 확인가능 - 필수 API 명세 Method URI Request Param Request Body Description GET /images 자유롭.. 프로젝트 [팀프로젝트] Oh!GYM(매칭서비스) 프로젝트 소개 📅 진행기간 2023.03 ~ 2023.04(~진행중) 👩🏻💻 팀구성 그린컴퓨터아카데미(5인) 🔎 개요 - 헬스 PT(퍼스널트레이닝) 매칭 웹 플랫폼 서비스 : 헬스장이나 운동 센터를 방문하지 않고도 온라인으로 트레이너와 상담하며 가격 정보를 제공받아, 편리하게 선택할 수 있도록 도와주는 웹서비스 📌 목적 - 현대 사회에서 건강한 삶에 대한 관심과 헬스 관련 산업의 성장, 그리고 바쁜 일상으로 인해 헬스장이나 운동 센터에 가는 것이 부담스러운 현대인들을 대상으로한 편리하고 접근성 높은 서비스를 제공할 수 있는 웹 플랫폼을 개발하고자 함 💻 개발환경 - 프로젝트 도구 : Eclipse, VSCode, MySQL, Github - 사용 언어 : Java, SQL, Html/Css, JavaS.. 프로젝트 [팀프로젝트] 마음을 JAVA라(Quiz Game) 프로젝트 소개 📅 진행기간 2023.01 ~ 2023.01(약 1주) 👩🏻💻 팀구성 그린컴퓨터아카데미(5인) 🔎 개요 - 친구와 서로를 얼마나 잘 알고 있는지를 알아갈 수 있는 QnA 게임 : 회원가입시 자신의 성향에 대한 간단한 질문에 답을 작성하여 데이터 구축 게임에서는 친구의 성향을 유추하여, 이를 토대로 점수 및 랭킹 확인 📌 목적 - 사회에서 개인주의적인 경향이 강해지고 있기 때문에, 이 프로젝트를 통해 친구들끼리 서로를 더욱 잘 알아가고, 더욱 깊은 대화를 나눌 수 있도록 돕고자 함 💻 개발환경 - 프로젝트 도구 : Eclipse, Github - 사용 언어 : Java, SQL 📝 학습목표 - RDBMS의 이해 및 활용 - CRUD 기능 구현 및 SQL 문법 이해 - 사용자 입력값 유효성 .. 프로젝트 [팀프로젝트] Lotto 프로그램 프로젝트 소개 📅 진행기간 2022.12 ~ 2022.12(약 1주) 👩🏻💻 팀구성 그린컴퓨터아카데미(4인) 🔎 개요 - 가상 Lotto 번호 추첨 및 확인 Windows 환경 GUI 프로그램 : 수동, 반자동, 자동 중 원하는 방법으로 로또 번호를 선택한 후, 당첨 번호와 비교하여 결과 확인. 게임 회차별 전적 보기 기능. 💻 개발환경 - 프로젝트 도구 : Eclipse - 사용 언어 : Java 📝 학습목표 - JAVA Swing을 이용한 GUI에 대한 이해 - 배열과 컬렉션을 포함한 자료구조에 대한 이해 - 이벤트 처리 방법에 대한 이해 상세 내용 📊 기능 - 수동, 반자동, 자동 중 원하는 방법으로 로또 번호를 선택 - 당첨 번호와 비교하여 결과 확인 - 지난 회차 당첨 번호 보기 기능 - 게임.. 프로젝트 [팀프로젝트] 호텔 객실 예약 프로그램 프로그램 소개 📅 진행기간 2022.11 ~ 2022.11(약 1주) 👩🏻💻 팀구성 그린컴퓨터아카데미(4인) 🔎 개요 - 호텔 객실 예약 및 관리 콘솔 입출력 프로그램 💻 개발환경 - 프로젝트 도구 : Eclipse - 사용 언어 : Java 📝 학습목표 - 자바 언어의 기본 구조와 문법, 데이터 타입, 제어문, 연산에 대한 이해 - 객체지향 프로그래밍의 개념과 특징을 이해 상세 내용 📊 다이어그램 https://ej-development-note.tistory.com/36 [JAVA 웹 개발 공부] 국비지원 20, 21일차 - 팀프로젝트 주제 호텔의 데스크 직원이 사용할 수 있는 호텔 객실 관리프로그램 만들기 1. 객실 정보 객실은 2층부터 5층까지 각 층마다 20개씩 있다. 방 번호는 3자리 정수이.. 국비과정 [JAVA 웹 개발 공부] 국비지원 84일차 - 인터셉터, 스프링 AOP, Advice, Pointcut 인터셉터 1. 인터셉터(Interceptor) 컨트롤러(Controller)의 '핸들러(Handler)'를 호출하기 전과 후에 요청과 응답을 참조하거나 가공할수 있는 일종의 필터이다. 2. 인터셉터 사용이유 개발자는 특정 Controller의 핸들러가 실행되기 전이나 후에 추가적인 작업을 원할때 Interceptor를 사용한다. (추가적인 작업으로는 로그인체크, 권한 체크 등이 있다.) 인터셉터를 사용하게 되면 개발자는 핸들러 수 만큼 작성했던 세션 체크 코드를 인터셉터 클래스에 한번만 작성하면된다. 이로 인해 코드의 량이 현저히 줄기 대문에 메모리 낭비를 줄일수 있다. 그리고 인터셉터 적용의 유무 기준이 되는 url을 servlet-context.xml에 설정해주게 되면 스프링에서 일괄적으로 해당 ur.. 국비과정 [JAVA 웹 개발 공부] 국비지원 83일차 - 스프링 프레임 워크, MVC 핸들러, 핸들러 메소드, 모델, Logger, @Value, 의존객체 선택 스프링 MVC 핸들러 1. 핸들러(Handler) MVC의 Controller 안에서 실제 요청을 처리하는 메소드를 핸들러(Handler)라고 한다. 사용자로부터 서버로 요청이 가면, 해당 요청에 맞는 컨트롤러의 핸들러로 요청 정보가 전해지고, 핸들러는 이를 처리하여 적절한 값을 반환 한다. 그리고 요청과 핸들러를 연결하는 것을 핸들러 맵핑(Handller Mapping)이라고 하고, @RequestMapping 어노테이션을 사용하여 맵핑이 이루어지며, DispatcherServlet에게 리턴을 해줘서 응답을 할수있게 해준다. 2. @RequestMapping *어노테이션 종류 어노테이션 설명 @RequestMapping - 클라이언트에게 요청받는 주소를 클래스와 연결시켜주는 어노테이션(클래스 연결 중간.. 국비과정 [JAVA 웹 개발 공부] 국비지원 82일차 - 스프링 프레임 워크, IoC, 빈 등록, 어노테이션, Spring MVC, JdbcTemplate Inversion of Control(IoC) IoC란 기존 사용자가 모든 작업을 제어하던 것을 특별한 객체에 모든 것을 위임하여 객체의 생성부터 생명주기 등 모든 객체에 대한 제어권이 넘어 간 것을 IoC, 제어의 역전이라고 한다. IOC는 DI와 DL의 의해 구현된다. DL(Dependency Lookup) 의존성 검색 컨테이너에서는 객체들을 관리하기 위해 별도의 저장소에 빈을 저장하는데 개발자들이 컨테이너에서 제공하는 API 를 이용하여 사용하고자 하는 빈을 검색하는 방법이다. DI(Dependency Injection) 의존성 주입 각 클래스 사이에 필요로 하는 의존관계를 빈 설정 정보를 바탕으로 컨테이너가 자동으로 연결해 주는 것이다. 스프링 빈(bean) 등록 스프링(Spring) 컨테이너가 .. 국비과정 [JAVA 웹 개발 공부] 국비지원 81일차 - 스프링 프레임 워크 프레임 워크 1. 프레임워크 프레임워크는 애플리케이션 개발 시 필수적인 코드, 알고리즘, DB 커넥션 등의 기능들을 위해 뼈대(구조)를 제공한다. 개발자는 이러한 뼈대 위에서 코드를 작성해 원하는 애플리케이션을 개발할 수 있다. 프레임워크는 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 상호 협력하는 클래스와 인터페이스의 집합이라고 할 수 있다. 쉽게 말해 프레임워크는 개발자가 개발을 쉽게 할 수 있도록 뼈대를 제공해준다고 생각하면 된다. 특성 내용 모듈화 프레임워크는 캡슐화를 통해 모듈화를 강화하고 설계 및 구현의 변경에 따른 영향을 최소화함으로써 소프트웨어의 품질을 향상 재사용성 프레임워크는 재사용 가능한 모듈들을 제공함으로써 예산 절감, 생산성 향상, 품질 보증이 가능 확장.. 국비과정 [JAVA 웹 개발 공부] 국비지원 72일차 - async / await, 재귀호출, Cookie, 배열 인덱스 설정 async / await 1. async와 await 사용 이유 콜백함수의 단점을 보완해주는 Promise, 그리고 또 Promise의 단점을 보완해주는 async/await. async/await은 Promise와 다른 개념이 아니고 Promise를 사용하는 패턴이다. async/await를 사용하는 가장 큰 이유는 Promise도 가독성이 썩 좋지 않다는 점이다. 코드가 깔끔하고 가독성이 좋아야 눈으로 로직 파악이 가능하고 디버깅이 쉬워지기 때문이다. 그리고 또 async/await로 코드의 양도 줄일 수 있다. *Promise 문법 function p() { return new Promise((resolve, reject) => { resolve('hello'); // or reject(new Er.. SQL [SQL] 뷰(VIEW) 뷰(VIEW) 데이터베이스 객체란 테이블이나 인덱스 등 데이터베이스 안에 정의하는 모든 것을 말한다. 뷰 역시 데이터베이스 객체 중 하나이다. 반면 SELECT 명령은 객체가 아니다. SELECT 명령에 이름을 지정할 수도 없고 데이터베이스에 등록되지도 않기 때문이다. 이처럼 본래 데이터베이스 객체로 등록할 수 없는 SELECT 명령을, 객체로서 이름을 붙여 관리할 수 있도록 한 것이 뷰이다. SELECT 명령은 실행했을 때 테이블에 저장된 데이터를 결괏값으로 반환한다. 따라서 뷰를 참조하면 그에 정의된 SELECT 명령의 실행결과를 테이블처럼 사용할 수 있다. 뷰를 작성하는 것으로 복잡한 SELECT 명령을 간략하게 표현할 수 있다. 뷰는 테이블처럼 취급할 수 있지만 '실체가 존재하지 않는다'라는 의미.. SQL [SQL] 인덱스 인덱스 인덱스는 테이블에 붙여진 색인이라 할 수 있으며, 검색속도의 향상을 위해 사용된다. 여기서 '검색'이란 SELECT 명령에 WHERE 구로 조건을 지정하고 그에 일치하는 행을 찾는 일련의 과정을 말한다. 검색은 탐색이라고도 불린다. 테이블에 인덱스가 지정되어 있으면 효율적으로 검색할 수 있으므로 WHERE로 조건이 지정된 SELECT 명령의 처리 속도가 향상된다. 인덱스의 구조도 목차나 색인과 비슷하다. 목차나 색인에 제목/키워드별 페이지 번호가 적혀있듯, 데이터베이스의 인덱스에는 검색 시에 쓰이는 키워드와 대응하는 데이터 행의 장소가 저장되어 있다. 인덱스는 테이블과는 별개로 독립된 데이터베이스 객체로 작성된다. 인덱스는 테이블에 의존하는 객체라 할 수 있다. 대부분의 데이터베이스에서는 테이블을.. SQL [SQL] 제약조건 테이블 작성시 제약 정의 CREATE TABLE로 테이블을 작성할 때 제약을 같이 정의한다. 물론 ALTER TABLE로 제약을 지정하거나 변경할 수 있다. 이때 NOT NULL 제약 등 하나의 열에 대해 설정하는 제약은 열을 정의할 때 지정한다. -- 테이블 열에 제약 정의하기 CREATE TABLE sample1 ( a INTEGER NOT NULL, b INTEGER NOT NULL UNIQUE, c VARCHAR(30) ); 이처럼 열에 대해 정의하는 제약을 '열 제약'이라 부른다. '복수열에 의한 기본키 제약'처럼 한 개의 제약으로 복수의 열에 제약을 설명하는 경우를 '테이블 제약'이라 부른다. -- 테이블에 '테이블 제약' 정의하기 CREATE TABLE sample1 ( no INTEGER .. SQL [SQL] 테이블 작성/삭제/변경 테이블 작성 CREATE TABLE로 테이블을 작성할 수 있다. -- 형식 CREATE TABLE 테이블명( 열 정의1, 열 정의2, ... ) -- 예시 CREATE TABLE sample1 ( no INTEGER NOT NULL, a VARCHAR(30), b DATE); 테이블 삭제 DROP TABLE 명령을 사용하여 필요 없는 테이블을 삭제한다. DROP TABLE 테이블명 테이블 정의는 그대로 둔 채 테이블의 모든 행을 삭제해야 할 때 TRUNCATE TABLE 명령을 사용한다. TRUNCATE TABLE 테이블명 테이블 변경 테이블을 작성해버린 뒤에도 열 구성을 변경할 수 있다. 이때 테이블 변경은 ALTER TABLE 명령을 통해 이루어진다. ALTER TABLE 테이블명 변경명령 ALTER.. SQL [SQL] 상관 서브쿼리 EXISTS 서브쿼리를 사용해 검색할 때 '데이터가 존재하는지 아닌지' 판별하기 위해 조건을 지정할 수도 있다. 이런 경우 EXISTS 술어를 사용해 조사할 수 있다. -- EXISTS를 사용해 '있음'으로 갱신하기 UPDATE sample1 SET a = '있음' WHERE EXISTS (SELECT * FROM sample2 WHERE no2 = no); NOT EXISTS '없음'의 경우, 행이 존재하지 않는 상태가 참이 되므로 이때는 NOT EXISTS를 사용한다. NOT을 붙이는 것으로 값을 부정할 수 있다. -- NOT EXISTS를 사용해 '없음'으로 갱신하기 UPDATE sample1 SET a = '없음' WHERE NOT EXISTS (SELECT * FROM sample2 WHERE .. JSP [JSP] Cookie, Session Cookie(쿠키) 1. 쿠키 Connectionless로 인해 서버는 클라이언트를 식별할 수가 없는데, 이를 Stateless라고 합니다. 서버가 클라이언트를 기억해야 할 경우, 브라우저 단에서 쿠키라는 것을 저장하여 서버가 클라이언트를 식별할 수 있도록 한다. 쿠키 동작 방식 쿠키 생성 → 쿠키 저장 → 쿠키 전송 쿠기의 구성 이름, 값, 유효시간, 도메인, 경로 쿠키의 장점 다시 서버에 request할 필요가 없기 때문에 속도가 빠르다. 쿠키의 단점 로그인 정보 등 사용자의 정보가 저장되는 경우가 많아 보안에 취약하다. 쿠키 사용 예시 팝업 보지 않기, 사용자 이전 스크롤링이나 뷰 설정 값 등 2. 쿠키 생성 // 쿠키 생성 Cookie cookie = new Cookie("username", "사.. JSP [JSP] Forward, Redirect Forwarding(요청 전달 처리) - 요청을 구분하여 처리할 서블릿을 결정하는 경우 - 처리를 여러 단계의 서블릿으로 구분하여 필요한 단계로 바로 이동하는 경우 - 브라우저에 표시되는 경로를 숨기고 싶은 경우 - 요청시 생성된 request, response 객체의 값이 유지 request.setAttribute("키값", 데이터); request.getAttribute("키값"); request.getRequestDispatcher("이동할 URL").forward(request, response); Redirecting(다시 요청) - 요청을 검증하여 알맞은 페이지로 요청을 하도록 처리하려는 경우 - 에러 또는 예외 처리에 대한 결과 페이지를 처리하려는 경우 - 브라우저에 주소 창에 경로가 표시됨.. JSP [JSP] DTO, 자바빈즈, DAO DTO 데이터 전송 객체(Data Transfer Object, DTO)란 주로 데이터를 저장하거나 전송하는데 쓰이는 객체이다. 별다른 로직 없이 속성(멤버 변수)과 그 속성에 접근하기 위한 게터/세터 메서드만 갖춘 게 특징이다. 데이터만 가지고 있는 객체라 하여 값 객체(Value Object, VO) 라고도 한다. DTO는 자바빈즈 규약에 따라 작성한다. 자바빈즈 자바빈즈란 자바로 작성한 소프트웨어 컴포넌트로, 다음의 규약을 따르는 자바 클래스를 말한다. - 기본 패키지 이외의 패키지에 속해야 한다. - 멤버 변수 접근 지정자는 private으로 선언한다. - 기본 생성자 있어야한다. - 게터/세터 메서드가 있어야 한다. - 게터/세터 메서드는 public으로 선언한다. DAO DAO(Data Tra.. JSP [JSP] 내장 객체 내장 객체 클라이언트가 서버로 요청을 보내면, 서버는 그에 맞는 결과를 응답으로 돌려주는 형태로 동작한다. 이 때 JSP의 내장 객체는 요청과 응답 혹은 HTTP 헤더 등의 정보를 쉽게 다룰 수 있도록 해준다. 내장 객체는 JSP 페이지가 실행될 때 컨테이너가 자동으로 생성해주며, 별도로 선언하거나 객체로 생성하지 않아도 즉시 사용할 수 있다. *내장 객체의 종류 내장 객체 설명 request 클라이언트의 요청을 받거나 웹 브라우저에 대한 정보 혹은 요청 헤더에 대한 정보를 읽을 때 사용한다. response 요청에 대한 응답을 웹 브라우저로 보낼 때 사용한다. 페이지 이동이나 응답 헤더를 추가할 때도 사용한다. out 변수 등의 값을 웹 브라우저에 출력할 때 주로 사용한다. session 웹 브라우저 .. JSP [JSP] 지시어, 스크립트 요소 JSP 파일 기본 구조 JSP의 주된 목적은 웹 브라우저에 띄울 HTML 파일을 생성하는 것으로, 일반적인 HTML 파일에 몇 가지 요소가 추가된 형태이다. 크게 보면 지시어와 스크립트 요소가 있으며, 스크립트 요소는 세 가지(선언부, 표현식, 스크립트릿)로 나뉜다. 지시어는 JSP 페이지를 자바(서블릿) 코드로 변환하는데 필요한 정보를 JSP 엔진이 알려준다. 주로 스크립트 언어나 인코딩 방식 등을 설정하며, 지시자 혹은 디렉티브로 부르기도 한다. 지시어 1. 지시어 종류 종류 설명 page 지시어 JSP 페이지에 대한 정보를 설정한다. include 지시어 외부 파일을 현재 JSP 페이지에 포함시킨다. taglib 지시어 표현 언어에서 사용할 자바 클래스나 JSTL을 선언한다. 2. page 지시어 .. JAVA [JAVA] 연습문제 - 히스토그램(분포도) 만들기 문제 사용자에게 1 ~ 100 사이의 10개의 정수를 입력받고, 아래와 같이 각 정수의 범위에 해당하는 정수 개수를 출력하기 1 ~ 10 : **** 11 ~ 20 : ** 21 ~ 30 : * 31 ~ 40 : 41 ~ 50 : ** 51 ~ 60 : 61 ~ 70 : 71 ~ 80 : 81 ~ 90 : 91 ~ 100 : * 풀이순서 1. 범위 배열 생성 2. 반복해서 정수 입력받기 3. 입력받는 값이 1 ~ 100 사이와 아닌 경우 나누기 4. 입력받는 값의 범위에 해당하는 범위 배열에 * 더해주기 5. 히스토그램 출력 전체코드 import java.util.Scanner; public class Histogram2 { public static void main(String[] args) { Sca.. JAVA [JAVA] 연습문제 - 생일 D-Day 계산하기 문제 다음 내 생일까지 몇 일이 남았는지를 구하기 오늘: 2022-11-20 생일: 2023-09-10 D-294 풀이순서 1. Calendar 클래스의 인스턴스 2개 생성 2. 한 개는 생일날짜로 설정 3. 올 해 생일이 지났는지 확인 4. 생일이 지났으면 내년 생일로 변경 5. 디데이 출력 전체코드 import java.text.SimpleDateFormat; import java.util.Calendar; public class DDay { public static void main(String[] args) { Calendar cal1 = Calendar.getInstance(); Calendar cal2 = Calendar.getInstance(); cal2.set(Calendar.MONTH, .. JAVA [JAVA] 연습문제 - 이번 달 달력(calendar) 만들기 문제 아래와 같이 오늘 날짜와 이번 달 달력을 출력하기 2022-11-19 토 SU MO TU WE TH FR SA 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 풀이순서 1. 현재 날짜 구하기 2. 이번 달의 마지막일 구하기 3. 1일 요일 구하기 4. 1일 위치 정하기 5. 1일부터 마지막일까지 출력하기 6. 토요일에 해당하는 날 줄바꿈하기 전체코드 import java.text.SimpleDateFormat; import java.util.Calendar; public class CalendarEx1 { public static void main(String[] args) { Calen.. JAVA [JAVA] 날짜와 시간 & 형식 Calendar와 Date Date는 날짜와 시간을 다룰 목적으로 JDK1.0부터 제공되어온 클래스이다. Date 클래스는 기능이 부족했기 때문에, 그 다음 버전인 JDK1.1부터 Calendar라는 새로운 클래스를 제공하기 시작했다. Calendar는 Date보다는 훨씬 나았지만 몇 가지 단점들이 발견되어서 JDK1.8부터 'java.time패키지'로 기존의 단점들을 개선한 새로운 클래스들이 추가되었다. Calendar와 GregorianCalendar Calendar는 추상클래스이기 때문에 직접 객체를 생성할 수 없고, 메서드를 통해서 완전히 구현된 클래스의 인스턴스를 얻어야 한다. Calendar cal = new Calendar(); // 에러!!! 추상클래스는 인스턴스를 생성할 수 없다. Cal.. JAVA [JAVA] 예외처리 프로그램 오류 프로그램이 실행 중 어떤 원인에 의해서 오작동을 하거나 비정상적으로 종료되는 경우가 있다. 이러한 결과를 초래하는 원인을 프로그램 에러 또는 오류라고 한다. 이를 발생시점에 따라 '컴파일 에러'와 '런타임 에러'로 나눌 수 있는데, 글자 그대로 '컴파일 에러'는 컴파일 할 때 발생하는 에러이고 프로그램의 실행도중에 발생하는 에러를 '런타임 에러'라고 한다. 이 외에도 '논리적 에러'가 있는데, 컴파일도 잘되고 실행도 잘되지만 의도한 것과 다르게 동작하는 것을 말한다. *컴파일 에러 : 컴파일 시에 발생하는 에러 *런타임 에러 : 실행 시에 발생하는 에러 *논리적 에러 : 실행은 되지만, 의도와 다르게 동작하는 것 자바에서는 실행 시(runtime) 발생할 수 있는 프로그램 오류를 '에러'와.. JavaScript [JavaScript] 이벤트 - 이벤트 객체, this 키워드 이벤트 이벤트(event)는 웹 브라우저와 사용자 사이에 상호작용이 발생하는 특정 시점을 의미한다. 자바스크립트로 이벤트 종류에 따른 제어 작업을 할 수 있다. 1. 이벤트 종류 구분 이벤트 설명 마우스 이벤트 onclick 마우스로 클릭하면 발생한다. ondblclick 마우스로 빠르게 두 번 클릭하면 발생한다. onmouseover 마우스 포인터를 올리면 발생한다. onmouseout 마우스 포인터가 빠져나가면 발생한다. onmousemove 마우스 포인터가 움직이면 발생한다. onwheel 마우스 휠(wheel)을 움직이면 발생한다. 키보드 이벤트 onkeypress 키보드 버튼을 누르고 있는 동안 발생한다. onkeydown 키보드 버튼을 누른 순간 발생한다. onkeyup 키보드 버튼을 눌렀다가.. JavaScript [JavaScript] 문서 객체 모델 - DOM, Node , 폼(form) DOM 문서 객체 모델(DOM, Document Object Model)은 웹 브라우저에 표시되는 문서를 자바스크립트가 이해할 수 있도록 객체화한 모델 구조이다. DOM은 트리 구조로 생성되는데, 이를 DOM 트리라고 한다. DOM 트리는 document 객체 하위에 HTML 태그 요소, 속성, 텍스트, 주석 등이 트리 형태로 구성되는데, 이들을 각각 노드(node)라고 한다. 각 노드는 부모, 자식, 형제 관계가 형성된다. *DOM 트리를 구성하는 노드 타입 타입 설명 문서 노드(Node.DOCUMENT_NODE) 최상위 document 객체의 노드 타입 요소 노드(Node.ELEMENT_NODE) h1, p 태그와 같은 요소의 노드 타입 속성 노드(Node.ATTRIBUTE_NODE) href, sr.. JavaScript [JavaScript] 객체 - 객체 특성, 표준 내장 객체, 브라우저 객체 모델 객체 객체는 키와 값으로 구성된 속성들의 집합을 의미하는 자료형이다. 객체는 {}를 이용해 생성할 수 있는데, 이런 방법을 리터럴(literal) 방식으로 객체를 생성했다고 표현한다. 그리고 속성이 한 개도 없는 객체를 빈 객체라고 한다. 객체는 데이터의 종류를 가리지 않으므로 모든 자료형의 데이터를 값으로 가진다. 예를 들어, 배열, 숫자, 논리 데이터를 한 객체의 속성으로 추가할 수 있으며, 또 다른 객체나 함수가 들어갈 수도 있다. 객체 접근 방법 객체는 대괄호 연산자나 마침표 연산자로 접근할 수 있다. 객체["키"] = 값; 객체.키 = 값; 객체 속성 추가 또는 삭제하기 객체의 속성에 접근해서 새로운 값을 할당할 때, 존재하지 않는 키라면 새로운 속성이 추가된다. 그리고 delete 키워드로 속.. JavaScript [JavaScript] 함수 - 함수 정의, 스코프, 함수 호이스팅, 즉시 실행 함수 함수 정의 1. 함수 선언문 *형식 function 함수명(){} *함수 정의, 호출 // 함수 정의 function gugudan(){ for(let i = 1; i JavaScript [JavaScript] 기초 문법 - 변수와 상수, 자료형, 객체, 연산자, 조건문, 반복문 변수와 상수 자바스크립트에서 데이터를 저장할 수 있는 공간을 변수와 상수 변수라고 한다. 변수는 변할 수 있는 데이터를 저장하는 공간이고, 상수 변수는 재할당할 수 없는 데이터를 저장하는 공간이다. 1. var var num; // 변수 선언 var num = 10 + 20; // 변수 초기화 2. let let num = 10 + 20; (1) 변수명 중복이 불가능하다. (2) 호이스팅되지 않는다. +) 호이스팅(hoisting)은 var 키워드로 변수를 선언하고 할당했을 때, 변수 선언을 자바스크립트의 스코프(scope) 맨 위로 올려서 실행하는 것을 말한다. (3) 스코프의 범위가 다르다 3. const 변수를 선언할 때 사용하는 키워드로 const 도 있다. 변수명을 중복으로 선언하는 것과 호이스..