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

Пересматриваю лекции от Swiftbook. В этот раз не тот вариант по которым делал домашние задания и конспекты, а версию от 2023 года на свежем Xcode и актуальной версии языка. Дошёл до ООП, классов и инкапсуляции

11 ноября утро заболел и не смог досмотреть лекцию, кое как отработал в найме и еле живой вернулся домой где Ася меня буквально спасла лекарствами, вкусной едой и своей заботой

12 ноября был выходной, я уже выздоровел, но решил набраться сил, остаться дома и не загружать голову знаниями

13 ноября выходной, уже полностью восстановился и к вечеру пересмотрел лекцию ещё раз. Продолжаю двигаться в своём ритме..
😍
😍
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4💩2
17-я неделя

Начал и закончил ознакомление с бесплатной частью курса iOS developer от Яндекс практикум. Кратко и ёмко пояснили за язык, востребованность профессии и формат обучения спринтами

На примере учебного Swift проекта ознакомили с Xcode и структурой файлов. Мне это по душе, то что надо. Всё время до этого урока я работал в playground и постигал базовую логику и синтаксис Swift. Яндекс же, сразу погружает в среду разработки и позволяет по требованиям и гайдам изменить что-то в проекте. Это интереснее, хотя я понимаю что код я хочу и буду писать в будущем
😍
😍
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
This media is not supported in your browser
VIEW IN TELEGRAM
18-я неделя

Я решил пройти курс "iOS-разработчик расширенный" от Яндекс практикум. Буду оплачивать его каждый месяц и конспектировать свои успехи с огорчениями на этом канале. В бесплатной части курса погрузили в среду разработки на тестовом приложении и позволли немного его изменить, было интересно

Ещё я составил себе план из двенадцати пунктов на 2025 год, записал ожидемые доходы (из всех моих источников) и расходы, с затратами на обучение. План включает в себя плотную работу на протяжении декабря 2024 года и уход из найма осенью 2025

По моим ощущениям и взвешенным расчётам - всё получится
😍😍😍
😍
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍1
19-я неделя как я решил стать iOS разработчиком

Вчера начался последний месяц усиленной работы в найме. Весь декабрь я тружусь по 12 часов на складе. Мне это нужно сейчас, тем более что силы и желание имеются. Главное это понимание для чего я всё затеял. У меня есть конкретная цель на последний месяц этого года. Потом буду трудиться в два раза меньше

Я обязательно накоплю денег чтобы оплатить учёбу
😍
😍
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1🔥1
20-я неделя как я решил стать iOS разработчиком

Чтож, очередной подъём в 7:30 утра и первая трудовая неделя декабря позади. Я решил накопить 42000 на стоимость трёх последних месяцев учёбы, тк осенью 2025 собираюсь уходить со склада чтобы полностью сосредоточиться на разработке

Думаю вот ещё над чем: а завести мне ютуб канал или достаточно телеграм?
😍
😍
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5
21-я неделя как я решил стать iOS разработчиком

Понизил таргет по деньгам которые заработаю в декабре. Уже собрал семнадцать из сорока двух тысяч которые обеспечат мне оплату трёх последних месяцев обучения. Скорее всего оставшуюся часть (около пяти тысяч) заработаю уже с дохода в январе. Сейчас всё планомерно отправляю на накопительный счёт Ozon банка под 15% годовых

Начал проходить последнюю главу бесплатной части курса "iOS разработчик расширенный" от Яндекс практикум. Ранее писал что начал и закончил вводные уроки, но оказалось что я был невнимателен, ведь там ещё материалы которые необходимо изучить
😍
😍
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
22-я неделя как я решил стать iOS разработчиком

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

Моя цель стать айтишником приближается, и я всё для этого делаю
😍
😍
Please open Telegram to view this post
VIEW IN TELEGRAM
🫡6🔥4
24-я неделя как я решил стать iOS разработчиком

Полностью закончил бесплатную часть курса "iOS разработчик расширенный". Последним заданием было доработать тестовое приложение со стороны противника и прописать в коде увеличение очков при попадании мяча в ворота игрока. Вся работа заняла около двадцати минут размышлений и добавления необходимого кода

Сегодня стартует основная часть моего курса
😍
😍
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5
1-я неделя обучения в практикуме и 25-я как я решил стать iOS разработчиком

Скоро я перейду на счёт прошедших недель не с момента когда я решил стать разработчиком, а с даты начала платной части обучения. Публикации на этом канале по прежнему будут выходить по четвергам в 9:41

Чтож, первая неделя прошла хорошо. Меня пригласили в отдельный мессенджер с информацией, новостями и наставниками. Ещё я вступил в телеграм чат для свободного общения студентов 30й когорты

Структура уроков понятна, теория объясняется доходчиво и без лишних отвлечений. Домашние задания первого спринта в меру сложны
😍
😍
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
2-я неделя обучения в практикуме и 26-я как я решил стать iOS разработчиком

Закончил первый спринт решив в нём почти все таски. Разумеется пришлось подумать и местами погуглить. Иногда встречались неявные решение авторов

Например надо создать массив чисел от 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 разработчиком

Первая неделя второго спринта закончилась, а я освоил только структуры и опционалы. Видимо стоит ускорить прохождение курса, набрать темп на следующие месяцы и не понижая скорости его закончить. Ниже пример задачки по структурам:

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-я неделя обучения в практикуме окончена

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

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:

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) и массив из стандартных цветов чтобы каждый раз при нажатии менялся цвет фона приложения

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