-
SKY 멘토님으로부터 총 5,760분의 멘토링을 받고 나서
SW 마에스트로 연수생 생활 마무리 길고도 짧았던 6개월간의 SW 마에스트로 15기 연수생 생활을 마치고, 이제 새로운 시작을 앞두고 있다. 따뜻한 4월, 설렘과 기대로 시작했던 연수 생활은 수많은 도전과 배움으로 채워졌고, 그 안에서 나는 성장했다. 특히, SKY 멘토님은 등대와 같은 존재였다. 길을 잃을 때마다 함께 고민하며 방향을 제시해주셨고, 계속 나아갈 수 있도록 격려와 지지를 아끼지 않으셨다. 이 글을 통해 SKY 멘토님께 깊은 감사의 마음을 전하며, 연수생으로서의 소중한 경험과 멘토링 후기를 남기고자 한다. 연수생 혜택 연수생으로서의 혜택은 정말 많다. 다른 기관의 프로그램과는 결이 다르다. ... Read More
-
스크롤 가능한 커스텀 TopAppBar만들기
내용이 심하게 부실해서 수정하고 있습니다. 다음과 같이 스크롤 할 수 있는 TopAppBar를 만들어 보고자 합니다. 만들게된 계기 자체적으로 LargeTopAppBar를 제공하지만 가장 큰 Title 컴포저블의 높이가 최대 152dp로 제한되어 있다. 아래 코드는 Compose material3의 TopAppBar를 구현한 클래스의 코드 중 일부이다. 보다시피 최대 높이인 ContainerHeight가 152.0.dp로 고정되어 있다. 이로 인해서 더 큰 높이의 Title 컴포저블을 사용하면 아래 일부가 잘리게 되는 문제가 생긴다. 또한 기본적으로 이 컴포저블은 material3의 스타일을 ... Read More
-
자동으로 폰트 크기 조절되는 Text Composable만들기
자동으로 폰트 크기 조절되는 Text Composable만들기 필요성 Text를 화면에 보여줄 때, 값의 길이가 길어지면 위와 같이 내용이 잘리게 된다.(maxLines = 1인 경우) 잘리지 않게하려면 길이에 따라 폰트 크기를 조절한 후 Text를 그리면 된다. 이를 위해 다음 단계를 따르면 된다. BoxWithConstraintsComposable 내에 Text Composable을 배치한다. BoxWithConstraints를 사용하면 화면상에 그려질 수 있는... Read More
-
2023년을 돌아보며
2023년의 마지막이 코 앞으로 다가온 현재, 올해 내가 했던(지금까지도 하고 있는) 일들과 그 과정에서 느끼고 생각하며 배운 점을 정리하여 2024년을 어떻게 살아갈지 작성해보고자 한다. 2023, 다양하게 많은 일이 있었다 1. 대학교 4학년 시작 전 겨울방학 동안 현장 실습 진행 2022년 12월 ~ 1월 한 달간 계절 학기로 한 기업체에서 현장 실습(인턴)을 진행하였다. 주 업무는 이미지 분류, 객체 탐지를 위한 Ai 학습 이미지에 대한 전 처리 작업 수행이었다. 추가적인 업무로 내가 잘 모르는 분야인 Ai 비전 모델 학습 및 검증도 수행했다. 회사의 사업 모델이 건강 관련 Ai인데, 여기... Read More
-
코틀린 코루틴을 활용해 데이터 메모리 캐시 기능 구현하기
구현 목적 앱을 제작하면서 온라인에서 가져온 데이터를 메모리에 캐싱해야 할 필요가 있었다. 그 이유는 해당 데이터의 서버 상에서 업데이트 주기가 수 십분 ~ 수 시간 단위로 긴데, 이 데이터를 짧은 간격으로 다시 중복으로 가져오는 것은 비효율적이기 때문이다. 그래서 메모리에 캐싱하는 기능을 만들었고 효율성을 개선할 수 있었다. 비효율적인 기존 방식 총 세 가지의 지역(A, B, C)에 대해서 대기질 데이터를 가져오는 기능을 구현했다고 가정하였다. 흐름 A의 대기질 데이터를 로드 B 정보 화면으로 전환 -> B의 대기질 데이터를 로드 A 정보 화면... Read More
-
DroidKnights 2023 '빈혈 도메인 모델과 쓸모없는 유스케이스 그리고 비대한 뷰모델에 대해 생각해보기'내용 정리
이번 글은 아래의 영상으로 부터 얻은 내용을 바탕으로 작성하였습니다. 빈혈 도메인, 쓸모없는 유스케이스, 비대한 뷰모델에 대하여를 주제로 DroidKnights 2023에서 강연하신 박종혁님(카카오스타일)의 영상입니다. Video: 빈혈(anemic) 도메인 모델과 쓸모없는 유스케이스 그리고 비대한(Bloated) 뷰모델에 대해 생각해보기 개발에서 발생할 수 있는 문제점들로 빈혈 도메인 모델, 쓸모없는 유스케이스, 비대한 뷰모델 세 가지가 소개되었습니다. - 빈혈, 무기력한, 빈약한(Anemic) 도메인 모델 도메인 모델(클래스)이 데이터만 가지고 있고, 어떠한 로직이 없는 상태, Anemi... Read More
-
About the UI layer
UI layer UI layer 공식문서를 정리한 내용입니다. UI : 앱의 데이터를 화면에 표시하고 사용자와 상호 작용하는 부분입니다, Data 계층으로 부터 변경되는 앱의 상태를 시각적으로 표현하는 역할 데이터가 변경될 때마다 UI는 그에 맞게 바뀌어야 합니다.(버튼 클릭, 네트워크 응답 등) 보통 Data 계층에서 받은 데이터를 화면에 바로 보여주기에는 적절하지 않습니다. 예를 들어, 일부 데이터만 보여줘야 하거나, 여러 개의 데이터들을 합쳐서 보여줘야 하는 경우가 있습니다. UI 계층은 이러한 데이터를 UI로 표시할 수 있게 가공하여, 화면에 보여주는 역할을 중요한 과정을 담당합니다. A... Read More
-
코루틴에서의 예외 처리 정리
코루틴에서 예외가 발생하면, 부모 코루틴으로 예외가 전파되고, 부모와 형제 코루틴이 모두 취소된다. fun main(): Unit = runBlocking { // A launch { // A-A launch { throw Error("A-A의 예외") } // A-B launch { println("A-B") } // A-C launch { println("A-C") } } // B ... Read More
-
Android DataBinding, ViewBinding이 파일을 생성하는 방법
Android DataBinding에 대한 이해가 있다는 전제하에 작성하였습니다. 주요 클래스 클래스명 설명 AndroidDataBinding 데이터바인딩의 핵심 클래스, 데이터 바인딩 작업을 총괄한다 LayoutFileParser XML을 파싱하여 ResourceBundle 목록을 만든다 LayoutXmlProcessor 레이아웃 XML파일을 읽고 처리한다. 내부적으로 사용할 XML파일도 만든다 BaseDataBind... Read More
-
Android Dalvik과 ART에 대해서
Dalvik 이란? Android에서 Java 애플리케이션을 구동하는 가상머신(Virtual Machine)이다. Java의 라이센스 문제(오라클, 이 문제로 10년간 소송)와 최적화 등의 이유로 인해, 구글은 JVM을 사용하지 않고, 자체적으로 DVM(Dalvik Virtual Machine)을 개발하였다. 특징 JIT(Just-In-Time) Android 2.2(2011)이전에는 JIT 컴파일이 없어, 앱이 실행 될 때마다 컴파일을 하여 메모리 효율이 나빴고 앱 구동 성능이 좋지 않았다. Android 2.2(2011)부터 JIT 컴파일이 도입되었다. ... Read More
-
JVM (Java Virtual Machine)이란?
가상 머신, JVM이란? Java코드를 구동하기 위한 프로그램(컴퓨터)이다. C와 같은 Native 언어는 컴파일러를 통해 기계어로 변환되어 실행된다. 하지만 Java는 컴파일러를 통해 바로 기계어로 변환되는 것이 아니라, JVM이라는 가상머신을 통해 실행된다. JVM은 Java Virtual Machine의 약자로, Java를 실행하기 위한 가상의 컴퓨터라고 생각하면 된다. JVM은 OS에 종속적이지 않고, Java가 설치되어 있다면 어디서든지 실행할 수 있다. Native언어로 개발하면, CPU아키텍처나 운영체제 마다 다른 기계어를 사용하기 때문에, 특정 운영체제나 CPU에 종속적이며, 개발자... Read More
-
Garbage collector에 대해서 알아보자
Garbage collector(GC)란 C, C++과 같이 GC가 없는 언어에서는 동적으로 할당한 메모리를 모두 개발자가 직접 관리해야 한다. // int array를 동적 할당 int *arr = new int[5]; for(int i = 0; i < 5; ++i) { arr[i] = i; } // 해제 delete[] arr; 위와 같은 방식으로 할당시켜주는데, 사용 후 해제를 하지 않는다면 메모리 누수가 발생하게 되며 지속적으로 이러한 상황이 누적될 경우 프로그램에 치명적으로 작용하게 된다. Java/Kotlin(Jvm), C#(.Net)과 같은 고 수준 언어에서는 GC가 메모리 관리... Read More
-
Android Compose와 View컴포넌트 비교
Android Compose와 View컴포넌트 비교 XML만으로 개발하다가, Compose를 처음 접하게 되면 처음 보는 수 많은 컴포넌트들을 만나게 된다. 기존 View에 있던 것들과는 다른 이름을 가지고 있어서 어떤 컴포넌트가 어떤 역할을 하는지 학습에 시간이 다소 걸린다. 이번 글에서는 기존 View와 비교하여 Compose의 컴포넌트들을 살펴보고자 한다. Compose의 컴포넌트 목록 Box Column Row LazyColumn LazyRow Text Image TextField Card Scaffold 등등 View의 컴포넌트 목록 FrameLay... Read More
-
Kotlin 1.9, 2.0 미리보기
Kotlin 1.9 변경점 until 연산자에 대한 특수 구문 도입 1.8 이하에서는 아래와 같이 until연산자를 사용하여, 0부터 9까지의 범위를 표현할 수 있습니다. for (i in 0 until 10) { ... } 1.9 부터는 ..< 연산자로 동일한 기능을 수행할 수 있습니다. for (i in 0 ..< 10) { ... } Jetbrains 설명에 따르면, Kotlin의 범위 구문이 구체적이지 않다는 의견을 받아왔고, 이를 해결하기 위해 ..< 연산자를 도입하였다고 합니다. UX연구 결과에 따르면, ..<가 until에 비해 20~30% 정도 개발자... Read More
-
그래프 그리는 View만들기
그래프 그리는 View만들기 아래의 사진 처럼 그래프를 그려주는 View를 만드는 방법을 이번 글에서 다루어 보겠습니다. 사용하는 주요 클래스 View를 상속하여 CustomView를 만듭니다. Canvas 화면에 실제로 보여줄 View를 그리는 클래스입니다. 그림을 그리는 종이라고 생각하면 이해하기 쉬울 것 같습니다. 참고 : Android의 Canvas에 그려보자 : 선, 도형 그리고 그림까지!? Paint Canvas... Read More
-
ArrayMap, SparseArray, LruCache에 대해서 알아보기
ArrayMap, SparseArray, LruCache란 기본 자료 구조보다 더 메모리 효율적으로 구현한 자료 구조로, android.util 패키지에 포함되어 있습니다. ArrayMap HashMap을 개선한 버전입니다. HashMap보다 좀 더 메모리 효율적입니다. HashMap ArrayMap 특징 구조 HashMap 배열 1개를 사용합니다. 키와 값을 저장하는 배열 키에 대해 Hash값을 구함 -> Hash값을 배열의 Index로 사용 -> 해당 Index에 값을 가져... Read More
-
Kotlin sealed class/interface 사용 시 하위 클래스에 대응되는 함수를 자동으로 만드는 방법
sealed interface/class 를 사용하는 경우 sealed class를 사용하여 각 상태에 따른 동작을 수행하도록 할 수 있습니다. sealed interface UiState<out T> { data class Success<out T>(val data: T) : UiState<T> data class Error(val exception: Throwable) : UiState<Nothing> object Loading : UiState<Nothing> } 이러한 경우, if 또는 when 문을 사용해서 각 상태에 따... Read More
-
Android 시스템 바(상태바, 네비게이션바) 색상 자동 변경 처리하기
Android 시스템 바(상태바, 네비게이션바) 색상 자동 변경 처리하기 아래의 내용을 통하여 시스템 바의 색상/레이아웃을 변경하는 방법을 확인할 수 있습니다. Android 시스템 바 레이아웃 변경하기 시스템 바 색상 변경시 생기는 문제점 아래와 같이 배경 색상이 다른 화면이 표시되는 경우, 화면의 배경색과 시스템 바의 색상이 겹쳐서 보이지 않는 문제가 발생합니다. Activity, Fragment, Compose 화면 구성 요소가 변경될 때 이와 같은 상황이 발생하게 됩니다. 본... Read More
-
Android 시스템 바 레이아웃 변경하기
Android 시스템바 색상 설정 변경하는 방법 컨텐츠 레이아웃이 화면 전체를 차지하도록 설정 WindowCompat.setDecorFitsSystemWindows(window, true or false) true false 컨텐츠 레이아웃의 범위가 상태 바와 네비게이션 바 영역을 제외한 영역만 차지합니다. 컨텐츠 레이아웃의 범위가 상태 바와 네비게이션 바 영역까지 확장됩니다. true false true와 달리, 레이아웃 계층에서 navigatio... Read More
-
Kotlin 동시성 문제 해결방법
동시성을 고려하여 동기화가 필요한 경우 var count = 0 const val repeatCount = 1000000 fun main() = runBlocking { launch(Dispatchers.Default) { repeat(repeatCount) { count++ } println(count) } launch(Dispatchers.Default) { repeat(repeatCount) { count++ } println(count) } ... Read More
-
RecyclerView의 동작 로직에 대해 자세히 알아보기
RecyclerView의 기본적인 사용법을 알고 있다는 가정하에, RecyclerView의 동작 원리에 대해서 알아보겠습니다. RecyclerView의 핵심 클래스 RecyclerView 가장 중요한 클래스 ViewGroup을 상속받는다. 총 감독 역할을 한다. LayoutManager 레이아웃과 관련된 작업을 처리 Adapter 데이터를 관리하고 ViewHolder를 생성하고 Bind를 처리 CachedViews RecyclerView를 스... Read More
-
Android Dialog Window 흐림 효과 적용하기
Window 흐림 효과 적용 전에, 흐림 효과 적용 가능 대상 종류를 알아봅시다. 두 가지 대상에 대하여 흐림 효과 적용이 가능합니다. Background blur 배경을 흐리게 합니다. Behind blur(Window blur) Window를 흐리게 합니다. Window(PhoneWindow) 화면에 출력되고 있는 View가 보여지는 영역입니다. Window는 DecorView를 가지고 있고, DecorView에 실제로 View가 그려지게 됩니다. Activi... Read More
-
관계형 데이터베이스 설계
관계형 데이터베이스(RDB, Relational Database)란? 데이터를 테이블 형태로 저장하고 관리하는 데이터베이스이다. SQL != Database SQL과 Database는 다르다. SQL은 Database를 구현하는 언어이다. 설계 과정 요구사항 분석 시스템이 어떤 데이터를 관리하고, 어떤 연산을 수행해야 하는지 정의한다. 개념적 설계 개체-관계 모델을 이용해서 데이터와 데이터간의 관계를 설계한다. 개체-관계(Entity-Relation) 모델 : 데이터와 데이터... Read More
-
순열, 조합 by Kotlin
순열, 조합 순열(Permutation) 순서가 중요한 경우 nPr = n! / (n-r)! (n : 전체 개수, r : 뽑을 개수) 조합(Combination) 순서가 중요하지 않은 경우 nCr = n! / r! * (n-r)! 비교 5명 중에서 3명을 뽑는 경우 순열 3명을 1,2,3 등 순서대로 뽑는 경우 5P3 = 5! / (5-3)! = 60 조합 3명을 순서 상관없이 뽑는 경우 5C3 = 5! / 3! * (5-3)! = 10 순열 구현 // Collection&... Read More
-
Compiler backend
컴파일러 프론트엔드와 백엔드의 명백한 차이 프론트엔드 프로그래밍 언어에 의존적 목표 기계에 비 의존적 백엔드 언어에 다소 비 의존적 IR은 언어에 의존적 목표 기계에 의존적 백엔드의 구성 Instruction selection IR을 어셈블리 코드로 변환 고정된 스토리지 매핑 및 코드 모양을 추정 주소 지정 모드를 사용하여 작업을 결합 Instruction scheduling 연산을 정렬하여 지연 시간을 줄임 ... Read More
-
데이터 통신 정리
11장 - DataLinkControl HDLC Frame Flag 앞/뒤에 위치 Address Control Information 서로 간의 프로토콜을 정의하기 위해 사용 user information, management information Fcs CRC Frame 종류 Information ... Read More
-
15. Wireless LANs
Wireless LANs Wireless Ethernet CSMA/CA Personal area network(PAN) Bluetooth Architecture Comparison Medium Hosts Isolated LANs Connection to Other Networks 특징 감쇠 간섭 다중 경로 전파 전파 반사로 인해 매우 다양한 경로가 만들어 진다. 오류 Access Control CSMA/CD는 무선랜으로 동작하지 않는다. ... Read More
-
13. Wired LANs Ethernet
Ethernet Wired LAN Token Bus Token Ring FDDI ATM LAN Standard Ethernet Connectionless and Unreliable Service Frame format preamble 7 bytes 0101… start frame delimiter(sfd) 1 byte 10101011 destination address 6 bytes source addres... Read More
-
16. Other Wireless Networks
Cellular Telephone Networks Cellular Telephony는 두 움직이는 객체 간에 통신을 지원하기 위해 설계되었다. Mobile stations 이라고 한다. 주파수 재사용 원칙 전송 수신 Handoff 로밍 Generation 1G 2G 3G 4G 이동 수단에 100Mbps, 정지 수단에 1Gbps의 속도를 제공한다. 자연스러운 Handoff 5G 일반적인 인터넷 서비스에 대해 10Gbps의 속도를 제공한다. Satellite Networks Read More
-
14. Other Wired Networks
Telephone Networks Major components Local loops Trunks Switching offices Local-access transport areas (LATAs) ADSL(Asummetrc Digital Subscriber Line) Cable networks Hybrid Fiber Coaxial (HFC) Cable TV for Data Transfer CM and CMTS Read More
-
12. Media Access Control
MAC Data link layer Data link control Multiple-access resolution Multiple Access Protocols Multiple Access Protocols Channelization(Partitioning) TDMA FDMA CDMA Random access ALOHA CSMA CSMA/CD ... Read More
-
11. Data Link Control
DLC Services Framing Flow Control Error Control Framing Character-Oriented Framing 데이터를 구별하기 위해 flag를 앞 뒤에 추가한다. 데이터 안에 flag패턴이 포함되어 있으면, 혼동이 생기므로, 데이터 내에 추가적인 패턴을 삽입하여 구분하게 된다. 이를 byte stuffing이라고 한다. Header에 검증을 위한 데이터를 추가한다. 아스키 코드 전달이 목적 최근에는 잘 사용되지 않는다. Bit-Oriented Framing 비트 단위로 데이터를 구별하기 위해 flag를 사용한다. Character 방... Read More
-
17. Connecting Devices and Virtual LANs
Connecting Devices 5 Categories of Connecting Devices Repeater LAN의 연장선 역할을 한다. 데이터를 받아 증폭하여 다시 전송한다. Link Layer Switches(Switch, Bridge) Filtering 스위치는 필터링 테이블을 가짐. Transparent Switches 프레임은 스테이션 간에 전송된다. 포워딩 테이블은 프레임의 움직임을 파악하여 자동적으로 네트워크 상에서 생성된다. 시스템에서 반복은 발생하지 말아야 한다. A learning bridge and the... Read More
-
Android 커스텀 레이아웃으로 앱 위젯 만들기
App Widgets 이란? 아래 사진과 같이 런처 앱에서 설치된 앱의 기능을 사용할 수 있도록 해줍니다. Widget을 만드는 방법 아래의 안드로이드 공식 문서를 통해 기본적인 제작 방법을 학습할 수 있습니다. Create app widget - Android developers App widget processing flow 앱 위젯을 처리하는 흐름 핵심 BroadcastReceiver로 위젯 업데이트 처리 RemoteViews로 위젯 UI를 처리 위젯 제작 과정 아래는 예시 입니다. 전체 예제 코드 res 디렉토리... Read More
-
Navigation Component DeepLink로 이동시 Arguments 전달 편의성 개선하기
구현 목적 DeepLink 사용 시에도 Action으로 이동할 때 Arguments를 전달하는 것처럼 구현 하고자 합니다. 먼저 DeepLink와 Action으로 Arguments를 전달하는 방법을 알아봅시다. 각각의 Arguments 전달 방법 Action으로 Arguments 전달 XML 네비게이션 파일에 Argument를 선언하거나, 동적으로 Arguments를 선언하는 방법이 있습니다. // nav.xml 에서, 전달할 Arguments를 아래와 같이 정의해야 합니다. <argument android:name="name" android:defaultValue="이름"/>... Read More
-
Android Compose 첫 도입 후기
먼저, 코드를 보면 전체적인 구조가 기존 View와는 상당히 다른 것을 알 수 있습니다. 대한민국 식약처가 제약사에 대해 회수/폐기와 행정 처분을 내린 목록을 표시하는 화면입니다. 예제 코드 클래스 구성 NewsFragment 뉴스 화면을 표시할 메인 Fragment NewsScreen 위 Fragment에 나타나는 Compose 기반 뉴스 화면 RecallSuspensionScreen 회수 폐기 목록 화면 RecallSuspensionViewModel 위 화면에서 쓰이... Read More
-
Compiler IR
IR(중간 표현) IR의 핵심 속성 생성 용이성 조작 용이성과 비용 추상화 수준 표현의 자유 프로시저 크기 ### Read More
-
Compiler Context-sensitive analysis
Semantic analyzer(Context-sensitive analysis, 문법 분석기) 이전 두 개의 분석기(Lexical, Syntex analyzer) 보다 더 상세한 부분을 분석한다. 변수 선언, 자료형 등의 깊은 정보를 분석한다. 이 분석기에서는 types, scopes가 중요하다! Type systems 공통 타입은 integer, list, character를 포함한다. Type system의 구성 기본(Primitive) 타입 boolean, char, integer, real, etc.. ... Read More
-
Compiler Context-free analysis
Syntax analyzer(Context-free analysis, 구문 분석기) Scanner에 의해 생성된 토큰을 기본적인 문법(Context-free)에 맞는지를 검사하고, Parse tree를 생성한다. 문법에 맞지 않으면 오류를 알린다. Context-free grammer(CGF) 모든 생성 규칙이 V → w 를 따르는 형식적인 문법이다. V : Non-terminal 기호, w : Non-terminal과 Terminal로 구성된 문자열 구성 G = (S, NT, T, P) S ... Read More
-
Compiler Scanner
Scanner Word 인식 방법 상태 머신을 사용하고, 정규 표현식으로 구문을 분석한다. 정규 표현식 Formal language(형식적인 언어)이다. 규칙에 의해 명시된 Symbol의 집합이다. 애매한 부분이 있으면 안된다. 복잡한 Scanner개발 과정을 간소화 하기 위해, Scanner Generator를 사용하여 개발할 수도 있다. 예제 while fee | fie while | fee | fie Transition table 레지스터 : r0, r1... Read More
-
Compiler Overview
Compiler(컴파일러) 란? 입력 : High-level 프로그래밍 언어 → 컴파일러 → 출력 : Low-level 어셈블리 언어 컴파일러는 어떤 언어로 작성된 프로그램을 컴파일 시간과 런타임 시간에 다른 언어로 번역하는 역할을 한다. 컴파일러 동작 시점 컴파일 시간(정적, 프로그램 실행 이전) 런타임 시간(동적, 프로그램 실행 중) 또는 컴파일과 런타임 시간 동시에 컴파일러 역할 프로그램을 읽고 이해한다. 필요한 작업을 정확하게 결정하고, 그 동작을 수행하는 방법을 알아낸다. 컴퓨터가 그러한 작업... Read More
-
TABLE 다루기
CREATE TABLE을 생성 하기 위해 사용한다. 학생, 과목, 수강 TABLE을 만듭니다. CREATE TABLE 학생 ( 학번 VARCHAR2(7), 이름 VARCHAR2(20), 학과번호 VARCHAR2(3), 이수학점 INT, 평점 FLOAT, PRIMARY KEY (학번) ); CREATE TABLE 과목 ( 과목번호 VARCHAR2(5), 과목이름 VARCHAR2(30), 최대인원 INT, PRIMARY KEY (과목번호) ); CREATE TABLE 수강 ( 학번 VARCHAR2(7), 과목번호 VAR... Read More
-
Oracle SQL 학습 시작
Oracle SQL Oracle SQL에서는 다양한 종류의 문법이 사용됩니다. 이러한 문법은 데이터베이스에서 데이터를 조작하고 관리하는 데 사용됩니다. 주요 문법 유형은 다음과 같습니다. SQL 문법의 종류 데이터 정의 언어 (DDL): 데이터베이스 스키마를 정의하고 구조를 변경하기 위해 사용됩니다. CREATE, ALTER, DROP, TRUNCATE 등의 구문이 포함됩니다. 데이터 조작 언어 (DML): 데이터를 검색, 추가, 수정 및 삭제하기 위해 사용됩니다. SELECT, INSERT, UPDATE, DELETE 등의 구문이 포함됩니다... Read More
-
SELECT문 정복하기
SELECT DB에서 데이터를 검색하기 위해 사용합니다. SELECT 할때 사용되는 연산자 산술 연산자 +, -, *, / 비교 연산자 =, <>, !=, <, > 등 논리 연산자 NOT, AND, OR 등 결합 연산자 집합 연산자 UNION ALL, U... Read More
-
JOIN 정복하기
JOIN JOIN은 두 개 이상의 테이블에서 데이터를 연결하여 하나의 결과 집합으로 반환하는 데이터베이스의 연산입니다. JOIN을 사용하면 각 테이블의 행들을 일치하는 조건을 기반으로 결합할 수 있습니다. Oracle SQL에서 제공하는 JOIN 종류는 다음과 같습니다: INNER JOIN 두 테이블에서 JOIN 조건을 만족하는 레코드들만을 반환하는 JOIN입니다. Syntax: SELECT … FROM table1 INNER JOIN table2 ON 조인 조건 LEFT JOIN (LEFT OUTER JOIN) 왼쪽 테이블의... Read More
-
데이터통신
2장 네트워크 모델 프로토콜 계층화는 통신 프로세스를 특정 기능을 수행하는 개별 계층으로 분할하는 것을 말합니다. 프로토콜 계층화의 원칙에는 양방향 통신, 각 계층 아래 동일한 객체, 계층 간 논리적 연결 등이 포함됩니다. TCP/IP 계층 응용 앱 프로토콜 전송 전송 프로토콜 네트워크 인터넷 프로토콜 Packet을 처리 데이터 링크 LAN,WAN과 연관, HW가 처리 Frame를 처리 물리 LAN,WAN과... Read More
-
StateFlow vs SharedFlow
StateFlow, SharedFlow 상속관계, Cold/Hot stream Flow <- SharedFlow <- StateFlow Flow Cold stream, collect 를 할 때마다 emit 된 모든 값들을 받는다. ex) 어떤 Flow 를 1부터 10사이의 모든 정수를 emit(방출) 한 경우, Collector 가 해당 Flow 를 collect 하면 모든 값(1~10사이의 정수, 이때 까지 emit된 모든 값)들을 전달받음 SharedFlow, StateFlow Hot stream, collect 이 시작된 시점 이후의 emit 된 값을 전달받음 StateFlow S... Read More
-
How to use Compose in XML layout in Android
View기반 화면(XML)에서 Compose를 사용하는 방법 Compose는 상호 운용이 가능하여 뷰 기반(XML) 화면 에서도 사용할 수 있다. 1. Compose화면 코드 제작 Compose를 사용하기 위해서는 Composable 함수를 만들어야 합니다. MyComposable.kt @Composable fun MyComposable() { Scaffold( topBar = { TopAppBar( title = { Text(text = "Compose in Fragment") } ) ... Read More
-
Activity 알아보기
Activity 분석 Android에서 Activity는 여러 종류가 존재한다. Activity의 상속 구조 android.app.Activity(최상위) <- androidx.activity.ComponentActivity <- FragmentActivity <- AppCompatActivity 1. android.app.Activity Android 에서 가장 상위에 있는 Activity 2. androidx.activity.ComponentActivity 상위 Level의 컴포넌트를 구성할수 있는 Activity androidx.AppCompat ... Read More
-
Android 모듈화 with 'Now in Android'
Now in Android, Modularization Now in Android repository Google에서 제작 중인 안드로이드 개발용 샘플 App으로, 최신 앱 아키텍처에 따라 개발되고 있어 학습에 유용하다. Now in Android를 통해 알수 있는 것 Kotlin, Coroutines, Flow, Compose, Material 3 Official App Architeture https://developer.android.com/topic/architecture App Modularization https://developer.android.com/topic/modularizat... Read More