Хабр, привет! Я снова пришёл к вам со статьёй, где показываю мои любимые техники вёрстки. Моя цель — поделиться опытом с вами. Я использую не только трюки известных экспертов, есть лично мои придумки. Но, пожалуйста, относитесь к этому контенту, как просто альтернативному мнению. Мои техники не являются единственными правильными решениями.
Пользователь
Как я правил контраст и базовую палитру в дизайн-системе
Меня зовут Игорь Пешков, я дизайнер в KODE — IT-компании, которая занимается коммерческой разработкой. Хочу рассказать вам, как исправлял проблемы с контрастом в дизайн-системе одной крупнейшей в своей области экосистемы IT-продуктов (сами понимаете — NDA).
Этот материал — обобщение и описание практического опыта. Теории здесь минимум, так что в первую очередь это будет полезно новичкам в работе с дизайн-системами и палитрами. Но надеюсь, что бывалые опытные дизайнеры тоже найдут здесь что-то полезное. Или хотя бы лишний раз в чём-то убедятся)
История одного pet-проекта
Александр учился в Высшей Школе Экономики на факультете ФКН и руководил встречами CocoaHeads, пока не уехал из России. Участвовал в разных европейских и американских стартапах, но в то же время успел поработать и full-time в лондонском Badoo. Сейчас Александр участвует в проектах в доле. В своем докладе на конференции App Live 2019 Александр рассказал о том, что помогло ему сделать проект прибыльным, и какой путь он прошёл для этого. Его рассказ — от идеи до результата, — мы расшифровали и публикуем сегодня.
Разработка мобильных приложений на заказ недорого: реальность или иллюзия
Лучшие вопросы средней сложности по SQL на собеседовании аналитика данных
С 2015 по 2019 годы я прошёл четыре цикла собеседований на должность аналитика данных и специалиста по анализу данных в более чем десятке компаний. После очередного неудачного интервью в 2017 году — когда я запутался в сложных вопросах по SQL — я начал составлять задачник с вопросами по SQL средней и высокой сложности, чтобы лучше готовиться к собеседованиям. Этот справочник очень пригодился в последнем цикле собеседований 2019 года. За последний год я поделился этим руководством с парой друзей, а благодаря дополнительному свободному времени из-за пандемии отшлифовал его — и составил этот документ.
Есть множество отличных руководств по SQL для начинающих. Мои любимые — это интерактивные курсы Codecademy по SQL и Select Star SQL от Цзы Чон Као. Но в реальности первые 70% из курса SQL довольно просты, а настоящие сложности начинаются в остальных 30%, которые не освещаются в руководствах для начинающих. Так вот, на собеседованиях для аналитиков данных и специалистов по анализу данных в технологических компаниях часто задают вопросы именно по этим 30%.
Удивительно, но я не нашёл исчерпывающего источника по таким вопросам среднего уровня сложности, поэтому составил данное руководство.
32 отличия дизайна мобильного приложения под iOS и Android
Железный дизайнер из Redmadrobot Design Lab Артур Абраров делится наблюдениями.
Адаптировать дизайн под другую платформу — неотъемлемая часть работы дизайнера мобильных приложений. Цель этой работы — органично вписать дизайн в паттерны взаимодействия пользователя. К тому же, проработанная адаптация упрощает разработку за счёт использования нативных компонентов платформы.
Чтобы адаптировать дизайн правильно, нужно соблюдать гайдлайны платформ: Human Interface Guidelines (HIG) у iOS и Material Design у Android. И общаться с разработчиками, в идеале подключать их к дизайну как можно раньше, чтобы они могли сразу задать технические ограничения.
Но в чём именно отличается дизайн под iOS от дизайна под Android? В этой статье я разберу 32 конкретных отличия дизайна под iOS и Android. Они поделены на четыре группы:
- Базовые отличия.
- Отличия в навигации и паттернах (UX).
- Отличия в компонентах (UI).
- Прочие отличия.
Особенности iOS будут слева, а Android — справа или сверху/снизу.
Базовые отличия
Human Interface Guidelines vs Material Design
Почти все отличия этой статьи взяты из анализа этих гайдлайнов. Их суть на идейном уровне следующая. HIG — это про плоский, лёгкий, дружелюбный дизайн, пришёл он из постепенного отказа от скевоморфизма.
Material же имеет несколько основополагающих принципов: материал как метафора; смелый, графический, сознательный; осмысленная анимация; гибкая основа и кроссплатформенность. Если вы не знакомы с гайдлайнами, лучше их прочесть до того, как ознакомитесь со статьёй.
Анимируем RecyclerView легко без перехода на ViewPager2
Когда мы работаем с коллекциями и их отображением, перед многими из нас часто
встает выбор между ViewPager
(теперь ещё и ViewPager2
) и RecyclerView
. Эти
компоненты похожи друг на друга по области применения, но серьезно отличаются
интерфейсом и реализацией. Начиная с support library 24.2.0 границы между
данными компонентами стали ещё более размытыми, т.к. появился вспомогательный
класс SnapHelper
для автоматического доведения сhildView
до
определенного положения на экране, и без устаревшего ViewPager
стало проще
обходиться. С недавним релизом ViewPager2
, казалось бы, о старом ViewPager
и о
практиках его имитации вообще можно забыть (ViewPager2
— это по сути
RecyclerView
с дополнительными вспомогательными классами, он позволяет
практически идентично повторить поведение ViewPager
и сохраняет совместимость со
старым api).
Так ли это на самом деле? Лично для меня всё оказалось не так просто. Во-первых,
в классическом RecyclerView
отсутствует интерфейс PageTransformer
для
анимирования сhildView
в зависимости от позиции (далее по тексту используется
понятие «позиционная анимация»). Во-вторых, неприятными сюрпризами долгожданного
ViewPager2
оказались модификатор класса final
, который ставит крест на
переопределении метода onInterceptTouchEvent
(компонент мало пригоден для
вложения горизонтальных списков в вертикальные), и приватность поля
recyclerView
.
Итак, столкнувшись в очередной раз с трудностями позиционной анимации при
отображении коллекций с помощью RecyclerView
и поковырявшись в ViewPager2
и
MotionLayout
, я подумал, что позаимствовать принцип работы
ViewPager.PageTransformer
для классической реализации RecyclerView
а-ля
ViewPager2
не самая плохая идея.
Обзор светодиодных ламп Remez E27 и E14 на корейских светодиодах нового поколения
Качество современных источников света постепенно улучшается и уже стало сравнимо с обычным солнечным светом. Такой источник появился благодаря корейским светодиодам Sunlike, имеющих спектр как у дневного света. Недостатком обычных светодиодов является избыток синего света в излучаемом спектре.
DartUP 2019: итоги и видеозаписи докладов
23 ноября в питерских Ткачах прошел DartUP — единственная в России конференция по Dart и Flutter. Это уже третье большое событие, организованное Wrike при поддержке Google. Все началось три года назад, когда Wrike создал русскоязычное сообщество DartRu, которое было официально признано Google. За это время мы провели несколько тематических митапов и конференций, и вот в 2019-м нам едва ли хватило мест на DartUP для всех желающих.
Мы хотим поблагодарить всех участников, спикеров, ведущих и организаторов! Без вас DartUP бы не удался. За целый день мы успели послушать доклады в двух залах, посоревноваться в CodeBattle, узнать про Dart и Flutter из первых уст, выиграть призы, задать вопросы в специальном приложении и, конечно, пообщаться на неформальной нетворкинг-сессии, запивая все специально сваренным Dart-пивом.
Несколько цифр про DartUP 2019:
Справочник начинающего подкастера
Эта статья — краткое руководство для тех, кто хочет запустить свой собственный подкаст. Когда я вместе с моим нынешним соведущим год назад запускал подкаст “В бесконечность и далее”, я не смог найти ни одной по-настоящему всеобъемлющей статьи. Поэтому я решил попытаться заполнить этот пробел и написать руководство для себя из прошлого.
Немного о структуре — это руководство содержит 4 статьи:
- Общая философия
1.1. Зачем делать подкаст?
1.2. Целевая аудитория
1.3. Выбор жанра
1.4. Формат - Технический базис
2.1. Что такое подкаст с технической точки зрения
2.2. Аудио-формат
2.3. Про динамики, наушники и ламповый звук
2.4. Про тихое помещение - Делаем покупки
3.1. Покупаем микрофон
3.2. Выбираем аудиоредактор
3.3. Выбираем программу для записи звука
3.4. Выбираем хостинг подкаста
3.5. Сайт-визитка - Записываем и выпускаем
4.1. Запись выпуска
4.2. Редактирование выпуска
4.3. Про джинглы и звуковые схемы
4.4. Про фоновый шум
4.5. Про фильтры
4.6. Про Show Notes, а также про то, зачем слушать свой подкаст
4.7. Публикация подкаста
4.8. Монетизация
4.9. Темы, которые есть, но о которых мы не говорили
Каждый раздел статьи содержит три блока
- Суть раздела — основная мысль, изложенная тезисно
- Детальное описание “что, зачем и почему”. Обычно — много букв, которые поясняют основную мысль, и находятся они в скрытой секции “Дополнительная информация”
- Ответ, который нашли мы
Интересно — читайте все. Нет времени — читайте первый и последний абзац.
1. Общая философия
1.1. Зачем делать подкаст?
Ответ может быть любым, но только не “потом посмотрим”, ”ещё не думал” или “не знаю”. Если ответа нет, весьма высока вероятность что
MotionLayout: анимации лучше, кода — меньше
Google продолжает улучшать нашу жизнь, выпуская новые удобные библиотеки и API. Среди которых оказался и новый MotionLayout. Учитывая обилие анимаций в наших приложениях, мой коллега Cedric Holtz сразу же реализовал важнейшую анимацию нашего приложения — голосование в знакомствах — с использованием нового API, сэкономив при этом огромное количество кода. Делюсь переводом его статьи.
Недавно закончилась конференция Google I/O 2019, на которой анонсировали обновления и самые свежие улучшения нашего любимого SDK. Лично мне особенно интересна была презентация Николаса Роарда и Джона Хофорда о будущей функциональности ConstraintLayout. А точнее, о его расширении в виде MotionLayout.
После выпуска бета-версии мне захотелось реализовать анимацию знакомств на основе этой библиотеки.
Реальные сроки изучения слепой печати при низкой мотивации
Мы написали самый полезный код в своей жизни, но его выкинули на помойку. Вместе с нами
Я повесил у себя в подвале боксерскую грушу, приклеил на нее стоковое фото типичного менеджера и запихал внутрь динамик, чтобы он проигрывал фразы, которые меня злят. Например, груша говорит: «Бизнесу не нужен твой идеальный код. Ему нужно решить проблему так, чтобы прибыль покрыла затраты. Если для этого нужен говнокод, значит будет говнокод». И начинаю дубасить.
Недавно я добавил в грушу запись: «Типы — это сложно и ненужно». В этот момент я бью так сильно, что рука чуть не ломается. Потому что с меня хватит. Пару месяцев назад я пережил один из самых вопиющих кейсов в своей карьере.
Мой друг Антоха попросил меня помочь с решением для одной большой-большой корпорации. Я согласился, и мы влезли в бездонную пучину корпоративного абсурда, кранча, войны с ничего не понимающими коллегами и всеми видами несправедливости. Нам ничего нельзя говорить, поэтому мы будем говорить про типы, чтобы такая фигня никогда ни у кого не повторялась.
Подборка: 5 полезных сервисов для написания статей на английском
Всем привет! Меня зовут Марго, я профессиональный маркетолог и редактор, в последние пару лет фокусируюсь на продвижении за рубежом и много пишу на английском. Я решила поделиться ссылками на приложения и сайты, которые помогают мне в ежедневной работе при создании контента. Надеюсь, список поможет изучающим английский и тем, кто публикует англоязычные материалы на Хабре.
Контент-маркетинг в США, Латинской Америке и Азии: полезные советы, ссылки и инструменты для бюджетного продвижения
Изображение: Unsplash
Выход за пределы родного рынка для любого стартапа – непростое испытание. У вас ограничены ресурсы, вы мало знаете о специфике продвижения в новых странах, не работали с локальными языками.
Задача охватить даже минимальную аудиторию в разных концах света без огромных затрат кажется невыполнимой. На самом же деле с помощью инструментов контент-маркетинга решить ее можно без особых затрат. Сегодня я расскажу о том, как лучше действовать в различных ситуациях, и какими инструментами пользоваться. Поехали!
Почему я отказался от Disqus и вам тоже пора
Когда я завёл блог, то установил Disqus для комментариев. Это был естественный выбор: сайты по всему интернету ставили Disqus, его легко настроить, и есть бесплатный вариант использования. Я спокойно интегрировал движок комментариев и двинулся дальше.
Но вот в чём дело: я всегда знал, что Disqus немного раздувает страницы. Я ведь писал о веб-производительности и обычно старался оптимизировать страницы. Но я просто предположил, что Disqus прибавляет немного лишних килобайт. Логика: если он сильно раздувает страницы, все бы уже давно отказались от него. Очевидно, Disqus старается не увеличивать трафик, верно?
Я ошибался.
Кодирование речи на 1600 бит/с нейронным вокодером LPCNet
Это продолжение первой статьи о LPCNet. В первом демо мы представили архитектуру, которая сочетает обработку сигналов и глубокое обучение для повышения эффективности нейронного синтеза речи. На этот раз превратим LPCNet в нейронный речевой кодек с очень низким битрейтом (см. научную статью). Его можно использовать на текущем оборудовании и даже на телефонах.
Впервые нейронный вокодер работает в реальном времени на одном процессорном ядре телефона, а не на высокоскоростном GPU. Итоговый битрейт 1600 бит/с примерно в десять раз меньше, чем выдают обычные широкополосные кодеки. Качество намного лучше, чем у существующих вокодеров с очень низким битрейтом и сопоставимо с более традиционными кодеками, использующими более высокий битрейт.
Покупки в Android приложении — Play Billing Library
И как это до сих пор на Хабре нет статьи об этом? Не дело, надо исправлять.
Есть 2 способа добавить In-App покупки в Android-приложение — старый и новый. До 2017 года все пользовались библиотекой от anjlab, но с июня 2017 года ситуация изменилась, Google выпустила собственную библиотеку для внутренних покупок и подписок — Play Billing Library. Сейчас последний считается стандартом.
Исчерпывающий список различий между VB.NET и C#. Часть 1
Согласно рейтингу TIOBE в 2018 году VB.NET обогнал по популярности C#. Совпадение или нет, но в феврале Эрик Липперт, один из создателей C#, призвал читателей обратить внимание на блог его друга, бывшего коллеги по команде компилятора Roslyn и, по совместительству, ярого фаната VB.NET, Энтони Грина. «Подобные ресурсы — это глубинные детали от экспертов, которые не так легко найти, читая документацию», пишет Эрик. Представляем вашему вниманию первую часть перевода статьи Энтони Грина «Исчерпывающий список различий между VB.NET и C#». Возможно, именно в этих различиях кроется секрет динамики рейтинга этих языков.
Простой парсер для youtube в гугл таблицах
Предыстория
Появилась задача собрать данные по 2000+ youtube видео, из которых необходимо было извлечь название видео, канала и язык.
Функция IMPORTXML, с помощью которой можно выполнять парсинг с сайтов, — не помогла, поскольку, как оказалось в дальнейшем, youtube хранит данные в JSON файлах. Перебирать руками такое количество видео не хотелось и я начал искать способы как автоматизировать или хотя бы упростить эту задачу.
Information
- Rating
- Does not participate
- Location
- Portland, Oregon, США
- Date of birth
- Registered
- Activity