2016년 6월 27일 월요일

AJAX 에 대해


Ajax(Asynchronous JavaScript and XML, 에이잭스)는 대화식 웹 애플리케이션의 제작을 위해 아래와 같은 조합을 이용하는 웹 개발 기법이다.



  • 표현 정보를 위한 HTML (또는 XHTML) 과 CSS
  • 동적인 화면 출력 및 표시 정보와의 상호작용을 위한 DOM, 자바스크립트
  • 웹 서버와 비동기적으로 데이터를 교환하고 조작하기 위한 XML, XSLT, XMLHttpRequest (Ajax 애플리케이션은 XML/XSLT 대신 미리 정의된 HTML이나 일반 텍스트, JSON, JSON-RPC를 이용할 수 있다).

출처 : 위키백과



- Asynchronos?

해석하면 '비동기적'이다.
'비동기적'이라는 것은, 클라이언트에서 서버에 요청을 보낼 때 요청을 보내놓고 프로그램은 계속 돌아간다는 의미이다. 즉, 먼저 요청한 것에 대한 콜백1 함수가 먼저 실행되지 않는다는 것이다.


- Javascript?

자바스크립트는 웹 브라우저에 대한 스크립트 언어로 만들어진 언어이다. 웹 브라우저에서 출발했기 때문에 본래 서버와 소통하는 기능은 없었으나 AJAX는 가능하다.


- XML?

XML은 데이터 형식의 일종이다.
XML은 'Extensible Markup Language'의 준말이다. 즉 확장가능한 '표시' 언어 라는 것이다.
그렇다면 markup language는 무엇인가? 이것은 데이터에 태그로 항목 표시를 해준다는 것이다. HTML도 마크업 랭귀지의 일종이다.
만약 사람의 키, 나이 등을 표현하고 싶다면 XML에서는
<person>
<height></height>
<age></age>
</person>
이런식으로 작성할 것이다.

출처: http://wherethelightis.tistory.com/14 [초보개발자의 공부공간]


요약 정리 
자바스크립트를 이용해서 비동기식으로 서버와 통신하는 방식. 단 이 때 XML을 이용한다.

AJAX 동작 방식

1. 클라이언트(웹브라우저) 에서 XMLHttpRequest 객체 생성 후 서버로 전송
2. 서버에서 메세지를 받고 메시지에 해당하는 정보를 클라이언트에 응답,  callback 함수 실행
3. callback 함수에 의해 클라이언트 정보 업데이트 (refresh)된다


장단점 정리

장점 : ajax 통신후 데이터로 부분 갱신이 가능하며 필요한 부분만 받기
때문에 통신량이 줄어듭니다

단점 : Js 코드가 늘어나고 너무 많은 통신을 할경우 오히려 과부하를 일으킬수 있습니다.

출처: http://ddo-o.tistory.com/92 [공순이의 블로그]






2016년 6월 22일 수요일

Custom Segue animation left to right, right to left @@ in Swift2.x - Xcode 7.3 iOS 9.3


페이지 이동 시 segue를 사용합니다. 기본적으로 포함된 Segue가 아닌Custom Segue 를 만들어 왼쪽에서 오른쪽, 오른쪽에서 왼쪽으로 나오는 효과를 만들도록 하겠습니다.

동영상을 먼저 보고 진행하겠습니다. 



일단 먼저 프로젝트를 생성 후 ViewController를 2개 추가! 총 3개가 되도록 합니다.



뷰를 구분하기 위해 각각 컬러를 넣고 버튼을 넣어줍니다.



추가된 2개의 ViewController 에 적용할 Swift 파일을 생성합니다. 





위 같은 방법으로 RightViewController ,LeftViewController, CustomSegueClass 파일을 생성합니다.
아래처럼 폴더구성이 되어 있어야 합니다.

이제 RightViewController, LeftViewController 에 클래스를 적용합니다

 - RightViewController -


- LeftViewController -



적용이 끝났다면 버튼에 ViewController 에 있는 Left 버튼과 Right 버튼에 Custom Segue
를 추가하여 뷰가 나타나는 효과부터 만들도록 하겠습니다. 

버튼을 우클릭 후 RightViewController 에 드래그 하면 Segue메뉴가 활성화 됩니다. 
"Custom"을 선택해 주세요


ViewController 와  RightViewController 사이에 이상한 화살표 줄이 생깁니다.
같은 방법으로 Left 버튼에도 Custom Segue를 추가합니다.


아래 이미지 처럼 되도록 ..


이제 여기서 코딩작업을 하겠습니다.
전에 만들어놓은  CustomSegueClass.swift 파일을 열어 아래코드를 넣습니다.


import UIKit

