목록📖 전체보기 (254)
즐겁게, 코드
Android Jetpack Compose CodeLab 1주차 - Tweaking the UI 본 글은 Android Jetpack Compose CodeLab 1주차 강의를 정리한 내용입니다. 이전 글에서는 컴포즈가 제공하는 Text 라는 함수를 통해 텍스트를 화면에 띄워 봤는데요, 이번에는 UI를 구성하는 Surface와 Modifier 라는 기본적인 요소 및 속성에 대해 알아보도록 하겠습니다. Surface Surface 는 요소를 감싸는 컨테이너와 같은 역할을 하는 요소입니다. @Composable private fun Greeting(name: String) { Surface(color = MaterialTheme.colors.primary) { Text (text = "Hello $name!..
Android Jetpack Compose CodeLab 1주차 - Compose Basics 본 글은 Android Jetpack Compose CodeLab 1주차 - Compose Basics 를 정리한 내용입니다. 아마 안드로이드 개발을 접해봤다면, 안드로이드는 웹 프론트엔드와는 다르게 XML 파일을 수정하거나 드래그 앤 드롭 기반 레이아웃 에디터를 수정해 화면을 구성한다는 것을 기억하실 것입니다. 드래그 앤 드롭으로 레이아웃을 작성하는 방법은 어떤 면에서는 코드를 직접 작성하는 것보다 편리했지만, 레이아웃을 정의하기 위해 요소들간의 상대적인 관계를 알아야만 하거나, 동적으로 레이아웃을 구성해야 하는 경우에는 많은 어려움이 따랐습니다. 하지만 제트팩 컴포즈를 사용하면 마치 HTML의 마크업을 구성..
작성일 : 2021년 11월 07일 실행환경 : Apple Macbook Air with M1 Chip, MacOS 12.0.1, Android Studio Arctic fox [에러 메시지] : Failed to install the following Android SDK packages as some licences have not been accepted. build-tools; 30.0.2 Android SDK Build-Tools 30.0.2 M1칩 맥북에어에 처음 안드로이드 스튜디오를 설치하고 앱을 빌드하니 출력된 오류입니다. 원인은 라이센스 관련 SDK 도구가 설치되지 않았기 때문인데요, 한번 순서대로 해결해 보겠습니다. 1. 안드로이드 스튜디오 설정 진입 (영문명 : Preferences)..
아주 오랜 옛날부터, 전설로 내려오는 코드가 있습니다. (3학년 1학기에 수행했던 산학프로젝트 코드입니다.) 이 코드는 간단한 그룹 매칭 서비스에서 그룹을 생성하는 역할인데요, 여러 비동기 로직이 async-await 을 통해 순차적으로 실행되는 무시무시한 모습입니다. 얼핏 보면 비동기 로직 제어에 성공한 것처럼 보이지만 순차적으로 실행되는 약 7회의 POST 요청으로 인해 당시 그룹을 생성하는 데에만 약 20~30초 가량의 시간이 소요되었고, UX 개선을 위해 로딩 애니메이션을 별도로 제작하는 등의 수고를 더해야만 했습니다. 콜백, 프라미스, async-await 문법을 거쳐오며 비동기 로직 제어는 점점 쉬워졌지만 진화의 최종형인 async-await 을 사용하는 것만이 언제나 답이 되지는 않는데요, ..
Nest.js는 Express.js와 유사한 백엔드 프레임워크인데요, 아마 Express.js를 사용해본 경험이 있다면 한번쯤은 이런 고민을 해본적이 있을 것입니다. npm i express, 프로젝트 준비 끝! 그런데 이젠 뭘 해야하지? Express는 분명 편리하고 강력한 백엔드 프레임워크지만, 미들웨어와 라우팅 등의 기능을 자유도가 매우 높은 메서드로만 구현했기 때문에 프로젝트의 구조화 가 매우 어렵다는 단점이 있었습니다. Nest는 이런 문제를 해결하기 위해 타입스크립트를 기본으로 사용하고 모듈 단위를 통해 백엔드 코드를 보다 구조적으로 작성할 수 있게 해주는 프레임워크인데요, 오늘은 Nest의 소개와 함께 간단한 API 서버를 만들어보도록 하겠습니다. Nest 설치하기 Nest는 자체적인 cli..
바닐라 자바스크립트를 활용해 DOM에 접근할 때는 HTMLCollection, NodeList 등의 DOM 요소들의 컬렉션을 다루게 될 때가 있는데요, 이번 글을 통해 두 컬렉션의 성질을 간단히 알아보도록 하겠습니다. HTMLCollection 먼저 HTMLCollection은 getElementsByClassName 과 getElementsByTagName 메서드를 통해 얻을 수 있는 객체인데요, 한번 간단한 예제를 작성해 보겠습니다. Apple Banana Orange document.getElementsByClassName 함수를 통해 class="red" 속성을 갖는 요소들을 획득한 모습인데요, 자세히 보면 이 컬렉션은 일반적인 배열이 아닌 HTMLCollection 이라는 프로토타입을 기반으로 ..
[백준 온라인 저지 링크] 2992번: 크면서 작은 수 정수 X가 주어졌을 때, X와 구성이 같으면서 X보다 큰 수 중 가장 작은 수를 출력한다. 수의 구성이 같다는 말은, 수를 이루고 있는 각 자리수가 같다는 뜻이다. 예를 들어, 123과 321은 수의 구성이 www.acmicpc.net 간단한 브루트 포스 문제처럼 보일 수 있지만, N과 M 유형의 백트래킹 문제입니다. 주어진 수와 동일한 구성이면서 해당 수보다 처음으로 큰 숫자를 찾아야 하는데요, 여기서 동일한 구성의 수라 함은 각 자리수를 구성하는 수를 재배열해 만들 수 있는 수를 의미합니다. 즉, 주어진 수가 176이라면 671이 167과 "구성이 같은 수" 이자 첫 번째로 큰 수가 됩니다. 입력값이 1 ~ 999,999라고 해서 브루트 포스로 ..