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

PPT
Major mistakes in site moving
PDF
Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)
PDF
"Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (...
PDF
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»
PDF
Вячеслав Бирюков - HTTP и HTTPS
PPTX
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
PDF
Практическое применение HTML5 в Я.Почте
Major mistakes in site moving
Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)
"Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (...
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»
Вячеслав Бирюков - HTTP и HTTPS
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Практическое применение HTML5 в Я.Почте

What's hot (14)

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

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

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

iOS URL Loading System: Go Beyond