Homebrew: Mac에서 지원하지 않는 패키지 관리자 서비스로 오픈소스를 쉽게 설치할 수 있게 해준다. 설치: 터미널에 다음 명령어 입력 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 참고: http://brew.sh/index_ko.html PostgreSQL : 오픈 소스 DBHomebrew를 이용해서 설치: brew update, brew doctor 명령어를 사용해 설치전 homebrew를 업데이트 하고 잘 돌아가는지 확인 한다. 그후 postgreSQL을 설치 한다. $ brew update $ brew doctor$ brew install postgresql M..
UTC(Coordinated Universal Time): 세계 협정시GMT(Greenwich Mean Time): 그리니치 평균시 UTC, GMT는 교환되어 사용될 수 있으나 GMT가 과학적으로 정확하지 않다고 정의됨.UTC, GMT는 영국 그리니치 천문대를 지나는 본초자오선(경도 0°)을 기준 시간으로 함. UTC 형식 : 1981-02-22T09:00Z (UTC 시간대일 경우 Z가 붙는다)1981-02-22T09:00:00+09:00 (UTC 시간대가 아닐 경우 ±hh:mm, ±hhmm, ±hh을 붙인다) JavaScript에서Date 생성시 반환값 (기본 GMT형식 / UTC로 변환/ Locale 적용 formmat) console.log('TimeZone:', new Date().getTimez..
영어 공부와 iOS 공부를 위해서 apple 개발자 문서를 번역한것입니다. 공부하는 중에 번역한 것이라서 오타나, 잘못된 부분이 있을 수 있습니다. https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AutolayoutPG/AutoLayoutWithoutConstraints.html#//apple_ref/doc/uid/TP40010853-CH8-SW1 Auto Layout Without Constraints제약사함이 없는 auto layoutStack views provide an easy way to leverage the power of Auto Layout without introducing the c..
영어 공부와 iOS 공부를 위해서 apple 개발자 문서를 번역한것입니다. 공부하는 중에 번역한 것이라서 오타나, 잘못된 부분이 있을 수 있습니다. https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AutolayoutPG/index.html#//apple_ref/doc/uid/TP40010853-CH7-SW1 Understanding Auto LayoutAuto Layout이해하기Auto Layout dynamically calculates the size and position of all the views in your view hierarchy, based on constraints placed on..
구분장점단점Internal(cache /file)context.getCacheDir()context.getFilesDir()- Permission 필요없음- 외부 앱에서 접근 불가능(Contents provider를 이용해 파일에 대한 접근, 복사는 가능)- 외부로 부터 파일을 보호- 앱 삭제시 삭제 가능External private (cache/file)context.getExternalCacheDir()context.getExternalFilesDir()- 외부 앱에서 경로를 통해 접근 가능- Permission 필요- 앱 삭제시 삭제 가능- SD 카드 상태에 따라서 사용 불가능External publicandroid.os.Environment.getExternalStorageDirectory()- ..
var str = "Hello, playground" // Ifif str != "Hello, playground" { print(true)} else{ print(false)} // For// deprecated: 강의에는 가능하다고 되어있지만 playground에서 실행하니까 deprecated되었다고 경고가 떴다. 아래와 같이 수정해야한다. for var index = 0; index < 3; index += 1 { print("index is \(index)")} // fixedfor index in 0.. 30). // 만약 변수 선언이 필요 없을 경우 변수 대신 _ 를 사용한다. var result:String switch(value){ case 1: result = "\(key)는 1"; c..
// Dictionary: Map처럼 key와 Value를 쌍으로 저장하는 구조var roomCapacity:[String:Int] = ["small":10, "medium":50, "large":100] // 추가하기roomCapacity["xsmall"] = 5;roomCapacity["xlarge"] = 200;roomCapacity // 값 읽기roomCapacity["medium"] // Key값 value값을 따로 만들기let roomName = roomCapacity.keyslet capacities = roomCapacity.values // Key값 value값을 arr로 만들기let roomNameArr = [String](roomCapacity.keys)let capacitiesArr..
// Array 생성하기: 한개의 Array 안에는 동일한 타입이 들어감. 따라서 Type도 설정 해주어야 함.let arr1:Array = ["test1","test2","test3"]var arr2:[Int] = [1,2,3] // Array 값 읽기arr1[0]arr1.firstarr1[2]arr1.lastarr1.startIndexarr1.endIndexarr1.indexOf("test2") // 역순 Array 만들기var reverseArr1:[String] = arr1.reverse()reverseArr1 // Array 값 추가arr2.append(4)arr2 += [5]arr2 += [Int(6.32)] // Array 값 삭제arr2.removeAtIndex(2)arr2.removeFi..
// Tuple: 콤마로 구분된 값의 리스트 // 여러개의 Type을 함께 사용할 수 있다. (String,Int,Double) 등으로 구성 가능. // 이름을 설정하지 않은 경우 index 값으로 접근var time1 = (12,19,30)time1.0time1.1time1.2 time1.0 = 14time1.1 = 20time1.2 = 00 // 이름과 타입을 설정한 경우 설정한 이름으로 접근var time2:(h:Int, m:Int, s:Int) = (10,12,30)time2.htime2.mtime2.s let (start,end) = (time1,time2)let endHour = end.h // Typealias: 원하는 타입을 생성typealias Time = (h:Int, m:Int, s:..