В ноушене вышла очередная статья посвященная внедренюю зависимостей.
Попытался разобрать:
А также примеры с кодом:
Please open Telegram to view this post
VIEW IN TELEGRAM
Как ускорить время вызова приватного кода и ускорить сборку
Крутой способ хакнуть язык и ускорить билды с помощью оператора _silgen_name. Там мы помечаем методы и создаем прямые ссылки в скомпилированном коде.
Этот хак часто используется в исходниках Swift. Но стоит его юзать аккуратно, тк могут быть непредвиденные последствия.
Крутой способ хакнуть язык и ускорить билды с помощью оператора _silgen_name. Там мы помечаем методы и создаем прямые ссылки в скомпилированном коде.
Этот хак часто используется в исходниках Swift. Но стоит его юзать аккуратно, тк могут быть непредвиденные последствия.
Swiftrocks
Using @_silgen_name to forward declare functions in Swift and improve build times
Let me start this post with a disclaimer. The trick I'm going to show here is quite powerful, but much like every other underscored attribute in Swift, this is something you should not mess with unless you know exactly what you're doing.
Традиционно каждую пятницу я подвожу итоги обновлений ноушена.
Эта неделя была практикующей, мы много обсуждали, но и много кодили:
Весь чейнджлог можно посмотреть в первом скрине
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Носители счастья. Состояние потока.
Недавно, листая инсту, я наткнулся на ролик французских инди-музыкантов. Я не понимал о чем они поют, но был очарован их страстью. Простейший ролик, обычная одежда, на фоне разбросанные вещи. Но вся магия и очарование в любви к своему делу. Сквозь их голос, музыку шло мастерство и те многочасовые труды репетиций, которые они жертвовали ради таланта.
Любовь — это работа и искусство. Как дойти до такого состояния и организовать свой путь, чтобы он наполнился стратью? Научил закрывать глаза на изъяны. Как дойти до состояния транса, когда любимое дело тебя захватило? До состояния потока, которое как супер-сила, бустит и прокачивает тебя.
Ты не думаешь как обмануть, схалтурить, развлечь себя очередной пустой темкой, сходкой. Потеряно бегать по чатам и ютубам в надежде занять свою пустоту внутри. Ты не распыляешься, ты фокусируешься. Ты не чувствуешь усталость, ведь это занятие приносит тебе силы. А цель твоя не найти больше асбтрактных бабок, чтобы найти то, чего не знаешь.
Твой уровень выше. Ты уже нашел и знаешь какие инструменты тебе нужны. Какими красками ты покрасишь жизнь и сколько ресурсов на это нужно. Ты точишь рельеф и ищешь формулу идеала, который тонко граничит с практикой и прагматичностью.
Найти свое место — наше предназначение. Нашедшие себя — другой сорт людей. За этим бегают все. Сначала они думают, что найдя деньги, у них будет больше свободы и времени, но привычки уже въелись и стали жизнью. В попытке наполнить свою жизнь легкими, дешевыми занятиями, уходя от трудностей ты теряешь себя.
Любовь — это главная валюта. Ты не откупишь от нее подарками или деньгами. Она требует внимание. Если ты такой богатый, то что же такой несчастный?
Я не отрицаю важность финансовой свободы. Это первый базовый шаг к поиску. Она дает свободу рабам, но не дает ответа чем заполнить опустевшее место. А вопрос предназначения гораздо сложнее поиска бабок.
Только зацикливаться на бабках — путь в пустоту. Радость и счастье возникает не от кол-ва бабок на счету. Она на границе между скукой и боязнью не справиться, когда сложность задачи соответствует уровню мастерства, необходимому для ее решения. Калибровка такого состояния — одна из обязоностей и моя ответственность перед теми, кто решил идти в одну сторону.
Недавно, листая инсту, я наткнулся на ролик французских инди-музыкантов. Я не понимал о чем они поют, но был очарован их страстью. Простейший ролик, обычная одежда, на фоне разбросанные вещи. Но вся магия и очарование в любви к своему делу. Сквозь их голос, музыку шло мастерство и те многочасовые труды репетиций, которые они жертвовали ради таланта.
Любовь — это работа и искусство. Как дойти до такого состояния и организовать свой путь, чтобы он наполнился стратью? Научил закрывать глаза на изъяны. Как дойти до состояния транса, когда любимое дело тебя захватило? До состояния потока, которое как супер-сила, бустит и прокачивает тебя.
Ты не думаешь как обмануть, схалтурить, развлечь себя очередной пустой темкой, сходкой. Потеряно бегать по чатам и ютубам в надежде занять свою пустоту внутри. Ты не распыляешься, ты фокусируешься. Ты не чувствуешь усталость, ведь это занятие приносит тебе силы. А цель твоя не найти больше асбтрактных бабок, чтобы найти то, чего не знаешь.
Твой уровень выше. Ты уже нашел и знаешь какие инструменты тебе нужны. Какими красками ты покрасишь жизнь и сколько ресурсов на это нужно. Ты точишь рельеф и ищешь формулу идеала, который тонко граничит с практикой и прагматичностью.
Найти свое место — наше предназначение. Нашедшие себя — другой сорт людей. За этим бегают все. Сначала они думают, что найдя деньги, у них будет больше свободы и времени, но привычки уже въелись и стали жизнью. В попытке наполнить свою жизнь легкими, дешевыми занятиями, уходя от трудностей ты теряешь себя.
Любовь — это главная валюта. Ты не откупишь от нее подарками или деньгами. Она требует внимание. Если ты такой богатый, то что же такой несчастный?
Я не отрицаю важность финансовой свободы. Это первый базовый шаг к поиску. Она дает свободу рабам, но не дает ответа чем заполнить опустевшее место. А вопрос предназначения гораздо сложнее поиска бабок.
Только зацикливаться на бабках — путь в пустоту. Радость и счастье возникает не от кол-ва бабок на счету. Она на границе между скукой и боязнью не справиться, когда сложность задачи соответствует уровню мастерства, необходимому для ее решения. Калибровка такого состояния — одна из обязоностей и моя ответственность перед теми, кто решил идти в одну сторону.
Делюсь первыми дизайнами онлайн-кинотеатра, нашего пет-проекта на SwiftUI. К нам присоединился дизайнер и нарисовал такую красоту.
Напоминаю, что в рамках нашего закрытого комьюнити мы делаем пет-проект. Задачи нарезы на пол года вперед. Мы хотим попробывать все на сеньорном уровне:
🔘 Максимальные возможности SwiftUI
🔘 Сложные анимации и графику
🔘 Грамотное проектирование (system design)
🔘 Архитектурные и другие паттерны
🔘 Хранине данных
🔘 Все виды популярных архитектур: SwiftUI, TCA, VIPER, MVI
🔘 DI практики
🔘 CI/CD
🔘 Тесты и многое другое
По каждому из пунктов в канале я буду делать подборку материалов для изучения, а в чатах, ноушене и бусти уже детально обсуждать реализацию и смотреть код друг друга. Этот проект отличный опыт как для новичков понять как работают опытные инженеры из разных команд, так и для опытных пощупать в команде из таких же, быть прожаренным на ревью.
🧬 Ты можешь всегда писать в комменты свои предложения или вступить в чат и ускорить разработку
Напоминаю, что в рамках нашего закрытого комьюнити мы делаем пет-проект. Задачи нарезы на пол года вперед. Мы хотим попробывать все на сеньорном уровне:
По каждому из пунктов в канале я буду делать подборку материалов для изучения, а в чатах, ноушене и бусти уже детально обсуждать реализацию и смотреть код друг друга. Этот проект отличный опыт как для новичков понять как работают опытные инженеры из разных команд, так и для опытных пощупать в команде из таких же, быть прожаренным на ревью.
Please open Telegram to view this post
VIEW IN TELEGRAM
В ноушене закончил работу над ранее анонсированным сборником. Изначально обещал 40 вопросов, но из-за насыщенности решил 25 прям впритык, так как материала вышло прям плотно:
Дополнительно 17 статей с рекомендациями для изучения. А также 5 необычных задач с ответами и объяснением, которые проверят насколько хорошо понимаете память. Скоро будет вторая часть.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Главные качества мобильного приложения, если бы пользовались как обычный смертный
Anonymous Poll
52%
Дизайн
61%
Стабильность
77%
Удобство
43%
Логичность
55%
Скорость работы
15%
Выгода услуг
20%
Эстетика
6%
Бренд
3%
Друго
Многие обязательные книги для программиста — универсальные. Они не связаны с платформами: то, что работает в иос легко будет работать в бэкенде или в андроиде. Мы все разработчики программного обеспечения с одинаковой культурой, мышлением и паттернами. Языки разработки и наше SDK лишь небольшой дополнительный инструмент.
Помимо базы компьютерных наук от нас требуются базовые принципы написания и проектирования кода. Эти принципы хорошо сформулированы в довольно известной книге "Программист прагматик". Особенно обожаю идею с трассирующими пулями. Да и многие идеи из книги я вкладываю в свою жизнь.
1. Упрощайте. Простые механизмы легче понять, проще тестируются. Не стоит гнаться за усложнением, чтобы показаться умнее, чем есть на самом деле.
2. Ищите ошибки как можно быстрее. Придерживайтесь идеи fail fast. Если что-то должно сломаться и вывести ошибку, то это должно произойти как можно раньше. Потому что на начальных этапах её исправление намного дешевле.
3. Стремитесь к хорошему, а не идеальному. Никто не пишет идеальные программы. У всех ограниченный бюджет и сроки. Постоянно выходят патчи и апдейты. Тут важно правильная приоритетность и хорошее прототипирование
4. Слушайте пользователей. Не стоит предугадывыть клиентов — нужно их правильно слушать. Их удовлетворенность главный фактор успеха нашего ПО
5. Уделяйте вниманию проектированию. Прежде чем писать код нужно чщательно запроектировать. Это приводит к упрощению сопровождения кода в будущем.
6. Пишите красивый код. Написание красивого кода — это искусство , требующее страсти, глубокой приверженности делу и многих лет практики. Не стоит путать красивый код с комментами и сортировкой методов. Красивый код не требует комментариев и не становится лучше от избыточной декомпозиции.
В ноушене сделал больше разборов из книги
Please open Telegram to view this post
VIEW IN TELEGRAM
Hackernoon
Fundamental Pragmatics for Successful Software Developers
A list of battle-proven and useful tips for every software developer
Модификаторы — любимый вопрос на скринингах. В концепции это очень просто. Мы берем исходную вью, модифицируем и возвращаем новую вьюху. Но есть небольшие нюансы.
Если думать парадигмой UIKit, то первое что приходит в голову — это паттерн Builder. Мы можем подумать, что исходная вьюха изменяется при добавлении каждого модификатора. Но на деле это имеет паттерн Decorator. Где каждая вью не меняется, а расширяется и пересоздается с помощью другой вью.
Это отличие плюс декларативный стиль — важный аспект для понимания SwiftUI. Ибо порядок может по-разному повлиять на результат
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Одна из частых задач для программистов — ряд Фибоначи. Даже мне она как-то попалось на собесе, где я хотел поумничать про хвостовую рекурсию и мемоизацию, но получилось не очень удачно.
Это универсальная задача, на которой можно проверить знания кандидата. Математическая формула Фибоначчи равна F(n) = F(n-1) + F(n-2)
Мемоизация - это техника оптимизации, ускоряющая алгоритмы за счет кэширования или хранения результатов вычислений для их использования в будущих вычислениях.
У многих есть заблуждение, что мемоизация — это обязательное сохранение функции для её последующего переиспользования. Но это далеко не всегда.
Мемоизация — это про сохранение результатов вычислений. Это может быть и массив, который сохранил или ограничил свой размер. Либо словарь, который промежуточно расчитал результаты.
Задачи для закрепления:
- Fibonacci Number
- N-th Tribonacci Number
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Будь у тебя бесконечный ресурс бабок, то чем бы занимался?
Anonymous Poll
3%
Рос дальше по карьерной лестнице в найме
10%
Открыл свое дело не в ит
16%
Открыл свое дело в ит
7%
Купил много квартир и сдавал их
2%
Стал блогером
34%
Путешествовал
11%
Посвящал время семье
8%
Ушел из ИТ чилить
4%
ХЗ
4%
Другое
Type Erasure в Swift
Одна из главных путаниц вселенной — это дженерики. Обязательная рубрика и задачи на высоких грейдах.
Когда-нибудь мы сделаем плотную рубрику с разбором на канале. А сейчас разберем популярный кейс.
Если у нас есть протокол с ассоциативным типом, то часто мы столкнемся с такой проблемой:
🔘 1. Есть протокол ObjectProtocol
🔘 2. Есть парочка имплементаций этого протокола
🔘 3. Есть класс, который ожидает обобщенный тип ObjectProtocol.
Здесь проблема, что комплилятор не сможет понять какие именно параметры будут в ассоциативных типа и выведет ошибку.
В новых версиях языка отчасти проблему можно решить с помощью any, но в старых мы делали древнюю технологию под названием Type Erasure. Это обертка, которая помогает реализовать этот протокол. В стандартной либе свифт есть много таких оберток, но мы напишем свою.
👆 Вкратце ознакомися на скриншотах 👆
🔜 А прочитать детальную и подробную статью можно тут
Одна из главных путаниц вселенной — это дженерики. Обязательная рубрика и задачи на высоких грейдах.
Когда-нибудь мы сделаем плотную рубрику с разбором на канале. А сейчас разберем популярный кейс.
Если у нас есть протокол с ассоциативным типом, то часто мы столкнемся с такой проблемой:
Здесь проблема, что комплилятор не сможет понять какие именно параметры будут в ассоциативных типа и выведет ошибку.
В новых версиях языка отчасти проблему можно решить с помощью any, но в старых мы делали древнюю технологию под названием Type Erasure. Это обертка, которая помогает реализовать этот протокол. В стандартной либе свифт есть много таких оберток, но мы напишем свою.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Mobile Developer (Алексей Гладков)
Mobile Developers Survey Report [EN]
https://get.embrace.io/mobile-app-developers-report/
Исследование в котором приняли участие более тысячи разработчиков
Ключевые моменты
👉 Самая угнетающее в разработке это, когда долго не можешь пофиксить баг
👉 Больше всего android разрабов волнует производительность их аппок, а iOS tooling
👉 На втором месте разрабов больше всего бесят постоянные встречи и кривые процессы
👉 и еще много интересного
https://get.embrace.io/mobile-app-developers-report/
Исследование в котором приняли участие более тысячи разработчиков
Ключевые моменты
👉 Самая угнетающее в разработке это, когда долго не можешь пофиксить баг
👉 Больше всего android разрабов волнует производительность их аппок, а iOS tooling
👉 На втором месте разрабов больше всего бесят постоянные встречи и кривые процессы
👉 и еще много интересного
get.embrace.io
2024 Mobile App Builders Report
Learn about the priorities and pain points of mobile engineers, how these factors affect app building, and how you can leverage this data to improve your mobile app.