2016년 9월 8일 목요일

Swift 3.0에 추가된 새로운 엑세스 수정자들에 대한 좋은 정리글입니다.

기존 코드를 정리하다가 추가된 open, fileprivate을 발견했습니다.
음.. 기존에 public, internal, private에서 2개가 더 추가되었네요.


이 부분이 정리가 필요했는데 멋진 글입니다.
https://swifting.io/blog/2016/08/17/22-swift-3-access-control-beta-6/

2016년 9월 7일 수요일

2016년 9월 8일 아이폰7, 아이폰7 Plus발표되고 바로 Xcode 8.0 GM버전 받았습니다.

아이폰 6에 iOS 10.0.1 GM버전 올리고 테스트중입니다.
Xcode 8.0 GM버전 설치해서 기존 코드들 업데이트...
2달정도의 베타사용을 버리고 다시 정식 버전사용

시뮬레이터에 아이폰7,아이폰7Plus가 올라오고 아이폰4s는 사라짐.
아직까지는 베타6과의 큰 차이는 없어 보입니다. 

수업용 코드를 미리 수정하고 있어서 다행이라고 생각합니다. 







Xcode 8.0 beta6, iOS 10.0 beta8에서 외부 라이브러리로 제공하는 경우의 데모 코드가 수정되었습니다.

Xcode 8.0 beta6, iOS 10.0 beta8에서 외부 라이브러리로 제공하는 경우의 데모 코드가 수정되었습니다. 변경된 부분이 너무 많아서 정리에 시간이 걸립니다.

기존 public -> open으로 변경되고
private -> fileprivate으로 변경되었습니다.
좀 더 의미가 명확한 형태로 엑세스 지정자가 변경되었네요.

import Foundation

open class DemoTime {
    fileprivate var hour = 0, min = 0
    var Hour: Int {
        get { return hour }
        set { hour = newValue }
    }
    var Min: Int {
        get { return min }
        set { min = newValue }
    }
    
    public init(hour:Int, min:Int) {
        self.hour = hour; self.min = min
    }
    
    open func add(_ min:Int) {
        let m = self.min + min
        if m >= 60 {
            self.min = m % 60
            let t = self.hour + m / 60
            self.hour = t % 24
        } else {
            self.min = m
        }
    }
    
    open func inc() {
        self.add(1)
    }
    
    open func description() -> String {
        let h = hour < 10 ? "0\(hour)" : "\(hour)"
        let m = min < 10 ? "0\(min)" : "\(min)"
        return h + ":" + m
    }
}


2016년 9월 6일 화요일

Xcode 8.0 beta6, iOS 10.0 beta8 에서 Swift 3.0 기본 문법 설명 예제입니다.

Xcode 8.0 beta6, iOS 10.0 beta8 에서 Swift 3.0 기본 문법 설명 예제입니다.
세세하게 변경된 부분이 많아서 테스트가 필요합니다.
아래 코드에 주석을 달아 놓았습니다.

//: Playground - noun: a place where people can play

import UIKit

//매개변수와 반환값이 모두 없는 함수
func printHello() {
    print("안녕하세요")
}

printHello()

func sayHello() -> String {
    let returnValue = "안녕하세요"
    return returnValue
}

let returnVal = sayHello()
print(returnVal)

func sayHelloWithName(name : String) -> String {
    let returnValue = "\(name) 안녕하세요"
    return returnValue
}

//Swift 3.0부터 첫번째 인자에 대한 매개변수명도 붙어야 한다.
let returnVal2 = sayHelloWithName(name: "전우치")
print(returnVal2)


//매개변수에 대한 기술
func printHelloWithName(name : String, welcomeMessage : String) {
    print("\(name), \(welcomeMessage)")
}

//호출할
printHelloWithName(name: "전우치", welcomeMessage: "안녕")


//(실인자를 넘기기)
//Swift 3.0부터 inut키워드의 위치가 아래와 같이 변경되었다
func mySwap(a:inout Int, b:inout Int) {
    let t=a; a=b; b=t;
}

var x = 100
var y = 200
mySwap(a: &x, b: &y)
print("x=\(x), y=\(y)")


