Habrahabr лучшее

Лучшие публикации за последние 24 часа
Подписка на Лента Habrahabr лучшее Habrahabr лучшее


Разобраться в хитростях английской грамматики может быть довольно непросто. Классический пример здесь – выбор между who и whom. Даже носители языка не всегда корректно используют нужное слово, что уж говорить о тех, кто только изучает английского.

В блоге одного из сервисов проверки английского правописания и грамматики я нашел материал с несколькими правилами, которые нужно использовать, чтобы всегда верно решать дилемму Who vs Whom. Вот адаптированный перевод этого материала. Читать дальше →

Всем привет! Меня зовут Денис Гирько, я системный архитектор e-commerce платформы в Lamoda. В прошлом году я выступал на конференции DevConf с докладом, которым хочу поделиться с вами.


Это обзорный доклад о том, с какими сложностями в процессе доставки заказа встречается крупный интернет-магазин и какие технические решения могут помочь их преодолеть (на примере решений, которые мы опробовали в Lamoda).



О чем пойдет речь? Расскажу:


  • о процессе доставки и обозначу проблемы;
  • как эффективно хранить территории доставки в базе;
  • как повысить качество тех данных, которые мы получаем от клиента;
  • как в адресной базе искать адресата, чтобы найти больше точных результатов.
Читать дальше →


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

  1. Мы умеем выкладывать только настольные игры, и не факт, что наши принципы подойдут кому-то ещё.
  2. Выкладка — далеко не то, с чего нужно начинать работу с магазином, она обычно даёт 1-5% увеличения выручек. Зато это быстро, почти бесплатно и приятно.

Но давайте разберём косяки и попробуем вывести принципы. Мы примерно так индуктивно модель и дотачивали. Читать дальше →

Источник: НАСА

Вчера вице-президент США Майк Пенс заявил, что администрация президента планирует добиться возвращения людей на Луну в течение пяти лет. При этом ранее агентство НАСА планировало осуществить пилотируемую миссию на спутник Земли не ранее 2028 года. Пенс подчеркнул, что администрация рассматривает эту цель как крайне важную.

Он призвал НАСА принять новые обстоятельства и придерживаться заданных временных рамок. Для того, чтобы добиться поставленной цели, Пенс признал возможным отказаться от работы по некоторым проектам субподрядчиков НАСА в плане разработки ракет в пользу коммерческих «космических транспортников».
Читать дальше →


«А если ты не выстрелишь, то испорчусь я»


Ещё недавно считалось, сервис должен просто работать. Нарисовали, заверстали, написали скрипты — вроде всё ок, можно катить на прод.


Но конкуренты не дремлют, поэтому начинается гонка не только за новыми функциями, но и за скоростью работы. Любое зависание приложения или долгий ответ сервера (не говоря уже про всплывающие 500-е ошибки) портят впечатление от сервиса и вынуждают пользователя уходить куда-то ещё. Наверняка, каждый сталкивался с ситуациями, когда вместо покупки билета на самолет, поезд или концерт на экране отображалось «Internal server error», и вы в ярости хотели разбить монитор.


Я — Виктор Бодров, работаю в Яндекс.Деньгах в команде исследований производительности и хочу рассказать о том, чем полезно изучать производительность прямо на продакшене.

Читать дальше →


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

В этой подборке собраны репозитории по машинному обучению, датасетам и Jupyter Notebooks, ранжированные по количеству звезд. В предыдущей части мы рассказывали о популярных репозиториях для изучения работ по визуализации данных и глубокому обучению.
Читать дальше →
В первой части рассказа по мотивам выступления Дмитрия Стогова из Zend Technologies на HighLoad++ мы разбирались во внутреннем устройстве PHP. Детально и из первых уст узнали, какие изменениях в базовых структурах данных позволили ускорить PHP 7 более чем в два раза. На этом можно было бы и остановиться, но уже в версии 7.1 разработчики пошли существенно дальше, так как идей по оптимизации у них было еще много.

