SlideShare a Scribd company logo
1 of 78
Download to read offline
1пятница, 4 октября 13 г.
iOS URL Loading
System: Go Beyond
Alexey Dodonov
2пятница, 4 октября 13 г.
3
3пятница, 4 октября 13 г.
4пятница, 4 октября 13 г.
Network Activity Log
5
Log all network requests
Simple way to see all events for every
request
HTTP headers and other related
information
Received/sent data for any request in
different formats
Including HTTPS requests
5пятница, 4 октября 13 г.
2013-09-23 12:43:43.136 Start loading
2013-09-23 12:43:43.138 Will send request
2013-09-23 12:43:43.152 Received response
Response: 200
Header fields:{
"Cache-Control" = "no-cache";
Connection = "keep-alive";
"Content-Encoding" = gzip;
"Content-Length" = 351;
"Content-Type" = "text/xml; encoding=utf-8";
Date = "Mon, 23 Sep 2013 08:43:34 GMT";
Server = "nginx/1.2.1";
"X-YaMisc" = "region_id=9999;";
"X-YaReqFinish" = "1379925814.110185";
}
2013-09-23 12:43:43.153 Did receive data (685 bytes).
2013-09-23 12:43:43.153 Did finish loading.
2013-09-23 12:43:43.154 Stop loading
2013-09-23 12:43:44.169 Received response
Response: 200
Header fields:{
Connection = close;
"Content-Length" = 0;
"Content-Type" = "application/octet-stream";
Date = "Mon, 23 Sep 2013 08:43:35 GMT";
Server = nginx;
}
2013-09-23 12:43:44.169 Did finish loading.
2013-09-23 12:43:44.170 Stop loading
2013-09-23 12:43:58.314 Initialized
URL: http://www.yandex.com/?clid=2035378
HTTP Method: GET
HTTP Headers: {
Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
"User-Agent" = "Mozilla/5.0 (iPad; CPU OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11A465";
Network Activity Log
6
NSLog(...)
6пятница, 4 октября 13 г.
"Content-Encoding" = gzip;
"Content-Type" = "text/css";
Date = "Mon, 23 Sep 2013 08:43:49 GMT";
Expires = "Thu, 31 Dec 2037 23:55:55 GMT";
"Last-Modified" = "Thu, 19 Sep 2013 18:25:56 GMT";
Server = "nginx/1.4.1";
"Transfer-Encoding" = Identity;
}
2013-09-23 12:43:58.476 Did receive data (23122 bytes).
2013-09-23 12:43:58.477 Did finish loading.
2013-09-23 12:43:58.477 Initialized
URL: http://yandex.st/www/1.686/com/pages-desktop/index/_index.js
HTTP Method: GET
HTTP Headers: {
Accept = "*/*";
Referer = "http://www.yandex.com/";
"User-Agent" = "Mozilla/5.0 (iPad; CPU OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11A465";
}
HTTP Body:
2013-09-23 12:43:58.477 Start loading
2013-09-23 12:43:58.478 Will send request
2013-09-23 12:43:58.478 Start loading
2013-09-23 12:43:58.478 Will send request
2013-09-23 12:43:58.480 Received response
Response: 200
Header fields:{
"Access-Control-Allow-Origin" = "*";
"Cache-Control" = "max-age=315360000";
Connection = "keep-alive";
"Content-Encoding" = gzip;
"Content-Type" = "application/x-javascript";
Date = "Mon, 23 Sep 2013 08:43:49 GMT";
Expires = "Thu, 31 Dec 2037 23:55:55 GMT";
"Last-Modified" = "Thu, 10 May 2012 20:10:56 GMT";
Server = "nginx/1.4.1";
"Transfer-Encoding" = Identity;
}
2013-09-23 12:43:58.480 Did receive data (1553 bytes).
2013-09-23 12:43:58.481 Did finish loading.
2013-09-23 12:43:58.482 Received response
Response: 200
Header fields:{
"Accept-Ranges" = bytes;
"Access-Control-Allow-Origin" = "*";
"Cache-Cont
Network Activity Log
6
NSLog(...)
6пятница, 4 октября 13 г.
Network Activity Log
3rd party instruments
Wireshark
Charles
Fiddler
mitmproxy
– They are all good, but we want a look from inside the application.
7
7пятница, 4 октября 13 г.
Test Networking
8
Test application state after making
network requests:
– with various responses.
Test application state if a network request
fails due to numerous reasons:
– different HTTP status codes,
– timeout,
– etc.
8пятница, 4 октября 13 г.
Test Networking
9
Mock NSURLConnection
github.com/wfleming/MockNSURLConnection
bit.ly/yac_nsurlprotocol (all links for this talk)
– NSURLConnection objects are often hidden from the public
interface.
– It does not work if you use another framework like AFNetworking.
9пятница, 4 октября 13 г.
Hybrid Applications
10
UIWebView as the main interface.
Ship static resources within the application
bundle.
Smart caching.
10пятница, 4 октября 13 г.
Extend iOS Networking
11
UIWebView support for new media formats
– WebP
– WebM
11пятница, 4 октября 13 г.
Extend iOS Networking
11
UIWebView support for new media formats
– WebP
– WebM
Application-wide support for new
protocols
– SPDY
11пятница, 4 октября 13 г.
NSURLProtocol
12пятница, 4 октября 13 г.
NSURLProtocol
13
NSURLConnection
Frameworks
Application
UIWebview
NSURLProtocol
Network
13пятница, 4 октября 13 г.
14
NSURLConnection
file://
NSURLProtocol
ftp://
https://
http://
14пятница, 4 октября 13 г.
@interface MyProtocol : NSURLProtocol
@end
[NSURLProtocol registerClass:[MyProtocol class]];
NSURLProtocol
15
Registration of the new protocol:
15пятница, 4 октября 13 г.
16
NSURLConnection
NSURLProtocol
xmmp://
ftp://
http://
iOS URLProtocols
http://
NSURLRequest
16пятница, 4 октября 13 г.
16
NSURLConnection
NSURLProtocol
xmmp://
ftp://
http://
iOS URLProtocols
http://
NSURLRequest
16пятница, 4 октября 13 г.
16
NSURLConnection
NSURLProtocol
xmmp://
ftp://
http://
iOS URLProtocols
http://
NSURLRequest
16пятница, 4 октября 13 г.
+ (BOOL)canInitWithRequest:(NSURLRequest *)request
{
return [[[request URL] scheme] isEqual:@"xmpp"];
}
NSURLProtocol
17
Can we handle this request?
17пятница, 4 октября 13 г.
18
NSURLConnection
NSURLProtocol
xmmp://
ftp://
http://
iOS URLProtocols
http://
NSURLRequest
18пятница, 4 октября 13 г.
18
NSURLConnection
NSURLProtocol
xmmp://
ftp://
http://
iOS URLProtocols
http://
NSURLRequest
18пятница, 4 октября 13 г.
18
NSURLConnection
NSURLProtocol
xmmp://
ftp://
http://
iOS URLProtocols
http://
NSURLRequest
18пятница, 4 октября 13 г.
18
NSURLConnection
NSURLProtocol
xmmp://
ftp://
http://
iOS URLProtocols
http://
NSURLRequest
18пятница, 4 октября 13 г.
NSURLProtocol
19
NSURLProtocolNSURLConnection
Client
NSURLConnection
Delegate
– URLProtocol:didReceiveResponse:cacheStoragePolicy:  required method
– URLProtocol:didLoadData:  required method
– URLProtocolDidFinishLoading:  required method
– URLProtocol:didFailWithError:  required method
– ...
19пятница, 4 октября 13 г.
NSURLProtocol
19
NSURLProtocolNSURLConnection
Client
NSURLConnection
Delegate
– URLProtocol:didReceiveResponse:cacheStoragePolicy:  required method
– URLProtocol:didLoadData:  required method
– URLProtocolDidFinishLoading:  required method
– URLProtocol:didFailWithError:  required method
– ...
19пятница, 4 октября 13 г.
NSURLProtocol
19
NSURLProtocolNSURLConnection
Client
NSURLConnection
Delegate
– URLProtocol:didReceiveResponse:cacheStoragePolicy:  required method
– URLProtocol:didLoadData:  required method
– URLProtocolDidFinishLoading:  required method
– URLProtocol:didFailWithError:  required method
– ...
19пятница, 4 октября 13 г.
20пятница, 4 октября 13 г.
Network Activity Log
21
Log all network requests
Simple way to see all events for every
request
HTTP headers and other related
information
Received/sent data for any request in
different formats
Including HTTPS requests
21пятница, 4 октября 13 г.
Network Activity Log
22
NSURLConnection Logger NSURLConnection
iOS URLProtocols
22пятница, 4 октября 13 г.
Network Activity Log
22
NSURLConnection Logger NSURLConnection
iOS URLProtocols
22пятница, 4 октября 13 г.
Network Activity Log
22
NSURLConnection Logger NSURLConnection
iOS URLProtocols
22пятница, 4 октября 13 г.
Network Activity Log
22
NSURLConnection Logger NSURLConnection
iOS URLProtocols
22пятница, 4 октября 13 г.
NSMutableURLRequest *mutableRequest = [request mutableCopy];
[NSURLProtocol setProperty:@"marker"
forKey:@"markerKey"
inRequest:mutableRequest];
Network Activity Log
23
Outgoing request
23пятница, 4 октября 13 г.
+ (BOOL)canInitWithRequest:(NSURLRequest *)request
{
id marker = [NSURLProtocol propertyForKey:@"markerKey"
inRequest:request];
return (marker == nil);
}
Network Activity Log
24
Incoming request
24пятница, 4 октября 13 г.
Network Activity Log
25
iOS URLProtocols
LoggerNSURLConnection NSURLConnection
NSURLProtocol
25пятница, 4 октября 13 г.
Network Activity Log
25
iOS URLProtocols
LoggerNSURLConnection NSURLConnection
NSURLProtocol
25пятница, 4 октября 13 г.
Network Activity Log
26
Objective-C
HTTP Server
github.com/robbiehanson/CocoaHTTPServer
bit.ly/yac_nsurlprotocol
github.com/mattstevens/RoutingHTTPServer
github.com/stevestreza/Barista
26пятница, 4 октября 13 г.
Network Activity Log
27
localhost:8080
27пятница, 4 октября 13 г.
Network Activity Log
28
URLProtocol Logger
Sample Code
github.com/dodonov/YACURLProtocolLogger
bit.ly/yac_nsurlprotocol
28пятница, 4 октября 13 г.
Test Networking
29
Test application state after making
network requests:
– with various responses.
Test application state if a network request
fails due to numerous reasons:
– different HTTP status codes,
– timeout,
– etc.
29пятница, 4 октября 13 г.
Test Networking
30
Special Test ProtocolNSURLConnection
iOS URLProtocols
NSURLConnection
Delegate
30пятница, 4 октября 13 г.
Test Networking
30
Special Test ProtocolNSURLConnection
iOS URLProtocols
NSURLConnection
Delegate
30пятница, 4 октября 13 г.
Test Networking
30
Special Test ProtocolNSURLConnection
iOS URLProtocols
NSURLConnection
Delegate
30пятница, 4 октября 13 г.
Test Networking
31
Sample test
- (void)testImageLoader
{
[NSURLProtocol registerClass:[ILCannedURLProtocol class]];
[ILCannedURLProtocol setCannedStatusCode:500];
[ILCannedURLProtocol setSupportedBaseURL:[NSURL URLWithString:@"yandex.ru"]];
ImageLoader *loader = [[ImageLoader alloc] init];
[loader load];
NSAssert([loader hasBadResponse], @"Loader should have bad response");
[NSURLProtocol unregisterClass:[ILCannedURLProtocol class]];
}
31пятница, 4 октября 13 г.
Test Networking
31
Sample test
- (void)testImageLoader
{
[NSURLProtocol registerClass:[ILCannedURLProtocol class]];
[ILCannedURLProtocol setCannedStatusCode:500];
[ILCannedURLProtocol setSupportedBaseURL:[NSURL URLWithString:@"yandex.ru"]];
ImageLoader *loader = [[ImageLoader alloc] init];
[loader load];
NSAssert([loader hasBadResponse], @"Loader should have bad response");
[NSURLProtocol unregisterClass:[ILCannedURLProtocol class]];
}
31пятница, 4 октября 13 г.
Test Networking
31
Sample test
- (void)testImageLoader
{
[NSURLProtocol registerClass:[ILCannedURLProtocol class]];
[ILCannedURLProtocol setCannedStatusCode:500];
[ILCannedURLProtocol setSupportedBaseURL:[NSURL URLWithString:@"yandex.ru"]];
ImageLoader *loader = [[ImageLoader alloc] init];
[loader load];
NSAssert([loader hasBadResponse], @"Loader should have bad response");
[NSURLProtocol unregisterClass:[ILCannedURLProtocol class]];
}
31пятница, 4 октября 13 г.
Test Networking
31
Sample test
- (void)testImageLoader
{
[NSURLProtocol registerClass:[ILCannedURLProtocol class]];
[ILCannedURLProtocol setCannedStatusCode:500];
[ILCannedURLProtocol setSupportedBaseURL:[NSURL URLWithString:@"yandex.ru"]];
ImageLoader *loader = [[ImageLoader alloc] init];
[loader load];
NSAssert([loader hasBadResponse], @"Loader should have bad response");
[NSURLProtocol unregisterClass:[ILCannedURLProtocol class]];
}
31пятница, 4 октября 13 г.
Test Networking
31
Sample test
- (void)testImageLoader
{
[NSURLProtocol registerClass:[ILCannedURLProtocol class]];
[ILCannedURLProtocol setCannedStatusCode:500];
[ILCannedURLProtocol setSupportedBaseURL:[NSURL URLWithString:@"yandex.ru"]];
ImageLoader *loader = [[ImageLoader alloc] init];
[loader load];
NSAssert([loader hasBadResponse], @"Loader should have bad response");
[NSURLProtocol unregisterClass:[ILCannedURLProtocol class]];
}
31пятница, 4 октября 13 г.
Test Networking
31
Sample test
- (void)testImageLoader
{
[NSURLProtocol registerClass:[ILCannedURLProtocol class]];
[ILCannedURLProtocol setCannedStatusCode:500];
[ILCannedURLProtocol setSupportedBaseURL:[NSURL URLWithString:@"yandex.ru"]];
ImageLoader *loader = [[ImageLoader alloc] init];
[loader load];
NSAssert([loader hasBadResponse], @"Loader should have bad response");
[NSURLProtocol unregisterClass:[ILCannedURLProtocol class]];
}
31пятница, 4 октября 13 г.
Test Networking
31
Sample test
- (void)testImageLoader
{
[NSURLProtocol registerClass:[ILCannedURLProtocol class]];
[ILCannedURLProtocol setCannedStatusCode:500];
[ILCannedURLProtocol setSupportedBaseURL:[NSURL URLWithString:@"yandex.ru"]];
ImageLoader *loader = [[ImageLoader alloc] init];
[loader load];
NSAssert([loader hasBadResponse], @"Loader should have bad response");
[NSURLProtocol unregisterClass:[ILCannedURLProtocol class]];
}
31пятница, 4 октября 13 г.
Test Networking
31
Sample test
- (void)testImageLoader
{
[NSURLProtocol registerClass:[ILCannedURLProtocol class]];
[ILCannedURLProtocol setCannedStatusCode:500];
[ILCannedURLProtocol setSupportedBaseURL:[NSURL URLWithString:@"yandex.ru"]];
ImageLoader *loader = [[ImageLoader alloc] init];
[loader load];
NSAssert([loader hasBadResponse], @"Loader should have bad response");
[NSURLProtocol unregisterClass:[ILCannedURLProtocol class]];
}
31пятница, 4 октября 13 г.
Test Networking
32
Testing via NSURLProtocol
github.com/InfiniteLoopDK/ILTesting
bit.ly/yac_nsurlprotocol
github.com/AliSoftware/OHHTTPStubs
32пятница, 4 октября 13 г.
Hybrid Applications
33
UIWebView as the main interface.
Ship static resources within the application
bundle.
Smart caching.
33пятница, 4 октября 13 г.
Hybrid Applications
34
local-img://
34пятница, 4 октября 13 г.
<img src="local-img://top-left-border.png">
Hybrid Applications
35
Sample html code:
35пятница, 4 октября 13 г.
+ (BOOL)canInitWithRequest:(NSURLRequest *)request
{
return [[[request URL] scheme] isEqual:@"local-img"];
}
Hybrid Applications
36
URLProtocol
36пятница, 4 октября 13 г.
Hybrid Applications
37
- (void)startLoading
{
NSString *imagePath = [[NSBundle mainBundle] pathForResource:self.imageName
ofType:self.extension];
NSData *data = [NSData dataWithContentsOfFile:imagePath];
NSURLResponse *response =[[NSURLResponse alloc] initWithURL:self.request.URL
MIMEType:nil
expectedContentLength:[data length]
textEncodingName:nil];
[[self client] URLProtocol:self didReceiveResponse:response
cacheStoragePolicy:NSURLCacheStorageNotAllowed];
[[self client] URLProtocol:self didLoadData:data];
[[self client] URLProtocolDidFinishLoading:self];
}
37пятница, 4 октября 13 г.
Hybrid Applications
37
- (void)startLoading
{
NSString *imagePath = [[NSBundle mainBundle] pathForResource:self.imageName
ofType:self.extension];
NSData *data = [NSData dataWithContentsOfFile:imagePath];
NSURLResponse *response =[[NSURLResponse alloc] initWithURL:self.request.URL
MIMEType:nil
expectedContentLength:[data length]
textEncodingName:nil];
[[self client] URLProtocol:self didReceiveResponse:response
cacheStoragePolicy:NSURLCacheStorageNotAllowed];
[[self client] URLProtocol:self didLoadData:data];
[[self client] URLProtocolDidFinishLoading:self];
}
37пятница, 4 октября 13 г.
Hybrid Applications
37
- (void)startLoading
{
NSString *imagePath = [[NSBundle mainBundle] pathForResource:self.imageName
ofType:self.extension];
NSData *data = [NSData dataWithContentsOfFile:imagePath];
NSURLResponse *response =[[NSURLResponse alloc] initWithURL:self.request.URL
MIMEType:nil
expectedContentLength:[data length]
textEncodingName:nil];
[[self client] URLProtocol:self didReceiveResponse:response
cacheStoragePolicy:NSURLCacheStorageNotAllowed];
[[self client] URLProtocol:self didLoadData:data];
[[self client] URLProtocolDidFinishLoading:self];
}
37пятница, 4 октября 13 г.
Hybrid Applications
37
- (void)startLoading
{
NSString *imagePath = [[NSBundle mainBundle] pathForResource:self.imageName
ofType:self.extension];
NSData *data = [NSData dataWithContentsOfFile:imagePath];
NSURLResponse *response =[[NSURLResponse alloc] initWithURL:self.request.URL
MIMEType:nil
expectedContentLength:[data length]
textEncodingName:nil];
[[self client] URLProtocol:self didReceiveResponse:response
cacheStoragePolicy:NSURLCacheStorageNotAllowed];
[[self client] URLProtocol:self didLoadData:data];
[[self client] URLProtocolDidFinishLoading:self];
}
37пятница, 4 октября 13 г.
Hybrid Applications
37
- (void)startLoading
{
NSString *imagePath = [[NSBundle mainBundle] pathForResource:self.imageName
ofType:self.extension];
NSData *data = [NSData dataWithContentsOfFile:imagePath];
NSURLResponse *response =[[NSURLResponse alloc] initWithURL:self.request.URL
MIMEType:nil
expectedContentLength:[data length]
textEncodingName:nil];
[[self client] URLProtocol:self didReceiveResponse:response
cacheStoragePolicy:NSURLCacheStorageNotAllowed];
[[self client] URLProtocol:self didLoadData:data];
[[self client] URLProtocolDidFinishLoading:self];
}
37пятница, 4 октября 13 г.
Hybrid Applications
37
- (void)startLoading
{
NSString *imagePath = [[NSBundle mainBundle] pathForResource:self.imageName
ofType:self.extension];
NSData *data = [NSData dataWithContentsOfFile:imagePath];
NSURLResponse *response =[[NSURLResponse alloc] initWithURL:self.request.URL
MIMEType:nil
expectedContentLength:[data length]
textEncodingName:nil];
[[self client] URLProtocol:self didReceiveResponse:response
cacheStoragePolicy:NSURLCacheStorageNotAllowed];
[[self client] URLProtocol:self didLoadData:data];
[[self client] URLProtocolDidFinishLoading:self];
}
37пятница, 4 октября 13 г.
Hybrid Applications
38
NSURLImageProtocol
github.com/xr1337/NSURLImageProtocol
bit.ly/yac_nsurlprotocol
38пятница, 4 октября 13 г.
Hybrid Applications
39
Smart Cache
github.com/rnapier/RNCachingURLProtocol
bit.ly/yac_nsurlprotocol
github.com/artifacts/AFCache
39пятница, 4 октября 13 г.
Extend iOS Networking
40
UIWebView support for new media formats
– WebP
– WebM
Application-wide support for new
protocols
– SPDY
40пятница, 4 октября 13 г.
Extend iOS Networking
41
ProtocolNSURLConnection NSURLConnection
NSURLConnection
Delegate
Converter WebPPNG
41пятница, 4 октября 13 г.
Extend iOS Networking
41
ProtocolNSURLConnection NSURLConnection
NSURLConnection
Delegate
Converter WebPPNG
41пятница, 4 октября 13 г.
Extend iOS Networking
42
WebP Decoding
github.com/cysp/STWebPDecoder
bit.ly/yac_nsurlprotocol
42пятница, 4 октября 13 г.
Replace iOS Networking
43
Protocol
Chromium
Network
Stack
iOS Network Stack
NSURLConnection
43пятница, 4 октября 13 г.
44пятница, 4 октября 13 г.
Bonus stage
NSURLProtocol in the Mothership
45пятница, 4 октября 13 г.
NSURLProtocol in the Mothership
NSCFURLProtocol
NSCFURLProtocolBridge
NSCFURLProtocolBridgeWithTrampoline
46
46пятница, 4 октября 13 г.
NSURLProtocol in the Mothership
MFMessageURLProtocol
– x-msg:
– cid:
– x-cid:
MFMessageWebProtocol
– x-apple-msg-load:
CKMessagePartURLProtocol
– x-ckmsgpart:
QLPreviewURLProtocol
– x-apple-ql-id://
UUID/x-apple-ql-magic
SUWebImagePoolURLProtocol
– x-itmsimg:
47
47пятница, 4 октября 13 г.
NSURLProtocol in the Mothership
NSAboutURLProtocol
– about:
48
48пятница, 4 октября 13 г.
Thank you!
49пятница, 4 октября 13 г.
50
Alexey Dodonov
iOS Developer
iosdev@yandex.ru
@ddnv
50пятница, 4 октября 13 г.

More Related Content

What's hot

WebSockets
WebSocketsWebSockets
WebSocketsplusnin
 
Доставка данных в реальном времени.
Доставка данных в реальном времени. Доставка данных в реальном времени.
Доставка данных в реальном времени. beshkenadze
 
05 - Web-технологии. Сетевые протоколы
05 - Web-технологии. Сетевые протоколы05 - Web-технологии. Сетевые протоколы
05 - Web-технологии. Сетевые протоколыRoman Brovko
 
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.Alexander Frolov
 
Pavel Dovbush Toster
Pavel Dovbush Toster Pavel Dovbush Toster
Pavel Dovbush Toster Pavel Dovbush
 
07 - Web-технологии. Web-сервера
07 - Web-технологии. Web-сервера07 - Web-технологии. Web-сервера
07 - Web-технологии. Web-сервераRoman Brovko
 
Антон Карпов - Сетевая безопасность
 Антон Карпов - Сетевая безопасность Антон Карпов - Сетевая безопасность
Антон Карпов - Сетевая безопасностьYandex
 
17 - Web-технологии. Real Time сообщения
17 - Web-технологии. Real Time сообщения17 - Web-технологии. Real Time сообщения
17 - Web-технологии. Real Time сообщенияRoman Brovko
 
Шамбулов У. К. (Казахстан), ГТС. Анализ и исследование инцидентов информацион...
Шамбулов У. К. (Казахстан), ГТС. Анализ и исследование инцидентов информацион...Шамбулов У. К. (Казахстан), ГТС. Анализ и исследование инцидентов информацион...
Шамбулов У. К. (Казахстан), ГТС. Анализ и исследование инцидентов информацион...KazHackStan
 
MapReduce взгляд вглубь
MapReduce взгляд вглубьMapReduce взгляд вглубь
MapReduce взгляд вглубьPavel Mezentsev
 
Михаил Давыдов — Транспорт, Ajax
Михаил Давыдов — Транспорт, AjaxМихаил Давыдов — Транспорт, Ajax
Михаил Давыдов — Транспорт, AjaxYandex
 
Иван Бибилов: http-протокол
Иван Бибилов: http-протоколИван Бибилов: http-протокол
Иван Бибилов: http-протоколYandex
 
Курсы по мобильной разработке под iOS. 5 лекция. Работа с данными
Курсы по мобильной разработке под iOS. 5 лекция. Работа с даннымиКурсы по мобильной разработке под iOS. 5 лекция. Работа с данными
Курсы по мобильной разработке под iOS. 5 лекция. Работа с даннымиГлеб Тарасов
 
Call of Postgres: Advanced Operations (part 3)
Call of Postgres: Advanced Operations (part 3)Call of Postgres: Advanced Operations (part 3)
Call of Postgres: Advanced Operations (part 3)Alexey Lesovsky
 

What's hot (14)

WebSockets
WebSocketsWebSockets
WebSockets
 
Доставка данных в реальном времени.
Доставка данных в реальном времени. Доставка данных в реальном времени.
Доставка данных в реальном времени.
 
05 - Web-технологии. Сетевые протоколы
05 - Web-технологии. Сетевые протоколы05 - Web-технологии. Сетевые протоколы
05 - Web-технологии. Сетевые протоколы
 
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
 
Pavel Dovbush Toster
Pavel Dovbush Toster Pavel Dovbush Toster
Pavel Dovbush Toster
 
07 - Web-технологии. Web-сервера
07 - Web-технологии. Web-сервера07 - Web-технологии. Web-сервера
07 - Web-технологии. Web-сервера
 
Антон Карпов - Сетевая безопасность
 Антон Карпов - Сетевая безопасность Антон Карпов - Сетевая безопасность
Антон Карпов - Сетевая безопасность
 
17 - Web-технологии. Real Time сообщения
17 - Web-технологии. Real Time сообщения17 - Web-технологии. Real Time сообщения
17 - Web-технологии. Real Time сообщения
 
Шамбулов У. К. (Казахстан), ГТС. Анализ и исследование инцидентов информацион...
Шамбулов У. К. (Казахстан), ГТС. Анализ и исследование инцидентов информацион...Шамбулов У. К. (Казахстан), ГТС. Анализ и исследование инцидентов информацион...
Шамбулов У. К. (Казахстан), ГТС. Анализ и исследование инцидентов информацион...
 
MapReduce взгляд вглубь
MapReduce взгляд вглубьMapReduce взгляд вглубь
MapReduce взгляд вглубь
 
Михаил Давыдов — Транспорт, Ajax
Михаил Давыдов — Транспорт, AjaxМихаил Давыдов — Транспорт, Ajax
Михаил Давыдов — Транспорт, Ajax
 
Иван Бибилов: http-протокол
Иван Бибилов: http-протоколИван Бибилов: http-протокол
Иван Бибилов: http-протокол
 
Курсы по мобильной разработке под iOS. 5 лекция. Работа с данными
Курсы по мобильной разработке под iOS. 5 лекция. Работа с даннымиКурсы по мобильной разработке под iOS. 5 лекция. Работа с данными
Курсы по мобильной разработке под iOS. 5 лекция. Работа с данными
 
Call of Postgres: Advanced Operations (part 3)
Call of Postgres: Advanced Operations (part 3)Call of Postgres: Advanced Operations (part 3)
Call of Postgres: Advanced Operations (part 3)
 

Similar to iOS URL Loading System: Go Beyond

Mihail davidov js-ajax
Mihail davidov js-ajaxMihail davidov js-ajax
Mihail davidov js-ajaxYandex
 
Distributed nets
Distributed netsDistributed nets
Distributed netszagru
 
Open protocols as base for social distributed networks
Open protocols as base for social distributed networksOpen protocols as base for social distributed networks
Open protocols as base for social distributed networksТранслируем.бел
 
Облачная платформа для ИТ-инфраструктур
Облачная платформа для ИТ-инфраструктурОблачная платформа для ИТ-инфраструктур
Облачная платформа для ИТ-инфраструктурSaaS.ru Portal
 
Web осень 2013 лекция 3
Web осень 2013 лекция 3Web осень 2013 лекция 3
Web осень 2013 лекция 3Technopark
 
JavaScript Базовый. Занятие 08.
JavaScript Базовый. Занятие 08.JavaScript Базовый. Занятие 08.
JavaScript Базовый. Занятие 08.Igor Shkulipa
 
Безопасность интернет-приложений осень 2013 лекция 2
Безопасность интернет-приложений осень 2013 лекция 2Безопасность интернет-приложений осень 2013 лекция 2
Безопасность интернет-приложений осень 2013 лекция 2Technopark
 
HighLoad весна 2014 лекция 3
HighLoad весна 2014 лекция 3HighLoad весна 2014 лекция 3
HighLoad весна 2014 лекция 3Technopark
 
08 - Web-технологии. Архитектура frontend-backend
08 - Web-технологии. Архитектура frontend-backend08 - Web-технологии. Архитектура frontend-backend
08 - Web-технологии. Архитектура frontend-backendRoman Brovko
 
«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28
«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28
«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28MoscowJS
 
«Пиринговый веб на JavaScript», Денис Глазков
«Пиринговый веб на JavaScript», Денис Глазков«Пиринговый веб на JavaScript», Денис Глазков
«Пиринговый веб на JavaScript», Денис ГлазковMail.ru Group
 
"Пиринговый веб на JavaScript"
"Пиринговый веб на JavaScript""Пиринговый веб на JavaScript"
"Пиринговый веб на JavaScript"FDConf
 
Антон Тюрин — Облачная платформа Cocaine — облако своими руками
Антон Тюрин — Облачная платформа Cocaine — облако своими рукамиАнтон Тюрин — Облачная платформа Cocaine — облако своими руками
Антон Тюрин — Облачная платформа Cocaine — облако своими рукамиYandex
 
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...PavelKonotopov
 
Расследование инцидентов: как правильно понять, что он произошел и как об это...
Расследование инцидентов: как правильно понять, что он произошел и как об это...Расследование инцидентов: как правильно понять, что он произошел и как об это...
Расследование инцидентов: как правильно понять, что он произошел и как об это...jet_information_security
 
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)Ontico
 