//_ 사용해서 무시하기(파라메터명을 기술하지 않고 넘어간다!)
func compare(a:Int, b:Int, _:Bool) -> Bool {
    return a > b
}

var result = compare(a:20, b:10, true)
print(result)


//메서드의 오버로드에 대한 데모
func mySwap(a:inout Int, b:inout Int, c:inout Int) {
    let t=a; a=b; b=c; c=t
}

func mySwap(a:inout String, b:inout String) {
    let t=a;a=b;b=t
}

var x1=1, y1=2, z1=3
mySwap(a: &x1, b: &y1, c: &z1)
print("x1=\(x1), y1=\(y1), z1=\(z1)" //x1=2, y1=3, z1=1
var str1="aa"
var str2="bb"
mySwap(a: &str1, b: &str2)
print("str1=\(str1), str2=\(str2)")


//함수의 인수 갯수나 , 반환 값의 형이 다른 동일명의 별도 함수를 정의할 있다.
//스위프트에선 외부 인수명이 다른 동일명의 함수도 정의할 있다.
func mySwap2(a:inout Int, b:inout Int) {
    let t=a; a=b; b=t
}

func mySwap2(little a:inout Int, great b:inout Int) {
    if a > b {
        let t=a; a=b; b=t
    }
}

var s=20
var t=10
mySwap2(little: &s, great: &t)

print("s=\(s), t=\(t)")

Xcode 8.0 beta6, iOS 10.0 beta8 에서 변경된 파일 처리에 관련된 내용입니다.

Xcode 8.0 beta6, iOS 10.0 beta8 에서 변경된 파일 처리에 관련된 내용입니다.
내일이 아이폰 7과 iOS 10.0 정식 발표되는 날입니다. 9월 수업에 관련된 내용들이라 파워포인트와 관련 코드들을 전부 테스트하고 변경하고 있습니다.
정신없이 변경된 부분이 많습니다. Swift 3.0에 iOS 10.0으로 버전업되면서 수정된 내용들이 한가득 입니다.

기존에 작성했던 파일 처리 관련 코드입니다. 변경된 부분에 주석을 추가했습니다.

class ViewController: UIViewController {

    @IBOutlet weak var textBox: UITextField!
    
    var filemgr : FileManager = FileManager.default
    var docsDir : String?
    var dataFile : String?
    
    @IBAction func saveText(_ sender: AnyObject) {
        //Xcode 8에서 변경된 내용
        //NSUTF8StringEncoding 아래와 같이 변경되었다. String.Encoding.utf8
        let databuffer = (textBox.text)?.data(using: String.Encoding.utf8)
        filemgr.createFile(atPath: dataFile!,
            contents: databuffer, attributes: nil)
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        let dirPaths = NSSearchPathForDirectoriesInDomains(.documentDirectory,
            .userDomainMask, true)
        docsDir = dirPaths[0]
        dataFile = docsDir! + "\\datafile.data"
        
        if filemgr.fileExists(atPath: dataFile!) {
            let databuffer = filemgr.contents(atPath: dataFile!)
            let datastring = String(data: databuffer!,
                encoding: String.Encoding.utf8)
            textBox.text = datastring
        }
        
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }



}

2016년 9월 5일 월요일

T포켓파이m 구매했습니다.

요즘 좋은 조건으로 많이 풀려서 하나 구매했습니다.
핸드폰 요금제를 내리고 LTE라우터를 사용하면 장비가 많은 경우 편하게 사용할 수 있습니다.
10기가에 월 16500원입니다. 2년 약정에 1년 요금은 무료입니다. 대략 월에 8000원 정도입니다.
LTE라우터(기존 KT의 에그와 비슷)이지만 10M로 속도 제한을 걸어 놓았습니다.
월 10기가를 다 소진하면 200KB로 접속됩니다. qos기능이 활성화 됩니다.
집과 사무실에서 전부 체크해 보니 핑  속도는 좀 떨어지나 대부분 8메가 에서 10메가 정도의 다운로드와 업로드 속도가 나옵니다. ^^




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

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