목록분류 전체보기 (57)
계발자 블로그
안드로이드에서는 기존 AsyncTask를 이용해서 비동기 프로그래밍을 구현했습니다.하지만 AsyncTask에는 메모리 누수등 여러가지 메모리 관련한 문제가 있어서API 30부터 deprecated 되었습니다.그 대체재로 코루틴을 권장하고 있습니다.코루틴이 코틀린과 이름이 비슷하지만 코틀린만의 고유한 개념은 아닙니다. 우선 프로그램에는 루틴이 있습니다.프로그램의 흐름을 일컫는 추상적인 개념입니다.메인루틴메인 함수에 의해서 진행 되는 프로그램의 흐름서브루틴메인함수 안에서 수행 되는 개별 함수들의 흐름보통 루틴은 일직선 적인 흐름입니다.하지만 코루틴의 특징은 일직선 적인 루틴의 특징을 suspend로 지연을 시키고 resume으로 재시작이 가능합니다. 구글에서 코루틴을..
HTTP란 http는 Hyper Text Transfer Protocaol의 줄임말로써 인터넷 상에서 데이터를 주고 받기 위한 서버와 클라이언트 간에 데이터를 주고 받는 프로토콜입니다. 7계층 중 어플리케이션 계층의 프로토콜로 TCP/IP 위에서 동작합니다. http는 암호화가 되지 않은 평문 데이터를 전송하는 프로토콜이기 때문에 제3자가 정보를 조회할 수 있습니다. 이러한 무제를 해결하기 위해 HTTPS가 등장한 것입니다. HTTPS란 Hyper Text Transfer Protocol Secure로 s는 안전한 통신망을 뜻합니다. http 통신 하는 소켓 부분을 인터넷 상에서 정보를 암호화 하는 SSL(Secure Socket Layer)라는 프로토콜로 대체한 것입니다. HTTPS의 SSL에서는 대칭..
3-way handshake TCP 통신을 이용하여 데이터를 전송하기 위해 네트워크 연결을 설정 하는 과정입니다. TCP/IP 프로토콜을 이용하여 통신을 하는 응용 프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미합니다. 3-way handshake 과정 Client -> Server: SYN Client가 연결 요청 메시지 전송(SYN)한다. Client가 최초로 데이터를 전송할 때 Sequence Number를 임의의 랜덤 숫자로 지정하고, SYN 플래그 비트를 1로 설정한 세그먼트를 전송한다. Server -> Client: SYN + ACK 접속 요청을 받은 Server가 요청을 수락했으며, Client도 포트를 열어달라는 메시..
TCP와 UDP는 전송 계층에서 사용하는, 데이터를 보내기 위해 사용하는 프로토콜 입니다. TCP와 UDP는 각각 가상 회선 방식과 데이터그램 방식이라는 점에서 차이를 가지며, 신뢰성과 연속성 두 측면에서 상충 관계(trade off)에 있습니다. TCP(Transmission Control Protocol)란 인터넷 상에서 데이터를 메세지 형태로 보내기 위해 IP와 함께 사용하는 프로토콜입니다. TCP와 IP를 함께 사용하는데, IP가 데이터의 배달을 처리한다면 TCP는 패킷을 추적 및 관리 합니다. TCP는 연속성 보다 신뢰성 있는 전송이 중요할 때에 사용하는 프로토콜로 파일 전송과 같은 경우에 사용됩니다. TCP 특징 연결형 서비스로 가상 회선 방식을 제공한다. 3-way handshaking 과정..
OSI 7계층이란? 두 시스템 간의 통신을 위해 필요한 기능을 7계층으로 나누어 서비스 하는 것을 말합니다. 7계층으로 나누는 이유 통신이 일어나는 과정을 단계별로 알기 쉽고 7계층 중 특정 한 곳에 이상이 생기면 그 단계만 수정 할 수 있기 때문입니다. 1계층 - 물리 계층(Physical Layer) 기계적, 전기적, 물리적인 특성을 이용해 통신 케이블로 데이터를 전송 하는 절차입니다. 리피터, 케이블, 허브 등 2계층 - 데이터링크 계층(Data Link Layer) 데이터의 물리적 전송 오류를 감지하고 복구하는 오류 제어 기능과 전송 되는 데이터의 흐름을 조절하는 흐름 제어 기능을 수행합니다. 3계층 - 네트워크 계층(Netwokr Layer) 송신 측에서 전송한 데이터가 네트워크에서 최적의 경로..
데이터 결합 라이브러리 | Android 개발자 | Android Developers 데이터 결합 라이브러리 Android Jetpack의 구성요소. 데이터 결합 라이브러리는 프로그래매틱 방식이 아니라 선언적 형식으로 레이아웃의 UI 구성요소를 앱의 데이터 소스와 결합할 수 있는 지원 developer.android.com DataBinding이란? 구글에 따르면 프로그래매틱 방식이 아니고 선언적 형식으로 레이아웃의 ui 구성 요소를 앱의 데이터 소스와 결합 할 수 있는 지원 라이브러리라고 합니다. 간단히 코틀린 코드와 xml의 ui 컨포넌트를 연결하는 라이브러리라고 생각하면 될 것 같습니다. ViewBinding과의 차이점은 DataBinding은 이름 처럼 데이터와 같이 결합 해서 사용할 수 있다는 ..
뷰 결합 | Android 개발자 | Android Developers 뷰 결합 뷰 결합 기능을 사용하면 뷰와 상호작용하는 코드를 쉽게 작성할 수 있습니다. 모듈에서 사용 설정된 뷰 결합은 모듈에 있는 각 XML 레이아웃 파일의 결합 클래스를 생성합니다. 바인딩 developer.android.com ViewBinding은 기존 findViewById와 같이 뷰와 코드를 연결 시켜주는 기능입니다. 이런 식으로 버튼 3개를 만들었습니다. viewBinding을 사용하기 전에는 findViewById를 이용해왔습니다. 3개정도야 코드 작성이 빠르고 보기 쉬울수 있지만 프로젝트가 커질수록 작성해야 하는 코드가 정말 길어지게 됩니다. 그래서 Kotlin-Extiensions를 사용해 findViewById처럼 ..
Bottom Navigation View에 대해 알아보겠습니다 Bottom Navigation View는 안드로이드 환경에서 흔히 볼 수 있는 하단 메뉴 바입니다. 카카오톡이나 인스타그램 등 거의 모든 앱에서 볼 수 있습니다. 바로 만들어 봅시다. 리소스 폴더에 메뉴를 만들어줍니다. 네비게이션 바에 나타나는 메뉴를 만들어주는겁니다. Resource type을 Menu로 해주세요 메뉴 리소스 파일을 만들었으면 안에 어떤 메뉴를 넣을건지 작성해줍니다. 아이콘은 백터 이미지로 넣었습니다. 그리고 메인 액티비티 레이아웃으로 와서 바텀 네비게이션 뷰를 넣어줍니다. 여기서 아이콘의 색이나 네비게이션 바의 배경 색 등을 설정해 줄 수 있습니다. 네비게이션 뷰 위에는 프래그먼트가 들어갈 레이아웃을 하나 만들어줍니다. ..
프래그먼트 | Android 개발자 | Android Developers A Fragment represents a behavior or a portion of user interface in an Activity. You can combine multiple fragments in a single activity to build a multi-pane UI and reuse a fragment in multiple activities. You can think of a fragment as a modular section developer.android.com Fragment는 Activity내에서 화면 일부를 나타내는 안드로이드 구성 요소 중 하나입니다. 한 Activity내에서 여러 fragment..
문자열 알고리즘을 풀 때 가끔 기억이 안나서 한번에 정리 하면서 공부 해보려고 합니다. toLowerCase() 문자열을 소문자로 변환 해줍니다. toUpperCase() 문자열을 대문자로 변환 해줍니다. String s = "abcdefg1234"; s = s.toUpperCase(); System.out.println(s); s = s.toLowerCase(); System.out.println(s); replace(기존문자, 바꿀 문자) 해당 문자열의 일부를 치환 해줍니다. String s = "abcdefg1234"; s = s.replace("1234", "hijk"); System.out.println(s); substring() 문자열의 특정 인덱스만큼 혹은 특정 인덱스 이후로 잘라냅니다. ..