Рубрика «Программирование» - 296

Предлагаю вашему вниманию субъективную подборку ржавых новостей за январь. В этой подборке: Rust 1.32, уход Стива Клабника и Ника Камерона, киш от Cloudflare, устройство rust-analyzer и страничной памяти, поиски GUI и async, Oxydyze конференция для встроенщиков.

КДПВ

Rust 1.32

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

Подробности в переводе новости.

Стив Клабник и Ник Камерон уходят из Mozilla

NYT firefox 1.0

Печальные новости: Стив Клабник и Ник "nrc" Камерон покидают Мозиллу.

Читать полностью »

Продолжаю повествование о проекте Недвижимости, который пытался долго взлететь, но так и не взлетел. Пишу все как есть — личный опыт.
Читать полностью »

image

Одна из главных задач в Яндекс.Такси — как сделать так, чтобы к пользователю быстро приезжала машина, а у водителя сокращалось время «холостого пробега» (то есть время, когда он на линии без пассажира). Казалось бы, всё просто: пользователь выбирает тариф, указывает дополнительные пожелания (детское кресло, например). Остаётся отфильтровать водителей на линии по этим критериям, выбрать ближайшего и предложить ему заказ. Однако всё так просто только на первый взгляд.

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

Читать полностью »

image

Физик Лев Ландау играл в ментальную игру с советскими номерами[1]. Таблички имели форму двух цифр, тире, еще двух цифр и некоторых букв.

Правила игры

Его игра заключалась в том, чтобы применять математические операторы к числам по обе стороны от тире, чтобы тире можно было заменить на знак равенства. Например, если взять номерной знак 44-74, одним из решений будет

4! + 4 = 7 * 4

Обратите внимание, что мы можем вставить операторы, такие как !, + и *, но не добавляя цифр.

Есть ли решение для каждого возможного номерного знака? Это зависит от того, какие операторы вы разрешаете использовать.

Вы можете тривиализировать игру, применив операцию дробной части { x } к обеим сторонам, поскольку дробная часть целого числа равна нулю. Вы можете запретить оператор дробной части на том основании, что это явно не математическая операция старшей школы, или просто запретить ее, потому что она делает игру неинтересной.Читать полностью »

The Rust ecosystem is still growing. As a result, new libraries with improved functionality are frequently released into the developer community, while older libraries become obsolete. When we initially designed Exonum, we used the Iron web-framework. In this article, we describe how we ported the Exonum framework to actix-web using generic programming.

Generic Methods in Rust: How Exonum Shifted from Iron to Actix-web - 1Читать полностью »

Привет, хабровчанин! Дизайнеры люди идейные, а заказчики с их бизнес-требованиями, тем более.

Представь, что ты сваял свой самый лучший UIkit на свете на самом крутом %вставить свое% JS фреймворке. Казалось бы, там есть все, что нужно проекту. Теперь-то ты сможешь пить кофе, а все новые задачи закрывать накидыванием компонентов на страницу. Еще лучше, если ты нашел такой UIkit на помойке на просторах NPM и он идеально соответствует текущему UX/UI и его потребностям. Фантастика!

И действительно… кого я обманываю? Твое счастье, скорее всего, будет недолгим. Ведь когда дизайнер прибежит с талмудом новых UI-решений для очередной страницы или «спец-проекта», что-то по-любому пойдет не так.

В этот момент перед разработчиком встает вопрос «DRY или не DRY»? Стоит ли как-то кастомизировать существующие компоненты? Да еще так, чтобы не отхватить регрешн на существующих кейсах. Или же действовать по принципу «работает — не трогай» и написать новые компоненты с нуля. При этом, раздувая UIkit и усложняя поддержку.

Если ты, как и многие, бывал в такой ситуации, загляни под кат!

У дизайнера новая идея? Что может быть проще - 1

Читать полностью »

