<kor>
모바일 안드로이드에서 네트워크 상태 조회하는 방법
웹 소스 가져오는 방법
XML, DOM파서 사용하는 방법
<eng>
Checking Network at Mobile Android Method
Getting Web Code Method
XML, DOM Parsing Method
Objective-C Runtime Programming Guide 요약 자료입니다.
Objective-C 런타임을 사용하면 성능을 향상 시킬수 있는 기법을 사용할 수 있습니다.
동적 바인딩이 속도면에서는 접고 들어가는거라 런타임 기능을 이해하면 좀 더 향상된 앱을 개발할 수 있지 않을까 합니다~~
일부 다른 자료 참고했고, 이미지도 이모씨!!의 자료 사용했습니다~ㅋ
동영상 by 서명덕 - http://itviewpoint.com/
http://www.youtube.com/watch?v=Rdc3-uZhCT4&list=PLZ9uJh6mO6seUbnHC7MtVGctVHGalncyN
http://www.youtube.com/watch?v=O2TAm6-0pNw&list=PLZ9uJh6mO6seUbnHC7MtVGctVHGalncyN
http://www.youtube.com/watch?v=XQ6zsB6tLgQ&list=PLZ9uJh6mO6seUbnHC7MtVGctVHGalncyN
http://www.youtube.com/watch?v=yA-zSPdVP6w&list=PLZ9uJh6mO6seUbnHC7MtVGctVHGalncyN
http://www.youtube.com/watch?v=i2_z5HJIwL4&list=PLZ9uJh6mO6seUbnHC7MtVGctVHGalncyN
Objective-C Runtime Programming Guide 요약 자료입니다.
Objective-C 런타임을 사용하면 성능을 향상 시킬수 있는 기법을 사용할 수 있습니다.
동적 바인딩이 속도면에서는 접고 들어가는거라 런타임 기능을 이해하면 좀 더 향상된 앱을 개발할 수 있지 않을까 합니다~~
일부 다른 자료 참고했고, 이미지도 이모씨!!의 자료 사용했습니다~ㅋ
동영상 by 서명덕 - http://itviewpoint.com/
http://www.youtube.com/watch?v=Rdc3-uZhCT4&list=PLZ9uJh6mO6seUbnHC7MtVGctVHGalncyN
http://www.youtube.com/watch?v=O2TAm6-0pNw&list=PLZ9uJh6mO6seUbnHC7MtVGctVHGalncyN
http://www.youtube.com/watch?v=XQ6zsB6tLgQ&list=PLZ9uJh6mO6seUbnHC7MtVGctVHGalncyN
http://www.youtube.com/watch?v=yA-zSPdVP6w&list=PLZ9uJh6mO6seUbnHC7MtVGctVHGalncyN
http://www.youtube.com/watch?v=i2_z5HJIwL4&list=PLZ9uJh6mO6seUbnHC7MtVGctVHGalncyN
Ajax 기술 문서(작성자 : 김연수)
(첫 회사에 입사하여 만든 사내 배포용 기술 문서)
Ajax In Action 도서를 참고하며 자료를 만들었으며, 이 자료를 만들면서 AJAX에 대한 많은 이해를 하게 됐던 거 같다.
작성일자는 잘못된 것이고, 2007년에 만들고 발표한 것으로 추정된다.
자바에서 모델객체를 생성할 때 setter/getter/toString/hashCode/equals 메소드를 만드는데 이럴 경우 클래스 파일의 소스가 길어지고 복잡해지는데 이를 해결하기 위해 롬복(Lombok)을 사용한다.
클래스 안에 있는 필드에 대해 Getter, Setter의 생성이나, toString(), equals(), hashCode() 메서드, 생성자를 자동으로 생성 해준다.
설치
http://projectlombok.org/download.html 에서 jar 파일을 다운로드 후 실행(더블클릭해서 실행 안되면 javaw –jar lombok.jar로 실행하자)
maven의 설정 파일에 의존성 추가
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.6</version></dependency>
Gradle의 설정 파일에 의존성 추가
Compile('org.projectlombok:lombok:1.16.6')
스프링 부트를 사용한다면 프로젝트 생성시 두번째 화면에서 Core -> Lombok을 선택하면 자동으로 라이브러리가 추가된다.
어노테이션
@Getter : Getter 메소드를 생성해 준다.
@Setter : Setter 메소드를 생성해 준다.
getter 는 필드값을 리턴하며 필드명이 name 일때 게터 메소드 이름은 getName (name이 boolean 일때는 isName), 기본 setter는 filed 명이 name 일때 setName이 된다. return type은 void 이며 field 와 동일한 type의 라파미터를 한 개만 입력받는다. 생성된 getter/setter method 의 기본 접근레벨은 AccessLevel 키워드를 명시적으로 지정하지 않았다면 public 이며 Accesslevels 은 PUBLIC, PROTECTED, PACKAGE, and PRIVATE 중에 설정할 수 있다.
Ajax 기술 문서(작성자 : 김연수)
(첫 회사에 입사하여 만든 사내 배포용 기술 문서)
Ajax In Action 도서를 참고하며 자료를 만들었으며, 이 자료를 만들면서 AJAX에 대한 많은 이해를 하게 됐던 거 같다.
작성일자는 잘못된 것이고, 2007년에 만들고 발표한 것으로 추정된다.
자바에서 모델객체를 생성할 때 setter/getter/toString/hashCode/equals 메소드를 만드는데 이럴 경우 클래스 파일의 소스가 길어지고 복잡해지는데 이를 해결하기 위해 롬복(Lombok)을 사용한다.
클래스 안에 있는 필드에 대해 Getter, Setter의 생성이나, toString(), equals(), hashCode() 메서드, 생성자를 자동으로 생성 해준다.
설치
http://projectlombok.org/download.html 에서 jar 파일을 다운로드 후 실행(더블클릭해서 실행 안되면 javaw –jar lombok.jar로 실행하자)
maven의 설정 파일에 의존성 추가
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.6</version></dependency>
Gradle의 설정 파일에 의존성 추가
Compile('org.projectlombok:lombok:1.16.6')
스프링 부트를 사용한다면 프로젝트 생성시 두번째 화면에서 Core -> Lombok을 선택하면 자동으로 라이브러리가 추가된다.
어노테이션
@Getter : Getter 메소드를 생성해 준다.
@Setter : Setter 메소드를 생성해 준다.
getter 는 필드값을 리턴하며 필드명이 name 일때 게터 메소드 이름은 getName (name이 boolean 일때는 isName), 기본 setter는 filed 명이 name 일때 setName이 된다. return type은 void 이며 field 와 동일한 type의 라파미터를 한 개만 입력받는다. 생성된 getter/setter method 의 기본 접근레벨은 AccessLevel 키워드를 명시적으로 지정하지 않았다면 public 이며 Accesslevels 은 PUBLIC, PROTECTED, PACKAGE, and PRIVATE 중에 설정할 수 있다.
spark 1.6을 기준으로 spark sql에 대해서 개략적으로 설명한 자료입니다. 발표 자료가 친절하지 않으나 한글로 된 자료가 없길래 혹시나 도움 되시는 분들이 있을까 하여 공유합니다.
발표자료 보다는 마지막 페이지의 참고자료들을 읽어보시기를 권장 드립니다.
출처만 남겨주시면 자유롭게 가져가셔서 사용하셔도 무방합니다.
2. 네트워킹 상태 조회
• ConnectivityManager Class
• 정의 : 안드로이드에서 네트워크의 형재 상태에 대한 정보를 반환하는 객체
• 기능
• 네트워크 연결 상태를 감시
• 만약 네트워크 연결 상태가 변경되면 다른 애플리케이션에 방송
• 또 하나의 네트워크 연결이 끊기면 다른 네트워크로 연결을 시도
• getNetworkInfo() Func
• 정의 : 현재 어떤 네트워크가 사용가능한지를 파악
• getNetworkInfo() 메소드를 호출할 때는 정보를 얻고 싶은 네트워크를 지정해야 함
ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info1 = manager.getNetWorkInfo(ConnectivityManager.TYPE_WIFI);
String status = “” + info1.isAvailable() + info1.isConnected();
display.setText(status);
3. 네트워크 지정 상수(getNetworkInfo(parameter))
• 네트워크 종류
• TYPE_MOBILE : default 모바일 네트워크
• TYPE_MOBILE_DUN : DUN방식의 모바일 네트워크
• TYPE_MOBILE_HIPRI : High Priority 모바일 네트워크
• TYPE_MOBILE_MMS : MMS 방식 모바일 네트워크
• TYPE_MOBILE_SUPL : SUPL 방식 모바일 네트워크
• TYPE_WIFI : default WIFI 네트워크
• TYPE_WIMAX : default WIMAX 네트워크
• TYPE_BLUETOOTH : 블루투스 네트워크
4. 네트워크 상태 반환 함수(getNetworkInfo 객체)
• 네트워크 상태 반환 함수
• DetailedState getDetailedState() : 네트워크의 상세한 상태를 보고
• String getExtraInfo() : 부가적인 정보를 보고
• String getTypeName() : “WIFI”나 “MOBILE”과 같은 문자열 이름을 반환
• Boolean isAvailable() : 네트워크가 사용 가능한지를 보고
• Boolean isConnected() : 네트워크가 연결되어 있는지를 보고
• Boolean isConnectedConnecting() : 네트워크가 연결되어 있는지 또는 연결 중인지를 보고
• Boolean isRoaming() : 현재 로밍 상태인지를 보고
• String toString() : 네트워크의 전체 상태를 문자열로 보고
6. 웹(Web)에서 파일 다운로드
• HttpURLConnection(java.net Package)
• http 프로토콜을 이용하여서 네트워크에서 파일 또는 웹페이지를 읽을 때 사용하는 기본 클래스
• 웹 서버로 부터 파일을 읽을 시 주의점
• 메인 스레드에서 직접 파일을 다운로드하면 예외(Exception)이 발생
• “NetworkOnMainThreadException”이 발생
• StrictMode : 네트워크에서 다운로드하는 것과 같은 시간이 많이 걸리는 작업은 메인 스레드에서 하면 안된다는 의미
• 별도의 스레드를 생성하고 여기에서 파일을 다운로드 해야 함
• AsyncTask 객체
• 새로운 스레드를 생성하는 방법 중의 하나
• 객체로부터 상속하는 AsyncTask는 사용하고자 하는 type을 지정해주어야 함
• Params : background 작업 시 필요한 data의 type 지정
• Progress : background 작업 중 진행상화을 표현하는데 사용되는 data를 위한 type 지정
• Result : background 작업 완료 후 리턴 할 data의 type 지정
8. AsyncTask 객체 callback 함수
• Callback 함수들은 상황에 맞게 Overriding 해야 함
• protected void onPreExecute() : Background 작업이 시작되지마자 실행될 코드를 구현
• protected abstract Result doInBackground(Params… params) : Background에서 수행할 작업을 구현
• execute() 함수에 입력된 인자들을 전달 받음
• void onProgressUpdate(Progress… values) : publishProgress(…) 메소드 호출의 callback으로 background 작업 진행
상황을 update하도록 구현
• void onPostExecute(Result result) : doInBackground(…)가 리턴하는 값을 바탕으로 작업 결과를 표현하도록 구현
• void onCancelled() : AsyncTask:cancel(Boolean)메소드를 사용해 AsyncTask인스턴스의 background 작업을 정지 또는
실행금지 시켰을 때 실행되는 콜백
12. XML 처리
• 안드로이드에서 XML 처리가 필요한 경우가 바로 서버에서 제공하는 데이터를 읽어 와서 스마트
폰의 화면에 표시하는 경우
• XML은 워낙 많이 사용되므로 이것을 전문적으로 처리해주는 파서(parser)들이 존재
• Parser들 : DOM, SAX, PullParser등
파서 특징
DOM
(Document Object Model)
엘리먼트들을 한 번에 트리 구조로 파싱하여 메모리에 저장
언제든지 원하는 엘리먼트에 대한 정보를 얻을 수 있음
메모리는 많이 차지하는 단점
SAX
(Simple API for XML)
라인 단위로 파싱하기 때문에 메모리의 소모가 적음
하지만 지나쳐간 엘리먼트들의 정보를 얻고 싶으면 다시 파싱해야 함
PullParser SAX와 유사하지만 원하는 부분까지만 파싱이 가능
13. XML DOM 기초
• DOM은 W3C의 표준으로 XML 문서에 접근하고 처리하는 표준적인 방법을 정의
• DOM은 XML 문서를 트리 구조로 표현
• DOM은 문서 엘리먼트의 객체(Object), 특징(Property), 메소드(interface)를 정의
• DOM은 XML 엘리먼트를 구하고 변경하고 추가, 삭제하는 방법의 표준
• DOM에서 XML 문서의 모든 것은 노드(node)라고 불림
• 전체 문서는 도큐먼트 노드(Document node)라고 부름
• 모든 XML 엘리먼트는 엘리먼트 노드(element node)
• XML 엘리먼트 안의 텍스트는 텍스트 노드(text node)
• 모든 어트리뷰트(attribute)는 어트리뷰트 노드(attribute node)
14. XML DOM 예
• <?xml version=“1.0” encoding=“ISO-8891-1”?>
<restaurant>
<food category=“Korean Food”>
<title lang=“kor”>Fantasy of Kimchi</title>
<chef>cooddy</chef>
<year>2016</year>
<price>15,000</price>
</food>
<food category=“English Food”>
<title lang=“en”>Fish & chips</title>
<chef>Sammy</chef>
<year>2014</year>
<price>20,000</price>
</food>
</restaurant>
루트 노드
엘리멘트 노드
텍스트 노드
15. DOM XML 파서(Parser) 생성
• javax.xml.parsers.DocumentBuilderFactory 객체를 이용하면 자바 DOM xml 파서 생성 가능
• parse()함수 : parse()함수 호출시 XML문서가 DOM 트리 구조로 변환
• DocumentBuilder 객체 : DOM 파서(Parser)
DocumentBuilder builder = null;
try
{
Document document = builder.parse(new FileInputStream(“data//text.xml”));
}
catch(SAXException e)
{
e.printStackTrace();
}
catch(IOException e)
{
e.printStackTrace();
}