티스토리챌린지 썸네일형 리스트형 플러터의 메인 프로그램 구조 자, 이제 그럼 main.dart를 하나하나 뜯어보는 시간을 가져보겠습니다.뭔가 고쳐보고 만들기 위해서는, 최초에 만들어졌을 때 어떤 구조를 가지는지 이해하는 것도 중요하다고 생각합니다. 기본 프레임main.dart의 구조는 다음 세 부분으로 구분할 수 있습니다. 모든 다트 프로그램은, 대부분의 C-like 프로그램과 마찬가지로 main()으로 시작합니다.그리고, 내부에서 runApp()이라고 하는 동작을 하는데요. 이것이 뭔가 제가 말씀드린 액션 역할을 하는 것으로 보입니다.딱 봐도 앱(App)을 실행시키라는(run) 느낌이죠? 그리고 그 앱이라는 타겟은, 밑에서 구현한 MainApp이라고 하는 클래스입니다.이전에 엔트리를 말씀드릴 때 오브젝트 말씀을 드렸었죠?다트에서 그 오브젝트에 해당하는 것이 여기.. 더보기 플러터 프로젝트의 구성 금요일에 뭔가 대충 돌아가게 만들어 놓고, 주말 내내 방치했습니다.달랑 문장 하나 출력해 놓고 말이죠.그런데 대체 뭘 했길래 아무것도 안 하고 (사실은 환경 설정만 신나게 했는데) 창도 띄우고 문장도 출력하고 하는 걸까요?오늘은 플러터 프로젝트의 개략적인 구조를 한 번 살펴보겠습니다. 일단 기본적인 형상은, lib 디렉터리 밑에 있는 main.dart 파일이 플러터 중심 기능을 하는 것처럼 보이는데요.그러니까, 각각의 앱에서는 이 플러터 모듈이 왠지 library처럼 쓰이고 있는 듯한 기분이 듭니다.과연 그런지, 하나하나 좀 뜯어보죠.android제일 위에는 android를 위한 구조가 있습니다. android는 사실 kotlin 소스 안에서는 크게 하는 일이 없습니다.그냥 MainActivity 생성.. 더보기 페이스북 광고를 통해 본 DI (Dependency Injection) ※ 주의: 그냥 드립입니다. 다큐로 받으시면 곤란합니다. 어제 좀 궁금한 것도 있고, 살만한 것이 있나 해서 쿠팡에서 썬더볼트 외장 SSD를 검색해 봤습니다.아들내미 무슨 보드게임도 좀 살만 한 게 없나 해서 승경도 게임 같은 것도 좀 찾아보고 했는데요. 오늘 낮에 스마트폰에서 페이스북 알림이 떠서 확인하고 홈으로 돌아오는데...아시다시피 페이스북은 광고가 엄청 많이 뜨죠.그런데, 귀신같이 쿠팡 광고란에 어제 제가 검색했던 그 외장 SSD와 보드게임들이 줄줄이 뜨는 겁니다. 처음에는 '에휴, 쿠팡에서 달라고 하면 개인 정보는 그냥 굴러 나오는구나 ㅋㅋ' 하고 말았는데...이게 생각해보니 뭔가 신박한 구조이지 않겠습니까? 그러니까, 페이스북 내부에 광고 블록이 있고 (위젯이라고 칩니다), 그 내부에 광고 .. 더보기 오늘은 진짜 뭘 쓰지를 못하겠네요 오늘도 이 시간입니다.며칠 안 남은 오블완 챌린지인데, 유독 힘든 하루네요.어제 일정이 힘들었는데 오늘 많이 못 쉬고 또 외출했다 들어왔습니다. 매일매일 자기 페이스를 유지하는 것은 쉬운 일이 아닙니다.시간 배분도 문제지만, 체력적인 문제가 크죠.저처럼 나이가 들고 가정도 있고 하면 더 큰 문제로 다가옵니다. 뭐라도 내용을 쓰고 싶은데, 오늘은 거의 몸살 상태네요.아무래도 오늘은 책이라도 읽으면서 누워 있다가 일찍 잠을 청해야 할 것 같습니다,내일 출근도 해야 하는데 이 컨디션이면 불안불안하네요. 진짜 넋두리였습니다. 더보기 프로그래밍 공부는 운동처럼 해야 합니다 역시나 이번 주말도 종일 집을 비웠다 이제 들어와 컴 앞에 앉았습니다.사실 오늘 낮에 무언가 쓸 생각을 좀 해 볼 수 있었을지도 몰랐는데, 역시나 컴 앞에 앉지 않으면 마음의 여유가 없네요.글이라는 게 참 그렇습니다. 마음의 여유가 없으면 한 줄도 써지지 않아요. 프로그래밍 공부를 한다는 것도 마찬가지인 것 같습니다.우리가 대부분 이 공부를 하는 이유는, 사실 이것으로 무슨 학문적인 성취를 하려는 것이 아니라,무언가를 만드는 기술을 익히고, 그것으로 취업을 하거나 혹은 그 기술로 무언가 만들기 위한 것이죠.그러다보니, 그것을 공부하는 과정보다 어떻게 하면 결과를 빨리 볼 수 있을까에 집착하게 되는 경향이 큰 것 같습니다. 하지만, 실제로 하다 보면 그렇게 쉬운 길이 아니죠.일단 뭐라도 만들어보라고 해서 .. 더보기 플러터 개발 환경 설치 이제 플러터 개발 환경을 만들어 보겠습니다. 비주얼 스튜디오 코드 설치플러터 공식 사이트(https://docs.flutter.dev/get-started/install)에 가서 여러분의 개발 환경에 맞는 기기로 가 보시면,다음 세 가지 환경을 중 한 가지를 구성하라고 이야기하고 있습니다.Visual Studio Code 1.77 혹은 그 이상 버전과 플러터 확장 프로그램(Extension)2024년 11월 현재 최신 버전은 1.95입니다.안드로이드 스튜디오(Android Studio) 2023.3.1 (Jellyfish) 혹은 그 이상 버전과 플러터 플러그인(Plug-in)2024년 11월 현재 최신 버전은 2024.2.1 (Ladybug)입니다.IntelliJ IDEA 2023.3 혹은 그 이상 버전.. 더보기 가지치기하기 좋은 프레임워크, 플러터(Flutter) 자 그래서, 과연 이것도 별로다 저것도 별로다. 뭘 얘기하려고 그랬던 걸까요?무슨 영업이라도 하려던 것 같습니다.사실 그렇게 생각하실까봐 걱정이긴 한데요.걱정 안하셔도 됩니다. 아니라고 일단 우겨보려고 합니다. (?) 하이브리드 플랫폼, 플러터(Flutter)제가 엔트리 다음으로 한 번 해보시라고 추천하려는 플랫폼(언어가 아닙니다)은, 바로 플러터(Flutter)입니다. 구글에서 2017년에 공개한 하이브리드 프레임워크인데요, 처음에는 모바일 개발용으로 공개됐습니다.그러니까 iOS와 안드로이드를 동시에 개발하는 용도로 소개됐죠.그러다 보니, 당시에 동일하게 하이브리드 모바일 앱을 만드는 리액트 네이티브(React Native)와 라이벌 관계가 생겼습니다.사실 지금도 좀 그런 이미지가 있죠. 아직도 플러터.. 더보기 [삽질 이야기] 잘 되던 코드에 홀리면 약도 없다 원래 오늘 포스팅은 '과연 무슨 프로그래밍 언어로 공부를 하면 좋은가'에 대한 이야기를 해보려고 했는데,오후 11시가 되도록 한 줄도 못 쓴 상태에서는 뭔가 좋은 글이 나올 리가 없겠죠.그래서, 이 시간이 되도록 글을 쓰지 못하게 한 원인에 대한 이야기를 해 보려고 합니다.정확히는 낮에 회사에서 한 삽질 이야기죠. 상황오늘 회사에서 제가 담당하던 안드로이드 앱을 배포할 일이 생겼습니다.중요한 수정 사항은 따로 있었지만, 그 동안 제가 몇 가지 코드 리팩토링을 좀 해 놓은 것들도 있었죠. 특히 안드로이드는 앱을 패키징하는 데 '그래들(gradle)'이라고 부르는 녀석을 사용하고, (자바 계열에서 많이 씁니다)이것과 연동하기 위해 안드로이드 그래들 플러그인(Android Gradle Plug-in, AGP).. 더보기 뭘 배워? 언어? 프레임워크? 라이브러리? 자, 이제 돌고 돌아 다시 "뭘 배우지?" 이야기로 돌아왔습니다.엔트리를 통해서 프로그램에 기본적으로 들어있는 요소들이 무엇인지를 알아보았고,최근에는 네트워크나 컴퓨터 환경의 발달 때문에 비동기 프로그래밍이 중요하다는 얘기까지 해 봤습니다.그렇다면, 이제 본격적으로 우리는 뭘 공부해야 할까요?우리는 공부해야 할 대상을 중구난방으로 부르고 있다예전에도 잠시 언급했지만, 우리는 프로그래밍을 처음 공부해야 할 대상을 뒤섞어서 부르고 있습니다.무슨 말인가 하면, 서로 같은 등급이 아닌 것을 마치 비슷한 등급인 것처럼 부르고 있다는 말입니다.들이의 단위인 리터(L)와 무게의 단위인 킬로그램(kg)을 똑같이 부르는 것같이 말이죠.'파이썬 공부가 제일 쉽습니다.''node.js 코딩을 잘할 줄 알아야 합니다''리액트.. 더보기 보이지 않는 벽, 비동기 프로그래밍 프로그래밍 언어의 기초 편이 어느덧 한 자락을 마쳤습니다.이제 드디어 기초에서 응용으로 가는 장벽, 비동기(asynchronous)에 관한 이야기를 해 보겠습니다. 비동기? 왜 필요하지?자, 특이한 말이 나왔으니 바로 뜻부터 알고 가야겠죠?여러 번 인용한 표준국어대사전(https://stdict.korean.go.kr)에서 찾아봅시다. 『정보·통신』 앞에서 행해진 사상(事象)이나 연산이 완료되었다는 신호를 받고 비로소 특정한 사상이나 연산이 시작되는 방식. 네. 말을 좀 바꾸면, "앞에서 뭔가 완료되었다는 '이벤트'를 받아서 '액션'을 시작하는 것"을 의미하는 말이라고 합니다.중요한 것은, '완료되었다는 이벤트'가 되겠죠. 무슨 말이냐 하면, 내가 어떤 오브젝트에 액션을 하게 시켰는데, 이게 바로 끝나는.. 더보기 이전 1 2 3 다음