Pull to refresh
2
Karma
0.1
Rating

Как подготовиться к iOS-собеседованию

Reading time 12 min
Views 21K
inDrive.Tech corporate blog Development for iOS *IT career
✏️ Technotext 2021

Всем привет! Меня зовут Илья, и я провожу собеседования *хлоп-хлоп-хлоп*. Сейчас работаю на позиции Principal iOS Engineer в inDriver, и мой фокус смещен в сторону технических собеседований. До этого руководил мобильной разработкой в в «Альфа-Банке» и был кем-то вроде нанимающего менеджера. Это тот человек, который говорит финальное слово по кандидату и определяет, какую циферку написать в оффере. Помимо «рабочих» собеседований, я иногда собеседую на аутсорсе, а также помогаю разработчикам к ним готовиться. 

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

Читать далее
Total votes 16: ↑16 and ↓0 +16
Comments 13

Пакеты Flutter, которые я использую в каждом проекте

Reading time 4 min
Views 11K
OTUS corporate blog Programming *Flutter *
Translation

В этой статье я просто хочу познакомить новых пользователей с моими любимыми пакетами. Речь пойдет о некоторых из лучших пакетов Flutter, которые могут сократить время разработки и повысить производительность вашего приложения Flutter в кратчайшие сроки. Эти пакеты и библиотеки Flutter используются для различных аспектов технологии Flutter. Итак, давайте с них начнем.

Читать далее
Total votes 13: ↑11 and ↓2 +9
Comments 3

Вертел я ваши UIView

Reading time 10 min
Views 7.7K
Skyeng corporate blog Development for iOS *Development of mobile applications *Interfaces *Mobile applications design *

Эта статья является логическим продолжением UIKit ты вообще про UI?
Если вы ее пропустили, рекомендую сначала ознакомиться с ней. На всякий случай напоминаю, что весь графический интерфейс – это ответственность слоев (не вью!).

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

Сегодня я не буду подробно разбирать проективную геометрию, глубокие математические обоснования и принципы работы с матрицами. Надеюсь, что вы либо уже знакомы с этим, либо можете разобраться в этом сами. Я постараюсь объяснить все так, чтобы было понятно даже тем, кто видит все эти ужасные слова впервые. 

Давайте разберемся, как работают трансформации, постараемся понять подходы к ним и найти закономерности. Для того, чтобы начать погружение в трансформации, стоит для начала разобраться с контекстом. Ведь мы не просто рисуем карандашом на листе бумаги, мы управляем объектами в виртуальном мире. Сделаю небольшую оговорку – на самом деле все это очень сложные технические процессы (шедевры инженерной мысли), разобраться в которых за 15 минут не получится. Поэтому я буду умышленно упрощать некоторые вещи для того, чтобы сформировать общее понимание.

Читать далее
Total votes 17: ↑17 and ↓0 +17
Comments 5

[Пятничное] Теория Жоп

Reading time 5 min
Views 172K
Project management *IT career
Sandbox

Эту полу-шуточную теорию о проектном управлении я излагал коллегам по ИТ цеху лет 15 назад, и тогда же неоднократно слышал советы загрузить этот текст на Хабр, но руки не дошли. На днях, разгребая старые файлы наткнулся на свои записи и решил все таки поделиться ими с Вами. Частое употребление ключевого слова к сожалению, неизбежно и не отделимо для целостности этого текста, прошу принимать или нет 'as is'. Итак...

Каждая карьера развивается от Жопы к Жопе, и никак иначе. Хочешь повышения - ищи Жопу и принимай, как говорят в Америке, "challenge". Если Вам предлагают возглавить новый проект, либо занять какую то должность, да что угодно - знайте, там Вас ждет Жопа. Иначе не предложили бы, а сами бы справились. Равно как и если Вы ожидаете избавиться от надоевшей Вам сейчас деятельности, надеясь вырваться из "этого ада" и заняться "чем то новеньким" - будьте готовы встретиться с Большой Жопой.

Читать далее
Total votes 496: ↑485 and ↓11 +474
Comments 93

Перейти с Linux на macOS и не сойти с ума

Reading time 9 min
Views 71K
*nix *Software Laptops Lifehacks for geeks

Ноутбук — главный девайс в моей жизни, я провожу за ним бо́льшую часть суток. Он должен быть лёгким, компактным и мощным. Долгое время лидером по этим параметрам был Dell XPS 13, но всё поменялось с выходом MacBook Air на процессоре M1.

Air всего на 100 граммов тяжелее XPS 13, но примерно в три раза мощнее, автономнее и не нуждается в активном охлаждении. Никогда не думал, что скажу подобное про технику Apple, но MacBook Air — самое крутое устройство в своей весовой категории на рынке, оставившее конкурентов далеко позади.

