본문 바로가기

분류 전체보기134

9주차 실습(1)- Retrofit 사용 준비 당근마켓 클론을 진행하던 프로젝트에 로그인 기능을 만들 것이다. // 한 xml 단위가 끝날때(또는 기억할 수 있는 단위로), 블로그 글 쓰기- 실제 코드 따라쳐보기 순서대로 1. 먼저 회원가입 xml을 만든다 2. api 요청/응답 구조 알아보기 우리는 api를 구현할 것이므로 서버에서 api 명세서를 보내올 것이다. 예를들어 위 사진처럼 REQUEST를 위에 명시한 대로 요청하면 응답을 그 아래에 있는 형식으로 받아볼 수 있을 거란 뜻이다. 안드로이드에서는 명세서에 적힌 대로 api를 구현하면 된다. 위 사진을 보면 응답에 실패했을 때도(Error) isSuccess 값은 누락되지 않고 오고 만약 응답에 성공하면 거기에 추가 정보가 딸려오는 형식으로 구현되어 있다. 로그인도 데이터를 받아오는 게 비슷.. 2023. 11. 21.
API, REST API, HTTP, Retrofit 라이브러리 개념 정리 오로지 Retrofit 라이브러리를 이해하기 위해서 작성되기 시작한 글 1. API : 두 소프트웨어를 통신가능하게하는 메커니즘 ex. 휴대폰 날씨 앱이 api 통해 기상청시스템과 '대화'하여 최신 날씨 표시함 Application Programming Interface(애플리케이션 프로그램 인터페이스)의 줄임말 인터페이스는 두 애플리케이션 간의 서비스 계약. 이 계약은 요청/응답으로 두 애플리케이션이 통신하는 방법을 정의함 1-1. API는 어떻게 작동하나요? API 아키텍처는 일반적으로 클라이언트와 서버 측면에서 설명된다. 아키텍처란? : 서비스의 동작원리 (최적화를 목표로 두고 시스템 구성과 동작원리 그리고 시스템의 구성환경 등을 설명 및 설계하는 청사진 또는 설계도입니다.) 출처: https://.. 2023. 11. 20.
8주차 실습(1)-카카오맵 가져와서 따라하기 1. 구글에 kakaomap api 검색 2. 안드로이드 고르기 * 기본적으로 안드로이드 api를 사용할 때는 rest api보다는 sdk 를 사용하는 게 좋다. 3. 시작하기-시작하기 클릭 후 살펴보기 4. 요구사항 체크 플랫폼 별로 버전도 다르고 지원해주는 기능도 다름 인터넷 권한 추가해주기! 5. 지도 시작하기 6. 앱 등록 6-1. 카카오개발자 사이트 들어가기 6-2. 회원가입 후 시작하기 누르기 6-3. 애플리케이션 추가하기 6-4. 앱 이름/사업자명/카테고리 기입 후 저장하기 클릭하면 kakao developers에 앱 정보 생성됨 6-5. 플랫폼 정보 설정해야 함-안드로이드 플랫폼 등록 클릭 6-6. 패키지명 기입 6-7. 카카오 SDK로 디버그 키 해시 확인 키 해시 얻어야 함(지금은 디버.. 2023. 11. 17.
5주차 복습 메모 Glide라이브러리, ViewPager2 https://dreaminsweetpotato.tistory.com/118 5주차 실습(1)-Glide 라이브러리, ViewPager2 1. 그래들 뷰바인딩 설정 2. 그래들 glide 라이브러리 사용설정 복붙 3. AndroidManifest에서 인터넷 사용설정 해줘야 glide 라이브러리 쓸수있음 4. 메인액티비티에서 viewPager2랑 텍스트뷰 넣기 5. 이미지 dreaminsweetpotato.tistory.com 1. glide 사용설정&뷰바인딩 설정 2. xml에서 뷰페이저 레이아웃 만들고 3. 뷰페이저에 출력할 프래그먼트의 레이아웃 만들고 4. 어댑터 구현 class ImageSliderVPAdapter(val context: Context, va.. 2023. 11. 14.
7주차실습(3)-room db&코루틴 응용 지난 7주차 실습 프로젝트에서 그대로 할거임 지난 시간 복습 IO 스레드에서 돌아가는 코루틴 만들어서 데이터 추가 그리고 메인스레드로 돌아와서 say "데이터 다시 그려" 이번엔 변수가 아닌 데이터베이스에 데이터를 추가해서 가져와서 레이아웃으로 그려보겠다. 1. 데이터베이스 객체 수정 우선 데이터베이스 객체 파일인 MyStringDatabase.kt로 가서 .allowMainThreadQueries().build() // databaseBuilder() 뒤에 꼭 build() 붙여야함 이걸 지워줄거임 원래는 메인스레드에서 데이터베이스에 접근하는게 안됐는데 요청했었음. 이거 지웠으니 이제 메인스레드가 아닌 스레드에서만 데이터에 접근할수있음 2. MainActivity 수정 2-1. 데이터베이스 변수 설정 .. 2023. 11. 10.
7주차 실습(2)-코루틴(coroutine) 1주차 실습파일에서 이부분을 주석처리해주고 시작하자 // var myStringDatabase : MyStringDatabase? = null // 데이터베이스 객체 만듦 이부분도! 그러면 room db를 추가하기 전이고 dataList도 빈 ArrayList상태라서 출력해보면 아무것도 안나온다. 이번 실습에서는 coroutine으로 다른 스레드에서 데이터를 추가하고 다시 메인 스레드로 와서 ui를 그리는 작업을 해볼 것이다. 코루틴을 쓰려면 먼저 scope를 선언해야 한다. GlobalScope도 있고 MainScope도 있지만 여기서는 새로 만들 것이다. 1. 스코프 선언 CoroutineScope(Dispatchers.IO).launch{ } 스코프를 통해 넘겨줄 것은 '어느 스레드에서 실행할 것이.. 2023. 11. 10.
7주차 실습(1)-roomDB 1. 프로젝트 만들고 2. 그래들 dependendcies에 room // RoomDB implementation("androidx.room:room-runtime:2.6.0") annotationProcessor("androidx.room:room-compiler-processing:2.6.0") // kapt("androidx.room:room-compiler:$room_version") 맨마지막줄은 왜 잘 안되는줄 모르겠음 3. 똑같이 그래들 android에 뷰바인딩 설정해주고 4. activity_main.xml에 아무 리사이클러 뷰 선언하고 아이디 달아줌 id는 rv_home 5. MainActivity에 뷰바인딩 하기 package com.iyr.a7thweekpractice import an.. 2023. 11. 10.
6주차 실습-Thread 스레드의 context switching이 어떻게 이루어지는지, 멀티스레드프로그래밍을 하면서 알아볼 예정. 지난 주의 뷰페이저 실습 프로젝트에서 이어서 할 것이다. 1. 첫번째 스레드 실습 1-1. onCreate()에 testThread1()라는 함수 호출하고 onCreate밖에 함수 선언하기 1-2. private fun testThread1() // testThread1() 함수 private fun testThread1() { Thread(){ for (i in 1 until 1001){ print(i) } }.start() Thread(){ for (i in 1000 downTo 0){ print(i) } }.start() } 여기서 실행해서 logcat 보면 스레드가 990쯤부터 끊기고 다시 .. 2023. 10. 31.
6주차 이론-Thread KeyWord: 프로그램, 프로세스, 스레드, 멀티프로세스, 멀티스레드 프로그램이란? 컴퓨터에서 실행 가능한 명령어들의 집합으로, 특정 작업을 수행하기 위한 코드와 데이터의 모음 쉽게말해, 작성한 코드가 디스크에 저장된 형태로 존재함. 물리적인 공간인 디스크에 저장된 프로그램이, 논리적인 공간인 메모리에 올라오고, 리소스 할당과 관리를 운영체제가 담당한다. 그리고 이렇게 메모리에 올라와서(적재되어) 실행중인 프로그램을 프로세스라 한다. 프로그램: 작성한 코드 프로세스: 운영체제에 의해 메모리에 적재되어 실행중인 프로그램 프로세서(cpu 라고도 함): 프로세스나 스레드같은 작업을 처리하는 하드웨어 프로세스는 자신의 코드 시작점부터 종료지점까지 순차적인 실행 흐름을 가짐 ex. Main 함수부터 실행. 그런.. 2023. 10. 30.
5주차 실습(2)-TabLayout 지난시간까지는 뷰페이저에서 Glide 라이브러리로 사진 불러오기 햇음 이번시간에는 TabLayout 연습할 예정. 1. 프로젝트 만들기. TabLayoutPractice 2. 뷰바인딩 설정 3. dependencies에서 material 때문에 오류날수도 있는데 그때는 1.8.0으로 버전 낮춰주기 4. 오늘은 glide 사용 안할거라서 아무 이미지 파일 drawable 파일에 넣어주기 5. mainActivity에 레이아웃바인딩 해주기 // MainActivity package com.iyr.tablayoutpractice import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import com.iyr.tablayoutpract.. 2023. 10. 27.