IT(44)
-
Flutter의 아키텍처와 BuildContext
Flutter에서 BuildContext를 이용해 조상 widget에 접근할 수 있다. React 사용자라면 Recoil과 같은 상태 관리툴에 익숙할 것이다. 마치 React의 Recoil처럼, Flutter애서는 BuildContext를 통해 아주 편리하게 상위 컨텍스트에 접근가능하다. 이번 포스팅을 통해 Flutter의 아키텍처와 동작원리를 간략히 살펴보고, BuildContext에 대해 좀 더 확실히 살펴보자. 1. Flutter framework의 Layers Flutter는 모든 것이 widget이다. 단 한 개의 단어부터 한 페이지에 이르기까지 플러터의 모든 것은 위젯이다. 위젯이란 정확히 무엇일까? 플러터는 위와 같은 구조로 추상화되어 있다. 보통 개발자들은 최상위 단의 Material, C..
2023.08.17 -
Dart의 Compile Platform
Dart 언어는 만능이다. Dart로 웹페이지, 안드로이드 모바일 앱, IOS 모바일 앱, 윈도우 데스크탑 앱, macOS 데스크탑 앱을 제작할 수 있으며, 심지어 백엔드 서버 코드로도 사용가능하다. 이게 가능한 이유는 Dart가 Javascript로 완전한 컴파일이 가능하기 때문이다. 사실 Javascript야말로 진정한 만능 언어다. Javascript로 모든 서비스를 개발하고 업무를 처리할 수 있다. 그리고 그러한 Javascript 개발을 특히 서비스의 UI적인 측면에서 더욱 쉽게 활용할 수 있도록 하는 Dart 또한 만능 언어라 할 수 있다. 1. JIT vs AOT JIT(Just in Time) 컴파일 방식은 파일을 실행할 때 컴파일을 진행한 후, 그렇게 바뀐 저수준 언어로 작업을 수행하는 ..
2023.08.03 -
Dart의 var, final, const
Flutter는 놀라운 프레임워크다. Flutter를 이용하면 웹, 모바일 앱, 데스크탑 앱 등 온갖 서비스를 구현할 수 있다. 그리고 Dart는 바로 이러한 Flutter의 언어다. Java를 비롯한 다른 언어들과 마찬가지로, Dart에는 변수명 앞에 붙이는 키워드가 여러 개 있다. 이번 포스팅을 통해 Dart에서 사용되는 var, final, const 키워드의 용도와 특징을 살펴보자. 1. var Dart에서는 변수를 선언할 때 직접 타입을 명시할 수도 있고, var키워드를 사용해 타입을 생략할 수도 있다. // case 1 String name = 'Mesotes'; // case 2 var blogName = 'Share2Learn'; 둘의 쓰임새는 똑같다. 위 예시의 경우, 명시적으로 타입을 ..
2023.07.27 -
Leetcode 9. Palindrome Number - Dart, Python
Leetcode 9 문제 보기 1. 문제 이해하기 정수 x가 주어진다. 이때 x가 palindrome이라면 true를, 아니라면 false를 출력하라. 2. 아이디어 구상 우선 int x가 입력값으로 주어지므로, 이를 string으로 치환, 거꾸로 뒤집어서 palindrome 여부를 판단하면 될 것이라는 생각이든다. 따라서 Python으로 풀 경우 boilerplate code를 제외하고 한 줄의 코드면 끝난다. class Solution: def isPalindrome(self, x: int) -> bool: return str(x) == str(x)[::-1] Dart의 경우에도 간단히 풀 수 있다. 다만 Dart는 string을 뒤집는 built-in function이나 [::-1] 같은 기법이 존..
2023.05.11 -
백준 1546. 평균 - Golang, Python
백준 1546 문제 보기 1. 문제 이해하기 n개의 점수가 주어진다. 이 중 최고점을 m이라 했을 때, 각각의 점수들을 "점수/M*100"으로 환산해 평균을 구하라. 예를 들어 2개의 숫자 10, 20이 주어진다면, {(10/20*100) + (20/20*100)} / 2 = 75, 따라서 75가 정답이다. 2. 아이디어 구상 구해야하는 값을 정리해보면 다음과 같다. 따라서 주어지는 전체 점수에 100을 곱한 후, 이를 전체 점수들의 개수와 최대값으로 나눠주면 된다. Python으로 풀 경우 주어지는 점수들을 리스트에 담아, 편리한 내장함수들을 이용해 간단히 문제를 해결할 수 있다. n = int(input()) nums = list(map(int, input().split())) print((sum(n..
2023.04.03 -
Leetcode 1. Two Sum - Dart, Python
Leetcode 1 문제 보기 1. 문제 이해하기 정수가 담긴 리스트 nums가 있다. 이때 리스트의 두 원소를 더해 정수인 target을 만족할 경우, 해당 두 원소의 인덱스의 조합을 출력하라. 하나의 원소를 중복 사용할 수 없으며, 각 test case의 정답은 딱 하나 존재한다. 2. 아이디어 구상 문제를 읽고 가장 먼저 떠오른 생각은 투 포인터를 이용해볼까하는 생각이었다. 그러나 조금만 생각해보면 투 포인터를 이용하기가 쉽지는 않다는 점을 알 수 있다. 투 포인터를 이용하려면 리스트 nums가 정렬되어야한다. 그러나 본 문제에서는 원소 그 자체가 아닌 인덱스를 출력해야하므로, 무턱대고 정렬할 경우 문제가 생길 수 있다. 때문에 정 투 포인터를 이용하고 싶다면, (value, index) 쌍으로 리..
2023.02.27