1. 애플리케이션 & 웹 (5~6장)
애플리케이션
애플리케이션: 설치해서 사용하는 모든 프로그램
(윈도우에서는 '응용 프로그램'으로 칭함)
-
애플리케이션 버전: 점(.)을 기준으로 숫자 3부분으로 표현
-
각 숫자의 위치별로 다른 의미를 가지며, A.B.C라고 예를 들면 아래와 같이 생각할 수 있다.
A: 하위 버전과 호환이 가능하지 않은 큰 변화
B: 하위 버전과 호환이 가능하지만 큰 변화
C: 작은 변화
-
사용자가 업데이트를 진행해야 새로운 버전을 사용할 수 있기 때문에 변동 가능한 회사 정책에 대한 정보는 애플리케이셔에 넣지 않는다(API로 서버에서 불러오도록 함).
구글 플레이 스토어 vs 앱스토어
앱스토어
- 프로그램을 등록하기 위해서는 심사가 이루어져야함(reject 가능성이 높다)
- 리젝된 경우 사유를 명확하게 제시해주고, 문제가 고쳐지면 통과
- 심사 신청 기간이 미지수
- 애플 지침에 어긋 날 경우 경고장을 받는다.
플레이 스토어
- 심사과정이 적어 빠르게 마켓에 반영
- 구글 지침에 맞지 않는다면 예고 없이 마켓에서 내려질 수 있음
웹(web)
웹의 4가지 이슈
1. HTML, CSS, JavaScript
2. 브라우저
3. 반응형 웹
4. 하이브리드 애플리케이션
HTML
- 운영체제에 관계없이 동일한 정보 확인 가능
- 태그: 정보를 표현하기 위한 코드. HTML을 구성하는 코드
- HTML은 프로그래밍 언어가 아님
- head와 body로 이루어져 있음
CSS(Cascading Style Sheets)
- HTML에 디자인을 입힐 수 있는 코드
- '퍼블리싱'작업: HTML+CSS (cf. 퍼블리셔)
- '마크업' 개발자: HTML 작업을 주로 하는 개발자
JS(JavaScript)
- 웹의 프로그래밍 언어 역할
- Java와 큰 관계가 있지는 않음
웹 vs 앱
- 웹에서 나타나는 HTML, CSS, JS 는 모두 사본이다.
(새로고침 할 때마다 새롭게 다운로드)
- 애플리케이션은 업데이트를 위해 유저가 매번 다운로드해야 하지만 웹은 서버의 원본을 바꾼 후 새로고침하면 반영
- 웹은 수정이 용이하며, 빠르게 적용 가능
- 웹은 네트워크의 영향을 크게 받음 (애플리케이션은 반대)
웹의 특징
브라우저 버전의 파편화
각 브라우저는 서로 다른 애플리케이션이기 때문에 브라우저에 따라 그 안의 구현 방식이 다르다.
브라우저의 파편화: 소비자의 브라우저 버전과 종류에 맞춰 정상적으로 동작할 수 있도록 추가로 코드를 작성해야하는 문제
- caniuse.com 사이트를 통해 점유율 확인이 가능
반응형 웹
브라우저의 가로 넓이에 '반응'하여 구성 요소가 변하는 기술(사용자의 기기에 맞춰 자동 변형)
- 비교적 많은 코드가 필요하고 작업시간이 오래걸리며 비용이 더 많이 들어감
하이브리드 애플리케이션
웹+애플리케이션 혼합 (API 문서를 통해 웹과 앱을 구별 가능)
- 각 기술은 다른 기술의 장점을 흡수하고, 스스로 가진 단점을 보완하는 방식으로 발전함
2. 데이터베이스와 이미지 처리 (7장)
데이터란?
데이터의 무결성
데이터는 단 1%의 결점도 없어야 한다.
그렇기 때문에 점검이 필요한 경우 시간을 잡아두고 안전하게 작업하도록 함
관계형 데이터 베이스
테이블(table): 엑셀의 sheet 와 유사
데이터 베이스(database)/스키마(schema): 엑셀 파일 자체로 비유 가능
- RDBMS(관계형 데이터 베이스 관리 시스템):
관계형 데이터 베이스 관리 시스템.
MS, SQL, Oracle DB, MySQL, MariaDB 등이 있음
데이터 관리
- 데이터는 보조기억장치에 저장된다.
- CPU, 메모리가 있으면 데이터베이스 관리 시스템 실행 가능
≒ 클라이언트, 서버 모두 데이터 저장 가능
- 데이터의 위치를 알기 위해서는 API 문서를 확인하면 가장 확실하다.
- 로컬=내부DB=네이티브=클라/클라이언트=프론트=프론트 엔드
- 서버=API=DB=백/백 엔드
-
데이터의 확인을 위해 정보, 이미지의 성격을 확인하여야 함
-
클라이언트에 이미지를 놓으면 이미지를 다운받지 않아도 된다. 하지만 이미지를 바꾸기 위해서느 애플리케이션을 업데이트 해야함.
-
이미지가 바뀌었을 때 서비스에 영향을 주다면 서버에서 가져와야함
-
동일하게 API 문서를 확인하는 것이 가장 정확하다.
3. 프레임워크와 라이브러리 (8장)
프레임워크, 라이브러리
프레임워크: 개발자들이 사용할 수 있도록 만들어 놓은 코드. 한 프로젝트에서 프레임 워크는 하나마 사용 가능.
라이브러리: 프레임워크보다 작은 개념.
- 프레임워크와 라이브러리는 만든 주체가 모두 다르기 때문에 반드시 설명을 보고 사용할 것(사용료, 출처 기재 등의 문제)
기기별 프레임 워크
- 애플: 코코아(Cocoa) 프레임워크
(맥 OS: Appkit, iOS, tvOS: Ulkit)
- 구글: Android 프레임워크
- 웹: angular.js, Vue.js, react.js
프로그래밍 언어별 프레임워크
- 자바: spring
- 파이썬: 장고(Django)
- 루비: Rails
- JS: 익스프레스(express.js)
4. 협업, 소스관리, 디자인 & 정리 (9장~10장)
깃(Git), 커밋(Commit)
커밋: 깃을 통해 개발자들이 개발 단계별로 '깃발'을 꽂는 행위
커밋로그: 어떤 개발을 했는지 메모하는 것
브랜치(Branch): 새로운 방향의 개발을 추가해야 할 때(기존 브랜치에 영향X).
머지(Merge): 코드를 합치는 기능. 충돌(confict) 시 알림.
원격저장소
- 깃허브(GitHub), 비트버킷(Bitbucket)
디자이너와 개발자
디자이너, 개발자 간의 갈등을 줄이기 위한 프로그램의 등장.
'스케치, 재플린, XD' 등: 디자이너의 작업 결과물의 수치를 보여줌.
소스코드 추천, 이미지 요소 개발을 위한 형식 다운이 가능함
UI
- 클라이언트 개발자라면 UI에 지속적으로 관심을 가지고 공부해야한다.
- 각 회사에서 가이드 라인을 제공함
(애플: Human Interface Guideline, 구글 Material Design)
용어 정리
- 네이티브 애플리케이션: 각 운영체제에 맞는 프로그래밍 한 애플리케이션 (예. iOS - 스위프트, Objective-c 등)
- SQL: 데이터베이스 관리시스템(DBMS)에 데이터를 CRUD하기 위한 언어
reference
최원영, 『비전공자를 위한 이해할 수 있는 IT지식』, T.W.I.G