목록분류 전체보기 (420)
외로운 Nova의 작업실
- 액티비티 상태 액티비티를 다룰때는 생명주기를 이해하고 각 상황에 맞게 대처해야합니다. 여기서 생명주기란 액티비티가 생성되어 소멸하기까지의 과정을 말하며 액티비티 클래스는 액티비티가 상태변화를 알아차릴 수 있는 여러가지 콜백 함수를 제공합니다. 이 콜백 함수에 액티비티 상태가 바뀔때마다 앱이 어떻게 동작해야하는지를 구현합니다. 액티비티의 상태는 다음처럼 크게 3가지로 구분할 수 있습니다. 활성 : 액티비티 화면이 출력되고있고 사용자가 이벤트를 발생시킬 수 있는 상태 일시 정지 : 액티비티의 화면이 출력되고 있지만 사용자가 이벤트를 발생시킬 수 없는 상태 비활성 : 액티비티의 화면이 출력되고 있지 않은 상태 - 활성 상태 활성 상태는 액티비티가 실행되어 화면에 나오고 사용자 이벤트를 처리할 수 있는 상태..
- 인텐트 인텐트란 한마디로 컴포넌트를 실행하려고 시스템에 전달하는 메시지라고 정의할 수 있습니다. 즉, 기능을 수행하는 함수를 제공하는 클래스가 아니라 데이터를 담는 클래스입니다. 이 인텐트 데이터는 컴포넌트를 실행하는 정보이며 이 정보가 담긴 인텐트 객체를 시스템에 전달하며 컴포넌트가 실행됩니다. 인텐트가 무엇인지 알아보고자 한 앱에 MainActivity와 DetailActivity거 있다고 가정해봅시다. MainActivity가 실행되고나서 DetailActivity로 화면을 전환한다면 DetailActivity 클래스의 객체를 생성해서 실행하면 되지만 만약 DetailActivity가 안드로이드의 컴포넌트 클래스라면 개발자가 코드에서 직접 생성해서 실행할 수 없습니다. 이때는 시스템에게 Deta..
- 플로팅 액션 버튼 확장된 플로팅 액션버튼은 화면에 떠 있는 듯한 버튼을 제공하는 뷰입니다. 대체로 아래와 같이 사용합니다. icon 속성으로 이미지를 지정하고 text 속성으로 문자열을 지정할 수 있습니다. 19장까지 만들었던 앱위에 플로팅 액션버튼을 올려보겠습니다. - 메인 xml 플래그 부분에 constrain 레이아웃을 설정해주고 그 위에 플로팅 액션버튼을 놓아줍니다. - 메인 액티비티 버튼 클릭시 동작을 설정해줍니다. 버튼이 눌리면 글씨가 보였다가 안보였다가 반복하는 코드를 써줍니다. //확장된 플로팅 액션버튼 조절 binding.extendedFAB.setOnClickListener{ when(binding.extendedFAB.isExtended){ //글씨가 보이거나 안보인다면 true ..
보호되어 있는 글입니다.
- 내비게이션 뷰 드로어에는보통 메뉴항목을 나열하는 형태로 구성합니다. 그리고 메뉴를 클릭했을때 이벤트를 처리하게됩니다. 이러한 부분을 쉽게 구현하기위해 안드로이드x는 내비게이션뷰를 제공해줍니다. 네비게이션 뷰의 구성은 아래와 같습니다. - activity_main.xml 드로어 레이아웃을 잡아주시고 첫번째태그(본 화면에 나올 화면)는 이전에 탭화면을 구성한 화면으로 놔두고 두번째 화면(드로어 화면)은 navigation_header와 menu를 따로 xml파일을 만들어 연결해주었습니다. - navigation_headere.xml - menu_navigation.xml - MainActivity.kt 이전에 탭화면과 같이 드로어를 구성했습니다. 드로어 아이템 클릭시 콜백함수는 setNavigationI..
- 탭 레이아웃 탭 레이아웃은 탭으로 구분하는 화면에서 탭버튼을 배치하는 레이아웃입니다. 이러한 탭부분을 손쉽게 만들어주는 레이아웃이 바로 탭 레이아웃입니다. 탭 레이아웃은 동적으로 만들려면 kt 코드부분에서 tab을 추가하는 코드를 만들어야합니다. 하지만 정적으로 만들어도된다면 xml파일로 만들 수 도 있습니다. - 메인 액티비티.xml 탭과 화면 구성 메인액티비티.xml과 화면은 간단하게 구성하였습니다. - 메인 액티비티.kt 구성 탭화면 전환은 프래그먼트를 사용사용하여 구성하였습니다. 이는 저번에 만들어둔 것을 사용한 것으로 궁금하시다면 프래그먼트 편을 참고부탁드립니다. 관련 내용은 주석으로 달아놨습니다. package com.example.test import android.os.Bundle im..
안녕하세요. 이번시간에는 node-serialize 문제를 풀어보도록 하겠습니다. - 문제인식 /app/flag에 플래그가 있다고 하는군요. 문제 파일을 보겠습니다. const express = require('express'); const cookieParser = require('cookie-parser'); const serialize = require('node-serialize'); const app = express(); app.use(cookieParser()) app.get('/', (req, res) => { if (req.cookies.profile) { let str = new Buffer.from(req.cookies.profile, 'base64').toString(); // Sp..
- 머터리얼 라이브러리 머터리얼 라이브러리란 애니메이션을 넣어 아름답고 직관적인 경험을 사용자에게 선사하는 라이브러리입니다. 포인트는 애니메이션입니다. - 앱바와 코디네이터 뷰를 사용하여 스크롤 연동하기 애니메이션중 하나인 스크롤을 머터리얼 라이브러리를 사용해서 연동해보겠습니다. 예를들어 유튜브의 경우에 가로로 보는 영상을 하나 틀고 아래 관련동영상 부분을 스크롤하게되면 영상은 가만히 있고 아래쪽만 스크롤되게됩니다. 이때는 스크롤이 연동되지 않은 상태입니다. 하지만 유튜브 컨텐츠중 세로로보는 영상이라면 아래 관련 동영상 부분을 스크롤하게되면 영상도 올라가게됩니다. 이때를 스크롤이 연동되었다고 말합니다. 보통 어플을 만들때 앱바를 많이들 사용합니다. 앱바는 위쪽의 꾸밀 수 있는 영역을 의미합니다. 유튜브에..
이번 장에서는 크랙미 10을 크랙해보겠습니다. - 문제 파악 한번 실행해보겠습니다. 시리얼을 입력하고 check 버튼을 눌러서 확인하는 것같다는 생각이듭니다. 1234를 넣고 check버튼을 눌러보겠습니다. wrong으로 틀리다고 나옵니다. 이번 문제도 시리얼 넘버를 맞추는 문제인것 같다는 생각이듭니다. - 리버싱 먼저 올리디버거로 리버싱해보겠습니다. F9를 눌러서 프로그램의 시리얼값을 받을때 pause 되어야되지만 실제 F9를 누르면 프로그램이 종료가됩니다. 이는 첫번째 실행되는 코드부분에서 디버깅되었는지 확인하는 코드때문입니다. CPU Disasm Address Hex dump Command Comments 00401000 /$ E8 37020000 CALL ; [KERNEL32.IsDebuggerP..
- 드로어 레이아웃 드로어 레아이웃은 액티비티 화면에 보이지 않던 내용이 왼쪽이나 오른쪽에서 손가락의 움직임에 따라 밀려 나오는 기능을 말합니다. 드로어 레이아웃의 특징은 xml에 드로어 레이아웃 태그안에 첫번째 태그는 화면에 그냥 보여주고 두번째 태그는 스와이프를 해야 밀려나오게합니다. 따라서 드로어 레이아웃을 만들때는 그 안에 태그가 2개 있어야합니다. - 그래들 파일에 드로어 레이아웃 선언 implementation "androidx.drawerlayout:drawerlayout:1.1.1" - 메인 액티비티.xml 이제 메인액티비티.xml에 드로어 레이아웃 자리를 만들어줍니다. 보통 최상위에 두어서 드로어가 전체화면에서 나오게 만듭니다. 또한 드로어 레이아웃 안의 첫번째 태그와 두번째태그를 적절히..