본문 바로가기

분류 전체보기

(67)
iOS) 레이아웃(1) - 인터페이스 빌더 1. 씬의 변화 씬이 변화되는 경우 기기의 회전 다른 화면 크기/배율의 기기에서 동작 동적인 씬 레이아웃 변화 기기의 회전 시뮬레이터 -> 하드웨어 -> 로테이트 메뉴 에서 기기를 회전시킬 수 있다. 프로젝트 내 회전 방향을 설정하여 해당 방향으로 회전됐을 때 화면이 자동으로 돌아가게 할 수 있다. 프레임 기반의 레이아웃 뷰의 프레임은 뷰의 좌표(x,y), 뷰의 크기(width, height)로 나타낸다. 이는 씬의 변화에 관계없이 고정된 값이다. 따라서 씬에 변화가 발생했을 때 적절히 대처하지 못한다. 2. 제약조건 기반의 레이아웃 제약조건은 뷰의 위치와 크기에 대한 제약조건이다. 동적으로 해석되서 프레임에 반영된다. 씬에 변화가 발생했을 때 제약조건에 의해 다시 새로운 좌표와 크기를 잡아서 적용된다...
iOS) Scene(4) - 코드로 뷰 제어 코드로 뷰 제어 뷰 구조 생성 이후 뷰 제어하기 앱 동작 중 컨텐츠 변경 런타임 시 뷰 구조 변경 코드로 작성한 뷰 제어 class Viewcontroller: UIViewController { var redView: UIView! override func viewDidAppear(animated: Bool) { redView.backgroundColor = UIColor.gray } override func viewDidLoad() { redView = UIView(frame: frame) self.view.addSubview(redView) } } 뷰의 태그로 접근 각 뷰마다 tag라는 프로퍼티가 있는데 이는 일종의 일련번호이다. 이 태그로 접근할 수 있다. 기본값은 0이므로 태그를 사용하기 위해서는..
분산시스템) 코드 마이그레이션 Code migration 더 크게 보면 process migration으로 볼 수 있다. 실행 중인 프로그램을 한 컴퓨터에서 다른 컴퓨터로 이동시키는 것이 좋을 때가 있다. 그때 이동을 어떤식으로 하는 것이 좋을까. 1. Reasons for migrating code Performance improvement 어떤 서버 프로세스가 어떤 머신에서 돌고 있었는데 해당 머신이 로드가 많이 걸린다고 가정해보자. 부하가 별로 없는 서버가 있다면 돌고 있는 프로세스를 해당 서버로 이동시키면 성능이 향상될 것이다. 분산 시스템에서 주로 성능 저하 문제가 발생하는 이유는 컴퓨팅 성능보다 통신 문제가 더 많다. 예를 들어 거대한 DB를 다루는 서버가 있다고 가정해보자. 디비 query를 요청하는 부분을 client에..
분산시스템) 서버 클러스터 Server clusters 서버들이 여러개가 있어서 클러스터로 구성되어 있는 것이다. 물리적으로 서버 랙같은 것이 있어서 판처럼 생긴 컴퓨터를 수평을 꽂고 초코속 로컬 랜으로 연결하여 구성해놓은 것이 서버 클러스터이다. 구성 First tier client로부터 요청을 받아들여서 전달해주는 스위치 역할을 해준다. 클라이언트의 요청을 다 받는 front역할을 한다. 클라이언트의 요청을 적절히 분배해주는 라우팅 역할을 한다. Second tier Second tier의 서버가 애플리케이션 서버로 클라이언트의 요청을 직접 처리하는 역할을 한다. Third tier 데이터베이스 서버라 생각하면 된다. Multiple services 서버 클러스터를 구성할 때 하나의 서비스보다 여러 서비스를 제공하는 경우가 많..
tistory) 스킨 커스터마이징 티스토리 커스터마이징 티스토리를 커스터마이징 하기 위해서는 관리자 모드 > 스킨 편집 > html 편집 > css 으로 들어가야 한다. 글을 직접 보면서 편집하는 것이 편하므로 좌측 상단의 홈 버튼을 눌러서 글로 변경해주면 된다. 실시간으로 변경사항을 확인하기 위해서는 코드쪽 우측 상단의 적용을 누른 후 화면쪽 우측 상단에 있는 새로고침을 눌러준다. 코드를 먼저 적용해야지 변경사항이 적용된다. 그 다음 화면에서 오른쪽 버튼 > 검사를 눌러 글이 들어가는 클래스명이 무엇인지 확인해야 한다. 검사를 눌렀을 때 나오는 화면에서 화살표 표시같은 것을 누른 후 제목을 제외한 본문 내용이 쓰이는 화면을 누르면 해당 클래스명이 무엇인지 알 수 있다. 나의 경우 entry-content였다. 인라인 코드 문장에서 강조..
iOS) Scene(3) - 코드로 씬 작성 씬 작성에 관련된 클래스 1. 뷰 컨트롤러 UIViewController를 상속받는 뷰 컨트롤러이다. 뷰 컨트롤러 안에 씬에 대한 구성을 하는 코드 작성한다. 우선 콘텐츠 출력에 맞는 뷰를 선택해서 뷰에 대한 객체 생성하고 뷰 객체의 속성을 이용해서 화면상에 어떻게 나타날지 작성한다. 뷰 컨트롤러 안에 들어가는 코드는 다음과 같다. 뷰를 이용해서 컨텐츠 출력 코드 컨트롤에서 발생한 이벤트를 다루는 코드 뷰 구조 작성 코드 씬의 생명주기 뷰 컨트롤러가 하는 가장 중요한 것 중 하나는 씬에 대한 생명주기를 관리하는 것이다. 우리가 ios 애플리케이션을 만들게 되면 화면 단위 즉 씬을 여러 개 만들게 되는데 그 씬 사이에 전환이 발생하게 된다. 각 순간에 동작하는 라이프사이클 메서드가 정의되어 있다. // 씬..
iOS) Scene(2) - 인터페이스 빌더로 씬 작성 인터페이스 빌더로 씬 작성 뷰를 이용한 씬 작성 뷰란? 씬의 콘텐츠 출력 씬을 작성할 때 씬은 씬에 속한 뷰를 이용하여 화면에 나타낸다. 뷰의 가장 기본적인 역할은 콘텐츠 출력이다. 콘텐츠 종류에 맞는 뷰 UIKit은 여러 개의 뷰를 제공하는데 자신이 출력하고자 하는 콘텐츠의 종류에 맞는 뷰 하나를 선택해야 한다. 예를 들어 글자를 출력해야 하면 글자를 출력하는 기능을 제공해주는 뷰를 사용해야 한다. 이미지를 출력해야 하면 이미지를 출력할 수 있는 기능을 제공하는 뷰를 사용해야 한다. 뷰 작성과 속성 이렇듯 컨텐츠 종류에 맞는 뷰를 선택하고 그다음 뷰를 작성하고 속성 값을 넣어준다. 화면상에 나타나기 위해서는 씬에 대한 뷰 구조에 추가해주는 과정을 거쳐야 한다. 뷰 구조 씬에 뷰를 배치할 경우 자동으로 ..
iOS) Scene(1) - 씬이란? 씬이란? iOS 앱에서 씬은 화면 단위를 의미한다. 사용자에게 다양한 컨텐츠를 보여주고 사용자와 상호작용 하는 하나의 단위이다. 콘텐츠 출력 사용자와 상호작용 UIKit 사용자 인터페이스(UI) 작성을 위한 요소 제공 다음의 것들이 UIKit에서 제공하는 대표적인 것들이다. UIView 콘텐츠 출력용 뷰 UIControl 사용자 입력 가능한 컨트롤 UIViewController 씬 제어: 뷰 컨트롤러 씬 구성 요소 아래 자료는 인터페이스 빌더의 도큐먼트 아웃라인에 있는 것이다. 총 세 개의 씬으로 구성되어 있다. 각 씬을 펼쳐보면 씬을 구성하는 구성요소가 나타난다. 이 중 가장 중요한 것은 View Controller와 View 이다. View Controller 코드를 이용해서 컨텐츠를 출력하거나 사용..
terminal) 터미널 사용법 기초 터미널 사용법 mkdir directoryName이란 이름으로 현재 디렉토리에서 새로운 디렉토리를 생성한다. mkdir directoryName cd 현재 디렉토리에서 해당 이름을 가진 디렉토리로 이동한다. cd directoryName home 디렉토리로 이동한다. cd ~ 현재 디렉토리의 부모 디렉토리, 즉 현재 디렉토리를 포함하고 있는 이전 디렉토리로 이동한다. cd .. 한 번에 여러 디렉토리를 거쳐 이동할 수 있다. cd ~/Documents/study/ios/ ls 현재 디렉토리에 있는 파일과 디렉토리 목록을 볼 수 있다. ls 현재 디렉토리에 있는 파일과 디렉토리 목록에 대해 권한 등 자세히 볼 수 있다. ls -al touch 해당 이름의 파일을 만든다. touch fileName.확장자 ..
git) git으로 협력하기 - fork git으로 협업하기 - fork fork 협업하고자 하는 git repository를 선택한 후 해당 repo를 fork한다. 우측 상단에 있는 fork 버튼을 누르면 자동으로 내 repository에 해당 repository가 생성된다. clone 깃 레퍼지토리를 저장할 디렉토리를 지정한 후 터미널에서 해당 디렉토리를 연다. 이는 두 가지 방법으로 할 수 있다. 터미널에서 디렉토리 생성 finder에서 디렉토리 생성 후 해당 디렉토리를 오른쪽 클릭하여 터미널을 연다. 그 다음 깃에서 클론한다. 이미지에 나와있는 대로 클릭한 후 터미널에 다음과 같이 명령어를 쓴다. git clone repositoryPath repositoryPath는 clone 버튼을 누른 후 복사된 주소를 그대로 붙여넣기하면 된다...