SlideShare une entreprise Scribd logo
1  sur  112
Télécharger pour lire hors ligne
Core Data
Плюсы, минусы и подводные камни




                                  1
Хранение данных

• SQLite
• Core Data
• Archives and Serializations
• User Defaults System

                                2
3
Core Data или SQLite?
                        3
myFolder   newMessage




    Core Data
                        4
myFolder                    newMessage
           .message
                  .folder




    Core Data
                                         4
myFolder                    newMessage
             .message
                    .folder




myFolder.message = newMessage;



      Core Data
                                           4
myFolder                    newMessage
             .message
                    .folder




myFolder.message = newMessage;
newMessage.folder = myFolder;


      Core Data
                                           4
.folder = myFolder
.messages
message1
message2
                   .folder = myFolder




            Core Data
                                        5
.folder = myFolder
.messages
message1
message2
                   .folder = myFolder



                   .folder




            Core Data
                                        5
.folder = myFolder
.messages
message1
message2
                   .folder = myFolder



                   .folder = myFolder




            Core Data
                                        5
.folder = myFolder
.messages
message1
message2
                   .folder = myFolder
message3



                   .folder = myFolder




            Core Data
                                        5
1
     1
                       .label = {label1}

.messages = {m1}             2

                       .label = {label1}
     2
                             3
.messages = {m2, m3}
                       .label = {label2}



          Core Data
                                           6
1
     1
                       .label = {label1}

.messages = {m1, m2}         2

                       .label = {label1, label2}
     2
                             3
.messages = {m2, m3}
                       .label = {label2}



          Core Data
                                                   6
Delete Rules

• Nullify
• Cascade
• Deny

                      7
nullify


                     .folder
.message




   Delete Rules
                               8
nullify



.message




   Delete Rules
                     8
.message = nil




   Delete Rules
                  8
1
     1
                       .label = {label1}

.messages = {m1, m2}         2

     2                 .label = {label1, label2}

                             3
.messages = {m2, m3}
                       .label = {label2}



         Delete Rules
                                                   9
1
     1
                       .label = {label1}

.messages = {m1, m2}


     2
                             3
.messages = {m2, m3}
                       .label = {label2}



         Delete Rules
                                           9
1
     1
                   .label = {label1}

.messages = {m1}


     2
                         3
.messages = {m3}
                   .label = {label2}



         Delete Rules
                                       9
cascade




Delete Rules
               10
cascade




Delete Rules
               10
Delete Rules
               10
deny




Delete Rules
               11
deny




Delete Rules
               11
deny




Delete Rules
               11
NSManagedObject




Memory Management
                      12
Fault     Fault




Memory Management
                    13
Folder           Fault




Fault            Fault




Memory Management
                                 14
Folder                    Fault




Fault           Message




        Fault             Fault




Memory Management
                                          15
Folder                            Folder




Fault        Message            Message        Message




        Attach         Attach




Memory Management
                                                         16
Fault                           Fault




Fault           Fault           Fault           Fault




        Fault           Fault




Memory Management
                                                        17
Object Oriented
                  18
Model Versioning
                   19
NSFetchedResultsController
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return [[self.fetchedResultsController sections] count];
}

