전체 글 15

[Rust] 에러 처리

러스트에서 에러는 복구 가능한(recoverable) 에러와 복구 불가능한(unrecoverable) 에러 두 가지가 존재한다. 러스트는 다른 프로그래밍 언어에서 사용하는 예외처리 기능이 없고 Resut 타입과 panic! 매크로를 사용해 에러를 잡는다. 복구 불가능한 에러는 panic! 매크로를 사용해 해결한다. 패닉을 일으키는 방법은 다음과 같다. 1. 코드가 패닉을 일으키는 동작을 할 때 (예시: 배열의 마지막 인덱스를 넘어선 접근) 2. panic! 매크로를 명시적으로 호출할 때 패닉이 발생하면 실패 메시지를 출력하고 unwind한 뒤 스택을 청소하고 종료한다. 패닉의 근원을 찾기 위해 호출 스택을 볼 수도 있다. 참고로 패닉 발생 시 unwind가 시작되면 스택을 훑어가며 데이터를 청소하는 과정..

카카오톡 챗봇 실습 2

카카오톡 챗봇의 콘셉 기본 정보 설정 단계, 기능 함수 구현 단계, 서버 생선 단계, 메인함수 구현 단계 카카오톡 서버는 응답시간이 5초를 넘어가면 답변을 차단함 -> 우리가 chatGPT와 api통신하고 돌아오는 것을 5초 안에 하지 않으면 답변할 수 없게 되는 것 ㅜㅜ 해결방안 1. 관리자 센터에 응답 시간을 늘려 달라고 요청 (챗봇 관리자센터 도움말 참고) 2. 사용자에게 일정 시간 지난 후 다시 질문해달라고 요청 (오래 걸리는 메시지의 경우 로컬 서버에 임시 저장해놓은 후 보내주는 방식. 이렇게 하기 위해서는 사용자가 누를 수 있는 버튼 하나 더 제공해야 함, 버튼은 응답 시간 연장을 위함) textResponseFormat: chatGPT의 답변을 카톡 서버로 전달하는 함수 imageRespon..

카테고리 없음 2024.01.10

카카오톡 챗봇 실습 1

두가지로 구현해봄. (로컬PC, AWS) 1. 카카오채널 생성 카카오 비즈니스 홈페이지 접속 후 채널과 챗봇 생성하기 2. 로컬 PC와 카카오톡 서버 연결 - FastAPI 활용해 로컬 서버 생성하기 - ngrok 활용해 외부에서 로컬 서버에 접속할 수 있는 주소 생성하기 - 카카오톡 챗봇 관리자 센터에서 카카오톡 서버와 로컬 서버 연걸하기 uvicorn 서버 실행하기 $ $ uvicorn 01_kakaobot_server:app --reload ngrok.exe 실행 후 cmd에서 두 줄 입력하기 $ ngrok authtoken $ ngrok http 8000 카카오톡 챗봇 관리자 -> 스킬 -> 스킬 목록 -> 생성 -> ngrok에서 만든 주소 입력 ** 이 때 '스킬서버로 전송' 버튼을 눌러서 V..

카테고리 없음 2024.01.10

You seem upbeat this morning!

You seem upbeat this morning! 오늘 기분 좋아보이는 구나! 미드 S1E1에 나온 대사이다. 네이트의 아버지가 네이트와 함께 아침 조깅을 하면서 아들에게 한 말인데 upbeat라는 단어의 쓰임새를 잘 보여주는 문장이다. upbeat는 '쾌활한, 발랄한, 긍적적인'이라는 뜻이다. 기분이 좋다는 의미의 형용사는 good, great, nice, positive 정도 생각나는데 upbeat라는 단어를 사용해도 너무 좋을 것 같다. upbeat를 활용해 영작 몇 개 해보자. 1. When makes you upbeat these days? 요즘 너를 기분 좋게 만드는 건 뭐야? 2. I'm upbeat now because I'm on my way to my friend. We haven'..

[Rust] 0109 공부한 내용

1. 러스트의 변수 러스트에서 변수는 다른 프로그래밍 언어와 다르게 기본적으로 불변(immutable)이다. 변할 수 있는 수라서 '변수'인 건데 디폴트로 불변성을 가진다는 것이 특이하다. 만약 어떤 변수를 나중에 값을 변경할 수 있도록 만들고 싶다면 선언 시 'mut'를 붙여줘야 한다. let apple = 5 // immutable let mut apple = 10 // mutable io()::stdin().read_line(&mut guess) 여기서 guess의 참조 변수에도 mut를 해줘야 사용자가 입력한 값을 string에 추가할 수가 있음. 2. 구문과 표현식의 차이 - 구문: 어떤 동작을 수행하고 값을 반환하지 않는 명령 - 표현식: 결괏값을 평가함 코드 블록은 블록 안의 마지막 표현식을..