Накопленный опыт работы над JIT до семёрки теперь можно интерпретировать, смотря на результаты в 7.0 без JIT и на результаты HHVM с JIT. В PHP 7.1 было решено c JIT не работать, а опять обратиться к интерпретатору. Если раньше оптимизации касались интрепретатора, то в этой статье посмотрим на оптимизацию байт-кода, с использованием вывода типов, который реализовали для нашего JIT.



Под катом Дмитрий Стогов покажет, как это все работает, на простом примере.
Читать дальше →


База данных временных рядов (TSDB, time series database) в Prometheus 2 – это отличный пример инженерного решения, которое предлагает серьёзные улучшения в сравнении с хранилищем v2 в Prometheus 1 в плане скорости накопления данных и выполнения запросов, эффективности использования ресурсов. Мы внедряли Prometheus 2 в Percona Monitoring and Management (PMM), и у меня была возможность разобраться с производительностью Prometheus 2 TSDB. В этой статье я расскажу о результатах этих наблюдений.
Читать дальше →
Памятка от редактора
В прошлой статье мы рассказали про релиз панели управления Voximplant, не забыв упомянуть обновленную IDE. Сегодня мы посвящаем этому инструменту отдельный лонгрид – наша коллега Geloosa заботливо описала как процесс выбора технологии, так и имплементацию с вкладками, автокомплитом и кастомными стилями. Садитесь удобнее, отложите остальные дела и заходите в подкат, где любопытных ждут кишки Monaco – не поскользнитесь, их там много :) Приятного чтения.

Читать дальше →


Вчера, 26 марта, команда разработчиков браузера Firefox представила новый продукт под названием Firefox Lockbox — менеджер паролей для мобильный устройств. Согласно странице FAQ проекта, сейчас доступна только версия для iOS, но «в ближайшее время появится и вариант для устройств под управлением Android». Возможно, FAQ просто не обновили, потому что в Google Play приложение уже есть и доступно для скачивания. Также для ознакомления можно посмотреть репозиторий проекта на GitHub.

Идея Firefox Lockbox одновременно и проста до банальности, и весьма символична, так как решает очень распространенный пользовательский кейс: извлечение паролей из браузера. Firefox Lockbox — по своей сути, тот же менеджер паролей, что и 1password или KeePass, однако имеет из коробки синхронизацию с одним из популярных браузеров. Приложение позволяет извлекать пользовательские пароли и переносить их в приложение без этапа передачи в открытом виде (если делать выгрузку логинов-паролей руками). Конечно, далеко не все пользователи способны извлечь свои данные, а некоторые даже не подозревают о такой возможности.

Но во всей этой истории есть несколько больших «но»: Lockbox работает только с аккаунтами Firefox, плюс не до конца понятно, кому он нужен и почему Mozilla выпускает моно-приложение для хранения паролей вместо того, чтобы заниматься более важными вещами.
Читать дальше →
В этой статье мы рассмотрим необычное применение нейронных сетей в целом и ограниченных машин Больцмана в частности для решения двух сложных задач квантовой механики — поиска энергии основного состояния и аппроксимации волновой функции системы многих тел.
Читать дальше →

Часть 1. Общий алгоритм поиска
Введение
Поиск пути — это одна из тех тем, которые обычно представляют самые большие сложности для разработчиков игр. Особенно плохо люди понимают алгоритм A*, и многим кажется, что это какая-то непостижимая магия.

Цель данной статьи — объяснить поиск пути в целом и A* в частности очень понятным и доступным образом, положив таким образом конец распространённому заблуждению о том, что эта тема сложна. При правильном объяснении всё достаточно просто.

Учтите, что в статье мы будем рассматривать поиск пути для игр; в отличие от более академических статей, мы опустим такие алгоритмы поиска, как поиск в глубину (Depth-First) или поиск в ширину (Breadth-First). Вместо этого мы постараемся как можно быстрее дойти от нуля до A*.
Читать дальше →

За два года существования детских центров робототехники RoboCore, мы прошли долгий путь, полный взлётов и падений, о которых хотим Вам рассказать в статье.
Читать дальше →


Динамическое электронное письмо, созданное с использованием технологии AMP, российскими разработчиками из ecwid.ru


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


"Как?" — вы спросите? Ответ под катом

