@ios_ru

Страница 555 из 2351
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 паралельно, но чтобы они вернулись в нужном порядке

мы все это поняли

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
а есть способ какой-то, что бы расшифровал так: 1 бросил на расшифровку 2 бросил на расшифровку 3 бросил на расшифровку .... расшифровано 1 расшифровано 2 расшифровано 3 ....
нээ, запускаешь в отдельной queue с высоким приоритетом конкуррентли, но даешь ограничение на последовательность исполнения - и пока юзер смотрит на живописную крутилку, телефон трудиццо и херачит 1000 сообщений в бэкграунде, выплевывая результаты кусками

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
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?

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

Maxx
01.02.2017
15:08:54
хз, захотел заказчик на базе xmpp делать...
дык нет, XMPP это то, что нужно, но он наоборот, не подразумевает тягать мессаги тыщами

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

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
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
я бы каждому сообщению сделал порядковый номер или таймстамп, в цикле вайл промисами расшифровывал, делегатом отдавал куда-нибудь сообщения, вставляя их при помощи бинарного поиска (по хешу таймстемпа или нумерации) в лист, по завершению цикла крутить в другом промисе цикл, опрашивающий объект (лист) о заполнении. Единственное что меня беспокоит — здоровенное количество асинхронных операций единовременно.
func getMessages() { getMessagesChunk().then { messagesList -> [Promise<>] in let listOfPromises : [Promise<>] = [] for encryptedMessage in messagesList { decrypt(encryptedMessage).then { decryptedMessage in listOfPromises.add(self.output.messageGotDecrypted(decryptedMessage)) } } self.output.numberOfMessagesReceived(messagesList.Count) }.then{ promisesWithDecryptingTasks in return when(resolved promises: promisesWithDecryptingTasks) }.then { self.output.stuffResolved() //можно отображать } }

карочи как-то так. может мелкие недостатки синтаксиса будут, писал на память, я не с мака и не икскода

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

? Райзя ?
01.02.2017
15:49:33
документация языка с эпла + какие-нибудь примеры с гита

типа там https://github.com/ioscreator/ioscreator

у этого хрена много примеров

по кокосу вроде в основном

я опять не заквотил сообщение

@negat1we бу

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

Maxx
01.02.2017
16:01:25
народ привет! посоветуитн книгу - уроки по swift но чтобы было ооп примеры - протоколы — и так далее ! Спасибо
RW подписку оформляй на видеотуториалы - 19 долл в месяц, материала дофига

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
Про что кстати? Видел тут так и не прочел

Страница 555 из 2351