iOS Makes Me Hate
3.94K subscribers
1.17K photos
167 videos
15 files
1.34K links
Авторский канал про iOS разработку. Путь продуктовых самураев в MAANG.

Самое больше iOS сообщество практиков: https://boosty.to/lionbond/

Автор: @lvbond Senior iOS Yandex, ex-Avito, VK
Download Telegram
Ну короче я решил, что интенсив не мой формат. Всем, кто откликнулся — сорри. Не вижу в нем творчества. Та символичная сумма не будет компенсировать время, которого все меньше и меньше.

Покапавшись в себе я нащупал тонкую душу творца, которого у нас в народе называют — продуктовый разработчик. Мои глаза загорелись и сердце забилось чаще. И поэтому в голову пришла идея сделать "симулятор иосника". Где будут форматы собесов и всякие обучающие курсы.

Наработки уже есть. Нужны желающие поучаствовать как CusDev'ы, разрабы, фокус группа и тп. Проект будет абсолютно некоммерческий и бесплатный.

Опыт работы в иос обязателен. Пишите в лс.
👍15💯2🎉1
алло 😄 раз телеграм вернулся во времена маил агента и icq, то может чат создать? Там как раз по брейнштормим симулятор иосника 🥳🖕💃❤️🤬
Please open Telegram to view this post
VIEW IN TELEGRAM
👍101💯1
Optional

🟢 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 лет. За эти годы я ни разу не пожалел. Мб иногда комплексую, что нет высшего, но все же. Да, этот подход радикальный и немного жертвенный. В будущем это еще выстрелило, когда я шел туда, куда я хотел, чем-то жертвуя. Но для меня он был рабочим.

Также и сейчас. Я считаю себя недостойным давать советы по важным решениям в вашей жизни, но если кто-то приходит за советом, то мой ответ — просто покажите свою решительность. Это, как мне кажется, работало со мной.

Если у вас нет опыта, то покажите как вовлечены в индустрию и свою страсть в груди. Если правда замотивированы, то я считаю, обязательно заметят или придете к делу, которым хотите заниматься. Быстрее апгрейднитесь

Я люблю свою работу. Я люблю то, чем я занимаюсь. Настолько, что монета или похвала окружения не так важны, как то, где я чувствую себя лучше, полезнее и живее
Please open Telegram to view this post
VIEW IN TELEGRAM
19🏆3👎1🔥1
Го, я создал.

Мы из поколения мужчин выращенных женщинами... 👨‍👨‍👧‍👦

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

Заходите, потихоньку будем расти. Правила поведения просты.

Сегодня собираемся. Завтра напишу первые вопросы и накидаю концептов

P.S. Я надеюсь все понимают рофлы про радужные символы

https://t.iss.one/+rNag9KqMoo1kNzli
Я в танке, но честно всегда думал это рофл такой, что в раше одни из лучших программистов

Оказывается нет

https://www.sayonetech.com/blog/which-country-has-best-computer-programmers-and-developers/
🔥7
Крутая статья от авито. На днях только столкнулся с этим интсрументом внутри компании и думал "Оу, круто. Должна нам помочь для тестировщиков. Не будут годами сборку собирать и поможет легко детектить баги". Спустя пару дней о нем уже статью сделали

https://habr.com/ru/company/avito/blog/681752/
❤‍🔥6👍1
Hashable

🟢 lvl: jun+

Продолжаем идти по базе. Любой уважающий себя джун должен знать отличия словаря от сета. А еще, что только типы данных с протоколом Hashable мы можем пихать в множество или в ключ словаря.

ℹ️ Хэширование: что и зачем

Хэширование — это процесс применения алгоритма для преобразования элемента данных в значение. Элемент данных может быть простым целым числом, строкой или сложным объектом с несколькими свойствами.

Алгоритм называется хеш-функцией или хэшером. Преобразованное значение называется хэш-значением, хэш-кодом или просто хэшем.

Хэширование должно соблюдать правила:
🟪 Хэш-значения должны быть уникальными
🟦 Хэш-значения должны быть случайными
🟥 Хэш-значения не обязательно должны быть положительными целыми числами

