2016년 10월 26일 수요일

2016년 10월 25일 화요일

파이썬(python) 개발환경으로 Visual Studio Code를 사용할 수 있습니다.

Visual Studio Code가 버전이 벌써 1.6으로 업데이트 되었습니다.
다른 무거운 툴보다는 가벼우면서 웹이나 파이썬 개발툴로 사용할 수 있어 다음과 같이 셋팅하고 사용하면 좋습니다.

1.     설치후에 파일 -> 기본 설정 -> 사용자 설정을 클릭한다. 글자 크기가 기본 셋팅을 변경하려면 다음과 같이 작업하면 됩니다. 





2.     글씨크기를 변경하려면 아래의 셋팅 내용을 그대로 복사해서 변경하면 된다.

    // 설정을 이 파일에 넣어서 기본 설정을 덮어씁니다.
   {
    // 글꼴 패밀리를 제어합니다.
    "editor.fontFamily": "'Comic Sans MS', 'Courier New', monospace",

    // 글꼴 두께를 제어합니다.
    "editor.fontWeight": "normal",

    // 글꼴 크기(픽셀)를 제어합니다.
    "editor.fontSize": 20

}

3. extension
버튼을 클릭해서 python이라고 입력하고 아래의 2개의 익스텐션을 설치하면 됩니다. 파이썬 파일을 인식하고 디버깅할 수 있도록 환경이 셋팅됩니다. 


파일 메뉴에서 폴더열기를 클릭해서 특정 폴더에 있는 파일들을 오픈한다. 
왼쪽에 있는 버튼들 중에 4번째에 해당되는 디버그 버튼을 클릭해서 톱니바퀴모양의 상단 아이콘을 클릭하고 실행 환경을 Python으로 선택하면 디버깅도 가능하다. 
기능이 계속 추가되고 있어서 마땅한 개발툴이 없다면 좋은 IDE환경으로 활용할 수 있다. 


환경변수로 PATH에 파이썬 실행파일의 경로가 추가되어야 한다. 혹시 누락되어 있으면 c:\python34;c:\python34\scripts;를 추가하면 된다. 

mac OS 시에라로 업데이트하고 생긴 문제점 - 외장 키보드의 맵핑이 작동하지 않는 문제

기존에 잘 사용하던 Karaviner가 동작을 하질 않는다!
그래서 Karaviner-Elements를 다운로드 받아서 다시 맵핑을 잡아 주었다.

아래의 주소로 가서 중간에 링크된 주소를 클릭해서 Karaviner-ELements.dmg파일을 받아서 설치하면 해결된다. 매번 mac OS 업데이트 될 때마다 command키와 option크 맵핑을 변경하는 문제가 발생...

https://github.com/tekezo/Karabiner-Elements



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메가 정도의 다운로드와 업로드 속도가 나옵니다. ^^




AI 딜레마 1부 - 일자리 종말론 - PD수첩 영상입니다.

  IT분야에서 강의를 하고 있지만 개발자와 강사의 숫자가 앞으로 급격하게 줄어들 것이라는 생각을 많이 하고 있습니다. 코로나블루가 아닌 AI블루가 업계에 충격을 주고 있습니다. ㅠㅠ ​ 영상을 보다 보면 AI의 영향을 받지 않는 분야가 있을까? 하는...