Forwarded from Semyon
Такс, 10 минут до дэйли, так что супер краткий фаст:
1. Так выглядит резюме, которое просто лежит на хх (человек не откликался к нам). Как видите контакты скрыты и чтобы их открыть, нужно =потратить деньги=
2. Так выглядит контакт после отклика или после того как куплено открытие контакта (все контакты есть и видна история откликов).
3. Так выглядит =резюме в подарок=. При размещении 1-ой вакансии, ХЭХЭ с барского плеча отсыпает 10-20 резюмешек, чтобы могли разживиться эйчары (контакты тут открыты, это "вьюшка" до перехода в резюме)
1. Так выглядит резюме, которое просто лежит на хх (человек не откликался к нам). Как видите контакты скрыты и чтобы их открыть, нужно =потратить деньги=
2. Так выглядит контакт после отклика или после того как куплено открытие контакта (все контакты есть и видна история откликов).
3. Так выглядит =резюме в подарок=. При размещении 1-ой вакансии, ХЭХЭ с барского плеча отсыпает 10-20 резюмешек, чтобы могли разживиться эйчары (контакты тут открыты, это "вьюшка" до перехода в резюме)
🔥11❤3👏3
#заметка #notion
Решил добавлять дополнительные материалы из WWDC в темы, которые помогут изучить материал не только централизировано, как например будет с "Изучение SwiftUI с 0 до PRO", но и точечно - как уже начал сейчас, но что это значит?
Всё просто, есть например тема - SwiftUI: View identity и вот есть ключевые WWDC с просмотром которых можно получить дополнительное понимание от инженеров Apple.
И вот эти напоминания будут лежать в нужных местах.
Зашел почитать за какую-то тему, увидел рекомендацию посмотреть WWDC для лучшего понимания, дальше уже сам, ВСЁ! Тем самым ты не потеряешь и при этом будешь знать нужные темы.
Решил добавлять дополнительные материалы из WWDC в темы, которые помогут изучить материал не только централизировано, как например будет с "Изучение SwiftUI с 0 до PRO", но и точечно - как уже начал сейчас, но что это значит?
Всё просто, есть например тема - SwiftUI: View identity и вот есть ключевые WWDC с просмотром которых можно получить дополнительное понимание от инженеров Apple.
И вот эти напоминания будут лежать в нужных местах.
- Не нужно ходить по углам и искать
- Не нужно думать, что что-то упусти
- Удобно и полезно
Зашел почитать за какую-то тему, увидел рекомендацию посмотреть WWDC для лучшего понимания, дальше уже сам, ВСЁ! Тем самым ты не потеряешь и при этом будешь знать нужные темы.
👍8🔥5🎉3❤2
Я понимаю зачем нужны associated values и умею с эти работать и применять
Anonymous Poll
17%
100% / 100%
18%
80% / 80%
11%
60% / 60%
18%
50% / 50%
7%
40% / 40%
29%
Не знаю / не умею
#mini #app #сообщество
Чтобы вы понимали, разработка идёт уже почти 3 недели, позавчера была начата V3 с нуля, так как V2 был отфармотирована Claude Code и при этом он потёр коммиты для отката.
Теперь только через pull-request'ы и строгий GITFLOW с защитой Master, вот такой прикол этот **** отчибучил, причём такой команды в описании не было, он просто подключал Redis и переводил на ZOD архитектуру для большей типизации ошибок, и по какйо-то причине РЕШИЛ, ЧТО НАДО ОТФАРМОТИРОВАТЬ МНОЖЕСТВО КЛЮЧЕВЫХ ФАЙЛОВ и ВИДМО С НУЛЯ НАПИСАТЬ КРИВО, А чтобы придать бодрости духа - потереть коммиты, рил, как-будто дэмон в него вселился вовремя работы, вот так 😄
Так - что всем тем, кто считает, что ИИ уже завтра заменит программистов - большой привет!👋
Чтобы вы понимали, разработка идёт уже почти 3 недели, позавчера была начата V3 с нуля, так как V2 был отфармотирована Claude Code и при этом он потёр коммиты для отката.
Теперь только через pull-request'ы и строгий GITFLOW с защитой Master, вот такой прикол этот **** отчибучил, причём такой команды в описании не было, он просто подключал Redis и переводил на ZOD архитектуру для большей типизации ошибок, и по какйо-то причине РЕШИЛ, ЧТО НАДО ОТФАРМОТИРОВАТЬ МНОЖЕСТВО КЛЮЧЕВЫХ ФАЙЛОВ и ВИДМО С НУЛЯ НАПИСАТЬ КРИВО, А чтобы придать бодрости духа - потереть коммиты, рил, как-будто дэмон в него вселился вовремя работы, вот так 😄
Так - что всем тем, кто считает, что ИИ уже завтра заменит программистов - большой привет!
Please open Telegram to view this post
VIEW IN TELEGRAM
😁17🤯10👍3❤2
Решение для работы с множественными ветками
Увидел в чате отличную статью о том, как перестать терять время при переключении между ветками Git.
Проблема, которую решает:
- Потеря незакоммиченных изменений при смене веток
- Пересборка проекта после каждого переключения
- Неудобство при code review чужих веток
Суть решения - git worktree: Вместо переключения веток создаём отдельные рабочие копии проекта, каждая смотрит на свою ветку. При этом все копии используют общий .git репозиторий.
Статья небольшая, внутри статьи находятся ключевые команды, преимущества над альтернативами и ограничения!🙅
Увидел в чате отличную статью о том, как перестать терять время при переключении между ветками Git.
Проблема, которую решает:
- Потеря незакоммиченных изменений при смене веток
- Пересборка проекта после каждого переключения
- Неудобство при code review чужих веток
Суть решения - git worktree: Вместо переключения веток создаём отдельные рабочие копии проекта, каждая смотрит на свою ветку. При этом все копии используют общий .git репозиторий.
Статья небольшая, внутри статьи находятся ключевые команды, преимущества над альтернативами и ограничения!
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Git. Скачем между ветками как древесные лягушки
Статей на тему много, но, видимо, недостаточно. Последние 10 лет в 4-х разных компаниях время от времени слышу от коллег: «Не могу пошарить экран с кодом, у меня другая ветка сейчас». «Не хочу...
👍8💯2🔥1
У кого есть аккаунт Paypal, можете на год взять бесплатно подписку: https://www.perplexity.ai/join/p/paypal-subscription
Perplexity AI
Perplexity is a free AI-powered answer engine that provides accurate, trusted, and real-time answers to any question.
❤2🎉2🔥1
#собеседование #middle
Есть популярная задача на capture list, value type и reference type в одном листе!
На этапе собеседования происходит жанглирования требя этими вещами:
— Убирается или добавляется capture list
— У объекта меняется семантика: был class -> стал struct
Текстовый разбор этой задачи как-всегда есть в ноушене, а вот видео обзор, причём грамотный и по-полочкам разложенный нашел.
Есть популярная задача на capture list, value type и reference type в одном листе!
На этапе собеседования происходит жанглирования требя этими вещами:
— Убирается или добавляется capture list
— У объекта меняется семантика: был class -> стал struct
Текстовый разбор этой задачи как-всегда есть в ноушене, а вот видео обзор, причём грамотный и по-полочкам разложенный нашел.
YouTube
Задача из Tinkoff: iOS Собеседование
Помогу получить оффер: https://www.alexeyparkhomenko.com
Потренироваться проходить собеседования: https://www.alexeyparkhomenko.com
Консультации: https://www.alexeyparkhomenko.com
0:00 Введение
0:47 Разбор задачи
2:50 Пример 1: Struct, Capture List
5:45…
Потренироваться проходить собеседования: https://www.alexeyparkhomenko.com
Консультации: https://www.alexeyparkhomenko.com
0:00 Введение
0:47 Разбор задачи
2:50 Пример 1: Struct, Capture List
5:45…
🔥12👍3👏3
Is this project dead? - Не такие слова хочется видеть в репозитории фастлейна. Но что делать, если всё к этому идет, и нужно какое-то решение?
Мой друг Макс не остался в стороне и законтребьютил решение. У себя в Plata они уже давно его используют.
Blimp - это "фастлейн на Swift": CLI / библиотека для автосборки и выката iOS-приложений, собранная как конструктор из SPM-пакетов и Swift Argument Parser.
Сейчас умеет архивировать, загружать билд в ASC, ждать обработку, раскидывать по TestFlight группам и отправлять на ревью.
Сертификаты пока не ведёт - для этого авторы предлагают временно юзать fastlane match.
Blimp - нативный Swift (SPM), минимум внешних зависимостей; легко встраивается в Swift-проекты / утилиты.
Уже закрывает ключевой happy-path: архив -> загрузка -> TestFlight группы -> ревью, но ещё не управляет сертификатами / профилями.
Удобно тянуть как библиотеку в свои Swift-утилиты: BlimpKit + чистый типобезопасный код.
Если кто пропустил воркшоп с Максом и как он в крупной компании лупендит CI / CD в соляного, то вот здесь крайне советую послушать.
Буду рад и признателен каждому, кто поставит звёздочку данному проекту: больше звёзд -> выше выдача -> больше людей контрибьютящих и помогающих в поиске багов.
(Текст не редактировать,информацию в скобках удалить,оплата назначается через 15 минут после публикации)
Мой друг Макс не остался в стороне и законтребьютил решение. У себя в Plata они уже давно его используют.
У нас cli поверх всех этих реп собирает все в единый вид. Подразумевается, что люди будут свой cli писать и собирать по кусочкам из нашего конструктора себе нужный результат.
Blimp - это "фастлейн на Swift": CLI / библиотека для автосборки и выката iOS-приложений, собранная как конструктор из SPM-пакетов и Swift Argument Parser.
Сейчас умеет архивировать, загружать билд в ASC, ждать обработку, раскидывать по TestFlight группам и отправлять на ревью.
Сертификаты пока не ведёт - для этого авторы предлагают временно юзать fastlane match.
Ключевые отличия:
Blimp - нативный Swift (SPM), минимум внешних зависимостей; легко встраивается в Swift-проекты / утилиты.
Уже закрывает ключевой happy-path: архив -> загрузка -> TestFlight группы -> ревью, но ещё не управляет сертификатами / профилями.
Удобно тянуть как библиотеку в свои Swift-утилиты: BlimpKit + чистый типобезопасный код.
На сегодня не управляет профилями / сертификатами - берём гибрид с fastlane match.
Если кто пропустил воркшоп с Максом и как он в крупной компании лупендит CI / CD в соляного, то вот здесь крайне советую послушать.
Буду рад и признателен каждому, кто поставит звёздочку данному проекту: больше звёзд -> выше выдача -> больше людей контрибьютящих и помогающих в поиске багов.
(Текст не редактировать,информацию в скобках удалить,оплата назначается через 15 минут после публикации)
🔥10❤5👍4
#заметка
Через 15 минут OpenAI будут представлять свой браузер общественности, интересно!
https://www.youtube.com/live/8UWKxJbjriY
Через 15 минут OpenAI будут представлять свой браузер общественности, интересно!
https://www.youtube.com/live/8UWKxJbjriY
YouTube
Introducing ChatGPT Atlas
Introducing our new browser, ChatGPT Atlas.
Sam Altman, Will Ellsworth, Adam Fry, Ben Goodger, Ryan O’Rouke, Justin Rushing, and Pranav Vishnu introduce ChatGPT Atlas — our new browser. Now available globally on macOS. Windows, iOS, and Android are coming…
Sam Altman, Will Ellsworth, Adam Fry, Ben Goodger, Ryan O’Rouke, Justin Rushing, and Pranav Vishnu introduce ChatGPT Atlas — our new browser. Now available globally on macOS. Windows, iOS, and Android are coming…
🔥4👍2❤1
#заметка Во вторник будут открыты двери для всех, кто подписан через BOOSTY / Telegram в MINI APP ☀️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13🎉7❤4
#swiftui #собеседование #middle
Code Review: экран с проблемами производительности
Ты открываешь Pull-Request и видишь такой код на review. Здесь может-быть:
1. Всё отлично
2. Что-то ОК, что-то не ОК
3. Множество чего не ОК
Пока-что можешь оценить, но но не запускай его в playground или проекте - это проверка себя, впервую очередь.
Code Review: экран с проблемами производительности
Ты открываешь Pull-Request и видишь такой код на review. Здесь может-быть:
1. Всё отлично
2. Что-то ОК, что-то не ОК
3. Множество чего не ОК
import Foundation
import UIKit
import SwiftUI
enum Achievement: Identifiable {
case notable
case cool
case minor
var id: UUID { UUID() }
}
struct User {
var avatar: UIImage?
var name: String
var bio: String
var achievements: [Achievement] = []
}
struct UsernameView: View {
let user: User
var body: some View {
// NB: реализация упрощена для упрощения восприятия
HStack {
if let avatar = user.avatar {
Image(uiImage: avatar)
}
Text(user.name)
}
}
}
struct ProfileView: View {
let user: User
var body: some View {
// NB: реализация упрощена для упрощения восприятия
Text(user.bio)
}
}
struct AchievementView: View {
var achievement: Achievement
var body: some View {
// ...
}
}
struct UserView: View {
@State var user: User
var body: some View {
ScrollView {
VStack {
UsernameView(user: user)
ProfileView(user: user)
ForEach(user.achievements) { achieve in
if achieve != .minor {
AchievementView(achievement: achieve)
}
}
TextField("Username", text: $user.name)
TextField("Bio", text: $user.bio)
}
}
}
}
Пока-что можешь оценить, но но не запускай его в playground или проекте - это проверка себя, впервую очередь.
👍4❤2🕊2
На самом деле количество проблем можно выделить разное, но сводиться они будут к одному. Ниже спойлер задачи сверху! 🔞
Давайте ниже рассмотрим, в чём же есть проблемы:
- Можно поправить как var id: String и внутри switch self и написать значения
- Можно поправить как var id: Self { self } и всё тип-топ
- Можно поправить как добавление String или Int к enum и реализовать var id: Int { rawValue } / var id: String { rawValue }
Зависит от того, что за элемент и что он показывает и т.д. Что уже говорить про 1-2К.
Если ты дополнишь этим пунктом, хоть он и не стоит в основной задаче, ты покажешь свою точность, что тебе важен не только код, но и сам продукт и его итоговый результат!
Соответсвенно важно не количество правильных минусов, а какие минусы ты нашел, что они пораждают и так-далее!
Поэтому я каждый раз и говорю, что такие практически задания на собеседование - это ТОП!
Проверяется не знания ради знания, а то, что ты будешь использовать каждый день в работе.
В этом плане у практических по UIKit с его ранлупами и прочим, есть большое поле на вопросы и познания глубины, но не достаёт практичности в применении на работе.
—Эта задача в ноушене
—Секция практических задач по SwiftUI
— Моковые собеседования по SwiftUI:один , два , три
P.S. Ставь лайк - если понравилась задача и разбор
1. var id: UUID { UUID() } - каждый раз, когда мы обращаемся в ForEach, мы получаем другое UUID. Из-за того, что id реализовано как computed property - id генерируется при каждом вызове.
- Можно поправить как var id: String и внутри switch self и написать значения
- Можно поправить как var id: Self { self } и всё тип-топ
- Можно поправить как добавление String или Int к enum и реализовать var id: Int { rawValue } / var id: String { rawValue }
2. VStack вместо LazyVStack / List. Тем самым при имении user.achievements равном даже как 100-300 элементов, мы можем иметь просадки в начале, потому-что сразу всё в память.
3. @State var user: User Хоть мы и передаем весь объект ProfileView, где используем только `user.bio`, у нас всё-равно будут ненужные re-evaluate и re-draw, даже когда мы не меняем bio.
4. HStack / VStack по-умолчанию имеют от 8 до 12 точек отступов, соответсвенно если явно не указать `spacing:0`, то будет расхождение с дизайном.
Если ты дополнишь этим пунктом, хоть он и не стоит в основной задаче, ты покажешь свою точность, что тебе важен не только код, но и сам продукт и его итоговый результат!
Соответсвенно важно не количество правильных минусов, а какие минусы ты нашел, что они пораждают и так-далее!
Поэтому я каждый раз и говорю, что такие практически задания на собеседование - это ТОП!
Проверяется не знания ради знания, а то, что ты будешь использовать каждый день в работе.
В этом плане у практических по UIKit с его ранлупами и прочим, есть большое поле на вопросы и познания глубины, но не достаёт практичности в применении на работе.
—
—
— Моковые собеседования по SwiftUI:
P.S. Ставь лайк - если понравилась задача и разбор
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9🔥4🎉2
👍1
#собеседование
До конца этого года планирую записать моковые собеседования план минимум - одно собеседрвание, максимум - два собеседования, сегодня сяду за материал.
Хочу отдельно по UIKit и отдельно Многопоточности, если есть материалы какие-то полезные, пожелания или просто фидбек, как-всегда в лс можно отписать🆗
До конца этого года планирую записать моковые собеседования план минимум - одно собеседрвание, максимум - два собеседования, сегодня сяду за материал.
Хочу отдельно по UIKit и отдельно Многопоточности, если есть материалы какие-то полезные, пожелания или просто фидбек, как-всегда в лс можно отписать
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥3❤2
#материалы #swiftui #изучение #attributegraph
В последнем разборе задачи code-review, которое спрашивают в одном крупном биг техе - я оставил ссылки для дополнительного изучения AttributeGraph в SwiftUI. Но я хотел бы поделиться этоми ссылками здесь и дополнить рекомендации.
Если ты планируешь идти на собеседование или изучить SwiftUI для своего развития - это 100% знания, которые тебе помогут.
1. Attribute graph by Chris Eidhof: статья и презентация в видео на YouTube
2. OpenAttributeGraph: open source implementation of Apple's Private framework - AttributeGraph which is a high performance computing engine written in C++ and Swift.
3. Untangling the AttributeGraph: редко где увидеть можно, но очень полезная
4. Thinking in SwiftUI: настоящая кладезь, п.1 на основе этой книги сделан
5. Сами знаете где и на русском языке
AttributeGraph - это приватный фреймворк. Знание и понимание концепций его работы, это уже очень многое тебе даст, как я уже говорил и в работе и на собеседовании.
Из-за того, что по нему мало информации в интернете - эти знания будут твоим большим преимуществом. Советую изучать даже в общих чертах, если не хочется погружаться.
Эта группа теперь открыта, поэтому можешь смело делать репосты полезных и интересных постов себе в избранное или друзья и коллегам.
В последнем разборе задачи code-review, которое спрашивают в одном крупном биг техе - я оставил ссылки для дополнительного изучения AttributeGraph в SwiftUI. Но я хотел бы поделиться этоми ссылками здесь и дополнить рекомендации.
Если ты планируешь идти на собеседование или изучить SwiftUI для своего развития - это 100% знания, которые тебе помогут.
1. Attribute graph by Chris Eidhof: статья и презентация в видео на YouTube
2. OpenAttributeGraph: open source implementation of Apple's Private framework - AttributeGraph which is a high performance computing engine written in C++ and Swift.
3. Untangling the AttributeGraph: редко где увидеть можно, но очень полезная
4. Thinking in SwiftUI: настоящая кладезь, п.1 на основе этой книги сделан
5. Сами знаете где и на русском языке
AttributeGraph - это приватный фреймворк. Знание и понимание концепций его работы, это уже очень многое тебе даст, как я уже говорил и в работе и на собеседовании.
Из-за того, что по нему мало информации в интернете - эти знания будут твоим большим преимуществом. Советую изучать даже в общих чертах, если не хочется погружаться.
Эта группа теперь открыта, поэтому можешь смело делать репосты полезных и интересных постов себе в избранное или друзья и коллегам.
🔥7👍1
#autolayout #uikit
Представь, что ты делаешь интерфейс приложения, которое должно корректно работать как при LTR: left-to-right, так и RTL: right-to-left, языках. Какие констрейнты следует использовать и почему?
Представь, что ты делаешь интерфейс приложения, которое должно корректно работать как при LTR: left-to-right, так и RTL: right-to-left, языках. Какие констрейнты следует использовать и почему?
Anonymous Quiz
8%
A) Использовать left и right, потому что они автоматически переворачиваются при RTL.
82%
B) Использовать leading и trailing, потому что они зависят от направления и адаптируются при RTL.
5%
C) Нет разницы, Auto Layout сам всё перевернёт, независимо от выбранных якорей.
5%
D) Использовать leading только для текста, а для вью - left.
🔥6👍4
#swiftui #task
SwiftUI: почему task не перезапускается при смене данных
- task {} и onAppear не имеют автоматического трекинга зависимостей.
- Они запускаются только при “появлении” view, а что именно считается появлением - в SwiftUI до сих пор размыто.
- Если внутри
SwiftUI: почему task не перезапускается при смене данных
- task {} и onAppear не имеют автоматического трекинга зависимостей.
- Они запускаются только при “появлении” view, а что именно считается появлением - в SwiftUI до сих пор размыто.
- Если внутри
task используется url, а значение меняется - код не выполнится повторно, потому что задача не пересоздаётся...For example, the task will re-run when you put the image loader in a List and scroll it out of bounds and back into bounds. Likewise, when you put the image loader in a tab view, the task will also run again when switching tabs.
chris.eidhof.nl
Task Identity — Chris Eidhof
👍2🔥2