Хэширование широко используется в нашей жизни:
Работа с базой данных: поиск
Почти все веб-сайты и мобильные приложения имеют функцию поиска где-то в своих приложениях. Реализация функции поиска предполагает использование хеширования.

Криптография: пароль
Чтобы защитить наш пароль нужно его захэшировать. Мало ли его перехватят

◾️Структуры данных в программировании: Словарь
Почти все современные языки программирования имеют тип данных Dictionary, хотя они могут использовать другое имя, такое как ассоциативный массив, карта, хэш-карта, хэш или объект.

Поняв общее представление о хэшировании опустимся к тому, что предоставляет Apple.

Hashable — тип, который можно хешировать в хешере для получения целочисленного хеш-значения

Подробнее можно почитать в этой статье, лучше о хэше не найдешь
🔥102
Помните я говорил про вачдоги?

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

В ватчдоге нет ничего сложного, но главное не пугаться и не теряться, если попросят что-то подобное сделать

вот еще одна статейка
🔥1
Fail Fast

Совсем недавно я познакомился на практике с концепцией Fail Fast. Она гласит, что любая разработка, пусть техническая или продуктовая, должна как-можно быстрее светить ошибку. Вырубая наглухо доступ к уже ошибочному сценарию. Такая обратная связь — самая ценная. Ведь она помогает решить проблему на раннем этапе, как болезнь на ранних симптомах, которую невозможно вылечить на поздней стадии

Например в динамических языках программирования как JS очень сложно дебажить код, находить ошибки, ведь программа продолжала работу даже с нелогичным и губительным поведением. Этим же и страдал obj-c. В таких технологиях разрабы относятся к ошибочному поведению лояльней.

С приходом свифта же чуть что-то поменялось, но несовсем...

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

https://paulpeelen.com/FailingSafely
👍6❤‍🔥1
Сейчас смотрю всякие видое с болями, трудностями джунов. Они допом помогают с бэклогом фич. Основная задача — принести ценность продуктом.

Основная проблема при поиске работы — это падающая в бесконечную пустоту самооценка. В симуляторе иосника хочется сделать также симулятор собеса. И пока непонятно, делать его максимально легким, настраивать под стрессовую ситуацию или делать с выбором сложности

А пока поделюсь прикольным видео. Тут мужик, будто за бокалом виски из нуарных депрессивных детективах, рассказывает про боли и унижения всех нас в начале пути

https://www.youtube.com/watch?v=WUpPg6JcBWc
👍3🔥3🏆1
Частый вопрос на собесах в тинек — как массив хранит ссылки? Сильно или слабо?

Правильный ответ — сильно.
А как сделать слабо? Использовать NSPointerArray

Подробнее тут
👍14
🤬
Please open Telegram to view this post
VIEW IN TELEGRAM
Короче, пока разрывает от того, что не хватает времени на интересные посты, симулятор иосника, дрочку литкода (да да снова начал) и сторонних зависимостей.

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

Этот материал также пойдет в основу симулятора иосника

контакт тот же. Ну или в чат кидайте https://t.iss.one/+rNag9KqMoo1kNzli
👍1
iOS Makes Me Hate pinned «Короче, пока разрывает от того, что не хватает времени на интересные посты, симулятор иосника, дрочку литкода (да да снова начал) и сторонних зависимостей. Поэтому я использую функцию "звонок другу". Нужен друг, или друзья, которые будут кидать классные…»
Defer

🟢 lvl: mid-

defer — это ключевое слово, которое позволяет выполнить код при выходе из текущей области видимости.

Не самый редкий и не самый частый гость в разных проектах. Часто юзается, чтобы сделать потокобезопасный код, если вы блочите объект, перед его выполнением внутри функции.

Или же, когда вы заалокейтили какую-то инфу в память, но после выполнения нужно все почистить.

Копания в кишки через дизассемблер
Хорошее объяснение с разными практическими примерами
👍6🔥1
📌 ЗАКРЕПЛЯЕМ МАТЕРИАЛ