[Rust] 공부 시작

블록체인 학회 활동을 시작한지 어느덧 한 학기가 지났다. 여태 블록체인에 대한 개념만 익혔기 때문에 이번 방학부터는 본격적으로 개발에 시간을 쏟으려 한다. 우선 종강하자마자 파이썬을 배우고 장고까지 한번 훑었다. 백엔드와 프론트엔드 중 어느 쪽이 더 적성에 맞을지 몰라서 백엔드 개발을 빠르게 경험해보고 싶었는데 장고가 이에 적격이었다. (장고도 러닝 커브가 있지만 스프링에 비하면 훨씬 적다는 생각) 깊게는 아니지만 장고로 MTV를 개발해보니 백엔드가 참 재밌게 느껴졌다. 2학기에 네트워크, 자료구조 등의 전공 수업에 흥미를 느꼈던 것도 같은 맥락같다. 그래서 3월 전까지 백엔드를 깊게 파보기로 결심했다. 그리고 Rust로 이 공부를 해보려고 한다. 러스트(Rust)는 생겨난지 얼마 안 된, 신생 언어이다..

패스트캠퍼스 - Solidity로 시작하는 이더리움(EVM) 기반 블록체인 개발A to Z 수강 후기

- 본 게시물은 패스트캠퍼스 수강 후기 이벤트 참여를 위해 작성되었습니다 - 수강후기 블록체인에 대해 관심을 가지고 난 뒤 가장 먼저 패스트캠퍼스의 'Solidity로 시작하는 이더리움(EVM) 기반 블록체인 개발A to Z' 강의를 신청했습니다. 커리큘럼을 읽어봤을 때 블록체인에 대해 잘 모르는 입문자도 이 강의를 통해 블록체인 개념부터 개발까지 전반에 대해 지식을 쌓을 수 있을 것 같았습니다. 사실 그만큼 강의 분량도 어마어마하게 많습니다;; 그렇지만 한 분야에 대해 공부하려면 이 정도 노력은 들여야 한다고 생각합니다.. 오히려 자세히 다 다뤄주는 것이기 때문에 매우 만족하면서 수업을 듣고 있습니다:) 수업을 들으며 각 강의마다 내용을 구조화하기 위해 손으로 필기 노트도 따로 적고 있습니다. 나중에 ..

쉽게 배우는 운영체제(2판)- 1장 정답

책 정보 : 쉽게 배우는 운영체제 : 네이버 도서 네이버 도서 상세정보를 제공합니다. search.shopping.naver.com 올해 1월에 출시된 '쉽게 배우는 운영체제(개정판)'을 읽고 있다. 해당 교재는 대학 강의용이라서 아쉽게도 연습문제 해답이 제공되지 않는다ㅜㅜ 그래도 1판은 출시된지 꽤 시간이 지나서 구글링하면 풀이가 꽤 있던데 2판은 아예 없다.. 그래서 1장부터 순서대로 문제와 답을 적어보려 한다. 연습문제는 한 챕터가 끝날 때마다 나온다. 혼자 공부한 대로 풀어본 다음, 책의 내용과 비교해서 최대한 올바른 답을 적으려 노력할 것이다. 그러나 '정답'이 공개되지 않았기 때문에 100%를 보장하긴 힘들다. (참고용으로 사용하시는 게 좋을듯 하다) 1장. 운영체제와 컴퓨터 01. 소프트웨어..

독하게 시작하는 C 프로그래밍 - 챕터 4 연습문제

챕터4. 연산자-기본 1번) 연산의 중첩에서 '임시 결과'는 일련의 연산 과정에서 앞선 연산의 결과를 말하며 후순위 연산의 대상이 된다. 이 임시 결과의 특징은 연산이 끝나면 바로 유실된다는 점이다. 2번) char형 자료와 int형 자료를 연산하면 type promotion에 따라 int형으로 임시 결과가 나온다. 3번) 2번과 같은 내용을 '형승격'이라고 하며 자료형이 다른 피연산자 간 연산을 실행할 때 표현 범위가 더 넓은 것을 따르게 됨을 말한다. 4번) 5/2 연산 결과는 int 2이다. 5번) 사용자로부터 정수를 입력받은 후 5로 나눈 나머지값을 출력하는 프로그램을 작성하면 다음과 같다. #include int main(void) { int n = 0; printf("정수를 입력하시오: ");..