Упаковка интервалов — это классическая задача SQL, которая подразумевает переупаковку групп пересекающихся интервалов в соответствующие им непрерывные интервалы. В математике интервал — это подмножество всех значений данного типа, например целых чисел, между двумя некоторым разными значениями. В базах данных интервалы могут проявляться в виде интервалов даты и времени, представляющие такие вещи, как сеансы, периоды назначения, периоды госпитализации, расписания или числовых интервалов, представляющие такие вещи, как диапазоны мильных столбов на дороге, диапазоны температур и т.д.
User
PyZelda своими руками или как геймдевить без Unreal, Unity и кредитов
Хабры и Хаброчки, я хотел бы перед самой статьёй обсудить вопрос целесообразности писать свой движок, вместо готовых решений. Есть куча статей, которые опишут разные движки от более популярных до менее. Я бы хотел затронуть немного другой вопрос: "Как человеку, который изучал программирование много лет заняться геймдевом?". Обычно, есть два пути в геймдев:
Умышленный путь. Это когда человек, который играет в игры рано или поздно решит их создать. Тогда, он выбирает где ему учиться этому и выучивает игровые движки и C-образные языки к ним (чаще всего, C#).
Путь прогеров. Программист увлекается математикой и пишет код. Так или иначе, везде где есть код — есть компьютер. Цифровые развлечения (в том числе и игры) не проходят мимо тех людей, который постоянно пишут код. Так, часть прогеров решает написать свою игру и начать свой путь в геймдев. Об этом пути мы и поговорим.
Так зачем выбирать "сложный" путь? Во-первых, не для всех он сложнее. Лично мне сложнее перейти на C# с использованием Unity, чем написать новый проект на Python. Во-вторых, люди не всегда понимают сам движок. Сейчас я преподаю в институте "Бизнеса и Дизайна". Это один из первых профильных учреждений, занимающихся геймдевом. И вот у студентов я спросил зачем им движок. Каково было моё удивление, что далеко не все понимаю, вообще зачем он нужен. Спойлер, не из-за пресетов.
Всех заинтересовавшихся, приглашаю в мир змеиных игр!
Вкатываемся в Machine Learning с нуля за ноль рублей: что, где, в какой последовательности изучить
Всем доброго времени суток. Я давно обещала выложить сюда подробный гайд на тему того, как можно изучать Machine Learning самостоятельно, не тратя деньги на платные курсы, и, наконец, выполняю свое обещание. Надеюсь, этот гайд станет подсказкой, которая поможет найти правильное направление новичкам, которые хотят погрузиться в нашу область.
Постигаем искусство написания Dockerfile для Go
Как-то раз, в результате многих сверхурочных часов кропотливой работы, мне удалось разработать простейшее Hello world приложение на Go. И хотя оно всего-навсего производило вывод на экран, а затем заканчивало свою работу, мой начальник был настолько впечатлен, что попросил меня опубликовать мое детище, в написании которого я реализовал весь свой потенциал.
Конечные автоматы на практике: Symfony Workflow
В университетские времена я столкнулся с такой математической абстракцией, как конечный автомат (КА). Эта модель была полезна для понимания и создания комбинированной логики. Спустя 15 лет КА вернулся в мою жизнь в виде компонента Symfony Workflow. В этой статье я расскажу, как наша команда при помощи Symfony Workflow улучшила код продукта Links.Sape, переводя его с legacy.
Асинхронность, конкурентность, параллельность, многопоточность — разбираемся «по понятиям» :)
Эта статья представляет собой краткий (шутка!) конспект одноименного (почти) вебинара, недавно проведенного автором.
Цель и вебинара и статьи - дать начинающим представление о тех понятиях, которые вынесены в заголовок, чтобы помочь из избежать повсеместной путаницы, сопровождающей эти темы.
Ну и немного раскрыть глаза на то, что, оказывается в PHP есть и асинхронность, и многопоточность, и в общем-то не нужно ждать мифической версии PHP 10, чтобы начать их использовать уже прямо сейчас!
Кадрим девчонок с помощью метрики Эллиса-Бронникова
Ничто так не вызывает интерес у противоположного пола, как страстные разъяснения физики кротовых нор.
Первые шаги в ОТО: прецессия орбиты Меркурия
Когда речь заходит о теории относительности, частенько на ровном месте разрастаются споры, которые были занесены в почву непонимания и обильно удобрены мифами, недосказанностью и недостаточной математической подготовкой. Даже на лекциях от некоторых профессоров можно услышать, что детище гения Эйнштейна не имеет практической пользы, а на робкие попытки пролепетать что-то про спутниковые системы навигации они пренебрежительно отмахиваются, дескать, там все сложно и двояко.
Так что совершенно естественно желание попробовать провести некоторые расчеты самолично, потрогать формулы, покрутить параметры, чтобы постепенно заложить интуицию в столь горячей теме.
Инструменты реализации API-сервера на Golang с автогенерацией кода и документации
Я бы хотел в этой статье рассказать вам о том как можно быстро и просто сделать веб сервер на языке Golang с документацией к нему. И о том какие есть подходы и инструменты для их реализации
Сегодня мы разберем эти готовые инструменты:
Делаем сервер из Android-телефона
Некоторое время назад мне пришла в голову интересная идея — превратить свои старые телефоны (их скопилось немало за десять лет) в серверы, в качестве альтернативы покупке Raspberry Pi.
На то было несколько причин: во-первых, у телефонов есть батарея, что для сервера практически бесплатный мини-UPS, во-вторых, внутренняя память смартфона (UFS) работает быстрее и надёжнее, чем SD-карта. В-третьих, у телефонов имеется экран, по которому можно отслеживать состояние сервера.
Ну и в-четвёртых, мне просто было жаль их выбрасывать. Консьюмеризм в наше время предписывает каждый год-два покупать новые смартфоны, производители блокируют возможности железа, которые им невыгодны, прекращают поддержку старых моделей, оставляя людей беспомощными. Миллионы смартфонов отправляются на свалку истории каждый год, хотя каждый из них это мощный компьютер.
TL;DR: в этом посте будут разобраны вопросы установки PostmarketOS на смартфон,
поднятия на нём в качестве примера Docker и веб-приложения в нём.
АВЛ-деревья
Антивакцинаторы и теория игр, или математические основы антивакцинаторского движения
Несмотря на злободневность, идея этой заметки родилась задолго до известных событий. Задачка является любопытным математическим этюдом и прямо просится к рассмотрению через призму теории игр, хотя в этом ключе практически не освещается. Даже люди с хорошим математическим пониманием склонны игнорировать её игровую природу. В прогрессивных кругах при взгляде на людей, выступающих против вакцинации, принято задумчиво хмуриться и пожимать плечами, но было бы странно, если бы такое мощное социальное явление не имело под собой никаких фундаментальных основ. Есть ли в отказе от прививок рациональное? Большинство заявлений антивакцинаторов не имеют под собой никаких оснований, но причины поступков человека часто не совпадают с тем, что он декларирует. В этой статье я немножко поиграю с математической моделью конфликта и покажу, почему антивакцинаторство необоримо. Если вы заинтересовались, прошу к тексту.
Covid fake FAQ___draft_final_4 (окончательное доказательство)
Как говорил доктор Хаус: Все врут.
Я решил написать данный текст после прочтения недавнего поста на хабре от "скептика" а так же после длительных дискуссий с разными людьми, которые уверены что все это фейк и даже больше. В данном тексте я не оцениваю политизированность темы, ошибочность принятых решений или необходимость каких-то действий. Цель данного текста исключительно в развеивании мифов, которыми люди бросаются либо из-за невежества, лени, злости или с целью ввести оппонента в заблуждение. Я так же стараюсь не касаться вопросов кому это нужно и какова цель, так как прекрасно понимаю, что если у вас параноя, то это не значит, что за вами не следят.
Текст разделен на две части: Ковид в частности и вирусология в общем.
Если у вас есть дополнения или исправления, пожалуйста - пишите их в комментариях с аргументацией и, если необходимо с приведением источников.
Если у вас есть вопрос или утверждение которое вы хотите добавить, постарайтесь написать его в таком же формате (вопрос, объяснение, источники) и так же оставляйте во комментарии я постараюсь добавить все по мере возможностей.
Вызов функций Go из других языков
С версии 1.5 компилятор Go поддерживает несколько режимов сборки, определяемых флагом buildmode
. Их ещё называют режимами исполнения Go (Go Execution Modes). С их помощью go tool
может компилировать пакеты Go в нескольких форматах, включая архивы и библиотеки общего пользования Go (shared libraries), архивы и библиотеки общего пользования Си, а с версии 1.8 — и динамические плагины Go.
В статье мы рассмотрим компилирование пакетов Go в библиотеки Си. В этом режиме сборки компилятор генерирует стандартный бинарный файл объекта (shared object) (.so), передавая функции Go в качестве API в стиле Си. Мы поговорим о том, как создавать библиотеки Go, которые можно вызывать из C, Python, Ruby, Node и Java.
Весь код доступен на GitHub.
Расширенные возможности MessagePack
MessagePack — бинарный формат сериализации данных, позиционируемый авторами как более эффективная альтернатива JSON. Благодаря своей компактности и скорости, его часто выбирают в качестве формата обмена данными в системах, где важна производительность. Простота реализации также способствует его широкому распространению — ваш любимый язык программирования, скорее всего, уже имеет несколько библиотек для работы с этим форматом.
В этой статье я не буду рассказывать, как устроен MessagePack или сравнивать его с аналогами: материалов на эту тему в Интернете предостаточно. Чего действительно не хватает, так это информации о расширенной системе типов MessagePack. Я постараюсь объяснить и показать на примерах, что это такое и как с помощью дополнительных типов сделать сериализацию еще более эффективной.
Полезные консольные Linux утилиты
В этой подборке представлены полезные малоизвестные консольные Linux утилиты. В списке не представлены Pentest утилиты, так как у них есть своя подборка.
Осторожно много скриншотов. Добавил до ката утилиту binenv.
binenv — cамая интересная утилита для установки новых популярных программ в linux, но которых нет в пакетном менеджере.
Распространённые заблуждения о временах жизни в Rust
(прим. переводчика: времена жизни (lifetimes) — это одна из самых запутанных вещей в Rust, которая часто вызывает затруднение у новичков, даже несмотря на официальную документацию. Разъяснения по отдельным аспектам времён жизни есть, но они все разбросаны по разным источникам и ответам на Stack Overflow. Автор статьи собрал в одном месте и разъяснил множество связанных с временами жизни вопросов, что и делает эту статью столь ценной (я и сам почерпнул новое для себя отсюда). Я решил перевести её, чтобы дать возможность прочитать её тем, кто не владеет английским в достаточной степени, чтобы свободно читать оригинал, а также для того, чтобы повысить известность этой статьи среди русскоязычного Rust-сообщества)
19 мая 2020 г. · 37 минут · #rust · # lifetimes
Самодельный спектрометр с высоким разрешением
Хорошее разрешение достижимо
В интернете много публикаций о том, как используя DVD-R диск и смартфон можно собрать спектрометр, однако характеристики таких устройств не позволяют проводить точные измерения. Мне же удалось сделать прибор с разрешением 0,3 нм.
Шаблон backend сервера на Golang — часть 1 (HTTP сервер)
UPD. Ссылка на новый репозиторий проекта с поддержкой развертывания в Kubernetes
Представленный ниже шаблон сервера на Golang был подготовлен для передачи знаний внутри нашей команды. Основная цель шаблона, кроме обучения — это снизить время на прототипирование небольших серверных задач на Go.
Шаблон включает:
- Передачу параметров сервера через командную строку github.com/urfave/cli
- Настройка параметров сервера через конфигурационный файл github.com/sasbury/mini
- Настройка параметров TLS HTTP сервера
- Настройка роутера регистрация HTTP и prof-обработчиков github.com/gorilla/mux
- Настройка уровней логирования без остановки сервера github.com/hashicorp/logutils
- Настройка логирования HTTP трафика без остановки сервера
- Настройка логирования ошибок в HTTP response без остановки сервера
- HTTP Basic аутентификация
- MS AD аутентификация gopkg.in/korylprince/go-ad-auth.v2
- JSON Web Token github.com/dgrijalva/jwt-go
- Запуск сервера с ожиданием возврата в канал ошибок
- Использование контекста для корректной остановки сервера и связанных сервисов
- Настройка кастомной обработки ошибок github.com/pkg/errors
- Настройка кастомного логирования
- Сборка с внедрением версии, даты сборки и commit
Вторая часть посвящена прототипированию REST API.
Третья часть посвящена развертыванию шаблона в Docker, Docker Compose, Kubernetes (kustomize).
Пятая часть посвящена оптимизации Worker pool и особенностям его работы в составе микросервиса, развернутого в Kubernetes.
Ссылка на репозиторий проекта.
Шаблон backend сервера на Golang — часть 2 (REST API)
UPD. Ссылка на новый репозиторий проекта с поддержкой развертывания в Kubernetes
Представленный ниже шаблон сервера на Golang был подготовлен для передачи знаний внутри нашей команды. Основная цель шаблона, кроме обучения — это снизить время на прототипирование небольших серверных задач на Go.
Первая часть шаблона посвящена HTTP серверу:
- настройка HTTP сервера через командную строку и конфигурационный файл
- настройка параметров TLS HTTP сервера
- настройка роутера и регистрация HTTP и prof-обработчиков
- настройка логирования HTTP трафика, логирования ошибок в HTTP
- HTTP Basic и MS AD аутентификация, JSON Web Token
- запуск сервера с ожиданием возврата в канал ошибок
- использование контекста для корректной остановки сервера и связанных сервисов
- настройка кастомной обработки ошибок и кастомного логирования
- сборка кода с внедрением версии, даты сборки и commit
Вторая часть шаблона посвящена прототипированию REST API.
Ссылка на репозиторий проекта осталась прежней.
Третья часть посвящена развертыванию шаблона в Docker, Docker Compose, Kubernetes (kustomize).
Пятая часть посвящена оптимизации Worker pool и особенностям его работы в составе микросервиса, развернутого в Kubernetes.
В ходе тестирования шаблона на стенде были получены следующие результаты.
Information
- Rating
- Does not participate
- Location
- Москва, Москва и Московская обл., Россия
- Date of birth
- Registered
- Activity