목록dev/까먹지마 (15)
Ssul's Blog
요즘 텍스트 데이터는 마크다운과 이모지의 향연이다.당연히 해당 텍스트 데이터를 그대로 잘 표현해야 한다. 그럼 SwiftUI는 알아서 잘 표현 할 것인가?SwiftUI의 마크다운 표현 가능 여부를 알아보자. 후보#1. Text- 별도의 라이브러리 설치없이 사용가능하다- iOS 15부터 가능하다import SwiftUIstruct MarkdownTextView: View { let markdownString = """ # 제목 1 ## 제목 2 **굵은 글씨**, *기울임*, `코드` - 리스트 아이템 1 - 리스트 아이템 2 [링크](https://www.apple.com) """ var body: some View { ScrollView { ..
1. StateObject- view가 인스턴스를 생성하고 소유함- 보통 ViewModel이 해당 뷰에서만 쓰이거나, 상위뷰에서 초반에 전역으로 사용할 인스턴스 생성할때 사용 struct MyView: View { @StateObject var viewModel = MyViewModel()}//상위에서 생성해서 보낼때 사용struct TmpApp: App { @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate @StateObject var container: DIContainer = .init(services: Services()) var body: some Scene { WindowGroup { ..
1. 내가 이해하는 직렬화, 역직렬화 구분- A: 사람이 읽기는 어렵지만, 기계에게 효과적인 데이터(예: 0xB0, 0xA0)- B: 사람이 읽기는 편하지만, 기계에게는 비효율적인 데이터(예: {"id": 1, "contents": '첫번째 글'}) 직렬화: B -> A (dict -> bytes): 조금더 배우고나서 적음 > dict > byte역직렬화: A -> B(bytes -> dict): 조금 더 배우고나서 적음: byte > dict > 객체 2. Django에서 직렬화 이해(GET과정)DB에서 인스턴스 가져오기ins0 = Comment.objects.all()[0]serializer에 넣어서 dict객체로sr = CommentSerializer(instance=ins0) #instance에 ..

간단한 API서버는 EC2로 만드는 것보다, Serverless로 하는게 간편하고 좋다.AWS Lambda를 사용해서, gpt-4o-mini와 소통하는 api를 만들었는데... 계속 Layer연결에서 에러가 나서... 남겨놓는다.(나의 4시간ㅜㅜ) 우선 lambda로 serverless를 구현하는데는 총 3가지 작업이 있다.1. 람다 함수 코딩2. Layer연결(python 개발시 설치되는 라이브러리들을 lambda로 가져오는 작업. layer없이 import openai하면, 해당 모듈이 없다고 뜬다)3. api gateway연결 위 3단계의 내용은 https://issul.tistory.com/438 요글에 코드와 함께 잘 나와있다. 오늘은 실리콘 맥에서(m1부터~) Layer구성하는데 시행착오를 남..

1. Docker Image- 벽돌을 찍어내는 거푸집- 예: redis/python을 설치 한 우분투(운영체제) 거푸집, httpd거푸집 등 2. Docker Container- 이미지(거푸집)으로 찍어낸, 실제 인스턴스- 예: redis/python을 설치 한 우분투(운영체제), httpd서버 (참고) 간단 사용예시도커를 설치 후 아래 명령어를 입력하면,docker run httpd①나의 local 컴퓨터에서 httpd이미지를 찾는다. 없으면②퍼블릭 도커허브에서 해당이미지(latest)를 가져온다③가져온 이미지로 컨테이너를 제작한다④제작된 컨테이너를 실행한다 3. Container로 서비스 실행docker run httpd를 실행하면, 내 local에서 image찾고, 없으면 public허브에서 찾아..
#1. arg 이해 *arg는 함수에서 가변 인자를 받을 때 사용됨. 즉, 함수를 호출할 때 명시한 인자의 개수에 상관없이 모든 인자를 리스트 형태로 함수 내에서 사용할 수 있게 함 . *arg는 함수의 인자 중에 마지막에 위치해야함. def sum_numbers(*numbers): result = 0 for num in numbers: result += num return result print(sum_numbers(1, 2, 3, 4)) # 10 출력 #2. **kwarg **kwarg는 함수에서 키워드 인자를 받을 때 사용. 즉, 함수를 호출할 때 인자를 키워드와 함께 전달할 수 있음. **kwarg는 인자를 딕셔너리 형태로 함수 내에서 사용. 다음은 **kwarg를 사용한 예시 def print..
인증의 3가지 종류 쿠키: 클라이언트(브라우저)에 쿠키값이 저장 세션: 세션값이 서버에 저장되는 것 토큰: 서버 호출시 토큰 전달, 서버에 저장된 토큰정보로 인증 확인 쿠키인증 프로세스 클라이언트가 request(id & pw) → 서버가 로그인 체크하고 성공이면 → 서버에서 쿠키값 생성 서버에서 클라이언트로 쿠키값 보냄(response.headers에 set-cookie 값을 보냄(Set-Cookie: =)) 클라이언트는 response.headers에 있는 쿠키를 브라우저에 쿠키값 저장(= 앞으로 서버 소통시 브라우저가 쿠키값을 가지고 있어서 소통가능해짐 세션인증 프로세스 클라이언트가 request(id & pw) → 서버가 로그인 체크하고 성공이면 → 인증정보 생성하여 세션 저장소에 저장 유저에 s..
매번 사용할때마다 구글찾아 검색하는 쿼리셋 명령어. 오늘은 자주 찾았던 명령어들 몇개를 정리해보고자 한다. 0. 우선 모델 정리 습관을 인증하는 서비스로, User, Habit, HabitLog 3개의 모델이 있다 User는 사용자 정보가 있으며, Habit은 습관을 생성한 유저정보를 외래키로 참조하고, 습관명, 해당월 등으로 구성 HabitLog는 인증한 습관을 외래키로 참조하고, 날짜와 사진으로 구성된다 목표는 월별, 전체기간별 습관인증 횟수를 카운트하는 api를 생성하는 것이다. #models.py #사용자 class User(BaseUser, SoftDeleteModelMixin): name = models.CharField(_("name"), max_length=150) image = model..
__init__ : 클래스 생성시 처음 호출함 class Person: def __init__(self): print(self, 'is generated') p1 = Person() #이때 __init__함수 호출 class Person: def __init__(self, name, age): print(self, 'is generated') self.name = name self.age = age p1 = Person('cis', 30) #이때 __init__함수 호출 self : 파이썬의 모든 메소드의 첫 파라미터, 클래스로 생성된 객체 a = Person('ccc', 20) b = Person('bbb', 30) print(a) print(b) #메모리상의 주소 출력. 그 주소가 self라고 보면 ..
| 상속 구조 View를 상속받아 APIView APIView를 상속받아 GenericAPIView(*Generic 테이블처리(get queryset, get object)) GenericAPIView + CreateModelMixin = CreateAPIView(C, POST) GenericAPIView + DestoryModelMixin = DestoryAPIView(D, DELETE) GenericAPIView + ListModelMixin = ListAPIView(R, GET) GenericAPIView + RetrieveModelMixin = RetrieveAPIView(R, GET) GenericAPIView + UpdateModelMixin = UpdateAPIView(U, PUT(전체-필수..