Size: a a a

2020 August 05
Хабр
Какие у Вкусвилла есть telegram-боты и зачем они нужны

Telegram предоставляет возможность делать ботов быстро, удобно и подключать их к своим внутренним системам, создавая множество подвязок, триггеров и шаблонов. Активируешь Botfather-а и просто следуешь инструкциям, самое сложное обычно касается именно работы со внутренними системами и налаживанием API.



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

Почему Telegram
Telegram — мессенджер, который есть у очень большого числа людей. И если какое-то время он был не очень популярным, то масштабная кампания по его блокировке (попыткам блокировки, да) стала отличным средством для поднятия интереса и дополнительных установок. Плюс, что выгодно отличает Telegram от тех же WhatsApp и Viber, это наличие простого и понятного API и возможностей подцепить к боту множество внутренних систем.

И пусть со стороны пользователя это выглядит как привычный сценарий, он просто пишет в чат запрос и получает ответ, со стороны бота такой запрос тянет за собой обращение к целой куче разных систем. Читать дальше →
http://amp.gs/FYWY
источник
Хабр
Нет времени объяснять, сделай автопилот



Здравствуйте, товарищи!
На выходных проходил хакасборкатон — гонки на самоуправляемых моделях автомобилей на базе комплекта donkeycar при содействии Х5 и FLESS.
Задача заключалась в следующем: сначала надо было собрать машинку из запчастей, затем ее обучить проходить трассу. Победитель определялся по самому быстрому прохождению 3 кругов. За наезд на конус — дисквалификация.

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

Когда мы собирались на это соревнование, сразу было понятно, что будет очень весело и очень сложно, ведь нам давалось всего 5 часов с учётом перерыва на обед чтобы собрать машинку, записать датасет и обучить модель.  Читать дальше →
http://amp.gs/FYa4
источник
Хабр
CSS Grid понятно для всех

Что такое Grid?
Grid представляет собой пересекающийся набор горизонтальных и вертикальных линий — один набор определяет столбцы, а другой строки. Элементы могут быть помещены в сетку, соответственно строкам и столбцам.

Поддержка браузерами
В 2020 году поддержка браузерами достигает 94 %



Grid контейнер
Мы создаем grid контейнер, объявляя display: grid или display: inline-grid на элементе. Как только мы это сделаем, все прямые дети этого элемента станут элементами сетки.

<body>
<div class="row">
 <div class="row__item header">
  <h1>Header</h1>
 </div>
 <div class="row__item nav">
  <h1>Navbar</h1>
 </div>
 <div class="row__item article">
  <h1>Article</h1>
 </div>
 <div class="row__item ads">
  <h1>Ads</h1>
 </div>
</div>
</body>
.row {
display: grid;
margin: auto;
grid-template-rows: 60px 1fr ;
grid-template-columns: 20% 1fr 15%;
grid-gap: 10px;
width: 1000px;
height: 1000px;
justify-items: center;
justify-content: space-between;
grid-template-areas:
"header header header"
"nav article ads";
}
grid-template-rows — это CSS свойство, которое определяет названия линий и путь размера функции grid rows.

CSS свойство grid-row определяет с какой строки в макете сетки будет начинаться элемент, сколько строк будет занимать элемент, или на какой строке завершится элемент в макете сетки. Является сокращенным свойством для свойств grid-row-start и grid-row-end.

Свойство CSS grid-gap является сокращенным свойством для grid-row-gap и grid-column-gap, определяющего желоба между строками и столбцами сетки.

Свойство grid-template-areas определяет шаблон сетки ссылаясь на имена областей, которые заданы с помощью свойства grid-area.

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

С помощью свойства grid-area мы можем назначить каждой из этих областей свое собственное имя. Именование областей еще не создает никакого макета, однако теперь у нас есть именованные области, которые мы можем в нем использовать. Читать дальше →
http://amp.gs/Ftx0
источник
Хабр
Кэши Tarantool и репликация из Oracle



Меня зовут Александр Деулин, я работаю в отделе развития собственной разработки «Фабрика микросервисов» в компании МегаФон. И хочу рассказать о тернистом пути появления кэшей Tarantool в ландшафте нашей компании, а также о том, как мы внедряли репликацию из Oracle. И сразу поясню, что под кэшем в данном случае подразумевается приложение с базой данных. Читать дальше →
http://amp.gs/Ftx2
источник
Хабр
Когда и CRA мало. Доклад Яндекса