// LeftViewController  뷰 이동
class left: UIStoryboardSegue {
    override func perform()
    {
        //ViewContoroller
        let src = self.sourceViewController as UIViewController
        // LeftViewController
        let dst = self.destinationViewController as UIViewController
        src.view.superview?.insertSubview(dst.view, aboveSubview: src.view)
        // LeftViewController 초기 위치
        dst.view.transform = CGAffineTransformMakeTranslation(-src.view.frame.size.width, 0)
        //애니메이션 실행
        UIView.animateWithDuration(0.25,
                                   delay: 0.0,
                                   options: UIViewAnimationOptions.CurveEaseInOut,
                                   animations: {
                                    // 이동할 위치
                                    dst.view.transform = CGAffineTransformMakeTranslation(0, 0)
                                     // ViewController 이동할 위치
                                    src.view.transform = CGAffineTransformMakeTranslation(src.view.frame.size.width/3, 0)                       
            },
                                   completion: { finished in
                                    // 애니메이션 완료 후 실행
                                    src.presentViewController(dst, animated: false, completion: nil)
            }
        )
    }
}

// LeftViewController  뷰 닫기 
class Unwind_left: UIStoryboardSegue {
    override func perform()
    {   
         //ViewContoroller
        let src = self.sourceViewController as UIViewController
        //LeftViewController
        let dst = self.destinationViewController as UIViewController
        src.view.superview?.insertSubview(dst.view, belowSubview: src.view)
        // LeftViewController 초기 위치
        src.view.transform = CGAffineTransformMakeTranslation(0, 0)
         // ViewController 초기 위치
        dst.view.transform = CGAffineTransformMakeTranslation(src.view.frame.size.width/3, 0)
        UIView.animateWithDuration(0.25,
                                   delay: 0.0,
                                   options: UIViewAnimationOptions.CurveEaseInOut,
                                   animations: {
 // LeftViewController 이동할 위치
                                    src.view.transform = CGAffineTransformMakeTranslation(-src.view.frame.size.width, 0)
 // ViewController 이동할 위치
                                    dst.view.transform = CGAffineTransformMakeTranslation(0, 0)
            },
                                   completion: { finished in
                                    // 애니메이션 완료 후 LeftViewController 없애기
                                    src.dismissViewControllerAnimated(false, completion: nil)
            }
        )
    }
    
}

// RightViewController  뷰 이동
class right: UIStoryboardSegue {
    override func perform()
    {
        let src = self.sourceViewController as UIViewController
        let dst = self.destinationViewController as UIViewController
        src.view.superview?.insertSubview(dst.view, aboveSubview: src.view)
        dst.view.transform = CGAffineTransformMakeTranslation(src.view.frame.size.width, 0)
        UIView.animateWithDuration(0.25,
                                   delay: 0.0,
                                   options: UIViewAnimationOptions.CurveEaseInOut,
                                   animations: {
                                    dst.view.transform = CGAffineTransformMakeTranslation(0, 0)
                                    src.view.transform = CGAffineTransformMakeTranslation(-src.view.frame.size.width/3, 0)
            },
                                   completion: { finished in
                                    src.presentViewController(dst, animated: false, completion: nil)
            }
        )
    }
}


// RightViewController  뷰 닫기
class Unwind_right: UIStoryboardSegue {
    override func perform()
    {
        let src = self.sourceViewController as UIViewController
        let dst = self.destinationViewController as UIViewController
        src.view.superview?.insertSubview(dst.view, belowSubview: src.view)
        src.view.transform = CGAffineTransformMakeTranslation(0, 0)
        dst.view.transform = CGAffineTransformMakeTranslation(-src.view.frame.size.width/3, 0)
        UIView.animateWithDuration(0.25,
                                   delay: 0.0,
                                   options: UIViewAnimationOptions.CurveEaseInOut,
                                   animations: {
                                    src.view.transform = CGAffineTransformMakeTranslation(src.view.frame.size.width, 0)
                                    dst.view.transform = CGAffineTransformMakeTranslation(0, 0)
            },
                                   completion: { finished in
                                    src.dismissViewControllerAnimated(false, completion: nil)
            }
        )
    }
}



이제 이 클래스 값들을 적용해보자
Right 버튼과 RightViewController 사이에있는  segue를 선택하면 우측 메뉴가뜬다



Identifier =  "rightsegue" 입력하고  Class = Right 를 선택 합니다. (Right 는  CustomSegueClass.swift 파일에 만든 클래스중  RightViewController를 이동시켜주는 클래스 값이다)


같은 방법으로 left버튼과 LeftViewController 사이 segue 에도
Identifier =  "leftsegue" 입력하고  Class = left 를 선택 합니다.

여기까지 진행하셨다면 시뮬레이션 으로 앱을 실행해보세요 버튼 클릭시 View 가 이동하는것을 확인
할 수 있습니다. 이제 BACK 버튼 기능을 넣어보자

