728x90

분류 전체보기 117

미국 영어 발음 연습하기

영어도 말인지라 발음이 무척 중요한데, 그 사실을 너무 늦게 배웠다. 이전에 배운 단어들 중에는 제대로 발음 하지 못해 실제로 쓸 수 없는 중요한 발음도 많은데, 그에 덧붙여 흔히 말하는 미국에서 주로 사용되는 미국식 영어에서 따라야 할 발음 법칙도 놓치면, 역시 언어 사용에 불편을 느끼게 된다. 까 놓고 말해, 말이 쉽게 통하지 않는다. 내가 어려움을 느꼈거나 실제로 유용하게 쓰인 것들은 다음과 같다. nt로 끝나면 [t]는 발음하지 않는다. 예) point 뽀인!. s 다음의 t는 [뜨] 발음 예) 소녀시대 Gee의 수퍼 스따. 모음-nt-모음 인 경우는 [t] 발음 없이. 예) international 이너네이셔널 발음 끝이 [tn]일 때, [t]는 콧소리. 예) Button dr로 시작하는 단어는..

[GCP] 앱엔진 ERROR: (gcloud.app.deploy) Error Response: [13]

gcloud app deploy 시 13 에러가 날 경우, ​ 원인은 여러 경우의 수가 있는 것 같다. Stackoverflow 에서 제시하는 방법은 workaround 같다. (오래된 버전을 기준으로 설명하기도 한다) ​ 나의 경우는 app.yaml 파일 때문에 해당 에러가 발생했다. app.yaml은 validation 할 방법이 없기 때문에 이 에러의 원인으로 찾기 힘들다. ​ 나는 프로젝트 초기라 최소한의 설정만 남기고 (에러가 나올 만한 요소를 제거하고) deploy에 성공했다. ​ app.yaml 내용 runtime: python37 handlers: - url: /.* script: auto runtime: python37 handlers: - url: /.* script: auto​

IT 2022.12.31

[Flutter 앱 개발하기] TabBar 에서 Tab text가 짤려 보일 때

