'**제발 수업 내용을 기억해**' 줄여서 '제수기' 시리즈를 시작한다.
제수기 시리즈는 '제발수업을기억하자'의 의미를 담고 있으며, 틀린 정보가 담길 수 있습니다.일자 : 2024-12-17컨디션 : 😣어제 오후에 정신이 혼미해서 집중을 잘 못했는데 다행히도 강사님이 hands-on 하면서 다시 설명을 해주고 계신다.Prompt -> L
https://python.langchain.com/docs/tutorials/rag/오타가 나도 검색이 되는 이유는 store에 단어유사도 벡터로 이뤄졌기 때문RecursiveCharcaterTextSplitter 클래스로 스플릿 해보자!개행문자 때문에 이상
Chat GPT의 playgrond에 와인 소물리에 뭐.. 가이드..? 만들어줘 이렇게 물어봐서 만들 수도 있다. 이때 예시를 들어주는 내용이 중요하다.마찬가지로 from langchain_core.prompts import ChatPromptTemplate
수업 목차 Langchain Overview https://www.langchain.com/ 주요 기능 LLM 통합: OpenAI, Hugging Face Transformers, Cohere 등 다양한 LLM과 연계 가능. 체인(chain) 관리: 여러 작업(예
'제발수업내용을기억해라' 제수기 시리즈는 단순한 수업정리로, 틀린 내용이 있을 수 있습니다.pinecone 사이트에서 api키를 얻을 수 있는데, .env 파일에 넣을 PINECONE_API_KEY에 넣어주면 되고, PINECONE_INDEX_NAME여기에는 Index
web application과 app 중에 우리는 web application에 집중해서 배우게 된다. web application은 유지보수에 유리하고 사용자는 버전업그레이드가 불필요하다고 한다. -> 이게 무슨 의미인지 아직은 모르겠다.최적화가 app보다 좋지는 않
MySQL 서버를 구축하는 것이기 때문에 아래와 같은 과정을 따라서 다운로드 한다.dev, worksapace 나눠서 관리하기
관리할 데이터는 table이라는 단위에 적히게 된다. 이 테이블 툴들을 묶어낼 수 있는 단위가 하나 더 있다. database(schema)접속하자마자 show databases; 이렇게 적은 건 이 단위를 본 거다. show schemas; 를 써도 똑같은 명렁이다.
DQL (Data Query Language) : DML 중에서 SELECT를 따로 정의함.데이터를 검색(추출)하기 위해 사용되는 언어주요명령어 SELECT 데이터 검색\-- DQL 명령어 구조 (실행순서와 함께 암기)/ select 컬럼명 (5) <필수>
API 링크Built-In Function and Operator ReferenceMySQL Functions
group by에 명시한 컬럼(그룹핑기준)은 select절에 사용할 수 있다.gruop by와 관계없는 일반 컬럼은 사용 불가4번을 보면 4개가 합쳐져서 저런 값이 나왔다. 두 개 이상의 컬럼을 기준으로 그룹핑 할 수 있다.두개의 그룹이 모두 같으면 하나의 그룹, 다르
tbl_menu : 4tbl_category : 4번은 한식이다.나누는 이유는, 중복값을 제거하기 위해.table entity relationRDB에서 독립되게 나타낼 때 entityjoin의 결과로 나타나는 table(entitiy)은 relation(entitiy
union all이 union보다 더 빠른 연산을 한다. 중복된 걸 제거하지 않고 그냥 가져다가 붙이는 거니까.가상 테이블 생성실습문제: 2달전 판매데이터를 조회\-- 2024-10 하드코딩할 수 없고, 언제 실행해도 2달 전 데이터만 나올 수 있게 sql 작성extr
SUBQUERY
SQL 전문가 가이드 (2013년)그룹핑하면서 일반 컬럼을 같이 쓸 수 있다.ANSI/ISO SQL 표준에서 WINDOW FUNCTION 용어를 사용함rank : 중복된 순위가 있으면 중복된 수만큼 건너뛰고 다음 순위를 부여한다.dense rank : 중복이 있으면 순
문법1 : 테이블 구조 그대로 컬럼 순서, 개수 정확하게 입력해야 한다.다
()commit을 실행해야 적용된다.💥 근데 왜 굳이 cmd가서 확인하는거지 왜 다른 client에서..?rollback을 하면 마지막 commit 이후의 변경사항을 폐기해버린다. (깃의 커밋과 다름)commit; -- 변경사항 적용rollback; -- 변경사항 폐
DDL CREATE
어디에 쓰일까? 사용자의 입력을 꼭 받는 필수값 not null 적용
DCL 권한관련 API DB 만들기 root 계정에서 만들 수 있다. 데이터 소스 -> My SQL -> 이름, 사용자, 비밀번호 설정 -> 연결 테스트 -> 스키마 전체 선택  js를 집중해야 한다. 자바스크립트는 프로트앤드로 시작해서 백앤드의 node.js라는 기술이 잘 쓰이고 있다. 프로트앤드에서 recat, vueis
emmit cheat sheet! + Tab 하면 자동으로 나오는 내용미리 어떻게 나올지 보여준다.글자크기모든 공백/개행/탭문자 공백 1개로 취급브라우저는 제대로 보내지만, 라이브로 render하면서 이러헥 됨. 띄어쓰기br 개행 수평선시각적인 정보를 얻기 힘든 장애
모든 html태그는 css속성 display에 따라 inline/block요소로 구분된다. inline 요소: 여러 요소를 수평적으로 나란히 배치할 수 있다.span, a, img, strong, em 등content만큼만 영역을 차지한다.block요소 : 여러 요소를
인라인 배치여서 옆으로 배치되고 있다.이미지 주소 넣으면 됨너비만 조정해서 비율이 유지되고 있다. 너비나 높이 중에 하나만 바꾸면 비율이 유지된다.화면을 줄이면 절대단위는 크기가 그냥 고정된 채로 아래로 내려가는데, 상대단위는 크기가 줄어든다. 부모를 따라서 크기가 조
다른 페이지를 현재 페이지에 삽입하는 태그src: 삽입할 페이지 주소width, height: 크기frameborder: 테두리scrolling: 스크롤바yes: 항상 보이기no: 숨기기auto: 필요할 때만 보이기render정리된 html이 f12눌렀을 때 eleme
src에 음원 파일을 넣었어도 controls가 없으면 재생박스가 안 나타난다.controls : 재생/일시정지/볼륨조절, 시각화 가능controls="controls"와 같이 속성명, 속성값이 같은 경우 속성명만 작성해도 잘 작동한다.controls autoplay
사용자 입력값을 서버로 전송하기 위한 form과 input 태그 등을 제공 name : 폼의 이름(서버전송되지 않음. 페이지내 구분용)action : 제출할 서버주소 (url)method : (http메세지를 작성하는 방법)get (기본값) : 사용자입력값을 url에
Cascading Style Sheets부모한테 적용한 스타일링이 자식한테 전이돼서 처리되는 경우가 많아서 이런 이름을 갖게 됐다.가장 권장된는 방식
모든 html 태그는 boxmole에 근거해서 화면에 배치된다.content : 태그의 실제내용 (text(Text Node), 자식tag(Element Node))padding : 내부 여백border : 경계선(테두리)margin : 외부 여백, 다른 태그와의 간격
inline 요소는 자체적인 정렬방법이 없다. 부모 block 요소의 text-align 속성을 이용하여 정렬한다.가운데 정렬위 아래도 필요하다하고 하면 10px 뭐 이렇게 써주면 되고 위 아래 필요 없으면 0오른쪽을 가려면? 왼쪽 마진을 계산해야 하는데 이것도
요소의 inline/block 여부를 결정하는 속성display : inline (inline 요소 기본값)display : block (block 요소 기본값)그 외에도 필요에 따라 table, flex, grid, none 등 다양한 값을 적용할 수 있다. d
position속성 : 요소의 위치를 어떻게 설정할지 결정하는 속성static (기본값) 문서내 정의된대로 화면배치(위->아래, 좌->우)offset값 무시위에서 아래, 왼쪽에서 오른쪽으로 배치하는 경향이 있다.offset을 무시한다는 게 무슨 말일까?현재 positi
화면 배치를 위한 최신 CSS 기술flex : 메인축/크로스축 설정grid : 행열 기준으로 2차원 배치부모요소 flex containerdisplay: flex | inline-flexflex-direction: row | column \- 메인축 방향 설정just
원래는 이렇게 했었는데 시각장애인들이 스크린리더를 쓰면 div의 id를 읽어내지를 못한다. 그래서 html5에서는 Semantic Tags를 적용했다.semantic tag란의미가 부여된 태그. 태그의 의미와 작성될 내용을 매칭해야 한다. 페이지 레이아웃과 관련된 se
javasript는 웹페이지내에서 동적인 부분(사용자상호작용, 이벤트처리, 외부서비스 이용)을 담당하는 언어 Brandon Eich가 기존 Lisp언어를 베이스 10일만에 작성한 언어. 언어적 이슈가 있지만 계속 대응하면 발전시켜왔음.node라는 런타임을 사용해서 브
js의 8가지 자료형1\. underfined2\. string3\. number4\. boolean5\. null6\. object (array, object, function)7\. bigint 큰수/정밀한수를 제어하기 위한 숫자형8\. symbol 고유하고 수정불
for(초기식; 조건식; 증감식)초기식: for문 시작시 한번만 실행 (증감변수 설정)조건식: 매턴마다 실행 전 체크해서 true인 경우만 블럭 실행, false인 경우 반복문 종료증감식: 매턴의 마지막에 증감변수의 증감처리를 담당처음에 실행하면 let i 가 실행된다
Access DOM
Traverse DOM >DOM은 Node로 구성되어 있다. - TextNode - CommentNode - ElementNode (태그객체) Child Node 살펴보기 개행도 포함해서 본다 공식 문서 Node | Element Node Docs Eleme
CSS Styling
getter : 자식 HTML 태그를 포함한 문자열로 반환해서 가져옴setter : HTML 태그가 포함된 문자열인 경우, HTML 태그 처리를 해준다. (실제 HTML 태그를 파싱 처리한다)()getter 자식 HTML 태그가 있건 말건 그걸 제외한 문자열로 반환se
형변환모든 값은 조건식 자리에서 논리적으로 암묵적 형변환이 가능하다.값이 있는 경우 true 변환값이 없는 경우 false 변환replace 문자열 메소드0-9랑 온점 빼고 입력해줘
string_mdn_web_docs 사이트math mdn web docs 사이트floor 내림trunc 버림random 누를 때마다 달라지는 난수난수 범위 정하는 공식은? 난수 \* 범위(정수의 개수) + 시작값스타일의 색상을 초기값으로 해주지 않으면 홀수에도 나중에는
|| or 연산 사용존재하지 않는 undefinde를 메소드를 부르거나 하면 에러가 난다. 에러가 안 나게 하려면??를 넣어주면 된다.
Array > 파이썬 list와 유사하다. 배열생성 중첩배열 반복문 Array Method >array metod docs 사이트 단어가 있는지 찾아준다 있으면 없으면 거꾸로 센다고 해서 인
함수 선언식 함수 표현식
속성모음에 해당하는 자료형object, array, function 등 모두 객체형이다.객체는 Literal방식과 생성자 방식으로 생성할 수 있다.속성명은 문자열/식별자/심볼이 가능하다.속성은 모든 타입을 허용하고, 특히 타입이 함수인 속성은 메소드라고 한다.속성 참조
작성중... Object_Array 객체배열을 DOM에 추가하기 a 태그 3개 생성 아래와 같이 정리할 수도 있다. ㅇ  최상위객체전역객체 window는 생략가능새창 또는 새팁을 여는 함수새창의 window 객체 반환팝업인 자식 윈도우를 제어해서 3초 뒤에 자동으로 닫히게 할 수도 있다. 아래 코드는 오류가 났지만, 아무튼 할 수 있다.부모창에서 자식창을 참조 : popup
Event 웹페이지상의 모든 사용자액션, 네트워크 통신간의 처리과정, 백그라운드 작업과정의 모든 것을 이벤트로 관리 이벤트 주도 프로그래밍(Event Driven Programming)에서는 이벤트 발생 시 이벤트 객체를 생성 이벤트 핸들러함수를 호출해서 이후 처리를 하게 된다. >뭐가 이벤트인지 어떻게 알 수 있을까? w3s에...
누구는 하드코딩으로 쓰고, 누구는 스테틱파일로 쓰고 하면 개발자들끼리도 헷갈려지기 때문에 장고가 맞춘 방식으로 다 맞춰야 한다.루트 파일의 settings.py로 가자.STATIC_URL = 'static/'실제 저장경로는 따로 써줘야 한다.루트 경로에 만들어줄거다.B
setting의 database를 보면 sqlite가 있다. 데이터베이스다. 경량이라 잠깐 테스트할 때는 이걸로도 충분하다. 그런데 우리는 sqldb로 바꿔줄거다.앱을 만들고 나면 setting에서 이름을 넣어줘야 한다.프레임워크에서 DB작업을 쉽게 처리할 수 있도록
테이블과 테이블의 관계가 1:N이든 N:N이든 이런 구분이 프로젝트 설계할 때부터 필요하다. 매우 중요!!예를 들어 상품정보를 담을 product 테이블이 하나 있다고 하자. 상품 리뷰가 써지는 테이블도 있다면product와 review의 관계는 1:Nproduct와
QnA Project 생성/환경설정 project 제작 1.언어/지역 설정 python-admin ~ 해서 앱 생성 setting 어디 가서 앱 이름 추가 ORM환경설정 데이타베이스 + 루트 먼저 만들기 Name: root@logallost(어디에 붙어있는지) us
아아.. 어제 아파서 수업을 제대로 못들었더니 많은 부분을 놓쳐버렸다... 중요한 내용 같았는데..아무튼 헐레벌떡 따라가면서 지금 배우는 거라도 정리 시작!끝에 부분을 qna/가 아니라 admin/을 치면 이런 화면이 나온다. makemigrations 뒤에 앱을 안
qna 앱에 파이썬 패키지 설치controller: 표현계층 : 사용자의 요청처리 (기존의 views.py와 비슷한 역할)entity: 업무로직 관련 핵심 데이터를 가진 클래스 모음 (기존의 models.py와 비슷한 역할) repository: 영속계층: DB 관련
5의 3제곱(승)print((5 \* 3) 2)n = 7 / 15print(round(n))print(round(n, 1))print(round(n, 2))print(math.ceil(n))0.466 -> 0.5print(math.ceil(n \* 10) / 10)1
연산자 주변의 값이 3개.참일 때 값 if 조건식 else 거짓일 때 값
if 특정 조건을 만족할 때만 코드를 실행하고, 아닌 경우는 아무것도 하지 않는 상황.시험점수가 90점 이상인 학생에게만 상품을 지급하는 경우.생일인 고객에게만 특별쿠폰을 지급하는 경우.if...else 모 아니면 도인 상황.사용자 입력정수가 홀수인가? 짝수인가?지금
원래 html을 받아서 보여주는데, 데이터를 주는 것이라고 보면 된다.동기통신 Synchronous 이란?먼저 동기화를 알아보자. 동기화는 짝을 맞추는 거다.클라이언트는 서버에 요청을 보냈다가 응답이 올 때까지 기다린다. 응답이 오면 그때 짝을 맞춰서 화면을 보게 되고
실행 코드를 가진 하나의 객체로써 선언후, 호출해서 사용한다.매개변수 : 호출 시에 전달되는 값을 담을 변수리턴값 : 함수 종료시에 호출부로 전달되는 값매개변수 | 매개인자(매개인수)parameter | argument매개변수 parameter : 함수 선언부에 작성된
Application Programming Interface서로 다른 시스템 간의 상호작용을 위한 규칙/규약 모음python api documentation 이라고 검색하면 개발자들이 모아둔 자료들이 나옴.iterable 객체의 각 요소별로 함수를 적용하고, 그 결과값
with 블럭을 벗어날 때, f.close()가 자동 반환된다파이썬 객체를 직렬화(serialize) 처리해서 바이너리(이진) 데이터로 저장텍스트에디터로는 처리할 수 없다.pickle.dump(객체, 파일)pickle.load(파일)import pickle
변수를 사용할 수 있는 유효범위를 뜻한다.전역변수 global variable : 특정 블럭 안에서도 사용이 가능지역변수 local variable : 특정 모듈, 특정 함수, 특정 클래스, 특정 인스턴스 안에서만 사용 가능한 변수함수 안에 안 들어가면 전역변수다.함수
Object-Oriented Program 객체 지향 프로그래밍객체(object)를 중심으로 프로그램을 작성하는 패러다임변수(속성)-함수(메소드)를 클래스라는 단위로 작성하고, 이를 객체화(인스턴스 instance)하는 것.캡슐화속성/메소드(함수) 묶어서 선언하고속성의
객체지향프로그래밍 OOP현실세계의 모든 사건은 객체(object)와 객체사이의 상호작용인 것에 주목한다.객체간의 상호작용을 구현하기 위해 의인화 적용된다.객체는 스스로 책임을 가지고 행동을 수행할 수 있다.🦖객체는 적절한 책임을 가질수 있도록 클래스 단위로 잘 분리해
부모클래스에 선언된 속성/메소드를 자식클래스에서 물려받아 사용할 수 있다. (자식 클래스 선언 없이 쓸 수 있음)속성 : 부모의 속성을 사용하려면, 부모 생성자를 반드시 호출해야 한다.메소드 : 부모메소드를 그대로 사용하거나, 작동방식을 고쳐 사용할 수 있다.코드 재사
추상메소드를 가진 클래스추상메소드는 자식클래스에서 반드시 오버라이드(재작성)해야 하는 메소드. 오버라이딩을 강제하는 메소드추상클래스는 인스턴스화 할수 없다.추상클래스는 abc모듈의 ABC클래스를 상속해서 작성한다.추상메소드는 abc모듈의 @abstractmethod데코
프로그램 작성 중에 확인되는 오류 Syntax Error프로그램 시작 시 발생하는 오류프로그램 도중 발생하는 오류예외 exception : 예외 처리에 의해서 핸들링(프로그램이 다시 정상실행될 수 있게 만드는 것)될 수 있는 미약한 오류오류 error : 예외보다 심각
하나의 어플리케이션 안에 하나하나가 요구사항인데 나열하면 수백개가 된다. 그래서 적절히 분리해서 actor 별로 나타낸다던지 기능별로 나타낸다던지.. 복잡해보이지 않게 해줘야 한다.결제시스템, 검색api 등 외부 시스템도 액터가 될 수 있음ex) 배달의 민족 액터 정리
그 전에 배운 Ajax request 보냈을 때 응답이 html이 아니라, data 자체(json, xml)을 받을 수 있다고 했다. '좋아요', '검색어 자동완성' 등을 해봤다.http 처음 사용할 때 인터페이스를 충분히 활용 못하는가. 왜 get, post 만 쓰는
구글에 로그인 돼있다면 다른 곳에 로그인 될 수 있게 하는 등의 방식사용자 - web app - google, naver,... 인과 서비스, 리소스 서버를 제공하는 곳 이렇게 있다면 우리가 할 역할은 web-app이다. google에 회원가입이 이미 돼있는 사용자.
aws 콘솔로그인엄청나게 많은 서비스aws 아마존웹서비스 -> 구글 -> 오라클클라우드... 4개 정도 메이저 회사들이 있다. 우리나라는 ncp 네이버클라우드가 잘 쓰인다.aws는 free tier 온라인으로 무료 제공해주는 데 너무 많이 쓰이면 유료로 제공됨가입했으면
커널이 운영체제커널로 시작해서 OS를 만들었다.배포판들도 레드햇 계열, 데비안 계열 등으로 나눠진다. 우리가 오늘 써볼 거는 데비안 계열.이걸 써볼 거면 제일 간단한 방법은 여러가지가 있는데1\. 컴퓨터 + ubuntu 직접 설치2\. OS + 가상머신3\. 클라우드
django Session 클라이언트가 서버로 요청을 보냄. request는 요청이 올 때 그리고 반환될 때 그 사이에 생명주기가 있다. 로그인 정보같은 건 이 페이지에서 저 페이지를 가도 인증 정보가 남아있어야 하는데, 그건 request와 별도로 session
가상 컴퓨터를 만들어서 돌리는 기술이 있다.예전에는 그냥 물리적인 baremetal 우리가 아는 물리적 컴퓨터가 있고 - 소프트웨어 돌리고 하는 거에서 virtual machine을 이용해서 컴퓨터 위에 컴퓨터를 돌리는 게 가능해졌다. 단점은 꽤나 무겁다는 거였다.이
동기 + 블로킹 / 비동기 + 논블로킹 이렇게 두가지 방식이 자주 쓰인다.동기(Synchronous) : 요청을 보낸 후 결과를 받을 때까지 기다린다. 현재 요청한 작업이 완료된 후에야 다음 작업이 실행된다. (HTTP 요청 후 서버 응답이 올 때까지 기다리는 방식)
우리가 사용하는 프로그래밍 언어는 python이다. 이걸로 웹앱을 만들 때, django라는 프레임워크를 사용하지만 장고만 있는 게 아니다. fastapi, flask 등 여러가지가 있다. 이걸 가지각색으로 웹앱을 만들어버리면 안되니까 구조에 대한 약속이라고 보면 된다
하려는 일 - 접속 가능한 url 배포 local에 있는 image. push를 dockerhub에 보내고, aws ec2가 이걸 pull 해온다. aws ec1에서는 django가 돌아가고 있다. 그러면 인스턴스를 통해서 url이 있는 곳에서 다 접속할 수 있다.
user가 구독 요청을 하면, 구독 정보가 push_server에 등록이 된다. user01-subscribedpush 알람을 보낼 일이 생기면, server가, push_server에게 알리 요청을 보낸다. 그러면 push_server가 user에게 알림을 전송한다.
ec2, db 따로 있어야 하고,트레픽 규모가 커지면 제어할 수 있는 로드 밸런스도 필요하다.각자 aws에서 제공한다. 하나씩 제공하기도 하는데 이걸 묶어서 제공하는 게 elastic beanstalk다.로드 밸런드스는 실제 사용자 접속이 많으면 ec2 개수를 늘려주고
fastapi는 flas framework보다 요즘 잘 쓰이고 있는 가볍고 빠른 프레임워크다.동기적 방식, 비동기적 방식이라는 규격 중에 비동기 기반의 asgi 규격을 맞춘 프로젝트다. uvicon으로 실행된다.모델 추론서버를 제공을 할 때node.js 기반의 expr
AWS EB는 DNS 작업을 ROUTE53으로 제공하고 있다.참고) Router53은 호스팅 영역당 0.5달러다. 프리티어 없음.호스팅 영역 구성도메인 이름 (구매한 도메인 이름 작성)호스팅 영역 만들기ex) abc.com hostingabc.com에 대한 hostin
웹서버와 fastapi 추론서버가 있다고 하고리뷰를 쓰면 '맛있다' 하면 '맛있게 드셔주셔서 감사합니다' 긍정적 피드백을 주고 부정적인 글이 올라오면 '더 열심히 하겠습니다' 대응할 수 있게 가정하고 진행해보자.사용자는 장고 서버랑만 통신을 한다. 리뷰를 썼을 때 그