
Andrew
01.02.2017
14:47:48
ок. давай на примере загрузки картинок.
Мы загрузили например откуда-то массив из 50 элементов. Вывели в ТэйблВью, теперь хотим асинхронно закачать и 50 картинок, которыее соотвествуют этим эементам массивов

Dmitriy
01.02.2017
14:48:15
- (void)decodeString:(nsstring *)
и есть делегад
- (void)didDecodedString:(nsstring *)
и у меня база данных с сообщениями
одной пачкой я расшифровать не смогу? Мне надо сделать 100 итераций, верно?

Google

Dmitriy
01.02.2017
14:49:06
тобишь, 100 вызовов метода, и 100 колбеков я получу

-_-
01.02.2017
14:49:06
Делегад
Вот кто они
Теперь я знаю

Dmitriy
01.02.2017
14:49:14
?

Andrew
01.02.2017
14:49:18
да, продолжай
блин, я почему-то еще думал что Свифт, ну ладно
окей, и что?

Dmitriy
01.02.2017
14:50:28
вот я так понимаю, если буду расшифровывать по очереди:
1 расшифровал -> вызвал второе
2 расшифровал -> выдзвал третье
....
это будет довоьлно долго

Andrew
01.02.2017
14:51:03
и поэтому ты хочешь запустить все 100 паралельно, но чтобы они вернулись в нужном порядке
мы все это поняли

-_-
01.02.2017
14:51:20
Какая длина строк?

Google

Dmitriy
01.02.2017
14:51:38
а есть способ какой-то, что бы расшифровал так:
1 бросил на расшифровку
2 бросил на расшифровку
3 бросил на расшифровку
....
расшифровано 1
расшифровано 2
расшифровано 3
....
может быть 1 символ
может быть сотня

-_-
01.02.2017
14:52:18
dispatch_apply(count, dispatch_get_global_queue(0, 0), ^(size_t i){
results[i] = do_work(data, i);
});
total = summarize(results, count);

Dmitriy
01.02.2017
14:53:24
а как это с делегатом сдружить?

Maxx
01.02.2017
14:53:24

Andrew
01.02.2017
14:53:29
ладно, я в обжси пасс

-_-
01.02.2017
14:54:19
может быть сотня
Ну так ты попробуй сначала расшифровать последовательно. Одно дело если б ты написал, что вот, 5 минут база декодится последовательно. Надо бы запускать параллельно, будет 2,5 минуты
Какая-то преждевременная оптимизация хз ради чего

Dmitriy
01.02.2017
14:54:34
ну там по 50-100 долесекунд уходит
но есл сотня итераций - то это уже будет 5-10 секунд

-_-
01.02.2017
14:55:50
Ну, ок. Будет 2,5-5 секунд. Тебе это надо? Или тебе каждое сообщение надо показывать по мере расшифрования? (визуально именно это будет быстрее всего по ощущениям юзера)

Dmitriy
01.02.2017
14:57:37
ну вот я не знаю как делать правильно)

-_-
01.02.2017
14:58:23
Хм, а что за либа расшифровки? Нафиг там вообще делегат? Может она сама по себе асинхронно все делает?

Dmitriy
01.02.2017
14:58:25
написал как я это вижу) и мб кто посоветует) потому-что с подобными задачами не сталкивался) и не уверен, что то, что сразу в глову приходит - является оптимальным вариантом)

Vladislavs
01.02.2017
14:58:26

Dmitriy
01.02.2017
14:58:39
OTRKit
https://github.com/ChatSecure/OTRKit

Google

-_-
01.02.2017
15:00:38

Andrew
01.02.2017
15:01:34
сорри, потерял интерес уже. пусть будет так

Dmitriy
01.02.2017
15:01:52
ну картинки то такое) там мона и с задержкой отображать)
а тут представь чат)
ты открываешь чат и у тебя стабильные висяки)

-_-
01.02.2017
15:02:10
Да нет вмсяков

Dmitriy
01.02.2017
15:02:11
я бы его нафиг удалил бы через 3 минуты юзания)

-_-
01.02.2017
15:02:13
Показываешь крутилку

Dmitriy
01.02.2017
15:02:17
ну пустое окно)

-_-
01.02.2017
15:02:22
Грузишь первую пачку сообщений
Ну удали тогда вк) Он показывает крутилку, когда открываешь чат

Dmitriy
01.02.2017
15:03:23
хм)

Dmitriy
01.02.2017
15:03:30
и правда) дяк)))
я чет сравниваю с ватсапом/телеграмом/вайбером
тут все моментально включается

-_-
01.02.2017
15:03:48
Вот, поймал специально
Ну так там сложнее все. Тот же телеграм берет первое сообщение из списка диалогов

Dmitriy
01.02.2017
15:04:31
? пасиб))) мб ты и прав, попробую))) а то я что-то зациклился на моментальности отображения и капец))

-_-
01.02.2017
15:04:42
Дальнейшие грузит. Просто это быстро происходит

