𝚂𝚗𝚘𝚠𝙱𝚊𝚕𝚕𝙲𝚘𝚍𝚎
240 subscribers
112 photos
3 videos
25 links
Простым языком про it, ai и жизнь инди разработчика @Veoeo. Группа: @CodeBallSnow
Download Telegram
6-я неделя обучения окончена

Повторил работу в терминале с локальными файлами и репозиториями на 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. Первый раз мне было сложно оформлять элементы интерфейса в иерархию, стек и грамотно выстраивать констрейнты. Разок откатывался на шаг назад и переделывал. В итоге всё получилось

На следующей неделе реализую логику приложения по этому экрану и отправлю на ревью, но об этом позже. Если вам интересно то что я делаю - лайкайте сторис!
😍
😍
Please open Telegram to view this post
VIEW IN TELEGRAM
8❤11
Восьмая неделя обучения окончена

Я сдал задачу по четвёртому спринту. Сделал всю логику приложения по учебнику и сверстал экран по готовому дизайнерскому решению из Figma. Всё вроде проверил, но оказалось что забыл добавить скругление краёв у UIimageView. Сдал со второго раза

До этого была проблема с тем, что добавленные в проект шрифты не отображались в разворачивающемся списке Xcode. Решил эту проблему прописав в полный адрес Resources/YS Display-Medium.ttf включая папку где эти шрифты находятся
😍
😍
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8
Я, Дмитрий М., автор канала "Я обязательно стану iOS разработчиком", ответственно заявляю о нижеследующем:

Находясь в здравом уме и твёрдой памяти, в целях цифровой и информационной гигиены, осознанно и добровольно отказываюсь от просмотра ютуба и/или иных источников видео, а также исключаю из своей жизни любые видеоигры на любом устройстве и настольные игры. С даты выхода этой публикации на канале @snowFlakeIos сроком равным дате окончания седьмого спринта и при условии принятия ревьюером последней версии учебного приложения MovieQuiz (окончание первого блока обучения в Яндекс практикуме).

Исключением могут быть записи уроков в рамках проходимого мною обучения по iOS разработке и созвоны с наставником и/или куратором.
😍
😍
Дата: 13 марта 2025
Подпись:
😩
Please open Telegram to view this post
VIEW IN TELEGRAM
🏆9❤3👾1
Девятая неделя обучения окончена

Разделил ответственности внутри учебного приложения на разные классы и протоколы, расположив код из главного контроллера во внешние swift файлы. Информация в курсе подаётся хорошо, но я чувствую что моего контекстного окна нехватает. Приходится один и тот же материал спрашивать у нейронки чтобы вникнуть. Иногда я понимаю полностью, но часто оказывается что во время практики я не могу написать код который надо. Приходится использовать подсказки учебника, ответы наставника, помощь студентов и большую языковую модель

Нам заранее сказали что этот спринт объёмный, так оно и есть, а в конце надо ещё сдать допиленное приложение на ревью
😍
😍
Please open Telegram to view this post
VIEW IN TELEGRAM
🙏5👍1
10-я неделя обучения окончена
(закрыл пятый спринт из 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)

На следующей неделе начну дополнять учебное приложение, где оно научиться работать с сетью
😍
😍
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7
12-я неделя обучения окончена

Я на неделю раньше закончил шестой спринт и сдал учебное приложение в котором оно берет данные из открытого 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. Я долго этого ждал, ведь это самый стабильный набор правил при написании приложений и сервисов. По нему есть много лекций и книг, но в этом курсе нам совсем немного про него рассказали

> На следующей неделе начинаю рефакторинг учебного приложения под архитектуру 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
14-я неделя обучения окончена 💫

🥶олностью отрефакторил учебный проект из базовой MVC архитектуры в MVP. На это ушло три дня, в этот раз я опасно близко подошел к жёсткому дедлайну. Успел сдать свой pull request за три дня до крайнего срока

Проблема была в том, что мой проект заметно отличался от "предполагаемого Яндексом". Собственно в одном из последних уроков они так и написали приложив архив с готовым проектом MovieQuiz. Разумеется я смотреть его не стал и доделал свой вариант до MVP по учебнику, борясь с возникающими ошибками в Xcode. Unit тесты на несколько методов написаны и проходят. А вот тесты пользовательского интерфейса это тема для отдельного обсуждения

