Ключевые слова some и any не новы в Swift. слово Some было введено в Swift 5.1, тогда как any было введено в Swift 5.6.
Если вкратце, то:
Попробовал показать пользу и решение проблем этих слов в изображениях.
Больше разборов some и any с комментариями и какие проблемы он решает в закрытой базе
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Как джуны романтизируют сеньоров
Частое заблуждение у новичков — сеньоры и лиды все знают и поэтому должны меня обучать. Это разрушительно-губительное мышление.
ИТ невероятно быстро развивается и невозможно быть практикующим или экспертным разарбом, обучать других, если ты непрактикующий спец. Но и представлять, что практикующий спец с 10 годами в FAANG'ах, должен знать абсолютно — плохо.
Главная разница между опытным разрабом и начинающим это:
1. Уметь работать с неопределенностью
2. Задавать правильные вопросы
3. Знать как найти решение
Наша работать уметь находить решения проблем, а не быть всезнайками.
Также у многих заблуждения, что сеньоры работаю только с новыми и крутыми технологиями и у них нет скучных задач. А каждый их коммит в прод обязательно должен быть масштабным
Это все великая ложь.
Частое заблуждение у новичков — сеньоры и лиды все знают и поэтому должны меня обучать. Это разрушительно-губительное мышление.
ИТ невероятно быстро развивается и невозможно быть практикующим или экспертным разарбом, обучать других, если ты непрактикующий спец. Но и представлять, что практикующий спец с 10 годами в FAANG'ах, должен знать абсолютно — плохо.
Главная разница между опытным разрабом и начинающим это:
1. Уметь работать с неопределенностью
2. Задавать правильные вопросы
3. Знать как найти решение
Наша работать уметь находить решения проблем, а не быть всезнайками.
Также у многих заблуждения, что сеньоры работаю только с новыми и крутыми технологиями и у них нет скучных задач. А каждый их коммит в прод обязательно должен быть масштабным
Это все великая ложь.
Vadim Kravcenko
Falsehoods Junior Developers believe about becoming Senior
These are mostly my thoughts about what I was expecting as a junior and how I perceived senior developers. To be honest, I was romanticizing them quite a
В России обяжут apple сделать сторонние сторы
Как и следовало ожидать, уступки ЕС цепной реакцией будут требоваться и у нас.
Очень крутая новость даже с учетом, что мелким и средним апкам доступ закрыт.
Зато у банков вакансий больше станет.
Как и следовало ожидать, уступки ЕС цепной реакцией будут требоваться и у нас.
Очень крутая новость даже с учетом, что мелким и средним апкам доступ закрыт.
Зато у банков вакансий больше станет.
Telegram
Readovka
Достигнуто предварительное соглашение с Apple о создании российского магазина приложений — зампредседателя комитета по информационной политике, технологиям и связи Антон Горелкин
Норму, которая обязывала бы Apple открыть телефоны для сторонних магазинов…
Норму, которая обязывала бы Apple открыть телефоны для сторонних магазинов…
Форма для вопросов к собеседованиям
Пока я начал уже заполнять вопросы для мидлов, то пришла идея.
Одна из полезных целей ноушена это не только подготовка для прохождения, но и для проведения собесов. Меня часто просят знакомые провести в их компании собес. А под рукой есть множество док файлов, которые вечно нужно либо актуализировать, либо откапывать.
Поэтому решил укомплектовать все задачи субьективно по грейдам. Тут вы можете сильно в этом помочь заполнив форму с любым вопросом или задачей на любую тему.
Тыкни сюда
*ответ можно отправлять множество раз
UPD: смотрю ваши ответы и походу скоро будет много дополнений по джунам. Спасибо
Пока я начал уже заполнять вопросы для мидлов, то пришла идея.
Одна из полезных целей ноушена это не только подготовка для прохождения, но и для проведения собесов. Меня часто просят знакомые провести в их компании собес. А под рукой есть множество док файлов, которые вечно нужно либо актуализировать, либо откапывать.
Поэтому решил укомплектовать все задачи субьективно по грейдам. Тут вы можете сильно в этом помочь заполнив форму с любым вопросом или задачей на любую тему.
Тыкни сюда
*ответ можно отправлять множество раз
UPD: смотрю ваши ответы и походу скоро будет много дополнений по джунам. Спасибо
Как работает сортировка в Swift
Один из ключевых вопросов, на котором многие путаются, — это временная сложность у функции сортировки в массиве.
Это очень частая ошибка, которая сильно понижает баллы при неправильном ответе. Можно самому посмотреть в доке, но настоящие инженеры не ищут легких путей и лезут сразу в исходники.
Сложность по времени функции sort — O(nlogn)
@eleev в чате дал комментарий:
Для подписчиков ноушена больше материала про разные виды сортировок c разбором исходников.
Один из ключевых вопросов, на котором многие путаются, — это временная сложность у функции сортировки в массиве.
Это очень частая ошибка, которая сильно понижает баллы при неправильном ответе. Можно самому посмотреть в доке, но настоящие инженеры не ищут легких путей и лезут сразу в исходники.
Сложность по времени функции sort — O(nlogn)
@eleev в чате дал комментарий:
Недавно общался с инженерами, и зашла речь как раз про свифтовую версию. Многие думали, что до сих пор используется introsort:
let partIdx = try _partition(within: range, by: areInIncreasingOrder)
try _introSortImpl(
within: range.lowerBound..<partIdx,
by: areInIncreasingOrder,
depthLimit: depthLimit &- 1)
try _introSortImpl(
within: partIdx..<range.upperBound,
by: areInIncreasingOrder,
depthLimit: depthLimit &- 1)
}
}
Но
introsort использовалась pre Swift 5.0
; после
Swift 5.0
был введен
timsort
, который пришел в Swift
отсюда
.
Для подписчиков ноушена больше материала про разные виды сортировок c разбором исходников.
Навык программирования или как не путать искусство и искусствоведение
Еще в прошлом году я писал про 25 основных паттернов для решения алгосов и обещал, что сделаю по каждой отдельный обзор. Ну, время пришло. Ниже будет рефлексия и набухание.
Не все накручивается и хакается. Часто, пытаясь найти легкий путь, который не нашли миллионы таких как ты, тратишь время впустую. Когда давно можно было обучиться и стать лучше, мозг откладывает сложные вещи в дальний ящик, обманывая, что удача обязательно убережет. Но это лишь затягивает чувство инженерной неполноценности и усиливает синдром самозванца. Ждать пользы только от рабочих задач наивно.
Навык программирования похож на написание книг. Ты не станешь писателем только читая книги и зубря методики. Ты будешь читателем. Похож на улучшение речи. Ты не станешь круто разговаривать только слушая чужую речь. Ты будешь слушателем. Нужно уделять время на развитие скиллов.
Программирование и алгоритмы ненавидят накрутчики опыта или инфоцыгани, потому что не нашли как хакнуть то, что не хакается. Это лучше всего их обличает, вредит торговому виду. Красивые слова не помогают спрятать пробелы, их обязательно кто-то когда-нибудь выявит. Пытаясь обмануть других ты обманул себя.
Конкуренция усиливается. Изучая и практикуя сложные вещи тебе не составит труда обучиться за вечер очередному фреймворку. В этом вопросе нет легких путей, не получится зазубрить идеальное решение и надеяться, что этого будет достаточно. Нужно обучиться техникам, базам и основам, чтобы нейронные связи генерировали ответ до его написания.
Код новичка сразу отличишь от опытного разраба. У последнего нет избыточной сложности и все просто и лаконично. Когда же новичок усложняет и делает масштабным. Кто литкод съел ночами и отточил скил до совершенства, а кто лишь учился красиво пересказывать слитые ответы или писать статьи и записывать видосы.
Программирование — это искусство. Безграничное, бездонное. Каждый может во что-нибудь влюбиться.
Еще в прошлом году я писал про 25 основных паттернов для решения алгосов и обещал, что сделаю по каждой отдельный обзор. Ну, время пришло. Ниже будет рефлексия и набухание.
Не все накручивается и хакается. Часто, пытаясь найти легкий путь, который не нашли миллионы таких как ты, тратишь время впустую. Когда давно можно было обучиться и стать лучше, мозг откладывает сложные вещи в дальний ящик, обманывая, что удача обязательно убережет. Но это лишь затягивает чувство инженерной неполноценности и усиливает синдром самозванца. Ждать пользы только от рабочих задач наивно.
Навык программирования похож на написание книг. Ты не станешь писателем только читая книги и зубря методики. Ты будешь читателем. Похож на улучшение речи. Ты не станешь круто разговаривать только слушая чужую речь. Ты будешь слушателем. Нужно уделять время на развитие скиллов.
Программирование и алгоритмы ненавидят накрутчики опыта или инфоцыгани, потому что не нашли как хакнуть то, что не хакается. Это лучше всего их обличает, вредит торговому виду. Красивые слова не помогают спрятать пробелы, их обязательно кто-то когда-нибудь выявит. Пытаясь обмануть других ты обманул себя.
Конкуренция усиливается. Изучая и практикуя сложные вещи тебе не составит труда обучиться за вечер очередному фреймворку. В этом вопросе нет легких путей, не получится зазубрить идеальное решение и надеяться, что этого будет достаточно. Нужно обучиться техникам, базам и основам, чтобы нейронные связи генерировали ответ до его написания.
Код новичка сразу отличишь от опытного разраба. У последнего нет избыточной сложности и все просто и лаконично. Когда же новичок усложняет и делает масштабным. Кто литкод съел ночами и отточил скил до совершенства, а кто лишь учился красиво пересказывать слитые ответы или писать статьи и записывать видосы.
Программирование — это искусство. Безграничное, бездонное. Каждый может во что-нибудь влюбиться.
Наконец закончил первый блок с вопросами для джунов. Я думал выйдет меньше, но в итоге:
Вышло больше, чем я планировал. Заоодно и прокачал себя. Но после вчерашнего опроса и комментов в чате понял, что упустил или упростил очень много инфы. А некоторое и сам не знал
Поэтому было решено сделать еще 2-3 части для джуниорова и других грейдов.
Нельзя объять необъятное, но мы попробуем.
Please open Telegram to view this post
VIEW IN TELEGRAM
Метод двух указателей
Начинаю разбирать основные техники, которые упрощают решение алгоритмов или реальных задач.
Самый базовый и стандартный метод с которого стоит начать изучение решений задач — это метод двух указателей. Он используется для перемещения по массиву.
💎 Когда использовать этот метод?
1. Поиск пары элементов, сумма которых равна в отсортированном массиве.
2. Удаление дубликатов из отсортированного массива.
3. Определение длины самого длинного подмассива с нужной суммой.
4. Нахождение наименьшего подмассива с нужной суммой.
5. Нахождение ближайшей пары точек на 2D-плоскости.
6. Определение максимальной суммы подмассива в заданном массиве.
7. Поиск первого неповторяющегося символа в строке.
🧬 Как мы его используем? Каков подход?
1. Инициализируйте два указателя, обычно в начале и конце массива или списка.
2. Проверьте, соответствуют ли текущие элементы по двум указателям заданому условию.
3. Если условие выполнено, верните результат.
4. Если условие не выполняется, переместите один из указателей на основе необходимой логики, чтобы уменьшить размер пространства для поиска.
5. Повторяйте шаги со 2 по 4, пока указатели не встретятся или условие не будет выполнено.
6. Если условие не выполнено, верните дефолтный результат.
В скриншотах разбор одной из самых популярных задач "Two sum"
Дополнительные задачи для практики:
- Удаление дубликатов из отсортированного массива
- Удаление элементов
- Поиск палиндрома
Разбор этих задач и другие техники уже есть в ноушене
Начинаю разбирать основные техники, которые упрощают решение алгоритмов или реальных задач.
Самый базовый и стандартный метод с которого стоит начать изучение решений задач — это метод двух указателей. Он используется для перемещения по массиву.
1. Поиск пары элементов, сумма которых равна в отсортированном массиве.
2. Удаление дубликатов из отсортированного массива.
3. Определение длины самого длинного подмассива с нужной суммой.
4. Нахождение наименьшего подмассива с нужной суммой.
5. Нахождение ближайшей пары точек на 2D-плоскости.
6. Определение максимальной суммы подмассива в заданном массиве.
7. Поиск первого неповторяющегося символа в строке.
1. Инициализируйте два указателя, обычно в начале и конце массива или списка.
2. Проверьте, соответствуют ли текущие элементы по двум указателям заданому условию.
3. Если условие выполнено, верните результат.
4. Если условие не выполняется, переместите один из указателей на основе необходимой логики, чтобы уменьшить размер пространства для поиска.
5. Повторяйте шаги со 2 по 4, пока указатели не встретятся или условие не будет выполнено.
6. Если условие не выполнено, верните дефолтный результат.
В скриншотах разбор одной из самых популярных задач "Two sum"
Дополнительные задачи для практики:
- Удаление дубликатов из отсортированного массива
- Удаление элементов
- Поиск палиндрома
Разбор этих задач и другие техники уже есть в ноушене
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Реверс инженеринг тиктока
Если вы решили стать хакером айфонов, то вот видос. Здесь автор учит как менять контент используя знания iOS + Objc + LLDB.
Теперь и вы можете рисовать котиков не только в Xcode
Если вы решили стать хакером айфонов, то вот видос. Здесь автор учит как менять контент используя знания iOS + Objc + LLDB.
Теперь и вы можете рисовать котиков не только в Xcode
YouTube
Modding TikTok to only show Cat Videos
Walk through an end-to-end example of reverse engineering an iOS app and modifying it to do something new!
Having existing iOS + Objective-C + LLDB knowledge is helpful if you're following along locally.
If this sort of topic interests you, check out the…
Having existing iOS + Objective-C + LLDB knowledge is helpful if you're following along locally.
If this sort of topic interests you, check out the…
Многие из вас могли заметить, что в прошлых постах не было ничего про SwiftUI. Я долго боролся с этим, но все же пересилил себя. Наконец я начал вести этот блок. Нельзя отрицать, что все крупные компании новые проекты начинают делать уже на нем.
Цель одна. Впервую очередь для себя собрать лучшие ресурсы для обучения, испытать технологию на практике, посмотреть чужие практики.
Буду теперь регулярно наполнять ноушен этим помимо алгосов и многопоточки. В SwiftUI я новичок, поэтому у вас есть уникальная возможность поделиться материалами и обучаться вместе
UPD: в чате придумали идея делать общий проект с общим ревью друг друга
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Как чуваки от SwiftUI отказывались
Забавная история. Никогда не было, но вот опять. Компания потратила почти год инженеро-часов, чтобы исправить проблемы:
- Бедный инструментарий
- Проблемы с дебагингом
- Нет контроля жизненных циклов
- Много непонятной магии
Также в статье говорится, что даже при наличии кучи документаций и учебников множество моментов неочевидные и помогают только глубокие погружения в ролики WWDC.
Думаю, самое время изучить SwiftUI. Ноушен буду наполнять только самыми проверенными вещами, чтобы не превратить в мусорку
Забавная история. Никогда не было, но вот опять. Компания потратила почти год инженеро-часов, чтобы исправить проблемы:
- Бедный инструментарий
- Проблемы с дебагингом
- Нет контроля жизненных циклов
- Много непонятной магии
Также в статье говорится, что даже при наличии кучи документаций и учебников множество моментов неочевидные и помогают только глубокие погружения в ролики WWDC.
Думаю, самое время изучить SwiftUI. Ноушен буду наполнять только самыми проверенными вещами, чтобы не превратить в мусорку
Medium
Why Ollie is moving away from SwiftUI to UIKit
A few months ago, we made the decision to move away from SwiftUI & Swift Concurrency for our application and to move the core of our app…
Собрал в ноушене все самые мои интересные статьи и посты про самые полезные паттерны проектирования, выбор архитектур и важные принципы проектирования, которые гораздо важнее SOLID'ов и других популярных и непонятных вещей.
Архитектура очень близко лежит с System Design'ом и только этот навык, а не алгоритмы или знания платформы, определяет сеньорность.
Уметь масштабировать, упрощать, не переусложнять для буста повышения — это навык опытного спеца. Мало путать просто пересказ паттернов или слепой пересказ книги Мартинов. Тут только есть место только практики. В будущем буду активно дополнять раздел.
Прокачать себя в архитектурах можно здесь. Скоро начнем делать продукт по SUI. Там посмотрим на современные практики проектирования.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Привычки великих инженеров
Многие думают, что программист это только про кодинг. Но как элегантно заметил автор, оценивать программиста по кодингу это как оценивать художника только по навыку смешивания цветов. Многое скрывается под верхушкой айсберга. Современному итшнику все чаще нужно развиваться в разных направлениях.
Тезисно о чем статья:
⏺ Обучайтесь не только в коде. Часто как разработчик вы будете писать код лишь 20% времени.
⏺ Получайте удовольствие от работы. Тут все понятно. Даже мой канал старается искать лучшее в программировании и любить это ремесло.
⏺ Копайте глубже. Могу сказать по-своему опыту в бигтехах, что многие разработчики утопают в абстракциях и многие их навыки атрофируются. Они не хотят знать или забывают как работают внутри многие вещи, легко деградируя как спецы.
⏺ Развивайте системное мышление. Нужно не только понимать кишки, но и обширно видеть работу систем за границами своих ответственностей, платформ.
⏺ Технический детокс. Не забывайте изучать реальный мир и отдыхать от компа
⏺ Всегда формируйте свою базу знаний и ищите разные подходы к решению задач. С годами чужие мнения слабеют и у вас появляются свои взгляды на решение проблем
⏺ Делайте простыми сложные вещи. Эта идея также впитана в мой канал. Если вы не можете объяснить это просто, значит, вы недостаточно хорошо это понимаете
Многие думают, что программист это только про кодинг. Но как элегантно заметил автор, оценивать программиста по кодингу это как оценивать художника только по навыку смешивания цветов. Многое скрывается под верхушкой айсберга. Современному итшнику все чаще нужно развиваться в разных направлениях.
Тезисно о чем статья:
Please open Telegram to view this post
VIEW IN TELEGRAM
Vadim Kravcenko
Habits of great software engineers
The role of a software developer often gets distilled down to a singular activity: coding. While coding is undeniably the heartbeat of the profession,
Подборка книг для улучшения программирования
В этом году я дал себе слово больше читать книг. На мой взгляд, книги дают больше качественных знаний. Лучше образовывают. Нейронка в голове формируется лучше.
Я хочу собрать большой wishlist с обязательными книгами для программиста и не только. Хожу по интересным мне людям и собираю их списки, чтобы составить свой. Вот одной из интересных подборок поделились со мной коллеги на работе
Делитесь и вы в комментах
В этом году я дал себе слово больше читать книг. На мой взгляд, книги дают больше качественных знаний. Лучше образовывают. Нейронка в голове формируется лучше.
Я хочу собрать большой wishlist с обязательными книгами для программиста и не только. Хожу по интересным мне людям и собираю их списки, чтобы составить свой. Вот одной из интересных подборок поделились со мной коллеги на работе
Делитесь и вы в комментах