네트워크

Size: px
Start display at page:

Download "네트워크"

Transcription

1 네트워크

2 네트워크통신의종류 v 애플리케이션과서버간의네트워크통신을하는방법으로는직접소켓을만들어서통신을하는 Low-Level 통신이있고 HTTP, HTTPS 등의프로토콜을이용하는 High-Level 통신이있음 v Low-Level 통신은성능은우수하지만구현이어려워서메신저나화상통화, RPG 게임등트래픽이많은분야에사용되고 High-Level 통신은 Low-Level 통신과반대되는특징을가짐 v Low Level 통신은다시 TCP 통신과 UDP 통신으로분류 v High-Level 통신의가장대표적인서비스가 HTTP/HTTPS 프로토콜을사용하는 Web Service v Web Service 는다시아키텍쳐구조에따라 SOAP 와 RESTful 방식으로나누고데이터종류에따라서 XML 과 JSON 방식으로구분하기도함 v SOAP(Simple Object Access Protocol) 는일반적으로널리알려진 HTTP, HTTPS, SMTP 등의프로토콜을통해양쪽에서 XML 형태의메시지를주고받을수있도록구현된방식으로원격프로시저호출 (Remote Procedure Call) 이라고불리우는방식을이용하며통신구조는 Envelop/Header/Body 세가지영역으로구분 ü ü ü Header 에는메타정보를저장하고데이터는 Body 영역에저장 SOAP 방식의장점은프록시나방화벽없이쉽게통신할수있고 HTTP 이외의프로토콜을이용할수있으며플랫폼독립적이고프로그래밍언어에종속되지않으며간단하고확장이용이 단점은메시지가커지면느려짐

3 네트워크통신의종류 v RESTful(REpresentational State Transfer) 서비스는분산하이퍼미디어시스템을위한소프트웨어아키텍쳐의한형식으로네트워크자원을정의하고자원에대한주소를관리하는방식으로별도의전송프로토콜없이전송하기위해만들어진간단한형식의인터페이스 v 데이터를요청하는 URI 를네트워크를통해서버에전달하면서버에서는그에맞는응답데이터를전송 v 서버에데이터를요청하는정보의타입은쓰기, 읽기, 수정, 삭제의 4 가지로구분하고이 4 가지를합쳐서 CRUD(Create, Read, Update, Delete) 라고부르는데이 4 가지요청을메소드방식을이용해서구분 v 전송방식 ü ü ü ü ü ü GET: 특정리소스의요청 POST: 리소스를생성및수정 PUT: 리소스를생성및수정 DELETE: 리소스를삭제 HEAD: GET 방식의요청이지만메타정보만요청하고자하는경우 OPTIONS: 특정 URL 에대한보조메소드역할

