스프링 핵심 원리 이해 - 3강
·
SpringBoot
https://start.spring.io/ 위의 사이트로 들어가서 프로젝트를 생성한 뒤, 실습을 진행하였다. 우리가 목표하는 바는 아래와 같다. 회원 회원을 가입하고 조회할 수 있다.회원은 일반과 VIP 두 가지 등급이 있다.회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정)주문과 할인 정책 회원은 상품을 주문할 수 있다.회원 등급에 따라 할인 정책을 적용할 수 있다.할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액 할인을 적용해달라. (나중에 변경 될 수 있다.)할인 정책은 변경 가능성이 높다.회사의 기본 할인 정책을 아직 정하지 못했고, 오픈 직전까지 고민을 미루 고 싶다. * 최악의 경우 할인을 적용하지 않을 수 도 있다. (미확정) 그러면 먼저 회..
스프링 핵심 원리 - 1~2강
·
SpringBoot
스프링 프레임워크란? 스프링에서 필수라고 생각하면 된다.- 스프링 DI 컨테이너, AOP, 이벤트 등등- 스프링 MVC - 데이터 접근 기술 : 트랜잭션, JDBC, ORM, XML를 지원등등 있다. 이런 스프링 프레임 워크 기술을 편리하게 하는데 사용하는 것이 바로 스프링 부트이다. 스프링 부트란?스프링을 편리하게 사용할 수 있도록 지원, 최근에는 기본으로 사용한다.단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성하고, 톰캣 같은 웹 서버를 내장해서 별도의 웹 서버를 설치하지 않아도 된다. 손쉬운 빌드 구성을 위한 스타터 종속성을 제공하고 *스타터 : 라이브러리로 1개를 불러오면 나머지 추가적으로 필요한 라이브러리를 자동으로 +로 불러와준다.스프링과 3rd 외부 파티 라이브러리 자동 구성매트릭..
[SpringBoot] Spring Boot란? - DI 복습편
·
SpringBoot
서버 개발하면 가장 많이 들어본것이 스프링 부트일 것이다.그렇다면 스프링이란 무엇이고 부트 = 프레임 워크란 무엇일까? 프레임워크란?=> 목적을 쉽게 달성할 수 있도록 해당 목적과 관련된 코드의 뼈대를 미리 만들어둔 것을 의미합니다. 자주 사용하는 기능에 대해 기틀을 잡고 개발자는 그 안에서 구현할 수 있게 된다. 그렇다면 미리 만들어 둔 것이 무엇일까? 그걸 이해하려면 우선 api, 라이브러리에 대해 알아보자. api란?Application Programming Interface의 약자로 2개 이상의 소프트웨어 컴포넌트 사이에서 상호작용 할 수 있도록 정의된 인터페이스를 말합니다. 소프트웨어 애플리케이션들이 서로 데이터를 주고 받으며 통신할 수 있도록 만들어진 일련의 규칙이자 약속으로 어떤 기능을 사용..
[GUKK] 초대 딥링크 api 연동하기 - 1단계
·
안드로이드 프로그래밍📱/GUKK
딥링크로 초대하기 api 연동하기에 대해서 오늘 정리해보고자 한다. 앱 설치 유저의 경우 초대하기 딥링크 로직이 매우 간단하다.앱을 열어서, 딥링크 링크의 초대코드를 통해 api로 요청하고, 해당 화면으로 진입하면 된다. 문제는 앱 미설치 유저인 케이스이다.구현해야할 로직은 아래의 피그마 이미지와 같다. 앱 미설치 유저의 경우, 딥링크에서 앱 설치를 유도 -> 앱 설치 -> 온보딩 진입 -> 튜토리얼 -> 초대받은 방 상세 화면으로 진입해야한다. * 해당 로직은 어려우니 우선 앱 설치 기준 딥링크 처리 방식부터 정리해보자. 그렇다면 로직을 구현하기 위해서 안드로이드 개발을 해야할까? 서버 쪽에는 미리 assetlinks.json 파일을 요청했다.이 파일을 요청한 이유는 바로 이 서명 지문이 있는 것이 ..
람다, 리시버 람다 정리
·
안드로이드 프로그래밍📱/Kotlin📲 개념
오랜만에 람다와 리시버 람다에 대해서 정리하겠다.그 전에 람다가 왜 필요할까? 바로 쉽게 예시를 들면, class Box { var label: String = ""} 이런 객체가 있고 이 객체를 선언하고 활용하는 과정을 생각해보자.만약 이 객체에 label를 넣는 작업을 하고 싶다면 대부분 이렇게 떠올릴 것이다.fun makeBox (label: String): Box { val box = Box() box.label = label return box} 이렇게 박스마다 라벨링해서 내보내는 함수를 구현해볼 수 있을 것이다.그러나 보통 박스는 라벨만 있지 않다. 라벨, 운송번호, 택배기사성함, 도착지, 출발지, 받는 사람 (등) 엄청 많은 정보들이 있다. 그럴 때마다 상황에 맞춰서 ..
[SpringBoot] HTTP 웹 기본지식
·
카테고리 없음
인터넷 통신의 소통 방법은 어떻게 될까? 클라이언트, 서버는 각자 고유한 ip를 가진다.그러면 여기서 ip란 무엇일까? ip는 인터넷 프로토콜로 지정된 ip에 데이터를 전달한다. 패킷(통신 단위)로 데이터를 전달하며, ip 패킷은 출발지 ip, 목적지 ip, 기타 정보를 담고 있다. 클라이언트에서 패킷을 여러 노드를 거쳐서 서버로 전달한다. 그러면 서버는 여러 노드 거쳐서 패킷이 전달된다. 여기서 ip 프로토콜의 명확한 한계를 직면할 수 있다.- 비연결성 : 패킷(쉽게 말해 편지) 받을 대상이 없거나 전달 자체가 불능(서비스 불능) 상태여도 패킷 전송이 가능하다.- 비신뢰성 : 중간에 패킷이 사라지거나(소실), 패킷이 순서대로 안오면 방법이 없다.- 프로그램 구분 : 같은 ip를 사용하는 서버에서 통신..
LinkU 간단 회고록 및 구글 플레이 콘솔 테스트 앱 등록 후기 & 방법
·
안드로이드 프로그래밍📱
1년 동안 많은 우여곡절이 있었던... 링큐 안드로이드 프로젝트를 드디 구글 플레이 콘솔에 2주간 테스트 올릴 수 있게 되었다:)마이그레이션 + 바텀 네비게이션 중 하나의 탭 전체 기능이 다 바뀌어서... 정말 개발자로서 힘들었지만 이제 보니 뿌듯하다😊 지금 와서 보면 안드로이드에 아예 모를 때 프로젝트를 시작해서.. 코드의 아쉬움도 많다.. 네비게이션 경로 등록을 하드코딩 하는 등... 아주 기본적인 실수가 많았기에... 아쉽지만 그래도 점차 성장할 수 있어서 좋았다:) 테스트를 하면서 쉽게 놓칠 수 있는 포인트들을 잡을 수 있었다! 1) 사용자 depth의 문제 -> 링크 저장할 때, 기존에는 링크를 복사해서 다시 앱에 복귀해야하는 로직 즉, 앱이 백그라운드 -> 포그라운드 이동을 유저가 직접해..
[SpringBoot] API 설계하기 - 복습편
·
SpringBoot
먼저 API란 무엇일가?" Application Programming Interface " 의 약자로, 영문을 해석하면, 응용 프로그램 프로그래밍 인터페이스다. 쉽게 말하자면, 서로 다른 소프트웨어가 서로 주고 받을 수 있는 소통 방법이다. 인터페이스 = 어려운 것은 감추고 상호작용을 할 수 있도록 해주는 것을 의미합니다. REST API : Representational State Transfer의 약자로 자원(Resource)의 현재 상태(State)를 나타내는 표현을 주고 받는다라는 의미입니다. HTTP를 기반으로 하는 웹 서비스의 아키텍쳐로, HTTP 메소드와 자원을 이용해서 통신을 주고 받는 방법입니다:) HTTP 메소드는 REST 방식으로 통신할 때 필요한 작업을 표시하는 방법이다. 이 메소..
[AndroidStudio] dataStore state 반환
·
안드로이드 프로그래밍📱
데이터 스토어에서 저장한 최신 상태를 가져오는 코딩 연습을 해보자. 우선 나는 로그인한 여부를 다음 아래와 같은 코드로 구현했다.override val isLoggedIn: Flow = context.authDataStore.data.map { prefs -> prefs[Keys.LOGGED_IN] ?: false} 이렇게 로그인한 여부를 타입을 플로우 타입으로 지정했으며 이를 데이터 스토어에 map을 이용해서 저장했다. 여기서는 값을 가져오기에 map에서 파라미터 prefs를 통해 키 값을 통해 로그인 여부 값을 가져온다. 값이 없는 경우 false로 가져온다. 그러면 이 로그인 여부 최신 상태 값을 메인 뷰모델에서 가져오자. 이를 가져오는 이유는 이전에는 로그인한 상태인데 리프레쉬 토큰 만료(등..
[Kotlin] Producer-Consumer 패턴
·
안드로이드 프로그래밍📱/Kotlin📲 개념
Producer-Consumer 패턴 오늘은 Producer-Consumer 패턴에 대해 정리하고자 한다.간단하게 요약하자면, producer-consumer 패턴은 생산자와 소비자를 나누는 구조이다. producer : 처리 작업을 만듬task queue : producer 처리 작업을 잠시 보관한다.consumer : task 큐에서 작업을 하나씩 꺼내 처리함. 그림으로 살펴보자 그렇다면 디테일하게 개념을 살펴보자:) ProducerTask 끝까지 책임XTask 생성 작동 방식은 1) task 큐에 넣은 뒤, 2) 다음 일을 한다고 생각하면 된다! Task 큐버퍼 : data를 한 공간에서 다른 곳으로 전달할 때 양쪽의 속도 차이 극복하기 위해 data 임시로 모으는 메모리 공간코틀린에서는 코루..