За интерфейсами поиска Яндекса скрывается большой проект со сложной инфраструктурой. У нас десятки мегабайт кода, который должен быстро работать и быстро собираться. Когда нам понадобилось перевести проект на React и TypeScript, мы начинали с Create React App, CRA. И достаточно быстро поняли, что многое нужно дорабатывать.


В докладе на Я.Субботнике Pro я вспомнил, что и как мы доделывали в сборке и архитектуре «стандартного современного проекта» и какие результаты у нас получились. Читать дальше →
http://amp.gs/Ftk7
источник
Хабр
[Перевод] Vue.js для начинающих, урок 10: формы

Сегодня, в 10 уроке курса по Vue, мы поговорим о том, как работать с формами. Формы позволяют собирать данные, вводимые пользователем. Кроме того, здесь мы обсудим валидацию форм, то есть — проверку того, что в них вводят.

Читать дальше →
http://amp.gs/Fteh
источник
Хабр
[Перевод] 8 продвинутых возможностей модуля logging в Python, которые вы не должны пропустить

Понимайте свою программу без ущерба для производительности

Журналирование — это очень важная часть разработки ПО. Оно помогает разработчикам лучше понимать выполнение программы и судить о дефектах и непредвиденных сбоях. Журнальное сообщение может хранить информацию наподобие текущего статуса программы или того, в каком месте она выполняется. Если происходит ошибка, то разработчики могут быстро найти строку кода, которая вызвала проблему, и действовать с учетом этого.
Python предоставляет довольно мощный и гибкий встроенный модуль logging со множеством возможностей. В этой статье я хочу поделиться восемью продвинутыми возможностями, которые будут полезны при разработке ПО. Читать дальше →
http://amp.gs/FtqE
источник
Хабр
Под капотом PVS-Studio для Java: разработка диагностик


Для разнообразия сегодня немного расскажем про процесс разработки и доработки диагностических правил для PVS-Studio Java. Посмотрим, почему старые срабатывания анализатора не слишком сильно плавают от релиза к релизу, а новые – не слишком сумасшедшие. А ещё немного заспойлерим "чего там у джавистов в планах" и покажем парочку красивых (и не очень) ошибок, найденных с помощью диагностик из следующего релиза. Читать дальше →
http://amp.gs/FtiO
источник
Хабр
Оптимизация производительности фронтенда. Часть 1. Critical Render Path

Здравствуйте. Меня зовут Ник, я фронтенд разработчик (жидкие аплодисменты). Кроме того, что я пишу код, я преподаю в Школе программистов hh.ru.
Записи наших лекций от 2018-2019 учебного года можно посмотреть на youtube
В этом году у меня была лекция про оптимизацию производительности фронтенда, и я решил превратить ее в текстовый формат. Материал получился большим, так как лекция была длительностью 3 часа. Поэтому получился текстовый альманах.

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

Зачем думать о производительности
FMP, TTI + подробнее в докладе
Critical render path, DOM, CSSOM, RenderTree
Шаги по улучшению производительности первой загрузки + подробнее в докладе
Читать дальше →
http://amp.gs/FmIL
источник
2020 August 06
Хабр
Генератор жанровых постеров для фильмов и перенос стиля картинки — проекты студентов курса «Нейронные сети» Техносфера



Мы рассказали про выпускные проекты выпускников семестровых курсов по мобильной разработке Технопарка (МГТУ им. Баумана) (предыдущие публикации: «Разработка приложений на iOS», «Разработка приложений на Android»). Сегодня делимся интересными проектами студентов второго семестра Техносферы — совместного с МГУ образовательного проекта с годовой программой обучения в области анализа и работы с большими объемами данных. Студенты проходят курсы по машинному обучению, инфопоиску, нейронным сетям и другим дисциплинам. В обучении применён проектный метод, поэтому итоги семестра мы подводим на защитах студенческих проектов.

В образовательном процессе большую роль играют эксперименты. Студенческие проекты без них не обходятся: ребята пробуют разные подходы, методы, архитектуры, инструменты. Часто после эксперимента студенты отказываются от выбора технологии и алгоритма в пользу нового подхода. Это большая часть опыта и обучения. Ниже мы расскажем о таких этапах в разработке двух студенческих проектах.  Читать дальше →
http://amp.gs/Fm1E
источник
Хабр
[Перевод] Трюки с SQL от DBA. Не банальные советы для разработчиков БД