Я фанат Линукса, эта операционная система для меня больше, чем просто окружение. Это философия, новостная повестка и постоянный предмет обсуждения. Поэтому сама идея отказа от Linux в пользу другой ОС меня всегда отталкивала. Да и тот эпизодический опыт, когда приходилось что-то делать в macOS, был эмоционально неприятным.

Но появление M1 посеяло во мне зерно сомнений: мой ноутбук больше не был самым крутым и навязчивой мыслью было то, что я отказываю себе в чём-то большем. Это зерно прорастало и проросло: я купил MacBook Air с 16GB ОЗУ и 512GB SSD, с удивлением обнаружив, что он ещё и стоит дешевле моего XPS. Впереди меня ожидали настройка окружения, борьба с Docker, грусть от отсутствия привычного автодополнения в консоли и много чего ещё.

Читать далее
Total votes 136: ↑131 and ↓5 +126
Comments 378

Как формируются зарплаты с точки зрения экономики и почему программисты столько получают

Reading time 4 min
Views 53K
Райффайзен Банк corporate blog IT career Finance in IT IT-companies

Всем же интересно про зарплаты? Давайте про зарплаты

Меня зовут Алексей и я работаю в Райффайзенбанке техлидом. Последние 12 лет я нон-стоп нанимаю технических специалистов и меня всегда интересовал зарплатный гэп между айтишниками и не-айтишниками. Судя по дискуссиям в интернете — разница в зарплатах волнует многих. Так получилось, что в качестве хобби я интересуюсь экономикой. Поэтому когда моих знаний стало хватать для понимания причин такого разрыва, то в голове сразу же щелкнули шестеренки, картина мира обрела гармонию и я получил заслуженную порцию дофамина.

Под катом я рассказываю о том, как формируется зарплата (особенно программиста) с точки зрения экономики.

Читать далее
Total votes 70: ↑62 and ↓8 +54
Comments 399

Подходы к спискам на UICollectionView

Reading time 14 min
Views 5.7K
Vivid Money corporate blog Development for iOS *Development of mobile applications *Swift *

Уже давным давно, во всех известных нам галактиках мобильные приложения представляют информацию в виде списков - будь то доставка еды на Татуине, имперская почта или обычный ежедневник джедая. С незапамятных времен мы писали UI на UITableView и не задумывались.

Копились бесчисленные баги и знания об устройстве этого инструмента и о лучших практиках. И когда мы получили очередной infinite scroll дизайн, мы поняли: пришло время задуматься и дать отпор тирании UITableViewDataSource и UITableViewDelegate.

Читать далее
Total votes 5: ↑5 and ↓0 +5
Comments 3

Фильтр Калмана — это легко

Reading time 18 min
Views 48K
Singularis corporate blog Algorithms *


Много людей, в первый раз сталкивающихся в работе с датчиками, склонны считать, что получаемые показания — это точные значения. Некоторые вспоминают, что в показаниях всегда есть погрешности и ошибки. Чтобы ошибки в измерениях не приводили к ошибкам в функционировании системы в целом, данные датчиков необходимо обрабатывать. На ум сразу приходит словосочетание “фильтр Калмана”. Но слава этого “страшного” алгоритма, малопонятные формулы и разнообразие используемых обозначений отпугивают разработчиков. Постараемся разобраться с ним на практическом примере.
Читать дальше →
Total votes 73: ↑71 and ↓2 +69
Comments 34

Математика верстальщику не нужна, или Временные функции и траектории для покадровых 2D анимаций на сайтах

Reading time 15 min
Views 13K
Website development *JavaScript *Mathematics *
Tutorial
🔥 Technotext 2020


«Математика верстальщику не нужна!», — говорили они. «Арифметики за 2 класс школы хватит!», – говорили они. «Верстальщик – не программист, так что нечего себе голову забивать точными науками!», — чего только не услышишь на просторах интернета на тему нужности тех или иных знаний при разработке сайтов. И на самом деле в большинстве случаев человеку, который делает интерфейсы, и правда хватает умения складывать числа. Что-то более сложное встречается редко и обычно уже есть готовый алгоритм где-то в недрах NPM. Но сайты – понятие растяжимое, и иногда все же нужно включить голову, и разобраться в каком-то вопросе. И один из таких вопросов – это траектории в 2D анимациях.


Наблюдая за людьми, которые осваивают JS, и, в частности, покадровые анимации в вебе, я заметил, что у многих возникают сложности, когда нужно сделать движение какого-то объекта на странице по определенной траектории. И, если эта траектория не нарисована заранее заботливым дизайнером в виде path в SVG-картинке, а формулируется какими-то общими словами и ссылками на референсы из сети, или, что еще хуже, должна генерироваться на лету, то задача приводит их в полный ступор. По всей видимости все упирается в тотальное непонимание того, как получить кривую той или иной формы в рамках JS. Об этом мы сегодня и поговорим в формате своеобразной лекции о временных функциях для анимаций в самых разных их проявлениях.