Читать дальше →
Вы написали несколько компонентов с использованием хуков. Возможно — даже создали небольшое приложение. В целом результат вас вполне устраивает. Вы привыкли к API и в процессе работы обнаружили несколько неочевидных полезных приёмов. Вы даже создали несколько собственных хуков и сократили свой код на 300 строк, поместив в них то, что раньше было представлено повторяющимися фрагментами программы. То, что вы сделали, вы показали коллегам. «Отлично получилось», — сказали они о вашем проекте.


Но иногда, когда вы используете useEffect, составные части программных механизмов не особенно хорошо стыкуются друг с другом. Вам кажется, что вы что-то упускаете. Всё это похоже на работу с событиями жизненного цикла компонентов, основанных на классах… но так ли это на самом деле? Читать дальше →


Всем привет!

Если спросить о том, что является главным для браузера, то многие скажут, что это скорость работы, размер окна просмотра страниц, защищённость данных пользователя и многое другое. Да, всё это верно, но на самом деле главное, что делает браузер по-настоящему популярным — это возможность настроить этот мощный инструмент таким образом, чтобы работа с ним приносила удовольствие. Именно поэтому в каждой новой версии Vivaldi мы стараемся добавить ещё больше возможностей по настройке браузера, как в плане интерфейса, так и в плане функциональности. Не является исключением и сегодняшний релиз Vivaldi 2.4.
Читать дальше →

Я в тестировании 12 лет, работал в Naumen и Яндексе. Сейчас руковожу отделом тестирования из 150 человек в Контуре и продолжаю работать тестировщиком в одной из команд.


После полугодовых performance review менеджеры из разных команд рассказали, какие цели поставили своим тестировщикам. У каждого пятого была такая: «Научиться оценивать сроки на тестирование задач». Часто такой «оценки сроков» хотят не только от тестировщиков, но и от разработчиков.



Оценка сроков в 95 % случаев. Спасибо, xkcd.


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

Сейчас объясню, как это работает.

Горькая правда

Я решил написать статью, а если получится — то и серию статей, чтобы поделиться своим опытом самостоятельного исследования как устройства Bare Bone x86, так и организации операционных систем. На данный момент мою поделку нельзя назвать даже операционной системой — это небольшое ядро, которое умеет загружаться из Multiboot (GRUB), управлять памятью реальной и виртуальной, а также выполнять несколько бесполезных функций в режиме многозадачности на одном процессоре.


При разработке я не ставил себе целей написать новый Linux (хотя, признаюсь, лет 5 назад мечтал об этом) или впечатлить кого-либо, поэтому особо впечатлительных прошу дальше не смотреть. Что мне на самом деле захотелось сделать — разобраться, как устроена архитектура i386 на самом базовом уровне, и как именно операционные системы делают свою магию, ну и покопать хайповый Rust.


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


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

Читать дальше →

Старый добрый switch был в Java с первого дня. Мы все используем его и привыкли к нему — особенно к его причудам. (Кого-нибудь еще раздражает break?) Но теперь все начинает меняться: в Java 12 switch вместо оператора стал выражением:


boolean result = switch(ternaryBool) { case TRUE -> true; case FALSE -> false; case FILE_NOT_FOUND -> throw new UncheckedIOException( "This is ridiculous!", new FileNotFoundException()); // as we'll see in "Exhaustiveness", `default` is not necessary default -> throw new IllegalArgumentException("Seriously?!"); };

В switch появилась возможность возвращать результат своей работы, который можно присвоить переменной; вы также можете использовать синтаксис в стиле "лямбда", который позволяет избавиться от сквозного прохода по всем case, в которых нет оператора break.


В этом руководстве я расскажу Вам обо всем, что необходимо знать о switch-выражениях в Java 12.

Читать дальше →


В методологии статического анализа применяются разные технологии. Одна из них — препроцессирование файлов непосредственно перед их анализом. Препроцессированные файлы создаёт компилятор, запускаемый в специальном режиме работы. К сожалению, этот режим не очень хорошо тестируется, как показывает наш многолетний опыт разработки статического анализатора кода. В этой заметке приведу пример свеженайденного бага в С++ компиляторе от Microsoft.
Читать дальше →

Страницы

Последние публикации

Новые комментарии