Когда я начинал свою карьеру разработчика, моей первой работой стала DBA (администратор базы данных, АБД). В те годы, ещё до AWS RDS, Azure, Google Cloud и других облачных сервисов, существовало два типа АБД:


АБД инфраструктуры отвечали за настройку базы данных, конфигурирование хранилища и заботу о резервных копиях и репликации. После настройки БД инфраструктурный администратор время от времени «настраивал экземпляры», например, уточнял размеры кэшей.
АБД приложения получал от АБД инфраструктуры чистую базу и отвечал за её архитектуру: создание таблиц, индексов, ограничений и настройку SQL. АБД приложения также реализовывал ETL-процессы и миграцию данных. Если команды использовали хранимые процедуры, то АБД приложения поддерживал и их.

АБД приложений обычно были частью команд разработки. Они обладали глубокими познаниями по конкретной теме, поэтому обычно работали только над одним-двумя проектами. Инфраструктурные администраторы баз данных обычно входили в ИТ-команду и могли одновременно могли работать над несколькими проектами. Читать дальше →
http://amp.gs/Fm1S
источник
Хабр
Как проанализировать рынок фотостудий с помощью Python (3/3). Аналитика

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

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

Группа молодых предпринимателей рассматривала вариант открытия своей фотостудии в Москве. Им необходимо было узнать:


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

Ответить на эти и многие другие вопросы им помогли простой парсер, база данных и приведенная в это статье аналитика.

Читать дальше →
http://amp.gs/FmtI
источник
Хабр
[Перевод] Пол Грэм про независимость мышления: «Четыре квадранта конформизма»



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

Я думаю, что вы найдете людей всех этих типов почти в любом обществе. Квадрант, к которому будут относиться эти люди, в основном определяется их личностью, а не убеждениями, преобладающими в их обществе. [1]

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

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

Дети в нижнем левом квадранте, пассивные конвенционалисты, похожи на невинных овечек. Они осторожны, подчиняются правилам, но когда правила нарушают другие дети, наши овечки переживают о том, что дети-нарушители будут наказаны, хотя не добиваются этого наказания. Читать дальше →
http://amp.gs/Fmgh
источник
Хабр
Free Trial, motherf***er, do you need it? — или почему бесплатные траялы и фримиум модели подходят далеко не для всех

На этой неделе случилось 3 вещи:


Несколько дней назад в своей статье о фреймворке формировании привычек я обещал рассказать о том, почему мы используем ПЛАТНЫЙ VS бесплатный trial-период в своих продуктах.

Ребята из Getcourse написали заплюсованую статью про онлайн-школы, которая, по-моему мнению, содержит несколько очень ВРЕДНЫХ советов, которые я прокомментирую ниже

DimBoch поделился своим мнением о малом бизнесе в США, которое очень близко к истине, но требует небольшого уточнения, которое напрямую относится к теме этой статьи


Ну и самое главное: наша БЕСПЛАТНАЯ годовая подписка на Хабр, которую мы получили благодаря проекту по поддержке стартапов, заканчивается в конце августа. И несмотря на то, что мне очень стыдно, что за весь год я написал здесь всего 3 статьи — это отличный пример того, почему бесплатные «демо-периоды» подходят далеко не для всех.



Под катом мы познакомимся с очередной дозой теории из сферы поведенческой экономики, обсудим успешные и провальные примеры бесплатных пробных периодов и фримиум моделей, поговорим о заблуждениях ребят из GetCourse и разберемся, почему все так плохо с маркетингом в США. Читать дальше →
http://amp.gs/Fmsr
источник
Хабр
Concurrent Mode в React: адаптируем веб-приложения под устройства и скорость интернета

В этой статье я расскажу о конкурентном режиме в React. Разберёмся, что это: какие есть особенности, какие новые инструменты появились и как с их помощью оптимизировать работу веб-приложений, чтобы у пользователей всё летало. Конкурентный режим — новая фишка в React. Его задача — адаптировать приложение к разным устройствам и скорости сети. Пока что Concurrent Mode — эксперимент, который может быть изменён разработчиками библиотеки, а значит, новых инструментов нет в стейбле. Я вас предупредил, а теперь — поехали.

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



