Кажется, правильные установки и контексты, гораздо важнее технических знаний.
Знания и инструменты без контекста бесполезны. Часто вы проходите курс, в котором были только технические штуки, и после он кажется бесполезным. Ведь вас не погрузили в контекст проблем.
Чтобы мой канал не стал таким, и вся информация не была без контекста, иногда буду вкидывать крутые видео/мысли с погружениями в контекст задач программист.
Будь это жизнь. Или работа
https://youtu.be/1Ji_n0w67kI
Знания и инструменты без контекста бесполезны. Часто вы проходите курс, в котором были только технические штуки, и после он кажется бесполезным. Ведь вас не погрузили в контекст проблем.
Чтобы мой канал не стал таким, и вся информация не была без контекста, иногда буду вкидывать крутые видео/мысли с погружениями в контекст задач программист.
Будь это жизнь. Или работа
https://youtu.be/1Ji_n0w67kI
YouTube
МЁРТВЫЙ РАЗУМ ПРОГРАММИСТА | ALEK OS
Стань “Белым” хакером в SkillFactory: https://go.skillfactory.ru/VppsYw
Скидка 45% по промокоду ALEKOS до 26.07.2022 г.
Информация, как прошивка для разума.
Подписывайся в соц. сетях:
Телеграм - https://t.iss.one/Alek_OS
ВК - https://vk.com/alekos1
Яндекс Дзен…
Скидка 45% по промокоду ALEKOS до 26.07.2022 г.
Информация, как прошивка для разума.
Подписывайся в соц. сетях:
Телеграм - https://t.iss.one/Alek_OS
ВК - https://vk.com/alekos1
Яндекс Дзен…
👍7❤🔥4
UIKit: setNeedsDisplay, layoutSubviews
🟢 lvl: jun
ℹ️ Выше мы познакомились с тринерами обновления layoutSubviews. Но что делать, если мы хотим перерисовать графику, которая не затрагивает размеры? Например перерисовать нашу вьюху в круг, изменить изображения и поменять
Метод setNeedsDisplay очень похож на setNeedsLayout. Он также выполняется ассинхронно и автоматически вызовет drawRect
💁 Также про layoutSubviews дополню. Он может вызваться по ситуациям:
- вызов addSubview
- Установка frame для вьюхи
- Прокрутка UIScrollView
- Поворот экрана
#lvl_jun
🟢 lvl: jun
ℹ️ Выше мы познакомились с тринерами обновления layoutSubviews. Но что делать, если мы хотим перерисовать графику, которая не затрагивает размеры? Например перерисовать нашу вьюху в круг, изменить изображения и поменять
Метод setNeedsDisplay очень похож на setNeedsLayout. Он также выполняется ассинхронно и автоматически вызовет drawRect
💁 Также про layoutSubviews дополню. Он может вызваться по ситуациям:
- вызов addSubview
- Установка frame для вьюхи
- Прокрутка UIScrollView
- Поворот экрана
#lvl_jun
👍8🐳1
UIKit: updateConstraints
🟡 lvl: mid-
Как мы уже выяснили существует три этапа расчета и перерисовки вьюх в Auto Layout:
1️⃣ обновление констрейнт, когда система вычисляет и устанавливает их для вьюх.
2️⃣ Затем идет этап прохода лайатуа (layout pass), где механизм лайаута (layout engine) вычисляет фреймы вьюх и сабвьюх, размещая их.
3️⃣ Проход display завершает цикл и при необходимости перерисовывает содержимое вьюх, вызывая их draw методы, если они реализованы.
Подобно методу layoutSubviews и draw метод updateConstraints следует только раз переопределить и никогда больше не вызывать напрямую.
Внутри переопределенного метода следует разместить констрейнты, которые могут измениться. Статичные можно оставить в конструкторе или viewDidLoad.
Обычно updateConstraints() тригерит внутренний флаг, который обновляет констрейнты в следующем цикле обновления если:
- активировали/деактивировали констрейнты
- поменяли приоритет констрейнт или константное значение
- удалили вью из иерархии
Однако мы можем стригерить обновление констрейнт вручную:
🟣 setNeedsUpdateConstraints() — гарантирует обновление констрейнтов в следующем цикле обновления. Он запускает updateConstraints(), отмечая, что один из констрейтов вьюхи был обновлен. Этот метод работает аналогично setNeedsDisplay() и setNeedsLayout().
🟢 updateConstraintsIfNeeded() — Этот метод аналогичен layoutIfNeeded, но для вьюх использующих Auto Layout. Он проверит флаг «constraint update» (который может быть установлен автоматически, с помощью setNeedsUpdateConstraints или с помощью invalidateInstrinsicContentSize). Если он определит, что констрейнтам нужно обновление, он немедленно вызовет updateConstraints() и не будет ждать окончания ран лупа.
#lvl_mid
🟡 lvl: mid-
Как мы уже выяснили существует три этапа расчета и перерисовки вьюх в Auto Layout:
1️⃣ обновление констрейнт, когда система вычисляет и устанавливает их для вьюх.
2️⃣ Затем идет этап прохода лайатуа (layout pass), где механизм лайаута (layout engine) вычисляет фреймы вьюх и сабвьюх, размещая их.
3️⃣ Проход display завершает цикл и при необходимости перерисовывает содержимое вьюх, вызывая их draw методы, если они реализованы.
Подобно методу layoutSubviews и draw метод updateConstraints следует только раз переопределить и никогда больше не вызывать напрямую.
Внутри переопределенного метода следует разместить констрейнты, которые могут измениться. Статичные можно оставить в конструкторе или viewDidLoad.
Обычно updateConstraints() тригерит внутренний флаг, который обновляет констрейнты в следующем цикле обновления если:
- активировали/деактивировали констрейнты
- поменяли приоритет констрейнт или константное значение
- удалили вью из иерархии
Однако мы можем стригерить обновление констрейнт вручную:
🟣 setNeedsUpdateConstraints() — гарантирует обновление констрейнтов в следующем цикле обновления. Он запускает updateConstraints(), отмечая, что один из констрейтов вьюхи был обновлен. Этот метод работает аналогично setNeedsDisplay() и setNeedsLayout().
🟢 updateConstraintsIfNeeded() — Этот метод аналогичен layoutIfNeeded, но для вьюх использующих Auto Layout. Он проверит флаг «constraint update» (который может быть установлен автоматически, с помощью setNeedsUpdateConstraints или с помощью invalidateInstrinsicContentSize). Если он определит, что констрейнтам нужно обновление, он немедленно вызовет updateConstraints() и не будет ждать окончания ран лупа.
#lvl_mid
❤🔥9🐳2👍1
Stack vs Heap
Этот вопрос заставляет потеть двух из трех разрабов. А все потому, что это основные различия между value/ref семантикой.
В этой статье легким языком объясняется что, зачем, куда и почему стэк быстрее кучи
https://otus.ru/nest/post/605/
Этот вопрос заставляет потеть двух из трех разрабов. А все потому, что это основные различия между value/ref семантикой.
В этой статье легким языком объясняется что, зачем, куда и почему стэк быстрее кучи
https://otus.ru/nest/post/605/
Otus
Cтек и куча: что это такое и как использовать?
Cтек — это метод представления однотипных данных в порядке LIFO (Last In — First Out, то бишь, «первый вошел — последний вышел»). Некоторые ассоциируют стек с оружейным магазином для патронов, так как принцип работы схож, и первый вставленный в магазин патрон…
👍13
☢️ Так.
Первое правило клуба - никому не говорим о клубе.
Хочу в начале сентября сделать первые микро-интенсивы.
ℹ️ Формат такой. Мы за неделю собираемся в группу, создаём закрытый чат и общаемся там.
Каждый день мы разбираем задачу одного из пяти блоков: управление памятью, swift, UIKit, многопоточка и архитектура.
Утром падает задача всем. Каждый решает сам максимально нестандартно без копипасты с интернета. Вечером мы быстро собираемся и защищаем свою работу публично. Это не будет порицанием, а скорее коллективное программирование и кодревью.
⛔️Группу уже буду собирать. опыт от полу года в иос. Нужно знать базу хотяб что такое массивы, словари и сеты. Взнос 1500 руб.
Пишите в лс @lvbond
Первое правило клуба - никому не говорим о клубе.
Хочу в начале сентября сделать первые микро-интенсивы.
ℹ️ Формат такой. Мы за неделю собираемся в группу, создаём закрытый чат и общаемся там.
Каждый день мы разбираем задачу одного из пяти блоков: управление памятью, swift, UIKit, многопоточка и архитектура.
Утром падает задача всем. Каждый решает сам максимально нестандартно без копипасты с интернета. Вечером мы быстро собираемся и защищаем свою работу публично. Это не будет порицанием, а скорее коллективное программирование и кодревью.
⛔️Группу уже буду собирать. опыт от полу года в иос. Нужно знать базу хотяб что такое массивы, словари и сеты. Взнос 1500 руб.
Пишите в лс @lvbond
🔥15❤🔥2👎1😁1😢1
🚨И главное!!!
Хочется сделать это максимально полезно для всех. Независимо от того, джун ли ты или сеньор, персонаж из манги.
Чем разнообразней опыт и подходы, тем лучше
Хочется сделать это максимально полезно для всех. Независимо от того, джун ли ты или сеньор, персонаж из манги.
Чем разнообразней опыт и подходы, тем лучше
@Viktorianec сделал крутую подборку по вашей любимой теме на собесах.
Почитаем на выходных и сделаем разбор интересных вещей
https://t.iss.one/iOS_Career/520
Почитаем на выходных и сделаем разбор интересных вещей
https://t.iss.one/iOS_Career/520
Telegram
iOS Dev
Подборка материалов для подготовки к собеседованиям
Ключевые темы этого поста: память, ссылки, side table и многое другое.
Скорее всего, некоторые из публикаций вы встречали, и многие у вас уже в закладках. Пришло время их объединить и зафиксировать.
…
Ключевые темы этого поста: память, ссылки, side table и многое другое.
Скорее всего, некоторые из публикаций вы встречали, и многие у вас уже в закладках. Пришло время их объединить и зафиксировать.
…
👍3🔥2❤🔥1
Про собесы
Проходить собесы надо — даже если вы не собираетесь менять работу. Рынок может меняться. Вы можете меняться. Спрос может меняться, а наша зп и ее индексация нет.
Обратная связь с реальной жизнью очень важна.
Это может работать в 2 стороны:
- у вас высокая зп на текущей уже второй год. Вы захотели сменить работу по разным причинам и поняли, что вам переплачивают на текущей. А уйти сильно хочется не по финансовым причинам
- я просидел несколько лет на одной работе и вдруг оказалось, что на рынке я стою х2. Как бы вы не хотели считать, что деньги не главное, но х2 есть х2 и ваши дети, жена и семья могут посчитать эгоизмом и слабостью отказывать от дохода, который улучшит жизнь всех
Собесы также могут подсветить вещи, которые стоит подкачать. Но чаще это формат тестирования или экзамен по сдаче прав. Стоит помнить, если вы зубрите только тесты и любите кататься с душными типами на экзаменах, то это вас не особо спасет в реальной практики и не убережет от дтп.
Проходить собесы надо — даже если вы не собираетесь менять работу. Рынок может меняться. Вы можете меняться. Спрос может меняться, а наша зп и ее индексация нет.
Обратная связь с реальной жизнью очень важна.
Это может работать в 2 стороны:
- у вас высокая зп на текущей уже второй год. Вы захотели сменить работу по разным причинам и поняли, что вам переплачивают на текущей. А уйти сильно хочется не по финансовым причинам
- я просидел несколько лет на одной работе и вдруг оказалось, что на рынке я стою х2. Как бы вы не хотели считать, что деньги не главное, но х2 есть х2 и ваши дети, жена и семья могут посчитать эгоизмом и слабостью отказывать от дохода, который улучшит жизнь всех
Собесы также могут подсветить вещи, которые стоит подкачать. Но чаще это формат тестирования или экзамен по сдаче прав. Стоит помнить, если вы зубрите только тесты и любите кататься с душными типами на экзаменах, то это вас не особо спасет в реальной практики и не убережет от дтп.
🐳7🔥5❤2👍2
Escaping closure
🟢lvl: jun
Это замыкание, которое может пережить область блока кода, в который оно передается. По-умолчанию наши функции будут non-escaping, но если клоужер сохранен в другом блоке кода или запущен позже в других замыкания, то компилятор потребует выставить маркер escaping.
Чтобы наш клоужер мог "убежать" мы можем:
1️⃣ Отправить выполняться клоужер в другой очереди в многопоточности. Ну, или в той же, но ассинхронно
2️⃣ Хранение замыкания за пределами функции.
🅰️ Почему важно знать, что такое убегающее замыкание?
Еscaping closure может привести к reference cycle, если мы не используем weak, unowned ссылки для захвата сильных ссылок.
#lvl_jun
🟢lvl: jun
Это замыкание, которое может пережить область блока кода, в который оно передается. По-умолчанию наши функции будут non-escaping, но если клоужер сохранен в другом блоке кода или запущен позже в других замыкания, то компилятор потребует выставить маркер escaping.
Чтобы наш клоужер мог "убежать" мы можем:
1️⃣ Отправить выполняться клоужер в другой очереди в многопоточности. Ну, или в той же, но ассинхронно
2️⃣ Хранение замыкания за пределами функции.
🅰️ Почему важно знать, что такое убегающее замыкание?
Еscaping closure может привести к reference cycle, если мы не используем weak, unowned ссылки для захвата сильных ссылок.
#lvl_jun
👍9🔥3❤1
После прошлого поста посоветовали создать канал с ресурсами. Чтобы не заблочили за авторские права
https://t.iss.one/iosmmcresources
https://t.iss.one/iosmmcresources
👍6❤3
"Думай медленно — решай быстро"
Полезность: 5 из 5
Вода: 10%
Кажется, в текущее время, сложно переоценить эту книгу
Ею пользуются маркетологи, чтобы продать нам продукты. Ею пользуются пропагандисты, чтобы внушить нам идею. Ею пользуются итшники, чтобы пихнуть нам продукт.
Идеальная книга для знакомства с когнитивными искажениями.
Прочту еще раз 5, чтобы лучше усвоилась. Но для знакомства с этой темой лучше книгу не найдешь
Полезность: 5 из 5
Вода: 10%
Кажется, в текущее время, сложно переоценить эту книгу
Ею пользуются маркетологи, чтобы продать нам продукты. Ею пользуются пропагандисты, чтобы внушить нам идею. Ею пользуются итшники, чтобы пихнуть нам продукт.
Идеальная книга для знакомства с когнитивными искажениями.
Прочту еще раз 5, чтобы лучше усвоилась. Но для знакомства с этой темой лучше книгу не найдешь
❤🔥12👍6🐳2🔥1💯1
а еще, если вы не знали — все опциональные клоужеры по-умолчанию escaping
https://forums.swift.org/t/allowing-escaping-for-optional-closures-in-method-signature/27556
https://forums.swift.org/t/allowing-escaping-for-optional-closures-in-method-signature/27556
Swift Forums
Allowing @escaping for optional closures in method signature
From a perspective of a framework writer it is important to provide clear and understandable documentation for the correct usage of their APIs. Swift allows us to write functions that are at some extent self documenting, and clearly define what the function…
❤8🌚3😁1
Ну короче я решил, что интенсив не мой формат. Всем, кто откликнулся — сорри. Не вижу в нем творчества. Та символичная сумма не будет компенсировать время, которого все меньше и меньше.
Покапавшись в себе я нащупал тонкую душу творца, которого у нас в народе называют — продуктовый разработчик. Мои глаза загорелись и сердце забилось чаще. И поэтому в голову пришла идея сделать "симулятор иосника". Где будут форматы собесов и всякие обучающие курсы.
Наработки уже есть. Нужны желающие поучаствовать как CusDev'ы, разрабы, фокус группа и тп. Проект будет абсолютно некоммерческий и бесплатный.
Опыт работы в иос обязателен. Пишите в лс.
Покапавшись в себе я нащупал тонкую душу творца, которого у нас в народе называют — продуктовый разработчик. Мои глаза загорелись и сердце забилось чаще. И поэтому в голову пришла идея сделать "симулятор иосника". Где будут форматы собесов и всякие обучающие курсы.
Наработки уже есть. Нужны желающие поучаствовать как CusDev'ы, разрабы, фокус группа и тп. Проект будет абсолютно некоммерческий и бесплатный.
Опыт работы в иос обязателен. Пишите в лс.
👍15💯2🎉1
алло 😄 раз телеграм вернулся во времена маил агента и icq, то может чат создать? Там как раз по брейнштормим симулятор иосника 🥳 🖕 💃 ❤️ 🤬
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10⚡1💯1
Optional
🟢 lvl: jun
ℹ️ Зачем нужны опционалы, когда есть проверка на nil?
Как минимум, опциональность проверяется на этапе компиляции, что снижает количество ошибок в runtime. По своей сути опционал является обычным enum'ом, в котором 2 кейса: .some, .none.
Развернуть (анврапить) опционал можно множествами способами, но остановимся на самых неочевидных:
🟣 map —позволяет преобразовать опционал, если он имеет значение, или ничего не делать, если он пуст.
можно юзать map() для безопасного преобразования без проверки и анврапинга — если бы он был равен нулю, вызов map() ничего бы не сделал.
map вернет преобразованный опциональный тип
🔵 flatMap - делает почти тоже самое, только уберет дополнительное преобразование в опционал, если оно имеется
🟢 lvl: jun
ℹ️ Зачем нужны опционалы, когда есть проверка на nil?
Как минимум, опциональность проверяется на этапе компиляции, что снижает количество ошибок в runtime. По своей сути опционал является обычным enum'ом, в котором 2 кейса: .some, .none.
Развернуть (анврапить) опционал можно множествами способами, но остановимся на самых неочевидных:
🟣 map —позволяет преобразовать опционал, если он имеет значение, или ничего не делать, если он пуст.
можно юзать map() для безопасного преобразования без проверки и анврапинга — если бы он был равен нулю, вызов map() ничего бы не сделал.
map вернет преобразованный опциональный тип
🔵 flatMap - делает почти тоже самое, только уберет дополнительное преобразование в опционал, если оно имеется
⚡5👍5🤔1
Как найти работу?
Такой вопрос сейчас все чаще посещает мою голову. Нет, я не в поисках. Авито — one love❤️ (байт на рефералку). За последнии 2 недели мне приходят ребята на солвери с вопросом как войти в ит, кто-то пишет в лс, даже моя девушка сейчас ищет первую работу.
Я не знаю. Можете дальше не читать. Точнее у меня есть свой подход, который не выстреливает со 100% успехом. Но точно в 60-70% я не жалел ни разу.
Кратко о себе и без каких-то рекомендаций. Я вырос в небольшом ауле Казахстана в семье учителя физкультуры и матери повара. Моя бабушка была учителем русского и литературы. Она и дала мне имя в честь того самого писателя. Они хотели, чтобы я стал ментом, летчиком, спортсменом, юристом. Всем, кроме программиста. В моем ауле было сложно с интернетом и это казалось чем-то злым, для ленивых задротов, которые бегут от реальности.
Но я поступил после 9 класса на программиста. Мои родственники не сильно были рады выбору профессии. Но колледж был якобы самый престижный в столице Казахстана + я попал на бюджетные места и этот факт их устроил.
После учебы в колледже мои родители разъехали и мне надо было как-то попасть в Россию. Я выбрал путь через получение высшего образования. Поступил в тюмени в нефтегазовый на профессию метролога. Опять на бюджет. Мои родственники были в диком восторге. Ведь это не программист и звучит престижно. Никто не понимал чем занимается метролог, включая меня, но это было что-то с нефтью в одном из самых нефтедобывающих регионов. Я быстро понял, что не хочу связывать следующие 4 года и жизнь с этой профессией. Поэтому очислился. Для моих родственников это был удар. Мало того, что свернул с выгодной тропы, не получил высшее, так и еще ушел в свое программирование.
Прошло 8 лет. За эти годы я ни разу не пожалел. Мб иногда комплексую, что нет высшего, но все же. Да, этот подход радикальный и немного жертвенный. В будущем это еще выстрелило, когда я шел туда, куда я хотел, чем-то жертвуя. Но для меня он был рабочим.
Также и сейчас. Я считаю себя недостойным давать советы по важным решениям в вашей жизни, но если кто-то приходит за советом, то мой ответ — просто покажите свою решительность. Это, как мне кажется, работало со мной.
Если у вас нет опыта, то покажите как вовлечены в индустрию и свою страсть в груди. Если правда замотивированы, то я считаю, обязательно заметят или придете к делу, которым хотите заниматься. Быстрее апгрейднитесь
Я люблю свою работу. Я люблю то, чем я занимаюсь. Настолько, что монета или похвала окружения не так важны, как то, где я чувствую себя лучше, полезнее и живее
Такой вопрос сейчас все чаще посещает мою голову. Нет, я не в поисках. Авито — one love
Я не знаю. Можете дальше не читать. Точнее у меня есть свой подход, который не выстреливает со 100% успехом. Но точно в 60-70% я не жалел ни разу.
Кратко о себе и без каких-то рекомендаций. Я вырос в небольшом ауле Казахстана в семье учителя физкультуры и матери повара. Моя бабушка была учителем русского и литературы. Она и дала мне имя в честь того самого писателя. Они хотели, чтобы я стал ментом, летчиком, спортсменом, юристом. Всем, кроме программиста. В моем ауле было сложно с интернетом и это казалось чем-то злым, для ленивых задротов, которые бегут от реальности.
Но я поступил после 9 класса на программиста. Мои родственники не сильно были рады выбору профессии. Но колледж был якобы самый престижный в столице Казахстана + я попал на бюджетные места и этот факт их устроил.
После учебы в колледже мои родители разъехали и мне надо было как-то попасть в Россию. Я выбрал путь через получение высшего образования. Поступил в тюмени в нефтегазовый на профессию метролога. Опять на бюджет. Мои родственники были в диком восторге. Ведь это не программист и звучит престижно. Никто не понимал чем занимается метролог, включая меня, но это было что-то с нефтью в одном из самых нефтедобывающих регионов. Я быстро понял, что не хочу связывать следующие 4 года и жизнь с этой профессией. Поэтому очислился. Для моих родственников это был удар. Мало того, что свернул с выгодной тропы, не получил высшее, так и еще ушел в свое программирование.
Прошло 8 лет. За эти годы я ни разу не пожалел. Мб иногда комплексую, что нет высшего, но все же. Да, этот подход радикальный и немного жертвенный. В будущем это еще выстрелило, когда я шел туда, куда я хотел, чем-то жертвуя. Но для меня он был рабочим.
Также и сейчас. Я считаю себя недостойным давать советы по важным решениям в вашей жизни, но если кто-то приходит за советом, то мой ответ — просто покажите свою решительность. Это, как мне кажется, работало со мной.
Если у вас нет опыта, то покажите как вовлечены в индустрию и свою страсть в груди. Если правда замотивированы, то я считаю, обязательно заметят или придете к делу, которым хотите заниматься. Быстрее апгрейднитесь
Я люблю свою работу. Я люблю то, чем я занимаюсь. Настолько, что монета или похвала окружения не так важны, как то, где я чувствую себя лучше, полезнее и живее
Please open Telegram to view this post
VIEW IN TELEGRAM
❤19🏆3👎1🔥1
Го, я создал.
Мы из поколения мужчин выращенных женщинами... 👨👨👧👦
Я не обещаю вам частых жарких споров, ибо мы ведь все занятые разрабочики, но понемногу буду выдавать контент про симулятор иосника тут. Дальше посмотрим. Поборим свою застенчивость и интровертность
Заходите, потихоньку будем расти. Правила поведения просты.
Сегодня собираемся. Завтра напишу первые вопросы и накидаю концептов
P.S. Я надеюсь все понимают рофлы про радужные символы
https://t.iss.one/+rNag9KqMoo1kNzli
Мы из поколения мужчин выращенных женщинами... 👨👨👧👦
Я не обещаю вам частых жарких споров, ибо мы ведь все занятые разрабочики, но понемногу буду выдавать контент про симулятор иосника тут. Дальше посмотрим. Поборим свою застенчивость и интровертность
Заходите, потихоньку будем расти. Правила поведения просты.
Сегодня собираемся. Завтра напишу первые вопросы и накидаю концептов
P.S. Я надеюсь все понимают рофлы про радужные символы
https://t.iss.one/+rNag9KqMoo1kNzli