본문 바로가기

전체 글84

개발자 커뮤니티 앱 - UIUX 제작 2024. 2. 24.
카페 지도 & 추천 웹사이트 - ECHub ECHub : Ewha Cafe hub (이화여대 주변 카페 지도 웹페이지) 사용자에게 이화여대 인근 카페의 정보를 제공하며, 지도에 각 카페의 위치를 시작적으로 나타냄 - 해시태그 & 키워드 검색 - 카페 정보 제공 ( 주소, 전화번호, 영업상태, 대표메뉴 ) - 사용자 리뷰 - 지도와 연동 요구사항 정의 기능/서비스 정의서 작성 (어떤 서비스를 제공할 것이며 그 서비스를 제공 하기 위해서는 어떤 기능이 필요한지 정의) 데이터베이스 정의 화면 정의서 작성 로그인과 회원가입 기능은 상단에 배치를 하여 클릭시 팝업창으로 뜨도록 해 사용자가 쉽게 접근할 수 있도록 함. 해시태그는 초안 처럼 모든 해시태그를 나열하는 것이 아니라, 필요한 해시태그만 보이고, 전체 해시태그를 볼 수 있는 .. 2024. 2. 24.
검색어 빈도 데이터를 반영한 코로나19 확진자 수 예측 딥러닝 모델 구글 트렌드를 확용해서 딥러닝 모델(DNN & LSTM) 을 사용한 탐색적 데이터 분석 실시 검색어 빈도 데이터 (‘코로나 증상’) + 과거 코로나 19 확진자 수 데이터 -> 미래 코로나 확진자 수 예측  확진자수 예측을 위한 입력 데이터 긴 기간의 시계열 데이터를 사용할수록 변동성 파악 용이 ( 전염병에 대처하고 관리하기 위해 1년정도의 시계열 데이터만 사용) -> 서울을 포함한 6개의 도시에서 2020년 1월 30일 ~ 2021년 2월 28일의 입력 데이터 입력 데이터 : 확진자 수( 특정일 기준으로 특정일 포함 과거 7일 데이터 사용-> 5일 후 예측), 검색어 빈도수       - 훈련 데이터 : 2020년 1월 30일 ~ 2021년 1월 20일      - 테스트 데이터 : 2021년 1월 2.. 2024. 2. 17.
Spring boot 회원 관리 예제 #비지니스 요구사항 정리 컨트롤러(Controller) 계층: 표현 계층과 응용 계층 사이에서 위치하며, 사용자의 입력을 받아 응용 계층으로 전달하거나 응용 계층에서 받은 데이터를 표현 계층에 전달하는 역할 주로 사용자 인터페이스와 상호작용하면서 해당 요청을 처리하고 응용 계층에 전달하여 비즈니스 로직을 수행 서비스(Service) 계층: 응용 계층과 데이터 계층 사이에서 비즈니스 로직을 처리하는 계층 응용 계층에서 필요한 기능을 제공하고, 트랜잭션 관리, 보안, 로깅 등의 부가적인 기능을 담당 여러 컨트롤러에서 공통으로 사용되는 로직을 추상화하여 재사용성을 높일 수 있음. 리포지토리(Repository) 계층: 데이터 계층과 도메인 계층 사이에서 위치하며, 데이터베이스와의 상호작용을 캡.. 2024. 1. 14.
Spring Boot 메세지 리소스 파일 작성 메세지 리소스파일 - 프로젝트에 지원가능한 각 언어에 대해 메시지 리소스 파일 (*.properties) 을 생성하여 출력할 메세지 작성 - key = value 쌍으로 구성 ( key 는 뷰 페이지에서 메세지를 참조하는데 사용) - 기본 언어의 메세지 리소스 파일을 '파일 이름. properties' 형태로 작성 Person.form.Enter.message = 당신의 정보를 입력하세요 -다양한 언어로 된 뷰 페이지를 지원하려면 특정 언어별 리소스 파일 작성해야 함. ( 파일 이름_ 언어코드_국가코드.properties ) - 메세지 리소스 파일은 src/main.resources 폴더에 위치 파일형식 설명 파일이름.properties 시스템 언어/ 지역에 맞는 리소스 파일이 .. 2024. 1. 6.
Spring boot 3장 3.4 요청처리 메소드와 모델 유형 #요청 처리 메소드 - 스프링 MVC에서 사용자 요청을 처리하는 메서드 - @RequestMapping 에 설정된 요청 매핑 경로에 따라 호출됨. @RequestMapping(...) public String 메서드 이름() { //모델 (객체) 에 응답 데이터 저장 return "뷰 이름" ; } - 사용자 요청을 처리한 결과를 웹 브라우저 화면에 보여주는 모델과 뷰가 있음. 모델 뷰 사용자의 웹 요청을 처리한 결과 데이터를 관리하고 전달 처리한 결과 데이터를 웹 브라우저에 출력하는 웹페이지 역할 아래는 응답 데이터를 저장하는 모델 유형 모델( &뷰) 클래스 설명 Model 데이터(객체) 정보를 저장하는 데 사용 ModelMap 데이터(객체) 정보를 저장하는 데 사용.. 2023. 12. 30.
SQL 레벨업 9장 , 10장 9장 갱신과 데이터 모델 26강 갱신을 효율적으로 1. NULL 채우기 UPDATE OmitTbl SET val = (SELECT val FROM OmitTblOT1 WHERE OT1.keycol = (SELECT MAX(seq) FROM OmitTbl OT2 WHERE OT2.keycol = OmitTbl.keycol AND OT2.seq < OmitTbl.seq AND OT2.val IS NOT NULL)) WHERE val IS NULL; OT2 테이블 스캔의 결과를 MAX 함수로 집약하고 OT1 테이블의 레코드를 특정 데이터 양이 늘어나면 기본 키 인덱스를 사용해서 풀 스캔보다 효율적으로 접근 2. 반대로 NULL을 설정 UPDATE OmitTbl SET val = CASE WHEN val = (.. 2023. 12. 2.
혼자 공부하는 머신러닝 + 딥러닝 9장 9-3 LSTM과 GRU셀 LSTM 셀: 타임스텝이 긴 데이터를 효과적으로 학습하기 위해 고안된 순환층, '입력 게이트, 삭제 게이트, 출력 게이트' 역할을 하는 작은셀이 포함되어 있음 LSTM 셀은 은닉 상태(Hidden state) 외에 셀 상태를 출력함, 셀 상태는 다음 층으로 전달되지 않으며 현재 셀에서만 순환됨 GRU 셀: LSTM 셀의 간소화 버전이지만, 못지않은 성능을 냄 LSTM 구조 (Long Short-Term Memory) LSTM 셀을 사용한 순환층 클래스 입력과 가중치를 곱하고 절편을 더해 활성화 함수를 통과시키는 구조를 여러개 가지고 있음. 계산 결과를 다음 타임스텝에 재사용 1. 은닉 상태 입력과 이전 타임스텍의 은닉 상태를 가중치에 곱한 후 활성화 함수를 통과시켜 다음 은닉 .. 2023. 11. 25.
SQL 레벨업 - 8장 23 강 레코드에 순번 붙이기 - 윈도우 함수 - 상관 서브 쿼리 -> 기능적으로 동일하지만, 성능 측면에서 윈도우 함수를 사용하는 편이 좋음. 윈도우 함수에서는 스캔 횟수가 1회임. 인덱스 온리 스캔을 사용하므로 테이블에 직접적인 접은을 회피함. 상관 서브커리를 사용하면 2회의 스캔이 발생함. 서브쿼리 보다는 윈도우 함수를 사용하는 것이 더 좋은 성능 기본키가 한 개의 필드일 경우 기본키가 여러 개의 필드일 경우 상관 서브쿼리의 경우 다중 필드 비교를 사용. 그룹마다 순번을 붙이는 경우 순번과 갱신 기존 테이블에 순번 필드를 추가하여 순번을 갱신하는 구문을 설명 1. 기본 키가 한 개의 필드일 경우 SELECT student_id, ROW_NUMBER() OVER (ORDER BY student_id).. 2023. 11. 25.
혼자 공부하는 머신러닝 + 딥러닝 8장 8-2 합성곱 신경망을 사용한 이미지 분류 패션 MNIST 데이터 불러오기 데이터 스케일을 0~255사이에서 0~1 사이로 바꾸고 훈련세트와 검증세트로 나눔 from tensorflow import keras from sklearn.model_selection import train_test_split (train_input, train_target), (test_input, test_target) = \ keras.datasets.fashion_mnist.load_data() train_scaled = train_input.reshape(-1, 28, 28, 1) / 255.0 입력 이미지는 항상 깊이(채널) 차원이 있어야함. Conv2D 층을 사용하기 위해 마지막에 채널 차원을 추가해야함 train_.. 2023. 11. 19.
SQL 레벨업 - 7장 21강 서브쿼리가 일으키는 폐해 1. 서브쿼리의 문제점: 실체적인 데이터를 저장하지 않음 - 연산 비용추가 실체적 데이터를 저장하고 있지 않아서, 서브쿼리에 접근할 때 마다 SELECT 구문 실행해야함. -> 복잡할수록 실행 비용이 더 높아짐 - 데이터 I/O 비용 발생 메모리 용량이 충분하지 않으면 오버헤드 발생. ( DBMS 가 저장소에 있는 파일에 결과를 쓸 수 있음) - 최적화 불가 서브쿼리로 만들어지는 데이터는 테이블과 차이가 없지만, 서브쿼리에는 메타 정보 (명시적 제약, 인덱스) 가 존재하지 않아서 옵티마이저 가 쿼리를 해석하기 위한 정보를 서브 쿼리에서 얻을 수 없음 2. 서브쿼리 의존증 고객의 구입 명세 정보를 저장하는 테이블(Receipts)에 순번(Seq 또는 AI idx) 필드는 오.. 2023. 11. 18.
혼자 공부하는 머신러닝 + 딥러닝 7장 7-1 인공신경망 뉴런(=유닛) : 인공 신경망에서 z값을 계산하는 단위 ex)z1~ z10 (z_티셔츠, z_바지... ) 출력층: z1~z10 을 계산하고 클래스를 예측하여, 신경망의 최종 값을 만듦 . 선형 계산만 발생 입력층: 인공 신경망에서 픽셀값 자체, 특별한 계산 하지않음 ex)x1~x784 (픽셀1,픽셀2 ...) 인공 신경망 모델 1. 텐서플로와 케라스 구글이 2015년 11월 오픈소스로 공개한 딥러닝 라이브러리 ; 인기가 제일 많음 from tensorflow import keras 텐서플로에는 저수준의 API / 고수준의 API (케라스;딥러닝 라이브러리) 포함 딥러닝 라이브러리 머신러닝 라이브러리와 달리 GPU(그래픽 처리 장치) 사용해 인공 신경망을 훈련 GPU는 벡터와 행렬 연산.. 2023. 11. 12.
SQL 레벨업 - 6장 18강 기능적 관점으로 구분하는 결합의 종류 1. 크로스 결합 - 모든 결합의 모체 - 크로스 결합의 작동 SELECT *FROM Employees CROSS JOIN Departments; 2개의 테이블의 레코드에서 가능한 모든 조합을 구하는 연산 (사원 테이블 레코드) * (부서 테이블 레코드) 만큼의 레코드 결과 생성 - 크로스 결합이 실무에서 사용되지 않는 이유 1. 이러한 결과가 필요한 경우가 없다 2. 비용이 매우 많이 드는 연산이다 -결합 조건이 없으면 DBMS 는 어쩔 수 없이 두 개의 테이블에서 나올 수 있는 모든 조합을 만들어 버린다. 2. 내부 결합 - '데카르트 곱의 부분 집합' 이라는 의미 - 내부 결합의 작동 SELECT E.emp_id, E.emp_name, E.dept_id,.. 2023. 11. 12.
혼자공부하는 머신러닝 + 딥러닝 5장 5-3 트리의 앙상블 정형 데이터 - 데이터 베이스, 엑셀, CSV 로 저장하기 쉬운 데이터 비정형 데이터 - 데이터 베이스, 엑셀로 표현하기 어려운 데이터 (ex. 텍스트 데이터, 사진, 디지털 음악) 앙상블 학습 ensemble learning : 정형데이터를 다루는 데 가장 좋은 알고리즘 랜덤 포레스트 Random forest 여러 개의 결정 트리(Decision Tree)를 사용하여 데이터를 학습하고 예측하는 모델 여러 개의 결정 트리를 만들고, 각 트리의 예측을 종합하여 높은 정확도의 예측을 수행 부트스트랩 샘플링 (Bootstrap sampling) 랜덤 포레스트는 원본 데이터에서 랜덤하게 중복을 허용(뽑은 데이터를 다시 넣어서 랜덤하게 뽑음)하여 샘플을 선택하고 이렇게 만들어진 부트스트랩 샘.. 2023. 10. 28.
SQL 레벨업 - 5장 14강 반복문 의존증 반복문 의존증 - 문제를 작게 나우어 레코드라는 단위에 이를 때까지 자르고 그러한 레코느에 반복문을 적용해서 문제를 해결하려는 태도 SQL 은 반복문이 없음. 내부적으로는 반복문 사용 하나의 레코드마다 작은 SQL을 사용해 접근함. 비즈니스 로직은 호스트 언어(절차형 언어)에서 반복 처리를 구현하는 것이 일반적임. 나머지는 c#이나 자바에서 구현하면 됨. 15강 반복계의 공포 1. 반복계의 단점 같은 기능을 구현한다고 가정하면, 반복계로 구현한 코드는 포장계로 구현한 코드에 성능적으로 이길 수가 없음. 처리하는 레코드 수가 적을 때는 반복계와 포장계에 큰 차이가 없음.하지만 처리하는 레코드 수가 많아지면 차이가 점점 벌어짐. 반복계의 처리기간= * - SQL 실행의 오버 헤드 SQL.. 2023. 10. 8.