Мы постараемся избежать излишней теоретизации, отдавая предпочтение картинкам и объяснению всего на пальцах, с акцентом на практическое использование в вопросах 2D анимаций на сайтах. Так что местами формулировки могут быть не совсем точными с точки зрения математики или не совсем полными, цель этой статьи – дать общее представление о том, что бывает, и откуда можно начать в случае чего.

Читать дальше →
Total votes 11: ↑11 and ↓0 +11
Comments 11

Изобретаем велосипед или пишем персептрон на С++. Часть 3

Reading time 5 min
Views 3.7K
C++ *Artificial Intelligence
Tutorial

Изобретаем велосипед или пишем персептрон на C++. Часть 3


Реализуем обучение многослойного персептрона на C++ при помощи метода обратного распространения ошибки.



Читать дальше →
Total votes 7: ↑5 and ↓2 +3
Comments 0

Как постичь машинное обучение, если ты не великий математик

Reading time 4 min
Views 26K
Plarium corporate blog Mathematics *Machine learning *Studying in IT Artificial Intelligence
Translation
Предлагаем почитать перевод статьи Diego Isco с ресурса dev.to. Она будет полезна начинающим специалистам в области ML.

Читать дальше →
Total votes 18: ↑14 and ↓4 +10
Comments 16

Совместимый с «Objective-C» «Swift»-код

Reading time 8 min
Views 22K
Development for iOS *Objective C *Xcode *Swift *
Sandbox
Хоть Apple и написали, казалось бы, подробную документацию о том, как можно использовать «Swift»-код внутри «Objective-C»-приложения (и наоборот), но, когда доходит до дела, этого почему-то окаывается недостаточно. Когда у меня впервые появилась необходимость обеспечить совместимость фреймворка, написанного полностью на «Swift», с «Objective-C»-приложением, документация «Apple» почему-то породила больше вопросов, чем дала ответов (ну или по крайней мере оставила множество пробелов). Интенсивное использование поисковых систем показало, что данная тема освещена в Сети довольно скудно: парочка вопросов на StackOverflow, пара-тройка вводных статей (на англоязычных ресурсах, конечно) – вот и все, что удалось найти.

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

Читать дальше →
Total votes 11: ↑10 and ↓1 +9
Comments 7

Интернационализация: как вывести продукт на международный рынок (и не сойти с ума)

Reading time 16 min
Views 5.9K
Alconost corporate blog Language localisation *Mobile applications monetization *Games monetization *Product Management *
Translation


«Наш продукт популярен на внутреннем рынке, поэтому теперь мы думаем выходить на международный. С чего мне начать как менеджеру по продукту?»

«Поначалу выход на новый рынок не казался чем-то сверхсложным, но вопросов появляется всё больше и больше… а сроки поджимают».

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

В этой статье мне хотелось бы пройтись по моему контрольному списку вопросов, составленному на основе общепринятых рекомендаций по локализации и моего 10-летнего опыта международного масштабирования программных продуктов (это и мобильные игры, и B2C-приложения для массового рынка, и SaaS-продукты B2B).

Примечание. Этот список ни в коем случае не исчерпывающий. В нем рассмотрено в основном то, что поможет менеджеру по продукту обеспечить беспроблемный выход ПО на новом рынке (поэтому здесь я не углубляюсь в продажи, маркетинг и юридические аспекты).

Для начала — основные понятия:

  • Глобализация — подготовка продукта к работе на разных рынках. Сюда относится различные аспекты маркетинга, дизайна и технологической реализации.
  • Интернационализация (сокращенно — i18n) — обеспечение максимальной универсальности продукта, создание прочного фундамента для локализации и перевода.
  • Локализация (сокращенно — l10n) — адаптация продукта к определенным региону, культуре и языку.
  • Перевод (сокращенно — t9n) — собственно перевод продукта на новый язык.

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


Взаимоотношение различных процессов в рамках продукта. Источник: блог Adobe.

Переведено в Alconost
Читать дальше →
Total votes 5: ↑5 and ↓0 +5
Comments 0

Подборка статей о машинном обучении: кейсы, гайды и исследования за январь 2020

Reading time 5 min
Views 8.9K
Python *Machine learning *Artificial Intelligence TensorFlow *
Исследовательская работа в области машинного обучения постепенно покидает пределы университетских лабораторий и из научной дисциплины становится прикладной. Тем не менее, все еще сложно находить актуальные статьи, которые написаны на понятном языке и без миллиарда сносок.

Этот пост содержит список англоязычных материалов за январь, которые написаны без лишнего академизма. В них вы найдете примеры кода и ссылки на непустые репозитории. Упомянутые технологии лежат в открытом доступе и не требуют сверхмощного железа для тестирования.
Читать дальше →
Total votes 13: ↑13 and ↓0 +13
Comments 3