Конкурентный режим решает перечисленные проблемы. С ним React может приостанавливать, приоритизировать и даже отменять операции, которые раньше были блокирующими, поэтому в конкурентном режиме можно начинать отрисовывать компоненты независимо от того, были ли получены все данные или только часть. Читать дальше →
http://amp.gs/FmFy
источник
Хабр
Подробный разбор стоимости жизни в Кремниевой Долине

Самое дорогое место в США
В прошлой статье мы подробно разобрали структуру средних зарплат программистов в Кремниевой Долине, а теперь было бы неплохо понять, сколько придётся потратить на оплату счетов, и сколько же денег останется в итоге, ведь область залива Сан-Франциско традиционно считается самым дорогим местом в США, уступая по стоимости жизни разве что центру Манхеттена (а по некоторым данным уже давно обогнала Нью-Йорк).



Если Вам проще воспринимать информацию на слух или в режиме видео-ролика, то специально для Вас готово 18-минутное видео с тайм-кодами в комментариях. Читать дальше →
http://amp.gs/FmMY
источник
Хабр
Разбор статьи из журнала «Код» (Яндекс Практикум)

Пояснительная часть
Недавно мне попалась статья в журнале "Код" под названием "Сравнение: классы против функций". Я прочитал ее и она показалось мне… странной. Журнал позиционирует себя как издание для начинающих программистов. Но даже со скидкой на уровень аудитории статья вызывает много вопросов.
Эта публикация — попытка обратиться к редакции журнала "Код". Я ни в коем случае не пишу хейтерский пост. Наоборот, ставлю цель разобрать статью и указать на недостатки. Не хочу обидеть ни автора, ни редакцию. Допускаю, что в текущей статье ничего не изменится, но может быть, редакция возьмет кое-что на заметку.
Подчеркну особо — на протяжении текста я рассматриваю статью глазами новичка. У меня в этом скромный опыт: я делал уроки по программированию, писал обучающие статьи, занимаюсь менторством. Поэтому придираюсь только по одному критерию — как усвоит информацию начинающий программист. Мне кажется, это совпадает с тематикой издания.
В редакции мне посоветовали написать мысли в комментариях. Однако текст вышел слишком большой, чтобы там поместиться. А во-вторых, у меня ощущение, что комментарии игнорируются, о чем я скажу отдельно.
Для полноты контекста прочитайте оригинал, это не займет много времени. Читать дальше →
http://amp.gs/FZTn
источник
Хабр
Смена работы в кризис и удаленные приключения

Всем привет! Надеюсь, вы помните меня по рассказам о жизни в ABBYY и Оргкомитете Сочи-2014. Давно ничего не писал, и вот наконец дошли руки. Я поменял работу в разгар коронавируса, поэтому хочу поделиться своим опытом и на личном примере рассказать о том, как компании справляются с такими нестандартными ситуациями и что менять работу в условиях «высокой неопределенности» совсем не страшно.

Читать дальше →
http://amp.gs/FZPa
источник
Хабр
Немного неудобно, но хочу поговорить о буферах

Просто статья о буферах. Вы наверняка думаете, что знаете о буферах всё. Возможно, так оно и есть. Но мне кажется, вы всё равно найдёте для себя что-то новое. Просто потому, что тема – неисчерпаемая. О буферах всегда есть что сказать.

Это не чушь, и не шутка. Статья действительно о буферах. И она не про буфер обмена. Речь пойдёт о буферах, которые помогают работать лучше. Читать дальше →
http://amp.gs/FZgh
источник
Хабр
Композитная сборка как альтернатива buildSrc в Gradle


В Gradle — системе автоматической сборки — подход с buildSrc уже успел стать стандартом для реализации собственных плагинов и задач, а также создания общих конфигураций, например списков зависимостей и версий. Но у него есть существенный недостаток: при изменении buildSrc кеш сборки становится недействительным.
При этом Gradle предоставляет альтернативный подход — композитные сборки, лишённые этого недостатка. В этой статье я расскажу, как использовать композитную сборку вместо buildSrc и с какими сложностями можно столкнуться при миграции. Читать дальше →
http://amp.gs/FZH2
источник