전체 글

개발 공부 블로그
Daily/TIL

[API] API란?

API란? Application Programming Interface(애플리케이션 프로그램 인터페이스)의 약자로, 소프트웨어 응용 프로그램에서 다른 소프트웨어 구성 요소 또는 서비스와 상호작용하기 위한 인터페이스를 제공하는 프로그래밍 기술이다. 즉, API는 응용 소프트웨어를 만드는데 쓰는 매개체나 통신규칙이다. 클라이언트와 서버 사이의 데이터 전송 통신을 위한 규칙이나 룰, 방법이라고도 이해할 수 있다. 예를 들어, 기상청의 소프트웨어 시스템에는 일일 기상 데이터가 들어 있다. 휴대폰의 날씨 앱은 API를 통해 이 시스템과 상호작용하여 휴대폰에 매일 최신 날씨 정보를 표시한다. API를 사용하면 다른 소프트웨어 구성 요소와 상호작용하기 위해 필요한 복잡한 코드 작성을 줄일 수 있으며, 더욱 빠르고 효..

Daily/TIL

[네트워크 기초] OSI 7계층, HTTP란?, IP와 Port 번호

OSI 7계층OSI 7계층은 네트워크 통신이 일어나는 과정을 7단계로 나눈 국제 표준화 기구(ISO)에서 정의한 네트워크 표준 모델으로 1계층(물리 계층)에서 7계층(응용 계층)으로 구성되어 있다.물리층(1계층) 물리 매체를 통하여 비트 스트림을 전송하는데 필요한 기능 제공한다. 2~7계층을 거쳐오면서 생성된 프레임을 전기적인 신호로 변환하여 전송함물리적으로 데이터라는 전기적인 신호를 보내는 계층통신 단위: 비트장비: 광섬유, 전선, 케이블, 무선 LAN 데이터 링크층(2계층) 물리층의 전송 설비를 신뢰할 수 있는 링크로 변환한다.물리계층을 통해 송수신되는 정보의 오류와 흐름을 관리하여 안전한통신의 흐름을 관리함공유기에 공유된 수많은 기기 중 어떤 기기에 데이터를 보내야 하는지를 결정한 홉(노드)에서 ..

Daily/TIL

[JavaScript] 자바스크립트란?

비동기 처리 비동기 처리는 작업이 완료될 때까지 기다리지 않고 잠재적으로 오래 실행되는 작업을 시작하여 해당 작업이 실행되는 동안에도 다른 이벤트에 응답할 수 있게 하는 기술이다. 동시에 여러가지 작업을 처리할 수 있고 기다리는 과정에서 다른 함수를 호출할수도 있다. 콜백 함수 콜백은 태스크가 끝나기 전에 함수가 실행되지 않는 것을 보장한다. 다르게 말하자면 콜백은 현재 태스크가 끝난 직후에 실행될 것이다. 콜백은 비동기 자바스크립트 코드를 작성할 수 있도록 해주고 여러 문제와 에러들로부터 안전하게 지켜준다. 콜백 함수란 파라미터로 일반적인 변수나 값을 전달하는 것이 아닌 함수 자체를 전달하는 것을 말한다. 매개변수에 함수를 전달해 일회용으로 사용하기 때문에 굳이 함수의 이름을 명시할 필요가 없어 보통 ..

Android/Basic

[Android] View와 ViewGroup

View 안드로이드 화면 구성 요소로 사용자가 눈으로 보는 모든 것은 View이다. 화면의 기본적인 컴포넌트라고 말할 수 있다. TextView, ImageView, EditText, ... 등 자주 쓰는 모든 UI 관련된 컴포넌트는 View라는 클래스를 상속 받는다. ViewGroup ViewGroup은 n개의 View를 포함할 수 있는 Container이다. ViewGroup은 View만 배치가능하며 ViewGroup도 View를 상속받아 만들어진 클래스이다. 우리가 자주 쓰는 레이아웃이 ViewGroup에 해당한다.

Android/Basic

[Android] DataBinding

DataBinding Android JetPack 라이브러리의 하나의 기능으로 xml파일에 Data를 연결해서 사용할 수 있게 도와준다. Activity에서 findViewById()를 통해서 View를 가져올 필요가 없고, 연결된 데이터가 변할 때 쉽게 View에 변경된 데이터를 반영할 수 있는 장점이 있다. 기본 사용방법 1. build.gradle에 dataBinding 추가 android { ... dataBinding { enabled = true } } 2. 레이아웃 파일 수정 루트를 layout으로 설정 data 태그 추가 // databinding_example.xml 3. 데이터 바인딩 설정 // databinding_main.kt import androidx.appcompat.app.A..

Android/Basic