ViewController.swift 파일을 열어 코딩을 추가해준다 (이미지 참조)

- 추가해 줄 코딩 -
 @IBAction func returnFromSegueActions(segue:UIStoryboardSegue){
        
    }



다시 Main.storyboard 로 돌아와
RightViewController 에 있는 BACK 버튼을  까지 드래그 한다
코딩이 제대로 되었다면 returnFromSegueActions: 이 뜨는것을 확인 할 수 있다. 선택해준다.




LeftViewController 에 있는 BACK 버튼도 동일하게 진행한다



아래 이미지처럼 RightViewController와 LeftViewController 에  Unwind segue to"Exit" 가 추가되었을 것이다.


RightViewController 에 있는 Unwind segue to"Exit" 를 선택하면 우측에 메뉴가 뜬다




Identifier =  "rightUnwindsegue" 입력하고  Class = Unwind_Right 를 선택 합니다.



같은방법으로 LeftViewController 에 있는 Unwind segue to"Exit" 를 선택하면 우측에 메뉴가 뜨면
Identifier =  "leftUnwindsegue" 입력하고  Class = Unwind_Left 를 선택 합니다.



이제 시뮬레이터로 앱을 실행하여 버튼을 눌러보세요 처음에 첨부했던 영상처럼 되는것을 확인 하실 수 있을겁니다.

참고!!

LeftViewController or RightViewController 에 있는 Unwind segue to"Exit" 를 선택하여 Identifier =  "leftUnwindsegue" 입력하고 클래스를 선택하지 않고 코딩으로 처리 하는 방법입니다.
ViewController.swift에 아래 코딩을 추가해줍니다.


 override func segueForUnwindingToViewController(toViewController: UIViewController, fromViewController: UIViewController, identifier: String?) -> UIStoryboardSegue {
        if let id = identifier{
            if id == "rightsegue" {
                let unwindSegue = Unwind_right(identifier: id, source: fromViewController, destination: toViewController, performHandler: { () -> Void in
                    
                })
                return unwindSegue
            }
            
            if id == "leftsegue" {
                let unwindSegue = Unwind_left(identifier: id, source: fromViewController, destination: toViewController, performHandler: { () -> Void in
                    
                })
                return unwindSegue
            }
            
        }
        return UIStoryboardSegue(identifier: identifier, source: fromViewController, destination: toViewController)
    }









2016년 5월 8일 일요일

Certificates, Identifiers & Profiles 등록 방법

애플 개발자 등록을 마친후 진행해야 합니다 
만일 개발자 등록이 안되신 분들은 아래 링크를 참조하여 등록을 하시길 바랍니다.

https://swifteyes.blogspot.kr/2016/05/blog-post.html

애플 개발자 등록을 마치셨다면 
Certificates, Identifiers & Profiles 를 등록을 진행하도록 하겠습니다.

<전체적인 내용 정리>

1. CRS 파일 생성
2. Certificate 생성
3. App ID 등록
4. Devices 등록
5. Provisioning 등록
6. 테스트 시작!

시작하겠습니다.


1. CRS 파일 생성하기

우선 먼저 자신의 Mac 에서 CSR 파일을 생성
>>유틸리티 > 키체인 접근 실행 > 상단메뉴에서 인증서 지원 > 인증기관에서 인증서 요청 클릭

>> 이메일주소, 이름 입력후 디스크 저장됨 /  본인이 키 쌍 정보 지정 체크 


>> 계속 버튼 누르고 CSR 파일저장


>> 저장된 CRS 파일은 추후 사용되니 저장하시길 바랍니다.

2. certificate을 생성하여 다운받고 설치


iOS 앱을 개발, 배포 하기위해선 iOS Devolpment Certificate (앱개발시 필요)와 iOS Distribution Certificate(앱 배포시 필요)의 certificate가 필요하다.

정식 개발자가 되었다면 (129,000원 결제성공)  애플 개발자 페이지 로그인 시 아래 이미지처럼 보인다 
>>Certificates, Identifiers & Profiles 를 클릭




>> 왼쪽 메뉴항목들을 하나하나 채워나가야 한다 (Certificates, Identifiers, Devices, Profiles)
      먼저 Certificates 에서 All 버튼을 눌러 오른쪽 상단의 + 를 누른다



>> 먼저 iOS Devolpment Certificate 를 만들어 보자.
     일단 Worldwide Developer Relations Certificate Authority 를 클릭해      
     WWDR certificate 를 다운받아 두자!! (중요! 나중에 설치해야함)




>>  WWDR certificate 를 다운 받았다면 iOS App Development 를 체크 하고 컨티뉴 ~


>> 다음 페이지도 무조건 컨티뉴~


