목록프로그래밍 (90)
처음부터 차근차근
안드로이드에서의 그래픽 안드로이드는 XML 파일로 그래픽이나 애니메이션을 정의한다. 그리는 작업은 안드로이드 시스템이 담당한다. onDraw() 메소드 안에 draw...()와 같은 메소드를 호출하여 직접 그린다. 전체적인 구조 public class MyView extends View { ... @Override protected void onDraw(Canvas canvas) { Paint paint = new Paint(); // 여기에 그림그리는 코드 } ... } public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate..
사전 지식 1급 객체(first class object), 1급 시민(first class citizen) Swift의 함수는 1급 객체이다. 1급 객체의 조건 1) 변수에 저장할 수 있다. func inchesToFeet (inches: Float) -> Float { return inches * 0.0833333 } let toFeet = inchesToFeet print(toFeet(10)) 2) 매개변수로 전달할 수 있다. func inchesToFeet (inches: Float) -> Float { return inches * 0.0833333 } func outputConversion(converterFunc: (Float) -> Float, value: Float) {//함수를 매개변수로 ..
RESTful = Representational State Transfer REST는 HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다. 이 REST 설계 지침을 따르는 웹 서비스를 RESTful이라 한다. HTTP 기반의 소프트웨어 아키텍처 스타일이고, 로이 필딩(Roy Fielding)이 2000년에 UC 어바인에서 "Architectural Styles and the Design of Network-based Software Architectures"라는 박사 학위 논문에 REST를 정의했다. RES..
TableView 항목을 표로 보여주는 뷰이다. TableView 구성요소 TableView : TableViewCell 여러개 담기 위한 컨테이너 TableViewCell : 하나의 아이템 UIViewController VS UITableViewController UIViewController은 UIViewTableViewController의 수퍼클래스이다. UITableViewController의 계층도 : UIViewController - UITableViewController UITableView의 계층도 : UIView - UIScrollView - UITableView UITableViewCell의 계층도 : UIView - UITableViewCell TableView 사용하는 방법 1. 스..
View 레이블(UILabel),이미지 뷰(UIImageView), 버튼(UIButton), 텍스트 필드(UITextField)와 같은 컨트롤들을 포함하는 것 모든 뷰는 UIKit의 UIView 클래스의 서브클래스이다. UIWindow 클래스 앱 UI의 배경막에 해당하는 것 윈도우는 UI를 표시하고 상호작용을 할 수 있는 영역을 제공 UIWindow는 UIView 클래스의 서브클래스 데스크톱 애플리케이션에는 있는 타이틀바가 없음 사용자는 UIWindow 객체를 직접 보거나 상호작용을 할 수 없음 프로그램으로 생성할 수 있지만, 일반적인 경우 사용자 인터페이스를 디자인할 때 인터페이스 빌더에 의해 자동으로 생성됨 뷰의 계층 구조 부모(superview) / 자식(subview) 관계 서브뷰들은 언제나 부모..
Progress Dialog public class MainActivity extends AppCompatActivity { Disposable backgroundTask; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void onClick(View view) { runRx(); } private void runRx() { ProgressDialog asyncDialog = new ProgressDialog(this); asyncDialog.setProgressStyle(ProgressD..
글을 읽기 전 String 사전지식 String은 class이기 때문에 참조형식이다. 그래서 String 변수를 선언하면 heap 메모리에 대입한 문자열 만큼의 공간이 할당되고, String 변수는 heap영역을 가리키게 된다(할당된 heap영역의 주소값을 가지게 된다). 근데 String은 일반 참조형식과는 조금 다른점이 있다. String은 다른 참조형식과 다르게 변하지 않는다는 특징을 가지고 있다. 한번 저장된 String객체의 값은 변하지 않는다. 그래서 String str = "first": str = "second"; 이렇게 하면 str 이 가리키는 곳의 값이 first -> second로 변경되는 것이 아니라 아예 새로운 객체를 만들어 새로운 공간을 가리키게 된다. 그다음 쓸모없어진 "fir..
Reactive Programming 데이터 흐름과 전달에 관한 프로그래밍 패러다임 기존 PULL 방식이 아닌 PUSH 메커니즘 우리는 주로 절차를 명시하여 순서대로 실행되는 Imperative Programming(명령형 프로그래밍)을 한다. 반면 Reactive Programming이란 데이터의 흐름을 먼저 정의하고 데이터가 변경되었을 때 연관된 작업이 실행된다. 즉 프로그래머가 어떠한 기능을 직접 정해서 실행하는 것이 아닌, 시스템에 이벤트가 발생했을 때 알아서 처리되는 것이다. 기존의 프로그래밍 방식을 Pull 방식, Reactive 프로그래밍 방식을 Push 방식이라고도 한다. Pull 방식은 데이터를 사용하는 곳(Consumer)에서 데이터를 직접 가져와서 사용한다면, Push 방식은 데이터의..