блять, свифт, работу, нахуй, говно, нужен, мак, работы, работает, иос, пиздец, вкатиться, писать, проект, вопрос
>С чего вкатываться?
Со swift book - книжка валяется в интернете.
Стоит упомянуть про складчину иос господ - телега.ми/iOSBooks - валяется огромное количество книжек, хоть обмазывайся.
Есть еще одна, из какого местного чатика https://drive.google.com/drive/folders/0B25xie8pit__amNPc1N6OXVFaEU - но там больше старых валяется. Единственный плюс так это обжс.
>Не люблю читать книжки я долбаеб
https://www.youtube.com/playlist?list=PL9lXw_XXeiWQGrY5dl0IjFI7tOw_nfI91 - лучшее что есть в тырнете.
По видяшкам так же рекомендую:
https://coursehunters.net/course/ios-12-i-swift-4-2-dlya-nachinayushchih-200-prakticheskih-tutorialov
https://coursehunters.net/course/ios-12-i-swift-4-ot-novichka-do-professionala - перед стенфордскими курсами можно глянуть. Тоже найс.
После окончания вышеописанного заебись будет построить свое приложение. Например очередное Weather или же ImageGallery или что-нибудь свое.
https://marcosantadev.com/coredata_crud_concurrency_swift_1/ - хорошая серия статей по работе с CoreData
По многопоточке есть охренные говноязычные статьи, автор разбирает практически ВСЕ, чего даже не найдешь на медиуме
https://habr.com/ru/post/320152/
https://habr.com/ru/post/335756/
Полезные ресурсы:
https://www.raywenderlich.com/
https://www.appcoda.com/
https://www.bignerdranch.com/books/ios-programming/
Видео для ленивых:
https://www.udacity.com/courses/ios
https://www.youtube.com/user/AlexSkutarenko
https://developer.apple.com/videos/
Перевод документации базовой
https://swiftbook.ru/content/
Материал на английском:
Очень подробно все рассказывает и расписывает
https://rutracker.org/forum/viewtopic.php?t=5445071
Devslopes. Начинал с них, рисуют приложения при тебе, особо не углубляются в детали, но как пример можно посмотреть. Сам к ним вернусь, как побольше поучу.
https://coursehunters.net/course/udemy-ios11-swift4
прошлый https://2ch.hk/pr/res/1868577.html
Стартовый пинок можно получить в книге Cocoa Programming for Mac OS X, остальное в доках и на SO. Но нахуя тебе в 2к21 AppKit я вообще не понимаю? Я писал для себя пару утилит несколько лет назад, еще до sui, ощущение каловые, хоть и во многом похоже на UIKit, сейчас есть SwiftUI, есть каталист, в конце концов даже электрон заюзать удобнее.
Ну, про премии я не пиздабол
Ты действительно не слыхал о конских премиях в Сбере? У меня бывший сосед там работает каким-то говноинженером в отделе, где они занимаются настройкой и тестированием терминалов, так у него премии 300к. Хотя пиздец, там тип бухвает, долбит и лютый распиздяй
> сейчас есть SwiftUI
Сырой как говно из жепы, последний раз пробовал — у меня хэловорд с навигейшенлинком внутри лэйзистека просто тупо сегфолтился на маке, нормальная работая на айоси — и я бы советовал отложить его ещё на годик а лучше два-три, лол.
>есть каталист
Сырая параша, из которой аппы вылезают хуже чем кросплатформенная залупа на Qt.
>в конце концов даже электрон заюзать удобнее
Если хочешь сделать хуяк-хуяк — конечно, да. Если хочешь сделать красиво — нет.
другой анон
Оба пиздят.
Факты:
— В сбере есть премии (аналогично яндексу — зп выше 200-250 там нет, но у помидоров медиана где-то ~300к на руки). Но — это непредсказуемая хуйня, если копаешь говно в СБОЛе лопатой — то скорее всего будешь получать регулярно, если окажешься на каком-то другом проекте — будешь получать её по щучьему велению (а ещё твой проект могут закрыть нахуй одним днём как с беспилотниками недавно было).
Алсо, поговаривают что в сбере нереально получить промоушен — легче съебать и через годик вернуться если соскучился по большому зеленому хую;
— Если чел работал в сбере больше 2-3 лет — его опыт можно делить на количество этих лет, т.к. он скорее всего попукивал и гонял кофея всё это время — такая ориентировка ходит у рекрутеров последние полгода-год, поэтому не надо удивляться, когда какой-то челик из сбера не может найти работу (т.к. все как один хотят зп выше рынка помидоров, имея хард скиллы уровня мидла и аутдефтед стек);
— Если у тебя есть хотя бы 2-3 года опыта — тебя действительно будут регулярно звать, но есть одно но — звать хрюши на собесы. Как количество этих предложений пройти собес будут конвертироваться в реальные офферы — зависит от тебя.
Всё как в любом другом стеке. По факту, это не в айос сложно вкатиться, это в веб можно вкатиться будучи ебаным отбитком с тремя извилинами, в те же джавы/андроиды вкатываться +- так же по сложности (но рынок пошире), а в плюсы/графику/прочее байтойобство — сложнее.
>Скажу джависту, что он пиздабол и купил машину за фантики, а не за премию
Ну почему он пиздабол-то? Он на машину за 700к просто откладывал премии полгода флекся на и без того нормальную зп, это ты какую-то хуйню высрал. Хотя мб он тебе рассказал про 13-ю зп, а ты, пиздоух, решил что он миллиардер?
>Хуй знает, как в 2021 вкатиться в веб, будучи долбаебом, учитывая конкуренцию 1000 за место
Ну это конечно кек уровня треда "мы вам перезвоним". Туда берут вообще всех — если ты хотя бы 2 слова можешь связать в предложение — ты уже изи найдёшь работу. Без рофлов, недавно ездил в офис на синк, там фронты в столовке бомбили в стиле "бля ну не знаю я чем let от var атличаетца нахуй ани эта на сабесах спрашивают(99" — и это были, блядь, челы с 2-3+ годами опыта.
Я вообще хз какая там нахуй может быть конкуренция, если ты не можешь в 2к21 устроится фронтом — ты, нахуй, обезьяна, пиздуй фуры разгружать.
>>2016406
>а не бекенд
Ну, тащемта нихуя, какой нибудь ноджс/питоно-джанго/пхп-лараваль/итд макакой устроится тоже проще простого, хотя и чуть сложнее, чем фронтом потому что надо в соснольку уметь печатать)0.
>на иос меньше конкуренции среди вкатывальщиков
Ровно как и вакансий. Тащемта, не надо выдумывать, среди вкатышей нет никакой конкуренции, и быть не может — они просто никому нахуй не нужны, лол. По факту, пройдёт вкатыш или нет зависит от одного фактора — удачи (будет ли компании интересно инвестировать на несколько лет вперёд и понравится ли он собеседующим).
>надо в соснольку уметь
Открою секрет во фронте это надо тоже уметь, плюс у них там ебля с пакетами и зависимостями, 2 года и половина проекта деприкейтед. Ну и постоянно меняющиеся подходы к разработке, хотя в последнее время вроде все устаканилось Так что с фронтом есть свои особенности, хотя с другой стороны выучить вёрстку и вью вполне себе можно, я работаю с банком, но между делом изучил вью за пару дней, когда фронт макака заболела короной
>Notion
>Atom
Я хз как, но оказалось что из текстовых редакторов (очень требовательнын к мощностям программы по определению же) можно сделать такие лагающие уёбища.
Под "красиво" я имел ввиду не только вменяемый рендеринг. Без спору, электрон в плане, например, рендеренга шрифтов — явно не уёбище уровня Qt, но когда заходит разговор о перформансе...
Алсо, попробуй на этом говне своять, например, жесты как в Bear. Ой, ты обосрёшься же.
>VS Code
Ну только вот это более менее, но учитывая сколько туда въебали бабла — можно было под каждую платформу нативный запилить.
Ситуация такая. На горизонте появился заказчик с предложением по разработке мобильного приложения, соответственно под обе платформы. Конкретно у меня нет средств для разработки под iOS, но хотелось бы понять в какие примерно затраты встанет если обращаться к внешнему исполнителю.
Бэкенда никакого нет, приложение самостоятельное. Структурно состоит из одного списка и трех экранов содержащих детальную информацию по каждому элементу списка. Модель данных в БД - три сущности.
Я понимаю что описание крайне скудное, но в какие суммы могла бы встать разработка вместе с выдачей в сторе? Уже и сам не рад что ввязался в это все, слишком это все геморойно выглядит уже на ранних этапах. Может все таки от финальных сумм заказчик сам и отвалится
Опять забилдил в xcode - работает. Опять перетащил из папки - работает. Я не хочу тратить 100 баксов. Это все из-за сертификатов?
А нет, судя по всему и в xcode нe запускается.
У меня есть подозрение что я не закрыл апу на ночь и wifi был отключет, а она продолжала делать запросы и это как-то повлияло. Это не предусмотрено было. И все эти запросы вставали в очередь. Щито делать?
Поэтому, спрошу:
1) Стоит ли задрачивать ваш этот свифт. Разобью на подпункты:
а) Каково состояние платформы?
б) Какие перспективы у ЯП? На нем пилят хоть что-то кроме ссаных кнопочек на телефоны? Как к нему относятся в сообществе в целом?
с) Тяжело ли искать работы при перекате из других областей программирования?
г) Какие зарплаты у мидла? Сколько до мидла расти? Поясню: если ты не глупый и работал не на аутсорс галерах, то в том же вебе можно выйти на мидла через полтора-два года спокойно на своем стеке.
ж) Какие перспективы с перекатом и вообще какие компании любят свифтеров? Галеры/продукты, банки например?
public enum CustomError: Error {
case networkServerError(String)
}
получаю с сервера там саксесс, но с ошибкой
допустим
completion(.failure(.networkServerError(serverError.errorDescription))
И допустим дошло время до обработки
case .failure(let error):
как мне теперь вытащить именно стринг из этого енама чтобы когда запихиваю в строку не было "networkServerError:huypizda)
https://docs.swift.org/swift-book/LanguageGuide/Enumerations.html#
скроль до Associated Values
public struct ResultTypeDTO: Codable {
var result: String
var type: String
}
type у меня приходит типа one two three
Так вот, как я могу в этой структуре после парса, что когда дергаю дто, мне отдавало не one two three а другую стрингу допусим nickName firstName secondName
как мне правильно мапить?
я немного не разобрался с этой темой, с codingkey в ту сторону разобрался с а с этим в обратку нет.
Я хочу чтобы дто, когда парсило и видило одно значение, отдавало уже в класс другое.
Заранее спасибо за ответ.
Всё зависит от размера проекта конечно, но ради именно такого кейса я бы вообще посоветовал не заводить новые типы — у тебя это всё в один момент просто в пиздец какую помойку превратится. Просто ебани это говно JSONSerialization-ом в словарик и вытащи свои значения.
>Я хочу чтобы дто, когда парсило и видило одно значение, отдавало уже в класс другое.
А вот тут уже понял что нихуя не понял. Чего именно ты пытаешься добиться? Что-то мне кажется, что ты не в курсе, что можно генерируемый инициализатор написать руками.
напиши required init from decoder
внутри делай что-то типа
let value = container.decode(String.self, .key)
type = value == "1" ? "one" : value == "2" ? "two" : value == "3" ? ...
еще есть конструкция в свифте которая цифру превращает сразу в слово но я не помню погугли
>а я хочу когда буду парсить в дто и дергать затем дто чтобы вместо "1" бралось "svoyStringOne"
Тут нужно уточнение — что именно тебе нужно?
Если нужно описать цифры словами, то
https://developer.apple.com/documentation/foundation/numberformatter
и
https://developer.apple.com/documentation/foundation/numberformatter/style
с
>.spellOut
Если ты хочешь просто иметь типизированное значение — то можешь просто ёбнуть енам с такими RawValue и всё, т.е.:
enum Huita: String, Codable {
case first = "1"
case second = "2"
}
public struct ResultTypeDTO: Codable {
var result: String
var type: Huita
}
>но вообще не в курсе походу да, что мне читать?
https://developer.apple.com/documentation/foundation/archives_and_serialization/encoding_and_decoding_custom_types
До
>Encode and Decode Manually
доскролль и читай.
Т.е. чтобы когда я в preview задавал PreviewLayout.sizeThatFits у меня превью схлопывалось по размеру контента, а не на хуй пойми какие размеры. Есть идея конечно обернуть обертку над UIKit еще в один вью и передавать ему наверх размеры, которые вью верхнего уровня будет ставить через модификатор .frame обертке, но выглядит как костылек и не факт что сработает.
>Можно ли как-то через UIViewRepresentable задавать высоту и вообще аналог intrinsicContentSize у вью?
Погуглить?
https://sarunw.com/posts/intrinsic-content-size-in-swiftui/
>>2044481
Я короче вот чо хотел не городить (названия образные взял, суть понятна думаю)
то есть в мой дто там приходил стринг инт и я хотел чтоб дто уже само переделало в нейм сарнейм и прочее. образно чтобы я потом в кейсе не дергал лишние такие комбинации
case .success(let params):
if params.userField == "0" {
self?.currentField = "name"
} else if params.userField == "1" {
self?. currentField = "surname"
} else if params.userField == "2" {
self?. currentField = "middlename"
}
Для вью/вью контроллера луше делать свою ViewModel (не та, которая в MVVM), описывающую данные, отображаемые этой вьюхой и написать один раз extension на DTO, который преобразует твою DTO в нужную ViewModel, как бы не возникало желание вьюху сразу моделью конфигурировать.
Но вообще если на бэке у тебя цифры обозначают некое перечисление то логично и преобразовать эту цифру в перечисление в процессе парсинга. Чтобы эта логика делалась в одном месте, а не в N местах преобразования DTO во ViewModel.
Т.е. если брать пример этого господина >>2052075
то в DTO у тебя будет var userField: UserField вместо var userField: Int
А fieldName: String будет вообще во ViewModel
Ну давай высру тебе ответы на твой понос:
1) Как хочешь;
а) Нормальное, блять. Что ты хочешь услышать конкретно?
б)
>Какие перспективы у ЯП?
Никаких, свифт дипрекейтнут через пол года и пойдём всем тредом на мороз.
>На нем пилят хоть что-то кроме ссаных кнопочек на телефоны?
Ну, пилят. Игры там, ёблю с гпу, AR, можешь даже серверсайд ебануть если тебе нечего делать. Алсо, есть упоротые (вроде https://github.com/readdle) которые на нём кроссплатформу пилят (и айос, и андроид, и макос, и шиндовс).
Короче, что хочешь — то и пилишь, о чём вообще вопрос-то блять? Есть ли работа кроме окраски кнопок? Зависит от твоих скиллов, но есть.
c) Зависит от тебя. Если ты сидел хуярил на 1с — наверно сложно, иначе не особо.
г)
>Какие зарплаты у мидла?
У какого мидла-то? В дс разброс от 120 до 200 окладом, у всяких компаний есть ещё опционы/годовые премии/итд — кол-во бабла в месяц на руках зависит от конкретной ситуации.
>Сколько до мидла расти?
Я вот чуть больше чем через пол года веслания проходил собесы на x2 зп, хз через сколько ты прокачаешься. Будешь гонять кофея и работать по 4 часа в день — можешь и два года сидеть, будешь ебашить по 16 часов в день вместе с паралельными проектами для изучения других технологий — ввырастешь за пол года.
>то в том же вебе можно выйти на мидла через полтора-два
Ну если у тебя это заняло столько времени — тут будет примерно то же самое.
ж) Тебе лучше в грузчики податься с такими вопросами, маня. Все, кто пилит софт для iOS хайрят свифтеров, какой у них выбор-то? Ну галеры иногда по рн/флаттеру угорают, но их всё ещё сложно продавать и даже там царствует нативная разработка.
>>2052976
Пиздец долбоебина чсвшная. Я задал обычные вопросы, никаких вкатов тут еще не собирался устраивать, из обычного интереса.
А этот новый пролетарий двадцать первого столетия со своим плебейским мозгом раскукарекался про грузчиков, ебанутые вопросы. Почему все кодерки такие ебанутые? Ты же сука буквально поломойка, что ты выебываешься сидишь, дерьма кусок.
Да не почему, просто у нас есть две ветви упоротых — свидетели MVC и свидетели випера.
По факту, выбранных архитектурный паттерн нужен просто для того, чтобы разные люди в одном проекте придерживались одной структуры проекта и нейминга, грубо говоря это такой кодстайл на уровне файловой структуры и классов.
На всякие характеристики, которые им любят приписывать, вроде тестируемости/перфоранса/удобства по факту не влияют никак (могут только удобство портить, чем ближе к виперу — тем больше бройлерплейта надо высирать), это всё уже зависит от конкретного писаки этого кода и его скилла.
Короче, пробуй разные подходы и выбирай что нравится.
Хорошо что не знал про этот тред, когда вкатывался.
Спасибр, первый раз в mvc сижу
Ну меня и mvc устраивает ибо я пилю один сейчас и нет времени ебаться, другое дело что у меня даже вьюмодели нет, прямиком модель в контроллере обрабатываю. Но из-за этого получается каша со временем, контроллеры разрастаются.
>>2055467
А я вот именно с треда и вкатился два года назад, вот теперь видишь результаты.
>Но из-за этого получается каша со временем, контроллеры разрастаются.
1) Выноси всю логику что возможно в модель (запросы в сеть итд);
2) Дели контроллеры на контейнер и чайлд контроллеры (вместе с вью и моделями). Например, если у тебя на скрине есть 4 секции — ты для каждой можешь сделать свои модели, вьюхи и контроллеры и в контейнере тупо ими управлять.
Вжух-вжух — и у тебя нормальный мвц без жирных контроллеров.
>1) Выноси всю логику что возможно в модель (запросы в сеть итд);
Запросы в моделях? У меня сейчас так иммутабельные модели, запросы и подобная лабуда в промежуточных классах (это считается моделью?). Контроллеры слушают эти классы и обновляют вью. Вроде все хорошо даже тестировать можно, только иногда те самые промежуточные классы получются слишком жирными и не всегда получается их нормально разделить на более мелькие. Це норм подход?
Суть такова, я пользовался конструктором таблицы с гита. И это очень помогло в проекте все быстро собрать, но есть базовая задача о которой блять не задумался (кек лол)
Суть такова, у меня есть tableviewprovider
на основе которого строю табличку
Выглядит примерно так
var rows = [CellDescriptor]()
let pizdaRow = CellDescriptor(configuration: {
(cell: MyCustomCell) in
cell.huypizda = "huy"
}, selection: {
mycustomection()
вот тут я буду выделять ячейку, а с других как снимать еслиу. меня три таких дескриптора
})
rows.append(pizdaRow)
ну и далее роу в таблицу отдается и само все строится
Все бы ничего но теперь я задумался, а как мне блять теперь выделять одну ячейку а с лругих деселект делать. не через делегаты ж обратно, в обычной таблице я бы просто по индекс роу проходился а тут теперь хуй знаешькак
Бэкендщик, задолбался и устал, хочу поменять стек, вкатиться во фронт или мобилки, рассматриваю ios. Скажите, чо по оборудованию минимально купить(какой комплектации макбук нужен, что свободно мог крутить докеры и прочее, вдруг я не смогу и обратно на бек придется идти), чтобы комфортно работать. Будет мне помощь в выборе. Прошу серьезно ответить, а то чот я совсем депрессую.
Хуле там обсуждать если показали по вершкам для неайтихолопов? когда будут технические ролики тогда и имеет смысл обсуждать. Не понятно даже как там разработка на айпад будет работать, не икскод же портировали, а какую-то залупу сделали.
Про асинк-авайты и акторы уже давно все знали, кто не в бункере.
Хз что там обсуждать. Единственное, на обсуждение чего тянет — ЭТО УБЛЮДСКИЕ ТИЗЕРЫ БЛЯДТ НАХУЙ. НУ ПОЧЕМУ НЕЛЬЗЯ ВЗЯТЬ И ВЫЛОЖИТЬ СЕССИИ СРАЗУ, А НЕ ТЯНУТЬ 10 ДНЕЙ, УБЕРИТЕ НАХУЙ МАРКЕТОЛУХОВ ОТ РАЗРАБОТКИ НУ ПОЖАЛУЙСТА!1
Хз, я один такой сумасшедший или нет? Дико бесят тизеры и прочая маркетинговая деятельность, уже блевать готов. На ютубе когда вижу видос с "премьерой" — закидываю в список посмотреть потом и выжидаю несколько дней чтобы не способствовать конверсии за подкормку этим говном.
Да ладно если бы просто переписать надо было. Так нет же — он же пришит к системе гвоздями, тебе без вариантов надо будет поддерживать 2-3 варианта одного и того же кода, даже если у тебя максимальнозадранный минимальный таргет.
>>2061633
>Тебя после свифта это удивляет?
Свифт даже близко не в таком раковом положении был.
Во-первых — он не был пришит к системе. Запускаешь конвертацию проекта — и в 9 из 10 случаев всё. Если конечно компилятор не начинал сегфолтится на новых фичах. И кучу говна можно не поддерживать.
Во-вторых — поломка апи, это в первую очередь, семантика, а не синтаксическая конструкция. И править такую хуйню сложнее.
Синьоры помидоры, сколько щас норм зп в деревнных в дс?
И скок у тимлидов? А то постоянно хантят хрюши и я хз сколько просить, сколько не называю -- все говорят, что типа "ок", а значит прошу мало.
>Синьоры помидоры, сколько щас норм зп в деревнных в дс?
Если ориентироваться именно на внутренний рынок — от 200 до 300 где-то.
Если ориентироваться на всё варианты (а в рублях иногда платят за работу на буржуя) — то можно и 400к найти.
>И скок у тимлидов?
Как и у синьйоров — может быть разброс в 2 раза, как выторгуешь.
>А то постоянно хантят хрюши и я хз сколько просить, сколько не называю -- все говорят, что типа "ок", а значит прошу мало.
Ну просто проси каждый раз больше, когда начнут прям совсем морщится — тогда ты и нащупал потолок.
>Я так понял тут полумертвый тред
>Сука уже 3 дня не могу понять
Полумёртвый, судя по всему, только твой мозг.
>Одни пишут что можно, но xcode говорит что не может найти девайсы и поэтому не может создать профиль.
Так ты собрать в тф пытаешься или запустить на девайсе?
То есть по-другому вообще никак? Просто хотелось бы найти хотя бы ментора, потому что самостоятельно какое-то говно получается. Допустим с тем же uikit не особо понятно. Сначала элементы интерфейса, потом жизненный цикл вьюконтроллера, а дальше… а дальше что? В смысле понятно, что надо изучать, но вот как с помощью этого делать приложения не особо понятно. Допустим, я хочу сделать клиент двача. Как прикрутить запросы к апи из приложения? В том же жс это делается легко, а тут не особо понятно
>7 месяцев опыта, 100+ разосланных резюме, 6 компаний отозвалось за неделю, 3 собеса, когда меня позовут грести?
7 месяцев опыта на курсах? Ну тогда никогда.
>Junior to middle
Пчел, если ты за несколько собесов везде обосрался — просто прими то, что на джуна-то хуёво тянешь.
>знаю swiftui, но не знаю uikit.
Реально походу жертва курсов. Все треды же толдычут — хочешь работу в ближайшие 2 года — учи, сука, UIKit. И после двух лет ты совсем не зная его тоже никому не будешь нахуй нужен — SwiftUI это же ебучая обёртка над ним в текущем своём состоянии.
>>2066841
Ну ставишь цель и гребёшь до неё.
>В том же жс это делается легко, а тут не особо понятно
Ну лучше в жс вкатится, если не можешь даже загуглить как делать HTTP-запросы. Потом парсишь модель, делаешь дифф какой нибудь хуиткой и применяешь его к вьюхе (если похуй на таргет — NSDiffableDataSource) и данные у тебя в коллекции, можешь взять пирожок и написать в резюме что ты ждун.
>Если так нужно с видосиков начать есть курс от стенфорда
Правда новые курсы от стендфорда уже на SwiftUI перевели, им ровно как и инфоциганам интереснее побыстрее прочитать программу, а не ввести тебя в индустрию, так что именно по вёрстке лучше посмотри старые версии.
7 месяцев пилил апку для соцсети приятеля за 25к. Никаких курсов не проходил. Только stack overflow.
Тредов, которые толдычут не читал. Когда начинал, прочитал: вот два инструмента: sui для быстрой разработки и uikit для медленной масштабной.
Курсов не проходил, денег не платил.
На собесах еще не известно обосрался ли. Предупреждали перед собесамии, что резов ждать неделю-две. Ждумс...
Полностью от uikit не отказываюсь, опыта с ним нет. Но граблей с велосипедами на sui пособирал, так что не против чего-то более надежного. Другое дело, учить кит хотел бы уже по ходу работы. В остальных вопросах на мидла тяну, не ошибаюсь.
Да не пишешь ты ни на том, ни на другом, иначе бы знал, что как только проект становится сложнее хело ворда, начинается велосипединг оберток над юайкитом. Попробуй диплинки нормальные запилить на ванильном свифтюае или на собес сходить, где тебя попустят джуновским вопросом как айос обрабатывает касания, и выбор между свифтюай и юайкит не стоит, он стоит между юайкит и свифтюай+юайкит
Диплининки делаются через onOpenUrl в три строки. Канешн на ките надо знать как обрабатываются касания, когда в юае это делается по onGesture. Как бэ на 80% потребностей любой компании тут хватает. Другое дело пердуны вроде тебя тормозят прогресс ебанутыми критериями оценивания.
А то, что из умирающего кита еще не вынесли на гитхаб в подключаемые решение реализовывается через репрезентебл без выебонов в нормальной архитектуре, а не MVC.
>когда в юае это делается по onGesture
Ну давай, расширь область тапа без распидорашивания лэйаута и лишних слоёв, или ещё лучше — попробуй ёбнуть оверлей для всяких тостов и прочей "плавающей над экраном" хуйни. Ой, для этого же надо понимать как тапы работают в юайките.
>Другое дело пердуны вроде тебя тормозят прогресс ебанутыми критериями оценивания.
Какими ебанутыми-то? Свифтуи — хуйня для хэловордов, и то, что для того, чтобы туда завезли хотя бы коллекции потребовался ещё целый год как бы намекает, что даже в эпле его не оценивают сильно выше планочки "для долбоёбов поиграться на айпаде".
Хочешь кастомные кнопочки для свайпов в таблице? Пошёл нахуй.
Хочешь узнать оффсет скролла? Ешь говно с кучей магии, отъёбывающими типами в IDE, лагами и пидорасящимся лэайутом.
Хочешь сделать префетчинг? Жрёшь всё что было в прошлом пункте x2.
Хочешь поскроллить сам? Жрёшь всё что было в прошлом пункте x3.
Хочешь сохранять позицию скролла при частых апдейтах/тоггле клавы? Идёшь нахуй просто.
Хочешь нормальный перформанс на больших объёмах данных (например, банальный чатик) — идёшь нахуй. Мало того что дифф пришит к мэинтреду, так ещё забахать что нибудь в стиле sliding data source вообще нереально — у тебя просто ебаные звёздные войны начнуться на экране.
Хочешь нетривиальный лэйаут на 60 фпс? Ирл хотя бы на 30, лол. Идёшь нахуй и ждёшь новых девайсов, способов оптимизации просто _нет_.
Хочешь апи, который не будут ломать на каждом WWDC, и не хочешь поддерживать по 4 версии одного кода? Ну тогда точно мимо со свифтуи.
Хочешь нормальную навигацию из коробки, а не писать костыли начиная новый проект? Тоже мимо.
Хочешь возможность катить в прод новую кнопку (лол) без вероятности получить 30% крешрейт на следующий же день на половине девайсов, из-за новой анимашки? Пиздуй учить UIKit.
Можно ещё 1000 и 1 такой доёб написать, в SwiftUI же так всё — пытаешься написать что-то кроме хэлловорда — просто идёшь писать на уиките нахуй.
Ладно, давай конструктивно.
>Ну давай, расширь область тапа без распидорашивания лэйаута и лишних слоёв, или ещё лучше — попробуй ёбнуть оверлей для всяких тостов и прочей "плавающей над экраном" хуйни. Ой, для этого же надо понимать как тапы работают в юайките.
Расширить область тапа можно добавив слой с почти поной прозрачностью. Есть проблема - есть решение. На фпс не скажется.
>Эпл третий год посвещает юаю целую сессию. И пытаются завлечь на него аудиторию через простоту.
>Хочешь кастомные кнопочки для свайпов в таблице? Пошёл нахуй.
iOS 15+
>Хочешь узнать оффсет скролла?
ScrollViewReader - в т.ч. работает на табличке.
>Хочешь сделать префетчинг? Жрёшь всё что было в прошлом пункте x2.
Префетчинг за тебя делает swiftui в коллекшн вью или таблице или лэйзи стаках
>Хочешь поскроллить сам? Жрёшь всё что было в прошлом пункте x3.
>Хочешь сохранять позицию скролла при частых апдейтах/тоггле клавы? Идёшь нахуй просто.
ScrollViewReader
>Хочешь нормальный перформанс на больших объёмах данных (например, банальный чатик) — идёшь нахуй. Мало того что дифф пришит к мэинтреду, так ещё забахать что нибудь в стиле sliding data source вообще нереально — у тебя просто ебаные звёздные войны начнуться на экране.
По началу было больно, но потом начал пользоваться ASCollectionView. работает как швейцарские часы. Портировано с кита(как однажды будет и все остальное). Кроме того, есть несколько библиотек на диффинг.
> Хочешь нетривиальный лэйаут на 60 фпс? Ирл хотя бы на 30, лол. Идёшь нахуй и ждёшь новых девайсов, способов оптимизации просто _нет_.
Не совсем понял, что ты понимаешь под нетривиальным лейаутом, но проблем с производительность даже с параллаксом на блюре при правильной настройке не испытывал.
>Хочешь апи, который не будут ломать на каждом WWDC, и не хочешь поддерживать по 4 версии одного кода? Ну тогда точно мимо со свифтуи.
iOS 15 вроде ничего старого пока не изменили, ток нового добавили.
>Хочешь нормальную навигацию из коробки, а не писать костыли начиная новый проект? Тоже мимо.
import NavigationStack
>Хочешь возможность катить в прод новую кнопку (лол) без вероятности получить 30% крешрейт на следующий же день на половине девайсов, из-за новой анимашки? Пиздуй учить UIKit.
Тесты..тесты...тесты... и прямые руки
>Расширить область тапа можно добавив слой с почти поной прозрачностью.
>На фпс не скажется.
Да, дебил, ни разу не снизится, пиздуй читать как работает рендеринг, что такое color blending и смотреть на глубину своего дерева вьюх.
>iOS 15+
Ахахах, я чего-то орнул. То есть ты на полном серьёзе предлагаешь не просто друпнуть 20% аудитории задрав таргет до 13-шки, а задрать его до версии, которая выйдет через пол, блять, года? Борщехлёб, попустись.
> ScrollViewReader
Опять задрали таргет.
>ScrollViewReader - в т.ч. работает на табличке.
Тащемта, он не умеет читать позицию, маня. Разве что скроллить помогает.
А GeometryReader внутри ScrollView как пидорасил лэйаут и тригеррил лаги, так и продолжает.
>Префетчинг за тебя делает swiftui в коллекшн вью или таблице или лэйзи стаках
Да нихуя оно не делает, я же не о том чтобы ячейку чуть пораньше рисовать (лол). Вот я хочу чтобы при нормальном интернете следующий батч контента тянулся когда юзер доскроллит до 0.6 экрана до низу, а на хуёвом за 2 экрана. Вот ты вроде бы даже решение предложил — iOS14+ и ScrollViewReader (но на самом деле обосрался, не открыв доку по этому ридеру, кек), а тут бац — и ячейки сильно разной высоты (самый простой пример — опять чат).
>По началу было больно, но потом начал пользоваться ASCollectionView.
>работает как швейцарские часы.
В то же время:
>заворачивает каждую ячейку в ASHostingController<AnyView>(AnyView())
>при реюзе добавляет/удаляет контроллер из иерархии
И это я только ячейку открыл, это же кек какой-то. Айпад на м1 видимо ради такого говна придумали — иначе эта хуйня даже 30 фпс будет мало где показывать.
>Кроме того, есть несколько библиотек на диффинг.
Которые в хуй не впёрлись потому что всё есть в iOS 13?
>Не совсем понял, что ты понимаешь под нетривиальным лейаутом
Потому что ты нихуя и не писал сложнее своего хэлловорда.
>iOS 15 вроде ничего старого пока не изменили, ток нового добавили.
Там добавили фичу диффа по апи — посмотри сам.
>import NavigationStack
Тогда уж ждём
>import leftpad
и вытягиваем половину интернета на каждый пук.
>Тесты..тесты...тесты... и прямые руки
Они тебе, конечно же, помогут справится с тем, что SwiftUI сырой как хуй пойми что, и устраивает зоопарк поведений на симуляторах и разных девайсах. Он блять у меня на хэловордах показывает разный результат в симуляторе и на девайсе, а когда попробовал скомпилировать на мак — навигейшенлинк в связке с лэйзистеком просто крашит нахуй всё без вариантов починки, вот чем тебе помогут тесты когда 2/3 крашей будет из-за какой-то внутренней хуйни самого SwiftUI?
Давай-ка ты пару лет пораскатываешь и поподдерживаешь это говно, а потом будешь высирать своё авторитетное мнение вкатыша. Ну, точнее уже не будешь — пожрёшь говна и станешь человеком, когда можно было этого не делать.
>>2069911
Ну как не изменится — будет скролл с системной физикой, и из-за этого не будут опускать оценки в сторе в 0, лол.
Они вообще про одно и тоже — про декларативный UI, и все проблемы у них одинаковые — это следствие этой самой декларативности.
Если собираешься разрабатывать именно iOS — то вроде как проблем уже почти ни у кого не возникает. Если живёшь в ДС, то в том же store77 или ещё каком нибудь сером магазе можно взять за 104.
>>2085078
Там уже даже линукс для M1 анонсировали, скоро не то что проблемы с бэком, скоро кластеры из миников на M1 собирать будут, кек.
В общем вопрос, есть стек вью, который кладу в ячейку, там мне пачками надо много лейблов положить, кладу я их так
func addTextLabel(text: String) -> UIView {
let textLabel = UILabel()
textLabel.text = text
return textLabel
}
затем
пачкой делаю
StackView.addArrangedSubview(addTextLabel(text: "ХУЙ"))
Когда первый раз отрисовывается, то все ок. Но затем когда открывается модалка поверх или другое окно, закрывается и возвращается обратно
То лейблы все к ебеням сжимаются по высоте, я уже хуй знает что делать
все методы заполнения пробовал в стеквью
Братан лушче в веб/бэк вкатывайся(руби/nodejs). Серьезно блядь. Тут ловить нечего, ну руби/nodejs ты хоть работу точно на удаленке найдешь. А тут хз. Есть два говна - что UIKIt с уебищными констрейнтами, что еще худший SwiftUI. Баги симулятора, сам Xcode еще та параша. Ну и конечно же копаться в ojective-c/с надо уметь. Советую просто в качестве хобби если надо пилить приложухи для себя, но вкатывайся лучше во что то более попенсорсное и там гед работы больше.
>Ну ты хоть показал бы как стеквью инициализируешь и как его в родительской вьюхе крепишь.
есть пропертя в стеквью
private var StackView: UIStackView = {
let stackView = UIStackView()
stackView.distribution = .fillEqually
stackView.spacing = 12
stackView.axis = .vertical
stackView.translatesAutoresizingMaskIntoConstraints = false
return stackView
}()
Есть метод ячейки, configureWith(title: String) (который в таблице вызываю)
там вызываю setupLayout()
где уже настраиваваю лейаут.
там есть контейнер, куда многие элементы кладу
contentView.addSubview(containerView)
containerView.addSubview(StackView)
Затем как писал
StackView.addArrangedSubview(addTextLabel(text: "ХУЙ"))
ну дальше активирую констрейнты
StackView.topAnchor.constraint(equalTo: titleLabel.bottomAnchor, constant: 6),
StackView.leadingAnchor.constraint(equalTo: containerView.leadingAnchor, constant: 44),
StackView.trailingAnchor.constraint(equalTo: containerView.trailingAnchor, constant: -20),
Я не понимаю почему после того как пушнул новый вк или показал, затем вернулся на вью - ВСЕ ПО ПИЗД
Что, кстати, нужно знать для полноценного вкатывания кроме самой документации свифта? Uikit, Coredata, JSON, таблицы, типы архитектур приложений (MVC, MVP), git, многопоточность, а что еще?
>Какой учебник или курс можно проходить параллельно, чтоб он был с упором на практику? Желательно чтоб там объяснялось прям ВСЕ, что нужно для работы с айос разработкой, а не просто "давайте понатыкаем кнопочек и будем кайфовать от няшности нашего приложения в симуляторе", из чего состоит 90% всех курсов на ютубе.
Пчел, скажем прямо — ты немного ахуел. Берёшь и делаешь свой простенький проект, потом ещё один посложнее, потом нормальный — и вот тебе этот практический опыт.
>а что еще
Objective-C, ARC (когда втыкать @autoreleasepool в свифте знаешь? а нахуя withExtendedLifetime нужон и что такое isKnownUniquelyReferenced? м?), Responder Chain, RxSwift, SQLite, Combine, Realm, SwiftUI — разместил с сортировкой по важности. Если всё это задрочишь — любой собес пройдёшь, но лучше изучи первые 4-5 пунктов (на первом сильно не задерживайся) — и пиздуй по собесам.
Так дефицит-то среди программистов, а не отсталых челов косящих под них.
>>2095664
>в первый раз год продердался на джуновской позиции
Кстати, я тоже был в такой ситуации, правда с другой стороны — когда не сильно дрочил чела на собесе и одобрил его кандидатуру, а потом ссал признаться что я обосрался и уволить его нахуй ведь в курилке с ним пиздели каждые пару часов! кекус.
А сейчас начал дрочить на собесах, и стараться максимально быстро отсеить тех, кто прошёл.
Конечно.
А лучше всего чтобы код был открыт — это позволяет пропустить тестовое задание. Мне тоже впадлу что-то выдумывать и потом проверять эту хуйню, но когда есть 2 ровных чела или просто нет уверенности после собеса (а после собесов именно со ждунами её почти никогда нет — все неопытные челы жутко очкуют и зачастую из-за этого фейлят вопросы, которые прекрасно знают).
>Конечно.
Хотя тут стоит оговорится — однокнопочная хуйня в зачёт не идёт, и от приложения/кода ожидается хоть какое-то соответствие лычке. Если от ждуна ожидается куча говна, но как-то работающая, то на позиции выше работы в стиле "куча говна" лучше скрывать.
Это вроде бы очевидно, но не для всех: как-то собесил синьйора с 5 или 6 годами опыта, у него в резюме была графа "свои проекты", спросил под конец "а покеж" — он показал — а там какая-то невнятная звонилка на 02 (буквально блять, экран с кнопкой "сос") и спиннер-генератор чисел (лол). В резюме, если что, было неиронично написано "от 300к".
На собесе не спросят, но знаний ожидают: реактивщина, кит кит кит, работа с сетью чтобы джейсоны или подобное ковырять, как данные туда сюда разными способами по приложению гонять, аки писюн.
Обычно, этап с хрюшей проходил без труда, потом было техническое, там тебе никто не скажет где ты ошибся (обычно), потом ожидание и потом часто говорят, что лошок кококо не хватило опыта. Прошел 10 собесов, как говорили друзья, результативность действительно оказалась 10%.
Самое любопытное, что хрюши начали особо активно писать, когда я расписал как делал всякую не касающуюся айоса хуету в универе. Так нарастил циферку опыта работы до 1.5 лет. Плюс расписывайте петпроекты, которые на курсах или сами делали в деталях, им реально интересно. Еще на собесе спросят так что не пиздите много, чтобы не обосраться.
Тут на собесе даже технических вопросов не задали, тупо посмотрели резюме, гитхаб разраб андроид и разраб Бека и техдир. Говорят, не брали неадекватов и стариков(30+) им в корпорации надо.
Swiftui все ещё люблю, идите все нахуй, там быстрее всё делается.
Подскажите, насколько сложно к вам закатиться после джавы\андроида?
Объясню. Во-первых андроид - уебищная экосистема, конечно вряд ли она куда-то денется, но блять, какие же пидарасы писали все эти либы и обмазывались лайфсайклами ояебу. Хочется посмотреть как у вас.
Ещё одна причина - все каттин эдж технологии вероятнее всего будут появляться сначала для Иос-бояр, всякие там АР ну и не только..
any thoughts?
Спасибо.
>С профильной корочкой
Не взумай это спиздануть на собесе, дружище!
https://twitter.com/dkreshikhin/status/1417923911468175363
Вышка это большой минус, она не показывает действительно ли человек горит делом или мамка заставила поступать сычину ШОБ БОХАТЫМ ПОГРОМИСТОМ СТАЛ. Предпочтение эйчар отдаст старшему соискателю с онлайн курсов, такой человек уже опытный и знает чего хочет
>заставила поступать сычину ШОБ БОХАТЫМ ПОГРОМИСТОМ СТАЛ
Пиздос у тебя манямир, когда я поступал ИТ вообще было не в почете. Маменька вот грустила что я не поступил на нефтегаз. А папка наоборот рад был, думал что закончу примат и пойду в шарагу матан читать, по его мнению это престижно пипец как.
мимодед 31годик
Ой, сколько уже там кроссплатформ выебать собиралось. Кроссплатформы хороши только для быстрого создания MVP. После получения финансирования обычно любой стартап тут же нанимает целые отделы нативщиков, и всё пилится уже нативно. Единственное, что имеет место быть - это единая бизнес-логика, на каком-нибудь Kotlin Multiplatform, а то и на С++. Для UI и OS-зависимых вещей же всегда будет нативный код.
Ну как-то хоть бы конкретизировал вопрос. В целом язык как язык, где-то со своими плюшками. Чего-то прям проблемного и больного не могу вспомнить, в принципе. Сейчас ещё async/await повезут - вообще заживём. Но не сразу, потому что вроде как обратной совместимости не будет.
https://twitter.com/joshuaisgross/status/1415099495285608453
Ну да, именно это. Я написал же, что в курсе про обратную совместимость.
>>2106110
Так ну если я на нём программирую не первый год, зарабатываю на нём, и никуда не перекатываюсь - то мне всё норм. Единственное, что из проблем могу вспомнить - это ёбаный Xcode, который то подсветку и автоподстановку проебёт, то ещё какого говна в штаны подкинет. А сам язык норм.
Свифт входит в тройку языков где есть настоящие дженерики. Правда есть проблема с рекурсивными конформансами, например у коллекции есть сабколлекция, которая получается при слайсе этой коллекции, но эта коллекция должна быть той же коллекцией что и коллекция из которой её отрезали, но этого не происходит. Например мы не можем написать рекурсивную функцию, которая отрезает по кусочку от входного массива без инициализации нового массива. Сейчас все сошлись на том, что вычисление канонического типа неразрешимо на свифте. Отчасти это связано с излишне сложной системой протоколов. Например развитие дженериков в C++ сейчас замерло на этой точке, когда от этой излишней сложности хотят отказаться и придумать что-то полегче.
Вау. Спасибо за развёрнутый ответ.
Я вижу ты разбираешься. А как обстоят дела с написанием кастомных анимацих? Ну например много бойлерплейта писать приходится, чтобы подвинуть кнопку из одного места в другое? А если это анимация при переключении скринов?
> Ну например много бойлерплейта писать приходится, чтобы подвинуть кнопку из одного места в другое?
Вообще минимум, легко и просто.
> А если это анимация при переключении скринов?
Ну там чуть сложнее с Transition'ами, но тоже мануалов море, как и готовых решений.
> А как обстоят дела с написанием кастомных анимациях?
По разному, например с анимацией таблиц всегда было много боли, всё время что-нибудь подпрыгивает, даже у Сбера в приложении есть скачущие ячейки. Что-то простое и широкоиспользуемое пишется , как сказал анон сверху, легко. Если нужна сложная кастомная анимация то всё зависит от степени кривизны рук. Чем руки прямее тем дальше ты уйдёшь, в какой-то момент даже начнут появляться эффекты.
Многое есть в коробке. Для обработки изображений, о которых ты говоришь есть довольно неуклюжий но в то же время мощный фреймворк Core Image. Чего нет в коробке но то что очень нужно на галерах всегда можно откапать в разной степени васянистости подах. В общем выбор довольно разнообразен.
Понял. Хорошо
Наверно последние вопросы задам да пойду.
Я так понимаю Разработка на свифте сильно привязывает? Я имею ввиду нужно заплатить за мак, чтобы пользоваться на нём xcode и ios simulator, купить подписку membership, чтобы выкладывать продукты в apple store и т.п.
Сильно ли карают сами Apple при публикации приложения? У них ведь есть требования к дизайну и функционалу, насколько я знаю. Дотошно ли проверяют приложение при публикации. Что делают обычно, если много раз не принимают публикацию?
> Я так понимаю Разработка на свифте сильно привязывает?
Да
> Я имею ввиду нужно заплатить за мак, чтобы пользоваться на нём xcode и ios simulator, купить подписку membership, чтобы выкладывать продукты в apple store и т.п.
Всё так
>Сильно ли карают сами Apple при публикации приложения? У них ведь есть требования к дизайну и функционалу, насколько я знаю. Дотошно ли проверяют приложение при публикации.
Дрочат за несколько вещей. Краши, приватность, непонятность что надо делать.
> Что делают обычно, если много раз не принимают публикацию?
Переписываться с комиссией. Обычно всё в итоге публикуют
Типы которые имеют asociated types нельзя присвоить в переменную и вообще использовать как конкретный тип, только как type constraint(гугли что такое). Раньше на любом собеседовании питушки усирались доказывая что это сделано не из за сложностей в реализации, а что я не понимаю свифтовые генерики. Сейчас уже есть proposal и вроде даже реализация, снимающая это ограничение. В следующую версию швифта фичу подвезут.
Пиздец ты даун, и где он?
https://github.com/apple/swift-evolution/tree/main/proposals
Уебывай из треда, отродье
Извини, не тебе
Нет, пусть остается. Это же не он быканул на ровном месте, а потом не смог по своей же ссылке найти упоминание экзистенциальных типов и теперь пытается строить хорошую мину в обосранных портках. Давай лучше ты съебешь и больше не будешь тут отсвечивать
Да что-то не могу придумать, что бы такое сделать, чтобы профит был. Есть идея обучающего приложения, но там не факт, что оно кому-то вообще понадобится, и в реализации базы данных сложновато. Уже месяц на него потратил, еще около парочки точно понадобится. А люди вроде вообще какое-то однодневное говно клепают и бабки гребут. Как так?
Первая мысль: "Что, блядь, они сделали с коннектами? Что за свистелок-перделок навертели?" Ну это всё хуйня, я многие изменения в своё время там успел застать, постепенно ко всему привыкаешь.
Но, самое главное, большинство работ на нативную разработку тупо пропали. Теперь 95% заказов — это RN/Flutter. Пиздец, когда и в честь чего такой переход произошёл? Причем ведь на удаленке нативных вакансий всё ещё дохуя, это именно на апворке так.
> Теперь 95% заказов — это RN/Flutter
Потому что на апворке (елансе) ищут тех, кто сделает MVP за малый прайс, и на качество кода поебать, потому всякие индусы и пакистанцы там и варятся. Как только MVP выстрелило, и нашло венчурные или ещё какие инвестиции - набирают уже штат нормальных удалёнщиков-нативщиков. Срыночек, хуле. Либо за копейки делаешь мультиплатформенный MVP, либо ищешь нормальную удалённую работу, сейчас нативщиков гораздо больше, чем было в золотые годы (с первой публикации iOS SDK лет 5-7).
Чел... твоя идея что работа на апворке - это клепание мвп за минимальный прайс не выдерживает никакой критики. Там есть "нормальные удалёнщики" и челики с 10к часов и более. Весь крупный энтерпрайз и серьезные проекты набирают топовых фрилансеров через приватные объявления, либо через апворковских хрюш прямо на твой емейл. Простое быдло никогда не увидит таких инвайтов. Если ты не видишь - значит ты не настолько топовый.
>>2110436
>Ещё 3-5 лет назад
Лол. Жаль ты ещё не через 10 пришёл. И удивлялся бы, а чё всё так изменил. Чел, это жизнь. Пять лет в программировании - это почти вечность.
фрилансер-с-апворка
Дядь, ты чё, рофлишь, это просто обычный job posting, пусть и закрытый ото всех. Он на даёт тебе никаких особых преимуществ при апплае, тебе так же нужно писать пропозал и всё такое, а не то, чтобы тебе работу прямо в руки всунули. Сколько тебе таких инвайтов приходит, один в месяц максимум? И ты хоть раз устраивался по нему? И кстати, не факт, что это удалёнка с нормальными условиями, а не найм на галеру какую-то.
> Лол. Жаль ты ещё не через 10 пришёл. И удивлялся бы, а чё всё так изменил. Чел, это жизнь. Пять лет в программировании - это почти вечность.
Ну я с 2016 до 2019 нормально фрилансил и ничего особо не менялось, всегда можно было без особого напряга найти себе проект под нативную разработку, прям вообще никаких проблем с этим не было, дольше месяца без работы не сидел. А сейчас буквально за год, пока меня не было, всё так сильно изменилось, вот и удивляюсь.
> твоя идея что работа на апворке - это клепание мвп за минимальный прайс не выдерживает никакой критики
Чувак, я в контексте погромирования под iOS говорил, ты же несёшь сюда совершенно другие области, не надо так. Я говорил конкретно про мобильную разработку, и конкретно про iOS. Ну и да, исключения есть всегда, но чаще всего среди мобильщиков там ищут как раз исполнителей на MVP за мин. прайс, потому и в приоритете сейчас мультиплатформа.
>А в чем прикол этой хуйни вместо нормальной удаленки?
Это и есть удалёнка. Только чуть больше степеней свободы.
>>2110495
Всё зависит от прокаченности твоего профиля - круче баджи + больше наработанных часов = лучше инвайты.
>это просто обычный job posting, пусть и закрытый ото всех
Это тебе так кажется. Энтерпрайз клиенты - это самый сок и голубая мечта любого фрилансера. Там бюджеты больше раз этак в 5-10.
>>2110496
Это мелочь, мне такие каждую неделю приходят. Я говорю про реально большие контракты, с бюджетами типа $25к.
>>2110508
Да не важно. Меня как-то не интересует мобильная разработка. Ну окей. Пускай будет так, как ты говоришь. Всё равно попахивает пиздежом. 7200 вакансий под ios и везде прям mvp сплошные? Да ладно? Короче, пускай это будет на твоей совести. Не хочу в это вникать, да и похуй мне.
>Это тебе так кажется. Энтерпрайз клиенты - это самый сок и голубая мечта любого фрилансера.
А какой прок во фрилансерстве тогда? Легче же просто устроится сразу в пару компаний на удалёнку.
>>2110529
>7200 вакансий под ios и везде прям mvp сплошные?
Около половины будут мвп, ещё треть всякая хуйня (вроде обновить библиотеки, у миня ни собираица(9) и остальное — уже нормальные проекты вперемешку с неадекватами.
Тащемта, нормальный фриланс судя по всему есть только во фронте. Ещё куча вакансий "фулстеков", но чего-то я не одного нормального "фуллстек" бэкэндера, как и "фуллстек" фронтендера не видал.
>А какой прок во фрилансерстве тогда? Легче же просто устроится сразу в пару компаний на удалёнку.
Пару компаний ты не осилишь, я тебе сразу говорю. Даже 30-40 часов в неделю - это очень тяжело. Если только ты супер-трудоголик, можешь 10 часов в день без перерыва работать.
Так-то да, я согласен что удаленка на заграничную компанию финансово выгоднее чем фриланс. НО! Здесь есть чисто технический момент. У нас с США разница около 10 часов, значит ты будешь работать поздно ночью. Компании более жестко контролируют отработанное время. Там не получится как во фрилансе по 30 минут в день работать, там нужно железно часа 3-5 отрабатывать. И почти вся удаленная работа анально огорожена от иностранцев. Устроиться намного сложнее, чем во фрилансе. Во фрилансе я могу просто кинуть заявку и через пару дней начать работать. На удаленке такое не прокатит, вкат сильно затруднен.
>>2112109
>>2112171
Вы когда через апворк работаете устанавливаете себе их счётчик времени?
Как происходит переход на долгосрочную работу? Я слышал, что нельзя обмениваться контактами для работы вне апворка. Не понятно, как этот запрет работает.
Вам не кажется, что вы зарабатываете кому-то деньги, когда платите коммиссию? Это как прикол про то, что в казино не важно, выйграл ты или нет, казино всегда в выйгрыше.
>Пару компаний ты не осилишь, я тебе сразу говорю.
Тащемта, я осиливал.
>Даже 30-40 часов в неделю - это очень тяжело. Если только ты супер-трудоголик, можешь 10 часов в день без перерыва работать.
Пчел, я тебе сейчас открою секрет: ты можешь просто найти пару мелких компаний, где кроме тебя айосеров будет 0 (эту ситуацию будет видно сразу, как окажешься на техсобесе), и ставить эстимейты сам, работая и там и там хоть по 4 часа. Правда если ты хуёвенько перформишь/не очень уверен в силах и своём уровне — мб и не очень идея.
>Пчел, я тебе сейчас открою секрет: ты можешь просто найти пару мелких компаний, где кроме тебя айосеров будет 0 (эту ситуацию будет видно сразу, как окажешься на техсобесе), и ставить эстимейты сам, работая и там и там хоть по 4 часа.
Алсо, вкатыши и мидлы, если у вас нет хотя бы 3 лет опыта, пары красивых секций в резюме и хуёво пиздите на собесах — лучше не делайте так, это вредные советы для синьйоров-помидоров.
>Не понятно, как этот запрет работает.
Травят переписку нейроночке, и если она находит там телефоны/телеги/почты регуляркой, кек — отправляют на анальный досмотр моче, наверно.
>Вам не кажется, что вы зарабатываете кому-то деньги, когда платите коммиссию?
Тебе не кажется, что вообще работая на кого-то, ты зарабатываешь этому кому-то деньги? М?
>Это как прикол про то, что в казино не важно, выйграл ты или нет, казино всегда в выйгрыше.
Если говорить про биржи — ну конечно. В случае кабанчиков правда это зачастую нихуя не так, но кого это ебёт?
>Как происходит переход на долгосрочную работу?
Как нибудь оставляешь контакты (на лендосе-визиточке там, или ещё где, не обязательно прямо кидать), и если понравишься кабанчику — будут связываться напрямую. Примерно так же это работает и с галерами (с которых таким макаром за бугор перекатывается больше народу, чем по программам релокейтов всяких лохсофтов/ебламов), и в обычных компаниях, перебивающихся подрядами.
>Тащемта, я осиливал.
Имелось ввиду фуллтайм, из расчёта 35 часов в неделю.
>>2112367
Через апворковский трекер трекаешь время. Если клиента нашел на апворке, то уходить с ним опасно. Если спалят - то ты любо штраф впендюрят, либо забанят.
>Вам не кажется, что вы зарабатываете кому-то деньги, когда платите коммиссию?
Чел, все вокруг зарабатывают деньги. А продуктовые магазины не зарабатывают? А кафешки? А школьные учителя? Все вокруг на всех зарабатывают. Все что-то продают и что-то покупают. Вопрос только в соотношении. Мне самому не нравится платить апворку. Можно в ручном режиме искать, но это придется потратить время, а время это те же деньги. Естественно, если будет хороший вариант работы с заказчиком напрямую - я им воспользуюсь
Привет читающий. Я изначальный создатель треда по андроиду, появилось желание вкатится в ios, а теперь к сути сори что сразу с претензией. Какого хуя нихуя нет информации? Это пиздец подскажите где я могу найти адекватный роад мап на 2021 год, нужно изучить книгу по Свифту? Есть ли какие нибудь боевые курсы по созданию приложений? Тыкните пожалуйста меня литцом туда откуда можно поэтапно стартануть человеку с нулевыми знаниями iOS. Не прогоняйте сажными тряпками - я всего лишь хочу менять жизнь к лучшему.
Для начала скачай эпловый свифтбук - официальная дока-книжка по ЯП. Лучше бы весь со временем осилить, но если знаешь кор яву, то хотя бы квик-гайд прочти + пару специфичных штук развернуто, типа опционалов, гуардов, про арк в свифте нет GC, обрати внимание, замыкания тут оно современней и без функциональных интерфейсов работает и базовые коллекции. Место экспешенов тут Errors.
Про UIKit тебе, наверное, лучше другие расскажут.
>чтобы глубже погрузиться в платформу
Дока эпла, видосы с WWDC и практика. Знание платформы — по факту знание всех её костылей и иже с ними.
>Про компилятор, линкер
Исходники свифта/ллвм.
>интероп с obj-c
Доки эпла по обж-с, CoreFoundation, статьи про тонкости интеропа (вроде нахуя нужен @autoreleasepool в свифте итд) и вот это всё.
По факту литературы по всяким тонкостям-то почти и нет, всё надо собирать по статьям, докладам на WWDC и опытным путём. Никто тебя не дотянет до синьйорско-помидорского уровня сделав всё за тебя, не надейся.
В том, что автор >>2114309 считает, что сможет найти какие-то знания выше ждуновских в литературе. Их там нет если это не книга про алгоритмы или ещё какую-то нетленку, которая будет актуальна через 5/15/30 лет, проф литература — это 3/4 переписанная документация и ещё четверть отсебятины, причём той, которая не устареет, а всякие фишечки и костылики в этот список не входят — они каждый год ломаются (иногда чаще). Что по тематике треда, что про компиляторы (там самая актуальная книга которую советуют всем вкатышам — это драгонбук который их всех старше в 2, блять, раза).
Литература как формат вообще не подходит для такой инфы, это формат статей и документации.
Вот например — хочешь знать тонкости работы свифта? Пиздуешь на https://github.com/apple/swift/tree/main/docs и читаешь самые свежие доки, которые регулярно обновляются. Хочешь знать детали реализации, например, коллекций? Пиздуй ковырять исходники.
Ещё есть статьи — вот например есть бложик хардкорного байтойоба https://www.mikeash.com/pyblog/ .
Но с ними есть одно но: вот например, последняя статья про свифт у него начинается вот так:
>Another problem, which I discovered after writing the old article, was that the implementation wasn't thread-safe for concurrent reads. Oops! This was patched, but the discussion around it revealed that the implementers wanted a better implementation of weak references anyway, which would be more resilient to such things.
и она за 2017 год — то, что всё что он описал всё ещё релевантно можно проверить только закопавшись в исходники текущей версии.
Ну глаз зацепился за тонкости компилятора, по ним и пошёл.
Тогда ещё можно посоветовать какой нибудь учебник Таненбаума, тоже актуально, лол https://iphonedev.wiki/index.php/Main_Page , который является статейником и там информация явно свежее.
Если это автор тг канала с книгами то респект пчелику что организовал книжный коммунизм в отдельно взятой отрасли, все книжки там появляются довольно быстро, я и сам потом раз 5 скидывался на не особо нужные мне книги чтобы хоть как то вернуть хорошее другим, которое сделали для меня.
Прочел по диагонали, хз, никакого хейта и хуесосинга, какой часто можно видеть в группах веб/ведра, я там не увидел. Больше похоже что чел что-то принял и его поятнуло на графоманию. Ты сам душнила ебаная если считаешь что никто не имеет права че то там высказать или написать пост больше 140 символов
В России таких удаленочек, вроде, нет. А за рубежом я разучился искать работу. Пробовал как-то на SO Jobs, но не взлетело. На каком уровне нужно примерно знать разработку, чтобы устроиться на такую работу? С английским проблем нет.
>>2117636
Ну ты либо вчерашний студент, либо квартира своя уже есть, либо ничем не занимаешься, кроме работы и сна.
>>2117726
Да нет ничего этого, просто достаточно, например, в этом месяце зубы полечить, в следующем гардероб обновить, разочек в путешествие съездить и всё, денег нихуя. Очень рад за домоседов-господ, которым НИНУЖНО, сам таким раньше был, но, слава богу, вылез из этой трясины уныния.
Опиши свой уровень, что знаешь, что умеешь, для сравнения, пожалуйста.
>>2118042
Взял курс на САМОРАЗВИТИЕ, насадка потом сама нашлась в процессе, была не самоцелью. В целом скажу, что стал сильно счастливее, чем в домоседском прошлом, когда из развлечений были только игры и сидение на сосаке 24/7.
>Да нет ничего этого, просто достаточно, например, в этом месяце зубы полечить, в следующем гардероб обновить, разочек в путешествие съездить и всё, денег нихуя.
Так а где тут нищета-то? Ты на свою ебучую мидловскуз зп уже закрыл все свои потребности и по факту даже не хочешь менять работу хотя и декларируешь обратное, хотя если есть хотя бы 3 года опыта — 3-4к найти достаточно просто даже на локальном рынке.
>Опиши свой уровень, что знаешь, что умеешь, для сравнения, пожалуйста.
Я не он, но как ты себе такое описание вообще представляешь? Попроси ещё CV скинуть, лол.
>В целом скажу, что стал сильно счастливее, чем в домоседском прошлом, когда из развлечений были только игры и сидение на сосаке 24/7.
Ну возможно потому и не можешь апнуться, а задрачивай по 16 часов в дкень от нехуй делать — уже точно получал бы 5к+. Так-то перекатываттся в нормисы! лол.
> Опиши свой уровень, что знаешь, что умеешь, для сравнения, пожалуйста.
В iOS-разработке 9 лет, начинал с Obj-C с MRC ещё. Знания - ну типичные требования к синьору - паттерны, solid/kiss/dry/yagni, архитектуры (mvc/mvp/mvvm/viper/yarch), платформозависимое всякое - управление памятью, многопоточность, и так далее, стандартные фреймворки apple и не только, работа с вебсокетами, webrtc. Ну и САОД классические знать, и сложность алгоритмов (тут были вопросы на поиск в бинарном дереве, и всё такое). Ну и ещё портфолио играет - когда в нём есть работа над приложениями сервисов, чья реклама крутится на федеральном ТВ и в инете с каждого утюга, с MAU >10kk пользователей - уже открываются многие возможности, поэтому есть смысл поработать хоть джуном-мидлом в таких компаниях. Как-то так.
Массив отсортирован?
Да: пройтись по массиву запоминая прошлый элемент.
Нет:
а) Сделать сет, зарезервировать в нём место c половину массива и пройтись по массиву, если такого числа в сете нет — добавлять, если есть — удалить.
б) Отсортировать и пройтись по массиву запоминая прошлый элемент.
Да похуй чего они ждут, если обосрусь (как сейчас) — то узнаю решение задачи (как сейчас, лол) и в следующий раз не обосрусь.
А такое говно можно решить либо ебаша каждый день битмаски на C (с OptionSet я уже и забыл как это делается) либо тупо знать эту задачу.
>>2119033
Ну, там где спрашивают просто не особо-то и нужны ещё люди по факту, а хайрят потому шо есть план, по которому за этот месяц надо нанять ещё десять рыл. Так что они не долбоёбы, они просто минимизируют себе работу.
>Ну, там где спрашивают просто не особо-то и нужны ещё люди по факту, а хайрят потому шо есть план
Ещё есть другой стул: когда человек нужен, но нужно красиво послать остальных — такое часто случается, когда ищут синьйора-помидора, и просто неудобно говорить что "сорри чел, мы выбрали другого потому что хрюше он понравился больше".
Спок, маня, синьйор-помидор прибыл.
Запоминаем 2 элемента вместо одного, и добавляем волшебную проверку на то, последний ли элемент, и в несколько условий элегантно решаем задачу предельно простым кодом без лишних выделений памяти, который будет понятен через время даже предельно тупому кнопкокрасу вроде тебя, и всегда будет возможность послать провинившегося ждуна чистить этот код вилкой, как и полагается деду.
Ну, когда начинается массовый набор программистов компаниями у которых 0 экспертизы в этой области и они на полном серьёзе просто набирают тех, кто лучше решает задачки — там действительно такое говно в проде это норма, а потом компании вроде яндекса не могут сделать ни одного нормального приложения, разве что купить.
А запустишь где?
Вообще есть приблуда expo , насколько я помню там твое приложение запускается у них в приложении так что возможно все запуститься и без мака, но это какая ебень, без мака тут делать нечего - минимум хакинтош, эмуляторы и виртуалочки тоже сразу в помоечку.
Ios скатывается, скоро джаву придется учить и посасывать андроид господам.
Она всегда была тормозной хуебенью по сравнению с Linux. Все проблемы из за ограниченного микроядра, где многие процессы работают в одном треде, но зато это же микроядро находится в открытом коде и из-за своей компактности уже проёбано вдоль и поперёк на предмет дыр
Хочу сделать к нему нативное айос приложение, насколько я понимаю, нужно изучить Свифт и какой-то свифтуи для гуя.
Вся разработка идет в Xcode или есть еще какая-то легковесная прилага? На что обратить внимание при разработке если я нихуя не знаю о разработке под айос?
> какой-то свифтуи
Рановато, на самом деле. Но если тебе поддерживать iOS 12 и ранее не надо - подойдет.
> есть еще какая-то легковесная прилага?
Увы, нет.
> На что обратить внимание при разработке если я нихуя не знаю о разработке под айос?
Тут тебе понадобится тот, кто что-то знает о разработке под iOS.
>Да нихуя, на UIkit пердолинга в разы больше.
Ровно до того момента, как приложение перерастёт уровень хэлловорда.
> Жду не дождусь когда уже подропают 12 версию.
Чтобы обмазаться первой версией, со всеми её крашами, и даже без базового функционала вроде коллекций или фокуса на текстфилдах?
Сколько ждать? Я слышал что он около 35 гб весит, в финдере показывает 29, аппклинер показывает 17, ни туда ни сюда, при этом он запускается, но продолжает жрать кучу ресурсов в виде installd и appstoreagent
Какая же залупа
В первую очередь потому, что установка/обновление через стор 1 из 4-х раз зависает намертво, и этот баг не фиксят с тех пор, как в сторе этот икскод появился.
Во-вторых, потому что как анон выше сказал, может понадобится больше одной версии одновременно.
>>2126151
>Плюс если у тебя стоит автоматическое обновление можешь в самый неожиданный момент открыть рабочий проект, который теперь не собирается.
Мне даже интересно стало, на сколько недель надо оставить макпук лежать на зарядке и с интернетом, чтобы он выгрузил, удалил старый и установил новый икскод?
>Всего 15 гб оперативки на небольшой проект и вы чувствуете себя белым человеком с белым IDE.
В плане рефакторинга, скорости go-to-definition и стабильности — без сомнений, но есть одно но: там пиздец медленный автокомплит.
В отличие от икскода он, конечно работает всегда, и не надо ребутать каждые 2-3 часа и ждать индексации, но блять, я когда пытался перейти на аппкод просто через несколько дней свичнулся обратно на икскод из-за этого, поняв что я тупо перестал пользоваться автокомплитом. Ждать чуть ли не по 2-3 секунды на каждый пук автокомплита — это же ахуеть можно.
>Кст последняя бета быстрее собирает проекты
Кст посибо что скозал, а то никто ж не смотрел WWDC, где об этом раз 15 сказали.
А вот и нихуя, во первых, еще 4 года поддержки осталось, во вторых, новые интелы вполне себе обходят m1 по производительности в разы(но не по энергоэффективности да).
Во вторых, как там со старыми cocoapods?) а ведь часто что-то надо установить.
В третьих, пока 11 винда с арм из беты не выйдет - пользоваться я бы не стал, а это еще надолго
И вообще не ебу как люди вот эти все координаторы вские и тд проектируют и тд не глядя в интернет, а прям с нуля сами пишут (по опыту прошлой конторы)
Я вот сейчас решил mvp изучить, в теории ок, почитал что как, на практике хуй да нихуя.
Ну типа как вы учитесь делать всякие эти базворды?
Открываю гитхаб гуглю по проектам, ворую концепцию под себя - но это ж хуита полнейшая?
>Анон, хочу научиться шарить эти все ваши архитектуры и прочее. а то повесили лычку сеньора ( я даже не просил, один на проекте)
Вкатывайся, разрешаем.
>И вообще не ебу как люди вот эти все координаторы вские и тд проектируют и тд не глядя в интернет, а прям с нуля сами пишут (по опыту прошлой конторы)
Короче, смотри: садишься и думаешь — а шо тебе в приложении надо?
А в теории полный список примерно такой:
— Обработка диплинков;
— Навигация, не привязанная к конкретным вьюхам и контроллерам;
— Переиспользуемость (в адекватных рамках, не пытайся всюду всунуть вайпер как некоторые долбоёбы);
— Потенциал для модуляризации (наличие возможности провести её без страданий и рефакторинга на пол года) если ты один и команда наврятли будет расти/у проекта есть конкретный потолок функционала — можешь класть хуй на этот пункт, лол;
— Ещё какие нибудь требования бизнес логики, типа восстановления стейта приложения после закрытия/персистентного хранилища/итд.
А потом думаешь, как бы тебе побольше пунктов из этого списка получить в проекте с минимальными потерями. И вот так, по немного приходишь к чему-то, подходящему к твоему проекту.
Потом у тебя накопится опыт — и ты будешь понимать, что и в каком случае как делать.
>Я вот сейчас решил mvp изучить, в теории ок, почитал что как, на практике хуй да нихуя.
Как и все MVx — это всё MVC с другими названиями. Будет ли итог соответствовать реалиям проекта — зависит от тебя.
>Открываю гитхаб гуглю по проектам, ворую концепцию под себя - но это ж хуита полнейшая?
Да, хуйня. Но если хочешь ходит по собесам и козырять почему вайпер подзалупа — надо на нём таки что-то написать, или поработать в проекте (легаси проект это вообще лучшее место для изучения проблем архитектур).
Делаешь проекты, а потом ищешь работу. На работе 2-3 часа тратишь чтобы сделать так, чтобы у button image не красился, в isEnabled, пробуешь разные методы аля adjustsImageWhenDisabled и в конце ставишь просто isUserInteractionEnable.
Потом повышение.
Давно не заходил в тред. Уже зп 150. А у вас как дела? мимо 1.8 лет в iOS.
Есть проекты в сторе.
Да и подскажите плез, какую зп просить, какая вообще вилка на мидла, место дс2.
Опыт 1.5, претендую на мидла.
Какие то самоунижения для барена, идешь и без задней мысли собеседуешься. Про проекты рассказываешь на словах (что позволяет этика/договоры с работодателем), как и про все остальное типа люков, почему нельзя долбить вьюху из двух потоков и т.д. Если тебя заворачивают(гипотетически) по кодстайлу то это какие дурачки т.к. перейти на другой стиль может любая макака, не говоря уже о всяких мокрописьках типа автоформаттеров. А самое простое это берешь какой нибудь стайлгайд по свифту и рассказываешь про него если спросят.
Хз, именно на собесе уже и не особо-то таким козырнёшь (плюс нормального проекта — можно выебнутся, мол, опыта у меня больше чем только с работы), сразу будет видно что просто от тестовых косишь, лол.
Лучше придумай уже что нибудь, всё равно время в это будешь въёбывать.
Если я принимал участие в конкурсах для разработчиков по iOS от телеграма(и даже выигрывал деньги), это можно считать коммерческим опытом и стоит ли это упоминать на собеседовании? Вкатывальщик(до этого было пару лет опыта вротенда).
На четвёртом десятке лет кто-нибудь вкатывался в свифт и иосдев? Из бэкграунда околоайти-хуйня, последний раз кодил на паскале на 1 курсе лет 15 назад.
Лучше бы во что-то консервативное и с большим голодом кадров, чтобы нивелировать эджизм. Начальник после приема меня на работу (20 лет), говорил, что отсеивал Неадекватов и совсем возрастных. Почему возрастных, потому что медленней усваивают новое и потому что команда молодая. Поэтому и советую что-то серьезное, бекенд тот же, лучше даже корпоративный: стабильней, нет погони за новым(обычно), надо глубоко осваивать архитектуру и держать ее в голове, чем дальше от стартапа тем меньше эйджизма.
Так что советую корпо-Java или что по вкусу будет. На Свифт по синтаксису похожа.
Обычно у мобильщиков довольно молодой коллектив. Я в свой 29лвл уже думаю что буду делать в 35, чтобы меня не начали отбраковывать как деда, т.к. всего пару человек видел в мобильной разработке около этого возраста, и те были тимлидами или ручными петушками для конференций.
Во-вторых, я не могу установить спейсинг. Distribution у меня стоит Fill Equally, и по идее когда я растягиваю стек в ширину, у меня должны расятягиватья сами кнопки, а спейсинг сохраняться заданным, нет? Потому что у меня при растягивании только увеличивается спейсинг как на пике 3.
Хотя если поставить constraints слева и справа, то растягиваются сами кнопки как надо. Это так и должно работать?
Нужно скачивать mp3 файл из интернета и сохранять его в память телефона так, чтобы его было видно в приложении "Файлы".
Перечитал кучу гайдов, весь StackOverFlow. В итоге файл-то сохраняется в папку Documents, но в "Файлах" его нихуя не видно.
В info.plist добавил ключи:
Supports Document Browser
Application supports iTunes file sharing
Supports opening documents in place
Причём, блять, у всех индусов на ютьюбе всё мигом отображается. А у меня по их коду - нет. Ни на симуляторе, ни на реальном айфоне.
Нашёл один костыльный способ. При скачивании файла можно выводить пользователю UIActivityviewcontroller и предлагать нажать кнопку "Сохранить в файлы". Тогда принудительно создастся копия файла и он о чудо! появится в папке. Но это во-первых костыль, а во-вторых как тогда его программно удалять?
Если полазить по дебрям файловой системы в симуляторе, то видно, что приложение "Файлы" отображает нихуя не папку Documents, как пишут индусы. А вообще левую папку Library/Developer/CoreSimulator/Devices/EEF8DC59-48BD-4E41-9B2D-C8A5FF26F9D2/data/Containers/Shared/AppGroup/A441170F-D1A0-4E63-8390-C8113EE174B1/File Provider Storage
Именно там появляется копия моего загруженного файла после нажатия кнопки "Сохранить в файлы". Блеать, ну как всё сделать по-человечески?
Ссылочек на рабочий мессенджер в аппсторе(или в тестфлайте(или на худой конец в гитхабе)) предоставь иначе это все пиздеж братик. И да для вката в 2021 году критично иметь приложение в сторе пусть хоть там та же архитектура будет из говна и палок, но главное что оно работать будет и это уже огромный плюс на собеседовании.
Не согласен, конечно что пидорнут или начнут резать премии вероятность крайне мала, но начнется заебывающий микроменеджмент и постоянные доебы «ну как там, есть ли какие то препятствия» и т.д. Лучше грамотно напиздеть почему задача перекраски кнопки оказалась намного сложнее чем казалось до этого, хотя тут тоже зависит от коллег, которые могут словить на пиздеже. Ну все равно даже если пчелик решит сознаваться то лучше подмазать углы недооцененностью задачи.
Хотел выкатиться к вам из db, plssql, но что-то почитал и стало душно. Неужели все настолько хуево для поиска работы и давит флаттер с js?
Финансовая подушка есть, так что влажно фантазировал, что за год смогу вырасти до джуна. Вакансии то есть на хх и линке
Просто макбук про late 2013 года и видимо с big sur будут ожидаться тупняки. Пока поставил xcode 10 версию и тренируюсь.
Но кто уже давно в теме, то подскажите, без big sur никак не выйти ни на стажировки ни на работу вкатиться? Нужно же обязательно на ласт версиях работать?
Заранее спасибо за ответы.
Что лучше, перезапускать скан или, раз уже есть все данные об устройстве, просто вызывать connect после отключения? Что из них ест больше батареи, и есть ли вообще значимая разница? Вроде как connect будет висеть бессрочно (не включая во внимание внешние фактры), да и срабатывает быстрее чем если заново сканировать.
Ну я думал кто-то писал под блютус приложения и поделился бы, как именно и почему сделал. Мне не то чтобы важна батарея, просто как один из факторов выбора в голову пришёл.
Ещё я не уверен, если connect каким-то образом дропнется без оповещения (тут вот объянсяют варианты https://stackoverflow.com/questions/40783691/does-cbcentralmanager-connect-ever-time-out, оно хоть и старое, но вполне вероятно ещё действительное), поможет ли сканирование решить описанные проблемы?
>Я сам вкатывальщик
О, что уже выучил, что планируешь выучить перед вкатыванием?
Я вот посмотрел стенфордский курс и еще половину курса с рутрацкера. Все, что там говорили я в принципе понял, но все равно нету ощущения, что у меня из этого сложилась целостная картина. Да и своих проектов кроме как тех, что выполнялись по ходу курса, у меня нету, гитхаб пустой. Вот думаю, дольше лопатить всякие курсы или уже выкидывать резюме.
>>2149320
>В любом случае пили какой-нибдуь свой проектик в стор/тестфлайт
Например?
на сервак яндекаса во время работы твоего приложения улетает весь твой контакт лист из фремворка контакты и храниться там, возможно так оно и есть роботы яндекса бродят по сети и налаживают социальную сеть связанную с твоими контактами. После переустановки это всё загружается с их сервера обратно тебе в песочницу
а, только сейчас понял вопрос, как опять ты можешь зайти в свой аккаунт. КОроче у iOS есть очень удобный защищённый фреймворк keychain со всеми паролями, там хранятся все твои пароли, когда приложение переустанавливается твои пароли подтягиваются автоматом и видимо под капотом приложение само их вводит, как именно это происходит я хз, возможно знающие аноны меня поправят
https://developer.apple.com/documentation/security/shared_web_credentials
>>2149737
Это в случае, если юзер догадался дать доступ к контактам.
App Store Review Guidelines на русском
https://docs.google.com/document/d/1lFIbVgCqJq-d2YfHYZe2nvwReL4-aSpMcomw-DtRQgE/
Human Interface Guidelines iOS на русском
https://docs.google.com/document/d/1F9xptR4SS4knMlcYNKFL_CuQWKpGOxkzPtmuZnC7a3k/
Так вот у меня вопрос как это вменяемо сделать, если поля некоторые у объекта опшн и надо по всем полям искать?
для примера
struct Anon {
let huy: String?
let name: String
let surname: String
let date: String?
}
Я думал делать типа
let filteredArray = anons.filter({ $0.huy?.contains(searchValue) || $0. surname.contains(searchValue)......... и тд
Но у меня таких полей 8, плюс некоторые опшнл и надо проверять чтоб не наебнулось
Как вот проходится по такому массиву
Одно дело искать в одной проперте, другое дело во все :<
Так вот у меня вопрос как это вменяемо сделать, если поля некоторые у объекта опшн и надо по всем полям искать?
для примера
struct Anon {
let huy: String?
let name: String
let surname: String
let date: String?
}
Я думал делать типа
let filteredArray = anons.filter({ $0.huy?.contains(searchValue) || $0. surname.contains(searchValue)......... и тд
Но у меня таких полей 8, плюс некоторые опшнл и надо проверять чтоб не наебнулось
Как вот проходится по такому массиву
Одно дело искать в одной проперте, другое дело во все :<
Ну тащемта... да, берёщь и руками хуяришь проверки. Вынеси их в метод этой структуры чтобы не заваливать бизнес логику говном и вперёд.
Если же у тебя там прям куча сортировок/фильтров/итд — лучше заюзай какую нибудь кордату, она тебе сразу и дифф нужный выдаст, и жепу подотрёт.
Рубрика вредные советы:
Ещё можешь как труъц хуйацкер заебашить полнотекстовый поиск — заводишь поле contents, и в инициализаторе хуяришь self.contents = huy ?? "" + name + surname + date ?? "". Потом матчишь это говнище предикатом contents LIKE 'text' — и вуаля — у тебя получилась йоба-дб с fts.
Спасибо, ну это уже сложно и оверинжиниринг будет
Буду по простому
Тогда второй тупенький вопрос, как при этом разрешить опшн проперти, компакт мапить? но тогда пропадут все объекты где поле нил, а мне надо чекать и опшнл и не опшнл поля
let filteredArray = datas.filter({ ($0.address.contains(searchString))
|| ($0.name.contains(searchString))
....
и тд
})
return filteredArray
а если допустим town: String? как мне тогда его грамотно чекнуь?
($0.town?.contains(searchString)) != nil
не отработает нормально
Да нихуя и не поменялось, тот же курс перевыложили с обновлением под iOS 13 — но работы без знаний из "протухшего курса" ты всё равно не найдёшь ещё несколько лет. Что реально изменилось — появился SwiftUI на который переписали этот курс — но его никто, кроме продаванов курсов, так и не юзает нормально, потому что это сырое говно даже 3 года спустя.
В пандемийном мире — мб и есть, но для джуна это скорее проёб времени, ибо ждуном надо заниматься и нельза давать нормальные таски, а всё дробить и принимать по кусочкам (поясняя после каждого что надо и как) — что всем влом делать, когда этот ждун не сидит в метре от тебя.
Короче, ищи что найдёшь а найдёшь ты офис на пол года минимум и выходи туда, у ждунов других вариантов нет. Синьйоры-помидоры тебе конечно расскажут что у них по 100 офферов/наносек, но они скорее всего долбоёбы, не видящие нихуя дальше своей руки.
Ну и вообще при таком раскладе мои 3 года опыта вне мобилок имеют силу? в моем понимании имеют
Вообщем хочу какой-то hand-on ios development, чтобы подразумевалось что я не хлебушек которому надо рассказывать что такое переменная и функция, и чтобы приложения были не откровенно ебланские типа мы делаем ПРИВЕТ МИР только на мобиле
>В шапке написано начинать со свифт-бук, в курсах все начинают с построения приложений вообще без кода.
Это для совсем нулевых, которые еще не понимают базовые концепции языков и программирования в целом.
Если ты умеешь в питухон то все правильно делаешь. Достаточно в общих чертах почитать какие фичи есть в языке и при необходимости углубляться уже детальнее.
Я бы посоветовал брать какой-то макет в фигме-скетче и пробовать делать по нему, либо точечно экраны-вьюхи, либо целиком (на заглушках, локальных данных etc), лично мне такое гораздо сильнее заходит чем дрочить примеры книжек.
Недавно был vk cup и там было 5 довольно приличных макетов. Попробуй поискать или попросить у самих вконтактовцев (группа команда Вконтакте). Я бы дал ссылку на макет, но что-то не уверен стоит ли это делать на подмейлованном харкаче. Либо просто ищи бесплатные макеты в sketch/figma, смотри какая концепция тебе понравится и пробуй повторить.
вкатившийся-3-года-назад
Окей, спасибо, я за сегодня как пост написал скачал в яблокнигах develop in swift fundamentals и пока по ней пробежался чтобы было что делать.
А насчет "тестирования" на своем телефоне, я пробовал этот же im rich залить на свой 11й, и вроде как, я точно не помню, но вроде бы это требует подписона на эппл девелопер за сотку баксов? Или я путаю? Или нахуй надо и можно в виртуальном телефоне спокойно все смотреть?
На девайсе без подписки надо будет регулярно разрешать в настройках запускать приложения, которые туда заливаешь из икскода + ограничение на кол-во таких приложний (вроде больше 3-х хэлловордов одновременно нельзя) и некоторые фичи недоступны (пуши, нфц и тд).
Если на последний пункт похуй — можешь просто на симуляторе гонять.
>Открой ссылку
Я же не ебаное животное, чтобы сидеть и со скрина даже не укороченную ссылку вбивать.
>>2165029
На дриббле/бихансе ищи, там готовые дизайны выкладывают (правда 4/5 хуита и 1в1 не повторить смотря на отступы как в редакторе). В фигме тусуются дизайнеры и шарят там инструменты друг для друга, чего ты ожидал-то?
>Это же всратый какой-то конструктор
Который появился на закате эпохи, в которой WYSWIG конструкторы были главным хуй-тек трендом (см дельфи/qt/итд). Это просто такое легаси, и если ты, придя на проект, предложишь его выпилить нахуй — тебе все только будут благодарны.
Есть варианты со свитчами/словарями и через обж си, но хочется полностью нативно свифтово и без необходимости модифицировать контейнер каждый раз когда надо добавить новых объектов.
Тут прямо наоборот как-будто с машобом, где всякие критически важные алгоритмы для конкретных жизненных задач типа детекта дырок в газопроводах или поиска ебал преступников делаются снуля на С без библиотек вообще, а порриджи ковыряют трехстрочные Тенсорфлоуские нейронки дающие 74% точности между картинкой кекса и куска говна
А ты пишешь что код это плохо и надо в ассеты забивать и по сториборду размазывать
Я конечно ньюкек и пока пишу только всякие формы на готовых инструментах без своих картинок, но там вроде надо каждую картинку делать в 12 вариантах по размерам, как-то по-еблански их размещать. Это при работе с кодом тоже так? Типа я не могу загрузить 500х500 картинку иконки и потом засунуть ее во фрейм 50х50 без ебли? Или чтобы все работало на всех айфонах и айпадах нужно именно так мыслить?
>но там вроде надо каждую картинку делать в 12 вариантах по размерам
Иконку надо, для этого есть куча прог и сервисов, которые из 1024x1024 генерят все иконки под все экраны от макбуков до часов.
Для всех остальных изображений — надо скейлы x2 и x3, x1 девайсы уже давно никто не поддерживаются.
>Типа я не могу загрузить 500х500 картинку иконки и потом засунуть ее во фрейм 50х50 без ебли?
Можешь на изи, но как только увидишь, сколько оно жрёт памяти (500x500x3 = почти мегабайт на письку 50x50, а таких иконок будет по 10-20 штук на каждом экране, лол) пойдёшь обрезать их.
>Или чтобы все работало на всех айфонах и айпадах нужно именно так мыслить?
Можно просто векторные иконки юзать в одном экземпляре, там для этого флаг есть. Никто сейчас особо и не парится насчёт мелких пикч, только большие нарезают;
И можно ли такое сделать в swift-ui? Или это надо писать снуля?
О чёто совсем тухло тут
https://pastebin.com/k9wQrKCn
Давайте срите быстрей до бамп лимита, я уже новый мем в шапку заготовил
Пришлось откатываться на 12.8, думаю по интерфейсу это самое лучшее что смогли сделать. Без всяких гит веток в навигационной панеле, просто супер неудачное решение к сожалению( .
>>2171659
cvs в х2, х3. Картинки в пнг. Все.
>>2168364
50-80k.
Так ты и не ждун.
>>2180683
Обучение кассира — пару дней, которые надо будет добавить к потраченному времени другого кассира (очень дёшево), дальше чел работает и всё.
Обучение джуна-программиста — от полу года до двух лет (до полноценного мидла), при этом тратится куча ресурсов команды (а это ебать какое дорогое время синьйоров (ревью), тимлидов (планирование), пмов (контроль) и тд). Тащемта, не будь такой ситуации на рынке — вкатышей вообще бы никто не брал, только с универов подбирали бы по стажировкам.
>https://pastebin.com/k9wQrKCn
не о том вопрос был
https://pastebin.com/8DzijyQL
речь о десериализации гетерогенного массива объектов с общим предком
Во-первых структура не может наследоваться. Можно, но гетерегоннесть будет ограниченной , Codable сработает только внутри иерархии классов, то есть обязательно должен быть общий предок. Писать пример я конечно же не буду, так как гетерогенность на массивах это плохая практика на свифте
Не выебывайся, бери курс азиатки или еще что и учи по нему где тебе сначала сториборду в жопу затолкают, потом пару проектов на юките, а потом ты все это перепишешь в свифтуе. Все равно все вакансии требуют все это говно одновременно, все равно ты обосрешься с тем что какие-то готовые гайды по каким-нибудь другим китам или по конкретным приложениям то в одном, то в другом и тебе будет НЕУДОБНО им следовать.
И вообще нужно больше книжек
Ну да, там очевидно должен быть класс.
А откуда инфа про "гетерогенность массивов - плохая практика"? Потому что эту фразу можно прочитать как "полиморфизм это плохо", а это в равной мере сильное и сомнительное заявление.
Мы имеем в виду гетерогенность, ограниченную общим предком, то есть это все-таки не [Any].
> как в этом случае тип указать
вот в этом-то и вопрос. можно добавить поле с типом и свичом создавать нужный экземпляр. Но это надо при каждом новом сабклассе расширять очко свитч.
> слишком ебанутый вопрос
Да ну, применений у такого - вагон. Вон, например, страничка с нотификациями. Нотификаций может быть Х разных типов (добавлили в друзья, поставили лайк, реплай, новый пост, друг умер и так далее), но они все нотификации и все хранятся и показываются универсальным образом, но при открытии показывают разный полный вид и выполняют разные действия. Как эту проблему решить, кроме как массивом [MyNotification], где MyNotification - базовый класс?
> Как эту проблему решить, кроме как массивом
Cделой нотификейшн енамом, енамы хорошо сериализуются, а в этом году сделали из коробки сериализацию енамов а асошиейтед тайпами.
> "полиморфизм это плохо"
Полиморфизм основанный на наследование это плохо, это и отличает свифт от явы. В свифте используется параметрический полиморфизм, сродни темплейтам из C++. Вот твой пример с невозможностью сделать логично сериализацию сабклассов это наглядно демонстрирует.
>Потому что эту фразу можно прочитать как "полиморфизм это плохо", а это в равной мере сильное и сомнительное заявление.
Оно так и есть, особенно когда мы говорим про персистентность — это же инсульт жопы нахуй. Самое главное в любом формате передачи и хранения данных — это версионность, которую с подходом через полиморфизм поддерживать после полутора итераций невозможно.
Примеры такого — любой проект с кордатой (это же просто идеальное сочетание хуёвово дизайна как со стороны фреймворка, так и со стороны приложения), в котором авторы догадались ёбнуть такую иерархию. Итого — 0 версионности, вся типизация идёт нахуй, файл жирный как мать автора, легче уехать в дурку чем написать нетривиальную выборку, рандомные краши на unrecognized selector и тд.
Во всех остальных случая полиморфизм не является хуёвой практикой только когда нужно просто пошарить какие нибудь поля (и довесить минимальные методы вроде isEquals для них) — например, для вьюмоделей (хотя тебе в любом случае придётся делать либо свитч, либо разные методы у вьюх, либо разыне вьюхи, так что если нет никакого этапа между вьюхой и данными — оно тут лишнее). Любой же стейт в такой иерархии — это смертьгробпидор.
https://developer.apple.com/documentation/devicecheck
Раньше была куча возможностей нормально трекать юзера, сейчас только такое варварство из рабочего осталось.
Тащемта, в онбординге просто нужна кнопка "идите нахуй, сам разберусь", и не будет таких заёбов.
>Это на своем серваке чек тогда пилить получается?
Можно и в приложении, без сервака. Но таскать ключи в бинарнике — мягко говоря решение говна. Хотя для мелкого аппа на полтора юзера пойдёт.
>Просто я хуй знает как еще решать, если снести апп, то кейчен аппа ж не сносится, верно?
Всё сносится. Если бы на девайсе всегда стояло ещё одно приложение подписанное тем же аккаунтом, что и то, в котором ты ебёшься с онбордингом — можно было бы попробовать через AppGroup сохранить твои настроечки.
Ещё можно попробовать поиграть с https://developer.apple.com/documentation/adsupport/asidentifiermanager/1614151-advertisingidentifier если и так трекаешь юзера для рекламы.
Я решаю задачки простые, типа палиндромов, проверки на одни и те же буквы в стрингах
Стоит ли бугуртить если я смог решить задачу, но решение более емкое и топорное?
Вот например задача - функция принимает две строки, проверяет состоят ли они из одних и тех же букв в любом порядке
Что я сделал - я создал 2 пустых сета для Чарактеров, для первой строки напихал все в сет1, потом для второй строки во второй(два лупа), я не понял как можно сделать через && одним
Потом проверил если сет1 == сет2
То что в видео. Короче это нормально что я хоть как-то решаю, или надо купить другие мозги?
Зато я решил задачу которая определяет палиндромы и вырезает пробелы, а он так не делал
Ты язык осваиваешь или учишься реализовывать алгоритмы? Во втором случае полезнее брать соответствующие задачи и дрочить их, ознакомляясь с тем, как это полагается делать, по какой-нибудь классике.
В твоём примере можно сеты не использовать, а представлять строку как массив, индексы которого соответствуют символам, а значения равны числу каждого из этих символов в строке. Ясно, что две строки совпадают, если совпадают представляющие их вышеописанные массивы. В итоге асимптотика будет O(n) вместо, скорее всего зависит того как сет устроен O(nlogn). И да, проверка в самом начале на равенство длин строк будет нелишней, если условиями задачи это не оговорено.
Cider - неплохой лаунчер, но установщик приложений ведет на несуществующую ссылку. Версия 4.0.1 из 2018 года, новее не нашел.
IEMU Padoid - какая-то мифическая несуществующая хрень, все файлы - переименованный Cider 4.0.1.
Corellium - судя по их гитхабу, это наоборот - эмулятор Андроида для iOS, что, разумеется, нахер не нужно.
Подскажите плз хоть какой-нибудь способ, как можно запустить приложение iOS на андроиде. В крайнем случае можно и эмулятор на ПК под Linux, но основные фичи нужно проверять именно на телефоне. Спасибо заранее.
Ну давай вернемся к примеру: вот есть страничка с нотификашками. Нотификаций, например, пять типов: вас добавили в друзья, ваш пост лайкнули, вам новое ДМ, вам комментарий, у друга новый пост.
У каждой нотификашки есть айди, дата, картинка и текст. Плюс у первой есть юзер-добавитель, у второй есть юзер отправитель и превьюшка текста сообщения, у третьей есть лайкнутый пост и юзер-лайкатель, и так далее.
Как это решать? Енамы с 5-8 ассоциейтед велью и свитч на 15 кейсов (если нотификашек станет больше)?
Ууевый какой-то свифт-вей.
>>2186698
Так тот анон же уже ответил:
>Во всех остальных случая полиморфизм не является хуёвой практикой только когда нужно просто пошарить какие нибудь поля (и довесить минимальные методы вроде isEquals для них)
нужны вьюмодели (твой пример) — хуяришь свою иерархию классов.
нужна персистентность/бизнес логика/что-то тестируемое/итд — идёшь хуярить энамы.
>Енамы с 5-8 ассоциейтед велью
Тебе никто не мешает засунуть все шаренные поля в одну структуру.
Аноны, а есть тут господа из ЕС? Живу и работаю в Германии, но свое направление заебало и для себя начал тихо тихо вкатываться по мануалам от эппла и стэнфордским лекциями. Смотрю вакансии - вроде есть. Но и в ДС они вроде есть, а вы пишите, что вкатиться почти нереально.
Маловероятно, что ктото в курсе ситуации на рынке Германии той же, но ктото мб знает, насколько все хуево для июнь-разработчиков?
Ну если у меня есть возможность выписать пизды серверисту и заставить его переделать, то я это сделаю.
Если нет, то сменю работу буду игнорировать записи с одинаковыми айдишниками. А если сервер пришлет мне на одно событие три записи с разными айдишниками, то эту проблему не решить вообще никак: это невозможно отличить от трех реально разных событий.
Я понимаю, что ты, наверное, имел в виду, что в случае с енумом у меня все три одинаковые нотификации попадут в один кейс и приведут к отображению единственной нотификашки. Но если так сделать, то даже совершенно разные нотификации одного типа тоже слепятся, поэтому делать так не надо. А если так не делать, то и енумы, и сабклассы дадут дублирование.
>Я понимаю, что ты, наверное, имел в виду, что в случае с енумом у меня все три одинаковые нотификации попадут в один кейс и приведут к отображению единственной нотификашки.
Нет не совсем. Думаю тебе надо пописать на ооп и посталкиваться с реальной жопоболью, а потом прийти к нам сюда обратно.
>Если нет, то сменю работу буду игнорировать записи с одинаковыми айдишниками.
Весь вопрос, каким образом ты это будешь делать. Как говорится, на словах ты Лев Толстой
Больше всего мне интересно, конечно, откуда столько гонора.
Но это вопрос не по теме. Какую, например, реальную жопоболь ты имеешь в виду? Одного примера будет достаточно а у меня есть ощущение, что ты не сможешь привести даже одного и начнешь маневры.
Проблем с выкидыванием записей не вижу. На этапе парсинга ответа мы либо получаем сортированный список, либо сами сортируем его по дате (нам это в любом случае пригодится, поэтому не будем развивать холивар на тему того, какой слой должен этим заниматься). Очевидно дубликатные записи будут иметь и одинаковую дату, поэтому достаточно один раз пробежаться по массиву и из нескольких подряд идущих записей с одинаковым айди брать только одну. Мужики будут добавлять элемент в новый массив, если его айди не равен resultArray.last, петухи могут редьюсить массив до массива с тем же условием внутри. Блатные используют change while enumerating, но не знают, что это требует столько же памяти, сколько первый вариант.
Ой бле ну ты и напоносил. Вопрос намного проще и намного сложнее чем кажется на первый взгляд. Нужно всего лишь пробежаться по массиву и не добавлять элемент, если в массиве уже есть такой айдишник. Вопрос какую именно функцию ты напишешь, и какие у неё будут входные и выходные параметры.
Ну блять, знаю же где сижу. Напишу просто, опустив детали - скажут "ебать тупой", напишу развернуто - скажут "ебать напоносил". Что с двачера возьмешь. Спасибо что хоть не в б.
Жопоболь ты, кстати, так и не привел в пример.
>Вопрос какую именно функцию ты напишешь, и какие у неё будут входные и выходные параметры.
Странный у тебя вопрос. А если я хочу мутейтинг экстеншен на массив написать, который не берет никаких параметров и ничего не возвращает?
И вообще я прям жопой чую, что даже если я напишу конкретный код, ты с умным видом доебешься до какой-нибудь мелочи и с довольным ебалом упиздуешь в закат.
Если нет, то скажи, что именно ты хочешь услышать. Пока что это больше всего похоже на дао-какао уровня "ты смотришь, но не видишь"
Я иду по книге свифт-аппрентис и что-то конкретно эта глава сломала мне башку, она во-первых в 5 раз длиннее чем остальные, во-вторых это все преподносится как просто упоминания с дебильными примерами про студентов. Я вообще должен все это абсолютно кристально понимать и жонглировать этими вещами или это просто для комплекта синтаксиса? Может есть материалы получше, более обширные и с более адекватными примерами? Особенно бы хотелось примеры скажем для кнопок и вьюшек/стаков из свифт-юая, а не дрочилаЖопы: Человек.
Я надеюсь мне не надо дополнительно читать пыльный фолиант по Солиду и всем этим полиморфизмам чтобы как-то в это въехать адекватно?
ну окей
extension Array where Element: Equatable {
mutating func removeDuplicates() {
или Hashable, если внутри петушиное решение через Set.
надеюсь, ты понимаешь, что ответ "мда хех я так и думал мда джуниор спок" требует пояснения и примера, как делают Настоящие Взрослые Дядьки
Ага, 3-й год уже проворачиваются. Не советуй ньюфагам хуйни, ни один проект сложнее хэловорда не сможет жить без UIKit ещё не один и не два года. А "легаси" (в скобках потому что он всё ещё развивается, и SwiftUI — по факту просто блестящая обёртка) на нём будет жить пока жив iOS.
>>2218293
От тебя зависит, перестань задавать тупые вопросы. Почитай шапку, сделай аппы по списку, почитай вопросы для собесов и пробуй откликаться. Именно поиск первой работы — это вообще рандом.
Можно ли сделать так чтобы человек скачал приложение, ввел в него свой вариант, получил необходимые ему данные в виде пдф или лучше просто в виде страницы статической с картинками с решением всех формул, и остальные варианты он не может получить, даже если удалит и поставит его снова?
Просто я только начал учить это все, а есть такая возможность получить приложение в маркете со скачиваниями и при этом оно до одури простое, только этот вопрос и интересует чтобы один человек за одну покупку не мог просто раздать всем
>и остальные варианты он не может получить, даже если удалит и поставит его снова?
Такое провернуть можно.
https://developer.apple.com/documentation/devicecheck
>только этот вопрос и интересует чтобы один человек за одну покупку не мог просто раздать всем
А вот такое уже нельзя, приложение о скриншоте узнаёт постфактум. Можно разве что запись экрана поймать.
Вообще, вроде если вариант если рисовать через OpenGL, у кого-то в каких-то кейсах возникали проблемы со скриншотами, но это явно не твой уровень.
О, такого вполне достаточно, приложение запоминает девайс и дает только 1 готовый курсач, то что студент может поделиться своим вариантом со студентом из другой группы с тем же вариантом меня не волнует, пусть делает с документом или скринами что хочет.
Я еще думал просто скопировать собственно мессенджер по гайду и тупо отправлять человеку фаил, но это как-то шейди, а с девайс-чек неплохая фишка которой можно козырнуть
Спасибо
Скажу больше — есть исходный код телеги
свой список — https://github.com/TelegramMessenger/Telegram-iOS/blob/master/submodules/Display/Source/ListView.swift
контроллер самого чата — https://github.com/TelegramMessenger/Telegram-iOS/blob/master/submodules/TelegramUI/Sources/ChatController.swift
бабл для сообщений — https://github.com/TelegramMessenger/Telegram-iOS/blob/master/submodules/TelegramUI/Sources/ChatMessageBubbleItemNode.swift
и тд.
>есть инфа как оно сделано?
Если коротко: берёшь и задрачиваешь перформанс до посинения. Но ты, судя по всему, нюфаг, поэтому — пока научись хотя бы делать плавно без такого жесткого кастома как в телеге, есть куча материала типа https://habr.com/ru/company/vk/blog/481626/ по этому поводу.
Тащем-то я думал, что это: самописная рендер система на метале или кор анимейшн, или задрачивание перформанса на тейбл/коллекшн вью, в случае с контактом теперь понятно что второе, а с телегой не понятно, скажи там всё таки скрол на колекшн вью сделан да? Там пиздец просто долго копать
>а с телегой не понятно, скажи там всё таки скрол на колекшн вью сделан да?
Нет, написал же — там свой ListView поверх системного UIScrollView. Ещё там юзается пара небольшая часть Texture (бывший AsyncDisplayKit, тоже ремиплементирует некоторые вещи из UIKit вроде списков и коллекций, только с распараллеливанием лэйаута и прочими приколами, которые в телеге вроде как не используются) — https://github.com/texturegroup/texture , тащемта, в том же вк, судя по статье, сделали подобный фреймворк (да и в телеге, судя по всему, 90% его фич переделали под себя, хоть и начинали вторую версию приложения с него).
>самописная рендер система на метале
CoreAnimation и UIKit в iOS задрачивают уже десять лет — если проблема с перформансом и будет, то точно не с их стороны.
На прошлом конкурсе от телеги был такой чел (правда андроидер, но сути не меняет) — решил заебашить решение на OpenGL. Не попал даже в топ, побежал ныть на хабр где его закономерно обоссали — его решение сосало у простых решений на системных средствах отрисовки. Если у тебя в чём-то нет компетенций — наличие возможности сделать быстрее пожертвовав универсальностью не означает, что получится ими воспользоваться.
Если интересна эта тема — в телеге есть эксперимент, по переводу анимированных стикеров на Metal — просто зацени количество работы для такой узкой задачи
https://github.com/TelegramMessenger/Telegram-iOS/tree/master/submodules/LottieMeshSwift
>кор анимейшн
CoreAnimation и есть рендер движок. Ты можешь на нём и кусках UIKit (про взаимодействие с юзером CoreAnimation нихуя не знает) сделать своё решение, в телеге и текстуре именно так всё и работает.
>Блять если они такие умные то почему они скрол вью используют а не делают полностью всё на кор анимейшн?
1) Зачем? И так хорошо работает (это же не UICollectionView, который стабильным стал где-то в iOS 11, а у них прямо сейчас таргет — iOS 9, да и анимации в нём гемор ещё тот);
2) Затрахаешься повторять системную физику скролла (которую ещё могут и поменять и придётся ебаться ещё больше) — можно получить результат "как на флаттере";
3) Что такого принципиально их имплементация будет отличаться?
>Там же у него очень кривой делегат
В чём?
https://telegra.ph/MIYAMOTO-SYNDICATE-12-18
Пчел, который перекатывал тред зачем-то потёр часть контента, раньше это было в шапке. Зачем, деб?
>>2231487
Лучше возьми миник на m1 (даже если в кредит), старый на интеле мало того что будет троттлить как сука, так там ещё и hdd, любой контакс с которым — это смерть нахуй.
>>2231225
Короче, берёшь и закидываешь резюме во всё, где хантят ждунов (на хх, например) и ждёшь. Из 50-ти ответят 5, первые пару собесов обосрёшься, дальше уже норм будет. Собеседование ко галеры к галере может различаться кардинально, и по факту там самое главное — уверенность, хз чего ты хочешь от пиздежа с аноном. Всё равно на первых собесах будешь срать под себя.
Что именно?
В РФ очень высокий порог вхождения, просто колоссальный.
Выше может только в COBOL или AMS среди дедов.
Нужно наклепать дома портфолио, что по суммарным затратам больше, чем js и прочая параша.
Но сам только только на уровне джуна. В ДС меня не взяли (хотя успел побывать на одном собеседовании и получил 2-3 отклика в сумме), а сейчас переехал в Гермаху по основной работе и надеюсь, что тут попроще будет.
> Что именно?
Схуяли все стараются выкатываться или не начинать вообще?
Приложения в сторе были? Мне кажется порог высок больше из-за начального вкладывания бабла в девайсы и аккаунт в сторе, а обучение +- как и в вебе просто со своими подводными камнями.
>Но сейчас, как уже говорил, в гейропе и буду уже пробоваться тут
Надеюсь, ты хоть имеешь разрешение на работу и знаешь язык? Не настолько же ты пробитый?
>>2232305
Не, пчел, у нас не как на фронте.
Если не хочешь хлебать борщи, то лучше посмотри старую версию из шапки — https://www.youtube.com/playlist?list=PL9lXw_XXeiWQGrY5dl0IjFI7tOw_nfI91
т.к. новый они записали чисто про SwiftUI, а вот индустрия с ними, мягко говоря, не согласна.
>За год-то индустрия может захочет SwiftUI?
Даже когда захочет точно не ближайшие 2-3 года, мб потом девайсы в среднем будут настолько мощные что всем станет похуй и начнут лабать на нём — все нетривиальные части будут по прежнему писаться на UIKit-е, просто потому что у SwiftUI слишком много ограничений ввиду декларативности и любви эпла прибивать игрушки к полу, лол.
При работе с SQLite в iOS надо ли SELECT-запросы оборачивать в @escaping-замыкания?
Пилю тут чатик в приложении, бэк хранит всё в SQL, соответственно, таскаю себе тоже в локальную БД данные, и потом таскаю их по мере необходимости. И сейчас, пока сообщений мало, запросы пролетают мгновенно, и вроде необходимости в @escaping нет, чтобы ответ возвращать. Но не аукнется ли мне это в будущем, когда сообщений в теории станет очень много?
>При работе с SQLite в iOS надо ли SELECT-запросы оборачивать в @escaping-замыкания?
Как связаны выборки из бд и замыкания? @escaping нужен если ты делаешь выборку асинхронно. Вопрос всё же про потенциальную синхронность/асинхронность?
Вообще, интерфейсы (к библиотекам) обычно проектируют с заделом на будущее — и если возможно, что там понадобится асинхронность (в твоём кейсе очевидно) — то да, надо делать интерфейс с замыканиями/асинками/рх/промисами. Думай о бд и сети как о сторонней либе, которая должна взаимодействовать с клиентским кодом максимально гибко, и не ломать его на каждый пук, который происходит внутри.
В целом, если у тебя таргет iOS 13+ — в последнем икскоде вроде как для async/await опустили таргет до тринашки, так что синхронный код допидорить до асинхронного не такая чтобы задача, если ты не наплодил кучу мутабельного стейта. Хотя один хуй ты нюфаг и отобьёшь ебальник о гонки данных и дедлоки, но это нормально.
>Но не аукнется ли мне это в будущем, когда сообщений в теории станет очень много?
Аукнется конечно. Тащемта, в любом случае нельзя держать в памяти и рендерить больше какого-то количество сообщений одновременно, иначе всё рано или поздно начнёт лагать (гугли sliding window). Потом надо будет ещё считать лэйаут асинхронно чтобы даже это не лагало от постоянных релоадов (можно посмотреть в либе chatto, там на чистом UIKit такую хуйню сделали). Потом ещё из-за многопоточки начнут лезть такие баги, на какой-то итерации начнётся лютый дроч с миграциями (если не дропать кэш нахуй при каждом апдейте, кек) и другие приколы, из-за которых у тебя очко порвётся, но это уже другой разговор.
Спасибо за ответ
> Как связаны выборки из бд и замыкания? @escaping нужен если ты делаешь выборку асинхронно. Вопрос всё же про потенциальную синхронность/асинхронность?
Самый простой пример: презентуем новый вьюконтроллер с tableView внутри. Данные для tableView надо выбрать из SQL-базы. tableView инициализируется, а данные с запроса не вернулись еще. В итоге, надо сделать условный reloadData() по возвращению данных по запросу. Поэтому и думается запрос возвращать через completion условный. И вот надо ли его делать @escaping или нет? Просто что я знаю из теории, это то что @escaping-замыкание будет жить после завершения метода, а обычное нет.
Сорян, если криво объясняю, я джун-джуном :(
За обратную связь в любом случае спасибо большое
>В итоге, надо сделать условный reloadData() по возвращению данных по запросу
Ну так про то и речь, что замыкания-то тут не причём, это просто один из кучи способов построения асинхронного флоу. Тащемта, компилятор тебе и не даст скомпилировать замыкание, которое будет вызываться вне текущего скоупа или сохранять его без @escaping — это ошибка, а если ссылка на замыкание никуда не выйдет из текущего скоупа — будет спамить предупреждениями.
>tableView инициализируется, а данные с запроса не вернулись еще
Если их будет много и ты просто сделаешь синхронную выборку — будут, лол. Правда ты приложение повесишь полностью на какое-то время.
Короче, просто попробуй обернуть выборку в DispatchQueue.global(...).async и посмотреть что будет. Ошибка компиляции.
>Просто что я знаю из теории, это то что @escaping-замыкание будет жить после завершения метода
Не будет а может, если сохранишь это замыкание или вызовешь асинхронно. Этот атрибут по факту нужен для того, чтобы из клиентского кода ты знал что замыкание может пережить вызывающий код и не плодил крэши/утечки.
Та ладно, че вы так. У меня на работе был дядька 50+. Номана себя чувствовал. Основной его специальностью был iOS. Но когда я пришел тогда в компанию, то он уже продолжительное время и Андроид педалил (так как был весьма опытный, было уже буква ю под что педалить).
Так это, этот самый дядька тогда еще работами перебирал как нех. Так что не пугайте анонаса.
Дядка который ебашил код пол жизни и дядька вкатыш — это немного разные вещи, не находишь?
У синьйоров помидоров с 10-20 лет опыта действительно не будет никаких проблем и в 50 и в 70.
Вкатыши будут регулярно отхватывать мнение о себе в стиле "если за 40 лет нихуя не добился то и не добьётся вообще", "коллектив от 20 до 25, будет дидом" итд ещё на этапе отбора кандидатов хрюшами. Вкатываться в такой ситуации действительно лучше в области, где средний возраст выше. Так что жаба — хороший совет в этом случае. Ну или в кобол/фортран/аду можно, там средний возраст 50+ наверно, точно эйджизма не будет, лол.
Пилю небольшую кулстори как попал к инфоцыганам и прошу добавки с аппетитом кушая.
-
На айтишный язык по основной работе имею должность сеньора-помидора, а также несколько сайд-проектов как самозанятый (юрист-хуист). Для полноты картины - по упомянутому основному месту работаю в небольшой пожарной фирме начюра и отдел состоит из, собственно, меня и еще двух человек. Нужды не испытываю, потребности и гештальты современного человека +- закрыты, но в конце мая от дира поступило заманчивое предложение в качестве гонорара проплатить от фирмы какую-нибудь хотелку после моего возвращения из отпуска.
Выбор пал на IT, слишком интересно последние полтора года от товарища-голангера звучала поступающая о сфере информация. Думал-думал в отпуске, почитал в интернете, пообщался с айтишником на работе при возвращении и выбор пал на Свифт, так как есть на чем писать и тестить (да и в целом онанирую на Кука).
Проплатили мне инфоцыган и понеслась душа в рай.
Курсы - залупа, сразу видно, но за казенный счет не против структурированного изложения тем по порядку, менторов в слаке, вебинарам и т.д. (Кстати, проигрываю с ментора, сенпай и то солидней звучит).
Так вот, неделю сижу за книгами, видосами и материалами из интернета все свободное время от работы (~6 часов в сутки) и не могу оттащить себя за уши.
Хуй знает, не особо любил подобное в школе, на ЕГЭ по математике рисовал половые органы в КИМах а тут прям заинтересовался и, черт, тянет изучать что-то новое в своем бумажно-судебном дне сурка.
Через телегу вкатился в тусовку ребят-разрабов, сходил на сходочку сегодня, зазнакомился, скинули полезных ссылок на всякое и доволен как слон.
Так понимаю, подобное часто бывает и очень интересно послушать размышления анонов и, при их желании, реквестирую кулстори о знакомстве со Свифтом.
26 лвл кун из ДС-2