Kotlin Multiplatform Mobile позволяет компилировать Kotlin код в нативные библиотеки для Android и iOS. И если в случае с Android полученная из Kotlin библиотека будет интегрироваться с приложением написанным на Kotlin, то для iOS интеграция будет с Swift и на стыке Kotlin и Swift, из-за разницы языков, происходит потеря удобства использования. В основном это связано с тем, что компилятор Kotlin/Native (который компилирует Kotlin в iOS framework и является частью Kotlin Multiplatform) генерирует публичное API фреймворка на ObjectiveC, а из Swift мы обращаемся к Kotlin за счет этого сгенерированного ObjectiveC API, так как Swift имеет интероп с ObjectiveC. Далее я покажу примеры ухудшения API на стыке Kotlin-Swift и покажу инструмент, который позволяет получить более удобное API для использования из Swift.
iOS разработчик
На пути к «10x инженеру»: шорткаты, сниппеты, шаблоны
Домашний кинотеатр на Raspberry
Детям геймеров нечего делать в школе. Почему игры должны быть частью школьного образования
Ученье — детям не игрушка
Пока ребенок ходит пешком под стол, планшет — часть его обучения. Все радостно качают малышам Toca Boca, помогают укладывать пальцем простейшие пазлы, поют с ним песенки, двигают туда-сюда треугольники. Человек делает первые шаги в науке и вся семья готова аплодировать, если он верно сортирует грибочки по цветам.
На другом уровне, на уровне высшего образования, игры снова работают на человека.
Фулстеки — это вечные мидлы. Не идите по этому пути, если не хотите страдать
Когда я только начал учиться кодить, я поверил старым мудрым засранцам с их мантрой «язык программирования не важен». У меня появилась идея фикс — быть разработчиком, который может всё. Парнем, который переносит опыт использования одной технологии на другую и возносится над деталями. Но эта затея с треском провалилась.
SOLID
SOLID критикует тот, кто думает, что действительно понимает ООП
© Куряшкин Виктор
Я знаком с принципами SOLID уже 6 лет, но только в последний год осознал, что они означают. В этой статье я дам простое объяснение этим принципам. Расскажу о минимальных требованиях к языку программирования для их реализации. Дам ссылки на материалы, которые помогли мне разобраться.
Где лучше всего жить и работать разработчику
Где лучше всего искать работу разработчику? В Нью-Йорке? Сан-Франциско?
Если судить по уровню заработной платы, Кремниевая долина явный победитель — среднегодовой доход для разработчика там составляет 110 554 $, согласно данным Glassdoor. Но стоимость аренды в области залива Сан-Франциско настолько высока, что не все разработчики могут позволить себе снимать там жильё.
Как мы починили свой процесс и стали меньше отвлекаться
Расскажу про некоторые практики и подходы, которые мы внедрили и используем для обеспечения стабильного процесса. Ключевая идея, вокруг которой все это строится, — у разработчика должен быть фокус на разработку, от которого его следует как можно меньше отвлекать.
Синглтоны и общие экземпляры
Каждый раз при обсуждении программного обеспечения с другими разработчиками всплывает тема синглтонов, особенно в контексте развития WordPress’а. Я часто пытаюсь объяснить, почему их надо избегать, даже если они считаются стандартным шаблоном.
В данной статье я попытаюсь раскрыть тему того, почему синглтоны никогда не должны использоваться в коде и какие есть альтернативы для решения похожих проблем.
Конференции для разработчиков как путь в Senior? И что, работает?
Хочу передать пламенный привет эйчарам, из-за которых конференции для разработчиков часто напоминают больше ярмарку вакансий, нежели место, где можно пожать шеи авторов фреймворка. Я хочу немного понегодовать по этому поводу и рассказать, как мы тщательно выгоняли со своих конференций в специальные резервации всех тех, кто не знает, на какие 10 типов делятся люди по знанию двоичного исчисления.
В общем, ниже про то, как выжать максимум из посещения профильной конференции для разработчиков, чего можно и чего нельзя добиться, и где самый жир.
LLVM для исследователей
Что такое LLVM?
LLVM — это по-настоящему удобный для разборки и сборки «ранний» компилятор для таких традиционных языков программирования, как C и C++.
LLVM настолько хорош, что считается «больше, чем просто компилятором» (это динамический компилятор, он работает с языками, не относящимися к семейству C, он представляет собой новый формат доставки для App Store и т. д. и т. п.). Все перечисленное верно, но для нашей статьи важно лишь приведенное выше определение.
LLVM имеет несколько ключевых отличий от других компиляторов:
- Главное новшество — промежуточное представление (ПП). LLVM работает с ПП, которое действительно можно прочитать (если вы умеете читать ассемблерный код). Возможно, кому-то это не покажется столь уж большим откровением, однако это свойство очень важно. ПП других компиляторов обычно имеют настолько сложную структуру, что их невозможно записать вручную, трудно понять и использовать.
Повседневный C++: изолируем API в стиле C
Мы все ценим C++ за лёгкую интеграцию с кодом на C. И всё же, это два разных языка.
Наследие C — одна из самых тяжких нош для современного C++. От такой ноши нельзя избавиться, но можно научиться с ней жить. Однако, многие программисты предпочитают не жить, а страдать. Об этом мы и поговорим.
Изучите все языки программирования
— Что, даже на том нечитаемом эзотерическом языке, где есть всего пара команд, которые едва-едва симулируют машину Тьюринга?
— Да, этот язык называется brainfuck. Я знаю brainfuck.
И это был не трюк — мы проверили. Я называл известный мне язык программирования, он тратил пару минут в Интернете на то, чтобы освежить свои знания по нему — и был способен писать на этом языке работающие алгоритмы. Я никак не мог понять этого. Ему, как и мне, было тогда около 18 лет — как он мог в этом возрасте знать все эти языки?
Интерпретатор brainfuck, написанный на brainfuck
Сегодня у меня всё ещё вызывает уважение та демонстрация умений моего однокурсника, но я уже не шокирован ею. После того, как я сам выучил уже не один язык программирования, мне стало понятно, что отличаются друг от друга они значительно меньше, чем того можно было бы ожидать. На каком-то этапе обучения я уже обращал внимание не столько на синтаксис языка программирования, сколько на лежащие в его основе идеи, модель памяти, принципы выполнения инструкций. Всё это можно назвать теорией языков программирования, с точки зрения которой разные языки просто реализуют несколько различные версии одних и тех же базовых идей.
Сегодня я советую своим студентам «постараться изучить все языки программирования». Подумайте сами — ведь эта идея лучше, чем все вот эти «В этом году я выучу Go! Ой, нет, теперь говорят что в моде Rust — выучу лучше Rust! Или Swift ...». Просто выучите все — не ошибётесь. А эта статья, возможно, вам в этом немного поможет.
Как стать тимлидом и не взорваться
Два года назад я начал негласно исполнять роль iOS-lead в компании Touch Instinct и формированием стабильной работы iOS-отдела. Спустя полгода это трансформировалось в официальную должность. Из-за отсутствия опыта у меня возникало огромное количество проблем, которые вызывали жжение в области верхней части кресла. Это происходило из-за ряда факторов:
- Нехватка опыта менеджмента.
- Отсутствие рядом компетентного человека, уже прошедшего путь становления от новой для себя роли к человеку, который понимает устройство процессов, обязанностей и пути решения проблем.
- Нестабильность общих процессов в компании из-за её молодого возраста на тот момент.
Если вы стали лидом и первоначальная эйфория сменилась небольшим горением и унынием, то пара советов не будет лишней.
Junior, который в первый день работы удалил базу данных с production
«Два типа людей в эксплуатации: кто уже сломал production, кто ещё только собирается это сделать»
Опубликованная 10 дней назад заметка собрала более 23 тысяч положительных голосов на Reddit и разошлась по другим специализированным ресурсам вроде The New Stack. Суть истории такова:
Открытое письмо рекрутерам IT-сферы
Оригинал данного текста был написан разработчиком программного обеспечения из Швейцарии Адрианом akosma Космачевским. Другой его текст «Каково это — быть разработчиком, когда тебе сорок» уже переводился для Хабра. В первую очередь, все написанное ниже обращено к рекрутерам «по найму» — рекрутинговым агенствам, предоставляющим услуги поиска работников другим компаниям. Но в целом, он применим и для обычных HR-департаментов в нашем регионе.
Приятного чтения.
Мой рабочий день всегда начинается с просмотра сайтов, чтобы быть в курсе последних бед и катастроф, от которых страдает наш мир, но сегодня одну из этих бед я обнаружил в своем ящике электронной почты. Это было очередное письмо от рекрутера.
Мне иногда кажется, что преследование со стороны рекрутеров всех мастей является неотъемлемой частью бытности разработчика программного обеспечения. Я получаю по три-четыре письма в неделю на свой e-mail, постоянно отвечаю на телефонные звонки и даже получаю почту (знаете, эти старые-добрые пакеты, конверты, с такими марками на них), с предложениями вакансий по всей Европе.
Мои навыки пользуются спросом и мне кажется, я должен радоваться этому. Но есть проблема, и состоит она в том, что 99% всех попыток контакта со мной со стороны рекрутеров были тем или иным образом провалены. За 19 лет работы разработчиком ПО у меня сложилось не самое хорошее представления обо всех этих «возможностях», призывах «индустрии» и связанными со всем этим методами.
Так что, дамы и господа (рекрутеры), чтя стандартный стиль ваших сообщений, пожалуйста, ознакомьтесь с моим Top Five List некорректных моделей коммуникации рекрутеров с разработчиками программного обеспечения.
to be a programmer is to exist in a state of near-constant bemusement that literally anything works ever
— kat ★ (@wirehead2501) January 26, 2016
Каково это — быть разработчиком, когда тебе сорок
Этот пост был написан и опубликован на Medium разработчиком приложений Адрианом Космачевским из Швейцарии. Кроме подготовки перевода его публикации, я также пригласил и самого автора, Адриана ( akosma ), на Хабр, для того, чтобы он смог лично ответить на любые вопросы участников сообщества, если таковые возникнут. Думаю, для общего удобства при общении в комментариях с ним стоит использовать английский (и, при желании, дублировать на русском).
Привет всем, я — сорокадвухлетний программист-самоучка, а это моя история.
Пару недель назад я наткнулся на твит, в котором была картинка, прикрепленная ниже, и он заставил меня задуматься о моей карьере.
Эти размышления привели меня туда, откуда все начиналось.
Я дебютировал в роли разработчика программного обеспечения в 10 часов утра 6 октября 1997 года, в городе Оливос, к северу от Буэнос-Айреса, в Аргентине. Был понедельник. Не так давно я праздновал свой 24-й день рождения.
Мир в 1997 году
Тогда он был немного другим. На веб-сайтах не было предупреждений об использовании cookie. Новаторскими в сети были сайты вида Excite.com, а моим любимым поисковиком был AltaVista.
Мой электронный ящик имел вид kosmacze@sc2a.unige.ch и был расположен на личном веб-сайте, который размещался по адресу http://sc2a.unige.ch/~kosmacze. Тогда мы еще оплакивали принцессу Диану, а Стив Джобс только-только вернулся на роль CEO и убедил Microsoft «вбросить» в Apple Computer 150 миллионов долларов. Digital Equipment Corporation подала в суд на Dell, останки Че Гевары вернули на Кубу, только начался четвертый (!) сезон «Друзей». Был убит Джанни Версаче, скончались Мать Тереза, Рой Лихтенштейн и Жанна Кальман. Люди зависали за Final Fantasy 7 на PlayStation, будто бы были наркоманами, Би-Би-2 начал вещание телепузиков, а Кэмерон только собирался показать миру свой «Титаник».
Архитектурные паттерны в iOS
Введение в MVP, MVC, MVVM и VIPER. Что между ними общего и в чем разница.
Делаете все по MVC, а получается некрасиво? Сомневаетесь, переходить ли на MVVM? Слышали о VIPER, но не уверены, стоит ли оно того?
В этой статье я кратко рассмотрю некоторые популярные архитектурные паттерны в среде iOS и сравню их в теории и на практике. Больше информации вы найдете при переходе по ссылкам, указанным в тексте.
Information
- Rating
- Does not participate
- Location
- Самара, Самарская обл., Россия
- Works in
- Date of birth
- Registered
- Activity