전체 글 612

[Android 입문] 4주차 스터디 -Viewpager2, TabLayout, Navigation View

1. Viewpager2 ViewPager 라이브러리의 개선된 버전으로, 세로 페이징 (android:orientation="vertical")과 오른쪽에서 왼쪽 페이징 (android:layoutDirection="rtl")을 지원한다. 화면 슬라이드: 하나의 전체 화면에서 다른 전체 화면으로 전환하는 것 Viewpager2 객체를 활용하여 스와이프로 화면 전환을 구현할 수 있다. Viewpager2를 쓰기 위해서 build.gradle.kts (Module :app)에서 플러그인을 추가해줘야 한다. dependencies { implementation("androidx.viewpager2:viewpager2:1.0.0") } Viewpager2를 사용하기 위해 화면에 보여줄 프래그먼트 레이아웃과 클래..

[Algorithm] 4주차 스터디 - 정렬, 다이나믹 프로그래밍, 그리디

목차 1. 개념 정리 (1) 정렬 (2) 다이나믹 프로그래밍 (3) 그리디 2. 4주 차 필수 문제 풀이 (1) A - 단어 정렬 (백준 1181번) (2) B - 팔찌 만들기 (백준 25707번) (3) C - 개발자 지망생 구름이의 취업 뽀개기 (백준 29155번) (4) D - 피보나치 비스무리한 수열 (백준 14495번) (5) E - 연속합 (백준 1912번) 1. 개념 정리 (1) 정렬 1 -1. Merge Sort 재귀적으로 수열을 나눠 정렬한 후 합치는 정렬법이다. 시간복잡도 O(NlogN)에 동작한다. 길이 N과 길이 M 인 리스트가 만나 길이 N + M의 정렬된 리스트를 만든다. 길이 N과 길이 M의 나머지 중 가장 앞에 있는 원소를 비교해 채워넣는다. O(N+M) 수행 가능 분할하는 ..

[Android 심화] 4주차 스터디 - AAC ViewModel

ViewModel이란? business logic or screen level state holder It exposes state to the UI and encapsulates related business logic. Android Jepack의 구성요소 중 하나로 Activity와 fragment와 같은 UI 컨트롤러의 로직에서 데이터를 다루는 로직을 분리하기 위해 만들어졌다. 본래 ViewModel이란 이름은 소프트웨어 개발 디자인 패턴 중 하나인 MVVM(Model - View - ViewModel) 디자인 패턴으로부터 파생되었다. 이 글에서 설명할 ViewModel은 AAC(Android Architecture Components) ViewModel이다. ViewModel의 생명주기 View..

[Flutter] 4주차 스터디_StatefulWidget과 BuildContext

1. StatefulWidget Stateless Widget - 변경 가능한 상태가 필요하지 않은 위젯이며, 사용자 인터페이스를 보다 구체적으로 설명하는 위젯 집합을 구축하여 인터페이스의 일부를 설명한다. 화면이 로드될 때 한 번만 그려지는 State가 없는 위젯이다. Stateful Widget - 변경 가능한 상태를 가지는 위젯이며, 위젯이 빌드될 때 동시에 읽을 수 있고 setState를 사용해 상태에 따라 변할 데이터를 보여준다. stateless 위젯과 달리 두 하위클래스 StatefulWidget과 State로 구성되어 있다. setState(() {}) 위젯의 상태가 State 객체에 저장되어 위젯의 상태와 모양을 분리한다. 위젯의 상태가 변경되면 상태 자체가 setState() 를 호출하..

[ML입문] week4 - 비지도 학습

비지도 학습이란? 정답(target, label)이 없고 특성 데이터만 주어지는 학습 방법이다. 종류는 군집과 차원 축소로 나눌 수 있다. 1. 군집 알고리즘 군집 (클러스터) : 비슷한 패턴들을 묶어놓은 집단 1) 데이터 준비 가로 100px, 세로 100px의 사과, 파인애플, 바나나 사진을 각 100개씩 준비하여 numpy 배열로 변환한다. # !: shell 명령어 !wget https://bit.ly/fruits_300_data -O fruits_300.npy import numpy as np import matplotlib.pyplot as plt fruits = np.load('fruits_300.npy') print(fruits.shape) # (300, 100, 100) 10000 pin..

[Spring 심화] 4장 예외

