Android 실시간 HTTP Stream UI 구현하기 (Retrofit2 -> OkHttp + Nginx 설정 문제!)
·
Android
Summary_ 안드로이드 앱 챗봇 화면에 ChatGPT처럼 실시간 Stream을 사용하여 chunk 단위로 끊어서 오는 UI/UX을 구현하고자 시도하며, 기존의 Retrofit의 한계를 파악했습니다. 이는 Retrofit이 OkHttp 동작을 추상화하면서 내부적으로 Proxy 객체를 사용하기 때문인데, 이전에 이론적으로 공부했던 Retrofit의 내부 동작과 이어지는 한계점을 개발 도중에 직접 마주하고 해결할 수 있었습니다. 결국, OkHttp Client에서 chunk를 받아와서 text에 chunk가 추가 될 때마다 변화를 ViewModel에서 관찰하는 방식으로 실시간 Streaming UI를 구현할 수 있었습니다. (+ Nginx 설정도 바꿔줘야 합니다!) 🧩 문제 상황: "Chunk 단위로 뜨..
[SQLD] 유베이스 전공자 3시간컷 합격 후기
·
Daily
이 후기는 유베이스 + 평소에 개발하면서 DB 공부를 한 경험이 있는 전공자(?) 입장에서 작성된 후기입니다.시간이 없어서 전날 3시간 투자해서 공부하고 합격한 task를 정리하겠습니다. 얼마나 베이스가 있는지.. 혹은 본인 현재 상태에 따라서 부족한 점을 추가하면서 공부하면 될 것 같습니다. 본인 특징- 학부 때 DB 수업 A+ (이었지만 개발하다보면 학부 수업 수준은 정말 의미 없다는걸 느낍니다..)- 노랭이 책 안삼 (표지만 앎... 유베이스라면 책 없이 인터넷 자료만으로도 가능)- Real My SQL 1권 완독한 경험 있음- 개발할 때 쿼리 최적화 생각하려고 노력하는 편 (중요) 시험 전 3시간을 어떻게 썼냐첫 30분인터넷에서 잘 정리된 pdf 개념 요약본을 올리시는 분들을 찾아서 pdf 몇 장..
[Books] 단위 테스트의 기술 Review
·
Books
더보기최근 길벗 IT 부서에서 주최하는 개발자 도서 리뷰 모임에 참여하게 되었다. 평소에 Kotlin 관련 도서를 직접 사서 읽곤 했는데, 이번에는 테스트 관련 서적인 "단위 테스트의 기술"을 제공받아 읽게 되었다. 특히, 코드 리뷰와 TDD(테스트 주도 개발)에 대한 깊이 있는 내용을 읽을 수 있었다. 1. 테스트의 3가지 종류이 책에서는 테스트의 개념과 중요성에 대해 다룬다. 우리가 흔히 아는 테스트에는 다음과 같은 세 종류가 있다.단위 테스트(Unit Test)통합 테스트(Integration Test)E2E(End-to-End) 테스트특히, 이 책은 단위 테스트에 초점을 맞추고 있으며, 최근 개발자 커뮤니티에서 지속적으로 논의되고 있는 TDD(테스트 주도 개발)와 관련된 내용도 다룬다.2. 테스트..
2. 코루틴 실행하기
·
Coroutines
출처: 조세영님의 인프런 강의, 코틀린 코루틴 강의 완전 정복  runBlocking 사용해서 코루틴 만들기runBlocking 함수는 이 함수를 호출한 스레드를 사용해 실행되는 코루틴을 만들어낸다.runBlocking 코루틴이 종료될 때 스레드 점유가 해제된다. run(실행) + Bloking(차단)하지만 여기에서 쓰인 Blocking의 의미는 스레드 블로킹이 일어나서 스레드가 사용되지 못하는 상태를 칭하는 것이 아니다. 블로킹(차단)을 통해 다른 작업을 가능하게 해준다는 의미로 쓰인 것이다.runBlocking을 사용하여 코루틴을 생성한 후 launch를 사용해 또 다른 코루틴을 생성할 수 있다. lauch를 통해 생성하는 이유는, 동기적인 코드와 코루틴(코루틴은 기본적으로 비동기적)을 함께 사용할 ..
1. 스레드 기반 작업의 한계와 코루틴의 등장
·
Coroutines
출처: 조세영님의 인프런 강의, 코틀린 코루틴 강의 완전 정복 강의의 첫 번째 실습에서는 메인 스레드에서 새로운 스레드를 생성하여 멀티 스레딩 동작을 파악했다. 두 스레드의 동작을 출력하여 스레드의 시작과 끝 시점을 파악했다. 자바에서 자주 사용하는 방식의 코드를 실행한 후, 코틀린의 람다 형식으로 간단하게 변경했다.그러나 Thread를 직접 생성하여 사용하는 방식에는 한계가 존재한다. Thread start를 호출할 때마다 새로운 스레드가 생성되고 재사용이 어렵다 (스레드는 비싼 자원이므로 치명적인 단점)개발자가 스레드 생성과 관리에 대한 큰 책임을 진다 (실수나 오류로 메모리 누수 위험이 있고, 프로그램이 복잡해질수록 관리하기 어려움) 해당 문제를 해결하기 위한 방법으로 Executor 프레임워크가 ..
[삼성 역량 테스트 준비] ~ 수정 중
·
SSAFY/Algorithm
보호되어 있는 글입니다.
[Kotlin 완벽 가이드] 문자열 다루기
·
Kotlin
문자열 템플릿기본적으로 ${}의 중괄호 사이에 넣기만 하면 어떤 코틀린 식이나 변수든지 문자열에 넣을 수 있다.import java.util.Datefun main(){ val name = readline() println("Hello, $name! \n Today is ${Date()}")}예제와 같이 name이라는 간단한 변수에는 중괄호 없이 달러 기호로만 사용이 가능하다.문자열 템플릿 안의 식은 어떤 값이든 될 수 있고, 이 값은 자동으로 모든 코틀린 타입이 제공하는 toString() 메서드를 통해 문자열로 변환된다.trimIndent() 라는 메서드는 여러 줄에 공통된 최소 들여쓰기를 제거해주는 표준 코틀린 함수이다. 문자열 비교문자열은 사전식 순서로 정렬되기 때문에 , = 와 같은 연산자..
[아이디어톤] 웹/앱 서비스 프로토타입 만들기
·
SSAFY
이전에 아이디어톤을 위한 사전 조사를 진행했다.더보기피그마 AI, Creatie AI 등을 활용한 프로토타입+ 피그마 AI beta 버전 대기 중 https://help.figma.com/hc/en-us/articles/4406787442711-What-Figma-features-are-in-betaUizard https://maily.so/dailyprompt/posts/d83b725d 🔎 Daily Prompt #34: 텍스트만 입력해서 자동으로 앱 디자인하기(Uizard AI)오늘의 프롬프트가 도착하였습니다.maily.soAI 앱 디자인 generate 가능 (beta ver.) 해커톤에서 팀원들과 할 수 있는 활동1. App 컨셉 잡기, 키워드 정리하기 - 컨셉, 니즈, 대상을 고려하여 main..
GDSC EWHA {DEMO DAY} 24.06.24
·
Daily
오늘은 종강한 지은 언니랑 GDSC EWHA 데모데이 발표를 들으러 왔다.예전에 토이 프로젝트를 하면서 한 팀으로 만났던 벗이 이번에 GDSC에 들어가서 백엔드 파트로 이것저것 무언가를 개발하는 것 같았다. 학생들의 개발 결과물이 궁금하기도 했고 GDSC에서 무슨 일을 하는지 궁금하기도 했다. 물론 나는 이제 졸업이라 학교 행사에 더 자주 참여하기는 어렵겠지만 시간이 남을 때 행사라도 많이 다니자는 마음으로 참석했다.   OpeningGoogle I/O 에서 나온 기술들을 학생 입장에서 톺아보고, 어떤 부분을 활용/적용 할 수 있을지 살펴보는 시간을 가진다고 한다. 개인적으로 나도 해당 컨퍼런스에 관심이 있었는데 소개된 기술을 직접 활용하려는 시도는 안해봤다. 역시 한 단계 더 실행하는 사람들이 있구나 ..
[SSAFY 12기 합격 후기] 면접 준비 과정, 면접 스터디
·
SSAFY
이전 후기글에서 면접 스터디를 총 3개 운영했다고 했는데, 개인적으로 타이트한 일정이었지만 충분히 도움이 됐다고 생각한다. 각 스터디의 장점을 간략하게 정리해보면 다음과 같다.1. 지역 대면 스터디 : 집과 가까운 장소에 모여서 이동 시간을 절약하면서 충분히 연습할 수 있다. 서로 모르는 사람들이 모이기 때문에 이전에 고려하지 못했던 날카로운 지적을 주고 받을 수 있다.2. 교내 대면 스터디 : 유대감 있는 동기들과 함께 진행할 수 있다. 친근감과 동료애가 있기 때문에 서로 더 도와주려고 하고 더 잘하려는 순기능이 있다.3. PT 자료 공유방 : 모든 주제를 혼자 서치하고 정리하기 어렵기 때문에 1인 당 2~3개 주제를 분담하여 집중 조사하고 그 문서를 공유한다. 특정 주제에 대해 궁금할 때 다른 사람이..