IT/Concept(15)
-
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 -
Golang으로 Python의 collections.Counter 구현하기
String 분석 시 유용하게 사용가능한 nanoCounter; Python의 collections.Counter를 Golang으로 구현해보자. 1. Golang과 Python의 차이점 Golang은 단순한 언어다. Golang에는 while문도 없고 상속도 없다. Golang에는 개발자가 편리하게 사용가능한 built-in 함수가 거의 없다. 반면 진정한 의미에서 객체지향 언어라 할 수 있는 Python이나 Dart와 같은 언어에서는, ‘이런 기능 있을 것 같은데’ 생각을 하는 순간 보통 있음을 바로 확인할 수 있다. 2. Python의 collections.Counter 문자열 분석 시, 우리는 종종 각 character가 몇 번씩 출현하는지, 가장 많이 등장하는 character가 무엇인지 알아야하..
2023.02.13 -
자주 쓰는 Git Command를 정리해보자
협업에 있어 깃 사용은 필수다. 혼자서 프로젝트를 진행할 때는 굳이 왜 사용하는지 모를 것이다. 그저 포트폴리오로써 git commit을 남기기 위해 사용할 뿐.. 하지만 프로젝트의 규모가 커지면서 자연스레 깃과 깃허브의 중요성을 깨닫게 된다. (그러니 일단 협업을 해보자! 그래야 배운다.) 그렇다면 자주 사용하는 깃 명령어들을 간단히 정리하는 시간을 가져보자. 1. Branch strategy 우선 브랜치 전략이란 무엇인지 알아보자. 브랜치란 독립적으로 어떤 작업을 진행하기 위한 개념이다. 필요에 의해 만들어지는 각각의 브랜치는 다른 브랜치의 영향을 받지 않기 때문에 여러 작업을 동시에 진행가능하다. 예를 들어 프로젝트를 진행하는 과정에서 어떤 기능을 추가하고 싶으면 '브랜치를 딴다'. 몸통에서 갈라진..
2022.08.25 -
Javascript의 클로저란?
클로저(Closure)는 함수를 일급 객체로 취급하는 함수형 프로그래밍 언어에서 사용되는 대표적인 특성 중 하나다. MDN에 의하면 클로저의 정의는 다음과 같다. A closure is the combination of a function bundled together (enclosed) with references to its surrounding state (the lexical environment) 보통 어떤 개념의 정의는 개념에 대한 핵심을 압축해놓은 작은 책이다. 따라서 우리는 정의에 사용된 단어들을 일종의 목차내지 이정표 삼아서 탐색을 진행함으로써 그 책을 음미할 수 있다. 그러면 한 번 시작해보자. 1. Lexical environment 렉시컬 환경이란 코드를 실행하기 앞서 생성되는 특별..
2022.08.11