1️⃣ 사라진 SQLException public void deleteAll() throws SQLException { this.jdbcContext.executeSql("delete from users"); } // SQLException이 사라짐 public void deleteAll() { this.jdbcTemplate.update("delete from users"); } 초난감 예외처리 예외 블랙홀 catch 블록을 써서 잡아낸 후 아무 처리도 하지 않음 try { } catch(SQLException e){ } 시스템의 오류나 이상한 결과의 원인을 찾을 수 없음 화면에 출력한 경우도 예외를 처리한 것이 아님 } catch(SQLException e){ System.out.println(e);..

[스프링 입문] 4주차 chap 05 - 스프링 시큐리티와 OAuth 2.0으로 로그인 기능 구현하기

chap05 - 스프링 시큐리티와 OAuth 2.0으로 로그인 기능 구현하기 스프링 시큐리티는 막강한 인증과 인가 기능을 가진 프레임 워크이다. 스프링 기반의 애플리케이션에서는 보안을 위한 표준이라고 생각하면 된다. 인터셉터, 필터 기반의 보안 기능을 구현하는 것보다 스프링 시큐리티를 통해 구현하는 것을 적극적으로 권장하고 있다. 5.1 스프링 시큐리티와 스프링 시큐리티 OAuth2 클라이언트 먼저 OAuth란 무엇인지에 대해서 찾아봤다. OAuth (Open Authorization) 은 인터넷 사용자들이 비밀번호를 제공하지 않고, 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 개방형 표준을 의미한다. OAuth..

[Spring 심화] 3장 템플릿

☘️ 3.1 다시 보는 초난감 DAO ☘️ 3.1.1 예외처리 기능을 갖춘 DAO [JDBC 수정 기능의 예외 처리 코드] JDBC 코드는 어떤 상황에서도 가져온 리소스를 반환할 수 있도록 try/catch/finally 구문 사용을 권장한다. ☘️ 3.2 변하는 것과 변하지 않는 것☘️ 3.2.1 JDBC try/catch/finally 코드의 문제점 테스트를 통해 DAO마다 예외상황에서 리소스를 반납하는지 체크하게 해야 하지만 .. 3.2.2 분리와 재사용을 위한 디자인 패턴 적용 [메소드 추출] 변하는 부분을 메소드로 빼서 독립시킨다. 이렇게 하면 분리시키고 남은 메소드가 재사용이 필요하고, 분리된 메소드는 DAO 로직마ㅏㄷ 새롭게 만들어서 확장되어야 한다. [템플릿 메소드 패턴의 적용] 템플릿 메..

[ML입문] week3 - 분류 알고리즘(2), 트리 알고리즘

확률적 경사 하강법 확률적 경사 하강법 점진적 학습 알고리즘 중 대표적인 것은 확률적 경사 하강법(Stochastic Gradient Descent) 전체 샘플을 사용하지 않고 train set에서 random하게 단 하나의 sample을 고르는 것이다. epoch(에포크) : train시에 train set을 한 번 모두 사용하는 과정이다. train data에서 random하게 sample을 뽑아 사용한다. 대상 데이터를 섞은 후 random하게, 일반적인 GD처럼 데이터를 한 개씩 추출하여 가중치를 업데이트한다. 장점 한 번 가중치를 업데이트하는 시간이 빠르다. 메모리 소모가 적다. local minima를 회피할 수 있다(항상 맞는 말은 아님) 단점 전체 데이터셋을 반영하는 데 오래 걸린다. gl..

[Android 입문] 3주차 스터디 -ListView, RecyclerView, ListView와 RecyclerView의 차이점

1. ListView ListView는 아이템의 전체 개수가 아닌 화면에 보여지는 개수 만큼만 View를 그려놓는다. listview는 adapter가 연결되어있어야 본인 데이터들을 직접 input 를 넣어줄 수 있음 -UserAdpaterKt Adapter는 전원을 연결할 때 쓰임 -> 비슷하게 데이터와 아이템에 대한 뷰를 생성해주는 기능 : 데이터를 관리하고 뷰를 관리하는 기능이다. class UserAdapter (val context: Context, val UserList: ArrayList) : BaseAdapter() UserAdapter.kt 코틀린 파일에서 val 변수 로 선언한다. (*이후 ':' 로 할당받음) val UserList: ArrayList : User 라는 모듈을 기준으로..