2016년 8월 23일 화요일

2016년 8월 18일 목요일

xCode 8.0 beta6, iOS beta6에서 테스트중입니다. 인터페이스빌더에 Device Bar가 추가되었습니다.

앱을 adaptive하게 만드는 방법이 좀 더 수월해지고 있습니다.
기존 과정들에서 사용한던 방법대로 접근해보니 안되는 부분이 많아서 계속 테스트 중입니다.

중요한 단서를 발견한 개발자 동영상이 아래의 링크입니다.

Making Apps Adaptive, Part 1 입니다. 30분정도의 짧은 영상이로 강추하는 영상입니다.

https://developer.apple.com/videos/play/wwdc2016/222/


지원해야 되는 폼펙터가 계속 늘어나고 있습니다.


조합을 하면 300+ 정도의 조합이 나옵니다. 전부 코드 베이스로 지원은 불가능



그래서 Traits 개념을 도입했습니다. Traits는 앱이 실행되는 환경을 기술합니다.





2016년 8월 12일 금요일

2016년 8월 9일 화요일

2016년 7월 1일 금요일

WWDC 2016 개발자 영상 - What's new Swift 3.0 영상입니다.

https://developer.apple.com/videos/play/wwdc2016/402/

스위프트 3.0에 추가된 내용들들이 정리되어 있습니다.
macOS의 독이라든지 많은 부분이 Swift로 재작성되어 만들어졌다는 내용이 나옵니다.
기존 Objective-C코드를 Swift로 변경해서 15% 코드가 감소했다는 내용도 있네요.

http://swift.org

오픈소스에 기여하고 있는 애플





앞으로 xCode에 더 통합될 Swift Package Manager에 대한 소개입니다.



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")

제 AI는 스스로 생각하고 학습한다.. 난리난 AI 에이전트 직접 확인해보니 - 영상정리해 봅니다.

  ChatGPT가 나온지 3년이 넘었습니다. ㅎㅎ 처음에는 생성형AI에서 LLM으로 시장이 변화되었습니다. 작년말부터는 에이전트의 시대라고 하고 있습니다. 저도 관련 강의를 하고 일을 하고 있지만 따라가기가 벅찰정도로 매주 새로운 소식들이 올라옵니다...