Fox Moon

소스코드를 효과적으로 관리하기 위해 개발된 '분산형 버전 관리 시스템' 원격 저장소와 로컬 저장소 Git은 원격 저장소와 로컬 저장소 두 종류의 저장소를 제공 평소에는 내 PC의 로컬 저장소에서 작업하다가 작업한 내용을 공개하고 싶을 때에 원격 저장소에 업로드 저장소 만들기 만들어져 있는 원격 저장소를 로컬 저장소로 복사 또는 새로운 저장소 생성 브랜치(branch) 브랜치(branch)란? 독립적으로 어떤 작업을 진행하기 위한 개념 여러 개발자들이 동시에 다양한 작업을 할 수 있게 만들어 주는 기능 각각의 브랜치는 다른 브랜치의 영향을 받지 않기 때문에, 여러 작업을 동시에 진행할 수 있다. 브랜치는 다른 브랜치와 병합(Merge)함으로써, 작업한 내용을 다시 새로운 하나의 브...
Git 저장소의 커밋 정보와 GitHub 사용자가 연결되는 원리 GitHub에 등록된 이메일을 user.email에 설정하고 커밋한 다음 GitHub 저장소에 Push하면 해당 이메일을 사용하는 GitHub 사용자로 자동으로 연결 로컬에서 user.email을 설정하는 것은 커밋의 작성자가 누구인지를 보장하지 않음. 다른 사용자의 이메일로 변경하고 커밋하면 GitHub에서는 다른 사람 프로필에 연결함 GitHub에서는 Git 커밋의 이메일 정보를 사용해 GitHub 사용자를 매칭 GitHub 하나의 계정에는 Primary 메일을 비롯해 추가 이메일 등록 가능 고유한 이메일 주소는 오직 하나의 계정에만 등록될 수 있기 때문에 이메일 주소로 GitHub 사용자와 매칭하는 것이 가능 Git 저장소의 커밋 과정 워...
과제 Flutter의 레이아웃 메커니즘이 동작하는 방식. 위젯을 수평과 수직으로 배치하는 방법. Flutter 레이아웃을 만드는 방법. 기본 레이아웃 (StatelessWidget) 플러터가 어떻게 레이아웃을 구성하는지 알 수 있었다 lib\main.dart import 'package:flutter/material.dart'; main() { runApp(myApp()); } // 한줄로 표현 가능 : 다트 언어 문법 // void main() => runApp(MyApp()); class myApp extends StatelessWidget { @override Widget build(BuildContext context) { /* ----------------------------- */ Widg...
앱 디버그 앱 정상 구동 확인 pubspec.yaml 설정 버전 설정 version: 1.0.0+1 environment: sdk: ">=2.16.2 <3.0.0" android\app\src\main\AndroidManifest.xml 설정 파일에서 권한 설정 <manifest> <uses-permission android:name="android.permission.PERMISSION_CODE" /> <application></<application> </manifest> 권한 내용 INTERNET 인터넷 사용 권한 BLUETOOTH 블루투스 상태 확인 VIBRATE 진동 설정 권한 SET_ALARM...
위젯(Widget) : 요소의 구성(Configuration)을 기술하고 처리한다. 요소(Element) : 트리의 특정 위치에서 위젯을 인스턴스화 한다. 렌더 객체(RenderObject) : 크기, 레이아웃 등을 다루고 렌더링을 처리한다. State 생성 트리의 특정 위치를 참조하는 BuildContext 존재 해당 BuildContext에 연결 연결된 각 BuildContext에 위젯 배치(인스턴스화) 요소(Element) 생성 기본 코드 main() -> runApp(HelloWorld()) -> HelloWorld() -> build() -> MaterialApp() -> Scaffold() import 'package:flutter/material.dart'; main...
중요 개념 모든 변수는 객체(object)이다. 모든 객체는 클래스의 인스턴스이다. 숫자, 함수, null도 객체다. 모든 객체는 Object 클래스로부터 상속된다. 타입 어노테이션은 타입 추론이 가능할 경우 옵션이다. 예를 들어 int number = 10;으로 명시적으로 타입을 지정하지 않고 var number = 10;으로 사용 가능하다는 의미이다. 타입이 예상되지 않는다고 명시적으로 표현하고 싶을 때는 dynamic 키워드를 사용한다. 이것은 하나의 변수가 여러 타입으로 변경 가능하다는 의미이다. var 키워드와 비교해보면 좀 더 이해하기 쉽다. var는 다음과 같이 String 타입으로 지정된 후에는 int 타입을 참조할 수 없다. var name = "Kim"; name = 10...
선택자 종류 예시 설명 div[class~=ko-kr] { background-color: red } ko-kr 을 포함하는 태그를 선택 div[class|=ko-kr] { background-color: red } ko , kr 을 포함하는 태그를 선택 div[class^=ko-kr-name] { background-color: red } ko-kr 로 시작하는 태그를 선택 div[class$=name-ko-kr] { background-color: red } ko-kr 로 끝나는 태그를 선택 div[class*=name-ko-kr-name] { background-color: red } ko-kr 을 포함하는 태그를 선택 예시 html 코드 <div class="box_1">...