UI тесты я написал как положено по учебнику, разве что название алерта сменил и убрал кое что по мелочи для чистоты кода. При запуске тесты интерфейса то показывали красные крестики, то зеленые галочки. Всего их было четыре, проверил код, поработал с нейронкой, в итоге написал наставнику приложив свой github. Он ответил что все UI тесты проходят. Оказывается включенный vpn искажает поведение интерфейса учебного приложения. Я начал об этом догадываться когда програмное прокликивание кнопок тестами начало застывать на разных вопросах викторины. В некоторых случаях не доходя до финального алерта игры. В итоге выключил vpn и все UI тесты показали зеленые галочки. Отправил pull request код-ревьюеру и он его аппрувил с первого раза. Первый модуль моего обучения успешно завершен. Было стрессово, но я справился, пора отдохнуть

> Курс iOS разработчика пройдён на 41%. Впереди неделя каникул
😍
😍
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7
Неделя каникул окончена 💫

Я дорабатывал свой Telegram сервис по обработке видео. С помощью cursor AI собрал mini app и настроил базовый UI для взаимодействия с backend на Swift

Фронтенд написан на HTML CSS и JavaScript. Он дает пользователю возможность загрузить видео, выбрать область для будущего видео кружочка, передать эту информацию на backend для обработки и в итоге получить видео кружочек из выбранной области. Пока что я добился того, что пользователь отправляет превью для обработки с соотношением сторон 1:1. Таким образом получая не искаженный кружочек (как было ранее), а пропорционально верное изображение. К сожалению пока что обрезка осуществляется только по центральной площади видео, а не
по площади выбранной пользователем. Доработаем функционал позже

> сегодня открылся третий модуль моего обучения по iOS разработке, я нахожусь на 8-м спринте из 26
😍
😍
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6
Channel name was changed to «Я стану iOS разработчиком»
15-я неделя обучения окончена 💫

🥶осьмой спринт длился всего одну неделю. За это время я инициализировал проект "ImageFeed" с бесконечной лентой изображений. Используя UITableView и работу с кастомными ячейками освоил базу по таблицам. Настроил аутлеты от кнопки лайка, мок-картинки и от лейбла с датой её создания. Затем кодом проставил лайки на все нечётные изображения что добавил в ассеты проекта, всего их двадцать штук. Проверил всё по чеклисту и сдал на ревью. Через несколько часов его аппрувили на моём github

> 8 из 26 спринтов пройдены, впереди девятый, он продлится стандартные две недели
😍
😍
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6
16-я неделя обучения окончена 💫

На девятом спринте я научился ставить дополнительные контроллеры в main.storyboard. Установил между ними связь через Segway. Изучил UITabBarController, UINavigationController и собрал SingleImageView как модальный экран. Потом добавил на него UIScrollView чтобы пользователь мог зумить картинку, а также прикрутил кнопку возврата на предыдущий экран и кнопку шэринга картинки. Сверстал экран профиля сначала через Interface builder, потом удалил весь UI и сделал его кодом

> 9 из 26 спринтов пройдены. Впереди 10-й спринт и неделя занятий своим пет проектом, потому что я опять выполнил все задачи по учёбе заранее и закрыл спринт
😍
😍
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤3
Неделя сайд проекта окончена

Поскольку девятый спринт я завершил на неделю раньше, то у меня освободилось время для изучения материалов по созданию AI инфлюенсеров. Попробовал несколько популярных сервисов для генерации изображений. Ещё они создают видео по загруженной картинке и голос по mp3 сэмплам, а также синхронизируют движение губ

Позже выяснил что мой MacBook позволяет тренировать свою lora на выбранную базовую модель по датасету всего из нескольких фотографий. Создал три ситуационных образа для моего первого персонажа. Теперь хочу с помощью ChatGPT написать ей легенду, увлечения, окружение и устойчивые фразы. Голос сделаю в Kling или Hedra, а на выходных продумаю способ продвижения и монетизации проекта

> сегодня стартовал 10-й спринт, он продлится стандартные две недели. Продолжу погружаться в iOS разработку
😍
😍
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7❤3⚡2
17-я неделя обучения окончена 💫

Научился работать с Unsplash API и узнал про алгоритм Oauth2. Создал экран с WKWebView от сервиса Unsplash на который ссылается кнопка "Войти". Добавил отображение загрузки этого экрана через UIProgressView реализовав его механику с помощью KVO. Ведь при переходе к экрану авторизации на медленном интернете пользователь может подумать что приложение зависло, а так он поймёт что веб страничка во встроенном браузере загружается

Разобрал протокол HTTP на примере POST запроса авторизационного токена и получил ответ сервера. Декодировал JSON объект через уже известный мне класс JSONDecoder и полностью завершил написание логики авторизации на экране WKWebView

> половина 10-го спринта позади. Далее займусь созданием SplashScreen для приложения ImageFeed

😍
😍
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81