본문 바로가기

전체 글

(80)
공식 문서로 배우는 Kotlin - 5. Basic Types - Unsigned integer types 다섯 번째, 부호 없는 정수 타입입니다. 정수 타입에 더하여, Kotlin은 부호 없는 정수를 위한 타입을 다음과 같이 제공합니다. 타입 사이즈(bits) 최솟값 최댓값 UByte 8 0 255 UShort 16 0 65,535 UInt 32 0 4,294,967,295 (2^32 - 1) ULong 64 0 18,446,744,073,709,551,615 (2^64 - 1) 부호 없는 정수 타입들은 그에 대응하는 부호 있는 타입들이 제공하는 연산들 대부분을 지원합니다. 부호 없는 정수 타입은 해당 타입에 대응하는 같은 길이의 부호 있는 타입을 단일 저장 프로퍼티로 갖는 인라인 클래스로 구현됩니다. 부호 없는 타입과 부호 있는 타입 상호 간에 변환해야 한다면, (두 타입은 서로 다르므로) 모든 함수 호출..
공식 문서로 배우는 Kotlin - 4. Basic Types - Numbers 네번째는 Concepts 부분으로 넘어와서 기본 타입 - 숫자입니다. Kotlin에서는 어떤 변수든 멤버 함수와 프로퍼티를 호출할 수 있다는 면에서 모든 것이 객체입니다. 특정 타입들은 실행시에 내부적으로 원시 타입(숫자, 문자, 불리언 등)으로 최적화 되기는 하지만, 외형이난 사용면에서는 일반적인 클래스와 같습니다. 자연스러운 개념일 수도 있으나 언어 차원에서 원시 타입이 없이 모든 것을 객체로 본다는 개념은 기억하는 것이 좋습니다. 이 개념을 기본적으로 염두에 두고 있으면 추후 동반 객체 등을 이해할 때 도움이 됩니다. 꼭, 기억해 두시기 바랍니다. 타입(type) vs 형(形) 타입과 형(形) 모두 같은 말이지만, OOP에서 객체의 유형을 얘기할 때 보통 형보다는 타입이라는 말을 많이 쓰고, Kot..
공식 문서로 배우는 Kotlin - 3. Basics - Coding conventions 세번째, 코딩 규칙입니다. 프로그래밍을 할 때 일관되고 쉬운 코딩 규칙을 따르는 것은 여러모로 중요합니다. 예전에는 같이 협업하는 개발자들끼리 서로 상의하여 정해 놓고 쓰기도 했지만, (대표적으로 Python의 PEP-8처럼) 요즘 언어들은 코딩 규칙을 공식 문서에서 제공하기 때문에 비교적 쉽게 공통적인 코딩 규칙을 따를 수 있습니다. 코딩 규칙을 따르게 되면 일관된 규칙으로 가독성을 높이고 인적 실수를 줄일 수 있기 때문에 특정 언어를 처음 배우는 경우라면 반드시 코딩 규칙을 (적어도 한 번 이상) 읽어 보는 것이 좋습니다. 소스 코드 구성(organization) 디렉토리 구조 순수한 Kotlin 프로젝트에서 권고되는 디렉토리 구조는 공통 루트 패키지를 생략한 패키지 구조를 따르는 것입니다. 예를 들..
공식 문서로 배우는 Kotlin - 2. Basics - Idioms 두번째, Idioms입니다. Kotlin에서 자주 사용되는 관용어구 모음입니다. 코틀린 코딩 패턴이라고도 볼 수 있는 내용입니다. 일반적으로, 따라주시면 좋습니다. 공식 문서 내용에는 좋은 idiom이 있는 경우 PR(Pull Request)을 달라고 적혀 있기도 합니다. 이 부분은 이런 경우 이런 식으로 쓴다는 관용적 표현을 설명하고 있기 때문에 문법에 대한 상세 설명은 나오지 않는 편입니다. 언어가 지향하는 관용적 표현(패턴)을 습득하는 것은 해당 언어에 빠르게 익숙해지는 한 방법이라고 할 수 있습니다. 그러므로, 이 부분에서는 상세 내용보다는 패턴에 초점을 맞추어서 보시면 될 거 같습니다. DTO (POJOs/POCOs) 만들기 data class Customer(val name: String, v..
공식 문서로 배우는 Kotlin - 1. Basics - Basic syntax Kotlin을 공식 문서를 통해 배우는 글 연재를 시작합니다. 공식 문서의 Basics와 Concepts 부분을 다루려고 합니다. 기본적으로 공식 문서의 내용과 순서대로 1대 1 번역 수준으로 진행되며, 필요에 따라 내용이 첨삭될 예정입니다. Basics와 Concepts 부분은 Kotlin의 기본 내용이기도 하고, JVM하에서 Kotlin을 사용하는 경우라면 필수로 읽어 봐야 하는 내용이기도 합니다. Kotlin 기본 문서는 묵시적이지만 어느 정도 Java와 프로그래밍에 익숙한 사람이 보는 것을 전제 하는 듯 합니다. 그래서, 처음 프로그래밍을 시작하는 분들에게는 적합하지 않습니다. 이 연재도 공식 문서를 1대 1 번역하는 식으로 진행되기 때문에 프로그래밍을 시작하시는 분들에게는 적합하지 않을 수 있습..
FastAPI에서 openai의 stream을 text/event-stream으로 반환하기 Backend router = APIRouter(tags=['foo'], prefix='/foo') class FooRequest(BaseModel): message: str @router.post('') def respond(args: FooRequest): return StreamingResponse(ask(args.message), media_type='text/event-stream') def ask(question): stream = chat.completions.create(...) # openai 인스턴스화 및 세부 호출 내용은 생략 for chunk in stream: if chunk.choices[0].delta.content is not None: yield chunk.choices[0..
Upstage Solar API 사용해 보기 Upstage(이하 업스테이지)의 LLM인 Solar의 API가 베타 공개를 했다는 기사를 접하고 한 번 사용해 보기로 했습니다.업스테이지는 전부터 주목 및 기대하고 있던 회사인데요, Solar는 허깅페이스의 LLM 리더 보드에서 1등을 하기도 했다고 합니다(모델에 대한 자세한 내용 여기에서 확인할 수 있습니다).https://console.upstage.ai 에 접속해서 가입을 하고 나면, 베타 버전을 사용할 수 있는 Access Key가 발급됩니다. 이 키를 가지고 사이트에서 제공하는 예제를 따라 하면 바로 결과를 확인할 수 있습니다.사이트에서는 아래와 같이 예제를 제공하고 있습니다.서버 API이기 때문에 당연히 기본적으로 HTTP 프로토콜로 접근이 가능하고요, openai, langchain, ll..
라즈베리파이를 사용한 음성 전달 웹앱 만들기 가끔 안방에서 거실에 있는 아이들이나 아내를 부를 때 말로는 잘 안 들릴때가 있습니다.  특히, 문이 닫혀 있는 상황에서는 크게 고함을 쳐도 잘 전달되지 않을 때가 많습니다. 그런 경우 결국은 일어나서 문을 열고 가서 직접 얘기를 해야하죠. 귀차니즘으로 전화를 걸 때도 있는데, 집에서 모두가 계속 전화기를 들고 있지는 않으므로 휴대전화도 유용하지는 않습니다. 마땅한 방법이 없을까 생각하다, 마침 놀고있는 라즈베리파이(3b 모델)가 있길래 방치된 스피커를 하나 찾아서 웹앱을 하나 만들기로 했습니다. 웹앱의 기능은 처음에는 TTS(Text To Speech) 기능을 생각했습니다. 웹페이지에서 텍스트를 입력하면 이를 TTS  기능으로 음성파일로 변환하고 그 파일을 플레이하여 연결된 스피커로 출력하는 것입니다...