Google

Andrew
01.02.2017
15:04:56
ты открываешь чат и у тебя стабильные висяки)
да почему висяки?
Смотри, сообщений 100 - место под них ты уже можешь зарезервировать.
Потом, твоя задача чтобы у тебя расшифрованные отображались не по мере расшифровки (потому что вначале могут быть например длинные сообщения, которые расшифруются последниеми), а в хоронологической последовательности

-_-
01.02.2017
15:05:00
Да если ты возьмешь маленькие чанки оно и будет практически мгновенно отображаться

Maxx
01.02.2017
15:07:00
а почему не websocket? что за архаичный подход из староиндийского туториаль по Firebase?

Dmitriy
01.02.2017
15:07:07

-_-
01.02.2017
15:08:45

Andrew
01.02.2017
15:08:49
э... то есть вообще никак не можешь отследить какое сообщение расшифровалось?

Maxx
01.02.2017
15:08:54

-_-
01.02.2017
15:09:00
Или для каждого сообщения свой объект, его делегатом назначаешь и все дела

Andrew
01.02.2017
15:09:40

Admin
ERROR: S client not available

-_-
01.02.2017
15:11:36
Так и порядок сохранится. Главное потом убедись, что все объекты закончили расшифровку. И можно отображать

Dmitriy
01.02.2017
15:11:40
не нашел пока) изучаю работу его на основе меседжера в который он внедрен. из доки ток список делегатов и все)
тоесть по очереди расшифровывать - в принципе вариант терпимый?

-_-
01.02.2017
15:13:20
Why not. Главное не все сразу и в бекграунде.

Andrew
01.02.2017
15:15:23
более того, если попытаться расшифровать все вместе паралельно - тоже можеть быть долго. Потому что ресурсы неограничены, ядра всего два, время будет дробиться на более мелкие куски + оверхед по управлению. В итоге первое расшифрованное сообщение будет расшировано за больший промежуток времени, чем если это делать последовательно

Dmitriy
01.02.2017
15:18:19
Понял, спасибо. Я думал ось их умеет ставить сама в очередь правильно, выбирая самую оптимальную нагрузку для быстроты выполнения операций. И нужно просто ей задач правильно набросать в поток, а дальше будет магия...

? Райзя ?
01.02.2017
15:21:55
я бы каждому сообщению сделал порядковый номер или таймстамп, в цикле вайл промисами расшифровывал, делегатом отдавал куда-нибудь сообщения, вставляя их при помощи бинарного поиска (по хешу таймстемпа или нумерации) в лист, по завершению цикла крутить в другом промисе цикл, опрашивающий объект (лист) о заполнении. Единственное что меня беспокоит — здоровенное количество асинхронных операций единовременно.

Andrew
01.02.2017
15:22:23
ну, есть сераильные очереди. есть группы, есть объектный (не GCD) АПИ, недавно давали туториал.
И с помощью них ты можешь сказать - хочешь ли ты чтобы твои задачки выполнялись последовально или парарельно.
Ну это же классика, что мол есть 10 прчин по которым "я не люблю асинхронное выполнение задач":
2
3
8
7
6
10
1
4
9

? Райзя ?
01.02.2017
15:22:34
кстати в тележке иногда порядок сообщений в чате сбивается. хер знает почему

Google

? Райзя ?
01.02.2017
15:23:20

Andrew
01.02.2017
15:23:40
не могу скриншот из твиттера про это найти. :(
https://twitter.com/iamdevloper/status/808344541669498881

Stanislav
01.02.2017
15:27:16
Пилил кто твики для Джейла?
Куда плыть? Как внедриться в системное приложение?
Как вообще компилить эти дебы?

? Райзя ?
01.02.2017
15:45:27
карочи как-то так. может мелкие недостатки синтаксиса будут, писал на память, я не с мака и не икскода


Johnny
01.02.2017
15:46:26
народ привет!
посоветуитн книгу - уроки по swift но чтобы было ооп примеры - протоколы — и так далее ! Спасибо

? Райзя ?
01.02.2017
15:49:33
документация языка с эпла + какие-нибудь примеры с гита
типа там https://github.com/ioscreator/ioscreator
у этого хрена много примеров
по кокосу вроде в основном
я опять не заквотил сообщение
@negat1we бу

Johnny
01.02.2017
15:51:06

Ratmir
01.02.2017
15:51:33
https://www.youtube.com/channel/UCuP2vJ6kRutQBfRmdcI92mA

Johnny
01.02.2017
15:53:10

Maxx
01.02.2017
16:01:25

Johnny
01.02.2017
16:02:10

DhMmJdjjsmd
01.02.2017
16:04:23
Да это

Nikita
01.02.2017
16:07:25
hackingwithswift тоже годно

Maxx
01.02.2017
16:10:16

DhMmJdjjsmd
01.02.2017
16:10:26
Про что кстати? Видел тут так и не прочел