Waits monitoring in PostgreSQL
Waits monitoring in PostgreSQLWaits monitoring in PostgreSQL
Waits monitoring in PostgreSQLIldus Kurbangaliev
 
Алексей Андросов "HTML5 в Я.Почте"
Алексей Андросов "HTML5 в Я.Почте"Алексей Андросов "HTML5 в Я.Почте"
Алексей Андросов "HTML5 в Я.Почте"Yandex
 
О безопасном использовании PHP wrappers
О безопасном использовании PHP wrappersО безопасном использовании PHP wrappers
О безопасном использовании PHP wrappersPositive Hack Days
 
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)Ontico
 

Similar to iOS URL Loading System: Go Beyond (20)

Mihail davidov js-ajax
Mihail davidov js-ajaxMihail davidov js-ajax
Mihail davidov js-ajax
 
Distributed nets
Distributed netsDistributed nets
Distributed nets
 
Open protocols as base for social distributed networks
Open protocols as base for social distributed networksOpen protocols as base for social distributed networks
Open protocols as base for social distributed networks
 
Облачная платформа для ИТ-инфраструктур
Облачная платформа для ИТ-инфраструктурОблачная платформа для ИТ-инфраструктур
Облачная платформа для ИТ-инфраструктур
 
Web осень 2013 лекция 3
Web осень 2013 лекция 3Web осень 2013 лекция 3
Web осень 2013 лекция 3
 