8 важных веб-приложений для разработчиков

Reading time 3 min
Views 20K
Plarium corporate blog Programming *Lifehacks for geeks
Translation
Предлагаем вам познакомиться с переводом статьи Jamie Bullock, опубликованной на сайте medium.com. Автор рассказывает, какие веб-приложения он обычно использует в работе.

Читать дальше →
Total votes 31: ↑21 and ↓10 +11
Comments 8

Сложные отображения коллекций в iOS: проблемы и решения на примере ленты ВКонтакте

Reading time 17 min
Views 18K
VK corporate blog Development for iOS *Development of mobile applications *

Привет! Меня зовут Саша, я iOS-разработчик в команде, которая делает ленту ВКонтакте. Сейчас расскажу, как мы оптимизируем отображение интерфейса и обходим связанные с этим проблемы.
Думаю, вы представляете, что такое лента VK. Это экран, где можно просматривать разнообразный контент: тексты, статичные картинки, анимированные гифки, встраиваемые элементы (видео и музыку). Всё это должно отображаться плавно, отсюда высокие требования к производительности решений.


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


Если вы больше любите слушать, чем читать, видеозапись доклада есть вот тут.


Читать дальше →
Total votes 25: ↑25 and ↓0 +25
Comments 11

«Обратите внимание» #4: Дайджест статей о продуктовом мышлении, поведенческой психологии и продуктивности

Reading time 1 min
Views 1.8K
Research and forecasts in IT *Product Management *Design Lifehacks for geeks


  • Кофаундер Цукерберга написал вдумчивую статью, почему госрегуляторам пора обязать Facebook к разделению. Многие аргументы мы уже обсуждали ранее, и главный остается все тем же: сейчас Цукерберг единолично решает, что делать с коммуникацией и массовой информацией для 2 млрд человек. Это, кажется многим, как-то слишком.
    NYTimes
  • Бен Эванс (a16z) рассуждает о статье выше у себя в рассылке. Бен вовсе не убежден, что если разбить компанию, это приведет к чему-то толковому. Заодно делится мыслями о прошедшем Google I/O.
    Mailchimp
Читать дальше →
Total votes 7: ↑7 and ↓0 +7
Comments 1

256 строчек голого C++: пишем трассировщик лучей с нуля за несколько часов

Reading time 8 min
Views 130K
Programming *C++ *Working with 3D-graphics *Game development *Mathematics *
Tutorial
Публикую очередную главу из моего курса лекций по компьютерной графике (вот тут можно читать оригинал на русском, хотя английская версия новее). На сей раз тема разговора — отрисовка сцен при помощи трассировки лучей. Как обычно, я стараюсь избегать сторонних библиотек, так как это заставляет студентов заглянуть под капот.

Подобных проектов в интернете уже море, но практически все они показывают законченные программы, в которых разобраться крайне непросто. Вот, например, очень известная программа рендеринга, влезающая на визитку. Очень впечатляющий результат, однако разобраться в этом коде очень непросто. Моей целью является не показать как я могу, а детально рассказать, как подобное воспроизвести. Более того, мне кажется, что конкретно эта лекция полезна даже не столь как учебный материал по комьпютерной графике, но скорее как пособие по программированию. Я последовательно покажу, как прийти к конечному результату, начиная с самого нуля: как разложить сложную задачу на элементарно решаемые этапы.

Внимание: просто рассматривать мой код, равно как и просто читать эту статью с чашкой чая в руке, смысла не имеет. Эта статья рассчитана на то, что вы возьмётесь за клавиатуру и напишете ваш собственный движок. Он наверняка будет лучше моего. Ну или просто смените язык программирования!

Итак, сегодня я покажу, как отрисовывать подобные картинки:


Читать дальше →
Total votes 241: ↑241 and ↓0 +241
Comments 124

Doom of SceneKit. Опыт работы Яндекса с 3D-графикой в iOS

Reading time 16 min
Views 6.4K
Яндекс corporate blog Development for iOS *Working with 3D-graphics *Development of mobile applications *Mobile applications design *

— I’m too young to die.


SceneKit — высокоуровневый фреймворк трехмерной графики в iOS, который помогает создавать анимированные сцены и эффекты. Он включает в себя физический движок, генератор частиц и набор простых действий для 3D-объектов, которые позволяют описать сцену в терминах контента — геометрии, материалов, освещения, камер — и анимировать её через описание изменений для этих объектов.



Сегодня мы внимательным, немного суровым взглядом посмотрим на SceneKit, но, для начала обратимся к основам и посмотрим, что представляет из себя 3D-сцена и что нужно сделать, чтобы её создать.

Читать дальше →
Total votes 41: ↑39 and ↓2 +37
Comments 11
1

Information

Rating
2,994-th
Registered
Activity