4 소켓통신 v TCP Socket Server : TCPServer.Java import java.io.bufferedreader; import java.io.ioexception; import java.io.inputstreamreader; import java.io.nslogwriter; import java.net.serversocket; import java.net.socket; public class TCPServer { public static void main(string[] args) { ServerSocket ss = null; Socket sock = null; try { ss = new ServerSocket(9999); System.out.NSLogln(" 서버대기중..."); while (true) { sock = ss.accept(); System.out.NSLogln(" 접속자정보 : " + sock.tostring()); BufferedReader in = new BufferedReader(new InputStreamReader(sock.getInputStream())); String str = in.readline(); System.out.NSLogln(" 전송된내용 : " + str); NSLogWriter pw = new NSLogWriter(sock.getOutputStream()); pw.nslogln(" 서버가보내는메시지 "); pw.flush();

5 소켓통신 v TCP Socket Server : TCPServer.Java in.close(); pw.close(); sock.close(); catch (IOException e) { System.out.NSLogln(" 해당포트사용중!!!"); try { ss.close(); catch (Exception ex) {

6 소켓통신 v ios App 프로젝트생성 v 다운로드받은소켓관련파일들을추가 : v 화면디자인 TextField, Button, TextView v TextField 에는 tfmsg, TextView에는 textview 라는변수를연결 v Button에는 touchupinside 이벤트에 send 라는메소드를연결 v ViewController.swift 파일에인스턴스변수선언 let host = " " let port = 9999 var client: TCPClient? v ViewController.swift 파일의 viewdidload 메소드에연결코드작성 override func viewdidload() { super.viewdidload() client = TCPClient(address: host, port: Int32(port))

7 소켓통신 v ViewController.swift 파일에사용자정의메소드작성 private func sendrequest(string: String, using client: TCPClient) -> String? { appendtotextfield(string: "Sending data... ") switch client.send(string: string) { case.success: return readresponse(from: client) case.failure(let error): appendtotextfield(string: String(describing: error)) return nil

8 소켓통신 v ViewController.swift 파일에사용자정의메소드작성 private func readresponse(from client: TCPClient) -> String? { sleep(3) guard let response = client.read(1024*10) else { return nil return String(bytes: response, encoding:.utf8) private func appendtotextfield(string: String) { NSLog(string) textview.text = textview.text.appending("\n\(string)")

9 소켓통신 v ViewController.swift 파일에 send func send(_ sender: Any) { guard let client = client else { return switch client.connect(timeout: 60) { case.success: appendtotextfield(string: "Connected to host \(client.address)") if let response = sendrequest(string: "\(tfmsg.text!)\n\n", using: client) { appendtotextfield(string: "Response: \(response)") case.failure(let error): appendtotextfield(string: String(describing: error))

10 웹에서가져오기 v Data 클래스를이용해서다양한종류의데이터를변환과정없이가져올수있음 v 초기화메소드를이용해서데이터를가져올수있는데 URL 이잘못되서데이터를제대로가져오지못하면 nil 이저장될수있기때문에이클래스의초기화메소드로만들어진데이터는 Optional 타입 v URL 인코딩 let urlstr = 아이폰 let encoded = urlstr.addingpercentencoding(withallowedcharacters:.urlqueryallowed) v 웹의자원을동기적으로가져오기 Data(contentsOf:URL) v Data 타입의데이터를 String 타입으로변환 String(data:Data 객체, encoding: 인코딩방식 ) v Data 타입의데이터를 Image 타입으로변환 UIImage(data: Data)

11 웹의이미지와텍스트다운로드

12 웹의이미지와텍스트다운로드 1.Single View Application 프로젝트생성 (DataDownload) 2.ViewController.swift 파일에변수추가 var imgview : UIImageView! var tv:uitextview! var filemgr:filemanager = FileManager.default

13 웹의이미지와텍스트다운로드 3.ViewController.swift 파일의 viewdidload 재정의 override func viewdidload() { super.viewdidload() tv = UITextView(frame:CGRect(x:0,y:220,width:320,height:350)) let naver = URL(string:" let naverdata = try! Data(contentsOf:naver!) let naverstring = String.init(data: naverdata, encoding:.utf8) tv!.text = naverstring tv!.iseditable = false view.addsubview(tv!) imgview = UIImageView(frame: CGRect(x:0,y:0,width:320,height:200)) // 이미지파일의내용을다운로드받기 let addr = " let imageurl = URL(string: addr) let imagedata = try! Data(contentsOf: imageurl!) // 이미지데이터로변환 let image = UIImage(data: imagedata) // 화면에출력 imgview.image = image view.addsubview(imgview!)

14 웹에서가져오기 v ATS ü ü ü ü ATS : App Trapsport Security 앱과백엔드서버와의보안연결강제 ios9, mac OS 부터 TLS v1.2 이상, SHA256, 2048bit RSA 등보안요건강화보안연결이아닌경우 : info.plist에등록 ü 설정 l l l l l Info.plist 에작성 루트키 : App Transport Security Settings(NSAppTransportSecurity) ATS 끄기 : NSAllowsArbitraryLoads(NSAllowsArbitraryLoads) 웹뷰만허용 : Allow Arbitary Loads in Web Content(NSAllowsArbitraryLoadsInWebContent) ATS 예외서버설정 : NSExceptionDomains(NSExceptionDomains)

15 웹에서가져오기 v ATS ü 모든도메인해제 ü 특정네트워크만예외로설정

16 웹에서가져오기 4.info.plist 파일에아래내용추가 =>SSL 보안프로토콜이적용된서버라면 ATS 보안설정없이접속이가능하지만 SSL 프로토콜이적용되어있지않으면아래설정을추가해서 ATS 설정을사용하지않도록해주어야합니다. <key>nsapptransportsecurity</key> <dict> <key>nsallowsarbitraryloads</key> <true/> </dict>

17 XML Parsing v iphone 에서는 XMLParser 클래스를이용해서 XML 데이터를파싱할수있음 ü ü ü ü XMLParser 의 init?(contentsof url: URL) 이나 init(data: Data) 로생성 XMLParser 의 parse 메소드를호출해서파싱하기시작 parse 메소드의수행결과가 true 이면유효한주소나데이터이고 false 이면유효하지않은주소나데이터 XMLParser 클래스의 delegate 속성에파싱에사용될메소드가있는인스턴스를지정

18 XML Parsing v XMLDelegate ü optional func parserdidstartdocument(_ parser: NSXMLParser) ü optional func parserdidenddocument(_ parser: NSXMLParser) ü 에러가발생하는경우호출되는메소드 o optional func parser(_ parser: NSXMLParser, validationerroroccurred parseerror: NSError) o optional func parser(_ parser: NSXMLParser, parseerroroccurred parseerror: NSError) ü 여는태그를만났을때호출되는메소드 optional func parser(_ parser: NSXMLParser, didstartelement elementname: String, namespaceuri namespaceuri: String?, qualifiedname qualifiedname: String?, attributes attributedict: [NSObject : AnyObject]) o parser는파싱을시작한객체이고 elementname은태그문자열 o namespaceuri는이름공간으로 o qualifiedname 역시이름공간에대한인자 o AttributeDict는각태그의속성값을 Dictionary 형태로반환 ü element를만나면호출되는메소드 optional func parser(_ parser: NSXMLParser, foundcharacters string: String?) o string이 element v 닫는태그를만나면호출되는메소드 optional func parser(_ parser: NSXMLParser, didendelement elementname: String, namespaceuri namespaceuri: String?, qualifiedname qname: String?)

19 XML Parsing <?xml version="1.0" encoding="utf-8"?> <Books> <Book id="1"> <title>circumference</title> <author>nicholas Nicastro</author> <summary>eratosthenes and the Ancient Quest to Measure the Globe.</summary> </Book> <Book id="2"> <title>copernicus Secret</title> <author>jack Repcheck</author> <summary>how the scientific revolution began</summary> </Book> <Book id="3"> <title>angels and Demons</title> <author>dan Brown</author> <summary>robert Langdon is summoned to a Swiss research facility to analyze a cryptic symbol seared into the chest of a murdered physicist.</summary> </Book> <Book id="4"><title>keep the Aspidistra Flying</title><author>George Orwell</author><summary>A poignant and ultimately hopeful look at class and society, Keep the Aspidistra Flying pays tribute to the stubborn virtues of ordinary people who keep the aspidistra flying.</summary></book></books>

20 XML Parsing

21 XML Parsing 1.Single View Application 프로젝트생성 (XMLParsing) 2. 프로젝트에서 ViewController.swift 를제거 3. 프로젝트에 UITableViewController 로부터상속받는 RootViewController 클래스생성 4.Main.storyboard 에서 ViewController 를제거하고 TableViewController 를추가한후 3 번에서만든클래스를 Class 로설정하고첫번째뷰컨트롤러로설정 5.Navigation Controller 추가 6. 하나의데이터를저장할 Book 클래스생성 import Foundation class Book{ var bookid:string? var title:string? var author:string? var summary:string?

22 7.RootViewController 클래스에멤버변수선언 var book : Book! var currentelementvalue : String! var books = [Book]() XML Parsing

23 XML Parsing 8.RootViewController 클래스의 viewdidload 메소드수정 override func viewdidload() { super.viewdidload() let url = URL(string:" let xmlparser = XMLParser(contentsOf: url!) xmlparser?.delegate = self let success = xmlparser?.parse() NSLog(success! as Bool) if success == true { let alert = UIAlertController(title:"XML 파싱 ", message: " 파싱완료.", preferredstyle:.alert) let ok = UIAlertAction(title: " 확인 ", style:.cancel) alert.addaction(ok) // 메시지창실행 self.present(alert, animated: true, completion: nil) self.title = " 파싱성공 " else { let alert = UIAlertController(title:"XML 파싱 ", message: " 파싱실패 ", preferredstyle:.alert) let ok = UIAlertAction(title: " 확인 ", style:.cancel) alert.addaction(ok) // 메시지창실행 self.present(alert, animated: false) self.title = " 파싱실패 "

24 XML Parsing 9.RootViewController 클래스에 extension 을생성하고 XML 파싱을수행해줄메소드생성 extension RootViewController:XMLParserDelegate{ func parser(_ parser: XMLParser, didstartelement elementname: String, namespaceuri: String?, qualifiedname qname: String?, attributes attributedict: [String : String] = [:]) { if elementname == "Book" { book = Book() let dic = attributedict as Dictionary book?.bookid = dic["id"]

25 XML Parsing func parser(_ parser: XMLParser, didendelement elementname: String, namespaceuri: String?, qualifiedname qname: String?) { if elementname == "Books"{ return if elementname == "Book" { books.append(book!) book = nil else{ if elementname == "title"{ book?.title = currentelementvalue else if elementname == "author"{ book?.author = currentelementvalue else if elementname == "summary"{ book?.summary = currentelementvalue currentelementvalue = nil

26 XML Parsing func parser(_ parser: XMLParser, foundcharacters string: String) { // 처음호출되는것이라면 currentelementvalue 에메모리할당하고 string 대입 if currentelementvalue == nil{ currentelementvalue = string // 처음호출되는경우가아니라면이전데이터에이어붙이기 else{ currentelementvalue = "\(currentelementvalue!)\(string)"

27 XML Parsing 10.RootViewController 클래스에테이블뷰출력메소드작성 override func numberofsections(in tableview: UITableView) -> Int { // #warning Potentially incomplete method implementation. // Return the number of sections. return 1 override func tableview(_ tableview: UITableView, numberofrowsinsection section: Int) -> Int { // #warning Incomplete implementation, return the number of rows return books.count override func tableview(_ tableview: UITableView, cellforrowat indexpath: IndexPath) -> UITableViewCell { let cell:uitableviewcell = UITableViewCell.init(style:.subtitle, reuseidentifier: "cell") cell.textlabel?.text = books[indexpath.row].title cell.accessorytype =.disclosureindicator return cell

28 XML Parsing 11. 하위데이터를출력할 UIViewController 로부터상속받은 DetailViewController 클래스생성 12.Main.stroyboard 파일에 ViewController 를 1 개배치하고클래스를이전에만든클래스로변경하고 storyboard ID 도이전에만든클래스이름을변경하고화면디자인

29 XML Parsing 13. DetailViewController 의 View 에레이블 5 개와 TextView1 개배치하고 2 개의레이블과텍스트뷰에변수연결하고 Book weak var lbltitle: weak var lblauthor: weak var tvsummary: UITextView! var book : Book? 14. DetailViewController 의 ViewDidLoad 메소드재정의 override func viewdidload() { super.viewdidload() lbltitle.text = book!.title lblauthor.text = book!.author tvsummary.text = book!.summary self.title = book!.title // Do any additional setup after loading the view.

30 XML Parsing 15. RootViewController.swift 파일에테이블뷰의셀을선택했을때호출되는메소드를재정의 override func tableview(_ tableview: UITableView, didselectrowat indexpath: IndexPath){ let detailviewcontroller = self.storyboard?.instantiateviewcontroller(withidentifier: "DetailViewController") as! DetailViewController detailviewcontroller.book = books[indexpath.row] self.navigationcontroller?.pushviewcontroller(detailviewcontroller, animated: true)

31 JSON Parsing v JSON 파싱 ü JSONSerialization.JSONObject(with data: Data, options opt: JSONSerialization.ReadingOptions = []) throws -> Any ü 파싱결과 : Array, Dictionary, String 등 v JSON 생성 ü JSONSerialization.data(withJSONObject obj: Any, options opt: JSONSerialization.WritingOptions = []) throws -> Data v {"count":4266,"list":[{"movieid":"p ","title":" 매기 ","genre":" 드라마, 스릴러 ","participant":0,"ratinga verage":10.0,"thumnailimage":"rep_ _1_1_0314.jpg","linkurl":" w=tot&da=s43&q=%eb%a7%a4%ea%b8%b0",{"movieid":"p ","title":" 바이러스격리구역 ","genre":" 공포 ","participant":0,"ratingaverage":10.0,"thumnailimage":"rep_ _1_1_0138.j pg","linkurl":" EC%8A%A4+%EA%B2%A9%EB%A6%AC%EA%B5%AC%EC%97%AD",{"movieId":"P ","title":" 데몬킹스

32 JSON Parsing

33 JSON Parsing 1.Single View Application 프로젝트생성 - JsonParsing 2.Main.storyboard 의 ViewController 의 View 에 UITableView 를배치하고 datasource 와 delegate 를 ViewContrroller 로설정하고 NavigationController 추가

34 JSON Parsing 3.ViewController 클래스에데이터를저장할배열변수를선언 var titles:[string]=[] var images:[string]=[]

35 JSON Parsing 4.ViewController 클래스의 viewdidload 메소드수정 override func viewdidload() { super.viewdidload() self.title = " 영화목록 " // 주소만들기 let url = URL(string: " // 다운로드받기 let data = try! Data(contentsOf: url!) // 다운로드받은데이터를 NSDictionary 로만들기 let jsonresult = try! JSONSerialization.jsonObject(with:data, options:[]) as! NSDictionary //channel 키의값을디셔너리로가져오기 let ar = jsonresult["list"] as! NSArray // 반복문을이용해서배열의데이터를꺼낸후 titles 에추가 for index in 0...(ar.count-1){ let item = ar[index] as! NSDictionary titles.append(item["title"] as! String) images.append(item["thumnailimage"] as! String)

36 JSON Parsing 5.ViewController 의 extension 을생성하고테이블뷰출력메소드작성 extension ViewController : UITableViewDelegate, UITableViewDataSource{ func numberofsections(in tableview: UITableView) -> Int { return 1 func tableview(_ tableview: UITableView, numberofrowsinsection section: Int) -> Int { return titles.count func tableview(_ tableview: UITableView, cellforrowat indexpath: IndexPath) -> UITableViewCell { let cell:uitableviewcell = UITableViewCell(style:UITableViewCell.CellStyle.subtitle, reuseidentifier:"cell") cell.textlabel?.text = titles[indexpath.row] let addr = images[indexpath.row] let imageurl = URL(string: " let imagedata = try! Data(contentsOf:imageUrl!) let image = UIImage(data: imagedata) cell.imageview?.image = image return cell

37 6. info.plist 파일에보안설정해제설정추가 <key>nsapptransportsecurity</key> <dict> <key>nsallowsarbitraryloads</key> <true/> </dict> JSON Parsing

38 동기식 & 비동기식 v 동기식 ü 코드를실행하면결과를얻을때까지대기 ü 실행결과는반환값으로전달 ü 다른코드의실행을멈춤 ü 코드작성쉬움 v 비동기식 ü 코드실행후결과를얻을때까지대기하지않으며실행결과는델리게이트 / 클로저등을사용 ü 다른코드실행을멈추지않음 ü 코드작성어려움 ( 멀티스레드의이해필요 ) ü 처리방법 l Thread 클래스이용 l URLSession 과 URLConnection 과 API 이용 l 비동기라이브러리를사용

39 스레드 v Swift의스레드 ü Thread 클래스로부터상속받는클래스를생성 ü main 메소드에스레드로동작할코드를작성 ü 인스턴스를생성하고 start 메소드호출 ü 주의할점 : main 스레드이외의스레드에서 UI를변경하려고하는것은안됨

40 스레드

41 스레드 v Single View App 프로젝트생성 - iosthread v ViewController 클래스에변수선언 var imageview : UIImageView! var imagename : UILabel!

42 스레드 v ViewController 클래스의 viewdidload 메소드작성 override func viewdidload() { super.viewdidload() // 화면전체크기가져오기 let frame = UIScreen.main.bounds imageview = UIImageView(frame: CGRect(x: 0, y: 0, width: 300, height: 300)) imageview.center = CGPoint(x: frame.size.width/2, y: frame.size.height/2) let addr = " let imageurl = URL(string: addr) let imagedata = try! Data(contentsOf: imageurl!) let image = UIImage(data: imagedata) imageview.image = image self.view.addsubview(imageview) imagename = UILabel(frame: CGRect(x: 0, y: 0, width: 300, height: 50)) imagename.center = CGPoint(x: imageview.center.x, y:imageview.center.y + 200) imagename.textalignment =.center imagename.text = " 수지 " self.view.addsubview(imagename)

43 스레드 v Info.plist 파일에 ATS 설정옵션설정 <key>nsapptransportsecurity</key> <dict> <key>nsexceptiondomains</key> <dict> <key>img.hani.co.kr</key> <dict> <key>nsincludessubdomains</key> <true/> <key>nstemporaryexceptionallowsinsecurehttploads</key> <true/> </dict> </dict> </dict>

44 스레드 v 이미지를다운로드받아이미지뷰에출력하는스레드클래스를생성하고 main 메소드구현 class ImageDownloader : Thread { var imageview : UIImageView! var url : URL! override func main() { let imagedata = try! Data(contentsOf: url) let image = UIImage(data: imagedata) imageview.image = image

45 스레드 v ViewController 클래스의 viewdidload 메소드수정 override func viewdidload() { super.viewdidload() // 화면전체크기가져오기 let frame = UIScreen.main.bounds imageview = UIImageView(frame: CGRect(x: 0, y: 0, width: 300, height: 300)) imageview.center = CGPoint(x: frame.size.width/2, y: frame.size.height/2) self.view.addsubview(imageview) let addr = " let imageurl = URL(string: addr) let downloader = ImageDownloader() downloader.imageview = imageview downloader.url = imageurl downloader.start() imagename = UILabel(frame: CGRect(x: 0, y: 0, width: 300, height: 50)) imagename.center = CGPoint(x: imageview.center.x, y:imageview.center.y + 200) imagename.textalignment =.center imagename.text = " 수지 " self.view.addsubview(imagename)

46 스레드

47 스레드 v Main Thread 동작 API ü NSObject와셀렉터이용 func performselector(onmainthread aselector: Selector, with arg: Any?, waituntildone wait: Bool) ü OperationQueue 이용 OperationQueue.main.addOperation { self.imageview.image = UIImage(data: imagedata)

48 스레드 v 이미지를다운로드받는스레드클래스를수정 class ImageDownloader : Thread { var imageview : UIImageView! var url : URL! override func main() { let queue = OperationQueue() queue.addoperation { let imagedata = try! Data(contentsOf: self.url) let image = UIImage(data: imagedata) OperationQueue.main.addOperation { self.imageview.image = image

49 스레드 v 이미지를다운로드받는스레드클래스를수정 class ImageDownloader : Thread { var imageview : UIImageView! var url : URL! override func main() { self.performselector(onmainthread: #selector(download), with: nil, waituntildone: func download(){ let imagedata = try! Data(contentsOf: self.url) let image = UIImage(data: imagedata) self.imageview.image = image

50 비동기 API v ios 앱에서서버와통신하기위해 Apple 은 URLSession 이라는 API 를제공 v URLSession 의 Request 와 Response ü ü URLSession 은다른 HTTP 통신과마찬가지로 Request 와 Response 를기본구조로가지고있으며 Request 는 URL 객체를통해직접통신하는형태와 URLRequest 객체를만들어서옵션을설정하여통신하는형태가있음 Response 는설정된 Task 의 Completion Handler 형태로 response 를받거나 URLSessionDelegate 를통해지정된메소드를호출하는형태로 response 를받는형태가있는데일반적으로간단한 response 를작성할때에는 Completion Handler 를사용하지만앱이 background 상태로들어갈때에도파일다운로드를지원하도록설정하거나인증과캐싱을 default 옵션으로사용하지않는상황과같은경우에는 Delegate 패턴을사용

51 비동기 API v URLSession은크게 3가지종류의 Session을지원 ü Default Session: 기본적인 Session으로디스크기반캐싱을지원 ü Ephemeral Session: 어떠한데이터도저장하지않는형태의세션 ü Background Session: 앱이종료된이후에도통신이이뤄지는것을지원 v Session 생성 ü 공용세션얻기 let session = URLSession.shared ü 커스텀세션생성 : 세션설정 (URLSessionConfiguration) let config = URLSessionConfiguration.default let session = URLSession(configuration: config)

52 비동기 API v URLSessionTask ü Task 객체는일반적으로 Session 객체가서버로요청을보낸후응답을받을때 URL 기반의내용들을받는 (retrieve) 역할을수행 ü 3가지종류의 Task가지원됨 l Data Task - Data 객체를통해데이터주고받는 Task l Download Task - data를파일의형태로전환후다운받는 Task로백그라운드다운로드지원 l Upload Task - data를파일의형태로전환후업로드하는 Task ü 메소드 l func suspend() l func resume() l func cancel() l 태스크생성후 resume 호출해야동작 l 태스크상태 var state: URLSessionTask.State {get

53 비동기 API v 세션 (URLSession) 에서태스크생성 ü func datatask(with url: URL, (Data?, URLResponse?, Error?) -> Swift.Void) -> URLSessionDataTask ü func datatask(with request: URLRequest, (Data?, URLResponse?, Error?) -> Swift.Void) -> URLSessionDataTask ü func downloadtask(with url: URL, (URL?, URLResponse?, Error?) - > Swift.Void) -> URLSessionDownloadTask ü func uploadtask(with request: URLRequest, fromfile fileurl: URL) -> URLSessionUploadTask

54 비동기 API v URLSessionTask ü 태스크완료 l 태스크완료시 completionhandler 클로저동작 l 태스크결과전달 : Data, URLResponse, Error l 에러처리필요 l 클로저는멀티쓰레드로동작 l UI 업데이트하려면메인스레드로동작하도록작성

55 비동기 API 를이용한다운로드 v ViewController 클래스의 viewdidload 메소드수정 override func viewdidload() { super.viewdidload() // 화면전체크기가져오기 let frame = UIScreen.main.bounds imageview = UIImageView(frame: CGRect(x: 0, y: 0, width: 300, height: 300)) imageview.center = CGPoint(x: frame.size.width/2, y: frame.size.height/2) self.view.addsubview(imageview) let addr = " let imageurl = URL(string: addr) let session = URLSession.shared let task = session.datatask(with: imageurl!, completionhandler: { (data : Data?, response : URLResponse?, error : Error?) in if error!= nil{ NSLog(" 다운로드에러 :\(error!.localizeddescription)") return // 메인쓰레드에서이미지를이미지뷰에반영 OperationQueue.main.addOperation { self.imageview.image = UIImage(data: data!) ) task.resume()

56 비동기 API 를이용한다운로드 imagename = UILabel(frame: CGRect(x: 0, y: 0, width: 300, height: 50)) imagename.center = CGPoint(x: imageview.center.x, y:imageview.center.y + 200) imagename.textalignment =.center imagename.text = " 수지 " self.view.addsubview(imagename)

57 비동기 API 를이용한다운로드 v URLSession 을이용한 post 방식요청 // Prepare URL let url = URL(string: " guard let requesturl = url else { fatalerror() // Prepare URL Request Object var request = URLRequest(url: requesturl) request.httpmethod = "POST" // HTTP Request Parameters which will be sent in HTTP Request Body let poststring = " = &pw=password"; // Set HTTP Request Body request.httpbody = poststring.data(using: String.Encoding.utf8); // Perform HTTP Request let task1 = URLSession.shared.dataTask(with: request) { (data, response, error) in if let error = error { NSLog("Error took place \(error)") return if let data = data, let datastring = String(data: data, encoding:.utf8) { NSLog("Response data string:\n \(datastring)") task1.resume()

58 영화정보목록보기

59 목록화면 v v v v v 프로젝트생성 (MovieList) 기존 ViewController 대신새로운뷰컨트롤러로사용할 UITableViewController 로부터상속받는클래스를생성 (MovieListViewController) Main.storyboard 파일에테이블뷰컨트롤러를추가하고 class 속성을설정하고시작뷰컨트롤러로설정 NavigationController 를추가 CustomCell 을사용하기위해서 UITableViewCell 클래스로부터상속받는클래스를생성 (MovieCell)

60 CustomCell 만들기 v 셀의높이조정 : storyboard 에서 TableView 를선택하고 size inspector 에서높이를조정

61 CustomCell 만들기 v v storyboard에서 prototype cell을선택하고 class 와 Identifier를생성한클래스이름으로변경화면디자인 ImageView 1개와 Label 3개배치

62 CustomCell 만들기 v ImageView 1 개와 Label 4 개를 MovieCell weak var thumbnail: weak var lbltitle: weak var lblgenre: weak var lblrating: UILabel!

63 OpenAPI 가져오기 v v 요청파라미터 ü 파라미터 :searchtype, keyword, page, pagecnt ü searchtype: title, genre, both ü keyword는검색어 ü page는페이지번호 ü count는페이지당데이터개수 ü 전부생략이가능

64 OpenAPI 가져오기 v 응답결과 {"count":4262,"list":[{"movieid":4264,"title":" 바이러스격리구역 ","subtitle":"infected","pubdate":"2013","director":" 필립매시즈위츠 ","actor":" 딜라란마틴 보린튼 유지니아쿠즈미나 아드리안부 아디아딘 니나케이트 ","genre":" 공포 ","rating":10.0,"thumbnail":"rep_ _1_1_0138.jpg","link":" e.naver.com/movie/bi/mi/basic.nhn?code=104605",{"movieid":4263,"title":" 쥬라기공원 : 다이노어택 ","subtitle":"jurassic Attack","pubdate":"2013","director":" 안소니팽크하우저 ","actor":" 조던로슨 코린네멕 베론웰스 게리스트레치 ","genre":"sf/ 판타지, 공포, 액션 / 모험 ","rating":10.0,"thumbnail":"rep_ _1_1_0235.j pg","link":" 영웅본색 2 HD","subtitle":null,"pubdate":null,"director":null,"actor":null,"genre":" 드라마, 액션 / 모험 ","rating":10.0,"thu mbnail":"rep_ _1_1_0219.jpg","link":" w?movieid=p ",{"movieid":4261,"title":" 페인킬러엑스 ","subtitle":"painkiller","pubdate":"2012","director":" 베레니카매시즈위츠 ","actor":" 마이크파프 엘로디하라 론푸실로 딜라란마틴 ","genre":" 액션 / 모험, 스릴러 ","rating":0.0,"thumbnail":"rep_ _1_1_0240.jpg","link":"http s://movie.naver.com/movie/bi/mi/basic.nhn?code=104607"

65 OpenAPI 가져오기 v MovieListViewController.swift 파일의 viewdidload 메소드에코드를추가하고테스트 override func viewdidload() { super.viewdidload() // 다운로드받을 URL 만들기 let url = " let apiuri : URL! = URL(string: url) //REST API 를호출 let apidata = try! Data(contentsOf: apiuri) // 데이터전송결과를로그로출력 let log = NSString(data: apidata, encoding: String.Encoding.utf8.rawValue)?? "" NSLog("API Result=\( log )")

66 OpenAPI 가져오기 v 다운로드가안되면인터넷접속여부를확인하고 info.plist 파일에아래코드를추가 <key>nsapptransportsecurity</key> <dict> <key>nsallowsarbitraryloads</key> <true/> </dict>

67 OpenAPI 가져오기 v 영화정보하나를저장할구조체를생성 MovieVO.swift import Foundation import UIKit struct MovieVO { var title: String? // 영화제목 var genre: String? // 영화장르 var link:string? // 영화상세정보링크 var rating: Double? // 평점 var thumbnail: String? // 영화섬네일이미지주소 var image:uiimage? // 이미지

68 OpenAPI 가져오기 v 데이터를파싱해서저장하기 1.MovieListViewController.swift 파일에데이터를저장할프로퍼티생성 // 테이블뷰를구성할리스트데이터 lazy var list: [MovieVO] = { var datalist = [MovieVO]() return datalist ()

69 OpenAPI 가져오기 v 데이터를파싱해서저장하기 2.MovieListViewController.swift 파일의 viewdidload 메소드하단에파싱해서저장하는코드추가 do { //JSON 객체를파싱하여 NSDictionary 객체로받음 let apidictionary = try JSONSerialization.jsonObject(with: apidata, options: []) as! NSDictionary // 데이터구조에따라차례대로캐스팅하며읽어온다. let movies = apidictionary["list"] as! NSArray //Iterator 처리를하면서 API 데이터를 MovieVO 객체에저장한다. for row in movies { // 데이터를 NSDictionary 타입으로캐스팅 let r = row as! NSDictionary // 테이블뷰리스트를구성할데이터형식 var movie = MovieVO( ) // movie 배열의각데이터를 mvo 상수의속성에대입 movie.title = r["title"] as? String movie.genre = r["genre"] as? String movie.thumbnail = r["thumbnail"] as? String movie.link = r["link"] as? String movie.rating = ((r["rating"] as! NSNumber).doubleValue)

70 OpenAPI 가져오기 // 웹상에있는이미지를읽어와 UIImage 객체로생성 let url: URL! = URL(string: " let imagedata = try! Data(contentsOf: url) movie.image = UIImage(data:imageData) // list 배열에추가 self.list.append(movie) NSLog(self.list.description) // 데이터를다시읽어오도록테이블뷰를갱신한다. self.tableview.reloaddata() catch { NSLog("Parse Error!!")

71 데이터출력하기

72 데이터출력하기 v 테이블뷰출력메소드재정의 // 섹션의개수를설정하는메소드 override func numberofsections(in tableview: UITableView) -> Int { return 1 // 섹션별행의개수를설정하는메소드 override func tableview(_ tableview: UITableView, numberofrowsinsection section: Int) -> Int { return self.list.count

73 데이터출력하기 // 셀을만들어서출력하는메소드 override func tableview(_ tableview: UITableView, cellforrowat indexpath: IndexPath) -> UITableViewCell { // 주어진행에맞는데이터소스를읽어온다. let row = self.list[indexpath.row] let cell = tableview.dequeuereusablecell(withidentifier: "MovieCell") as! MovieCell // 데이터소스에저장된값을각아울렛변수에할당 cell.lbltitle?.text = row.title cell.lblgenre?.text = row.genre cell.lblrating?.text = "\(row.rating!)" cell.thumbnail?.image = row.image return cell

74 데이터출력하기 // 셀을선택했을때호출되는메소드 override func tableview(_ tableview: UITableView, didselectrowat indexpath: IndexPath) { NSLog(" 선택된행은 \(indexpath.row) 번째행입니다 ") // 셀의높이를설정하는메소드 override func tableview(_ tableview: UITableView, heightforrowat indexpath: IndexPath) -> CGFloat { return 80

75 업데이트기능 v MovieListViewController.swift 파일에페이지번호를저장할변수선언 var page = 1

76 업데이트기능 v MovieListViewController.swift 파일에데이터를다운로드받는메소드생성 // 데이터를다운로드받는메소드 func downloaddata(){ // 다운로드받을 URL 만들기 let url = " let apiuri : URL! = URL(string: url) //REST API 를호출 let apidata = try! Data(contentsOf: apiuri) // 데이터전송결과를로그로출력 let log = NSString(data: apidata, encoding: String.Encoding.utf8.rawValue)?? "" NSLog("API Result=\( log )")

77 업데이트기능 do { //JSON 객체를파싱하여 NSDictionary 객체로받음 let apidictionary = try JSONSerialization.jsonObject(with: apidata, options: []) as! NSDictionary // 데이터구조에따라차례대로캐스팅하며읽어온다. let movies = apidictionary["list"] as! NSArray //Iterator 처리를하면서 API 데이터를 MovieVO 객체에저장한다. for row in movies { // 데이터를 NSDictionary 타입으로캐스팅 let r = row as! NSDictionary // 테이블뷰리스트를구성할데이터형식 var movie = MovieVO( ) // movie 배열의각데이터를 mvo 상수의속성에대입 movie.title = r["title"] as? String movie.genre = r["genre"] as? String movie.thumbnail = r["thumbnail"] as? String movie.link = r["link"] as? String movie.rating = ((r["rating"] as! NSNumber).doubleValue)

78 업데이트기능 // 웹상에있는이미지를읽어와 UIImage 객체로생성 let url: URL! = URL(string: " let imagedata = try! Data(contentsOf: url) movie.image = UIImage(data:imageData) // list 배열에추가 self.list.append(movie) NSLog(self.list.description) // 데이터를다시읽어오도록테이블뷰를갱신한다. self.tableview.reloaddata()

79 업데이트기능 // 전체데이터카운트를얻는다. let totalcount = (apidictionary["count"] as? NSNumber)!.intValue // totalcount 가읽어온데이터크기와같거나클경우리프레시컨트롤을숨김 if (self.list.count >= totalcount) { self.refreshcontrol?.ishidden = true catch { NSLog("Parse Error!!")

80 업데이트기능 v MovieListViewController.swift 파일에 refreshcontrol func handlerefresh(_ refreshcontrol: UIRefreshControl) { // O 현재페이지값에 1 을추가한다. self.page += self.page + 1 self.downloaddata() // 데이터를다시읽어오도록테이블뷰를갱신한다. self.tableview.reloaddata() refreshcontrol.endrefreshing()

81 업데이트기능 v MovieListViewController.swift 파일의 viewdidload 메소드수정 override func viewdidload() { super.viewdidload() self.title = " 영화정보 " self.refreshcontrol = UIRefreshControl() self.refreshcontrol!.addtarget(self, action: #selector(movielistviewcontroller.handlerefresh(_:)), for:.valuechanged) self.refreshcontrol!.tintcolor = UIColor.red self.downloaddata()

82 비동기처리 v MovieListViewController.swift 파일에이미지를다운로드받아오는메소드를생성 func getthumbnailimage(_ index: Int) -> UIImage { // 인자값으로받은인덱스를기반으로해당하는배열에서데이터를읽어옴 var movie = self.list[index] // 저장된이미지가있으면그것을반환하고, 없을경우내려받아저장한후반환 if let savedimage = movie.image { return savedimage else { let url: URL! = URL(string: movie.thumbnail!) let imagedata = try! Data(contentsOf: url) movie.image = UIImage(data:imageData) // UIImage를 MovieVO 객체에우선저장 return movie.image! // 저장된이미지를반환

83 비동기처리 v MovieListViewController.swift 파일의셀출력메소드수정 // 셀을만들어서출력하는메소드 override func tableview(_ tableview: UITableView, cellforrowat indexpath: IndexPath) -> UITableViewCell { // 주어진행에맞는데이터소스를읽어온다. let row = self.list[indexpath.row] let cell = tableview.dequeuereusablecell(withidentifier: "MovieCell") as! MovieCell // 데이터소스에저장된값을각아울렛변수에할당 cell.lbltitle?.text = row.title cell.lbldescription?.text = row.genrenames cell.lblrating?.text = "\(row.ratingaverage!)" DispatchQueue.main.async(execute: { cell.thumbnail.image = self.getthumbnailimage(indexpath.row) ) return cell

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft PowerPoint - 04-UDP Programming.ppt Chapter 4. UDP Dongwon Jeong djeong@kunsan.ac.kr http://ist.kunsan.ac.kr/ Dept. of Informatics & Statistics 목차 UDP 1 1 UDP 개념 자바 UDP 프로그램작성 클라이언트와서버모두 DatagramSocket 클래스로생성 상호간통신은 DatagramPacket 클래스를이용하여

More information

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Crash Unity SDK... Log & Crash Search. - Unity3D v4.0 ios

More information

iOS4_13

iOS4_13 . (Mail), (Phone), (Safari), SMS, (Calendar).. SDK API... POP3 IMAP, Exchange Yahoo Gmail (rich) HTML (Mail). Chapter 13.... (Mail)., (Mail).. 1. Xcode View based Application (iphone) Emails. 2. EmailsViewController.xib.

More information

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 2012.11.23 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Document Distribution Copy Number Name(Role, Title) Date

More information

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드] - Socket Programming in Java - 목차 소켓소개 자바에서의 TCP 프로그램작성방법 주요클래스와메소드 HTTP 프로토콜을이용한예제 에코프로그램 Q/A 에코프로그램 - EchoServer 에코프로그램 - EchoClient TCP Programming 1 소켓소개 IP, Port, and Socket 포트 (Port): 전송계층에서통신을수행하는응용프로그램을찾기위한주소

More information

어댑터뷰

어댑터뷰 04 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adatper View) 란? u 어댑터뷰의항목하나는단순한문자열이나이미지뿐만아니라, 임의의뷰가될수 있음 이미지뷰 u 커스텀어댑터뷰설정절차 1 2 항목을위한 XML 레이아웃정의 어댑터정의 3 어댑터를생성하고어댑터뷰객체에연결

More information

SK IoT IoT SK IoT onem2m OIC IoT onem2m LG IoT SK IoT KAIST NCSoft Yo Studio tidev kr 5 SK IoT DMB SK IoT A M LG SDS 6 OS API 7 ios API API BaaS Backend as a Service IoT IoT ThingPlug SK IoT SK M2M M2M

More information

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100 2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack

More information

Microsoft PowerPoint - 03-TCP Programming.ppt

Microsoft PowerPoint - 03-TCP Programming.ppt Chapter 3. - Socket in Java - 목차 소켓소개 자바에서의 프로그램작성방법 주요클래스와메소드 HTTP 프로토콜을이용한예제 에코프로그램 에코프로그램 - EchoServer 에코프로그램 - EchoClient Q/A 1 1 소켓소개 IP,, and Socket 포트 (): 전송계층에서통신을수행하는응용프로그램을찾기위한주소 소켓 (Socket):

More information

Microsoft PowerPoint 웹 연동 기술.pptx

Microsoft PowerPoint 웹 연동 기술.pptx 웹프로그래밍및실습 ( g & Practice) 문양세강원대학교 IT 대학컴퓨터과학전공 URL 분석 (1/2) URL (Uniform Resource Locator) 프로토콜, 호스트, 포트, 경로, 비밀번호, User 등의정보를포함 예. http://kim:3759@www.hostname.com:80/doc/index.html URL 을속성별로분리하고자할경우

More information

자바-11장N'1-502

자바-11장N'1-502 C h a p t e r 11 java.net.,,., (TCP/IP) (UDP/IP).,. 1 ISO OSI 7 1977 (ISO, International Standards Organization) (OSI, Open Systems Interconnection). 6 1983 X.200. OSI 7 [ 11-1] 7. 1 (Physical Layer),

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean

More information

<4D F736F F F696E74202D20C1A63235C0E520B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63235C0E520B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 25 장네트워크프로그래밍 이번장에서학습할내용 네트워크프로그래밍의개요 URL 클래스 TCP를이용한통신 TCP를이용한서버제작 TCP를이용한클라이언트제작 UDP 를이용한통신 자바를이용하여서 TCP/IP 통신을이용하는응응프로그램을작성하여봅시다. 서버와클라이언트 서버 (Server): 사용자들에게서비스를제공하는컴퓨터 클라이언트 (Client):

More information

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information

PowerPoint Presentation

PowerPoint Presentation Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음

More information

PowerPoint Template

PowerPoint Template JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것

More information

JAVA PROGRAMMING 실습 08.다형성

JAVA PROGRAMMING 실습 08.다형성 2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스

More information

쉽게 풀어쓴 C 프로그래밊

쉽게 풀어쓴 C 프로그래밊 Power Java 제 27 장데이터베이스 프로그래밍 이번장에서학습할내용 자바와데이터베이스 데이터베이스의기초 SQL JDBC 를이용한프로그래밍 변경가능한결과집합 자바를통하여데이터베이스를사용하는방법을학습합니다. 자바와데이터베이스 JDBC(Java Database Connectivity) 는자바 API 의하나로서데이터베이스에연결하여서데이터베이스안의데이터에대하여검색하고데이터를변경할수있게한다.

More information

제11장 프로세스와 쓰레드

제11장 프로세스와 쓰레드 제9장자바쓰레드 9.1 Thread 기초 (1/5) 프로그램 명령어들의연속 (a sequence of instruction) 프로세스 / Thread 실행중인프로그램 (program in execution) 프로세스생성과실행을위한함수들 자바 Thread 2 9.1 Thread 기초 (2/5) 프로세스단위작업의문제점 프로세스생성시오버헤드 컨텍스트스위치오버헤드

More information

2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.

2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1 <LinearLayout xmlns:android=http://schemas.android.com/apk/res/android 2 xmlns:tools=http://schemas.android. 10 차시파일처리 1 학습목표 내장메모리의파일을처리하는방법을배운다. SD 카드의파일을처리하는방법을배운다. 2 확인해볼까? 3 내장메모리파일처리 1) 학습하기 [ 그림 10-1] 내장메모리를사용한파일처리 2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1

More information

- 목차 - - ios 개발환경및유의사항. - 플랫폼 ios Project. - Native Controller와플랫폼화면연동. - 플랫폼 Web(js)-Native 간데이터공유. - 플랫폼확장 WN Interface 함수개발. - Network Manager clas

- 목차 - - ios 개발환경및유의사항. - 플랫폼 ios Project. - Native Controller와플랫폼화면연동. - 플랫폼 Web(js)-Native 간데이터공유. - 플랫폼확장 WN Interface 함수개발. - Network Manager clas 플랫폼사용을위한 ios Native Guide - 목차 - - ios 개발환경및유의사항. - 플랫폼 ios Project. - Native Controller와플랫폼화면연동. - 플랫폼 Web(js)-Native 간데이터공유. - 플랫폼확장 WN Interface 함수개발. - Network Manager class 개발. - Native Controller에서

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 인터페이스, 람다식, 패키지 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 홈네트워킹 public interface RemoteControl { public void turnon(); // 가전제품을켠다. public void turnoff(); // 가전제품을끈다. 인터페이스를구현 public class Television

More information

rmi_박준용_final.PDF

rmi_박준용_final.PDF (RMI) - JSTORM http://wwwjstormpekr (RMI)- Document title: Document file name: Revision number: Issued by: Document Information (RMI)- rmi finaldoc Issue Date: Status:

More information

Design Issues

Design Issues 11 COMPUTER PROGRAMMING INHERIATANCE CONTENTS OVERVIEW OF INHERITANCE INHERITANCE OF MEMBER VARIABLE RESERVED WORD SUPER METHOD INHERITANCE and OVERRIDING INHERITANCE and CONSTRUCTOR 2 Overview of Inheritance

More information

Secure Programming Lecture1 : Introduction

Secure Programming Lecture1 : Introduction Malware and Vulnerability Analysis Lecture4-1 Vulnerability Analysis #4-1 Agenda 웹취약점점검 웹사이트취약점점검 HTTP and Web Vulnerability HTTP Protocol 웹브라우저와웹서버사이에하이퍼텍스트 (Hyper Text) 문서송수신하는데사용하는프로토콜 Default Port

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program

More information

Cluster management software

Cluster management software 자바네트워크프로그래밍 (OCJP 국제공인자격취득중심 ) 충북대학교 최민 기본예제 예외클래스를정의하고사용하는예제 class NewException extends Exception { public class ExceptionTest { static void methoda() throws NewException { System.out.println("NewException

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 오류처리 손시운 ssw5176@kangwon.ac.kr 오류메시지를분석한다. 오류메시지에서많은내용을알수있다. 2 디버깅 디버거를사용하면프로그램에서쉽게오류를감지하고진단할수있다. 디버거는중단점을설정하여서프로그램의실행을제어할수있으며문장 단위로실행하거나변수의값을살펴볼수있다. 3 이클립스에서디버깅 4 이클립스에서디버깅 5 이클립스의디버깅명령어 6 예외처리

More information

게시판 스팸 실시간 차단 시스템

게시판 스팸 실시간 차단 시스템 오픈 API 2014. 11-1 - 목 차 1. 스팸지수측정요청프로토콜 3 1.1 스팸지수측정요청프로토콜개요 3 1.2 스팸지수측정요청방법 3 2. 게시판스팸차단도구오픈 API 활용 5 2.1 PHP 5 2.1.1 차단도구오픈 API 적용방법 5 2.1.2 차단도구오픈 API 스팸지수측정요청 5 2.1.3 차단도구오픈 API 스팸지수측정결과값 5 2.2 JSP

More information

05-06( )_¾ÆÀÌÆù_ÃÖÁ¾

05-06( )_¾ÆÀÌÆù_ÃÖÁ¾ 6 T o u c h i n g t h e i P h o n e S D K 3. 0 6.1 01: -(void) touchesbegan:(nsset * ) touches withevent:(uievent * )event { 02: NSSet * alltouches = [event alltouches]; 03: if ([alltouches count]>1)

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 3 if, if else, if else if, switch case for, while, do while break, continue : System.in, args, JOptionPane for (,, ) @ vs. logic data method variable Data Data Flow (Type), ( ) @ Member field

More information

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 8 장클래스와객체 I 이번장에서학습할내용 클래스와객체 객체의일생직접 메소드클래스를 필드작성해 UML 봅시다. QUIZ 1. 객체는 속성과 동작을가지고있다. 2. 자동차가객체라면클래스는 설계도이다. 먼저앞장에서학습한클래스와객체의개념을복습해봅시다. 클래스의구성 클래스 (class) 는객체의설계도라할수있다. 클래스는필드와메소드로이루어진다.

More information

안드로이드기본 11 차시어댑터뷰 1 학습목표 어댑터뷰가무엇인지알수있다. 리스트뷰와스피너를사용하여데이터를출력할수있다. 2 확인해볼까? 3 어댑터뷰 1) 학습하기 어댑터뷰 - 1 -

안드로이드기본 11 차시어댑터뷰 1 학습목표 어댑터뷰가무엇인지알수있다. 리스트뷰와스피너를사용하여데이터를출력할수있다. 2 확인해볼까? 3 어댑터뷰 1) 학습하기 어댑터뷰 - 1 - 11 차시어댑터뷰 1 학습목표 어댑터뷰가무엇인지알수있다. 리스트뷰와스피너를사용하여데이터를출력할수있다. 2 확인해볼까? 3 어댑터뷰 1) 학습하기 어댑터뷰 - 1 - ArrayAdapter ArrayAdapter adapter = new ArrayAdapter(this, android.r.layout.simple_list_item_1,

More information

JAVA PROGRAMMING 실습 09. 예외처리

JAVA PROGRAMMING 실습 09. 예외처리 2015 학년도 2 학기 예외? 프로그램실행중에발생하는예기치않은사건 예외가발생하는경우 정수를 0으로나누는경우 배열의크기보다큰인덱스로배열의원소를접근하는경우 파일의마지막부분에서데이터를읽으려고하는경우 예외처리 프로그램에문제를발생시키지않고프로그램을실행할수있게적절한조치를취하는것 자바는예외처리기를이용하여예외처리를할수있는기법제공 자바는예외를객체로취급!! 나뉨수를입력하시오

More information

Network Programming

Network Programming Part 5 확장된 Network Programming 기술 1. Remote Procedure Call 2. Remote Method Invocation 3. Object Request Broker 2. Java RMI

More information

Network seminar.key

Network seminar.key Intro to Network .. 2 4 ( ) ( ). ?!? ~! This is ~ ( ) /,,,???? TCP/IP Application Layer Transfer Layer Internet Layer Data Link Layer Physical Layer OSI 7 TCP/IP Application Layer Transfer Layer 3 4 Network

More information

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher( 실행할페이지.jsp); 다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher

More information

슬라이드 1

슬라이드 1 UNIT 16 예외처리 로봇 SW 교육원 3 기 최상훈 학습목표 2 예외처리구문 try-catch-finally 문을사용핛수있다. 프로그램오류 3 프로그램오류의종류 컴파일에러 (compile-time error) : 컴파일실행시발생 럮타임에러 (runtime error) : 프로그램실행시발생 에러 (error) 프로그램코드에의해서해결될수없는심각핚오류 ex)

More information

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate ALTIBASE HDB 6.1.1.5.6 Patch Notes 목차 BUG-39240 offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG-41443 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate 한뒤, hash partition

More information

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

More information

JUNIT 실습및발표

JUNIT 실습및발표 JUNIT 실습및발표 JUNIT 접속 www.junit.org DownLoad JUnit JavaDoc API Document 를참조 JUNIT 4.8.1 다운로드 설치파일 (jar 파일 ) 을다운로드 CLASSPATH 를설정 환경변수에서설정 실행할클래스에서 import JUnit 설치하기 테스트실행주석 @Test Test 를실행할 method 앞에붙임 expected

More information

목차 INDEX JSON? - JSON 개요 - JSONObject - JSONArray 서울시공공데이터 API 살펴보기 - 요청인자살펴보기 - Result Code - 출력값 HttpClient - HttpHelper 클래스작성 - JSONParser 클래스작성 공공

목차 INDEX JSON? - JSON 개요 - JSONObject - JSONArray 서울시공공데이터 API 살펴보기 - 요청인자살펴보기 - Result Code - 출력값 HttpClient - HttpHelper 클래스작성 - JSONParser 클래스작성 공공 메신저의새로운혁신 채팅로봇 챗봇 (Chatbot) 입문하기 소 이 메 속 : 시엠아이코리아 름 : 임채문 일 : soulgx@naver.com 1 목차 INDEX JSON? - JSON 개요 - JSONObject - JSONArray 서울시공공데이터 API 살펴보기 - 요청인자살펴보기 - Result Code - 출력값 HttpClient - HttpHelper

More information

gnu-lee-oop-kor-lec06-3-chap7

gnu-lee-oop-kor-lec06-3-chap7 어서와 Java 는처음이지! 제 7 장상속 Super 키워드 상속과생성자 상속과다형성 서브클래스의객체가생성될때, 서브클래스의생성자만호출될까? 아니면수퍼클래스의생성자도호출되는가? class Base{ public Base(String msg) { System.out.println("Base() 생성자 "); ; class Derived extends Base

More information

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx 2018 학년도 1 학기 JAVA 프로그래밍 II 514760-1 2018 년봄학기 5/10/2018 박경신 Lab#1 (ImageTest) Lab#1 은영상파일 (Image) 을읽어서정보를출력 Java Tutorials Lesson: Working with Images https://docs.oracle.com/javase/tutorial/2d/images/index.html

More information

<4D F736F F F696E74202D E20B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D62E >

<4D F736F F F696E74202D E20B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D62E > 웹프로그래밍및실습 ( g & Practice) 문양세강원대학교 IT 대학컴퓨터과학전공 소켓 (Socket) (1/2) Socket 이란? 서버와클라이언트가서로특정한규약을사용하여데이터를전송하기위한방식 서버와클라이언트는소켓연결을기다렸다가소켓이연결되면서로데이터를전송 현재네트워크상에서의모든통신의근간은 Socket 이라할수있음 Page 2 1 소켓 (Socket) (2/2)

More information

17장 클래스와 메소드

17장 클래스와 메소드 17 장클래스와메소드 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 1 / 18 학습내용 객체지향특징들객체출력 init 메소드 str 메소드연산자재정의타입기반의버전다형성 (polymorphism) 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 2 / 18 객체지향특징들 객체지향프로그래밍의특징 프로그램은객체와함수정의로구성되며대부분의계산은객체에대한연산으로표현됨객체의정의는

More information

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 객체지향프로그래밍 IT CookBook, 자바로배우는쉬운자료구조 q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 q 객체지향프로그래밍의이해 v 프로그래밍기법의발달 A 군의사업발전 1 단계 구조적프로그래밍방식 3 q 객체지향프로그래밍의이해 A 군의사업발전 2 단계 객체지향프로그래밍방식 4 q 객체지향프로그래밍의이해 v 객체란무엇인가

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 3 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

교육자료

교육자료 THE SYS4U DODUMENT Java Reflection & Introspection 2012.08.21 김진아사원 2012 SYS4U I&C All rights reserved. 목차 I. 개념 1. Reflection 이란? 2. Introspection 이란? 3. Reflection 과 Introspection 의차이점 II. 실제사용예 1. Instance의생성

More information

9 차시고급위젯다루기 1 학습목표 날짜 / 시간과관련된위젯을배운다. 웹뷰를사용하여간단한웹브라우저기능을구현한다. 매니패스트파일의설정법을배운다. 2 확인해볼까? 3 날짜 / 시간위젯 1) 활동하기 활동개요

9 차시고급위젯다루기 1 학습목표 날짜 / 시간과관련된위젯을배운다. 웹뷰를사용하여간단한웹브라우저기능을구현한다. 매니패스트파일의설정법을배운다. 2 확인해볼까? 3 날짜 / 시간위젯 1) 활동하기 활동개요 9 차시고급위젯다루기 1 학습목표 날짜 / 시간과관련된위젯을배운다. 웹뷰를사용하여간단한웹브라우저기능을구현한다. 매니패스트파일의설정법을배운다. 2 확인해볼까? 3 날짜 / 시간위젯 1) 활동하기 활동개요 [ 그림 9-1] 시간예약앱 활동과정 - 2 - [ 그림 9-2] 안드로이드 SDK Manager [ 예제 9-1]main.xml 1

More information

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일 Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 Introduce Me!!! Job Jeju National University Student Ubuntu Korean Jeju Community Owner E-Mail: ned3y2k@hanmail.net Blog: http://ned3y2k.wo.tc Facebook: http://www.facebook.com/gyeongdae

More information

mytalk

mytalk 한국정보보호학회소프트웨어보안연구회 총괄책임자 취약점분석팀 안준선 ( 항공대 ) 도경구 ( 한양대 ) 도구개발팀도경구 ( 한양대 ) 시큐어코딩팀 오세만 ( 동국대 ) 전체적인 그림 IL Rules Flowgraph Generator Flowgraph Analyzer 흐름그래프 생성기 흐름그래프 분석기 O parser 중간언어 O 파서 RDL

More information

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

Microsoft PowerPoint 자바-기본문법(Ch2).pptx 자바기본문법 1. 기본사항 2. 자료형 3. 변수와상수 4. 연산자 1 주석 (Comments) 이해를돕기위한설명문 종류 // /* */ /** */ 활용예 javadoc HelloApplication.java 2 주석 (Comments) /* File name: HelloApplication.java Created by: Jung Created on: March

More information

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r Jakarta is a Project of the Apache

More information

캐빈의iOS프로그램팁01

캐빈의iOS프로그램팁01 캐빈의 ios 프로그램팁 글쓴이 : 안경훈 (kevin, linuxgood@gmail.com) ios 로프로그램을만들때사용할수있는여러가지팁들을모아보았다. 이글을읽는독자는처음으로 Objective-C 를접하며, 간단한문법정도만을알고있다고생각하여되도록그림과함께설명을하였다. 또한, 복잡한구현방법보다는매우간단하지만, 유용한프로그램팁들을모아보았다. 굳이말하자면 ios

More information

hd1300_k_v1r2_Final_.PDF

hd1300_k_v1r2_Final_.PDF Starter's Kit for HelloDevice 1300 Version 11 1 2 1 2 3 31 32 33 34 35 36 4 41 42 43 5 51 52 6 61 62 Appendix A (cross-over) IP 3 Starter's Kit for HelloDevice 1300 1 HelloDevice 1300 Starter's Kit HelloDevice

More information

PowerPoint Presentation

PowerPoint Presentation public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +

More information

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to  TCP/IP Sockets: C Version 인터넷프로토콜 5 장 데이터송수신 (3) 1 파일전송메시지구성예제 ( 고정크기메시지 ) 전송방식 : 고정크기 ( 바이너리전송 ) 필요한전송정보 파일이름 ( 최대 255 자 => 255byte 의메모리공간필요 ) 파일크기 (4byte 의경우최대 4GB 크기의파일처리가능 ) 파일내용 ( 가변길이, 0~4GB 크기 ) 메시지구성 FileName (255bytes)

More information

02 C h a p t e r Java

02 C h a p t e r Java 02 C h a p t e r Java Bioinformatics in J a va,, 2 1,,,, C++, Python, (Java),,, (http://wwwbiojavaorg),, 13, 3D GUI,,, (Java programming language) (Sun Microsystems) 1995 1990 (green project) TV 22 CHAPTER

More information

ibmdw_rest_v1.0.ppt

ibmdw_rest_v1.0.ppt REST in Enterprise 박찬욱 1-1- MISSING PIECE OF ENTERPRISE Table of Contents 1. 2. REST 3. REST 4. REST 5. 2-2 - Wise chanwook.tistory.com / cwpark@itwise.co.kr / chanwook.god@gmail.com ARM WOA S&C AP ENI

More information

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조 - Part2- 제 2 장다차원배열이란무엇인가 학습목차 2.1 다차원배열이란 2. 2 2 차원배열의주소와값의참조 2.1 다차원배열이란 2.1 다차원배열이란 (1/14) 다차원배열 : 2 차원이상의배열을의미 1 차원배열과다차원배열의비교 1 차원배열 int array [12] 행 2 차원배열 int array [4][3] 행 열 3 차원배열 int array [2][2][3]

More information

Modern Javascript

Modern Javascript ES6 - Arrow Function Class Template String Destructuring Default, Rest, Spread let, const for..of Promises Module System Map, Set * Generator * Symbol * * https://babeljs.io/ Babel is a JavaScript compiler.

More information

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D313939392D382E687770>

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D313939392D382E687770> i ii iii iv v vi 1 2 3 4 가상대학 시스템의 국내외 현황 조사 가상대학 플랫폼 개발 이상적인 가상대학시스템의 미래상 제안 5 웹-기반 가상대학 시스템 전통적인 교수 방법 시간/공간 제약을 극복한 학습동기 부여 교수의 일방적인 내용전달 교수와 학생간의 상호작용 동료 학생들 간의 상호작용 가상대학 운영 공지사항,강의록 자료실, 메모 질의응답,

More information

0. 들어가기 전

0. 들어가기 전 컴퓨터네트워크 14 장. 웹 (WWW) (3) - HTTP 1 이번시간의학습목표 HTTP 의요청 / 응답메시지의구조와동작원리이해 2 요청과응답 (1) HTTP (HyperText Transfer Protocol) 웹브라우저는 URL 을이용원하는자원표현 HTTP 메소드 (method) 를이용하여데이터를요청 (GET) 하거나, 회신 (POST) 요청과응답 요청

More information

12-file.key

12-file.key 11 (String).. java.lang.stringbuffer. s String s = "abcd"; s = s + "e"; a b c d e a b c d e ,., "910359,, " "910359" " " " " (token) (token),, (delimiter). java.util.stringtokenizer String s = "910359,,

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 5 장생성자와접근제어 1. 객체지향기법을이해한다. 2. 클래스를작성할수있다. 3. 클래스에서객체를생성할수있다. 4. 생성자를이용하여객체를초기화할수 있다. 5. 접근자와설정자를사용할수있다. 이번장에서만들어볼프로그램 생성자 생성자 (constructor) 는초기화를담당하는함수 생성자가필요한이유 #include using namespace

More information

PowerPoint Presentation

PowerPoint Presentation 자바프로그래밍 1 클래스와메소드심층연구 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 접근제어 class A { private int a; int b; public int c; // 전용 // 디폴트 // 공용 public class Test { public static void main(string args[]) { A obj = new

More information

untitled

untitled - -, (insert) (delete) - - (insert) (delete) (top ) - - (insert) (rear) (delete) (front) A A B top A B C top push(a) push(b) push(c) A B top pop() top A B D push(d) top #define MAX_STACK_SIZE 100 int

More information

Interstage5 SOAP서비스 설정 가이드

Interstage5 SOAP서비스 설정 가이드 Interstage 5 Application Server ( Solaris ) SOAP Service Internet Sample Test SOAP Server Application SOAP Client Application CORBA/SOAP Server Gateway CORBA/SOAP Gateway Client INTERSTAGE SOAP Service

More information

3ÆÄÆ®-11

3ÆÄÆ®-11 Chapter 11 Chapter 12 Chapter 13 Chapter 14 Chapter 15 Chapter 16 Chapter 17 C # N e t w o r k P r o g r a m m i n g Part 3 _ chapter 11 ICMP >>> 430 Chapter 11 _ 1 431 Part 3 _ 432 Chapter 11 _ N o t

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 오류처리 손시운 ssw5176@kangwon.ac.kr 오류메시지를분석한다. 오류메시지에서많은내용을알수있다. 2 디버깅 디버거를사용하면프로그램에서쉽게오류를감지하고진단할수있다. 디버거는중단점을설정하여서프로그램의실행을제어할수있으며문장 단위로실행하거나변수의값을살펴볼수있다. 3 이클립스에서디버깅 4 이클립스에서디버깅 5 이클립스의디버깅명령어 6 예외처리

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3

More information

2ndWeek_Introduction to iPhone OS.key

2ndWeek_Introduction to iPhone OS.key Introduction to iphone OS _2 Dept. of Multimedia Science, Sookmyung Women s University. Prof. JongWoo Lee Index iphone SDK - - - Xcode Interface Builder Objective-C Dept. of Multimedia Science, Sookmyung

More information

[ 그림 8-1] XML 을이용한옵션메뉴설정방법 <menu> <item 항목ID" android:title=" 항목제목 "/> </menu> public boolean oncreateoptionsmenu(menu menu) { getme

[ 그림 8-1] XML 을이용한옵션메뉴설정방법 <menu> <item 항목ID android:title= 항목제목 /> </menu> public boolean oncreateoptionsmenu(menu menu) { getme 8 차시메뉴와대화상자 1 학습목표 안드로이드에서메뉴를작성하고사용하는방법을배운다. 안드로이드에서대화상자를만들고사용하는방법을배운다. 2 확인해볼까? 3 메뉴 1) 학습하기 [ 그림 8-1] XML 을이용한옵션메뉴설정방법 public boolean

More information

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4 ALTIBASE HDB 6.5.1.5.10 Patch Notes 목차 BUG-46183 DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG-46249 [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4 BUG-46266 [sm]

More information

PowerPoint Presentation

PowerPoint Presentation public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +

More information

매력적인 맥/iOS 개발 환경 그림 A-1 변경 사항 확인창 Validate Setting... 항목을 고르면 된다. 프로젝트 편집기를 선택했을 때 화면 아 래쪽에 있는 동일한 Validate Settings... 버튼을 클릭해도 된다. 이슈 내비게이터 목록에서 변경할

매력적인 맥/iOS 개발 환경 그림 A-1 변경 사항 확인창 Validate Setting... 항목을 고르면 된다. 프로젝트 편집기를 선택했을 때 화면 아 래쪽에 있는 동일한 Validate Settings... 버튼을 클릭해도 된다. 이슈 내비게이터 목록에서 변경할 Xcode4 부록 A Xcode 4.1에서 바뀐 내용 이번 장에서는 맥 OSX 10.7 라이언과 함께 발표된 Xcode 4.1에서 새롭게 추가된 기 능과 변경된 기능을 정리하려고 한다. 우선 가장 먼저 알아둬야 할 사항은 ios 개발을 위한 기본 컴파일러가 LLVM- GCC 4.2로 바뀌었다는 점이다. LLVM-GCC 4.2 컴파일러는 Xcode 4.0의 기본

More information

오늘날의 기업들은 24시간 365일 멈추지 않고 돌아간다. 그리고 이러한 기업들을 위해서 업무와 관련 된 중요한 문서들은 언제 어디서라도 항상 접근하여 활용이 가능해야 한다. 끊임없이 변화하는 기업들 의 경쟁 속에서 기업내의 중요 문서의 효율적인 관리와 활용 방안은 이

오늘날의 기업들은 24시간 365일 멈추지 않고 돌아간다. 그리고 이러한 기업들을 위해서 업무와 관련 된 중요한 문서들은 언제 어디서라도 항상 접근하여 활용이 가능해야 한다. 끊임없이 변화하는 기업들 의 경쟁 속에서 기업내의 중요 문서의 효율적인 관리와 활용 방안은 이 C Cover Story 05 Simple. Secure. Everywhere. 문서관리 혁신의 출발점, Oracle Documents Cloud Service 최근 문서 관리 시스템의 경우 커다란 비용 투자 없이 효율적으로 문서를 관리하기 위한 기업들의 요구는 지속적으로 증가하고 있다. 이를 위해, 기업 컨텐츠 관리 솔루션 부분을 선도하는 오라클은 문서관리

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 인터페이스 배효철 th1g@nate.com 1 목차 인터페이스의역할 인터페이스선언 인터페이스구현 인터페이스사용 타입변환과다형성 인터페이스상속 디폴트메소드와인터페이스확장 2 인터페이스의역할 인터페이스란? 개발코드와객체가서로통신하는접점 개발코드는인터페이스의메소드만알고있으면 OK 인터페이스의역할 개발코드가객체에종속되지않게 -> 객체교체할수있도록하는역할 개발코드변경없이리턴값또는실행내용이다양해질수있음

More information

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to  TCP/IP Sockets: C Version 얇지만얇지않은 TCP/IP 소켓프로그래밍 C 2 판 4 장 UDP 소켓 제 4 장 UDP 소켓 4.1 UDP 클라이언트 4.2 UDP 서버 4.3 UDP 소켓을이용한데이터송싞및수싞 4.4 UDP 소켓의연결 UDP 소켓의특징 UDP 소켓의특성 싞뢰할수없는데이터젂송방식 목적지에정확하게젂송된다는보장이없음. 별도의처리필요 비연결지향적, 순서바뀌는것이가능 흐름제어 (flow

More information

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to  TCP/IP Sockets: C Version 인터넷프로토콜 03 장 도메인네임시스템과주소 패밀리 (IPv4-IPv6 서비스 ) 1 목차 제 3 장도메인네임시스템과주소패밀리 3.1 도메인네임주소를숫자주소로매핑하기 3.2 IP 버전에무관한주소-범용코드의작성 3.3 숫자주소에서도메인네임주소획득하기 2 getaddrinfo() 를활용한주소 범용 (Generic) 코드 주소범용 (Generic) 코드란? 주소버전

More information

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Spring Boot/JDBC JdbcTemplate/CRUD 예제 Spring Boot/JDBC JdbcTemplate/CRUD 예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) Spring Boot, Gradle 과오픈소스인 MariaDB 를이용해서 EMP 테이블을만들고 JdbcTemplate, SimpleJdbcTemplate 을이용하여 CRUD 기능을구현해보자. 마리아 DB 설치는다음 URL 에서확인하자.

More information

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드] Google Map View 구현 학습목표 교육목표 Google Map View 구현 Google Map 지원 Emulator 생성 Google Map API Key 위도 / 경도구하기 위도 / 경도에따른 Google Map View 구현 Zoom Controller 구현 Google Map View (1) () Google g Map View 기능 Google

More information

제8장 자바 GUI 프로그래밍 II

제8장 자바 GUI 프로그래밍 II 제8장 MVC Model 8.1 MVC 모델 (1/7) MVC (Model, View, Controller) 모델 스윙은 MVC 모델에기초를두고있다. MVC란 Xerox의연구소에서 Smalltalk 언어를바탕으로사용자인터페이스를개발하기위한방법 MVC는 3개의구성요소로구성 Model : 응용프로그램의자료를표현하기위한모델 View : 자료를시각적으로 (GUI 방식으로

More information

o o o 8.2.1. Host Error 8.2.2. Message Error 8.2.3. Recipient Error 8.2.4. Error 8.2.5. Host 8.5.1. Rule 8.5.2. Error 8.5.3. Retry Rule 8.11.1. Intermittently

More information

Microsoft PowerPoint - web-part03-ch20-XMLHttpRequest기본.pptx

Microsoft PowerPoint - web-part03-ch20-XMLHttpRequest기본.pptx 과목명 : 웹프로그래밍응용교재 : 모던웹을위한 JavaScript Jquery 입문, 한빛미디어 Part3. Ajax Ch20. XMLHttpRequest 2014년 1학기 Professor Seung-Hoon Choi 20 XMLHttpRequest XMLHttpRequest 객체 자바스크립트로 Ajax를이용할때사용하는객체 간단하게 xhr 이라고도부름 서버

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

More information

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V Mobile Service > IAP > Android SDK IAP SDK TOAST SDK. IAP SDK. Android Studio IDE 2.3.3 Android SDK Version 2.3.3 (API Level 10). Name Reference Version License okhttp http://square.github.io/okhttp/ 1.5.4

More information

신림프로그래머_클린코드.key

신림프로그래머_클린코드.key CLEAN CODE 6 11st Front Dev. Team 6 1. 2. 3. checked exception 4. 5. 6. 11 : 2 4 : java (50%), javascript (35%), SQL/PL-SQL (15%) : Spring, ibatis, Oracle, jquery ? , (, ) ( ) 클린코드를 무시한다면 . 6 1. ,,,!

More information

Microsoft PowerPoint - web-part03-ch19-node.js기본.pptx

Microsoft PowerPoint - web-part03-ch19-node.js기본.pptx 과목명: 웹프로그래밍응용 교재: 모던웹을 위한 JavaScript Jquery 입문, 한빛미디어 Part3. Ajax Ch19. node.js 기본 2014년 1학기 Professor Seung-Hoon Choi 19 node.js 기본 이 책에서는 서버 구현 시 node.js 를 사용함 자바스크립트로 서버를 개발 다른서버구현기술 ASP.NET, ASP.NET

More information

슬라이드 1

슬라이드 1 -Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역

More information

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public Chapter 9 Lab 문제정답 1. public class Circle private double radius; static final double PI=3.141592; // PI 이름으로 3.141592 로초기화된정적상수 (1) public Circle(double r) radius = r; (2) public double getradius() return

More information

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,

More information

untitled

untitled Push... 2 Push... 4 Push... 5 Push... 13 Push... 15 1 FORCS Co., LTD A Leader of Enterprise e-business Solution Push (Daemon ), Push Push Observer. Push., Observer. Session. Thread Thread. Observer ID.

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 1 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - Java7.pptx HPC & OT Lab. 1 HPC & OT Lab. 2 실습 7 주차 Jin-Ho, Jang M.S. Hanyang Univ. HPC&OT Lab. jinhoyo@nate.com HPC & OT Lab. 3 Component Structure 객체 (object) 생성개념을이해한다. 외부클래스에대한접근방법을이해한다. 접근제어자 (public & private)

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 예외처리 배효철 th1g@nate.com 1 목차 예외와예외클래스 실행예외 예외처리코드 예외종류에따른처리코드 자동리소스닫기 예외처리떠넘기기 사용자정의예외와예외발생 예외와예외클래스 구문오류 예외와예외클래스 구문오류가없는데실행시오류가발생하는경우 예외와예외클래스 import java.util.scanner; public class ExceptionExample1

More information

서현수

서현수 Introduction to TIZEN SDK UI Builder S-Core 서현수 2015.10.28 CONTENTS TIZEN APP 이란? TIZEN SDK UI Builder 소개 TIZEN APP 개발방법 UI Builder 기능 UI Builder 사용방법 실전, TIZEN APP 개발시작하기 마침 TIZEN APP? TIZEN APP 이란? Mobile,

More information

Remote UI Guide

Remote UI Guide Remote UI KOR Remote UI Remote UI PDF Adobe Reader/Adobe Acrobat Reader. Adobe Reader/Adobe Acrobat Reader Adobe Systems Incorporated.. Canon. Remote UI GIF Adobe Systems Incorporated Photoshop. ..........................................................

More information

adfasdfasfdasfasfadf

adfasdfasfdasfasfadf C 4.5 Source code Pt.3 ISL / 강한솔 2019-04-10 Index Tree structure Build.h Tree.h St-thresh.h 2 Tree structure *Concpets : Node, Branch, Leaf, Subtree, Attribute, Attribute Value, Class Play, Don't Play.

More information