개요 토익 공부하면서 단어 외우고 있는데 문장을 제데로 해석하려면품사의 개념을 정확하게 알고 가는 것이 좋을 것 같다는 생각이 들었다. 품사란?품사는 문장에서 단어의 역할을 분류한 것으로 각 단어가 문장에서 어떤 의미를 가지고 있는지를 나타내는 역할을 한다. 전통적으로 단어는 8개의 품사로 분류한다. (명사, 대명사, 동사, 형용사, 부사, 전치사, 접속사, 감탄사) 명사란? 명사는 사람, 사물, 장소, 개념 등과 같이 특정한 대상이나 개념을 나타내는 품사이다. 대명사란? 대명사는 체언(문장의 주체)를 대신하여 사용되는 품사이다.대명사는 반복을 피하고 문장을 더 간결하게 만들기 위해서 사용한다. 지시 대명사는 구체적인 대상을 가리키거나 지칭할 사용하고,부정대명사는 분명히 정해지지 않는 막연한 것을..
토익 왜함?슬슬 군대갈 때 됬는데 여러모로 알아보니까 토익이 필요해서 시작한다. 카투사 지원 성공 확률은 상당히 낮지만 대우는 젤 괜찮다고 해서토익 780+ 찍고 카투사 넣어볼 생각이다. 카떨공 카투사 떨어지면 공군 지원할 예정이다.공군도 가산점 작게나마 토익 가산점이 존재한다. 이번엔 열심히 해보자사실 예전부터 토익 제데로 해볼까 생각은 했는데그 때 필요성을 못느껴서 찍먹만 하고 그만뒀다. 군대 아니어도 토익 따놓으면 나중에 이력서에도 기술할 수있으니 따놓을 이유는 충분하다고 본다. 산타 토익 이왕 마음 먹은 거 제데로 해보려고 산타 토익 포인트 환급반 질렀다. 실제 토익이랑 달라서 도움이 안된다는 의견도 있었지만, 휴대폰, 컴퓨터 상관없이 언제 어디서든 공부할 수 있기에 접근성이 좋고저 패..
계정 복구 서비스 UI 이메일 찾기는 이름을 통해 진행할 것이고,비밀번호 재설정은 이메일 인증을 통해 진행할 것이다. 두 화면을 따로 구현할 수도 있지만 같은 나같은 경우는텍스트 스위치 위젯을 통해 한 화면에서 계정 복구를 진행할 수 있도록 했다. TextSwitchfun ContentDrawScope.drawWithLayer(block: ContentDrawScope.() -> Unit) { with(drawContext.canvas.nativeCanvas) { val checkPoint = saveLayer(null, null) block() restoreToCount(checkPoint) }}@Composablefun TextSwitch( mo..
키보드 백드롭이란? 키보드 활성화 시 잠깐 생기는 임시 여백을 키보드 백드롭이라고 한다. 키보드 백드롭 색 설정 #F9F9F9 #222329키보드 백드롭의 색은 컬러 리소스로 지정해야 하기에res/color에서 라이트모드와 다크모드 배경색을 추가한다. @AndroidEntryPointclass MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { val keyboardBackDropColor = if (!isSystemInDarkTheme()) R.co..
회원가입 UI 회원가입을 하려면 이메일, 이름, 비밀번호를 입력해도록 구현했다. 회원가입 Flow1. 이메일 입력2. 인증 요청 버튼 클릭3. 입력한 이메일과 선언해둔 임시 비밀번호로 임시 계정 생성4. 파이어베이스는 회원가입 시 자동으로 로그인을 진행함5. 로그인된 사용자 정보 기반으로 이메일 인증 요청 메일 수신6. 이메일 인증 완료 혹은 가입 취소시 임시계정 삭제7. 모든 밸리데이션 통과 후 회원가입 버튼 누르면 실제 계정 생성8. 로그인 화면으로 라우팅파이어베이스는 이미 가입된 유저만이 이메일 인증을 할 수 있기에위와 같은 흐름으로 파이어베이스 이메일 회원가입을 구현할 것이다. 파이어베이스 설정 Authentication 탭에 들어가서 이메일/비밀번호 로그인을 활성화 해준다.그래야 이메일 인증..
개요 위와 같이 여러개의 텍스트 필드가 화면에 배치되게 되면키보드가 올라올 때 하단에 위치한 텍스트 필드를 가리게 되는 문제가 발생한다. 이를 방지하기 위해 키보드 스크롤 설정을 해줘야 한다. 매니패스트 설정 메인 액티비티 부분에 해당 구문을 추가한다. UI 구조@Composablefun ContentResizingScreen( contentColumn: @Composable ColumnScope.() -> Unit, bottomRow: @Composable RowScope.() -> Unit) { val focusManager = LocalFocusManager.current val scrollState = ..
로그인 UI 먼저 로그인 화면부터 구현할 것이다. 로그인 Flow1. 로그인 진행2. 로그인 시 유저 이메일과 자동 로그인 여부를 로컬 저장소에 저장3. 저장된 값을 기반으로 초기 화면 라우팅 진행, 유저정보 가져오기로그인 진행 시 이메일 값을 기반으로 유저 정보를 가져오도록 한다.이메일을 키로 선택한 이유는 이메일은 계정의 고유한 값이기 때문이다. 의존성 추가plugins { ... id("com.google.gms.google-services") version "4.3.8" apply false}프로젝트 수준의 그래들 파일에 위와 같은 의존성을 추가한다. plugins { ... id("com.google.gms.google-services")}dependencies { ....
기존 방식app/src/main/java/com/hamond/escapeanchovy/constants/Secret.kt기존에는 .gitIgnore 파일에 깃허브에 업로드 하지 않을 상수 파일을 설정하고 object Secret { const val API_KEY = "asdfasdfasdf"}여기다가 Api 키를 작성한 뒤 사용하는 방식이었다. 문제 발생카카오 로그인을 구현할 때 매니패스트 파일에서Api키를 활용해야되는 문제가 발생했다. BuildConfig 활용local.properties에 키값을 저장한다.해당 파일은 기본적으로 gitIgnore 설정이 되어있다. android { ... val properties = Properties() properties.load(Fi..