Полный экскурс по разработке + день iOS Разработчика
Почти 1 год прошел с публикации этого видео, где я полностью и по полочкам раскидал важное и необходиоме для тех, кто хочет понимать:"А что же там происходит, внутри этой разработки?". Вот небольшой список тем:
- Кто состоит в команде и чем занимается
- Какие задачи и откуда они берутся
- Feature / Core team, а что это вообще?
- Мобильный девопс и что он делает? Кстати подробный воркшоп и про него есть, он здесь
- Про каждый процесс подробно + дополнительные активности, опционально.
И это лишь малая часть того, что есть внутри видео. Из этого видео можно понять, и очень даже неплохо, про внутренню кухню внутри разработки ПО.
Как - всегда, все подробные таймкоды ждут внутри. Презентация и пояснение = результат 🙂
Почти 1 год прошел с публикации этого видео, где я полностью и по полочкам раскидал важное и необходиоме для тех, кто хочет понимать:"А что же там происходит, внутри этой разработки?". Вот небольшой список тем:
- Кто состоит в команде и чем занимается
- Какие задачи и откуда они берутся
- Feature / Core team, а что это вообще?
- Мобильный девопс и что он делает? Кстати подробный воркшоп и про него есть, он здесь
- Про каждый процесс подробно + дополнительные активности, опционально.
И это лишь малая часть того, что есть внутри видео. Из этого видео можно понять, и очень даже неплохо, про внутренню кухню внутри разработки ПО.
Как - всегда, все подробные таймкоды ждут внутри. Презентация и пояснение = результат 🙂
YouTube
Полный разбор работы iOS-разработчика: команда, спринты и мой рабочий день
Детальный разбор работы iOS-разработчика в продуктовой команде - от первого дня до профессиональных процессов.
Разбираем команду:
- Project Manager - планирование и координация
- Designer - от макетов до готового UI
- Business Analyst - требования и логика…
Разбираем команду:
- Project Manager - планирование и координация
- Designer - от макетов до готового UI
- Business Analyst - требования и логика…
🔥12❤6👍6🫡1
#middle #задачка
Старая добрая задача на print + работа с замыканием. Самые разные вариации с ДАНО: value / ref type и тоже самое с замыканием - implicit capture vs explicit capture.
Посмотри на код ниже, хорошо подумай, и выбери нужный вариант ответа, будет следующим постом.
Старая добрая задача на print + работа с замыканием. Самые разные вариации с ДАНО: value / ref type и тоже самое с замыканием - implicit capture vs explicit capture.
Посмотри на код ниже, хорошо подумай, и выбери нужный вариант ответа, будет следующим постом.
final class Person {
var name: String
init(name: String) {
self.name = name
}
}
var person = Person(name: "Alice")
let closure1 = {
print(person.name)
}
let closure2 = { [person] in
print(person.name)
}
person.name = "Bob"
closure1() // Что выведет тут? [1]
closure2() // Что выведет тут? [2]
person = Person(name: "Charlie")
closure1() // Что выведет тут? [3]
closure2() // Что выведет тут? [4]
👍1
В сети интернет ходит интересная стать про перформанс SwiftUI и способы на него взаимодействовать, благоприятно. Хочу сразу подсветить, что эта информация актуальна для 13-16 версии, начиная с 17 доступен макрос Observable, который оптимизирован в плане перформанса.
Не поделиться не могу, поэтому вот: https://medium.com/airbnb-engineering/understanding-and-improving-swiftui-performance-37b77ac61896
Но хочу добавить, что это давным-давно есть сами знаете где и намного подробнее 🙂
Но статью прочитать тоже стоит, зря старались коллеги из Airbnb?👍
Не поделиться не могу, поэтому вот: https://medium.com/airbnb-engineering/understanding-and-improving-swiftui-performance-37b77ac61896
Но хочу добавить, что это давным-давно есть сами знаете где и намного подробнее 🙂
Но статью прочитать тоже стоит, зря старались коллеги из Airbnb?
Please open Telegram to view this post
VIEW IN TELEGRAM
Medium
Understanding and improving SwiftUI performance
New techniques we’re using at Airbnb to improve and maintain performance of SwiftUI features at scale.
🔥6👍3😁1
#swiftui #собеседование #jun
Доброй ночи! Такая задача на подумать. Сколько раз выведется принт:"evaluate body", если сделать два действия:
1. Запустить код, чтобы отобразить VIew
2. Нажать на кнопку
Варианты ответа будут ниже!
Доброй ночи! Такая задача на подумать. Сколько раз выведется принт:"evaluate body", если сделать два действия:
1. Запустить код, чтобы отобразить VIew
2. Нажать на кнопку
import SwiftUI
import PlaygroundSupport
struct ContentView: View {
@State var value = 0
var body: some View {
let _ = print("evaluate body")
Button("Изменить") {
value += 1
}
}
}
PlaygroundPage.current.setLiveView(ContentView())
Варианты ответа будут ниже!
🤓5🔥3🤝3
#swiftui #собеседование #middle
Мы поменяли @State var value = 0 на @StateObject var viewModel и дёргаем increment. Так же сделаю 2 действия: запущу это код, чтобы отобразить view и нажму на кнопку. За два этих действия сколько раз вызовется принт “re-evaluate body”? И почему?
Опрос будет ниже, перед выбором нужного ответа постарайся обосновать свой ответ, почему именно ЭТА цифра.
Мы поменяли @State var value = 0 на @StateObject var viewModel и дёргаем increment. Так же сделаю 2 действия: запущу это код, чтобы отобразить view и нажму на кнопку. За два этих действия сколько раз вызовется принт “re-evaluate body”? И почему?
import SwiftUI
import PlaygroundSupport
final class ViewModel: ObservableObject {
@Published var age: Int = 0
func increment() {
age += 1
}
}
struct ContentView: View {
@StateObject var viewModel = ViewModel()
var body: some View {
let _ = print("evaluate body")
Button("Изменить") {
viewModel.increment()
}
}
}
PlaygroundPage.current.setLiveView(ContentView())
Опрос будет ниже, перед выбором нужного ответа постарайся обосновать свой ответ, почему именно ЭТА цифра.
👍1🔥1
🔥6
#swiftui #собеседование #middle
Окей с двумя премерами выше мы разобрались. У нас есть правильный ответ и обоснование его. Если-вдруг есть сомнения в корректности, всегда можно проверить в Playground.
И чтобы продолжить ветку этого вопроса дальше, давай теперь ответим на следующий вопрос. Ответы выбирай тот, который считаешь НАИБОЛЕЕ корректным.
"В чём разница между re-evaluate и re-draw? Что происходит в предыдущем примере: re-evaluate и / или re-draw?"
Окей с двумя премерами выше мы разобрались. У нас есть правильный ответ и обоснование его. Если-вдруг есть сомнения в корректности, всегда можно проверить в Playground.
И чтобы продолжить ветку этого вопроса дальше, давай теперь ответим на следующий вопрос. Ответы выбирай тот, который считаешь НАИБОЛЕЕ корректным.
"В чём разница между re-evaluate и re-draw? Что происходит в предыдущем примере: re-evaluate и / или re-draw?"
#swiftui #собеседование #middle+
Есть такой код и при нажатии на кнопку “Увеличить возраст на 1 ед.” счётчик counter не увеличивается и не показывает числа, он всегда показывает 0.
Задача - понять почему, пофиксить и объяснить в чём была проблема. Код при этом, концептуально, должен остаться таким же, какой он изначально, не считая исправления.
Есть такой код и при нажатии на кнопку “Увеличить возраст на 1 ед.” счётчик counter не увеличивается и не показывает числа, он всегда показывает 0.
Задача - понять почему, пофиксить и объяснить в чём была проблема. Код при этом, концептуально, должен остаться таким же, какой он изначально, не считая исправления.
import SwiftUI
import PlaygroundSupport
final class ViewModel: ObservableObject {
@Published var age: Int = 0
func increment() {
age += 1
}
}
struct ChildView: View {
@ObservedObject var viewModel = ViewModel()
@Binding var value: Int
var body: some View {
Button("Увеличить возраст на 1 ед.") {
viewModel.increment()
}
.onChange(of: viewModel.age) { _, newValue in
value = newValue
}
}
}
struct ContentView: View {
@State private var counter: Int = 0
var body: some View {
VStack(alignment: .center, spacing: 0) {
Text("Каунтер равен:\(counter)")
.font(.title)
.foregroundStyle(.teal)
ChildView(value: $counter)
}
.frame(width: 300, height: 500)
}
}
PlaygroundPage.current.setLiveView(ContentView())
#structured_concurrency #собеседование #middle
Нужно сказать на каком thread будет выполняться операция в контексте background или main thread, учитывая что Playground по-умолчанию равен background thread.
Нужно сказать на каком thread будет выполняться операция в контексте background или main thread, учитывая что Playground по-умолчанию равен background thread.
Task {
showCurrentThread() // 1 ?
await asyncOperation // 2 ?
showCurrentThread // 3 ?
}
Task { @MainActor in
showCurrentThread() // 4 ?
await asyncOperation // 5 ?
showCurrentThread // 6 ?
}
func asyncOperation(line: Int = #line) async {
showCurrentThread(line: line)
try? await Task.sleep(for: .seconds(1))
}
func showCurrentThread(line: Int = #line) {
print("Current line is: \(line) and thread is: \(Thread.current)")
}
#полезное #работа
Привет, даю реально полезный совет. Есть такая группа мобайл дев джобс, там вакансии на мобильную разработку - то что нам и нужно.
Если тебя там нет, самое время вступить, если ты забанен и не можешь вступить - пиши в лс решим вопрос и всё будет ок.
Что я предлагаю делать - не ждать на заборе пока придёт HR и конкретно тебя🫵 пригласит на вкусную вакансию, а действовать самому 🫵
Смотришь по тегу iOS за последние 6-8 месяцев, пишешь с HR по вакансии, даже если ВАКАНСИЯ ПО КОТОРОЙ ТЫ ПИШЕШЬ ЗАКРЫТА, у HR может-быть ДРУГАЯ вакансия, да-да не удивляйся.
Рассказывал этот совет ещё давным-давно на воркшопе по собеседованиям и трудоустройству, если не смотрел их - зря, упускаешь то, что тебе пригодится, как и этот совет, к примеру.
- группа для вакансий
- воркшопы по поиску работы и прохождению собеседований
Привет, даю реально полезный совет. Есть такая группа мобайл дев джобс, там вакансии на мобильную разработку - то что нам и нужно.
Если тебя там нет, самое время вступить, если ты забанен и не можешь вступить - пиши в лс решим вопрос и всё будет ок.
Что я предлагаю делать - не ждать на заборе пока придёт HR и конкретно тебя
Смотришь по тегу iOS за последние 6-8 месяцев, пишешь с HR по вакансии, даже если ВАКАНСИЯ ПО КОТОРОЙ ТЫ ПИШЕШЬ ЗАКРЫТА, у HR может-быть ДРУГАЯ вакансия, да-да не удивляйся.
Рассказывал этот совет ещё давным-давно на воркшопе по собеседованиям и трудоустройству, если не смотрел их - зря, упускаешь то, что тебе пригодится, как и этот совет, к примеру.
- группа для вакансий
- воркшопы по поиску работы и прохождению собеседований
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍6🔥5❤🔥1👌1
#полезное #глаза
Доброго вечера, кому интересно прочитать чужой - личный опыт по-поводу операций на глаза, лишним не будет, советую на 10-15 минут чтиво: https://www.drive2.ru/b/710618764151889778/
Берегите своё зрение, найдите на ютубе гимнастику / спросите у докторов. Даже текущие -1 и около него, если правильно поступать - то не будет ухудшения.
Зрение ухудшается на минус - если напрягать глаза. Лучше уделить этому вопросу, чтобы потом не пришлось: носить очки / линзы или делать операцию.
В чатике можете тегнуть и спросить лично у автора статьи - @gmalyukov
Доброго вечера, кому интересно прочитать чужой - личный опыт по-поводу операций на глаза, лишним не будет, советую на 10-15 минут чтиво: https://www.drive2.ru/b/710618764151889778/
Берегите своё зрение, найдите на ютубе гимнастику / спросите у докторов. Даже текущие -1 и около него, если правильно поступать - то не будет ухудшения.
Зрение ухудшается на минус - если напрягать глаза. Лучше уделить этому вопросу, чтобы потом не пришлось: носить очки / линзы или делать операцию.
В чатике можете тегнуть и спросить лично у автора статьи - @gmalyukov
drive2.ru
Неудачная лазерная коррекция зрения CLEAR. МНТК им. Федорова, Москва
Будет. ОЧЕНЬ. Много. Букв. Приветствую всех. И дело даже не в графоманстве. Просто в этом деле всплывает столько деталей "по ходу", о которых вы узнаете только по факту, что массу вещей пр…
❤10👍4🔥4
#заметка
Добрейший вечерочек, завтра будем изучать дженерики начинать, глянул в ноушен, а там в этом разделе ничего нет. Уровень джюн, уверенный джюн, мидл и уверенный мидл надо будет точно закрывать.
Начну с простого, от 0 до уверенного джюна - крепыша, скрепыша.
Цель - понимание.
Результат - умени(е)я.
Презентация готова, сценарий на первые несколько видео есть, Xcode для первого занятия тоже есть.
Помню в своё время дженерики были одной из самых сложных для ПОНИМАНИЯ и ПРИМЕНЕНИЯ вещью.
Вот сидишь ты и думаешь, а тут надо? А тут надо? А вот протоколы тоже могут быть, а тут их надо или где надо? Етить колотить...
В общем будем струячить. Это не означает, что другие вещи останавливаются - нет, нисколько.
Всё идёт своим чередом. Если у кого-то есть желание стать гуру дженериков и прокачаться так, чтобы просто смотреть и улыбать как тот кот с гифки - то пробуйте Compiling Swift Generics от Slava Pestov
Добрейший вечерочек, завтра будем изучать дженерики начинать, глянул в ноушен, а там в этом разделе ничего нет. Уровень джюн, уверенный джюн, мидл и уверенный мидл надо будет точно закрывать.
Начну с простого, от 0 до уверенного джюна - крепыша, скрепыша.
Цель - понимание.
Результат - умени(е)я.
Презентация готова, сценарий на первые несколько видео есть, Xcode для первого занятия тоже есть.
Помню в своё время дженерики были одной из самых сложных для ПОНИМАНИЯ и ПРИМЕНЕНИЯ вещью.
Вот сидишь ты и думаешь, а тут надо? А тут надо? А вот протоколы тоже могут быть, а тут их надо или где надо? Етить колотить...
В общем будем струячить. Это не означает, что другие вещи останавливаются - нет, нисколько.
Всё идёт своим чередом. Если у кого-то есть желание стать гуру дженериков и прокачаться так, чтобы просто смотреть и улыбать как тот кот с гифки - то пробуйте Compiling Swift Generics от Slava Pestov
❤12👍9🔥7👏1
#полезное #заметка
Я вот кстати много где говорил и говорю, а всё-равно, процентов 10-15% могут пренебречь. Если откликаться на HH, Linkedln и там будут из СНГ эйчары, ну т.е даже если вакансия подразумевает валютную удалёнку, не полнись и засетапь для связи телеграм, никнейм.
А ещё лучше, чтобы не делать несколько действий: скопировать -> открыть телегу -> вставить в поиск -> кликнуть по нужному из списка
Можно сделать легче и вставить к своему @name ссылку, чтобы при нажатии автоматом перекидывало на нужного, т.е тебя🫵
Я вот кстати много где говорил и говорю, а всё-равно, процентов 10-15% могут пренебречь. Если откликаться на HH, Linkedln и там будут из СНГ эйчары, ну т.е даже если вакансия подразумевает валютную удалёнку, не полнись и засетапь для связи телеграм, никнейм.
А ещё лучше, чтобы не делать несколько действий: скопировать -> открыть телегу -> вставить в поиск -> кликнуть по нужному из списка
Можно сделать легче и вставить к своему @name ссылку, чтобы при нажатии автоматом перекидывало на нужного, т.е тебя
Please open Telegram to view this post
VIEW IN TELEGRAM
💯5🔥3
#полезное #заметка
ТОП 1 упущенное знание для начинающих разработчиков - "Делаем по потребности". В своих видео не просто так повторяю, время от времени, это правило.
И это самое явное, что переростает в неявное:
Кто-то подумает, что это мелочь, но я хочу просто напомнить, что в первую очередь - мы программисты, которые пишут для таких же программистов, и умение писать простой для понимания, чтения, поддержки код - большой труд.
ТОП 1 упущенное знание для начинающих разработчиков - "Делаем по потребности". В своих видео не просто так повторяю, время от времени, это правило.
- Компилятор не просит var? - Начни с let. Попроси - поменяешь.
- Компилятор не просит self? - Не пиши, попросит - укажешь.
И это самое явное, что переростает в неявное:
[weak self] in <- обыденный capture list, но сколько раз я видел пример, когда после него следуюет `guard let`, для ВЫЗОВА функции, которую можно вызвать и без strong self... Просто написать self?.someFunc и всё бы работало и смысл тот же...
Кто-то подумает, что это мелочь, но я хочу просто напомнить, что в первую очередь - мы программисты, которые пишут для таких же программистов, и умение писать простой для понимания, чтения, поддержки код - большой труд.
❤11🔥8🏆6
#полезное #резюме #работа
Получается так, что если ты пишешь хоть где-то в резюме свои контакты КРОМЕ КАК ЗОНЫ КОНТАКТОВ - для HH ты нехороший человек и воруешь у них деньги, ты будешь в shadow ban и поэтому тебе - НИКТО НЕ ПИШЕТ!
Вот почему я всегда советовал и советую со своим резюме струячить к Семёну - нашему братскому HR, который и словом и делом и результатом!
Правильно - оставлять контакты только в зоне контактов!
Получается так, что если ты пишешь хоть где-то в резюме свои контакты КРОМЕ КАК ЗОНЫ КОНТАКТОВ - для HH ты нехороший человек и воруешь у них деньги, ты будешь в shadow ban и поэтому тебе - НИКТО НЕ ПИШЕТ!
Вот почему я всегда советовал и советую со своим резюме струячить к Семёну - нашему братскому HR, который и словом и делом и результатом!
Правильно - оставлять контакты только в зоне контактов!
🔥13❤2👏2