- (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section {
    id <NSFetchedResultsSectionInfo> sectionInfo = [[self.fetchedResultsController sections] objectAtIndex:section];
    return [sectionInfo numberOfObjects];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = <#Get the cell#>;
    NSManagedObject *managedObject = [self.fetchedResultsController objectAtIndexPath:indexPath];
    return cell;
}

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { 
    id <NSFetchedResultsSectionInfo> sectionInfo = [[self.fetchedResultsController sections] objectAtIndex:section];
    return [sectionInfo name];
}

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {
    return [self.fetchedResultsController sectionIndexTitles];
}

- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index {
    return [self.fetchedResultsController sectionForSectionIndexTitle:title atIndex:index];
}




                                       Interface
                                                                                                                           20
Подводные камни
                  21
NSSet *messages




     Ordered Collections
                           22
1


NSSet *messages
                     2


                     3




     Ordered Collections
                           22
1


NSSet *messages
                     2


                     3

NSSet *messages



     Ordered Collections
                           22
NSSet *messages
                     1


                     2

NSSet *messages



     Ordered Collections
                           22
1

1

                  2


2
                  3



Ordered Collections
                      23
1

1   folder1    1   message1

     folder1   2   message2
                              2
     folder1   3   message3

    folder2    1   message2

2    folder2   2   message3

                              3



Ordered Collections
                                  23
DELETE FROM links WHERE folder = ‘folder1’   1

1         folder1       1      message1

          folder1       2      message2
                                                 2
          folder1       3      message3

          folder2       1      message2

2         folder2       2      message3

                                                 3



Ordered Collections
                                                     23
1

1   folder1    1   message1

     folder1   2   message2
                              2
     folder1   3   message3

    folder2    1   message2

2    folder2   2   message3

                              3



Ordered Collections
                                  23
1

1

                              2
    folder2    1   message2

2    folder2   2   message3

                              3



Ordered Collections
                                  23
24
UPDATE message SET unread = 0 WHERE folder = ‘folder1’




                                                         24
24
24
25
25
26
.folder = myFolder;




                      26
myFolder


.folder = myFolder;




                      26
Fault


.folder = myFolder;




                      26
26
27
NSManagedObjectID


.folder = [myFolder objectID];




                                 27
28
NSManagedObjectContext *moc = [self managedObjectContext];




                                                             28
NSManagedObjectContext *moc = [self managedObjectContext];
NSError *error = nil;
MailFolder *folder = (MailFolder *)[moc existingObjectWithID:self.folder
                                                       error:&error];




                                                                           28
NSManagedObjectContext *moc = [self managedObjectContext];
NSError *error = nil;
MailFolder *folder = (MailFolder *)[moc existingObjectWithID:self.folder
                                                       error:&error];
if (error != nil) {
    // TODO: handle error!
}




                                                                           28
NSManagedObjectContext *moc = [self managedObjectContext];
NSError *error = nil;
MailFolder *folder = (MailFolder *)[moc existingObjectWithID:self.folder
                                                       error:&error];
if (error != nil) {
    // TODO: handle error!
}
if (folder != nil) {
    self.navigationItem.title = folder.name;
}




                                                                           28
Core Data
   is not
thread-safe
              29
30
Main Thread




Background Thread




                    30
Main Thread




Background Thread




                    30
Main Thread




Background Thread




                    30
Main Thread


Fetch or Save

Background Thread




                    31
Fetch
Main Thread




Background Thread




                    31
Main Thread




Background Thread

Fetch




                    31
Main Thread




Background Thread

Fetch         NSManagedObjectID

              NSManagedObjectID

              NSManagedObjectID


                                  31
NSManagedObjectID

              NSManagedObjectID

              NSManagedObjectID
Main Thread




Background Thread

Fetch




                                  31
NSManagedObjectID

              NSManagedObjectID
Main Thread




Background Thread

Fetch




                                  31
NSManagedObjectID
Main Thread




Background Thread

Fetch




                                  31
Main Thread




Background Thread

Fetch




                    31
Main Thread




Background Thread




                    32
Main Thread

 Manager

Background Thread




                    32
Main Thread

[    Manager      managedObjectContext]

    Background Thread




                                          32
moc




    Main Thread

[    Manager      managedObjectContext]

    Background Thread




       moc



                                          32
moc




Main Thread

 Manager

Background Thread




   moc



                    32
moc




Main Thread

 Manager

Background Thread




   moc



                    32
moc




Main Thread

 Manager

Background Thread




   moc



                    32
moc




    Main Thread

[    Manager      saveContext]

    Background Thread




       moc



                                 32
moc




    Main Thread

[    Manager      saveContext]

    Background Thread
    [moc save]


       moc



                                 32
moc




    Main Thread

[    Manager      didSaveManagedObjectContextNotification:notification]

    Background Thread




       moc



                                                                          32
moc


    [moc mergeChangesFromContextDidSaveNotification:notification]

    Main Thread

[    Manager      didSaveManagedObjectContextNotification:notification]

    Background Thread




       moc



                                                                          32
moc


    [moc mergeChangesFromContextDidSaveNotification:notification]

    Main Thread

[    Manager      didSaveManagedObjectContextNotification:notification]

    Background Thread




       moc



                                                                          32
NSFetchedResultsController




                             33
NSFetchedResultsController


              •   Анимация при
                  изменении списка
                  объектов




                                     33
NSFetchedResultsController


              •   Анимация при
                  изменении списка
                  объектов

              •   Данные изменяются
                  прямо под руками




                                      33
34
Tips & Tricks



                35
Сохраняйтесь чаще




                    36
Сохраняйтесь чаще
{
    < блок изменений >;
    [context save];
}

{
    < блок изменений >;
    [context save];
}



                          36
Multiple Errors




                  37
Multiple Errors
NSMutableString *errorMessage = [NSMutableString stringWithCapacity:0];

NSArray* detailedErrors = [[error userInfo] objectForKey:NSDetailedErrorsKey];
if ([detailedErrors count] > 0) {
    for (NSError* detailedError in detailedErrors) {
       [errorMessage appendFormat:@" DetailedError: %@", [detailedError userInfo]];
       [errorMessage appendString:@"n"];
    }
}
else {
    [errorMessage appendFormat:@" %@", [error userInfo]];
}

NSLog(errorMessage);




                                                                                      37
NSFetchRequest




                 38
NSFetchRequest
[fetchRequest setFetchBatchSize:25];




                                       38
NSFetchRequest
[fetchRequest setFetchBatchSize:25];




                                       Proxy Array




                                                     38
NSFetchRequest
[fetchRequest setFetchBatchSize:25];




     25                                Proxy Array




                                                     38
NSFetchRequest
[fetchRequest setFetchBatchSize:25];




     25            25            25    Proxy Array




                                                     38
NSFetchRequest
[fetchRequest setFetchBatchSize:25];




     25            25            25            Proxy Array




[fetchRequest setReturnsObjectsAsFaults:NO];




                                                             38
NSFetchRequest
[fetchRequest setFetchBatchSize:25];




     25            25            25                   Proxy Array




[fetchRequest setReturnsObjectsAsFaults:NO];

[fetchRequest setRelationshipKeyPathsForPrefetching:keyPaths];




                                                                    38
NSFetchRequest

[fetchRequest setResultType:NSManagedObjectIDResultType];




                                                            38
Порядок аргументов




                     39
Порядок аргументов
[NSPredicate predicateWithFormat:@"(subj like ‘mblt12’) AND (unread = 0)"];




                                                                              39
Порядок аргументов
[NSPredicate predicateWithFormat:@"(subj like ‘mblt12’) AND (unread = 0)"];


[NSPredicate predicateWithFormat:@"(unread = 0) AND (subj like ‘mblt12’)"];




                                                                              39
SQLite Engine




                40
Core Data is an object-graph management and
             persistence framework.
                     © Apple


Core Data is not a database abstraction layer. It is an
  object hierarchy that happens to persist to disk.
                 © Marcus S. Zarra




                                                          41
Спасибо!




                  Алексей Додонов
           dodonov@yandex-team.ru


                                    42

Contenu connexe

En vedette

Юрий Богомолов "Методы классификации документов в поиске"
Юрий Богомолов "Методы классификации документов в поиске"Юрий Богомолов "Методы классификации документов в поиске"
Юрий Богомолов "Методы классификации документов в поиске"Yandex
 
Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе
Танки_в_Лунапарке: нагрузочное_тестирование_в_ЯндексеТанки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе
Танки_в_Лунапарке: нагрузочное_тестирование_в_ЯндексеYandex
 
Стратегия_аналитики_в_интернете
Стратегия_аналитики_в_интернетеСтратегия_аналитики_в_интернете
Стратегия_аналитики_в_интернетеYandex
 
Кир Белевич "Миксы во вселенной БЭМ"
Кир Белевич "Миксы во вселенной БЭМ"Кир Белевич "Миксы во вселенной БЭМ"
Кир Белевич "Миксы во вселенной БЭМ"Yandex
 
Исследование_рынка: процессы_и_методики
Исследование_рынка: процессы_и_методикиИсследование_рынка: процессы_и_методики
Исследование_рынка: процессы_и_методикиYandex
 
SEO_против_рекламы_на_примерах: кто, кого_и_зачем?
SEO_против_рекламы_на_примерах: кто, кого_и_зачем?SEO_против_рекламы_на_примерах: кто, кого_и_зачем?
SEO_против_рекламы_на_примерах: кто, кого_и_зачем?Yandex
 
Системы_электронных_платежей
Системы_электронных_платежейСистемы_электронных_платежей
Системы_электронных_платежейYandex
 
Сергей Сергеев "Используем git без проблем"
Сергей Сергеев "Используем git без проблем"Сергей Сергеев "Используем git без проблем"
Сергей Сергеев "Используем git без проблем"Yandex
 
Владимир Гриненко — Библиотеки блоков bem-core и bem-components
Владимир Гриненко — Библиотеки блоков bem-core и bem-componentsВладимир Гриненко — Библиотеки блоков bem-core и bem-components
Владимир Гриненко — Библиотеки блоков bem-core и bem-componentsYandex
 
Benjamin franklin memorabilia
Benjamin franklin memorabiliaBenjamin franklin memorabilia
Benjamin franklin memorabiliaKatelynLiz
 
Portfolio 2012-2013
Portfolio 2012-2013Portfolio 2012-2013
Portfolio 2012-2013Hazem Dsouki
 
La Grecia agli occhi di un giovane d’oggi
La Grecia agli occhi di un giovane d’oggi La Grecia agli occhi di un giovane d’oggi
La Grecia agli occhi di un giovane d’oggi Eleni Kabaraki
 

En vedette (20)

Юрий Богомолов "Методы классификации документов в поиске"
Юрий Богомолов "Методы классификации документов в поиске"Юрий Богомолов "Методы классификации документов в поиске"
Юрий Богомолов "Методы классификации документов в поиске"
 
Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе
Танки_в_Лунапарке: нагрузочное_тестирование_в_ЯндексеТанки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе
Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе
 
Стратегия_аналитики_в_интернете
Стратегия_аналитики_в_интернетеСтратегия_аналитики_в_интернете
Стратегия_аналитики_в_интернете
 
Кир Белевич "Миксы во вселенной БЭМ"
Кир Белевич "Миксы во вселенной БЭМ"Кир Белевич "Миксы во вселенной БЭМ"
Кир Белевич "Миксы во вселенной БЭМ"
 
Исследование_рынка: процессы_и_методики
Исследование_рынка: процессы_и_методикиИсследование_рынка: процессы_и_методики
Исследование_рынка: процессы_и_методики
 
SEO_против_рекламы_на_примерах: кто, кого_и_зачем?
SEO_против_рекламы_на_примерах: кто, кого_и_зачем?SEO_против_рекламы_на_примерах: кто, кого_и_зачем?
SEO_против_рекламы_на_примерах: кто, кого_и_зачем?
 
Системы_электронных_платежей
Системы_электронных_платежейСистемы_электронных_платежей
Системы_электронных_платежей
 
Сергей Сергеев "Используем git без проблем"
Сергей Сергеев "Используем git без проблем"Сергей Сергеев "Используем git без проблем"
Сергей Сергеев "Используем git без проблем"
 
Владимир Гриненко — Библиотеки блоков bem-core и bem-components
Владимир Гриненко — Библиотеки блоков bem-core и bem-componentsВладимир Гриненко — Библиотеки блоков bem-core и bem-components
Владимир Гриненко — Библиотеки блоков bem-core и bem-components
 
Choque de Conhecimento na Gestão Pública
Choque de Conhecimento na Gestão PúblicaChoque de Conhecimento na Gestão Pública
Choque de Conhecimento na Gestão Pública
 
Benjamin franklin memorabilia
Benjamin franklin memorabiliaBenjamin franklin memorabilia
Benjamin franklin memorabilia
 
Consad 2009 GCI
Consad 2009 GCIConsad 2009 GCI
Consad 2009 GCI
 
Baral sabado
Baral sabadoBaral sabado
Baral sabado
 
Kviling viara
Kviling viaraKviling viara
Kviling viara
 
Portfolio 2012-2013
Portfolio 2012-2013Portfolio 2012-2013
Portfolio 2012-2013
 
Mar de llibertat
Mar de llibertatMar de llibertat
Mar de llibertat
 
La Web 2.0
La Web 2.0La Web 2.0
La Web 2.0
 
Retratos
RetratosRetratos
Retratos
 
La Grecia agli occhi di un giovane d’oggi
La Grecia agli occhi di un giovane d’oggi La Grecia agli occhi di un giovane d’oggi
La Grecia agli occhi di un giovane d’oggi
 
Governo SP - Usabilidade Dos Sites
Governo SP - Usabilidade Dos SitesGoverno SP - Usabilidade Dos Sites
Governo SP - Usabilidade Dos Sites
 

Plus de Yandex

Предсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksПредсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksYandex
 
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Yandex
 
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаYandex
 
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаYandex
 
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Yandex
 
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Yandex
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Yandex
 
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Yandex
 
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Yandex
 
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Yandex
 
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Yandex
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Yandex
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровYandex
 
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Yandex
 
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Yandex
 
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Yandex
 
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Yandex
 
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Yandex
 
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Yandex
 
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Yandex
 

Plus de Yandex (20)

Предсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksПредсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of Tanks
 
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
 
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
 
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
 
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
 
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
 
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
 
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
 
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
 
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
 
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
 
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
 
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
 
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
 
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
 
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
 
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
 

Алексей Додонов "Опыт использования Core Data в Яндекс.Почте"