2016년 6월 30일 목요일

WWDC 개발자 영상 - What's New in Cocoa Touch입니다.

API가 점점 더 방대해 지는 느낌입니다.
전반적으로 API를 설명해 주는 것은 아니지만 새로 추가되거나 강화된 API에 대한 소개가 나옵니다.
기존 UIKit을 사용하던 개발자라면 한번 영상을 볼 필요가 있습니다.






xCode 7에서 CocoaPods 사용에 대한 간단한 설명입니다.

파이썬에는 pip가 있고, 닷넷에도 누겟 패키지 관리자가 있습니다.
애플 진영에는 CocoaPods가 있습니다.

Cocoa pod 사용 설명서

http://www.appcoda.com/cocoapods/ 내용을 요약해서 번역했습니다. 

dependency manager: 개발자를 위해서 프레임워크와 패키지의 셋트를 관리하는 관리자입니다.
설치는 단순한데 터미널을 오픈해서

sudo gem install cocoapods


현재 시스템에 CocoaPods gem을 설치하는 명령어입니다.
CocoaPodsRuby로 만들어져 있다. 아래와 같이 설치됩니다.





1.   데스크탑에 CocoapodsTest프로젝트를 생성하고 종료해서 빠져나옵니다.
2.   Cd ~/Desktop/CocoapodsTest 명령을 실행합니다. 
3.   Podfile이라고 불리는 것을 생성할 필요가 있다. Podfile은 프로젝트의 루트에 있으면서 설치하기를 원하는 모든 pods를 추적하는데 책임을 지는 파일입니다. 
4.   pod init


5.Podfile을 에디터로 오픈해서 아래와 같이 수정합니다.
# Uncomment this line to define a global platform for your project
# platform :ios, '9.0'

target 'CocoapodsTest' do
  # Comment this line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for CocoapodsTest
  pod ‘Firebase’

end


6.   pod install을 실행합니다.


Swift 3.0에서 변경된 사항들입니다. #2

1.   메서드가 어떤 값을 리턴하는 경우라면 명사로 지정된다. 메서드가 어떤 액션을 실행하는 경우라면 동사로 지정된다.
//: Playground - noun: a place where people can play

import UIKit

//기존 스타일
//for i in (1...10).reverse() {
//    print(i)
//}

//Swift 3.0 스타일
for i in (1...10).reversed() {
    print(i)
}

//배열을 내용을 출력하기 위해 사용하던 코드
//var array = [1,5,3,2,4]
//for (index, value) in array.enumerate() {
//    print("\(index + 1) \(value)")
//}

//Swift 3.0에서 변경된 코드
//배열의 현재 인덱스를 포함한 튜플을 리턴하기 때문에 명사로 호출한다.
var array = [1,5,3,2,4]
for (index, value) in array.enumerated() {
    print("\(index + 1) \(value)")
}

//기존 코드
//var array = [1,5,3,2,4]
//let sortedArray = array.sort()
//print(sortedArray)

//swift 3.0 스타일
var array2 = [1,5,3,2,4]
let sortedArray = array2.sorted()
print(sortedArray)

//기존 코드
//var array3 = [1,5,3,2,4]
//array3.sortInPlace()
//print(array3)

//Swift 3.0 스타일
//별도의 액션없이 리턴하지 않고 끝내기에 명사로 변경됨
var array3 = [1,5,3,2,4]
array3.sort()
print(array3)


2.           Swift 3.0에서는 API 대해서 단순함의 철학을 접목시켰다.
XCPlaygroundPage.currentPage PlaygroundPage.current
Button.setTitle(forState) button.setTitle(for)
Button.addTarget(action, forControlEvents) button.addTarget(action, for)
NSBundle.mainBundle() Bundle.main()으로 변경됨
UIColor.redColor() UIColor.red() 변경됨

enumeration 경우도 변경된 부분이 있다. 프로퍼티와 같이 enumeration case 다룹니다. upperCamelCase표기를 사용하지 않고 lowerCamelCase 사용합니다.
예를 들면 .System 대신에 .system
.TouchUpInside 대신에 .touchUpInside
.FillStroke 대신에 .fillStroke
.CGColor 대신에 .cgColor 사용합니다.

3.           @discardableResult 사용한다. 리턴값을 별도로 사용하지 않는 경우 경고 뜨는 것을 없앨 있다.
//리턴값을 별도로 사용하지 않는다면 아래와 같이 선언한다.
@discardableResult
func printMessage(message: String) -> String {
    let outputMessage = "Output : \(message)"
    print(outputMessage)
   
    return outputMessage
}

printMessage(message: "Hello Swift 3.0")

요즘 많이 들리는 RAG에 대한 멋진 정리가 있어서 공유합니다. ㅎㅎ

 작년에는 ChatGPT가 크게 유행을 했는데 올해는 Gen AI, LLM, 랭체인등이 유행하고 있습니다. ㅎㅎ  RAG라는 단어도 상당히 많이 들리고 있습니다. 멋진 정리의 링크입니다.  https://brunch.co.kr/@ywkim36/146?...