Tab의 갯수가 많고 Tab의 text가 긴 경우에는 아래와 같이 짤려 보인다. 이런 경우에 TabBar의 속성 중 isScrollable 을 true로 하면 필요한 만큼 horizontal 스크롤이 가능하다. return Scaffold( appBar: AppBar( title: Text("연습"), bottom: TabBar( controller: _tabController, isScrollable: true, tabs: [ Tab(text: "가나다라마", icon: Icon(Icons.home)), Tab(text: "바사아자차", icon: Icon(Icons.stadium)), Tab(text: "카타파하가", icon: Icon(Icons.south_america)), Tab(text: "나..

IT 2022.12.31

[Flutter 앱 개발하기] Navigator 페이지 전환할 때 파라미터 넘기기

페이지 이동할 때 특정 값을 넘기고 싶을 때가 있다. ​ Navigator의 pushNamed() 메소드를 예로들면 arguments라는 속성이 있어 이를 통해 특정 오브젝트를 넘길 수 있다. Navigator.of(context).pushNamed('/addObject', arguments: obj) 파라미터를 받는 페이지에서는 build 함수 안에서 아래와 같이 값을 확인 할 수 있다. @override Widget build(BuildContext context) { final arg = ModalRoute.of(context)!.settings.arguments as ObjectType; return Scaffold( ... ); } ​ obj객체는 int, double 같은 기본 타입이거나, e..

IT 2022.12.30

[Flutter 앱 개발하기] ListView.builder hasSize 에러 해결

구현하다보면 SingleChildScrollView 아래 Column, 그 안에 ListView.builder 같은 구조를 구현할 때가 있는데, 실행해 보면 hasSize 에러가 나올 때, ​ ListView.builder에 shrinkWrap 속성을 true로 하면 에러를 피할 수 있다. ​ 애초에 왜 에러가 났는지 이해하고 넘어가보자면 ListView.builder는 기본적으로 List item을 보여줄 때 꼭 필요한 공간만 사용하지 않고, 가능한 영역을 최대한 사용하도록 구현되어 있는데 이 길이가 고정되어 있지 않아서 hasSize 가 아니라는 에러가 나오는 결과로 이어진다. shrinkWrap 을 true로 하면, List item을 보여주는데 꼭 필요한 영역만 사용하도록 제약하기 때문에 size..

IT 2022.12.30

[Flutter 앱 개발하기] webview_flutter 에서 비디오 인라인으로 플레이하기

webview_flutter | Flutter Package A Flutter plugin that provides a WebView widget on Android and iOS. pub.dev 앱에서 웹뷰 구현을 위해 webview_flutter 플러그인을 사용한다. (Android, iOS 지원) ​ 구현을 하다보니 웹뷰 내에서 유튜브 등의 비디오를 플레이 해야 하는데, (ios 정책에 따라) 앱에서 플레이 누르면 전체 화면으로 따로 떠서 재생이 된다. 내가 원하는 것은 앱 내에서 임베디드 되서 플레이 되는 것인데.. ​ 웹 비디오라면 video 태그 안에 playsinline 속성을 이용해서 이를 구현 할 수 있다. ​ webview_flutter 플러그인은 다행히 같은 동작을 지원한다. 아래와 ..

IT 2022.12.30

[Flutter 앱 개발하기] MACOSX_DEPLOYMENT_TARGET 에러 해결

macos / Podfile에 입력을 해도 컴파일 할 때 버전 반영이 안될 경우가 있다. 버그 같다. ​ Workaround는 해당 파일 하단의 아래 내용을 post_install do |installer| installer.pods_project.targets.each do |target| flutter_additional_macos_build_settings(target) end end​ 아래와 같이 수정한다. (원하는 버전으로 수정) post_install do |installer| installer.pods_project.targets.each do |target| flutter_additional_macos_build_settings(target) target.build_configuration..

IT 2022.12.30

[Flutter 앱 개발하기] Firebase auth 를 macOS에서 사용하기

Firebase_auth를 macOS에서 사용하려고 하면 아래와 같은 에러를 만나게 된다. [!] The FlutterFire plugin firebase_auth for macOS requires a macOS deployment target of 10.12 or later. 아래와 같이 해결 방안도 함께 알려준다. - Update the `platform :osx, '10.11'` line in your macOS/Podfile to version `10.12` and ensure you commit this file. - Open your `macos/Runner.xcodeproj` Xcode project and under the 'Runner' target General tab set your ..

IT 2022.12.30

[Flutter 앱 개발하기] 여러 OS 지원하기 (앱에서 OS 확인하는 법)

Multi OS를 지원하는 앱을 만들 경우 (예를들어 Android, iOS, MacOS, Windows..), 다음과 같은 방법으로 앱 내에서 OS 종류를 확인 할 수 있다. import 'dart:io'; ... if (Platform.isMacOS) { } else if (Platform.isIOS) { } else if (Platform.isAndroid) { } else if (Platform.isWindows) { } else if (Platform.isLinux) { } else { } Material Design을 적용해 앱을 만들어서 각 OS에서 동일하게 보이게 만드는 경우도 있지만, OS 특성에 맞게 특화 UI를 구현하면 사용자 경험 측면에서 더 좋을 때도 있어서 그렇다. ​ 참고로 이..

IT 2022.12.30

[Flutter 앱 개발하기] enum 타입 SharedPreference 에 저장하기

플러터에서 enum 타입의 값을 SharedPreference에 저장하고 싶을 때가 있다. ​ enum OrderByOptions { byCreatedAtDescending, byCreatedAtAscending, } ​ 하지만 SharedPreferences는 Int 나 String 같은 기본형 타입만 저장이 가능하다. ​ 이런 경우에는 enum 타입의 index를 이용해 Int 형식으로 저장해 사용하면 된다. ​ 먼저, SharedPreferences에는 아래와 같이 저장할 수 있다. SharedPreferences prefs = await SharedPreferences.getInstance(); await prefs.setInt("orderBy", selectedOrderByOption.index..

IT 2022.12.30

[Flutter 앱 개발하기] 화면 회전 안되게 만들기

휴대폰이 회전하면 Landscape 모드로 변한되는 것이 기본인데 이를 막기 위한 방법이다. main.dart에서 아래와 같이 플러그인 import 한다. import 'package:flutter/services.dart'; ​ 그리고 build 함수 상단에 아래와 같이 구현한다. @override Widget build(BuildContext context) { SystemChrome.setPreferredOrientations( [DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]); ....... }

IT 2022.12.30

[Flutter 앱 개발하기] DateTime 변수 format 변경하기

DateTime 변수의 포맷을 변환 시키려면 DateFormat을 사용하면 된다. import 'package:intl/intl.dart'; final DateTime now = DateTime.now(); final DateFormat formatter = DateFormat('yyyy-MM-dd'); final String formatted = formatter.format(now); print(formatted); 보다 다양한 포맷 옵션을 찾아보려면, DateFormat class - intl library - Dart API DateFormat class Null safety DateFormat is for formatting and parsing dates in a locale-sensitive..

IT 2022.12.30

[Flutter 앱 개발하기] 두 개의 DateTime 변수 차이 구하기

두 Datetime 변수 간의 날짜 차이를 구하고 싶다면 아래와 같이 하면 된다. DateTime now = DateTime.now(); DateTime dt = someTimestampValue.toDate(); if(10 > now.difference(dt).inDays) { print("Difference is less than 10."); } else { print("Difference is more than or equal to 10."); } 현재 시간 구할 때는 now() 사용하기. ​ Timestamp 값을 DateTime 값으로 변환할 때는 toDate() 사용하기. ​ 여기서는 사용 안했지만, 문자열로 DateTime 생성할 때는 아래와 같이 parse() 사용하기. DateTime d..

IT 2022.12.30

[Flutter 앱 개발하기]Firebase 설정

앱을 개발할 때 기본적으로 필요한 인증 관련 기능이나 서버에 데이터를 저장하는 기능 등을 직접 개발하고 운영하기 힘들기 때문에 나와 같이 앱을 만들어 보거나, 소규모로 운영할 때에는 Firebase와 같은 Backend as a Service 를 이용하면 편하다. (일정 규모의 사용량까지는 무료) ​ 기본적인 내용은 홈페이지를 참고한다. (책이 많지 않지만, 역시 홈페이지가 최고다) https://firebase.google.com/ Firebase Firebase는 고품질 앱을 빠르게 개발하고 비즈니스를 성장시키는 데 도움이 되는 Google의 모바일 플랫폼입니다. firebase.google.com ​ ​ ​ 우선 Firebase 프로젝트를 만들어보자. 이를 위해서 자신의 구글 계정으로 아래 링크로 ..

IT 2022.12.30

[Flutter 앱 개발하기] 프로젝트 만들고 개발 환경 세팅하기

플러터 개발 프로젝트를 시작하려면 개발 환경을 준비해 놔야 하는데, 아래 링크를 참고하면 된다. 맥OS에서 설치 flutter-ko.dev 다음 명령어를 이용해서 프로젝트를 생성한다. % flutter create todo​ 나의 경우는 개발도구로 Visual Studio Code를 선호하는데 설치가 필요하다면 다음 링크를 참조한다. https://code.visualstudio.com/download Download Visual Studio Code - Mac, Linux, Windows Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows. Download Visual Studio C..

IT 2022.12.30
728x90