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

Точнее, не плоская, но и не шар. И даже не эллипсоид. А вполне себе многогранник. Точнее, 56-гранник. Ещё точнее — предлагается новый формат записи гео-координат.

Сначала немного общих соображений: в базе OSM имеется три типа данных: node way и relation. Узлы содержат координаты в формате «широта-долгота», траектории типа way позволяют прорисовывать на карте линии (точнее, ломаные, в т.ч. замкнутые) и представляют собой обычные массивы идентификаторов узлов, а данные типа relation могут содержать в качестве дочерних элементов не только узлы, но и данные остальных типов. Кроме того, все три типа могут иметь описания, представленные в модели EAV (Entity-Attribute-Value). Структурно в базе данных больше ничего нет.

Земля у нас шар, а окно видимости плоское. Координаты объектов в базе заданы в виде «широта-долгота», и это нам представляется не вполне разумным.Читать полностью »

Dark Theme Slack

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

В конце марта в Новосибирске отгремел юбилейный 10-ый CodeFest. Как и, наверное, любая конференция, CodeFestX оставил участникам кучу разных впечатлений от «ноги моей тут больше не будет» до «как купить пожизненную подписку?». То, как это было я описывать не буду, отзывы уже есть и, думаю, еще появятся. Хочу поделиться историей того, как мы запустили альтернативную версию для расписания Codefest (смотреть лучше с мобилки): от идеи до получившегося результата.

DIY: Как мы делали «живое» расписание для Codefest X - 1
Читать полностью »

PHP GR8: повысит ли JIT производительность PHP 8 - 1

PHP — один из основных языков разработки в Badoo. В наших дата-центрах тысячи процессорных ядер заняты выполнением миллионов строк кода на PHP. Мы внимательно следим за новинками и активно ищем пути улучшения производительности, так как на наших объёмах даже небольшая оптимизация приводит к существенной экономии ресурсов. Одна из главных новостей в области производительности PHP — появление JIT в восьмой версии языка. Это, безусловно, не могло остаться без нашего внимания, и мы перевели статью о том, что есть JIT, как он будет реализован в PHP, зачем его решили делать и что от него ждать.

Если вы не вышли из пещеры или не прибыли из прошлого (в этом случае добро пожаловать), то уже знаете, что в PHP 8 будет JIT: на днях тихо-мирно завершилось голосование, и подавляющее большинство участников высказались за внедрение, так что всё решено.
 
Можно в порыве радости даже изобразить несколько безумных движений как на фото (это, к слову, называется «детройтский JIT»:
 Читать полностью »

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

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

Эта статья является расшифровкой моего доклада с конференции DotNext 2018 Moscow. Кроме текста, под катом есть видеозапись и ссылка на слайды.

Быстрорастворимое проектирование - 1
Читать полностью »

Так получилось, что я провожу довольно много собеседований на должность веб-программиста. Один из обязательных и банальнейших вопросов, который я задаю — это чем отличается INNER JOIN от LEFT JOIN.

Чаще всего ответ примерно такой: "inner join — это как бы пересечение множеств, т.е. остается только то, что есть в обеих таблицах, а left join — это когда левая таблица остается без изменений, а от правой добавляется пересечение множеств. Для всех остальных строк добавляется null". Еще, бывает, рисуют пересекающиеся круги.

Я так устал от этих ответов с пересечениями множеств и кругов, что даже перестал поправлять людей.

Дело в том, что этот ответ в общем случае неверен. Ну или, как минимум, не точен.

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

¡Hola! мы продолжаем серию публикаций, приуроченных к запуску курса «Web-разработчик на Python» и прямо сейчас делимся с вами переводом еще одной интересной статьи.

В Zendesk мы используем Python для создания продуктов с машинным обучением. В приложениях с использованием машинного обучения одними из самых распространенных проблем, с которыми мы столкнулись, являются утечка памяти и всплески. Код на Python обычно выполняется в контейнерах с помощью фреймворков распределенной обработки, таких как Hadoop, Spark и AWS Batch. Каждому контейнеру выделяется фиксированный объем памяти. Как только выполнение кода превысит заданное ограничение памяти, контейнер прекратит свою работу из-за ошибок, возникающих по причине нехватки памяти.

Ищем утечки памяти в приложениях на Python - 1Читать полностью »

Скажу сразу: я не пользователь OSM и, тем более, не участник проекта. Тем не менее, я считаю, что знаю о нём достаточно много, и хочу изложить свои соображения в виде обзорной заметки по статьям, которые мне удалось здесь обнаружить. Своего рода полемика с авторами этих статей и комментариев к ним. Точнее, с их тезисами — важно ведь не КТО сказал, а ЧТО сказано.

Часть первая: Начало

Началось это, видимо, с «The Shuttle Radar Topography Mission (SRTM) that flew onboard the Space Shuttle Endeavour during an 11-day mission in February of 2000». Затем Стив Кост, по примеру Википедии, в июле 2004 года создал проект OpenStreetMap (ещё до появления Google Maps, разумеется). После чего началось «триумфальное шествие советской власти»: для использования в OSM свои спутниковые снимки сделали доступными по лицензии CC-BY-SA компании NearMap, NOAA, GeoEye, DigitalGlobe, ErosB, Google (!), US Census TIGER, AND, MassGIS, GeoBase и многие другие. Поголовье волонтёров тоже растёт, как на дрожжах. Ещё немного, ещё чуть-чуть — и вся планета будет оцифрована и предоставлена в безвозмездное пользование всем-всем-всем!

Часть вторая. Наши дни

Хотели как лучше, а получилось как всегда. Навалились гурьбой, стали руки вязать, а потом уже все позабавились.

Так называемый «крупный бизнес» явно почуял поживуЧитать полностью »

Голосовой секретарь на вебхуках - 1

Один из последних трендов — онлайн чат-боты. Но, что делать с теми клиентами, которые находятся оффлайн? Большой процент людей предпочитает звонить по телефону. Для них нужен или большой штат операторов, или решение по автоматизации работы с голосом. Предлагаем решение для уменьшения работы и затрат (и даже почти не нагрузит вашего программиста).

Как быстро и легко программировать любое голосовое меню, автоинформатор, робота-секретаря с привязкой к своей базе клиентов?

Спойлер: Все реализовано на webhooks и приведен пример на PHP.

Обсуждаем под катом.
Читать полностью »

19-20 апреля, то есть уже на этих выходных, пройдёт конференция C++ Russia. Это два дня и несколько треков хардкорных технических докладов, посвященных C++: concurrency, производительность, архитектура и инфраструктурные решения — всё для того, чтобы ваш код выглядел лучше и делал больше. Конференция ориентирована на опытных разработчиков, никаких вводных докладов!

Во-первых, вы сможете посмотреть совершенно бесплатную онлайн-трансляцию. На ней будет только первый день и первый зал + онлайн-интервью между докладами. Что это за доклады — обсудим под катом.

Важно, что трансляция начнётся в 9:45 утра (по московскому времени), за 15 минут до открытия и закончится ближе к 7 часам вечера. Всё это время вы сможете слушать доклады с небольшими перерывами на онлайн-интервью со спикерами. Ссылка будет работать весь день, поэтому можно открывать её только на наиболее важных для вас докладах.

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

C++ Russia 2019: бесплатная трансляция первого зала и немного о том, что будет на конференции - 1

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