>> 파일 하나를 업로드 해달라고 한다. 맨처음 만들어 놓은 CSR파일을 이제서야 쓰게 된다


>> Choose File.. 버튼을 눌러 저장해둔 CRS 파일을 업로드 하자



>> iOS Devolpment Certificate 가 만들어졌다 다운받아서 설치 하면 인증서가 추가 된다.
    키체인 실행해서 인증서가 추가 되었는지 확인해 보자    



>> 키체인에서 인증서를 확인해보면 인증되지않은 기관? 대충 인증서가 문제있다고 붉은 글씨로
     쓰여져 있을수도 있다.(아님말고) 당황하지 말고 그냥 따라하자!

>>인증서확인 후 아까 전에 받아둿던 WWDR certificate 을 설치하자 (모르면 위에참조)
    인증서의 붉은글씨가 사라졌을것이다.

>>마지막으로 Distribution Certificate 를 만들자 
    방법은 iOS Devolpment Certificate 만들었을때와 같다 
    오른쪽 상단의 + 를 누른다 

   
>> App Store and Ad Hoc  체크 후 컨티뉴~
     다음절차는 같다 CRS파일 업로드 후 Distribution Certificate 가 만들어지면 다운받아서
     설치하면 인증서가 추가된다. (키체인 실행후 확인해보시길..)
   
 >> 제대로 따라 했다면 아래처럼 추가 되었을것이다.
    
==============================  참고 ==============================
*위 과정중에 생성하고 설치한 파일들 (이 네개로 끝이다)


3. App ID 생성
>> App ID는 개발할 앱에 고유 ID를 넣어주는것이다.
    먼저 Name 을 적어준다 (아무거나 상관없지만 앱 이름을 넣는다면 헷갈리지 않을듯 하다.)
     
>> 아래 체크 박스를 보면 App ID Suffix를 선택해야 하는데  앱 서비스(Push, iAD, Game 
Center 등)기능을 사용할 경우 Explicit App ID를 선택, 아닐 경우에는 Wildcard App ID를 선택
하면 된다. 
     


>> 사용하는  App ID Suffix 에 따라 App Services 에서 제동하는 서비스들의 항목
     들이 활성화 되거나 비활성화 된다.
     아래는 Explicit App ID를 선택했을 경우다. 사용할 서비스 체크 하고 컨티뉴~
     참고로 서비스는 추후에 추가 가능 하다!!
      *Wildcard App ID 선택 시 대부분 서비스들이 비활성화 된다.
    
























>> 내용을 다시한번 확인하고 완료!! 


>> 등록이 완료 되었다.!!



4. Devices 등록
 기기등록은 쉽다 Name 과 UDID 만 입력하여 컨티뉴~컨티뉴~~~ 하다 보면 추가된다.
  Name : 알아서.. 쉽게 정하자!
   UDID  : Xcode  실행 후 핸드폰을 연결하고 window > devices 누르면 핸드폰 정보중
                Identifier 항목을 복사하여 붙여 넣으면 된다





* 테스트 기기 등록을 100대로 제한을 둔다는 말이 있으니 주의해서 등록 하시오! (확실치 않음)

5. Provisioning 등록

Provisioning Profile은 certificate, 등록된 테스트 기기 목록, App ID를 하나로 묶는 역할을한다
certificate 와 마찬가지로 개발용프로필과 배포용 프로필을 만들어줘야 한다!

먼저 Development profile 을 만들어보자
>> 왼쪽 메뉴 중에 Provisioning profiles >  Development > 우측 상단의 + 를 눌러 추가해보자
    iOS App Development 를 체크 하고 컨티뉴~

>> App ID 선택 후 컨티뉴~


>> Devolpment Certificates 선택 후 컨티뉴~


>> Devices 선택 후 컨티뉴~


>> Profile Name 입력 후 컨티뉴 하면 완료


>>이제  Distribution profile 을 만들어보자
    방법은 같다 Distribution > 우측 상단 +  를 눌러 추가한다
   

>> App Store 를 체크후 컨티뉴 한다.
    Development 와는 달리 Device 선택하는 부분이 없다
    App ID 선택 > Distribution Certificate 선택 > 프로필 이름 입력 > 생성완료
   


>> 프로필 생성 완료~~! 확인해보자


>> 프로필 파일 경우 따로 받을 필요 없을듯 하다. Xcode 실행후 fix 하면 알아서 되는듯 하니..

6. 테스트 시작!!


끝

추천 게시물

애플 개발자 등록방법 2016년 5월 8일 기준!!

애플 개발자 등록 절차 1. 개발자 등록 페이지 이동    애플 개발자 로그인 > Account 페이지 이동 > 하단 영역 클릭 (이미지 참조)   >> Enroll 클릭 >> 무조건 승인!! ...