22-я неделя как я решил стать iOS разработчиком
Решал задачку с счётчиком побед в тестовом приложении из курса. Хорошо что создатели вводной части сразу поясняют за Xcode и структуру проекта. Началось всё с UI, а потом плавно перетекло в использование кода для оживления данных
Я опять понизил таргет по доходу в найме на декабрь. Кассовый разрыв составил шесть с половиной тысяч, тк мои обязательства увеличились. Не стоило их трогать
😍
😍
Решал задачку с счётчиком побед в тестовом приложении из курса. Хорошо что создатели вводной части сразу поясняют за Xcode и структуру проекта. Началось всё с UI, а потом плавно перетекло в использование кода для оживления данных
Я опять понизил таргет по доходу в найме на декабрь. Кассовый разрыв составил шесть с половиной тысяч, тк мои обязательства увеличились. Не стоило их трогать
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
This media is not supported in your browser
VIEW IN TELEGRAM
23-я неделя как я решил стать iOS разработчиком
Первое января нового года это просто продолжение предыдущего, чудес не бывает. Всё что у меня сейчас есть - результат моего труда , а того что не имею - результат глупости и лени. Накопил за декабрь 42.000 рублей которые пойдут на оплату последних трёх месяцев обучения. Новый год встретил в компании милой девочки. Много общались, было уютно и спокойно. Бенгальские огни не поджигали, гулять в новогоднюю ночь не стали. Все из-за того, что 31 декабря я встал в пять утра, и к 6:45 уже был на работе, к моменту возвращения домой сильно устал
Моя цель стать айтишником приближается, и я всё для этого делаю
😍
😍
Первое января нового года это просто продолжение предыдущего, чудес не бывает. Всё что у меня сейчас есть - результат моего труда , а того что не имею - результат глупости и лени. Накопил за декабрь 42.000 рублей которые пойдут на оплату последних трёх месяцев обучения. Новый год встретил в компании милой девочки. Много общались, было уютно и спокойно. Бенгальские огни не поджигали, гулять в новогоднюю ночь не стали. Все из-за того, что 31 декабря я встал в пять утра, и к 6:45 уже был на работе, к моменту возвращения домой сильно устал
Моя цель стать айтишником приближается, и я всё для этого делаю
Please open Telegram to view this post
VIEW IN TELEGRAM
🫡6🔥4
24-я неделя как я решил стать iOS разработчиком
Полностью закончил бесплатную часть курса "iOS разработчик расширенный". Последним заданием было доработать тестовое приложение со стороны противника и прописать в коде увеличение очков при попадании мяча в ворота игрока. Вся работа заняла около двадцати минут размышлений и добавления необходимого кода
Сегодня стартует основная часть моего курса
😍
😍
Полностью закончил бесплатную часть курса "iOS разработчик расширенный". Последним заданием было доработать тестовое приложение со стороны противника и прописать в коде увеличение очков при попадании мяча в ворота игрока. Вся работа заняла около двадцати минут размышлений и добавления необходимого кода
Сегодня стартует основная часть моего курса
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5
1-я неделя обучения в практикуме и 25-я как я решил стать iOS разработчиком
Скоро я перейду на счёт прошедших недель не с момента когда я решил стать разработчиком, а с даты начала платной части обучения. Публикации на этом канале по прежнему будут выходить по четвергам в 9:41
Чтож, первая неделя прошла хорошо. Меня пригласили в отдельный мессенджер с информацией, новостями и наставниками. Ещё я вступил в телеграм чат для свободного общения студентов 30й когорты
Структура уроков понятна, теория объясняется доходчиво и без лишних отвлечений. Домашние задания первого спринта в меру сложны
😍
😍
Скоро я перейду на счёт прошедших недель не с момента когда я решил стать разработчиком, а с даты начала платной части обучения. Публикации на этом канале по прежнему будут выходить по четвергам в 9:41
Чтож, первая неделя прошла хорошо. Меня пригласили в отдельный мессенджер с информацией, новостями и наставниками. Ещё я вступил в телеграм чат для свободного общения студентов 30й когорты
Структура уроков понятна, теория объясняется доходчиво и без лишних отвлечений. Домашние задания первого спринта в меру сложны
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
2-я неделя обучения в практикуме и 26-я как я решил стать iOS разработчиком
Закончил первый спринт решив в нём почти все таски. Разумеется пришлось подумать и местами погуглить. Иногда встречались неявные решение авторов
Например надо создать массив чисел от 1 до 10 и из него собрать новый, где все нечётные удалены. Я поступил следующим образом:
Автор пошёл дальше и предложил такое решение:
Что означает { $0 пришлось гуглить тк этого в учебнике не было. Продолжаю учиться и экспериментировать, 23 января открылся второй спринт
😍
Закончил первый спринт решив в нём почти все таски. Разумеется пришлось подумать и местами погуглить. Иногда встречались неявные решение авторов
Например надо создать массив чисел от 1 до 10 и из него собрать новый, где все нечётные удалены. Я поступил следующим образом:
var arrayWithNumbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
var arrayWithOmlyEvenNumbers: [Int] = []
for index in arrayWithNumbers {
if index % 2 == 0 {
arrayWithOmlyEvenNumbers.append(index)
Автор пошёл дальше и предложил такое решение:
var numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
numbers = numbers.filter { $0 % 2 == 0 }
print(numbers)
Что означает { $0 пришлось гуглить тк этого в учебнике не было. Продолжаю учиться и экспериментировать, 23 января открылся второй спринт
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
3-я неделя обучения в практикуме и 27-я как я решил стать iOS разработчиком
Первая неделя второго спринта закончилась, а я освоил только структуры и опционалы. Видимо стоит ускорить прохождение курса, набрать темп на следующие месяцы и не понижая скорости его закончить. Ниже пример задачки по структурам:
и задачка по опциональным значениям на примере оператора guard, который сначала проверяет переменную на наличие значения и только потом пускает код дальше или прерывает его
Я доволен собой и тем что всё понимаю в теории, но часто когда дело доходит до практики начинаю тупить
😍
😍
Первая неделя второго спринта закончилась, а я освоил только структуры и опционалы. Видимо стоит ускорить прохождение курса, набрать темп на следующие месяцы и не понижая скорости его закончить. Ниже пример задачки по структурам:
struct Rectangle {
var width: Double
var height: Double
func area() -> Double {
return width * height
}
}
var rectangle = Rectangle(width: 10.0, height: 5.0)
print("Площадь прямоугольника: \(rectangle.area())")и задачка по опциональным значениям на примере оператора guard, который сначала проверяет переменную на наличие значения и только потом пускает код дальше или прерывает его
var message: String?
message = "Hello World"
if let message {
print(message)
}
func guardMessage(message: String?) {
guard let message else {
return
}
print(message)
}
Я доволен собой и тем что всё понимаю в теории, но часто когда дело доходит до практики начинаю тупить
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👨💻4
4-я неделя обучения в практикуме окончена
Изучил тему классов, расширений и протоколов. Сказать что я начинаю выражать глубокую озабоченность всё возрастающей сложностью курса - как будто ничего не сказать. Впрочем тема ООП мне понятна, расширения можно использовать для увеличения функционала существующих структур, классов и перечислений. Протоколы дались сложнее. Ниже пример наследования:
Далее расширим функционал кота через extention:
Протоколы определяют набор свойств и методов, но не содержит их реализацию. Их натягивают на классы структуры и перечисления которые в свою очередь обязуется реализовать весь этот набор описанный в протоколе. Вот пример:
Сегодня открылся третий спринт и в конце когорту ожидает первый мягкий дедлайн. А что если мне публиковать сюда посты раз в две недели, по окончанию каждого спринта?
😍
😍
Изучил тему классов, расширений и протоколов. Сказать что я начинаю выражать глубокую озабоченность всё возрастающей сложностью курса - как будто ничего не сказать. Впрочем тема ООП мне понятна, расширения можно использовать для увеличения функционала существующих структур, классов и перечислений. Протоколы дались сложнее. Ниже пример наследования:
class Animal {
var name: String
init(name: String) {
self.name = name
}
}
var animalForPrint = Animal(name: "Заяц")
print("Имя животного: \(animalForPrint.name)")
print("\n")
// дочерний класс
class Cat: Animal {
var furColor: String
init(name: String, furColor: String) {
self.furColor = furColor
super.init(name: name) // обязательные иниты родительского класса
}
}
var cat = Cat(name: "Мурзик", furColor: "Белый")
print("Имя животного: \(cat.name), цвет меха: \(cat.furColor)")
print("\n")Далее расширим функционал кота через extention:
extension Cat {
func meow() {
print("Мяу")
}
} Протоколы определяют набор свойств и методов, но не содержит их реализацию. Их натягивают на классы структуры и перечисления которые в свою очередь обязуется реализовать весь этот набор описанный в протоколе. Вот пример:
protocol Meowable {
func meow() // Протоколы в Swift только обозначают свойства
}Сегодня открылся третий спринт и в конце когорту ожидает первый мягкий дедлайн. А что если мне публиковать сюда посты раз в две недели, по окончанию каждого спринта?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6
5-я неделя обучения в практикуме окончена
Изучил базовые команды терминала
macOS:
Зарегистрировал аккаунт в github и изучил основы работы в системе контроля версий:
Новая теория о структуре проекта в Xcode. Я узнал про UIKit, его классы и методы. Научился располагать элементы интерфейса в main сториборде и привязывать их к коду так, чтобы при помощи target-action происходили изменения на экране. Ниже код простого приложения с кнопкой при нажатии на которую происходит смена картинки:
Я закончил с теорией третьего спринта и у меня есть время чтобы выполнить по нему задание 🫰🏻
😍
😍
Изучил базовые команды терминала
macOS:
pwd #показывает где находится пользователь
ls #показывает что находится вокруг, файлы и папки
cd desktop #переходит в папку desktop если она рядом
cd .. #на уровень вверх
touch task.txt #создание файла task.txt
mkdir new-folder #создание папки
rm rmdir mv #и ещё несколько базовых команд терминала
Зарегистрировал аккаунт в github и изучил основы работы в системе контроля версий:
echo "Создадим новый файл readme" >> README.md #создание изменений в локальном репозитории
git add README.md #отслеживание изменений в локальном репозитории
git commit -m "Добавление readme файла" #фиксация изменений
git push #публикация изменений в удалённый репозиторий
Новая теория о структуре проекта в Xcode. Я узнал про UIKit, его классы и методы. Научился располагать элементы интерфейса в main сториборде и привязывать их к коду так, чтобы при помощи target-action происходили изменения на экране. Ниже код простого приложения с кнопкой при нажатии на которую происходит смена картинки:
class ViewController: UIViewController {
// аутлет привязывает картинку к коду
@IBOutlet weak var skyImageView: UIImageView!
private var isSun: Bool = false
// Например такой код добавляет кнопку:
@IBOutlet weak var changeButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
skyImageView.image = UIImage(systemName: "moon")
skyImageView.tintColor = .gray
}
// а такой меняет ранее добавленную картинку при ее нажатии:
@IBAction func buttonDidTap(_ sender: Any) {
if isSun {
skyImageView.image = UIImage(systemName: "moon")
} else {
skyImageView.image = UIImage(systemName: "sun.max")
}
isSun.toggle()
}
}Я закончил с теорией третьего спринта и у меня есть время чтобы выполнить по нему задание 🫰🏻
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤6
6-я неделя обучения окончена
Повторил работу в терминале с локальными файлами и репозиториями на github. Практикум поставил задачу написать приложение кликер и оформить его pull request'ом для сдачи на ревью. Учитывая что в третьем спринте нам уже показывали как делать label, button, action и outlet, не составило труда просто добавить функцию с инкрементом (+=1) в место action для кнопки. Плюс я еще добавил кнопку сброса данных (=0) и массив из стандартных цветов чтобы каждый раз при нажатии менялся цвет фона приложения
Выше исходный код моего приложения. Я убрал из него все комментарии по рекомендации ревьюера, инкапсулировал методы и свойства, а также выровнял строчки. Получилось хорошо. Сегодня начался четвёртый спринт, я думаю что у меня всё получается, хотя становится ощутимо сложнее
😍
😍
Повторил работу в терминале с локальными файлами и репозиториями на github. Практикум поставил задачу написать приложение кликер и оформить его pull request'ом для сдачи на ревью. Учитывая что в третьем спринте нам уже показывали как делать label, button, action и outlet, не составило труда просто добавить функцию с инкрементом (+=1) в место action для кнопки. Плюс я еще добавил кнопку сброса данных (=0) и массив из стандартных цветов чтобы каждый раз при нажатии менялся цвет фона приложения
import UIKit
final class ViewController: UIViewController {
@IBOutlet weak private var label: UILabel!
@IBOutlet weak private var button: UIButton!
@IBOutlet weak private var reset: UIButton!
private var counter = 0
private let colors = [
UIColor.systemRed,
UIColor.systemGreen,
UIColor.systemBlue,
UIColor.systemYellow,
UIColor.systemOrange,
UIColor.systemPurple,
UIColor.systemPink,
UIColor.systemTeal
]
override func viewDidLoad() {
super.viewDidLoad()
updateCounter()
changeBackground()
}
@IBAction private func countInCrem(_ sender: Any) {
counter += 1
updateCounter()
changeBackground()
}
private func updateCounter() {
label.text = "\(counter)"
}
private func changeBackground() {
let randomIndex = Int.random(in: 0..<colors.count)
view.backgroundColor = colors[randomIndex]
}
@IBAction private func resetCount(_ sender: UIButton) {
counter = 0
updateCounter()
}
}
Выше исходный код моего приложения. Я убрал из него все комментарии по рекомендации ревьюера, инкапсулировал методы и свойства, а также выровнял строчки. Получилось хорошо. Сегодня начался четвёртый спринт, я думаю что у меня всё получается, хотя становится ощутимо сложнее
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍3
7-я неделя обучения окончена
Познакомился с Figma, узнал как импортировать шрифты и цвета в ассеты проекта. Оформил launchscreen в учебном проекте и main.storyboard. Первый раз мне было сложно оформлять элементы интерфейса в иерархию, стек и грамотно выстраивать констрейнты. Разок откатывался на шаг назад и переделывал. В итоге всё получилось
На следующей неделе реализую логику приложения по этому экрану и отправлю на ревью, но об этом позже. Если вам интересно то что я делаю - лайкайте сторис!
😍
😍
Познакомился с Figma, узнал как импортировать шрифты и цвета в ассеты проекта. Оформил launchscreen в учебном проекте и main.storyboard. Первый раз мне было сложно оформлять элементы интерфейса в иерархию, стек и грамотно выстраивать констрейнты. Разок откатывался на шаг назад и переделывал. В итоге всё получилось
На следующей неделе реализую логику приложения по этому экрану и отправлю на ревью, но об этом позже. Если вам интересно то что я делаю - лайкайте сторис!
Please open Telegram to view this post
VIEW IN TELEGRAM
8❤11
Восьмая неделя обучения окончена
Я сдал задачу по четвёртому спринту. Сделал всю логику приложения по учебнику и сверстал экран по готовому дизайнерскому решению из Figma. Всё вроде проверил, но оказалось что забыл добавить скругление краёв у
До этого была проблема с тем, что добавленные в проект шрифты не отображались в разворачивающемся списке Xcode. Решил эту проблему прописав в полный адрес
😍
😍
Я сдал задачу по четвёртому спринту. Сделал всю логику приложения по учебнику и сверстал экран по готовому дизайнерскому решению из Figma. Всё вроде проверил, но оказалось что забыл добавить скругление краёв у
UIimageView. Сдал со второго разаДо этого была проблема с тем, что добавленные в проект шрифты не отображались в разворачивающемся списке Xcode. Решил эту проблему прописав в полный адрес
Resources/YS Display-Medium.ttf включая папку где эти шрифты находятсяPlease open Telegram to view this post
VIEW IN TELEGRAM
🔥8
Я, Дмитрий М., автор канала "Я обязательно стану iOS разработчиком", ответственно заявляю о нижеследующем:
Находясь в здравом уме и твёрдой памяти, в целях цифровой и информационной гигиены, осознанно и добровольно отказываюсь от просмотра ютуба и/или иных источников видео, а также исключаю из своей жизни любые видеоигры на любом устройстве и настольные игры. С даты выхода этой публикации на канале @snowFlakeIos сроком равным дате окончания седьмого спринта и при условии принятия ревьюером последней версии учебного приложения MovieQuiz (окончание первого блока обучения в Яндекс практикуме).
Исключением могут быть записи уроков в рамках проходимого мною обучения по iOS разработке и созвоны с наставником и/или куратором.
😍
😍
😩
Находясь в здравом уме и твёрдой памяти, в целях цифровой и информационной гигиены, осознанно и добровольно отказываюсь от просмотра ютуба и/или иных источников видео, а также исключаю из своей жизни любые видеоигры на любом устройстве и настольные игры. С даты выхода этой публикации на канале @snowFlakeIos сроком равным дате окончания седьмого спринта и при условии принятия ревьюером последней версии учебного приложения MovieQuiz (окончание первого блока обучения в Яндекс практикуме).
Исключением могут быть записи уроков в рамках проходимого мною обучения по iOS разработке и созвоны с наставником и/или куратором.
Дата: 13 марта 2025
Подпись: Please open Telegram to view this post
VIEW IN TELEGRAM
🏆9❤3👾1
Девятая неделя обучения окончена
Разделил ответственности внутри учебного приложения на разные классы и протоколы, расположив код из главного контроллера во внешние swift файлы. Информация в курсе подаётся хорошо, но я чувствую что моего контекстного окна нехватает. Приходится один и тот же материал спрашивать у нейронки чтобы вникнуть. Иногда я понимаю полностью, но часто оказывается что во время практики я не могу написать код который надо. Приходится использовать подсказки учебника, ответы наставника, помощь студентов и большую языковую модель
Нам заранее сказали что этот спринт объёмный, так оно и есть, а в конце надо ещё сдать допиленное приложение на ревью
😍
😍
Разделил ответственности внутри учебного приложения на разные классы и протоколы, расположив код из главного контроллера во внешние swift файлы. Информация в курсе подаётся хорошо, но я чувствую что моего контекстного окна нехватает. Приходится один и тот же материал спрашивать у нейронки чтобы вникнуть. Иногда я понимаю полностью, но часто оказывается что во время практики я не могу написать код который надо. Приходится использовать подсказки учебника, ответы наставника, помощь студентов и большую языковую модель
Нам заранее сказали что этот спринт объёмный, так оно и есть, а в конце надо ещё сдать допиленное приложение на ревью
Please open Telegram to view this post
VIEW IN TELEGRAM
🙏5👍1
10-я неделя обучения окончена
(закрыл пятый спринт из 26)
Успешно сдал (с первого раза) обновленную версию учебного приложения, но было сложно. Видимо пока что это самый тяжелый и обьемный спринт из всего моего опыта обучения в практикуме, посмотрим что будет дальше
Как я уже писал в своих сторис, на некоторых этапах создания и обновления кода по учебнику я смотрел и понимал что он делает, но стоило мне открыть новый урок, где опять надо было все поменять - начиналось страшное. Я буквально после каждого перемещения кода терял нить повествования алгоритма работы приложения. Мне помогла вырулить большая языковая модель, про это я тоже писал в своих сторис
Сегодня открываем шестой спринт где нам предстоит ознакомиться с новыми терминами и применить их на практике. Изучим многопоточность, клиент-серверное взаимодействие, URLSession, URLRequest, сериализацию и десериализацию
😍
😍
(закрыл пятый спринт из 26)
Успешно сдал (с первого раза) обновленную версию учебного приложения, но было сложно. Видимо пока что это самый тяжелый и обьемный спринт из всего моего опыта обучения в практикуме, посмотрим что будет дальше
Как я уже писал в своих сторис, на некоторых этапах создания и обновления кода по учебнику я смотрел и понимал что он делает, но стоило мне открыть новый урок, где опять надо было все поменять - начиналось страшное. Я буквально после каждого перемещения кода терял нить повествования алгоритма работы приложения. Мне помогла вырулить большая языковая модель, про это я тоже писал в своих сторис
Сегодня открываем шестой спринт где нам предстоит ознакомиться с новыми терминами и применить их на практике. Изучим многопоточность, клиент-серверное взаимодействие, URLSession, URLRequest, сериализацию и десериализацию
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍9
11-я неделя обучения окончена
На этой неделе я изучал многопоточность. В Swift она реализуется через GCD (Grand Central Dispatch) и OperationQueue. Состоит из:
1. Очереди (DispatchQueue, OperationQueue) – управляют выполнением задач
2. Потоки (Threads) – физические или логические единицы выполнения кода
3. Задачи (Tasks) – конкретные блоки кода, которые выполняются в потоках
Еще изучил основы клиент-серверного взаимодействия через http запросы. Также было немного истории. Перечислили стандартные коды ошибок и типы запросов к серверу (GET, POST, PUT, DELETE)
На следующей неделе начну дополнять учебное приложение, где оно научиться работать с сетью
😍
😍
На этой неделе я изучал многопоточность. В Swift она реализуется через GCD (Grand Central Dispatch) и OperationQueue. Состоит из:
1. Очереди (DispatchQueue, OperationQueue) – управляют выполнением задач
2. Потоки (Threads) – физические или логические единицы выполнения кода
3. Задачи (Tasks) – конкретные блоки кода, которые выполняются в потоках
Еще изучил основы клиент-серверного взаимодействия через http запросы. Также было немного истории. Перечислили стандартные коды ошибок и типы запросов к серверу (GET, POST, PUT, DELETE)
На следующей неделе начну дополнять учебное приложение, где оно научиться работать с сетью
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7
12-я неделя обучения окончена
Я на неделю раньше закончил шестой спринт и сдал учебное приложение в котором оно берет данные из открытого API сервиса IMDb (Топ-250 фильмов). Изучил URLSession и парсинг JSON
Но интереснее то, что я начал изучать бекенд на swift. Пишу своего Telegram бота по обработке видео контента отправленного пользователем с возвращением ему видеокружка. Это сложно, особенно на этапе дебага и тестов
Сначала писал с ChatGPT, потом переключился на курсор AI и понял что это именно тот сервис, на который стоит подписаться. К сожалению я быстро исчерпал свои бесплатные запросы (50 в месяц) и переключился на grok3. Продолжу работу над своим pet проектом и изучу сетевое взаимодействие самостоятельно, ловя и исправляя ошибки, дополняя функционал.
Сегодня стартовал финальный (седьмой) спринт первого блока моего обучения
😍
😍
Я на неделю раньше закончил шестой спринт и сдал учебное приложение в котором оно берет данные из открытого API сервиса IMDb (Топ-250 фильмов). Изучил URLSession и парсинг JSON
Но интереснее то, что я начал изучать бекенд на swift. Пишу своего Telegram бота по обработке видео контента отправленного пользователем с возвращением ему видеокружка. Это сложно, особенно на этапе дебага и тестов
Сначала писал с ChatGPT, потом переключился на курсор AI и понял что это именно тот сервис, на который стоит подписаться. К сожалению я быстро исчерпал свои бесплатные запросы (50 в месяц) и переключился на grok3. Продолжу работу над своим pet проектом и изучу сетевое взаимодействие самостоятельно, ловя и исправляя ошибки, дополняя функционал.
Сегодня стартовал финальный (седьмой) спринт первого блока моего обучения
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍1
13-я неделя обучения окончена 💫
Прошел теорию по созданию юнит тестов и добавил два файла в функционал учебного приложения. Изучил UI тестирование по основной логике проекта и покрыл ими постеры, работу кнопок, изменения счетчика вопросов и появление окна алерта с результатами викторины
Изучил архитектуру MVP для приложений. Принципы YAGNI, KISS и DRY. Первые два требуют не усложнять код, а последний наоборот, вносит абстракций чтобы исключить повторы
Наконец-то мы дошли до первого упоминания принципа SOLID. Я долго этого ждал, ведь это самый стабильный набор правил при написании приложений и сервисов. По нему есть много лекций и книг, но в этом курсе нам совсем немного про него рассказали
⚙️
😍
😍
Прошел теорию по созданию юнит тестов и добавил два файла в функционал учебного приложения. Изучил UI тестирование по основной логике проекта и покрыл ими постеры, работу кнопок, изменения счетчика вопросов и появление окна алерта с результатами викторины
Изучил архитектуру MVP для приложений. Принципы YAGNI, KISS и DRY. Первые два требуют не усложнять код, а последний наоборот, вносит абстракций чтобы исключить повторы
Наконец-то мы дошли до первого упоминания принципа SOLID. Я долго этого ждал, ведь это самый стабильный набор правил при написании приложений и сервисов. По нему есть много лекций и книг, но в этом курсе нам совсем немного про него рассказали
> На следующей неделе начинаю рефакторинг учебного приложения под архитектуру MVP Please open Telegram to view this post
VIEW IN TELEGRAM
❤7🫡1
𝚂𝚗𝚘𝚠𝙱𝚊𝚕𝚕𝙲𝚘𝚍𝚎
Я, Дмитрий М., автор канала "Я обязательно стану iOS разработчиком", ответственно заявляю о нижеследующем: Находясь в здравом уме и твёрдой памяти, в целях цифровой и информационной гигиены, осознанно и добровольно отказываюсь от просмотра ютуба и/или иных…
Досрочно закрыл седьмой спринт и теперь могу смотреть ютуб, играть в игры на айфоне и тискать любимую девочку. Публикация о том как я дорабатывал приложение и подробный рассказ про обучение в Яндекс практикуме выйдет как всегда в четверг к 9:41
😍
😍
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍5🔥1


