Stanislav
Да нет вмсяков
Paks
я бы его нафиг удалил бы через 3 минуты юзания)
Stanislav
Показываешь крутилку
Paks
ну пустое окно)
Stanislav
Грузишь первую пачку сообщений
Stanislav
Ну удали тогда вк) Он показывает крутилку, когда открываешь чат
Paks
хм)
Paks
и правда) дяк)))
Paks
я чет сравниваю с ватсапом/телеграмом/вайбером
Paks
тут все моментально включается
Stanislav
Stanislav
Вот, поймал специально
Stanislav
Ну так там сложнее все. Тот же телеграм берет первое сообщение из списка диалогов
Paks
👍 пасиб))) мб ты и прав, попробую))) а то я что-то зациклился на моментальности отображения и капец))
Stanislav
Дальнейшие грузит. Просто это быстро происходит
Anonymous
ты открываешь чат и у тебя стабильные висяки)
да почему висяки? Смотри, сообщений 100 - место под них ты уже можешь зарезервировать. Потом, твоя задача чтобы у тебя расшифрованные отображались не по мере расшифровки (потому что вначале могут быть например длинные сообщения, которые расшифруются последниеми), а в хоронологической последовательности
Stanislav
Да если ты возьмешь маленькие чанки оно и будет практически мгновенно отображаться
Max
а почему не websocket? что за архаичный подход из староиндийского туториаль по Firebase?
Anonymous
э... то есть вообще никак не можешь отследить какое сообщение расшифровалось?
Max
хз, захотел заказчик на базе xmpp делать...
дык нет, XMPP это то, что нужно, но он наоборот, не подразумевает тягать мессаги тыщами
Stanislav
Или для каждого сообщения свой объект, его делегатом назначаешь и все дела
Stanislav
Так и порядок сохранится. Главное потом убедись, что все объекты закончили расшифровку. И можно отображать
Paks
не нашел пока) изучаю работу его на основе меседжера в который он внедрен. из доки ток список делегатов и все)
Paks
тоесть по очереди расшифровывать - в принципе вариант терпимый?
Stanislav
Why not. Главное не все сразу и в бекграунде.
Anonymous
более того, если попытаться расшифровать все вместе паралельно - тоже можеть быть долго. Потому что ресурсы неограничены, ядра всего два, время будет дробиться на более мелкие куски + оверхед по управлению. В итоге первое расшифрованное сообщение будет расшировано за больший промежуток времени, чем если это делать последовательно
Paks
Понял, спасибо. Я думал ось их умеет ставить сама в очередь правильно, выбирая самую оптимальную нагрузку для быстроты выполнения операций. И нужно просто ей задач правильно набросать в поток, а дальше будет магия...
Anonymous
я бы каждому сообщению сделал порядковый номер или таймстамп, в цикле вайл промисами расшифровывал, делегатом отдавал куда-нибудь сообщения, вставляя их при помощи бинарного поиска (по хешу таймстемпа или нумерации) в лист, по завершению цикла крутить в другом промисе цикл, опрашивающий объект (лист) о заполнении. Единственное что меня беспокоит — здоровенное количество асинхронных операций единовременно.
Anonymous
ну, есть сераильные очереди. есть группы, есть объектный (не GCD) АПИ, недавно давали туториал. И с помощью них ты можешь сказать - хочешь ли ты чтобы твои задачки выполнялись последовально или парарельно. Ну это же классика, что мол есть 10 прчин по которым "я не люблю асинхронное выполнение задач": 2 3 8 7 6 10 1 4 9
Anonymous
кстати в тележке иногда порядок сообщений в чате сбивается. хер знает почему
Anonymous
не могу скриншот из твиттера про это найти. :(
Anonymous
https://twitter.com/iamdevloper/status/808344541669498881
Anonymous
я бы каждому сообщению сделал порядковый номер или таймстамп, в цикле вайл промисами расшифровывал, делегатом отдавал куда-нибудь сообщения, вставляя их при помощи бинарного поиска (по хешу таймстемпа или нумерации) в лист, по завершению цикла крутить в другом промисе цикл, опрашивающий объект (лист) о заполнении. Единственное что меня беспокоит — здоровенное количество асинхронных операций единовременно.
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() //можно отображать } }
Anonymous
карочи как-то так. может мелкие недостатки синтаксиса будут, писал на память, я не с мака и не икскода
Johnny
народ привет! посоветуитн книгу - уроки по swift но чтобы было ооп примеры - протоколы — и так далее ! Спасибо
Anonymous
документация языка с эпла + какие-нибудь примеры с гита
Anonymous
типа там https://github.com/ioscreator/ioscreator
Anonymous
у этого хрена много примеров
Anonymous
по кокосу вроде в основном
Anonymous
я опять не заквотил сообщение
Anonymous
@negat1we бу
Ratmir
https://www.youtube.com/channel/UCuP2vJ6kRutQBfRmdcI92mA
Max
народ привет! посоветуитн книгу - уроки по swift но чтобы было ооп примеры - протоколы — и так далее ! Спасибо
RW подписку оформляй на видеотуториалы - 19 долл в месяц, материала дофига
Artur
Да это
Nikita
hackingwithswift тоже годно
Artur
Про что кстати? Видел тут так и не прочел
Anonymous
Проектики на свифте
Max
есть курс Алексея Скутаренко на Ютубе, подробно всё на ObjC
Anonymous
У него же и про свіфт, только 1-й и без СДК
Max
про свифт куча всего: HWS 30+ apps, RW iOS Apprentice с 4 туториалами по 200-250 стр, материалов на полжизни ))
dddd
Ребят, извиняюсь за оффтоп, но есть 2 прикольных проекта по ios. Кого заинтересовало пишите в лс, расскажу подробней.
Artur
О чем расскажешь?
dddd
по проектам
Vladislavs
Ребят, извиняюсь за оффтоп, но есть 50 прикольных проектов, большинство под NDA, в личку не пишите, даже если заинтересовало
Vladislavs
Ты если рекрутингом занимаешься, то условия называй хотя бы
Benjamin
David
Народ объясните, почему грят что для того чтобы скрыть реализацию какого либо метода, необходимо юзать протоколы? Что подразумевается под "скрыть"?
Stanislav
Народ объясните, почему грят что для того чтобы скрыть реализацию какого либо метода, необходимо юзать протоколы? Что подразумевается под "скрыть"?
Говоришь что у твоего класса есть делегатный (протокольный) метод getData, который возвращает какие-то данные
Stanislav
Все дергают этот метод, но не знают, как внутри работает твой класс
David
Все дергают этот метод, но не знают, как внутри работает твой класс
Ну с делегатом то понятно, а вот в рамках простого протокола(как в вайпере и пр), без делегатов...зачем они описываются в .h в @protocol, когда можно было бы просто объявить методы в интерфейсе класса?
Stanislav
Разные классы могут реализовывать один и тот же протокол
David
Разные классы могут реализовывать один и тот же протокол
мм, ладно, может не так выразился, в рамках SOA утверждается что слой должен общаться с другим слоем через протокол...зачем так, почему просто не вызывать методы которые были бы описаны в хедер файле?
Max
мм, ладно, может не так выразился, в рамках SOA утверждается что слой должен общаться с другим слоем через протокол...зачем так, почему просто не вызывать методы которые были бы описаны в хедер файле?
принцип слабой связности: не надо наследоваться от другого класса, полная свобода действий - открытый протокол, взял методы, реализовал, профит
Paks
Покури патерн Адаптер) там красиво показано юзание протокола. Классы разные, интерфейс для всех общий)
Paks
https://maleevdimka.files.wordpress.com/2013/04/ios-patterns-cliff-notes2.pdf
Paks
22 страница
Anton
Дарова. Хотел спросить, если доверять сертификату ненадежного корп. разработчика, его приложение не будет иметь доступ к медиатеке, контактам и т.д(Если я не давал согласия)?
ıpɥzoqo