Программирование в России введут с начальной школы - 1
Одно из заданий детского курса программирования на Code.org. Справа — программа на языке Blockly

Согласно предложению Министерством просвещения РФ, в курс математики для младших школьников включат основы создания кодов и языков программирования, пишут «Известия». Это предусмотрено концепцией преподавания предметной области «Технология».
Читать полностью »

Courier: миграция Dropbox на gRPC - 1

Примечание переводчика

Большинство современных программных продуктов не являются монолитными, а состоят из множества частей, которые взаимодействуют друг с другом. При таком положении дел необходимо, чтобы общение взаимодействующих частей системы происходило на одном языке (притом что сами эти части могут быть написаны на разных языках программирования и выполняться на разных машинах). Упростить решение этой задачи помогает gRPC — open-source-фреймворк от Google, выпущенный в 2015 году. Он решает сразу ряд проблем, позволяя:

  • использовать язык Protocol Buffers для описания взаимодействия сервисов;
  • генерировать программный код на основании описанного протокола для 11 разных языков как для клиентской части, так и для серверной;
  • реализовать авторизацию между взаимодействующими компонентами;
  • использовать как синхронное, так и асинхронное взаимодействие.

gRPC показался мне довольно интересным фреймворком, и мне было интересно узнать про реальный опыт компании Dropbox по построению системы на его основе. В статье есть масса деталей, связанных с использованием шифрования, построением надёжной, наблюдаемой и производительной системы, процессом миграции со старого RPC-решения на новое.

Дисклеймер

Оригинальная статья не содержит описания gRPC, и некоторые моменты могут показаться вам непонятными. Если вы не знакомы с gRPC или другими подобными фреймворками (например, Apache Thrift), рекомендую предварительно ознакомиться с основными идеями (достаточно будет прочитать две небольшие статьи с официального сайта: «What is gRPC?» и «gRPC Concepts»).

Спасибо Алексею Иванову aka SaveTheRbtz за написание оригинальной статьи и помощь с переводом трудных мест.

Читать полностью »

От переводчика: несмотря на то, что уже прошел год, вопросы о том что же нового дал нам 2-й Boot не заканчиваются. Писать такой контент с нуля — затея не самая умная. Поэтому решили перевести статью, которая нам кажется наиболее лаконичной и при этом достаточно полной.

Релиз Spring Boot 2 состоялся в начале 2018 года, и всем не терпится скорее посмотреть на него в деле. Этот релиз стал кульминацией 17 месяцев работы и более 6800 коммитов от 215 разных людей. Есть много крутых функций, которые стоит обсудить, так что поговорим о том, что нового в Spring Boot 2.

В этой статье мы рассмотрим:

  • Историю Spring Boot
  • Что нового в Spring Boot
  • Руководство по переходу на Spring Boot 2

Читать полностью »

Большинство ИТ-проектов, которые я видел в жизни, были очень успешными. Выполнялись они в разных компаниях, на всевозможных платформах, совершенно разными людьми. Но успех приходил всегда, за редкими исключениями.

Я каждый раз удивлялся, откуда у ИТ-команд такая целеустремленность, тонкое чувство стратегии и ее реализации, понимание ситуации и железная воля следовать избранным путём? Есть ли какой-то секрет успеха?

Я посмотрел, проанализировал, и составил перечень алгоритмов, которые успешно приводят ИТ-проекты к цели. Начнем с целей — чего же такого успешно достигается?

Внимание. Эта статья — только для людей из мира ИТ. Если вы не из ИТ, или, не дай Бог, какой-нибудь директор или собственник, вам лучше не читать эту статью. Иначе вы всё нам испортите.

И еще раз внимание. Эта статья — не сарказм, не попытка кого-то разгромить, не градация рынка и не поднятие чьего-либо ЧСВ, включая моё. Я, как и любой ИТ-специалист, и компания, в которой я работаю, как и любая другая ИТ-компания, подходят под определения из этой статьи.Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js