JavaScript Базовый. Занятие 08.
JavaScript Базовый. Занятие 08.JavaScript Базовый. Занятие 08.
JavaScript Базовый. Занятие 08.
 
Безопасность интернет-приложений осень 2013 лекция 2
Безопасность интернет-приложений осень 2013 лекция 2Безопасность интернет-приложений осень 2013 лекция 2
Безопасность интернет-приложений осень 2013 лекция 2
 
HighLoad весна 2014 лекция 3
HighLoad весна 2014 лекция 3HighLoad весна 2014 лекция 3
HighLoad весна 2014 лекция 3
 
08 - Web-технологии. Архитектура frontend-backend
08 - Web-технологии. Архитектура frontend-backend08 - Web-технологии. Архитектура frontend-backend
08 - Web-технологии. Архитектура frontend-backend
 
«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28
«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28
«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28
 
«Пиринговый веб на JavaScript», Денис Глазков
«Пиринговый веб на JavaScript», Денис Глазков«Пиринговый веб на JavaScript», Денис Глазков
«Пиринговый веб на JavaScript», Денис Глазков
 
"Пиринговый веб на JavaScript"
"Пиринговый веб на JavaScript""Пиринговый веб на JavaScript"
"Пиринговый веб на JavaScript"
 
Антон Тюрин — Облачная платформа Cocaine — облако своими руками
Антон Тюрин — Облачная платформа Cocaine — облако своими рукамиАнтон Тюрин — Облачная платформа Cocaine — облако своими руками
Антон Тюрин — Облачная платформа Cocaine — облако своими руками
 
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
 
Расследование инцидентов: как правильно понять, что он произошел и как об это...
Расследование инцидентов: как правильно понять, что он произошел и как об это...Расследование инцидентов: как правильно понять, что он произошел и как об это...
Расследование инцидентов: как правильно понять, что он произошел и как об это...
 
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
 
Waits monitoring in PostgreSQL
Waits monitoring in PostgreSQLWaits monitoring in PostgreSQL
Waits monitoring in PostgreSQL
 
Алексей Андросов "HTML5 в Я.Почте"
Алексей Андросов "HTML5 в Я.Почте"Алексей Андросов "HTML5 в Я.Почте"
Алексей Андросов "HTML5 в Я.Почте"
 
О безопасном использовании PHP wrappers
О безопасном использовании PHP wrappersО безопасном использовании PHP wrappers
О безопасном использовании PHP wrappers
 
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
 

iOS URL Loading System: Go Beyond