개발일지/잡다한 IT지식 7

DALL.E 2 prompt 참고서

DALL.E로 사진을 만들고 있는 와중에 더 좋은 사진을 얻고 싶어 promp를 더 잘 사용하는 방법을 찾던 중 아래 사이트를 발견했습니다. https://pitch.com/v/DALL-E-prompt-book-v1-tmd33y/ac8c000d-7e6c-49a5-b6f6-51541b1013e1 The DALL·E 2 prompt book pitch.com 14페이지부터 예시 내용이 나옵니다. 저는 예시로 나와있는 내용은 아주 약간만 수정했습니다. a great photograph of subject, wide shot, outdoors, joyful, sunset photo at golden hour, Tilt shift photography, soft focus

chatGPT

https://openai.com/blog/chatgpt/ ChatGPT: Optimizing Language Models for Dialogue We’ve trained a model called ChatGPT which interacts in a conversational way. The dialogue format makes it possible for ChatGPT to answer followup questions, admit its mistakes, challenge incorrect premises, and reject inappropriate requests. ChatGPT is openai.com 제 개인적인 생각입니다. chatGPT 는 open ai에서 만든 ai로 대화형식으로 사용하..

http multipart

일을 하던 중에 tcp서버로 받은 센서 값을 사진과 함께 서버로 http 통신을 사용하여 넘겨주는 일을 맡았습니다. 이를 해결하기 위해 http multipart를 사용했습니다. multipart란 해석 그대로 '여러 부분'이라는 뜻입니다. 쉽게 설명하면 파일과 문자를 같이 서버에 post방식(사진은 용량이 커 GET방식 사용 불가)으로 넘겨주어야 하는 일이 발생합니다. 기본적으로 post는 하나의 타입만 보낼 수 있습니다. 이를 해결하기 위해 나온 것이 MULTIPART입니다. 이는 text부분의 공간과 file 부분의 공간을 나누어 보내는 방법을 사용합니다. 이 방법으로 한번에 다른 형식의 데이터를 보내 리소스를 줄일 수 있습니다.

mvp 디자인 패턴

mvp디자인 패턴은 model, view, presenter 의 줄임말입니다. 기존의 mvc패턴은 간단하다는 장점이 있지만, model과 view의 종속성이 높아 프로그램이 커질수록 관리가 힘든 단점이 있습니다. 이 문제를 보완하고자 만든 디자인이 mvp 패턴입니다. 이 두 패턴의 차이점은 데이터를 view에 데이터를 뿌려주는 존재의 차이입니다. mvc패턴에서 controller가 view를 선택하면 model에서 필요한 데이터를 view에 직접 뿌리는 과정을 사용했습니다. 그 과정에서 model과 view의 종속성이 커지게 됩니다. 이는 유지보수가 힘든 원인이 됩니다. 하지만 mvp패턴은 presenter가 model에서 데이터를 받아 view에 직접 뿌려줍니다. 이 과정에서 model과 view의 종..

mvc디자인 패턴

mvc패턴은 Model, View, Controller의 약자이다. 이 패턴이 필요한 예시로 만약 spring mybatis을 사용하여 back을 만들었고, front를 jsp로 만든 웹이 있다. 하지만 어느 순간 웹을 앱으로 만들어야 할 순간이 왔다. (하이브리드 앱으로 만들 수 있기도 하다.) 이러한 경우 이 디자인 패턴이 도움이 된다. jsp로 만든 view를 java안드로이드, 플러터, 리엑트 네이티브 등으로 바꿀 수 있다. 그 이유는 model(back)과 view(front)를 controller로 분리하였기 때문이다. 또 간단한 이미지 처리 같은 작업은 model까지 갈 필요 없이 controller에서 처리하여 더 빠른 처리 속도를 보여준다. Model은 데이터를 직접 받아오는 back의 ..

동기적 처리와 비동기적 처리

대부분의 프로그램 언어가 위에서 아래로 쓴 코드를 읽고 중간에 오류가 있으면 오류를 보낸다.(동기적 처리 == 순차적 처리) 여기서 문제가 일어날 수 있다. 만약 내가 웹을 만드는 중 데이터를 처리해야 하는 경우가 발생한다. 코드를 다 만들었는데 원하는 데이터가 안 오면, 그다음 코드로 넘어가지 않아 서버나 화면이 나오지 않는다.(json을 사용하여 정보를 받을 경우 try/catch문을 구현하라고 나오기도 한다. 하지만 try/catch는 다음 코드로 넘어가 데이터가 도착해도 다시 돌아오지 않는다.) 이를 막고자 데이터가 도착하지 않아도, 다음 작업을진행하도록 하는 문법이 비동기적으로 처리하는 문법이다. 데이터가 도착하면 넘어간 부분으로 돌아와 데이터가 필요한 곳에 그 데이터를 집어넣어 페이지를 완성한..

큐(queue)와 스택(stack)

큐와 스택은 둘 다 배열이다. 일반적인 배열과는 다르게 배열에 넣는 순서와 나오는 순서가 정해진 특별한 배열이다. 스택(stack)은 아래의 그림처럼 작용한다. 배열에 넣을 때는 push함수를 쓰고, 뺄때는 pop함수를 쓴다. 여기서 스택의 특별한 성질이 나오는데 LIFO(Last In First Out)구조이다 . 한마디로 마지막에 넣은 것이 먼저나오고 처음 넣은 것이 마지막에 나온다는 것이다.(총의 탄창같이) 큐(queue)는 아래의 그림처럼 나온다. 배열에 넣을 때는 enqueue함수를 쓰고, 빼낼 때는 dequeue를 사용한다. 큐는 FIFO(First In First Out)구조로 처음에 넣은것이 처음으로 나온다.(종이컵 디스펜서처럼) 처음에는 이 그림처럼 위에서 아래로 또는 오른쪽에서 왼쪽으로..