[Android] LiveData and LiveData observers

사진/내용 LiveData Android JetPack 라이브러리의 하나의 기능으로 Data의 변경을 관찰 할 수 있는 Data Holder 클래스이다. 일반적인 Observable과는 다르게 LiveData는 안드로이드 생명주기(LifeCycle)를 알고 있다. 즉, 액티비티나, 프레그먼트, 서비스 등과 같은 안드로이드 컴포넌트의 생명주기를 인식하며 그에따라 LiveData는 활성상태일때만 데이터를 업데이트 한다. 활성상태란 STARTED 또는 RESUMED를 의미함 LiveData 객체는 Observer 객체와 함께 사용된다. LiveData가 가지고 있는 데이터에 어떠한 변화가 일어날 경우, LiveData는 등록된 Observer 객체에 변화를 알려주고, Observer의 onChanged() 메..

Android/Basic

[Android] 스레드와 서비스의 차이점

스레드 작업을 동시에 실행할 수 있는 클래스이다. Thread를 상속받거나, Runnable을 구현하여 사용할 수 있다. 스레드는 하나의 독립적인 실행 흐름을 가지며, 일반적으로 긴 작업을 수행하는 데 사용한다. 스레드는 수동으로 관리해야 하기 때문에 관리가 어렵고 코드를 읽기 어려워질 수 있다는 단점이 있다. 스레드를 사용하는 경우 중간 또는 많은 양의 데이터가 포함된 네트워크 작업 (업로드 또는 다운로드) 백그라운드에서 실행해야하는 높은 CPU 작업 GUI 스레드와 관련된 CPU 사용량을 제어하려는 모든 작업 서비스 서비스는 백그라운드에서 실행시간이 긴 작업을 수행하며, 사용자 인터페이스를 제공하지 않는 어플리케이션 구성요소이다. UI가 없는 작업이긴 하지만, 작업시간이 너무 길지 않아야 하며, 긴 ..

Android/Basic

[Android] AsyncTask

AsyncTask AsyncTask는 비동기적으로 실행될 필요가 있는 작업을 위해 사용하는 클래스이다. AsyncTask를 상속받아 새로운 클래스를 만들면 그 안에 워커 스레드를 위한 동작 코드와 UI 접근 코드를 한 번에 넣을 수 있다. 예를 들면 웹서버에서 고객 아이디를 가져오는 통신 작업, 즉 백그라운드에서 해야 하는 작업과 가져온 정보를 UI에 업데이트 하는 작업을 동시에 하고 싶다면 AsyncTask 상속 클래스를 만든 후 해당 클래스에 로직을 구현해주면 된다. AsyncTask 장점으로는 비동기적 처리를 하기 쉽고, Handler보다 코드적으로 깔끔하다는 점이 있다. AsyncTask는 핸들러와 달리 무조건 메인 스레드에서 생성하고 실행해야한다. 비동기적 처리의 다른 방식으로는 Thread-H..

Project/Android Project

[Android Flutter][Medisight] 개발 일지 #4 (내 질환 설정 기능 구현)

기능 - 각 질환이 적힌 버튼을 통해 질환을 추가하거나 제거할 수 있다. - 저장 버튼을 누르면 선택한 질환을 토대로 Cloud Firestore에 내 질환 정보가 저장된다. - 초기화 버튼을 누르면 선택한 모든 질환이 제거된다. - 해당 페이지에 다시 들어오게 되면 Cloud Firestore에 저장되어 있던 내 질환 정보가 불러와진다. 내 질환 설정 구현 dependencies: # Firebase cloud_firestore: ^4.4.3 firebase_core: ^2.4.1 pubspec.yaml에 사용할 모듈 추가 disease_select.dart final user = FirebaseAuth.instance.currentUser!; CollectionReference userProduct ..

Project/Android Project

[Android Flutter][Medisight] 개발 일지 #3 (바코드 스캔 기능 구현 with 서버 연동)

기능 - 사용자가 카메라를 통해 의약품의 바코드를 스캔하면, 의약품 정보가 보인다. - 만약 스캔한 사진의 형체를 알아볼 수 없는 등의 기타 오류가 있다면 재촬영이 필요하다고 안내한다. - 사진 인식 유무는 서버에 배포된 ML 모델을 통해 확인할 수 있다. 바코드 스캔 구현 dependencies: #Camera camera: ^0.9.4+1 # Barcode scanner google_mlkit_barcode_scanning: 0.5.0 flutter_beep: ^1.0.0 flutter_vibrate: ^1.3.0 # REST API http: ^0.13.5 pubspec.yaml에 사용할 모듈 추가 shootQr.dart @override void initState() { super.initStat..

jeonge
jeonge의 블로그