Software Defined Radio — как это работает? Часть 9 Привет Хабр. В предыдущей части было рассмотрено декодирование сигналов RDS для FM-радиостанций, и идея следующей статьи возникла сама собой — нужно сделать свой собственный FM-трансмиттер. Вариантов будет два — простой, и более сложный, с RDS. Как и в предыдущих случая...
20 проектов, 20 языков, срок вчера. Часть 3 Заключительная статья об интеграции Serge+Smartcat. В этой статье я расскажу, как мы масштабируем Serge на всю компанию, рассмотрю 4 нестандартных интеграции и, в качестве бонуса, расскажу о 2 фичах которые могут упростить вам жизнь. Предыдущие статьи: 20 проектов, 20 язык...
AERODISK Engine: Катастрофоустойчивость. Часть 1 Привет, читатели хабра! Темой этой статьи будет реализация средств катастрофоустойчивости в системах хранения AERODISK Engine. Изначально мы хотели написать в одной статье про оба средства: репликацию и метрокластер, но, к сожалению, статья получилась слишком большой, поэто...
[Перевод] Топ-65 вопросов по SQL с собеседований, к которым вы должны подготовиться в 2019 году. Часть I Перевод статьи подготовлен для студентов курса «MS SQL Server разработчик» Реляционные базы данных являются одними из наиболее часто используемых баз данных по сей день, и поэтому навыки работы с SQL для большинства должностей являются обязательными. В этой статье с вопрос...
Краш-тесты СХД AERODISK ENGINE N2, проверка на прочность Всем привет! Этой статьей компания AERODISK открывает блог на Хабре. Ура, товарищи! В предыдущих статьях на Хабре были рассмотрены вопросы об архитектуре и базовой настройке СХД. В этой статье мы рассмотрим вопрос, который ранее не был освещен, но его часто задавали – об от...
Импортозамещение на практике. Часть 2. Начало. Гипервизор В предыдущей статье были рассмотрены варианты, на что можно заменить существующие системы в рамках выполнения приказа об импортозамещении. Далее в статьях речь пойдет о выборе конкретных продуктов для замены развернутых в настоящее время. Начнем с точки отсчета — системы вир...
Как ускорить работу с API на языке R с помощью параллельных вычислений, на примере API Яндекс.Директ (Часть 2) В прошлой статье я рассказал о том, что такое многопоточность, и привёл примеры её реализации на языке R при работе с API Яндекс.Директ с помощью пакетов doSNOW, doParallel и конструкции foreach. Данная статья является продолжением, но может быть рассмотрена как автономное р...
Некоторые задачи школьной математики. Часть II Часть I. Дроби Часть II. Модули В данной статье рассматривается метод оценок диапазона принимаемых значений и связь этого метода с задачами, содержащими модуль. При решении некоторых задач необходимо рассматривать диапазон, в пределах которого может находиться искомая вел...
Пишем свой язык программирования, часть 3: Архитектура транслятора. Разбор языковых структур и математических выражений Введение Приветствую вас, заинтересованные читающие разработчики на не важно каких языках, на которых я ориентирую эти статьи и чьи поддержку и мнения я ценю. Для начала, по устоявшимся традициям, я приведу ссылки на предыдущие статьи: Часть 1: пишем языковую ВМ Часть 2:...
Loli — новый высокопроизводительный язык В этой статье мы поговорим о новом интерпретируемом языке Loli, рассмотрим синтаксис и сравним с языками C и Python. Читать дальше →
Уязвимость блокировщика экрана в Astra Linux Special Edition (Смоленск) В данной статье мы рассмотрим очень одну интересную уязвимость в «отечественной» операционной системе Astra Linux, и так, начнем… Читать дальше →
5 способов сделать Python-сервер на Raspberry Pi. Часть 2 Привет Хабр. Сегодня мы продолжим изучать сетевые возможности Raspberry Pi, а точнее их реализацию на языке Python. В первой части мы рассмотрели базовые функции простейшего веб-сервера, работающего на Raspberry Pi. Сейчас мы пойдем дальше, и рассмотрим несколько способов, ...
Язык программирования Zig Первым комментарием к замечательной статье Субъективное видение идеального языка программирования оказалась ссылка на язык программирования Zig. Естественно, стало интересно, что же это такое за язык, который претендует на шину C++, D и Rust. Посмотрел — язык показался симп...
[Из песочницы] Проект Lenergy, как переосмысление портативных источников питания Привет, Хабр! Хочу рассказать о своём виденье универсального программируемого портативного источника энергии. Как я к этому пришёл, каким в итоге проект стал в железе, для чего он нужен и варианты применения, а так же его дальнейшее развитие. Одной статьи будет явно недостат...
Один из методов получения истории блокировок в PostgreSQL Продолжение статьи "Попытка создать аналог ASH для PostgreSQL ". В статье будет рассмотрено и показано на конкретных запросах и примерах — какую же полезную информацию можно получить с помощью истории представления pg_locks. Предупреждение. В связи с новизной темы и незавер...
[recovery mode] Одна задача из SEO рутины: решение в 3 шага По правде говоря, это не «бомбический» кейс, а стандартная ситуация в SEO и её обычное решение. Из таких ситуаций состоит большая часть работы. В данном случае, статья будет интересна владельцам интернет магазинов. Сайт клиента в один момент сильно потерял в позициях. Как...
Приложения для электронных книг на операционной системе Android (часть 3) В этой (третьей) части статьи о приложениях для электронных книг на операционной системе Android будут рассмотрены следующие две группы приложений: 1. Альтернативные словари 2. Заметки, дневники, планировщики Краткое содержание предыдущих двух частей статьи: В 1-ой част...
Антирейтинг 2018 Эта статья написана по аналогии со статьей «Как не надо писать на Хабр: Антирейтинг 2017». Статьи взяты за 2018 год, точнее, начиная с индекса 345000. Кроме отрицательных значений рейтинга, есть список по абсолютному количеству минусов (видимо, самые обсуждаемые темы, в бо...
[Из песочницы] Процесс компиляции программ на C++ Цель данной статьи: В данной статье я хочу рассказать о том, как происходит компиляция программ, написанных на языке C++, и описать каждый этап компиляции. Я не преследую цель рассказать обо всем подробно в деталях, а только дать общее видение. Также данная статья — это необ...
SamsPcbGuide, часть 9: Гальваническая изоляция, безопасность и печатные платы Данная статья продолжает рассмотрение вопроса, поднятого @olartamonov, а именно, обеспечение безопасности в высоковольтных приложениях. В статье будут рассмотрены физические основы пробоя диэлектриков, а также новый стандарт безопасности. Читать дальше →
[Перевод] Reflective Shadow Maps: Часть 2 ― Реализация Привет, Хабр! В данной статье представлена простая реализация Reflective Shadow Maps (алгоритм описан в предыдущей статье). Далее я объясню, как я это сделал и какие подводные камни были. Также будут рассмотрены некоторые возможные оптимизации. Рисунок 1: Слева направо: бе...
Хабро-самоубийство. Боль планирования в 1С Не я придумал, но я согласен с тем, что для понимания решений и их полезности нужна боль, или, как говорят ребята в костюмах, pain. Если у вас нет трудностей с дефицитами, избыточными запасами, просрочкой отгрузок, и другими симптомами плохого планирования – отлично, статья ...
Хабрамегарейтинг: лучшие статьи и статистика Хабра за 12 лет. Часть 2/2 Привет Хабр. В первой части были рассмотрены некоторые закономерности развития такого интересного ресурса, как habrahabr. Материал получился длинный, так что продолжение здесь. В этой части мы заодно посмотрим как строить такие картинки, и наконец, завершим нашу статистику ...
[Перевод] Учебник по JavaFX: основные макеты Перевод статьи «JavaFX Tutorial: Basic layouts» автора Vojtech Ruzicka. Как организовать и разместить GUI компоненты в приложении JavaFX. Это четвертая статья в серии о JavaFX. В предыдущей статье я описал, как использовать FXML и SceneBuilder для создания вашего пользоват...
Методика D.I.Y. проекта. Часть вторая В заключительной части статьи «Методика D.I.Y. проекта» будет рассмотрен комплекс организационных мероприятий на стадии исполнения и закрытия любительского проекта. Предыдущие части статьи опубликованы здесь и здесь. Читать дальше →
[Перевод] Courier: мигрирование Dropbox на gRPC Примечание переводчика Большинство современных программных продуктов не являются монолитными, а состоят из множества частей, которые взаимодействуют друг с другом. При таком положении дел необходимо, чтобы общение взаимодействующих частей системы происходило на одном языке...
[Перевод] 10 самых распространенных ошибок при работе с платформой Spring. Часть 1 Всем привет. Сегодня делимся первой частью статьи, перевод которой подготовлен специально для студентов курса «Разработчик на Spring Framework». Начнём! Spring — пожалуй, одна из самых популярных платформ разработки на языке Java. Это мощный, но довольно сложный в освоении...
[Перевод] Вся правда об ОСРВ. Статья #28. Программные таймеры Идея программных таймеров была введена в одной из предыдущих статей. Они являются объектами ядра, предоставляющими задачам простой способ запуска событий по времени, или, чаще всего, способ выполнять действия на регулярной основе. Все детали функционала, связанного со времен...
Хаки при работе с большим числом мелких файлов Идея статьи родилась спонтанно из дискуссии в комментариях к статье «Кое-что об inode». Дело в том, что внутренней спецификой работы наших сервисов является хранение огромадного числа мелких файлов. На данный момент у нас порядка сотен терабайт таких данных. И мы натолкну...
[Из песочницы] SpaceVIL — кроссплатфоремнный GUI фреймворк для разработки на .Net Core, .Net Standard и JVM В данной статье я постараюсь рассказать о фреймворке SpaceVIL (Space of Visual Items Layout), который служит для построения пользовательских графических интерфейсов на платформах .Net / .Net Core и JVM. SpaceVIL является кроссплатформенным и мультиязычным фреймворком, в его ...
[Из песочницы] Краткое введение в рекурсию. JavaScript Перевод: Привет, Хабр! Представляю вашему вниманию перевод статьи "A Quick Intro to Recursion in Javascript" Yazeed Bzadough. Примечание. Рекурсия не единожды обсуждалась на хабре, но данная статья даёт базовое понимание рекурсии. Это будет полезно начинающим разр...
[Перевод] Как полиморфизм реализован внутри JVM Перевод данной статьи подготовлен специально для студентов курса «Разработчик Java». В моей предыдущей статье Everything About Method Overloading vs Method Overriding (“Все о перегрузке и переопределении методов”) были рассмотрены правила и различия перегрузки и переопре...
Приложения для электронных книг на операционной системе Android. Часть 5. Облачные хранилища и плееры В этой, последней, части статьи о приложениях для электронных книг на операционной системе Android будут рассмотрены две темы: Облачные хранилища и Аудиоплееры. Бонус: список бесплатных библиотек с каталогами OPDS. Краткое содержание предыдущих четырёх частей статьиВ 1-ой ч...
Инструменты для запуска и разработки Java приложений, компиляция, выполнение на JVM Ни для кого не секрет, что на данный момент Java — один из самых популярных языков программирования в мире. Дата официального выпуска Java — 23 мая 1995 года. Эта статья посвящена основам основ: в ней изложены базовые особенности языка, которые придутся кстати начинающим “д...
[Перевод] Извлечение данных при машинном обучении Хотите узнать о трех методах получения данных для своего следующего проекта по ML? Тогда читайте перевод статьи Rebecca Vickery, опубликованной в блоге Towards Data Science на сайте Medium! Она будет интересна начинающим специалистам. Получение качественных данных — это пе...
SamsPcbGuide, часть 11: Технологии, корпуса BGA-типа и космос В обсуждениях к предыдущей статье proton17 написал, что в космос обычные BGA не летают, дав ссылки на корпуса CCGA-типа как образец надёжности. Я решил разобраться в этом вопросе и нашёл много интересной информации (во многом благодаря вот этому ↓ человеку). Читать дальше ...
Приложения для электронных книг на операционной системе Android. Часть 4. Игры В сегодняшней, четвёртой (предпоследней), части статьи о приложениях для электронных книг на операционной системе Android будет рассмотрена только одна, но обширная тема: игры. Краткое содержание предыдущих трёх частей статьиВ 1-ой части были подробно рассмотрены причины, п...
Tic Tac Toe, часть 7: pytest и Travis CI Tic Tac Toe: содержание цикла статейВ этой статье рассмотрим Непрерывную Интеграцию/Сontinuous Integration на примере использования Travis CI. Читать дальше →
Жизненный цикл статьи на Хабре: пишем хабрапарсер. Часть вторая Привет Хабр! В первой части пятничного анализа была рассмотрена методика сбора некоторой статистики этого замечательного сайта. Изначально не было плана делать продолжение, но в комментариях возникли интересные мысли, которые захотелось проверить. Например, какие статьи име...
Создаем простой сервис коллтрекинга, часть 2 В предыдущей статье мы реализовали генерацию и проверку наличия coockie, используемой для подстановки номера на странице, а так же добавили логирование отображаемых номеров с привязкой к источнику перехода. В этой статье будет рассмотрен процесс создания интерфейса вывода ин...
[Перевод] Краткий и бодрый обзор архитектуры компиляторов Большинство компиляторов имеют следующую архитектуру: В данной статье я собираюсь детально препарировать эту архитектуру, элемент за элементом. Можно сказать, что эта статья — дополнение к огромному количеству существующих ресурсов на тему компиляторов. Она является а...
Бэкап для Linux не пишет писем Всем привет! Сегодня хочу поведать о том, как управлять Veeam Agent for Linux с помощью командной строки, и о том, какие возможности она открывает в умелых руках программиста. На написание статьи меня подтолкнул комментарий к предыдущей статье. Перефразирую удивление поль...
Библиотека генератора ассемблерного кода для микроконтроллеров AVR. Часть 5 ← Часть 4. Программирование периферийных устройств и обработка прерываний Библиотека генератора ассемблерного кода для микроконтроллеров AVR Часть 5. Проектирование многопоточных приложений В предыдущих частях статьи мы подробно останавливались на основах программирования с ...
ShIoTiny и окружающий мир: подключение датчиков к бинарным входам, дребезг контактов и другие вопросы Основные тезисы или о чем эта статья Очередная статья о ShIoTiny — визуально программируемом контроллере на базе чипа ESP8266. В статье описаны особенности подключения датчиков различных типов к бинарным входам контроллера ShIoTiny. Кроме того, имеются ответы на ряд популяр...
Фракталы в иррациональных числах Статья является продолжением моей первой статьи «Фракталы в простых числах». В предыдущей статье мы научились рисовать самоподобные паттерны с помощью взаимно простых чисел. В этой статье покажу фрактальную природу числа . Без предисловия. Под кат. Читать дальше →
Архитектурные решения для мобильной игры. Часть 2: Command и их очереди В первой части статьи мы рассмотрели как должна быть устроена модель, чтобы пользоваться ей было легко, а отлаживать её и прикручивать к ней интерфейсы просто. В этой части мы рассмотрим отдачу команд на изменения в модели, во всей её красоте и разнообразии. Как и раньше, ...
Возможности языка Q и KDB+ на примере сервиса реального времени О том, что такое база KDB+, язык программирования Q, какие у них есть сильные и слабые стороны, можно прочитать в моей предыдущей статье и кратко во введении. В статье же мы реализуем на Q сервис, который будет обрабатывать входящий поток данных и высчитывать поминутно разли...
Gatsby.js в деталях Как известно на одних бойлерплейтах далеко не уедешь, поэтому приходится лезть вглубь любой технологии, чтобы научиться писать что-то стоящее. В этой статье рассмотрены детали Gatsby.js, знание которых позволит вам создавать и поддерживать сложные вебсайты и блоги. Читать да...
[Из песочницы] Что значит unsafe в Rust? Привет, Хабр! Представляю вашему вниманию перевод статьи "What Is Rust's unsafe?" автора Nora Codes. Мне доводилось видеть много недопониманий относительно того, что значит ключевое слово unsafe для полезности и правильности языка Rust и его продвижения как "б...
Понимание джойнов сломано. Продолжение. Попытка альтернативной визуализации Многие из вас читали предыдущую статью про то, как неправильная визуализация для объяснения работы JOIN-ов в некоторых случаях может запутать. Круги Венна не могут полноценно проиллюстрировать некоторые моменты, например, если значения в таблице повторяются.При подготовке к ...
[Перевод] Интервью — 10 вопросов про Swift. Часть 3 Профессиональная программа «iOS Разработчик» — 5 месяцев Best Practice по разработке мобильных приложений с помощью Swift 5. Лучших выпускников ждут на собеседованиях 12 компаний-партнёров OTUS, поэтому публикуем перевод заключительной статьи из серии «iOS Interview Question...
Знакомство с Python для камрадов переросших «язык A vs. язык B» и другие предрассудки Для всех хабравчан, у которых возникло ощущение дежа-вю: Написать этот пост меня побудили статья "Введение в Python" и комментарии к ней. К сожалению, качество этого "введения" кхм… не будем о грустном. Но ещё грустнее было наблюдать склоки в комментариях, из разряда "C++ бы...
[Перевод] Почему вам следует использовать pathlib От переводчика: Привет, хабр! Представляю вашему вниманию перевод статьи Why you should be using pathlib и её продолжения, No really, pathlib is great. Много внимания нынче уделяется таким новым возможностям Python, как asyncio, оператору :=, и опциональной типизации. При э...
И всё же C — низкоуровневый язык За прошедшие с момента появления языка C десятилетия было создано множество интереснейших языков программирования. Какие-то из них используются до сих пор, другие — повлияли на следующие поколения языков, популярность третьих тихо сошла на нет. Между тем архаичный, противор...
ShIoTiny: обновления и уведомления О чем эта статья Продолжаем цикл статей о ShIoTiny — визуально программируемом контроллере на базе чипа ESP8266. В этой статье рассказано о том, что изменилось со времени предыдущей прошивки ShIoTiny: как изменился интерфейс пользователя; как переназначить «ножки» и други...
Самые редкие и самые дорогие языки программирования. Часть II Недавно для читателей Habr я провела небольшое исследование языков программирования, таких как Rust, Dart, Erlang, чтобы выяснить, насколько они являются редкими на российском рынке IT. В ответ на мое исследование посыпалось больше количество комментариев и вопросов касате...
PyDERASN: как я написал ASN.1 библиотеку с slots and blobs ASN.1 это стандарт (ISO, ITU-T, ГОСТ) языка описывающего структурированную информацию, а также правил кодирования этой информации. Для меня как программиста это просто ещё один формат сериализации и представления данных, наравне с JSON, XML, XDR и другими. Он крайне распрост...
Работа с датами на языке R (базовые возможности, а также пакеты lubridate и timeperiodsR) Получить текущую дату в любом языке программирования, операция эквивалентная "Hello world!". Язык R не является исключением. В этой статье мы разберёмся с тем, как устроена работа с датами в базовом синтаксисе языка R, а также рассмотрим несколько полезных пакетов, расширяющ...
Пять перспективных языков программирования со светлым будущим (3 года спустя) В 2016-м году я опубликовал перевод статьи про 5 перспективных языков программирования, в которой прогнозировался их рост в ближайшие 2-3 года. Зачастую прогнозы так и остаются прогнозами, без последующего анализа. Но я решил, что это непорядок. И посколько 3 года уже проле...
5 способов полезного использования Raspberry Pi. Часть третья Привет Хабр. Во второй части были рассмотрены 5 способов использования Raspberry Pi. И как оказывается, этот микрокомпьютер способен ещё на большее. Сейчас мы рассмотрим еще 5, надеюсь, не менее интересных возможностей Raspberry Pi. Как и в предыдущей части, будут рассмо...
iOS-дайджест №7 (31 мая – 13 июня) Источник картинки: businessinsider.com Астрологи объявили неделю новостей и анонсов в мире Apple и iOS-разработки. Чтобы рассказать про все, одной статьи не хватит, поэтому посмотрим на самые интересные и на те, которым еще не было уделено должного внимания. Читать дальше →
Загадка нейтрино от Сверхновой 1987А Сверхновая 1987А: во время и до вспышки Не очень давно здесь была неплохая статья Bars21 о нейтрино от сверхновых. Она мне очень понравилась, и кое-какие моменты (например, про урка-процесс) натолкнули на то, что мы не только читали или слушали одних и тех же преподавателе...
Темы и стили в Android без магии. И как их готовить с SwitchCompat В предыдущей статье мы рассмотрели как использовать темы и стили на уровне кода, на примере кастомной view. В этой статье давайте разберем несколько способов стилизации стандартного ui элемента, а в частности SwitchCompat. Читать дальше →
Победа на PHDays 9. Делимся лайфхаками в трёх частях. Часть 1 Всем привет! Меня зовут Виталий Малкин. Я руководитель отдела анализа защищённости компании «Информзащита» и по совместительству капитан команды True0xA3. Этой статьей мы начинаем цикл из 3-х материалов, посвящённых нашему выступлению на PHDays IX Standoff. В этой статье мы ...
Сети кабельного телевидения для самых маленьких. Часть 6: Усилители RF-сигнала В этой статье рассмотрим усилители высокочастотного радиосигнала кабельного телевидения на коаксиальной части магистрали. Читать дальше →
Крадущийся тигр, затаившийся SQLAlchemy. Основы Доброго дня. Сегодня хочу рассказать про ORM SQLAlchemy. Поговорим о том, что это, про его возможности и гибкость, а также рассмотрим случаи, которые не всегда понятно описаны. Данная ORM имеет порог вхождения выше среднего, поэтому я попытаюсь объяснить всё простым языком ...
WAL в PostgreSQL: 4. Настройка журнала Итак, мы познакомились с устройством буферного кеша и на его примере поняли, что когда при сбое пропадает содержимое оперативной памяти, для восстановления необходим журнал предзаписи. Размер необходимых файлов журнала и время восстановления ограничены благодаря периодически...
Dynamic в C#: рецепты использования Это заключительная часть цикла про Dynamic Language Runtime. Предыдущие статьи: Подробно о dynamic: подковерные игры компилятора, утечка памяти, нюансы производительности. В этой статье подробно рассматривается кэш DLR и важные для разработчика моменты, с ним связанные. Г...
[Из песочницы] Общее представление об архитектуре Clean Swift Привет, читатель! В этой статье я расскажу об архитектуре iOS приложений — Clean Swift. Мы рассмотрим основные теоретические моменты и разберем пример на практике. Читать дальше →
Приятное и полезное в преподавании Всем привет! Год назад я написал статью про то, как я организовывал университетский курс по обработке сигналов. Судя по отзывам, в статье много интересных идей, но она большая и тяжелочитаемая. И я давно хотел разбить её на более маленькие и написать их понятнее. Но писать о...
[Перевод] Вся правда об ОСРВ. Статья #29. Прерывания в Nucleus SE Все современные микропроцессоры и микроконтроллеры содержат какие-либо механизмы прерывания. Эти механизмы необходимы для обеспечения «отзывчивости», требуемой многими приложениями. Безусловно, отзывчивость и предсказуемость являются основной целью при использовании ОСРВ, но...
Про ИТ-бизнес и не только Всем доброго нового года! Навеяно статьей Бизнес, я люблю тебя коллеги Verovir, а также ее же статьей Уходя — уходи? Ночной разговор об увольнениях (хотя последняя заслуживает отдельного развернутого ответа). Коллега, вы в статье хорошо выделили ключевые проблемные точки, с ...
9 типовых проблем в сети, которые можно обнаружить с помощью анализа NetFlow (на примере Flowmon) Относительно недавно мы публиковали статью “Сетевой мониторинг и выявления аномальной сетевой активности с помощью решений Flowmon Networks”. Там мы кратко рассмотрели возможности этого продукта и процесс установки. Неожиданно для нас, после статьи и вебинара, поступило бо...
Из риелтора в разработчика игр 2. «Операция: Андроид» Добрый день, Хабр. Две моих предыдущих статьи (раз, два) вы приняли очень тепло и даже выдвинули в топ, поэтому и продолжение не заставило себя ждать. Всего-то полгода, не такой уж и большой срок. Для тех, кто не в курсе – меня зовут Тим, мне 30 лет, я риелтор и сейчас пыта...
[Перевод] Логическая репликация между версиями PostgreSQL Есть разные подходы к обновлению PostgreSQL, но некоторые приводят к простою приложения. Если нужно избежать простоя, используйте для обновления репликацию — логическую или физическую (потоковую), в зависимости от сценария. В этой статье мы рассмотрим разницу между логическ...
ЧПУ в хоббийной мастерской (часть 2) → Первая часть В статье рассмотрим стандартное и нестандартное использование CNC-роутера. Для чего кроме вырезания деревянных картинок можно приспособить такой станок. Осторожно, трафик. Читать дальше →
[Из песочницы] Способы сегментации точек в Point Clouds Введение Некоторое время назад мне потребовалось решить задачу сегментации точек в Point Cloud (облака точек — данные, полученные с лидаров). Пример данных и решаемой задачи: Поиски общего обзора существующих методов оказались неуспешными, поэтому пришлось собирать информац...
[Из песочницы] Рендеринг 3D графики с помощью OpenGL Введение Рендеринг 3D графики — непростое занятие, но крайне интересное и захватывающее. Эта статья для тех, кто только начинает знакомство с OpenGL или для тех кому интересно, как работают графические конвейеры, и что они из себя представляют. В этой статье не будет точных ...
Пишем свой язык программирования, часть 4: Представление структур и классов, генерация аллокаторов Доброго времени суток тем, кто решил ознакомиться с моей очередной статьёй. Первым делом выкладываю ссылки на предыдущие части: Часть 1: пишем языковую ВМ Часть 2: промежуточное представление программ Часть 3: Архитектура транслятора. Разбор языковых структур и математиче...
Один из методов получения профиля рабочей нагрузки и истории ожиданий в PostgreSQL Продолжение статьи "Попытка создать аналог ASH для PostgreSQL ". В статье будет рассмотрено и показано на конкретных запросах и примерах — какую же полезную информацию можно получить с помощью истории представления pg_stat_activity. Предупреждение. В силу довольно большого ...
Software Defined Radio — как это работает? Часть 5 Привет Хабр. В предыдущей части был рассмотрен прием сигналов с помощью GNU Radio. Сейчас мы рассмотрим обратную задачу — передачу сигналов различного вида модуляции. Как и в случае приема, с помощью GNU Radio можно создать сложную программную систему для передачи сигнал...
[Из песочницы] .NET зоопарк под призмой NET Core Всем привет! Сегодня мы рассмотрим разные фишки и изменения, которые появились в .NET Core платформе и сравним их с Framework. Я разбил статью на модули для более лучшего понимания. Эта статья будет интересна тем кто собирается переходить на .NET Core или уже использует его....
Мины под производительностью ждут своего часа: часть 2 При подготовке прошлой статьи от моего внимания ускользнул один любопытный пример, выловленный в одном из наших приложений. Его я оформил в виде отдельной статьи, которую вы сейчас читаете. Читать дальше →
Дополнительные программные средства безопасности для NAS Цикл статей назван "Построение защищённого NAS". Поэтому в данной статье будет рассматриваться повышение уровня защищённости. Также, будут описаны и те инструменты, которые я не использовал, но возможно применить. Читать дальше →
Извлечение мастер-пароля из заблокированного менеджера паролей SafeInCloud После прочтения этой статьи мне захотелось провести исследование другого менеджера паролей на наличие похожих уязвимостей. В комментариях к статье пользователем Dark_Angel был задан вопрос: А что скажите насчет SafeInCloud? Читать дальше →
Разработка монолитной Unix подобной OS — GDT & IDT (5) В предыдущей статье мы с вами реализовали менеджер динамической памяти. Сегодня мы рассмотрим основы работы в защищенном режиме процессора Intel i386. А именно: глобальную таблицу дескрипторов и таблицу векторов прерываний. Читать дальше →
MU-MIMO: один из алгоритмов реализации Предисловие В качестве дополнения к моей недавней статье хотелось бы также поговорить о теме MU (Multi User) MIMO. Есть у мною уже упомянутого профессора Хаардта одна очень известная статья, где он вместе со своими коллегами предлагает алгоритм разделения пользователей по ни...
[Из песочницы] UICollectionView всему голова: Изменение представления на лету Привет, Хабр! Представляю вашему вниманию перевод статьи "UICollectionView Tutorial: Changing presentation on the fly". В данной статье мы рассмотрим использование различный способов отображение элементов, а также их переиспользование и динамическое изменение. Зде...
3. Дизайн сети предприятия на коммутаторах Extreme Добрый день, друзья! Сегодня я продолжу цикл, посвященный коммутаторам Extreme статьей по проектированию сети Enterprise. В статье я постараюсь по возможности кратко: описать модульный подход к проектированию сети Etnterprise рассмотреть виды построения одного из важне...
Работа не волк, часть 2. Пройти босса и выжить на испытательном сроке Новая работа — маленькая (а иногда и не очень) новая жизнь. Самое главное это начать её правильно, чтобы верный старт стал началом отличного пути. После того, как вы прошли HR-а, остаётся два важных шага: пройти собеседование с руководителем и удачно завершить испытательный ...
[Перевод] Учебник по JavaFX: расширенные макеты Как организовать и разместить GUI компоненты в приложении JavaFX, используя расширенные макеты. В предыдущей статье мы рассмотрели некоторые основные макеты JavaFX. Теперь пришло время рассмотреть остальные имеющийся макеты. Учебник по JavaFX: начало работы Учебник по Ja...
Router и Data Passing архитектуры Clean Swift Привет, читатель! В предыдущей статье я рассказывал про VIP цикл архитектуры Clean Swift. Теперь мы затронем одну из самых важных тем — переход и передачу данных между сценами.  Читать дальше →
[Перевод] Прекратите усердствовать с комментариями в коде Привет, Хабр! Сегодня вашему вниманию предлагается весьма дискуссионная статья, затрагивающая важный аспект философии "Чистого Кода". Автор статьи берет на себя смелость утверждать, что в большинстве случаев комментарии в коде вредны, но также не забывает указать, когда без...
Вопросы для собеседования — от кандидата к работодателю Все мы привыкли к тому, что на собеседованиях задают много вопросов. Обычно — работодатели кандидатам. Один из таких вопросов — “а у вас есть вопросы к нам?”. Довольно часто кандидаты не готовы к этому. И зря. Задавать вопросы работодателю — это совершенно нормально и даже н...
[Из песочницы] Как разработать ещё один платформер с помощью Unity. Ещё один туториал Привет, Хабр! Под катом вас ждёт ещё одна статья, которая расскажет о том, как я поставил себе цель запрограммировать игру, основываясь на переводе статьи на Хабр под названием Паттерны дизайна уровней для 2D-игр. Статья имеет много текста (как обычного, так и исходного) и м...
[Перевод] Лямбды: от C++11 до C++20. Часть 2 Привет, хабровчане. В связи со стартом набора в новую группу по курсу «Разработчик C++», делимся с вами переводом второй части статьи «Лямбды: от C++11 до C++20». Первую часть можно прочитать тут. В первой части серии мы рассмотрели лямбды с точки зрения C++03, C++11 и C+...
[Из песочницы] Руководство Google по стилю в C++ Часть 1. Именование Часть 2. Комментарии … Все мы при написании кода пользуемся правилами оформления кода. Иногда изобретаются свои правила, в других случаях используются готовые стайлгайды. Хотя все C++ программисты читают на английском легче, чем на родном, приятнее иметь...
Julia. Генераторы отчётов и документации Одной из актуальных проблем во все времена, является проблема подготовки отчётов. Поскольку Julia — язык, пользователи которого непосредственно связаны с задачами анализа данных, подготовки статей и красивых презентаций с результатами расчётов и отчётов, то эту тему просто ...
Vue 3 станет быстрее Одним из самых ярких событий в мире Фронтенда в этому году стала публикация репозитория Vue next — части функционала третьей версии VueJS. В этой в этой статье представлен обзор новых killer features VueJS. На момент публикации статьи репозиторий находился в статусе Pre-Alp...
Публикация приложения в Microsoft Store: некоторые изменения за год Вот уже год прошел с момента выхода статьи об особенностях публикации в MS Store. За прошедший год произошло много событий – GDPR, выход VS 2019 и прочие изменения. В сегодняшней небольшой статье мне бы хотелось немного рассказать о том, какие изменения произошли в особенно...
Способ организации коллективного изучения теории в ходе семестра Всем привет! Год назад я написал статью про то, как я организовывал университетский курс по обработке сигналов. Судя по отзывам, в статье много интересных идей, но она большая и тяжелочитаемая. И я давно хотел разбить её на более маленькие и написать их понятнее. Но писать о...
[Из песочницы] Как выбрать широкополосный модем для беспилотного летательного аппарата (БЛА) или робототехники Задача передачи большого объема данных с борта беспилотного летательного аппарата (БЛА) или наземной робототехники не редкость в современных приложениях. В данной статье рассматриваются критерии выбора широкополосных модемов и сопутствующие проблемы. Статья написана для разр...
Автоматическое определение эмоций в текстовых беседах с использованием нейронных сетей Одна из основных задач диалоговых систем состоит не только в предоставлении нужной пользователю информации, но и в генерации как можно более человеческих ответов. А распознание эмоций собеседника – уже не просто крутая фича, это жизненная необходимость. В этой статье мы рас...
Инвентаризация от И до Я. Считаем ИТ-активы На этом скриншоте результат работы Quest KACE относительно компьютера бухгалтера одной из российских компаний. Выяснилось, что часть ПО установлена, но не используется. Здесь приведены цены, по которым это ПО закупалось. В вашем случае цена на ПО может отличаться, здесь ва...
[Перевод] Полное руководство по массивам и срезам в Golang Перевод статьи подготовлен специально для студентов курса «Разработчик Golang», занятия по которому начинаются уже сегодня! Поначалу легко воспринимать массивы и срезы как одно и то же, но с разными названиями: и то и другое является структурой данных для представления ко...
Протокольно ориентированное программирование, часть 3 Завершающая статья на тему протокольно ориентированного программирования. В этой части мы рассмотрим как переменные обобщенного типа хранятся и копируются и как с ними работает метод dispatch. Читать дальше →
[Из песочницы] Phoenix LiveView: когда вам больше не нужен JavaScript* * для создания динамической страницы Не так давно 12.12.2018 был анонсирован выход новой библиотеки для фанатов phoenix framework под названием Phoenix LiveView. Я бы хотел поделиться с вами впечатлениями от ее использования и phoenix в целом, а в следующей статье попробова...
Управление персонажем с помощью SharedEvents Ссылка на проект В данной статье я хочу показать, как можно использовать SharedEvents для управления персонажем от третьего лица, который предлагает стандартный набор ассетов. О SharedEvents я писал в предыдущих статьях (этой и в этой). Добро пожаловать под кат! Читать да...
[Перевод] Зачем нужны дженерики? Эта статья о том, что будет означать добавление дженериков в Go, и почему я считаю, что нам это следует сделать. Также я коснусь возможного изменения архитектуры языка ради добавления дженериков. Go вышел 10 ноября 2009-го. Меньше чем через сутки появился первый комментари...
[Перевод] Service mesh для микросервисов. Часть III. Более глубокий взгляд на Istio Перевод статьи подготовлен специально для студентов курса «Инфраструктурная платформа на основе Kubernetes». Это третья статья из серии публикаций, посвященных Kubernetes и технологии service mesh (также известной как «сеть микросервисов» и «mesh-сеть микросервисов»). В ...
[Перевод] Картриджи консолей как модемы Многие современные игроки в видеоигры воспринимают онлайн-соединения как нечто само собой разумеющееся — и правда, онлайн-сервисы являются стандартной функцией консолей уже почти пятнадцать лет1. Однако ещё до того, когда проникновение Интернета стало повсеместным, существо...
[Перевод] Лямбды: от C++11 до C++20. Часть 1 Добрый день, друзья. Сегодня мы подготовили для вас перевод первой части статьи «Лямбды: от C++11 до C++20». Публикация данного материала приурочена к запуску курса «Разработчик C++», который стартует уже завтра. Лямбда-выражения являются одним из наиболее мощных дополнений...
[Перевод] Внутренности JVM, Часть 1 — Загрузчик классов Перевод статьи подготовлен специально для студентов курса «Разработчик Java». В этой серии статей я расскажу о том, как работает Java Virtual Machine. Сегодня мы рассмотрим механизм загрузки классов в JVM. Читать дальше →
Кот Шрёдингера без коробки: проблема консенсуса в распределённых системах Итак, представим. В комнате заперты 5 котов, и чтобы пойти разбудить хозяина им необходимо всем вместе договориться между собой об этом, ведь дверь они могут открыть только впятером навалившись на неё. Если один из котов – кот Шрёдингера, а остальные коты не знают о его реше...
[Перевод] Введение в Kubernetes для пользователей VMware. Часть 2. Практика Это вторая часть введения в Kubernetes для пользователей VMware. Прежде чем перейти к практической части, ознакомьтесь с предыдущей статьей по ссылке. Читать дальше →
[Из песочницы] Эффективные и не эффективные методы кодинга на Python Привет, Хабр! Предлагаю Вашему вниманию перевод статьи Good and Bad Practices of Coding in Python автора Duomly. Python – высокоуровневый язык программирования, акцентирующий внимание на удобочитаемости. Он разрабатывается, поддерживается и часто используется в соответствии...
Еще один способ оптимизации docker-образов для Java приложений История по оптимизации образов для java приложений началась с выхода статьи в блоге спринга — Spring Boot in a Container. В ней обсуждались различные аспекты по созданию docker образов для spring boot приложений, в том числе и такой интересный вопрос, как уменьшение размеров...
Пиксельные отступы в текстурной развертке Представляем четвертую статью нашего цикла о работе с 3D-моделями в Unity. Предшествующие статьи: «Особенности работы с Mesh в Unity», «Unity: процедурное редактирование Mesh», «Импорт 3D-моделей в Unity и подводные камни». В предыдущей статье мы упомянули о проверке тексту...
Пишем под FPGA без HDL. Сравнение высокоуровневых средств разработки В последнее время производители FPGA и сторонние компании активно развивают методы разработки для FPGA, отличающиеся от привычных подходов использованием высокоуровневых средств разработки. Являясь FPGA-разработчиком, в качестве основного инструмента я использую язык описа...
Hello, World! Глубокое погружение в Терминалы На написание данной статьи меня вдохновила статья об анализе Сишного printf. Однако, там был пропущен момент о том, какой путь проходят данные после того, как они попадают в терминальное устройство. В данной статье я хочу исправить этот недочет и проанализировать путь данны...
Робо-футболист от начинающих. Соревнования в МФТИ. Android & Arduino & Bluetooth Данная статья является полу-сиквелом к работе Love, Death and Robots «Машинка на Arduino, управляемая Android-устройством по Bluetooth, — полный цикл», состоящей из двух частей (раз, два). Вещи, описанные там, были немного доработаны-переделаны, а сам робот из ездящей машинк...
[Перевод] Как решить «Сапёра» (и сделать его лучше) «Сапёр» (Minesweeper) — это простая игра с простыми правилами, однако некоторые её конфигурации создают любопытные трудности. В этой статье мы создадим солвер «Сапёра» с увеличивающейся сложностью, и поразмышляем над тем, как меняется динамика игры при постепенном повышении...
[Перевод] Тренинг Cisco 200-125 CCNA v3.0. День 7. F.A.Q Сегодня мы рассмотрим ответы на часто встречающиеся вопросы, которые касаются предыдущих видеоуроков. С момента первой публикации прошло уже около года, и множество людей оставили свои комментарии под моими видеоуроками на канале YouTube. Я внимательно читал все ваши коммент...
Установка и настройка Sonata Admin на Symfony 4 Приветствую всех. В данной статье поговорим об Symfony 4 и Sonata Admin. В процессе установки я столкнулся с массой неточностей в документации и сама документация была раскидана по нескольким местам. Здесь я рассмотрю весь процесс, начиная от создания проекта и заканчивая а...
Optlib. Реализация генетического алгоритма оптимизации на Rust В этой статье описывается библиотека optlib, предназначенная для решения задач глобальной оптимизации на языке Rust. На момент написания этой статьи в этой библиотеке реализован генетический алгоритм нахождения глобального минимума функции. Библиотека optlib не привязана к к...
[Из песочницы] Full-stack TypeScript Apps Привет, Хабр! Представляю вашему вниманию перевод статьи "Full-Stack TypeScript Apps — Part 1: Developing Backend APIs with Nest.js" автора Ana Ribeiro. Часть 1: Разработка серверного API с помощью Nest.JS TL;DR: это серия статей о том, как создать веб-приложение TypeScript ...
Современные устройства ввода-вывода быстрее, чем процессоры. Обзор статьи Хочу рассказать о статье "I/O Is Faster Than the CPU – Let’s Partition Resources and Eliminate (Most) OS Abstractions", опубликованной на личной странице одного из разработчиков ScyllaDB, Pekka Enberg. О ней узнал из видео. С докладом по этой статье авторы должны были высту...
ThingJS v1.0-alpha Последние два года я разрабатывал собственную IoT платформу и сегодня готов показать ее альфа версию. Вместе с партнером мы создаем и поддерживаем IoT устройства. Мы разобрали не один сарай с граблями в процессе этой деятельности. ThingJS родилась не столько из желания, ско...
Энтропийное кодирование rANS или как написать собственный архиватор Эта статья может быть интересна тем, кто занимается сжатием данных или хочет написать собственный архиватор. Статья написана, в основном, по материалам блога, который ведёт Fabian Giesen. Читать дальше →
Citymobil — пособие для стартапов по увеличению стабильности на фоне роста. Часть 2. Какие бывают виды аварий? Это вторая статья из цикла про то, как мы в Citymobil увеличивали стабильность сервиса (первую можете почитать здесь). В этой статье я углублюсь в конкретику разбора аварий. Но перед этим я освещу один момент, о котором я должен был подумать заранее и осветить в первой ста...
[Перевод] Самодокументируемый код – это (как правило) чушь Всем привет! Предваряя сегодняшнюю переводную публикацию, сразу отметим, что этот текст задуман как follow-up недавнему дискуссионному материалу "Прекратите усердствовать с комментариями в коде". Нас настолько впечатлила развернувшаяся там дискуссия и 189 комментариев по со...
Android Camera2 API от чайника, часть 2, пишем видео Продолжаем разбираться с CAMERA2 API Android. В предыдущей статье мы осваивали работу камеры, чтобы делать фоточки, используя новое API. Теперь же займёмся съемкой видео. Вообще изначально, главной моей целью был стрим по сети живого видео с камеры Android при помощи Med...
[Из песочницы] Работа с JSON RPC в Symfony 4 Всем привет, сегодня поговорим о том, как подружить Symfony 4, JSON RPC и OpenAPI 3. Данная статья рассчитана не на новичков, вы уже должны понимать как работать с Symfony, Depedency Injection и другими «страшными» вещами. Сегодня рассмотрим одну конкретную реализацию JSON ...
Создание своего jsfiddle, часть 2 Привет всем читателем Habr. В данной статье мы будем продолжать писать свой онлайн редактор кода. В этой статье мы сделаем функцию сохранения кода в localStorage и по обновлению страницы этот код будет вставляться в эти 3 поля, а также сделаем функцию скачивания этого кода...
Не очередной язык программирования. Часть 3: Физика Третья и заключительная часть серии статей о языке lsFusion (ссылки на первую и вторую части) В ней речь пойдет о физической модели: всем том, что не связано с функционалом системы, а связано с ее разработкой и оптимизацией производительности, когда данных становится слиш...
[Из песочницы] Когда использовать var, let и const в Javascript [перевод статьи Tyler’а McGinnis] Привет, Хабр! Представляю вашему вниманию перевод статьи «var vs let vs const in JavaScript» автора Tyler McGinnis. В этой статье вы узнаете 2 новых способа для создания переменных в Javascript (ES6), let и const. На протяжении этой статьи мы рассмотрим разницу между var,...
Оптимизация производительности .NET (C#) приложений Статей с подобным заголовком достаточно много, поэтому постараюсь избежать банальных тем. Надеюсь, что даже очень опытные разработчики найдут здесь что-то новое для себя. В данной статье будут рассмотрены только простые механизмы и подходы к оптимизации, которые позволят п...
Сети кабельного телевидения для самых маленьких. Часть 7: Оптические приёмники Граница между оптической средой и коаксиальным кабелем — оптический приёмник. В этой статье рассмотрим их конструкцию и настройки. Читать дальше →
Coroutines :: опыт практического применения В этой статье расскажу о том, как работают корутины и как их создать. Рассмотрим применение при последовательном, параллельном выполнении. Поговорим об обработке ошибок, отладке и способах тестирования корутин. В конце я подведу итог и расскажу о впечатлениях, которые остали...
Тесты или типы? — Rust version Пару дней назад 0xd34df00d опубликовал здесь перевод статьи, описывающей, что можно узнать о функции в разных языках, если рассматривать её как "чёрный ящик", не используя информацию о её реализации (но, разумеется, не мешая ей пользоваться компилятору). Разумеется, получаем...
SQL. Занимательные задачки Здравствуй Хабр! Вот уже более 3ех лет я преподаю SQL в разных тренинг цетрах и одним из моих наблюдений является то что студенты осваивают и понимают SQL лучше если ставить перед ними задачу, а не просто рассказывать о возможностях и теоритических основах. В этой статье я...
[Перевод] Подготовка к Spring Professional Certification. Spring Security Эта статья является переводом статьи по подготовке к Spring Professional Certification. В ней будет рассмотрена тема Spring Security и основные вопросы по ней. Ее также можно использовать для подготовки к собеседованию. ↓ Остальные статьи доступны по ссылкам в оглавлении ↓ ...
Разработка Unix подобной OS — Виртуальное адресное пространство (6) В предыдущей статье мы рассмотрели основы работы в защищенном режиме IA-32. Сегодня пришла пора научиться работать с виртуальным адресным пространством. Читать дальше →
SNA Hackathon 2019: усложняем архитектуру — упрощаем признаки В этой статье я расскажу про свое решение текстовой части задачи SNA Hackathon 2019. Какие-то из предложенных идей будут полезны участникам очной части хакатона, которая пройдет в московском офисе Mail.ru Group с 30 марта по 1 апреля. Кроме того, этот рассказ может быть ин...
Шутки и отсылки из «Симпсонов» на английском, которые нужно объяснять Сегодня поговорим о мультиках. А конкретно — о самом длинном мультсериале в истории человечества — «Симпсонах». Авторы сериала не стесняются затрагивать самые злободневные и спорные темы вроде религии, политкорректности, однополых браков, феминизма. Собственно, это одна ...
Делаем сами сцинтилляционный радиометр. Часть 1, аппаратная В предыдущей статье я немного показал в работе самодельный сцинтилляционный радиометр. Прибор заинтересовал публику и в связи с этим выходит данная статья, описывающая радиометр изнутри. Читать дальше →
Знакомство со статическим анализатором PVS-Studio для Java На протяжении многих лет команда PVS-Studio развивает одноименный статический анализатор. На данный момент анализатор представляет собой сложное программное решение и предоставляет возможность анализа таких языков программирования, как C, C++, C# и Java на платформах Windows...
Временные ряды в прогнозировании спроса, нагрузки на КЦ, товарных рекомендациях и поиске аномалий В статье рассматриваются области применения временных рядов, решаемые задачи, и используемые алгоритмы. Прогнозирование временного ряда используется в таких задачах, как прогнозирование спроса, нагрузки на контактный центр, дорожного и интернет-трафика, решения задачи холодн...
[Из песочницы] 10 самых распространенных ошибок Spring Framework Привет, Хабр! Представляю вашему вниманию перевод статьи «Top 10 Most Common Spring Framework Mistakes» автора Toni Kukurin. Spring, вероятно, один из самых популярных Java-фреймворков, а также могучий зверь для укрощения. Хотя его базовые концепции довольно легко понять, д...
[Перевод] Бессерверные вычисления на основе OpenWhisk, часть 2 Эта статья продолжает цикл переводных заметок об OpenWhisk от автора Priti Desai. Сегодня будут рассмотрены примеры развертывания GitHub webhook, периодических сигналов, а также приведено простейшее приложение для отправки сообщений в Slack. Читать дальше →
SamsPcbGuide, часть 10: Технологии, пайка бессвинцовых компонентов Данная статья – первая статья о технологиях сборки печатных плат. Последний семинар от PCB SOFT был посвящён проектированию, обеспечивающему технологичность изготовления печатной платы (англ. DFM, design for manufacture). Был поднят вопрос о целесообразности реболлинга бессв...
2. Обзор технической поддержки и гарантии коммутаторов Extreme Networks Введение Друзья, добрый день. В предыдущей статье мы рассмотрели коммутаторы Extreme уровня Enterprise. Теперь я немного изменю порядок статей и сегодня продолжу цикл статьей про сервисные контракты и гарантийные обязательства Extreme. У Extreme, как и у всех остальных бол...
[Из песочницы] Алгоритм мышления и сознания В этой статье изложен алгоритм мышления и сознания. Я предлагаю свой ответ на вопрос о том как работает мышление и сознание. И демонстрирую алгоритм, который умеет по-настоящему, творчески, думать и обладает настоящим сознанием. Статья рассчитана на программистов и состоит и...
Пишем Android приложение для киноманов — Часть 1 (Прототипирование) Доброго времени суток, Хабр! Не секрет, что недавно компания Google утвердила в качестве приоритетного языка программирования ОС Android — Kotlin. В этой и последующих статьях будет рассказываться о создании приложения на этом языке. Читать дальше →
Citymobil — пособие для стартапов по увеличению стабильности на фоне роста. Часть 1 Этой статьей я открываю короткий цикл из двух статей, в которых подробно расскажу, как нам удалось за несколько месяцев в разы увеличить стабильность сервисов Citymobil. Статья начинается с рассказа про наш бизнес, про задачу, про причину появления самой задачи повышения с...
Обзор AngularConnect 2019. Часть 1 19 и 20 сентября мы с коллегами посетили конференцию AngularConnect. Это одна из крупных Angular-конференций, в этом году она прошла в пятый раз. В программе было 30 докладов, из которых 8 — от команды Angular, 4 воркшопа и 5 эксперт-зон. Ради такого стоило поехать в Лондон ...
Разработка Unix подобной OS — Драйверы символьных устройств (8) В предыдущей статье мы ввели многозадачность. Сегодня пришло время рассмотреть тему драйверов символьных устройств. Конкретно сегодня мы напишем драйвер терминала, механизм отложенной обработки прерываний, рассмотрим тему обработчиков верхних и нижних половин прерываний. ...
Микробиота. История изучения и методы исследования Мы получили много комментариев к последней статье и решили с Атласом дополнить серию материалом о том, какие еще есть методы изучения микробиоты. В конце статьи добавили, что нужно помнить об исследованиях бактерий кишечника на сегодняшний день, чтобы они не навредили вашему...
[Перевод] Эффекты фильтрации SVG. Часть 4. Двухцветные изображения при помощи feComponentTransfer Эта четвертая статья серии об SVG-фильтрах, в которой Sara Soueidan покажет вам, как использовать feComponentTransfer для создания эффекта двухтонового фильтра. Предлагаемая серия статей "Эффекты фильтрации SVG" Sara Soueidan, внештатного разработчика UI/UX интерфейса и авт...
CodeSide. Новая игра для знаменитого соревнования Russian AI Cup Сообщество участников чемпионатов и команда Mail.ru Group в сотрудничестве с Codeforces.com приглашают вас на самую настоящую бойню, от которой вы получите бессонные ночи и мозоли на руках, поскольку будете участвовать в одном из самых живых и интересных чемпионатов по про...
Восхождение на Эльбрус — Разведка боем. Техническая Часть 1. Регистры, стеки и другие технические детали Как и обещали, продолжаем рассказывать про освоение процессоров Эльбрус. Данная статья является технической. Информация, приведенная в статье, не является официальной документацией, ведь получена она при исследовании Эльбруса во многом как черного ящика. Но будет безусловно ...
Что делать, чтобы получать нормальные деньги и работать в комфортных условиях будучи программистом Этот пост вырос из комментария к одной статье здесь, на Хабре. Вполне обычного комментария, разве что сразу несколько человек сказали, что было бы очень хорошо оформить его в виде отдельного поста, а МойКруг даже не дожидаясь этого опубликовали этот самый комментарий отдельн...
Основы шаблонов С++: шаблоны функций Дисклаймер: статья была начата еще в феврале, но, по зависящим от меня причинам, закончена не была. Тема очень обширна, поэтому публикуется в урезаном виде. Что не поместилось, будет рассмотренно позже. Невозможно разбираться в современном С++, не зная, что такое шаблоны п...
Упрощенный доступ к данным внутренней FAT12 для STM32 В предыдущей статье был рассмотрен вариант использования микроконтроллера STM32F103C8T6 как flash накопителя с внутренней файловой системой FAT12. Теперь можно рассмотреть, каким образом получить данные из нашей внутренней файловой системы. К примеру нам необходимо хранить н...
[Перевод] Обучение с подкреплением на языке Python Привет, коллеги! В последней публикации уходящего года мы хотели упомянуть о Reinforcement Learning — теме, книгу на которую мы уже переводим. Посудите сами: нашлась элементарная статья с Medium, в которой изложен контекст проблемы, описан простейший алгоритм с реализаци...
ShIoTiny: узлы, связи и события или особенности рисования программ Основные тезисы или о чем эта статья Тема статьи — визуальное программирование ПЛК ShIoTiny для умного дома, описанного тут: ShIoTiny: малая автоматизация, интернет вещей или «за полгода до отпуска». Очень кратко рассмотрены такие понятия, как узлы, связи, события, а такж...
Блог-шоу - выпуск 61 Дорогие друзья, пришло время публиковать очередной выпуск блог-шоу - моей традиционной подборки всего самого интересного и полезного, что мне встретилось на просторах интернета за последнее время. Я, как хомяк, складирую все полезности в закладки Evernote А потом делюсь с ...
[Из песочницы] Новый проект братьев Дуровых: Telegram Open Network Приближается момент полномасштабного запуска самого ожидаемого криптопроекта, который действительно может изменить мир. К началу ноября сеть TON будет запущена и все смогут в полной мере оценить её достоинства и начать использовать по назначению: разработчики — создавать пол...
Домашняя автоматика с поддержкой промышленных языков программирования, или BluePill x405 Начало обзора Итак, мои дорогие коллеги, начнём обзор с того, что же на самом деле мы хотим тут осветить. В статье я хочу рассмотреть элементы, характерные для построения программы промышленного контроллера, и показать, как их можно применить для систем домашней автоматики. ...
Некоторые аспекты мониторинга MS SQL Server. Рекомендации по настройке флагов трассировки Предисловие Довольно часто пользователи, разработчики и администраторы СУБД MS SQL Server сталкиваются с проблемами производительности БД или СУБД в целом, поэтому весьма актуальным является мониторинг MS SQL Server. Данная статья является дополнением к статье Использование ...
Основы архитектуры приложений на Flutter: Vanilla, Scoped Model, BLoC (оригинал статьи на английском языке опубликован на Medium) Flutter предоставляет современный реактивный фреймворк, большой набор виджетов и тулов. Но, к сожалению, в документации нет ничего похожего на руководство по рекомендуемой архитектуре приложения для Android. Не сущ...
Кортеж здорового человека Эта статья — об одном из лучших изобретений Python: именованном кортеже (namedtuple). Мы рассмотрим его приятные особенности, от известных до неочевидных. Уровень погружения в тему будет нарастать постепенно, так что, надеюсь, каждый найдёт для себя что-то интересное. Поеха...
[Перевод] Сила дженериков в Swift. Часть 2 Добрый день, друзья. Специально для студентов курса «iOS Разработчик. Продвинутый курс» мы подготовили перевод второй части статьи «Сила дженериков в Swift». Связанные типы, условия where, сабскрипты и прочее… В статье «Сила дженериков в Swift. Часть 1» описывались gene...
OS1: примитивное ядро на Rust для x86. Часть 2. VGA, GDT, IDT Первая часть Первая статья еще не успела остыть, а я решил не держать вас в интриге и написать продолжение. Итак, в предыдущей статье мы поговорили о линковке, загрузке файла ядра и первичной инициализации. Я дал несколько полезных ссылок, рассказал, как размещается загружен...
Проблемы пакетной обработки запросов и их решения (часть 2) Это продолжение статьи «Проблемы пакетной обработки запросов и их решения». Рекомендуется сначала ознакомиться с первой частью, так как в ней подробно описана суть задачи и некоторые подходы к ее решению. Здесь же мы рассмотрим другие методы. Читать дальше →
Flare-On 2019 write-up -0x01 — Intro Данная статья посвящена разбору всех заданий Flare-On 2019 — ежегодного соревнования по реверс-инжинирингу от FireEye. В данных соревнованиях я принимаю участие уже второй раз. В предыдущем году мне удалось попасть на 11-ое место по времени сдачи, решив все з...
Бесплатные варианты лицензирования PVS-Studio Существует несколько вариантов бесплатного лицензирования статического анализатора кода PVS-Studio, предназначенного для поиска ошибок и потенциальных уязвимостей. Бесплатной лицензией могут воспользоваться открытые проекты, маленькие закрытые проекты, публичные специалисты...
[Перевод] Функциональное мышление. Часть 11: Финал Сегодня мы заканчиваем нашу серию статей о функциональном программировании. Получилось 11 частей. Я считаю, что это достижение. В этой статье реализуем простой стековый калькулятор (также известный как "обратная Польская нотация"). Реализация практически полностью построена ...
[Перевод] Вся правда об ОСРВ. Статья #27. Системное время Понятие времени в контексте ОСРВ была введена в одной из предыдущих статей, вместе с идеей о связанных со временем функциях, доступных в ОСРВ. Читать дальше →
[Перевод] Введение в Redis с использованием Spring Boot Перевод статьи подготовлен специально для студентов курса «Разработчик на Spring Framework». В этой статье мы рассмотрим основы использования Redis через Spring Boot с помощью библиотеки Spring Data Redis. Мы создадим приложение, которое демонстрирует, как выполнять CR...
Docker: не вредные советы В комментариях к моей статье Docker: вредные советы было много просьб объяснить, чем так ужасен описанный в ней Dockerfile. Краткое содержание предыдущей серии: два разработчика в жестком дедлайне составляют Dockerfile. В процессе к ним заходит Ops Игорь Иванович. Итоговый D...
Применение смарт-аккаунтов Waves. Часть 1: от аукционов до бонусных программ Блокчейн часто ассоциируется лишь с криптовалютами, но области применения технологии DLT значительно шире. Одно из самых перспективных направлений для применения блокчейна – смарт-контракт, выполняющийся автоматически и не требующий доверия между сторонами, его заключившим...
[Из песочницы] Dagger 2 – это элементарно (Часть 1) Содержание Введение Что такое Dependency Injection, Пример зависимости Dagger 2 – введение Первое использование Dagger 2 Введение Статья написана не продвинутым программистом для таких же, обычными и понятными словами В статье используется пример кода на Kotlin. Версия da...
Какие инструменты сетевого мониторинга выбились в лидеры по версии Gartner В феврале 2019 года Gartner выпустил новый Magic Quadrant for Network Performance Monitoring and Diagnostics (MQ for NPMD). NPMD инструменты — это решения для мониторинга сетевого трафика и инфраструктурных метрик сетевых устройств. Большая часть вендоров поставляет комплекс...
Основы работы с Neo4j в браузере В статье рассматривается как начать работать с графовой СУБД Neo4j, используя Neo4j Browser. Это руководство может быть полезным как дополнение к книге Редмонда и Уилсона "Семь баз данных за семь недель", так как рассматриваемый веб-интерфейс был полностью переработан, а так...
Software Defined Radio — как это работает? Часть 6 Привет, Хабр. В предыдущей части мы рассмотрели возможность передачи простых сигналов с помощью GNU Radio. Сейчас мы пойдем дальше, и посмотрим, как передать что-нибудь посложнее. Начнем с радиолюбительских сигналов WSPR, а затем создадим работающий программный QAM-модем. ...
Обзор техник анализа анонимных блокчейнов В одной из наших предыдущих статей мы делали обзор технологий анонимных криптовалют. Сегодня мы посмотрим на проблему анонимизации с другой стороны и приведем обзор самых известных на сегодняшний день способов анализа анонимных блокчейнов. В этой статье мы сфокусируемся на а...
[Из песочницы] Создание Redux-подобного глобального хранилища, используя React Hooks Привет, Хабр! Представляю вашему вниманию перевод статьи "Build a Redux-like Global Store Using React Hooks" автора Ramsay. Давайте представим, что я написал интересное предисловие к этой статье и теперь мы сразу можем перейти к по-настоящему интересным вещам. Если...
Как стать оператором децентрализованного интернет-провайдера «Medium» и не сойти с ума. Часть 1 Добрый день, Сообщество! Меня зовут Михаил Подивилов. Я являюсь основателем общественной организации «Medium». Этой публикацией я начинаю серию статей, посвящённых настройке сетевого оборудования для соблюдения аутентичности при становлении оператором децентрализованного и...
[Перевод] Reflective Shadow Maps: Часть 1 Привет, Хабр! Представляю вашему вниманию перевод статьи «Reflective Shadow Maps» автора Eric Polman. Reflective Shadow Maps (RSM) (отражающие карты теней) ― это алгоритм, расширяющий “простые” shadow map. Алгоритм учитывает свет, рассеянный после первого попадания на пов...
Основы формата GLTF и GLB, часть 1 Что такое GLTF и GLB? GLTF (GL Transmission Format) — это формат файла для хранения 3Д сцен и моделей, который является крайне простым в понимании (структура записана в стандарте JSON), расширяемым и легко взаимодействующим с современными веб-технологиями. Данный формат хоро...
Безопасность алгоритмов машинного обучения. Защита и тестирование моделей с использованием Python В рамках предыдущей статьи мы рассказали про такую проблему машинного обучения, как Adversarial примеры и некоторые виды атак, которые позволяют их генерировать. В данной статье речь пойдет об алгоритмах защиты от такого рода эффекта и рекомендациях по тестированию моделей....
[Перевод] Элегантная обработка ошибок в JavaScript с помощью монады Either Давайте немного поговорим о том, как мы обрабатываем ошибки. В JavaScript у нас есть встроенная функция языка для работы с исключениями. Проблемный код мы заключаем в конструкцию try...catch. Это позволяет прописать нормальный путь выполнения в разделе try, а затем разобрать...
[Из песочницы] Топ 20 ошибок при работе с многопоточностью на С++ и способы избежать их Привет, Хабр! Предлагаю вашему вниманию перевод статьи «Top 20 C++ multithreading mistakes and how to avoid them» автора Deb Haldar. Сцена из фильма «Петля времени (2012) Многопоточность— одна из наиболее сложных областей в программировании, особенно в C++. За годы разраб...
Как подключить галерею PhotoSwipe в WebView android Я не профессиональный разработчик, хотя и учился на программиста. Сейчас работаю системным администратором и планирую переходить в разработчики. Пишу для себя приложение, которое парсит один из популярных сайтов тематики IT и показывает статьи в нативном приложении android. ...
[Из песочницы] Подводные камни Java Здравствуйте. Хочу представить вашему вниманию небольшую статью. Цель данной публикации: Показать наиболее часто встречающиеся ошибки начинающих и некоторые приемы их исправления. Понятно, что некоторые ошибки могут быть сложными и происходить по тем или иным причинам. Цель...
Опыт перевода большого проекта с Flow на TypeScript JavaScript – это один из языков с динамической типизацией. Такие языки удобны для быстрой разработки приложений, но когда несколько команд берутся за разработку одного большого проекта, лучше с самого начала выбрать один из инструментов для проверки типов. Можно начать р...
Kubernetes Operator на Python без фреймворков и SDK Go на данный момент является монополистом среди языков программирования, которые люди выбирают для написания операторов для Kubernetes. Тому есть такие объективные причины, как: Существует мощнейший фреймворк для разработки операторов на Go — Operator SDK. На Go написа...
Не Spring Boot’ом единым: обзор альтернатив В настоящее время нет недостатка во фреймворках для создания микросервисов на Java и Kotlin. В статье рассматриваются следующие: Название Версия Год первого релиза Разработчик Helidon SE 1.1.1 2019 Oracle Ktor 1.2.1 2018 JetBrains Micronaut 1.1.3 2018 Object Compu...
Используем SQLite в Flutter Привет, Хабр! Представляем вашему вниманию перевод статьи «Using SQLite in Flutter». Сохранение данных очень важно для пользователей, так как нецелесообразно грузить одни и те же данные из сети. Разумнее будет сохранить их локально. В этой статье я продемонстрирую как с...
Экзамены по Azure На мероприятии в сентябре 2018 было анонсировано, что появились новые экзамены серии AZ-***, а серия 70-53* уйдет в небытие. Описание уже было тут, но эта статья про все изменения, а мне бы хотелось сделать обзор только Azure. Кроме того, в декабре 2018 года были дополнитель...
Зачем вам учить Go Источник картинки Go — относительно молодой, но популярный язык программирования. По данным опроса Stack Overflow, именно Golang получил третье место в рейтинге языков программирования, которые хотели бы освоить разработчики. В этой статье мы попробуем разобраться в причина...
[Перевод] Как встроить С-библиотеку в Swift-фреймворк В 2014 году был представлен Swift, новый язык для разработки приложений экосистемы Apple. Новинка принесла не только новые возможности и функции, но и проблемы — тем, кто хотел пользоваться старыми добрыми C-библиотеками. В этой статье я рассмотрю одну из них — бандлинг C-...
Хабрамегарейтинг: лучшие статьи и статистика Хабра за 12 лет. Часть 1/2 Привет Хабр. После публикации рейтинга статей за 2017 и 2018 год, следующая идея была очевидна — собрать обобщенный рейтинг за все годы. Но просто собрать ссылки было бы банально (хотя и тоже полезно), поэтому было решено расширить обработку данных и собрать еще немного пол...
[Перевод] Новое в Java 12: The Teeing Collector В этой статье мы рассмотрим новый коллектор, представленный в Java 12. Эта новая функция не была анонсирована в официальном JEP, поскольку это был минорный change request с заголовком "Create Collector, which merges the results of two other collectors". Она предназначена для...
[Перевод] Как мы при помощи WebAssembly в 20 раз веб-приложение ускорили В этой статье рассматривается кейс по ускорению браузерного приложения через замену вычислений JavaScript на WebAssembly. Читать дальше →
Модернизация IDA Pro. Отладчик для Sega Mega Drive (часть 2) Привет всем, В предыдущей статье мы успешно модифицировали ядро эмулятора игр на Sega Mega Drive / Genesis, добавив в него возможность отладки. Теперь пришёл черёд написания собственно плагина-отладчика для IDA Pro, версия 7.0. Приступим. Читать дальше →
[Перевод] Особенности рендеринга в игре Metro: Exodus c raytracing Предисловие После выхода последней игры из серии «Метро» я потратил несколько часов на изучение её внутренней работы и решил поделиться тем, что может показаться интересным с технологической точки зрения. Я не буду проводить подробный анализ или изучать дизассемблированный ...
NLP. Основы. Техники. Саморазвитие. Часть 2: NER Первую часть статьи об основах NLP можно прочитать здесь. А сегодня мы поговорим об одной из самых популярных задач NLP – извлечении именованных сущностей (Named-entity recognition, NER) – и разберем подробно архитектуры решений этой задачи. Читать дальше →
QEMU.js: теперь по-серьёзному и с WASM Когда-то давно я смеха ради решил доказать обратимость процесса и научиться генерировать JavaScript (а точнее, Asm.js) из машинного кода. Для эксперимента был выбран QEMU, некоторое время спустя была написана статья на Хабр. В комментариях мне посоветовали переделать проект ...
Хакеры в рамках законов РФ После публикации статьи о моих исследования в качестве Grey hat, в комментариях к статье и в чате Telegram (@router_os) люди стали писать, что я нарушил все законы и меня посадят. И как обещал, спустя несколько месяцев я пишу эту статью и даже не из камеры СИЗО :-) Более т...
Игра фреймворков: тренды JavaScript в 2019 TypeScript против ES6, React против Angular, Jest против Mocha… Не хуже нашумевшего сериала, эти «битвы» держат поклонников JavaScript в напряжении, заставляя их задумываться: «Что же учить дальше?» К тому же, армии пользователей каждой из технологий приводит настолько убеди...
[Перевод] Пишем операционную систему на Rust. Реализация страничной памяти (новый вариант) В этой статье разберёмся, как реализовать поддержку страничной памяти в нашем ядре. Сначала изучим различные методы, чтобы фреймы физической таблицы страниц стали доступны ядру, и обсудим их преимущества и недостатки. Затем реализуем функцию преобразования адресов и функцию ...
Строительные блоки распределенных приложений. Второе приближение Анонс Коллеги, в середине лета я планирую выпустить еще один цикл статей по проектированию систем массового обслуживания: “Эксперимент VTrade” — попытка написать фреймворк для торговых систем. В цикле будет разобрана теория и практика построения биржи, аукциона и магазина. В...
Собираем логи из Nginx, отправляем в Clickhouse и отбражаем в Grafana В этой статье будет рассматриваться проект nginx-clickhouse, который будет читать логи nginx, отправлять их в clickhouse. Для просмотра аналитики по логам есть дашбоард для Grafana. Читать дальше →
Криптографические токены PKCS#11: просмотр и экспорт сертификатов, проверка их валидности В комментариях к статье «Англоязычная кроссплатформенная утилита для просмотра российских квалифицированных сертификатов x509» было пожелание от пользователя Pas иметь не только «парсинг сертификатов», но и получать «цепочки корневых сертификатов и проводить PKI-валидацию, х...
[Из песочницы] Рецензия на перевод «Если софт создаётся на общественные деньги, код должен быть открыт» Прочитал статью-перевод «Если софт создаётся на общественные деньги, код должен быть открыт» которая вызвала двоякое чувство. С одной стороны идея кажется правильной, но в статье описано несколько принципиальных проблем, которые вольно или невольно оказывают читателям медвеж...
[Перевод] Как сделать ваш HTML отзывчивым, добавив одну строку кода на CSS Привет, Хабр! представляю вашему вниманию перевод статьи «How to make your HTML responsive by adding a single line of CSS» автора Per Harald Borgen. В этой статье я научу вас, как использовать CSS Grid для создания крутой сетки изображений, которая изменяет количество сто...
[Из песочницы] Краткое пособие для изучающих иностранный язык Доброго дня, уважаемое сообщество! К написанию этой статьи меня подтолкнула публикация уважаемого Mumlum Как выучить иностранный язык. Подумалось о том, что мой опыт может кому-то пригодиться. Для начала очень коротко о себе: мне 39 лет, 14 из которых я живу заграницей. В...
[Перевод] Рендеринг кадра Resident Evil 2 Общие примечания Все результаты получены на довольно старой машине (i7 3770+GTX 770), игра запускалась в DirectX 11 со средним качеством. Для анализа использовались RenderDoc и Nsight. Игра работает на движке Re Engine, ставшем наследником MT Framework — движка предыдущего...
Web — javascript authentication, obfuscation и native code. Решение задач с r0от-мi —. Client. Часть 1 Данная статья содержит решений заданий, в которых рассматриваются аутентификация javascript, обфускация javascript и javascript native code. Организационная информацияСпециально для тех, кто хочет узнавать что-то новое и развиваться в любой из сфер информационной и компьют...
Алгоритм мышления и сознания, часть 2 Данный текст содержит пояснения к алгоритму из моей первой статьи “Алгоритм мышления и сознания”. Тезисы первой статьи: Феномен субъективного мышления можно алгоритмизовать. Предъявленный в статье алгоритм мыслит и этим можно воспользоваться практически. С помощью алгорит...
Разработка простейшей «прошивки» для ПЛИС, установленной в Redd. Часть 2. Программный код Итак, в прошлой статье мы разработали простейшую процессорную систему, с помощью которой планируем провести тест микросхемы ОЗУ, подключённой к ПЛИС комплекса Redd. Сегодня же мы сделаем для этой аппаратной среды программу на языке С++, а также разберёмся, как эту программу ...
Язык программирования Ü. Введение, мотивация к созданию, цели Введение С 2016-го года (с перерывами) я разрабатываю собственный язык программирования. Название данного языка — «Ü». Почему Ü? Потому, что хотелось однобуквенного названия, а все буквы из набора A-Z уже заняты. Данная статья имеет задачу ознакомить публику с данным языко...
EFORTH для МК-161: Структуры данных Эта статья — окончание цикла статей про eForth на программируемом калькуляторе. Начало здесь: habr.com/ru/post/452398 Команды входного языка «Электроники МК-161» занимают только половину файла eForth0.mkl. Вторую половину занимают таблицы, разработать которые был не меньший...
[Из песочницы] Переносим проект с Swift 4.2 на Swift 5.0 Привет, Хабр! Представляю вашему вниманию перевод статьи «Swift 5.0: How to migrate your project and frameworks» автора Antoine Van Der Lee. Swift 5.0 был выпущен в марте 2019 года и является первым стабильным выпуском ABI Swift. Несмотря на то, что многие ресурсы освещают ...
[Перевод] Как написать смарт контракт на WebAssembly в сети Ontology? Часть 2: С++ В этой статье мы разберем на двух примерах, как написать смарт контракт на языке C++, используя WASM на основе блокчейн сети Ontology. Сегодня, после нескольких месяцев стабильной работы в тестовом режиме, Ontology запустила WASM в основной сети, что позволяет безболезненн...
Хитрости в Machine Learning — работа с несколькими моделями в Keras Это моя первая статья по теме Машинное обучение. С недавнего времени я профессионально занимаюсь машинным обучением и компьютерным зрением. В этой и будущих статьях я буду делиться наблюдениями и решениями специфических проблем при использовании TensorFlow и Keras. В этой ст...
[Из песочницы] Изучение комбинаторных парсеров с Rust Привет, Хабр! Представляю вашему вниманию перевод статьи "Learning Parser Combinators With Rust". Эта статья учит основам комбинаторных парсеров людей, которые уже знакомы с Rust. Предполагается, что никаких других знаний не требуется, а всё, что не имеет прямого о...
Signpost: когда брейкпоинтов недостаточно В предыдущей статье мы узнали о причинах нестабильности unit-тестов и способах борьбы с этим. Теперь мы хотим рассмотреть один из новых инструментов Apple для отладки и профилирования кода. Речь о представленном на WWDC 2018 фреймворке для логирования os_log, который был рас...
Взгляд со стороны EcmaScript на общую теорию ООП Привет, Хабр! До сего дня я занимался лишь переводами интересных, на мой взгляд, статей англоязычных авторов. И вот настала пора самому что-то написать. Для первой статьи я выбрал тему, которая, я уверен, будет полезна junior-разработчикам, стремящимся дорасти до «мидлов»,...
Создание таблиц в дизайн системе Figma и реализация в Storybook (React) В предыдущей статье на тему дизайна таблиц в Фигме мы выяснили, что базовый элемент создания любого data grid — это компонент ячейки, внутри которого спрятано все необходимое для того, чтобы оставаться в одном экземпляре и строить таблицы ячейка-за-ячейкой. Теперь поговори...
Идиоматичное программирование GPU на Rust: Библиотека Emu Введение Emu — это высокоуровневый язык программирования видеокарт, способный встраиваться в обычный код на системном языке программирования Rust. В данной статье речь пойдёт о синтаксисе Emu, его особенностях, а также будут показаны несколько наглядных примеров его использ...
[Из песочницы] Объектно-ориентированное программирование в Java и Python: сходства и отличия Привет, Хабр! Представляю вашему вниманию перевод статьи “Object-Oriented Programming in Python vs Java” автора Джона Финчера. Реализация объектно-ориентированного программирования (ООП) в языках Java и Python отличается. Принцип работы с объектами, типами переменных и прочи...
Рекомендательная система для Directum Club. Часть первая, коллаборативная Каждый день пользователи по всему миру получают большое количество различных рассылок — только через сервис MailChimp ежедневно рассылают миллиард писем. Из них открывают 20.81%. Ежемесячно пользователи наших сайтов получают рассылки с отобранными редактором материалами. Эти...
Личный опыт и выводы после смены профессии с дизайнера на программиста О чем эта статья По сути статья о том каким образом мой образ мысли должен был поменяться при смене профессии, понимание контекста и того на какие моменты стоит обращать внимание, а так же насколько сильно выбор "что же мне учить" влияет на последубщие годы развития личной к...
[Перевод] Выравнивание лица за одну миллисекунду с помощью ансамбля деревьев регрессии Перевод статьи подготовлен для студентов курса «Математика для Data Science» Аннотация В этой статье рассматривается задача выравнивания лица для одного изображения. Мы покажем, как ансамбль деревьев регрессии можно использовать для прогнозирования положения ориентиров лиц...
[Из песочницы] Как создать 2D игру с Python и аркадной библиотекой Привет, Хабр! представляю вашему вниманию перевод статьи How to create a 2D game with Python and the Arcade library автора Paul Vincent Craven Как создать 2D игру с Python и аркадной библиотекой Узнайте, как начать работу с Arcade, простой в использовании библиотеки Python д...
Один день из жизни модели ресторана Данная статья описывает новые компоненты фреймворка для имитационного моделирования, ранее представленного в статье «Простая система имитационного моделирования на Go». По мере расширения фреймворка появилась возможность моделировать более сложные системы, например, провест...
Как выглядит zip-архив и что мы с этим можем сделать. Часть 2 — Data Descriptor и сжатие Продолжение статьи Как выглядит zip-архив и что мы с этим можем сделать. Предисловие Доброго времени суток. И снова в эфире у нас нетрадиционное программирование на PHP. В прошлой статье уважаемых читателей заинтересовала тема сжатия в ZIP и сохранение потоков в zip. Попробу...
[Перевод] Как я сдал сертификационный экзамен Google Cloud Professional Data Engineer Без рекомендуемого 3-х летнего практического опыта В преддверии старта занятий по курсу «Data Engineer», хотим поделиться с Вами переводом одной очень интересной истории, которая наверняка будет полезна будущим дата инженерам. Поехали! Худи от Google: надето. Серьезное раб...
[Из песочницы] Имплементация кэша на Verilog В данной статье разбор простейшей реализации RAM на языке Verilog. Перед тем, как перейти к разбору кода, рекомендуется изучить базовый синтаксис языка Verilog. Здесь вы можете найти обучающие материалы. Читать дальше →
Кармическое проклятье Хабра Непредвиденные последствия «Система кармы Хабра и ее влияние на пользователей» — это тема для курсовой как минимум Тема про карму на «Пикабу» Я мог бы начать эту статью с того, что я давно читаю Хабр, но это будет не совсем точным высказыванием. Правильный тезис звучал б...
ShIoTiny: вентиляция влажного помещения (проект-пример) Основные тезисы или о чем эта статья Продолжаем цикл статей о ShIoTiny — визуально программируемом контроллере на базе чипа ESP8266. В этот статье рассказано на примере проекта управления вентиляции в ванной комнате или другом помещении с повышенной влажностью о том, как ...
[Из песочницы] Быстрая интеграция с 1С: Предприятие В данной статье я расскажу о наиболее простом, на мой взгляд, способе интеграции сторонних приложений с конфигурациями 1С. Статья будет интересна в первую очередь разработчикам, пишущим на .Net Core, PHP и Python. Способов интеграции с 1С известно много, этому даже посвящен...
Основы формата GLTF и GLB, часть 2 Данная статья является продолжением рассмотра основ GLTF и GLB форматов. Вы можете найти первую часть статьи здесь. В первой части мы рассмотрели с вами зачем изначально планировался формат, а также такие артефакты и их атрибуты GLTF формата как Scene, Node, Buffer, BufferVi...
Категории выражений в C++ Категории выражений, такие как lvalue и rvalue, относятся, скорее, к фундаментальным теоретическим понятиям языка C++, чем к практическим аспектам его использования. По этой причине многие даже опытные программисты достаточно смутно представляют себе, что они означают. В это...
[Из песочницы] Визуализация времени возрождения Рошана В данной статье рассматривается перехват функций графического API на примере DirectX 9 под x64 применительно к игре Dota 2. Будет подробно рассказано, как внедриться в процесс игры, как изменить поток выполнения, приведено краткое описание внедряемой логики. В конце поговор...
[Перевод] Нейросети и философия языка Почему теории Витгенштейна остаются основой всего современного NLP Векторное представление слов — пожалуй, одна из самых красивых и романтичных идей в истории искусственного интеллекта. Философия языка — это раздел философии, исследующий связь между языком и реальностью и ...
Сложность простоты Как я писал в предисловии предыдущей статьи, я нахожусь в поисках языка, в котором я мог бы писать поменьше, а безопасности иметь побольше. Моим основным языком программирования всегда был C#, поэтому я решил попробовать два языка, симметрично отличающиеся от него по шкале ...
NLP. Основы. Техники. Саморазвитие. Часть 1 Привет! Меня зовут Иван Смуров, и я возглавляю группу исследований в области NLP в компании ABBYY. О том, чем занимается наша группа, можно почитать здесь. Недавно я читал лекцию про Natural Language Processing (NLP) в Школе глубокого обучения – это кружок при Физтех-школе п...
Стохастический градиентный спуск(SGD) для логарифмической функции потерь(LogLoss) в задаче бинарной классификации Предыдущая часть (про линейную регрессию, градиентный спуск и про то, как оно всё работает) — habr.com/ru/post/471458 В этой статье я покажу решение задачи классификации сначала, что называется, «ручками», без сторонних библиотек для SGD, LogLoss'а и вычисления градиентов, ...
Разрабатываем приложение, которое отсылает данные другим приложениям (экосистемное приложение) Привет, хаброжители! Это моя вторая статья про разработку своего проекта. Тем, кто не читал предыдущая статейку: она про то, как из одного места (гугл таблицы) автоматически экспортировать данные в другое (ноушн). Сегодня я расскажу, как я писал (и проектировал) библиотеку...
Huawei: Защита плоскости управления В статье рассматриваются аспекты защиты плоскости управления маршрутизаторов Huawei NE Series. Примеры приведены для NE40e, с программным обеспечением: VRP V800R008. На других типах маршрутизаторов (например NE5k) и с другой версией ПО, конфигурация может несколько отличатьс...
Check Point Maestro Hyperscale Network Security — новая масштабируемая security платформа Компания Check Point довольно резво начала 2019 год сделав сразу несколько анонсов. Рассказать обо всем в одной статье не получится, поэтому начнем с самого главного — Check Point Maestro Hyperscale Network Security. Maestro это новая масштабируемая платформа, которая позв...
Как взять сетевую инфраструктуру под свой контроль. Часть третья. Сетевая безопасность. Продолжение Это вторая часть главы «Сетевая безопасность» (которая в свою очередь является третьей частью цикла статей «Как взять сетевую инфраструктуру под свой контроль»). В первой части этой главы мы рассмотрели некоторые аспекты сетевой безопасности сегмента «Data Center». Эта глава...
Часть вторая. Как проходить code review по версии Google Возможно вы читали первую часть статьи про код ревью со стороны ревьювера (кстати, мы уже успели ее обсудить в последнем выпуске подкаста "Цинковый прод"). Так как статья набрала много лайков, пишу обещанное продолжение про код ревью с другой стороны — со стороны автора из...
Байт-машина для форта (и не только) по-индейски (часть 4) И снова я несколько переоценил объем статьи! Планировал, что это будет заключительная статья, где сделаем компилятор и выполним тестирование. Но объем оказался велик, и я решил разбить статью на две. В этой статье мы сделаем практически все основные функции компилятора. ...
Merkle Tree: ржавое и быстрое Всем привет! Недавно открыл для себя язык Rust. О своих первых впечатлениях поделился в предыдущей статье. Теперь решил копнуть немного глубже, для этого необходимо что-то посерьёзнее списка. Выбор мой пал на дерево Меркла. В этой статье я хочу: рассказать про эту структур...
Опровергаем четыре стереотипа о языке программирования Rust Язык программирования Rust, созданный и поддерживаемый корпорацией Mozilla, позволяет обычным программистам писать одновременно и безопасные и быстрые системы: от калькуляторов до высоконагруженных серверов. За своё относительно короткое время существования данный язык уже ...
[Перевод] UDB. Что же это такое? Часть 3. Datapath FIFO Продолжаем делать перевод фирменной документации фирмы Cypress на блоки UDB. Тем более, что всё очень удачно совпадает. Для продолжения практической статьи по UDB понадобится использование FIFO, а в теоретической части мы подобрались как раз к их описанию. Поэтому начинаем...
Метод дублирования. 11 примеров из конструкции ДВС Дублирование (от французского doubler удваивать) в системе это вид резервирования, имеющего минимальную избыточность. Статья эволюция развития автомобильных двигателей с начала 90-х годов вызвала интерес, и сильное обсуждение преобразований в двигателестроении. Эта стать...
Применение смарт-аккаунтов и смарт-ассетов Waves в финансовых инструментах В предыдущей статье мы рассмотрели несколько кейсов применения смарт-аккаунтов в бизнесе – включая аукционы и программы лояльности. Сегодня мы поговорим о том, как смарт-аккаунты и смарт-ассеты могут повысить прозрачность и надежность таких финансовых инструментов, как оп...
Пишем Reverse socks5 proxy на powershell.Часть 3 История об исследовании и разработке в 3-х частях. Часть 3 — практическая. Буков много — пользы еще больше Предыдущие статьи из цикла можно найти тут и здесь =) Проверка боем Давайте теперь проверим работу нашего скрипта на практике. Для этого попробуем выбросить обратный ...
Ассортимент филамента компании RkGadget.ru В этой статье мы рассмотрим ассортимент филаментов, которые можно приобрести у нашей компании на данный момент. Данная статья будет интересна новичкам, которые могут, немного, узнать о типах филаментов, а так же бывалым пользователям 3D печати, но уже с целью найти качествен...
Фракталы в иррациональных числах. Часть 2 Часть 0: Фракталы в простых числах. Часть 1: Фракталы в иррациональных числах. В статье присутствуют Gif и контрастные картинки. У эпилептиков может случиться эпилептический припадок. Читать дальше →
Алгоритм взаимодействия сотен тысяч уникальных частиц на GPU, в GLES3 и WebGL2 Описание алгоритма логики, и разбор рабочего примера в виде техно-демки-игры WebGL2 версия этой демки https://danilw.itch.io/flat-maze-web остальные ссылки смотрите в статье. Статья разбита на две части, сначала про логику, и вторая часть про применение в игре, первая часть...
MPPT контроллер заряда на STM32F334C8T6 В комментариях под моими предыдущими статьями неоднократно возникал вполне резонный вопрос: "Зачем делать dc/dc преобразователи на микроконтроллере, когда есть готовые?" и я в качестве ответа постоянно упоминал, как наиболее яркий пример, контроллер заряда с алгоритмом MPPT....
Перепрограммируем кассу и печатаем на ней Киану Ривза. Часть 2. ПО для ПК В предыдущей статье я кратко описал свою прошивку для ККТ ШТРИХ-ФР-К, которая позволяет управлять термоголовкой, движками и соответственно выводить на печать все что угодно. В этой части я покажу как написать софт, который будет общаться с кассой и форматировать картинку для...
Библиотека генератора ассемблерного кода для микроконтроллеров AVR. Часть 2 Библиотека генератора ассемблерного кода для микроконтроллеров AVR Часть 2. Начало работы Как и планировалось, в этой части рассмотрим более подробно особенности программирования с использованием библиотеки NanoRTOS. Те, кто начал чтение с этого поста, могут ознакомиться с о...
Разработка hexapod с нуля (часть 4) — математика траекторий и последовательности Всем привет! Разработка гексапода продвинулась на еще один шаг. На этот раз реализованы и протестированы траектории движения конечности — очередная часть математики передвижения. В этой статье я расскажу об этих траекториях и базовых последовательностях для движения. Надеюс...
Подборка: 5 книг по маркетингу, которые нужно прочитать основателю стартапа Создание и развитие новой компании – всегда непростой процесс. И одна из главных сложностей зачастую заключается в том, что основатель проекта поначалу вынужден погружаться в самые разные области знаний. Он должен улучшать сам продукт или услугу, выстроить процесс продаж, ...
[Перевод] Пишем HTTP/1.1 & HTTP/2 клиент и сервер на Golang Golang — отличный язык программирования с широким спектром возможностей. В этой статье показано, как на Go можно написать клиент и сервер для протоколов HTTP/1.1 и HTTP/2. Читать дальше →
[Из песочницы] Proof-Of-Work эффективен Привет, Хабр! Представляю вашему вниманию перевод статьи «PoW is Efficient» автора Dan Held. Вступление Большинство людей думает, что энергия, потраченная на Proof-Of-Work (далее PoW), тратится впустую. В этой статье я расскажу, почему все основано на энергии, включая деньг...
Облачный Умный Дом. Часть 2: Облачный сервис Продолжаю цикл из трех статей об облачном умном доме. В предыдущей статье было рассмотрено оборудование для очувствления умного дома, а также алгоритмы преобразования сенсорных данных в управляющие команды для исполнительных устройств. Основным компонентом умного дома явл...
ScrumBut в команде аналитиков: перед взлётом Привет, Хабр! Меня зовут Женя. Я системный аналитик компании «НОРБИТ» и начинающий Scrum-мастер. Я давно присматривалась к Scrum с целью изучить, попробовать и оценить его возможности в нашей команде аналитиков. И вот, после легкого пинка воодушевляющего разговора с РП я пон...
Парадокс Питона (The Python Paradox) В последнем выпуске подкаста "Цинковый прод" помимо всего прочего обсуждался так называемый парадокс Питона (The Python Paradox). Как ни странно, на Хабре нет практически ни одного упоминания об этом парадоксе. При том, что, несмотря на свою простоту, мысль очень интересная...
[Из песочницы] Особенности настройки DPI В данной статье не рассматривается полная настройка DPI и все вместе связанное, а научная ценность текста минимальна. Но в ней описывается простейший способ обхода DPI, который не учли многие компании. Читать дальше →
Часть 5/2 корп. 1: Перекрёсток проспекта RocketChip и скользкой дорожки инструментации В предыдущих четырёх частях велась подготовка к экспериментам с RISC-V ядром RocketChip, а именно, портирование этого ядра на «нестандартную» для него плату с ПЛИС фирмы Altera (теперь уже Intel). Наконец, в прошлой части на этой плате получилось запустить Linux. Знаете, что...
Решение задания с pwnable.kr 11-coin1, 12-blackjack, 13-lotto. Ошибки в логике приложений В данной статье рассмотрим решения 3-х заданий с сайта pwnable.kr. Организационная информацияСпециально для тех, кто хочет узнавать что-то новое и развиваться в любой из сфер информационной и компьютерной безопасности, я буду писать и рассказывать о следующих категориях: ...
Ликбез по электротравмам (часть вторая): лонгрид о первой помощи и реанимации По многочисленным просьбам, рассказываем о первой помощи при поражении электрическим током. Напомню, что мы намеренно коснулись этой темы в связи с участившимися сообщениями в СМИ об электротравмах, полученных при использовании смартфонов, наушников и др. гаджетов. В пособия...
[Из песочницы] Изучить отзывчивый веб-дизайн за 5 минут Привет, Хабр! Представляю вашему вниманию перевод статьи «Learn responsive web design in 5 minutes» автора Per. В этой статье я научу вас многим приёмам отзывчивого дизайна за 5 минут. Этого, очевидно, недостаточно для правильного изучения, но здесь вы найдёте обзор на след...
Роботизация может вести к диктатуре Предыдущая статья на тему замены человека роботом получила большое количество комментариев. Получается, тема живая не только в наших головах. Поскольку мы сами вносим вклад в роботизацию как в контексте обучения в нашей Школе, так и в контексте проектов, которые мы делае...
[Перевод] (Справа налево (Зазеркалье Кажется, с заголовком что-то не так? Это одна из проблем, с которыми сталкиваются веб-разработчики при добавлении поддержки таких языков, как арабский. В этой статье расскажем о проблемах, с которыми мы столкнулись, и решениях, которые придумали для поддержки арабского язык...
Универсальный пул У нас есть ArrayPool для переиспользования массивов. Работает это так: взяли массив определенной длинны что то с ним поделали и положили обратно. Нужно это для больших объектов которые по логике программы долго не должны храниться. В предыдущей статье описана эта проблема. ...
[Перевод] Тестирование инфраструктуры как код с помощью Pulumi. Часть 2 Всем привет. Сегодня делимся с вами заключительной частью статьи «Тестирование инфраструктуры как код с помощью Pulumi», перевод которой подготовлен специально для студентов курса «DevOps практики и инструменты». Тестирование развертывания Рассмотренный стиль тестирования —...
[recovery mode] ShIoTiny: часы без пружины или реальное время и как с ним работать О чем эта статья Продолжаем цикл статей о ShIoTiny — визуально программируемом контроллере на базе чипа ESP8266. В этот статье рассказано о часах реального времени в контроллере ShIoTiny, синхронизации времени и использовании узлов работы с часами. Сайт проекта ShIoTiny...
[Из песочницы] Согласие на обработку данных по GDPR: подробный разбор GDPR (или «Регламент») содержит несколько оснований для обработки персональных данных. Эти основания можно условно разделить на две большие группы. Это обработка на основании личного согласия носителя (владельца) персональных данных, и обработка на иных основаниях. В данно...
[Перевод] 10 советов и приемов, которые помогут вам стать лучшим разработчиком на VueJS Перед вами вольный перевод статьи 10 Tips & Tricks to make you a better VueJS Developer с сайта Dev.to. Автор расскажет нам об интересных и полезных вариантах применения привычных нам средств VueJS. Введение Мне действительно нравится работать с VueJS и каждый раз, когда...
[recovery mode] Простота и cложность примитивов или как определить ненужный препроцессинг для нейронной сети Это третья статья по анализу и изучению эллипсов, треугольников и других геометрических фигур. Предыдущие статьи вызвали у читателей несколько очень интересных вопросов, в частности о сложности или простоте тех или иных обучающих последовательностей. Вопросы на самом деле оч...
[Из песочницы] Лучшие практики React и советы, которые каждый разработчик должен знать. Часть 1 Привет, Хабр! Представляю вашему вниманию перевод статьи «React Best Practices & Tips Every React Developer Should Know Pt.1» автора Alex Devero. React — одна из самых популярных библиотек для построения интерактивных пользовательских интерфейсов. В этой статье я пока...
TheOutloud — озвучивай и делись любимыми статьями и историями Привет всему сообществу, Habr! Уже некоторое время я являюсь вашим читателем и сегодня решил, что пришло время для моего первого поста здесь. Я давно хотел научиться программировать и последние пару месяцев проводил все свободное время, просматривая обучающие ролики на yout...
РНР-безопасность: где и как хранить пароли. Часть 2 Всем привет! На прошлой неделе мы опубликовали первую часть данной статьи, чем вызвали нешуточный холивар. Одной из главных претензий было отсутствие в статье упоминания password_hash, как мы и обещали, вторую часть данного материала начнем как раз таки с хеширования парол...
[Перевод] Обзор AI & ML решений в 2018 году и прогнозы на 2019 год: Часть 2 — Инструменты и библиотеки, AutoML, RL, этика в AI Всем привет! Представляю вам перевод статьи Analytics Vidhya с обзором событий в области AI / ML в 2018 году и трендов 2019 года. Материал довольно большой, поэтому разделен на 2 части. Надеюсь, что статья заинтересует не только профильных специалистов, но и интересующихся т...
[Перевод] Современная игра для NES, написанная на Lisp-подобном языке What Remains — это повествовательная игра-адвенчура для 8-битной видеоигровой консоли NES, выпущенная в марте 2019 года как бесплатный ROM, запускаемый в эмуляторе. Она создавалась небольшой командой Iodine Dynamics на протяжении двух лет с перерывами. В настоящий момент игр...
[Из песочницы] Три Больших Лжи о JavaScript Привет, Хабр! Представляю вашему вниманию мой перевод статьи "The Three Big Lies About JavaScript" автора Richard Kenneth. Данная статья была написана в мае 2016 года, однако ее актуальность, на мой взгляд, не исчезла. Я начинающий программист, поэтому возможны оши...
[recovery mode] Сбалансированные показатели сайта. Часть 3: Контент В этой статье мы разберем еще один блок показателей сайта, который входит в нашу схему. Речь пойдет о контенте, я вынес его специально в отдельную статью, поскольку это один из самых важных и трудоемких в плане развития факторов продвижения. Читать дальше →
[Из песочницы] Замена Punto Switcher, раскладки Бирмана с помощью скрипта на autohotkey В данной статье я не предлагаю полностью заменить Punto Switcher (Спасибо Сергею Москалёву за данную программу), а только в очень ограниченном функционале. Довольно давно пользуюсь программой Punto Switcher, но не в целях автопереключения, а как переключатель по левому и пра...
[Из песочницы] Синтаксический разбор предложения на русском языке В данной статье описывается процесс синтаксического анализа предложения русского языка с использованием контекстно-свободной грамматики и алгоритма LR-анализа. Обработка естественного языка — общее направление искусственного интеллекта и математической лингвистики. Оно изуч...
Про установку и использование LineageOS 16, F-Droid Предлагаю вашему вниманию инструкцию как оптимально(по моему мнению) перейти на свободное программное обеспечение при использовании смартфона на примере операционной системы LineageOS(далее сокращённо LOS) и приложений из F-Droid. Я думаю, что это статья будет вам интересна,...
[Из песочницы] WWDC19: Приступим к работе с Test Plan для XCTest Привет, Хабр! Представляю вашему вниманию перевод статьи «WWDC19: Getting Started with Test Plan for XCTest» автора Shashikant Jagtap. На прошедшей конференции WWDC компания Apple показала новые классные фичи для разработчиков. В Xcode 11 так же добавлено несколько потряс...
Как сделать солнечный фонарик своими руками (часть 2) В предыдущей статье были рассмотрены нюансы сборки классических солнечных фонариков на столбике. В этой статье я хочу поделиться моим опытом сборки настольных солнечных фонариков – ночников и штучных, можно сказать «пафосных» солнечных фонариков на основе готовых, или хрус...
Вход в Aeronet, эпизод 2: Самонаводящийся дрон В предыдущей статье мы рассмотрели порядок действий для запуска в воздух автономного виртуального дрона. Под руководством преподавателя по этой инструкции удаётся запустить дрон даже школьникам. Возникает вопрос: а что дальше? Ну, дрон, ну взлетел. Тем более, виртуальный – ...
Kali Linux NetHunter на Android Ч.2: атаки на беспроводные сети Предыдущие статьиKali Linux NetHunter на Android: зачем и как установить И снова здравствуй, мой любознательный друг! Как ты, наверняка, помнишь, в прошлой статье мы говорили об установке NetHunter на Android устройство. Сейчас мы займемся практической частью и обзором возм...
OpenSceneGraph: Интеграция с фреймворком Qt Введение С одной стороны движок OpenSceneGraph и сам по себе обладает развитой подсистемой управления окнами, обработки событий пользовательского ввода, отправки и приема пользовательских сообщений. Об этом мы довольно подробно поговорили в предыдущих статьях этого цикла. ...
8 ошибок в произношении английских звуков, которые делает большинство русскоговорящих Во время изучения иностранных языков много внимания уделяют произношению звуков и слов. Правильное произношение ставят долго — за несколько занятий поймать правильное звучание слов практически невозможно. Причина очень проста. Звуки и звукообразование в разных языках отли...
[Перевод] Что я узнал про оптимизацию в Python Всем привет. Сегодня хотим поделиться еще одним переводом подготовленным в преддверии запуска курса «Разработчик Python». Поехали! Я использовал Python чаще, чем любой другой язык программирования в последние 4-5 лет. Python – преобладающий язык для билдов под Firefox, те...
Окей, Google: как пройти капчу? Здравствуйте. Меня зовут Ибадов Илькин, я студент Уральского федерального университета. В данной статье я хочу рассказать о своем опыте автоматизированного решения капчи компании «Google» — «reCAPTCHA». Хотелось бы заранее предупредить читателя о том, что на момент написани...
О локализации продуктов. Часть 2: как формируется цена? Во второй части статьи нашего технического писателя Андрея Старовойтова мы посмотрим, как именно формируется цена за перевод технической документации. Если не хочется читать много текста, смотрите сразу раздел «Примеры» в конце статьи. С первой частью статьи можно ознаком...
Как мы тестируем Сбербанк Онлайн на iOS В предыдущей статье мы познакомились с пирамидой тестирования и тем, какую пользу несут автоматизированные тесты. Но теория, как правило, отличается от практики. Сегодня мы хотим рассказать о своем опыте тестирования кода приложения, которым пользуются миллионы пользовател...
[Из песочницы] Ограничения машинного обучения Привет, Хабр! Представляю вашему вниманию перевод статьи “The Limitations of Machine Learning“ автора Matthew Stewart. Большинство людей, читающих эту статью, вероятно, знакомы с машинным обучением и соответствующими алгоритмами, используемыми для классификации или прогнози...
10 лайфхаков разработки рекомендательных систем В предыдущей статье мы обсудили основы устройства рекомендательных систем и кейсы использования. Узнали, что основной принцип заключается в рекомендации товаров, понравившихся людям с похожим вкусом, и применении алгоритма коллаборативной фильтрации. В данной статье, будут ...
[Из песочницы] Изменяем содержимое нотификации приложения iOS Привет! В этой статье я хочу поделиться своим опытом использования одного не очевидного (по крайней мере для меня) варианта изменения текста уведомления приложения, отправкой дополнительных данных через UNUserNotificationCenter. Я надеюсь эта статья будет полезна для нович...
Алгоритм триангуляции Делоне методом заметающей прямой Доброго времени суток! В этой статье я подробно опишу алгоритм, который у меня получился в результате использования идеи «заметающей прямой» для построения триангуляции Делоне на плоскости. В нем есть несколько идей, которые я нигде не встречал, когда читал статьи про триан...
Феном, пингвин и оверклокинг (часть 1) Статья в трех частях о личном опыте разгона старого железа под Линукс. Сначала, подбор инструментария, потом обзор железок и результаты тестов. Первая часть статьи - мониторинг различных параметров системы. Убунту и графический интерфейс с щепоткой командной строки и текстов...
[Перевод] Представляем «CLI Builder»-ы В этой статье мы рассмотрим новый API Angular CLI, который позволит вам расширять существующие возможности CLI и добавлять новые. Мы обсудим, как работать с этим API, и какие существуют точки его расширения, позволяющие добавлять новый функционал в CLI. Читать дальше →
[Из песочницы] Какой уровень востребованности PHP разработчиков на 1 квартал 2019 года? На рынке труда программисты PHP являются одними из наиболее востребованных специалистов. За последние 3 года их популярность среди работодателей выросла на более чем на 12%. PHP — самый распространенный язык программирования общего назначения с открытым исходным кодом, многи...
Software Defined Radio — как это работает? Часть 4 Привет Хабр. В третьей части было рассказано, как получить доступ к SDR-приемнику посредством языка Python. Сейчас мы познакомимся с программой GNU Radio — системой, позволяющей создать достаточно сложную конфигурацию радиоустройства, не написав ни единой строчки кода. Д...
[Из песочницы] Изучая go: пишем p2p мессенджер со сквозным шифрованием Yet another P2P Messenger Читать отзывы и документацию о языке не достаточно, чтобы научиться на нем писать более менее полезные приложения. Обязательно для закрепления нужно создать что-то интересное, чтобы наработки можно было бы использовать в других своих задачах. Стать...
Хабрастатистика: анализируем комментарии читателей. Часть 2, ответы на вопросы Привет Хабр. В предыдущей части были проанализированы сообщения пользователей этого сайта, что вызвало достаточно оживленную дискуссию на тему различных параметров (числа сообщений, рейтинга, «кармы» и пр). Таких вопросов накопилось достаточно, чтобы сделать вторую часть. ...
Линейная регрессия и методы её восстановления Источник: xkcd Линейная регрессия является одним из базовых алгоритмов для многих областей, связанных с анализом данных. Причина этому очевидна. Это очень простой и понятный алгоритм, что способствует его широкому применению уже многие десятки, если не сотни, лет. Идея зак...
[] 5 простых правил удобного для восприятия кода Ускользает понимание своего или чужого кода? Не можете вникнуть в алгоритм? Проводите кучу время в отладке, но найти место неверной инициализации не получается, а хочется получать удовольствие от кодирования? Вспомните о приведенных ниже правилах и примените их! В статье...
Устанавливаем GUI на Windows Server Core В прошлом нашем посте мы рассказали как готовим стандартные клиентские виртуальные машины и показали на примере нашего нового тарифа Ultralight за 120 рублей, как мы создавали стандартный образ Windows Server 2019 Core. В службу поддержки стали поступать заявки как работать...
Arend – язык с зависимыми типами, основанный на HoTT (часть 1) В данном посте мы поговорим о только что выпущенном JetBrains языке с зависимыми типами Arend. Этот язык разрабатывался JetBrains Research на протяжении последних нескольких лет. И хотя репозитории уже год назад были выложены в открытый доступ на github.com/JetBrains, полноц...
Смартфон на колесах: компактный китайский электромобиль СП производит для местного рынка американские модели GM с бензиновым двигателем, однако с некоторых пор в Китае действуют ограничения на эксплуатацию машин с ДВС, и потому электромобили, даже такого не слишком престижного вида (и при этом не очень дешевые), в Поднебесной ста...
Правда про парсинг сайтов, или «все интернет-магазины делают это» В этой статье я постараюсь наиболее просто рассказать о парсинге сайтов и его основных нюансах. Моя компания занимается парсингом сайтов уже более трёх лет и ежедневно мы парсим около 300 сайтов. Я обычно открыто пишу об этом в соц.сетях (плюс мы много чего из итогов парсинг...
Введение в Си. Послание из прошлого столетия ПРЕДИСЛОВИЕ Я несколько раз в своих комментариях ссылался ссылался на книгу Эндрю Таненбаума «Operating Systems Design and Implementation» на ее первое издание и на то, как в ней представлен язык Си. И эти комментарии всегда вызывали интерес. Я решил, что пришло время опубли...
Отчёты по состоянию СХД с помощью R. Параллельные вычисления, графики, xlsx, email и всё вот это В статье приведён код по формированию регулярных отчётов по состоянию дисков СХД EMC VNX с альтернативными подходами и историей создания. Старался писать код с максимально подробными комментариями и одним файлом. Только пароли свои подставить. Формат исходных данных также ук...
Анализируем тональность текстов с помощью Fast.ai В статье пойдет речь о классификации тональности текстовых сообщений на русском языке (а по сути любой классификации текстов, используя те же технологии). За основу возьмем данную статью, в которой была рассмотрена классификация тональности на архитектуре CNN с использование...
Заблуждения начинающих C# разработчиков. Пытаемся ответить на стандартные вопросы Недавно мне выпала возможность пообщаться с довольно большим количеством начинающих специалистов по разработке на языке C#. Многие из них интересуются языком и платформой, и это очень круто. Среди зеленых юниоров распространено мракобесие по поводу очевидных (только что проч...
RTOS или не RTOS вот в чем вопрос На написание данной статьи меня побудила длинная ветка комментариев (дискуссией это я назвать, к сожалению, не могу) к моей недавней статье “Многообразный мир embedded systems и место Embox в нем”. Меня в нескольких местах упрекнули в том, что я путаю RTOS и Embedded OS, чт...
[Из песочницы] Параметризация из файла в py.test В области автоматического тестирования можно встретить разные инструменты, так, для написания авто-тестов на языке Python одним из наиболее популярных решений на данный момент является py.test. Прошерстив множество ресурсов связанных с pytest и изучив документацию с официал...
Ещё один способ отстрелить себе ногу, используя std::thread Стандарт C++11 принёс в язык стандартный механизм поддержки тредов (их часто называют потоками, но это создаёт путаницу с термином streams, так что я буду использовать оригинальный англоязычный термин в русской транскрипции). Однако, как и любой механизм в C++, этот несёт в ...
[Из песочницы] ShIoTiny: малая автоматизация, интернет вещей или «за полгода до отпуска» Основные тезисы или о чем эта статья Так как интересы людей разные, а времени у людей мало, то кратко о содержании статьи. Статья эта представляет собой обзор проекта контроллера с минимальной ценой и возможностью визуального программирования посредством WEB-браузера. Пос...
Основы реактивного программирования с использованием RxJS. Часть 3. Higher Order Observables В данной статье мы рассмотрим, как можно в одном потоке обрабатывать другой, для чего это нужно, и как нам в этом помогут операторы Higher Order Observables (дальше HOO). При работе с потоками часто возникает ситуация, когда необходимо в качестве значения одному потоку пе...
[Перевод] Ленивая инициализация в Spring Boot 2.2 От переводчика: поскольку Spring Framework является одним из основных фреймворков, на которых мы строим CUBA, то новости о новых возможностях Spring не проходят незаметно для нас. Ленивая инициализация — один из способов уменьшить время первой загрузки приложения, что в наш...
Разработка сайта на WebAssembly с помощью NetCore 3 и Blazor Мое мнение, что WebAssembly будущее интернета. Данная технология на текущий момент уже интегрирована в большинство современных браузерах (а точнее в их движках) на ПК и мобильных устройствах. В таких браузерах как Chrome, Edge, Firefox, и WebKit. В данной статье я опишу как ...
[Перевод] Пошаговое руководство по настройке DNS-сервера BIND в chroot среде для Red Hat (RHEL / CentOS) 7 Перевод статьи подготовлен для студентов курса «Безопасность Linux». Интересно развиваться в данном направлении? Смотрите запись трансляции мастер-класса Ивана Пискунова «Безопасность в Linux в сравнении с Windows и MacOS» В этой статье я расскажу о шагах по настройке DNS-с...
5 способов полезного использования Raspberry Pi. Часть вторая Привет Хабр. В первой части были рассмотрены 5 способов использования Raspberry Pi. Тема оказалась достаточно интересной, и сегодня я рассмотрю еще несколько вариантов того, как можно с пользой использовать этот микрокомпьютер. Фото с сайта learn.adafruit.com Как и в пре...
Как Мефодий стал Анной: опыт разработки и запуска классификаторов голосовых сообщений. Часть 2 Цель и задача Напомню, что в рамках первой статьи мы получили модель с удовлетворяющим нас качеством и пришли к выводу, что не стоит сразу строить нейронные сети, на некорректных данных большой пользы от этого не будет. Чтобы избежать потери времени и своих сил, достаточно п...
Самосинхронные схемы. Вычисление логических функций непосредственно по графу событий. Часть 3. Декомпозиция Напомню важный вывод из предыдущих частей. Для циклического последовательного поведения, не содержащего кратных сигналов (переключающихся за цикл более двух раз), минимальная логическая функция каждого сигнала может быть представлена в следующем виде (естественно при отсутст...
ShIoTiny и окружающий мир: аналоговые датчики или АЦП для самых маленьких Основные тезисы или о чем эта статья Продолжение серии статей о ShIoTiny — визуально программируемом контроллере на базе чипа ESP8266. Ключевой особенностью данного контроллера является возможность его программирования путем рисования программы в браузере. В данной статье о...
Основы реактивного программирования с использованием RxJS. Часть 2. Операторы и пайпы В предыдущей статье мы рассмотрели, что такое потоки и с чем их едят. В новой части мы познакомимся с тем, какие методы RxJS предоставляет для создания потоков, что такое операторы, пайпы(pipes) и как с ними работать. RxJS обладает богатейшим API. В документации описано б...
Криптографические токены PKCS#11. Графическая утилита «с функцией подписания и добавлением метки времени». Часть 1 В комментариях к статье «Использование механизмов криптографических токенов PKCS#11 в скриптовых языках» читатель kovserg написал: «С нетерпением ждём статью с функцией подписания документа и добавлением метки времени». Еще раньше другой участник хабра pas писал о том, что б...
Не нужен вам вуз, идите в ПТУ? Эта статья — ответ на публикацию "Что же не так с IT-образованием в России", а точнее, даже не на саму статью, а на часть комментариев к ней и идеи, в них прозвучавшие. Я сейчас выскажу, наверное, очень непопулярную здесь на Хабре точку зрения, но не высказать я ее не мог...
Правила выбора JS-фреймворка TL;DR В статье не рассматриваются JS-фреймвёрки из списка TOP-3 При разработке на JS-фреймвёрке не из списка TOP-3 приходится решать на порядок больше технических вопросов, чем это ожидается в начале разработки История основана на реальных событиях Читать дальше →
[Из песочницы] Права в Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask) Всем привет. Это перевод статьи из книги RedHat RHCSA RHCE 7 RedHat Enterprise Linux 7 EX200 and EX300. От себя: Надеюсь статья будет полезна не только начинающим, но и поможет более опытным администраторам упорядочить свои знания. Итак, поехали. Читать дальше →
Зачем нужен термоакустический генератор? Рис. 1 Предполагаемый внешний вид домашнего термоакустического газового генератора В одной из предыдущих статей я рассказывал о том, что занимаюсь разработкой термоакустического генератора: «Создание и первый запуск термоакустического двигателя с бегущей волной». В этой ст...
AERODISK Engine: Катастрофоустойчивость. Часть 2. Метрокластер Привет, читатели Хабра! В прошлой статье мы рассказали о простом средстве катастрофоустойчивости в системах хранения AERODISK ENGINE – о репликации. В этой статье мы погрузимся в более сложную и интересную тему – метрокластер, то есть средство автоматизированной защиты от к...
«Очень важное совещание» в Comedy. Разберём полёты? Все выходные лента в Facebook и моя личка ломились от ссылок на одно и то же видео — «Очень важное совещание» от участников Comedy Club. Комментарии и подписи были односложными: «ха», «точняк», «а помнишь, у нас в N так же делал R» и т.д. Я не сразу посмотрела видео, но как...
Идея о поиске людей в лесу Эта статья описание небольшой идеи возникшей после прочтения недавней статьи «Обыскать 314 км² за 10 часов — финальное сражение инженеров-поисковиков против леса» Сразу предупрежу, что у меня маловато опыта в радиотехнике, и совсем нет оного в поиске пропавших людей, так чт...
Архитектура компьютера. Цифровой логический уровень Компьютер — это машина, которая может выполнять вычисления через исполнение примитивных операций. Она может понимать только два сигнала, которые принимаются за 0 и 1. Организация архитектур машин представляется как ряд уровней, каждый из которых надстраивается над нижележа...
[Из песочницы] Termux шаг за шагом (Часть 1) Termux шаг за шагом При первом знакомстве Termux, а я далеко не линуксоид, вызвал в моей голове две мысли: «Круть несусветная!» и «Как им пользоваться?». Порывшись в инетах, я не нашел ни одной статьи в полной мере позволяющей начать пользоваться Termux`ом так чтобы это прин...
Бесшовный клиент-сервер Любой клиент-серверный проект подразумевает четкое разделение кодовой базы на 2 части (иногда больше) — клиентскую и серверную. Зачастую, каждая такая часть оформляется в виде отдельного независимого проекта, поддерживаемого своей командой девелоперов. В этой статье я пред...
Радиация: война с невидимым убийцей или еще немного о радоне И снова здравствуйте. В комментариях к предыдущей статье я обещал написать о защите от радона и его ДПР. Что ж, выполняю это обещание. Как я уже говорил в предыдущей статье, радон представляет для людей довольно серьезную опасность. Особенно она велика в некоторых регионах ...
Нагрузочное тестирование с locust. Часть 3 Финальная статья об инструменте для нагрузочного тестирования Locust. Сегодня поделюсь наблюдениями, которые накопил в процессе работы. Как всегда, видео прилагается. Часть 1 — тестирование с Locust Часть 2 — продвинутые сценарии Читать дальше →
[Из песочницы] Жизнь и успех Ларри Эллисона, основателя Oracle Привет, Хабр! Предлагаю перевод статьи «The life and rise of billionaire Oracle founder and international playboy Larry Ellison, who dropped out of college twice and has a $68 billion fortune». Ларри Эллисон, 74-летний соучредитель Oracle, является одним из самых интересн...
Введение в контекстно-ориентированное программирование на Kotlin Это перевод статьи An introduction to context-oriented programming in Kotlin В этой статье я постараюсь описать новое явление, которое возникло как побочный результат стремительного развития языка Kotlin. Речь идет о новом подходе к проектированию архитектуры приложений и б...
Субъективное видение идеального языка программирования Дальнейший текст — моя точка зрения. Возможно, она позволит кому-то по-новому взглянуть на дизайн языков программирования или увидеть какие-то преимущества и недостатки конкретных фич. Я не буду лезть в частные подробности типа "в языке должна быть конструкция while", а прос...
GraphQL Voyager как инструмент для поиска уязвимостей В настоящее время все больше компаний начинают использовать GraphQL. Это относительно новая технология (если быть более точным, то это язык запросов), которая призвана решить существующие проблемы REST. Если вы еще не знакомы с GraphQL, то рекомендую начать с ресурсов: ...
Как настроить Continuous Deployment для своего проекта: личный опыт Перевели для вас статью Юлиуса Минмо о настройке непрерывной интеграции (Continuous Deployment) для своего проекта. Автоматизация позволяет сэкономить кучу времени и сил. Статья будет полезна, в первую очередь, начинающим программистам. Непрерывная интеграция — отличная ...
Перевод и интерпретация рекламы с английского языка на русский Реклама — двигатель торговли. И ее значение за последние 10 лет выросло просто астрономически. По сути никакой товар или услуга не может рассчитывать на нормальные продажи, если его активно не рекламируют. По данным агентства Dentsu Aegis Network, в 2019 году глобальный рын...
Небольшой обзор SIMD в .NET/C# Вашему вниманию предлагается небольшой обзор возможностей векторизации алгоритмов в .NET Framework и .NETCORE. Цель статьи познакомить с этими приёмами тех, кто их вообще не знал и показать, что .NET не сильно отстаёт от "настоящих, компилируемых" языков для нативной разрабо...
Быстрорастворимое проектирование Люди учатся архитектуре по старым книжкам, которые писались для Java. Книжки хорошие, но дают решение задач того времени инструментами того времени. Время поменялось, C# уже больше похож на лайтовую Scala, чем Java, а новых хороших книжек мало. В этой статье мы рассмотрим к...
Яндекс! Спасибо за Uber Привет, Хабр! В этой статье хотелось бы рассмотреть поглощение Яндексом службы такси Uber с точки зрения обычного пользователя, который немного понимает в программировании и не любит грязный маркетинг. Читать дальше →
Техника избежания неопределённого поведения при обращении к синглтону В статье рассмотрены причины возникновения и способы избежания неопределённого поведения при обращении к синглтону в современном c++. Приведены примеры однопоточного кода. Ничего compiler-specific, всё в соответствии со стандартом. Читать дальше →
Эксплуатация Microsoft Edge от CVE до RCE на Windows 10 В рамках данной статьи мы достаточно подробно рассмотрим процесс написания эксплоита под уязвимость в Microsoft Edge, с последующим выходом из песочницы. Если вам интересно узнать, как выглядит этот процесс, то welcome под кат! Читать дальше →
[Из песочницы] Как работают веб-приложения Это статья для начинающих разработчиков и тех, кто хочет немного ориентироваться в терминах и технологиях современных веб-приложений. В статье написано о том, чем веб-приложения отличаются от сайтов, какие бывают веб-приложения, из чего они состоят и как работают. Читать да...
[Перевод] Введение в детерминированные сборки на С/С++. Часть 1 Перевод статьи подготовлен специально для студентов курса «Разработчик С++». Что такое детерминированная сборка? Детерминированная сборка — это процесс сборки одного и того же исходного кода с одной и той же средой и инструкциями сборки, при котором создаются одни и те же...
2. Анализ зловредов с помощью форензики Check Point. SandBlast Agent Продолжаем наш цикл статей по форензике от Check Point. В предыдущей статье мы рассмотрели новый отчет сетевой песочницы, которая помогает ловить 0-day атаки на периметре сети. К сожалению (для “безопасников”), периметр уже давно потерял четкие границы. Мобильные устройств...
Мифы популярной физики, продолжение: Гравитация Первая часть статьи тут. А мы пока разберем другие мифы, о которых вам не расскажут эти два парня: Читать дальше →
[Перевод] Оттенки значений в английском языке: как использовать глаголы Advise, Recommend, Suggest Английский язык часто воспринимается как нечто не столь сложное, как некоторые другие языки – взять тот же немецкий. Но на самом деле в нем есть достаточное количество трудностей и тонких моментов («Пишется Ливерпуль, а читается Манчестер» ). Один из них, вызывающий личн...
Делаем контроллер для умного дома Делаем контроллер для умного дома и не только. В предыдущей статье я описывал разработку системы в целом. В этой я опишу разработку контроллера, который отвечает за опрос датчиков и модулей ввода-вывода. «Зачем изобретать велосипед?» — спросите вы. Во-первых, это интересно,...
[Перевод] Пишем API для React компонентов, часть 1: не создавайте конфликтующие пропсы Пишем API для React компонентов, часть 1: не создавайте конфликтующие пропсы Пишем API для React компонентов, часть 2: давайте названия поведению, а не способам взаимодействия Пишем API для React компонентов, часть 3: порядок пропсов важенЭтот пост — перевод первой статьи ...
Английский vs. Эсперанто: за кем будущее? За последние 50 лет позиции английского языка на международной арене усилились до невиданного ранее уровня. На сегодня в мире примерно 378 миллионов людей говорят на английском в качестве родного и еще от 470 миллионов до 1 миллиарда указывают его как второй язык. Что приме...
[recovery mode] Как учиться с помощью машинного обучения у экспертов в Dota 2 В предыдущей статье от Питерской Вышки мы показывали, как при помощи машинного обучения можно искать баги в программном коде. В этом посте расскажем о том, как мы вместе с JetBrains Research пытаемся использовать один из самых интересных, современных и быстроразвивающихся ра...
[Перевод] Service mesh для микросервисов. Часть II, основы работы с Istio Перевод статьи подготовлен специально для студентов курса «Инфраструктурная платформа на основе Kubernetes». Настройка базового микросервиса в Kubernetes обманчиво проста. В одной из последних статей мы рассказали, как легко начать работать с контейнерами. Мы скомпоновали п...
[Перевод] Динамическое программирование в реальном мире: вырезание швов У динамического программирования репутация метода, который вы изучаете в университете, а затем вспоминаете только на собеседованиях. Но на самом деле метод применим во многих ситуациях. По сути, это техника эффективного решения задач, которые можно разбить на множество сильн...
Хочу рецензии на хабр С момента моей регистрации на хабре у меня было ощущение какой-то недосказанности в статьях. Т.е. вот есть автор, вот его статья = мнение… но чего-то нет. Чего-то нехватает… Спустя время я понял, что недостает критического взгляда. В целом, его можно найти в комментариях. ...
[Из песочницы] Новый язык программирования Mash На протяжении нескольких лет я пробовал свои силы в разработке своего языка программирования. Мне хотелось создать на мой взгляд максимально простой, функциональный и удобный язык. В этой статье я хочу осветить основные этапы своей работы и для начала описать созданный конц...
[Перевод] «Алгебраические эффекты» человеческим языком Комментарий от переводчика: Это перевод замечательной статьи Дэна Абрамова (Dan Abramov), являющегося контрибутором React. Его примеры написаны для JS, но будут одинаково понятны разработчикам на любом языке. Идея общая для всех. Вы слышали об алгебраических эффектах? Мои п...
OSINT на платформе Telegram & наркогео_чаты Telegram OSINT на платформе Telegram В данной статье поделюсь с вами Telegram-ботами, которые на раз-два-три предоставляют ценную информацию о запрашиваем объекте в поисках «Сиболы», а так же упомяну тему гео_чатов. Это уже неотвратимый факт, что «вся» IT-тусовка резвится в Telegr...
Зависимость производительности кода от контекста объявления переменных в JavaScript Изначально эта статья задумывалась как небольшой бенчмарк для собственного использования, да и вообще статьёй быть не планировалась, однако, в процессе проведения замеров всплыли некоторые интересные особенности в реализации архитектуры JavaScript, сильно влияющие на произв...
Мультиязычные приложения в Angular В этой статье рассмотрим как можно быстро перевести ваш Angular проект на мультиязычный режим работы и какие есть для этого утилиты. Читать дальше →
Взаимодействие R с базами данных на примере Microsoft SQL Server и других СУБД Поскольку львиная доля бизнес информации храниться в базах данных. На каком бы языке программирования вы не писали, вам придётся производить различные действия с ними. В этой статье я расскажу о двух интерфейса для работы с базами данных в R. Большая часть примеров демонстри...
[Из песочницы] Как Мефодий стал Анной: опыт разработки и запуска классификаторов голосовых сообщений. Часть 1 Цель и задача В серии статей рассмотрим классификаторы голосовых обращений, зачем они нужны, как их быстро вывести в продуктив. Расскажу про подходы, которые позволят сократить время от постановки задачи до запуска модели и получения бизнес-результата. По этой статье можно п...
Что интересного я извлёк из книги «Theory of Fun for Game Design» от Рафа Костера В этой статье я тезисно перечислю наиболее интересные для меня выводы и чеклисты, которые я нашёл в книге Рафа Костера «Theory of Fun for Game Design». Читать дальше →
this и ScopeChain в EcmaScript Привет, Хабр! В предыдущей статье мы рассматривали общую теории ООП в применении к EcmaScript и популярное заблуждение начинающих разработчиков относительно отличия ООП в JS и классических языках. Сегодня мы поговорим о двух других не менее важных концепциях EcmaScript, а...
Web. Решение задач с r0от-мi. Часть 1 Данная статья содержит решение заданий, направленных на эксплуатацию web-узвимостей. Здесь рассмотрим задачи, затрагивающие backup файлы, непроиндексированные директории, http заголовки, редирект и command injection. Организационная информацияСпециально для тех, кто хочет ...
Linux Backup от Veeam на ОС «Эльбрус». Импортозамещение ['?' | '.' | '!'] Всем привет. Недавние статьи на Хабре Импортозамещение на практике. Часть 1. Варианты и Не долго музыка играла… или как ОС Эльбрус так и не стала свободной не оставили меня равнодушным. Я решил поизучать этот вопрос в ключе задачи резервного копирования. Тем более, что в э...
Опыт создания первого робота на Ардуино (робот-«охотник») Здравствуйте. В данной статье я хочу описать процесс сборки своего первого робота на ардуино. Материал будет полезен другим таким же новичкам, как и я, которые захотят изготовить какую-нибудь «самобеглую тележку». Статья представляет собой описание этапов работы с моими доп...
Когда Российская академия наук бессильна Если у вас есть враги, порекомендуйте им выучиться на филологов или редакторов, а потом пойти работать в геймдев. Они будут молить о пощаде, разыскивая в словарях плейбласты вьюпорта, коллбэки и риггинги, а вы будете ехидно посмеиваться. Но это продлится недолго. В какой-то ...
Что в черном ящике. Обзор методов тестирования биллинга Проверка платных сервисов — один из ключевых инженерных вопросов в тестировании Badoo. Наше приложение интегрировано с 70 платёжными провайдерами в 250 странах мира, и баг хотя бы в одном из них может привести к непредсказуемым последствиям. В этой статье я расскажу о мето...
Дискретная математика для WMS: алгоритм сжатия товаров в ячейках (часть 1) В статье мы расскажем, как решали проблему нехватки свободных ячеек на складе и о разработке алгоритма дискретной оптимизации для решения такой задачи. Расскажем о том, как мы «строили» математическую модель задачи оптимизации, и о том с какими трудностями мы неожиданно ст...
Человеческое сознание. Перенести нельзя скопировать? Предыдущая статья на эту тему вызвала к жизни бурное обсуждение в количестве более четырехсот комментариев, среди которых, как водится, не было ни одного умного (шутка). В принципе, это и неудивительно. Такая же ситуация обстоит, например, с лингвистикой. Как говаривал ген...
И все-таки, почему Posit являются достойной альтернативой IEEE 754 Месяц Posit объявлен на Хабре открытым, а значит я не могу пройти мимо и проигнорировать обрушившуюся на них критику. В предыдущих сериях: Новый подход может помочь нам избавиться от вычислений с плавающей запятой Posit-арифметика: победа над floating point на его собственн...
[Из песочницы] Новые рубежи в Физике Здравствуй, уважаемый читатель! Представляю вашему вниманию перевод с английского языка статьи «Physics, The Next Frontier» авторства Chris Hecker. Я, начинающий Java-разработчик, столкнулся с тем, что материалы по созданию физического внутриигрового движка представлены ли...
Коренные микробы на пике моды Indibiome – is the new black (что-то очень стильное) — так называется статья на английском (ссылка на Хабр), здесь приводится перевод моего собственного текста. Коренные микробы на пике моды, точно так же как в электронной и компьютерной индустриях, конструкторские бюро микр...
На какой диапазон эта антенна? Измеряем характеристики антенн — На какой диапазон эта антенна? — Не знаю, проверь. — КАААК?!?! Как определить, что за антенна у вас в руках, если на ней нет маркировки? Как понять, какая антенна лучше или хуже? Эта проблема меня мучила давно. В статье простым языком описывается методика измерения харак...
[Перевод] LLVM IR и Go В этой статье мы рассмотрим, как построить программу на Go, такую, как компилятор или статический анализатор, которая взаимодействует с фреймворком компиляции LLVM, используя язык ассемблера LLVM IR. TL;DR мы написали библиотеку для взаимодействия с LLVM IR на чистом Go, см...
Пример Model-View-Update архитектуры на F# Кому-то не нравился Redux в React из-за его имплементации на JS? Мне он не нравился корявыми switch-case в reducer'ах, есть языки с более удобным pattern matching, и типы лучше моделирующие события и модель. Например, F#. Эта статья — разъяснение устройства обмена сообщения...
Julia: пользовательские типы В этой статье рассмотрим добавление в программу на Julia пользовательского типа данных и перегрузку стандартных функций для удобной работы с новым типом. Читать дальше →
PostGIS и JPA PostGIS — открытое программное обеспечение, добавляющее поддержку географических объектов в реляционную базу данных PostgreSQL. В этой небольшой статье будет рассмотрено использование его в Java. В частности — задача нахождения географических объектов по их координатам. Ч...
Apache, ViewState&Deserialisation В данной статье рассмотрим уязвимость на основе подмены сериализованного Java-объекта ViewState и метод её эксплуатации на примере web-приложения виртуальной машины с HackTheBox, использующей технологию Apache MyFaces. Читать дальше →
Нам нужен другой 1С-Битрикс, часть 2 После публикации первой статьи в деле борьбы за права причастных к 1С-Битриксу появились соподвижники Dekmabot и Sergik_DS со статьями «Почему Битрикс — Битрикс» и «За что, Битрикс? Или сказочный мир 1С», чему я несказанно рад. Как там пишут в руководствах по зачинанию старт...
[Из песочницы] Game Engine своими руками на C++. Часть 1 (Вступление) Game Engine Проектируем, пишем, думаем рассуждаем, читаем и многое другое Внимание: статьи содержат много костылей! Читать дальше →
Tic Tac Toe, часть 5: Бэкенд на С++ Boost.Beast, HTTP В этой статье рассмотрим реализацию бэкенда с применением C++ Boost.Beast библиотеки на примере синхронного сервера. Та же функциональность, что и в прошлой статье — получаем от бэкенда случайное число от 0 до 8 включительно. Оказалось, что поднимать контейнер для Beast ничу...
Dagaz: Эпизоды (часть 2) — Один слон, одна колесница, пятеро пехотинцев и трое всадников составляют ПАТТИ, утроенное ПАТТИ составляет СЕНАМУКХУ,… а десять АНИКИНИ составляют АКШАУХИНИ, и это есть самая крупная войсковая единица… Генри Лайон Олди «Гроза в б...
Профилирование со сверхсветовой скоростью: теория и практика. Часть 1 Привет! Из заголовка вы уже поняли, о чём я собираюсь рассказать. Тут будет много хардкора: мы обсудим Java, С, С++, ассемблер, немного Linux, немного ядра операционной системы. А ещё разберём практический кейс, поэтому статья будет в трёх больших частях (достаточно объёмных...
Вся история Linux. Часть II: корпоративные перипетии Продолжаем вспоминать историю развития одного из самых значимых продуктов в опенсорсном мире. В прошлой статье мы поговорили о разработках, которые предшествовали появлению Linux, и рассказали историю рождения первой версии ядра. В этот раз сосредоточимся на периоде коммерци...
Создание системы формальной верификации с нуля. Часть 1: символьная виртуальная машина на PHP и Python Формальная верификация — это проверка одной программы либо алгоритма с помощью другой. Это один из самых мощных методов, который позволяет найти в программе все уязвимости либо же доказать, что их нет. Более подробное описание формальной верификации можно увидеть на пример...
Не очередной язык программирования В последнее время на рынке появилось огромное количество новых языков программирования: Go, Swift, Rust, Dart, Julia, Kotlin, Hack, Bosque – и это только из числа тех, которые на слуху. Ценность того, что эти языки привносят в мир программирования, тяжело переоценить, но,...
[Из песочницы] Госзакупки: баланс между итальянской забастовкой и русской уголовкой Прочитал я на днях статью ЕЭТП о госзакупках, и даже поучаствовал в комментариях. Хочу рассказать о своем видении данного процесса. Меньше теории, больше практики. Практики будет больше со стороны поставщика, в роли которого мне приходилось выступать, но не только. Мнение...
[Из песочницы] ClusterJ — работаем с MySQL NDB Cluster из Java Привет, Хабр! В этой статье я хочу рассмотреть такую библиотеку для Java, как ClusterJ, которая позволяет очень просто работать с движком MySQL NDBCLUSTER из Java кода, которая представляет собой высокоуровневое API, схожее по концепции с JPA и Hibernate. В рамках статьи со...
Виды бесконечностей и вынос мозга Эта статья — продолжение статьи про громадные числа. Но сейчас мы пойдем еще дальше — в бесконечности бесконечностей. Читать дальше →
Как взлететь на батарейках или практика эксплуатации электропарамотора SkyMax. Часть 2 Продолжение статьи: «Как взлететь на батарейках или немного теории электропарамотора. Часть 1» habr.com/ru/post/475174 4. Описание электропарамотора SkyMax. В предыдущей статье уже фигурировала фотография внутреннего устройства используемой батареи в проекте. Она же — в со...
[Перевод] Простое объяснение алгоритмов поиска пути и A* Часть 1. Общий алгоритм поиска Введение Поиск пути — это одна из тех тем, которые обычно представляют самые большие сложности для разработчиков игр. Особенно плохо люди понимают алгоритм A*, и многим кажется, что это какая-то непостижимая магия. Цель данной статьи — объясн...
[Из песочницы] Получаем Spring Bean из сторонних Application Context правильно Добрый день, хабровчане! В данной статье предлагаю обсудить одну из проблем, с которой нередко сталкиваются в проектах, использующих фреймворк Spring ввиду неверно составленных spring-конфигураций. Не нужно стараться, чтобы такую ошибку допустить, и поэтому данная ошибка яв...
Asterisk. Dialplan Askozia 6. Исходящие звонки В статье пойдет речь о бесплатной АТС Askozia версии 6. При разработке телефонной станции одной из первых задач была организация исходящих звонков. Как это было В старой версии Askozia использовались стандартные “шаблоны” dialplan. X! — все номера телефонов XXX — трехзна...
OSDay 19 или почему еще жив язык Си Недавно (10-11 июня) в Москве прошла очередная научно-практическая конференция OSDay. На этот раз конференция проходила в математическом институте им. В.А. Стеклова РАН. Формально она была посвящена инструментам разработки операционных платформ и системного программного обе...
JMeter — швейцарский нож тестировщика (Часть 2) Сегодня расскажу, как мы с помощью JMeter’а наладили процесс кэширования продуктовых страниц, проверили работу мобильного приложения без самого приложения и создали 2000 юзеров в системе без доступа к базе данных. Кто не в курсе, что здесь происходит, читайте первую часть ...
Debian + Postfix + Dovecot + Multidomain + SSL + IPv6 + OpenVPN + Multi-interfaces + SpamAssassin-learn + Bind Данная статья о том как настроить современный почтовый сервер. Postfix + Dovecot. SPF + DKIM + rDNS. С IPv6. С шифрованием TSL. С поддержкой нескольких доменов — часть с настоящим SSL сертификатом. С антиспам-защитой и высоким антиспам-рейтингом у других почтовых серверов. С...
[Перевод] Порождение событий, CQRS и Laravel Перевод статьи подготовлен для студентов профессионального курса «Framework Laravel» ________________________ Введение Эта статья посвящена основам создания событийных CQRS-систем на языке PHP и в фреймворке Laravel. Предполагается, что вы знакомы со схемой разработки с ...
Пишем свой язык программирования, часть 2: промежуточное представление программ Введение Приветствую всех, кто заглянул почитать мою очередную статью. Повторюсь, я описываю создание языка языка программирования, на основе проведенной ранее работы, результаты которой описал в этом посте. В первой части (линк: habr.com/post/435202) я описал этапы прое...
[Перевод] Псевдослучайность нам поможет: подборка инструментов генерации ассетов для игры Отгремели выстрелы минувшего Ludum Dare 44, но тяга делать игры, оттачивать свое мастерство ещё не покидает меня, да и думаю многих. Проглядывая главную страницу онлайн-мероприятия, я наткнулся на интереснейший пост, где автор задался вопросом составления инструментария, пом...
Автоматизация Для Самых Маленьких. Часть 1.1. Основы виртуализации Предыдущая статья рассматривала архитектуру виртуализированной сети, underlay-overlay, путь пакета между VM и прочее. Роман Горге вдохновился ею и решил написать обзорный выпуск о виртуализации вообще. В данной статье мы затронем (или попытаемся затронуть) вопросы: а как с...
Геймдизайн в жизнь. Экономика игры (Часть II) Доброго дня! Немного об авторе: меня зовут Мария, гейм дизайнер. Это третья статья из цикла по применению теории геймдизайна в жизни. Ссылки: Первая статья: «Гейм дизайн в жизнь. Пример разбора механики игры» Вторая статья: «Геймдизайн в жизнь. Экономика игры (Часть I)» ...
[Из песочницы] Аппаратный bit banding CortexM3/M4(ARM), архитектура ядра, ассемблер, С/C++14 и капля мета программирования Введение Внимание, это не очередная «Hello world»статья о том как помигать светодиодом или попасть в свое первое прерывание на STM32. Однако, я постарался дать исчерпывающие объяснения по всем затрагиваемым вопросам, поэтому статья будет полезна не только многим профессионал...
Как мы спроектировали и реализовали новую сеть на Huawei в московском офисе, часть 3: серверная фабрика В предыдущих двух частях (раз, два) мы рассмотрели принципы, на основе которых построена новая пользовательская фабрика, и рассказали про миграцию всех рабочих мест. Теперь пришла пора поговорить о серверной фабрике. Читать дальше →
Operating Systems: Three Easy Pieces. Part 5: Планирование: Multi-Level Feedback Queue (перевод) Введение в операционные системы Привет, Хабр! Хочу представить вашему вниманию серию статей-переводов одной интересной на мой взгляд литературы — OSTEP. В этом материале рассматривается достаточно глубоко работа unix-подобных операционных систем, а именно — работа с процесс...
Разработка Unix подобной OS — Многозадачность и системные вызовы (7) В предыдущей статье мы научились работать с виртуальным адресным пространством. Сегодня мы добавим поддержку многозадачности. Читать дальше →
[Перевод] Зачем ЯОП? Зачем Racket? Это продолжение статьи «Зачем Racket? Зачем Lisp?», которую я написал примерно через год после того, как открыл для себя Racket. Будучи новичком, я не мог понять дифирамбов, которые со всех сторон сыпались в адрес Lisp. Я не знал, что и думать. Как понимать, что Lisp в конце...
Тесты на Си без SMS и регистрации Недавно zerocost написал интересную статью «Тесты на C++ без макросов и динамической памяти», в которой рассматривается минималистический фреймворк для тестирования Си++ кода. Автору (почти) удалось избежать использования макросов для регистрации тестов, однако вместо них в ...
Как могли бы выглядеть регистры в 1С при наличии ООП В 1С одним из ключевых элементов системы являются регистры. Этот термин имеет свой аналог в английском языке — ledger. Он первоначально появился в бухгалтерской практике, но со временем его логика начала использоваться и в других сферах. В отличие от 1С, где регистры явля...
Тайна прошивок Авторы: к.ф.-м.н. Чернов А.В. (monsieur_cher) и к.ф.-м.н. Трошина К.Н. Как с помощью самых общих предположений, основанных на знании современных процессорных архитектур, можно восстановить структуру программы из бинарного образа неизвестной архитектуры, и дальше восстановит...
Хабрастатистика: анализируем комментарии читателей Привет Хабр. В предыдущей части была проанализирована популярность различных разделов сайта, и параллельно возник вопрос — какие данные можно извлечь из комментариев к статьям. Также хотелось проверить одну гипотезу, о которой скажу ниже. Данные получились довольно интер...
[Перевод] Инструментарий для рефакторинга баз данных: Flyway vs. Liquibase В этой статье мы поговорим о Flyway и Liquibase — двух наиболее популярных инструментах на основе Java для рефакторинга баз данных. Цель статьи — сравнить эти инструменты и выяснить, какой из них в каких случаях лучше применять. Читать дальше →
Граф Скоринг де ля Фер или исследование на тему кредитного скоринга, в рамках расширения кругозора. Ч.3 Часть третья, в которой Атос выпал в осадок, а Граф де ля Фер мудрит с алгоритмами. UPD Часть первая здесь UPD Часть вторая здесь AntipovSN and MihhaCF Вступление от авторов: Добрый день! Сегодня мы продолжаем цикл статей, посвященных скорингу и использованию в оном теории г...
[Из песочницы] MySQL — Использование переменных в запросе Довольно часто спрашивают, есть ли аналоги аналитических (оконных) функций в MySQL. Примечание. На момент написания статьи таких аналогов не было, однако статья и ныне представляет собой академический интерес в плане разбора оригинального для MySQL подхода к использованию пе...
[Перевод] Офис — это театр, в котором мы актёры TL;DR. Многие стремятся к «тихому успеху» — делать работу, которая «говорит сама за себя». К сожалению, это неправильный ход в современном театре труда. Зачастую верно обратное — для офисного информационного сотрудника представление работы и есть работа. Да, внутренняя полит...
[Перевод] Приёмы в проектировании пользовательского интерфейса, которые сэкономят время В переводе этой статьи автор приводят ряд советов и приёмов, которые упростят жизнь при проектировании дизайна пользовательского интерфейса. В статье даны сведения о полезных и экономящих время возможностях работы таких программ как Sketch, Adobe Illustrator, Figma, Adobe XD...
Навигация для Android с использованием Navigation Architecture Component: пошаговое руководство Попробуем, пользуясь официальным руководством и примерами кода, построить работающую систему навигации для будущего многоэкранного приложения в соответствии со стандартами Navigation Architecture Component. Статья включает следующие разделы: Часть 1. Подготовительные работ...
Один день из поддержки пользователей PVS-Studio Мы рады любым тематическим общениям на тему качества кода. Нам пишут клиенты, студенты и любые другие пользователи со всех уголков интернета. Независимо от страны, часового пояса или языка. Языка разговорного, конечно. Среди языков программирования нам всё же интересен огра...
В поисках вдохновения, или Как вытащить себя из Ж После выхода моей первой статьи «Не бойтесь пробовать, или Как я стала программистом в возрасте далеко за 18», в личку и комментариях на Хабре, а также в соцсетях стали приходить самые разные отзывы. Один из них запомнился больше всего: «Спасибо за Вашу статью. Очень грамо...
Анализ производительности ВМ в VMware vSphere. Часть 2: Memory Часть 1. Про CPU В этой статье поговорим про счетчики производительности оперативной памяти (RAM) в vSphere. Вроде бы с памятью все более однозначно, чем с процессором: если на ВМ возникают проблемы с производительностью, их сложно не заметить. Зато если они появляются, с...
Как мы в ЦИАН укрощали терабайты логов Всем привет, меня зовут Александр, я работаю в ЦИАН инженером и занимаюсь системным администрированием и автоматизацией инфраструктурных процессов. В комментариях к одной из прошлых статей нас попросили рассказать, откуда мы берем 4 ТБ логов в день и что с ними делаем. Да,...
[Перевод] Вся правда об ОСРВ. Статья #25. Каналы передачи данных: введение и базовые службы После небольшого перерыва мы продолжаем публиковать переводы статей «Вся правда об ОСРВ» Колина Уоллса. В этот раз поговорим о каналах передачи данных (далее – каналы), которые были уже были упомянуты в одной из предыдущих статей, а именно в #5. Каналы, по сравнению с почт...
Сравнительное тестирование PostgreSQL на FreeBSD, CentOS, Ubuntu Debian и openSUSE Привет, Хабр! Представляю вашему вниманию перевод оригинальной статьи «PostgreSQL benchmark on FreeBSD, CentOS, Ubuntu Debian and openSUSE» автора Martin Kováčik. В ней рассматриваются тесты СУБД PostgreSQL 10.1 в приближенных к реальным условиям средах на различных unix-сис...
Простой слайдер изображений на CSS и Javascript Автор уже опубликовал скрипт карусели, который также использует только CSS и Javascript. Теперь давайте рассмотрим скрипт слайдера. Он отличается от карусели тем, что одновременно виден только один элемент, а не несколько, и элементы не прокручиваются, а медленно замещаются ...
[Перевод] Продвинутые структуры данных. Часть первая: Направленный ациклический граф Всем привет! Уже на следующей неделе стартуют занятия в новой группе курса «Алгоритмы для разработчиков». В связи с этим, делимся с вами переводом совсем небольшого, но довольно интересного материала. Я хотел начать эту серию статей со структуры данных, с которой все мы к...
Еще один вариант среды для разработки WordPress (docker, wp-cli) Есть официальные образы для развертывания WordPress и использования wp-cli. Но при их совместном использовании мне приходилось расшаривать всю папку WordPress и хотелось, чтобы было больше возможностей для кастомизации установки. Очень хотелось после запуска контейнера видет...
У всех горит от эффективности В прошлом выпуске "Цинкового прода" мы обсуждали три статьи про эффективность различных процессов. Про то "Как Безос PowerPoint отключил", "Владелец одной компании заставляет жить по 5 часов в день без отвлечений" и "Асинхронная коммуникация дуистов".Эта статья является комп...
Какой язык программирования выбрать После того, как я написал статью «Почему не нужно учить Python первым языком», я на регулярной основе получаю много вопросов в личку, что лучше выбрать, как быть и так далее. Поэтому в этой статье я расскажу вам свои мысли на этот счет. И самое главное отвечу на «Священный Г...
Как создать open source проект Уже на этой неделе в Санкт-Петербурге пройдет IT-фестиваль TechTrain. Одним из спикеров будет Ричард Столлман. Embox тоже участвует в фестивале, и конечно мы не могли обойти вниманием тему СПО. Поэтому один из наших докладов называется “От студенческой поделки до opensource...
Autodesk Maya: полезные базовые функции для работы с 3Д моделями Недавно я столкнулся лицом к лицу с таким зверем как Autodesk Maya. За плечами у меня не было опыта в работе с 3Д моделированием и пришлось в экстренном порядке прокачиваться, начиная с основ, а также ознакомится с функциональностью данного ПО, чтобы проверить работу плагина...
Безопасный доступ к полям регистров на С++ без ущерба эффективности(на примере CortexM) Рис. взят с сайта www.extremetech.com/wp-content/uploads/2016/07/MegaProcessor-Feature.jpg Всем доброго здравия! В прошлой статье я рассмотрел вопрос о проблеме доступа к регистрам микроконтроллера с ядром CortexM на языке С++ и показал простые варианты решения части про...
[Из песочницы] Прибыльность сайтов и сервисов Эта статья будет полезна всем, кто хочет сделать собственный бизнес на веб-сайтах и сервисах. Здесь приведены примеры прибыльности и средней посещаемости сайтов через год работы. Основная цель статьи — дать приблизительное представление о сложности развития проектов для тех,...
[Из песочницы] Как я боролся с Shared Element Transition и написал свою первую opensource библиотeку Нет повести печальнее на свете, чем повесть о ViewPager’e и SET’e Хочется предупредить, что автор ‒ новичок андроид, поэтому статья содержит столько технических неточностей, что вас, скорее, нужно предупредить о том, что в статье могут встретиться технически достоверные...
[Из песочницы] Как подключить Яндекс Кассу и преуспеть в конверсии В этой статье я поделюсь опытом использования платёжной системы в контексте того, как это может отражаться на конверсии. Часть тезисов будет актуальна для почти любой системы, но в основном речь пойдёт о Яндекс Кассе с целью привнести больше конкретики. Статья будет полезна ...
Невангеры: Spice must flow Доброго времени суток. В этой статье машинки-мехосы ищут пряность, во тьме зажигаются светлячки и пробуждается червь пустыни. Пятая версия прототипа Невангеров — механика переноса цвета и прочие нововведения. Часть первая: Невангеры Часть вторая: Road is changed Читать д...
Google Tag Manager: неочевидные и полезные настройки триггеров Маркетолог в Otzyvmarketing Станислав Романов рассказал, как с помощью диспетчера тегов Google Tag Manager (GTM) настроить аналитику и отслеживать скачивание файлов с сайта. Статья для тех, кто знает основы языка JavaScript и уже работал с GTM. Читать дальше →
[Перевод] Подготовка к Spring Professional Certification. Spring REST Сегодняшняя статья рассмотрит основные вопросы про REST в Spring. Она будет особенно полезна для начинающих программистов. Официальный гид от Pivotal, в котором написано про темы для подготовки. Оглавление Внедрение зависимостей, контейнер, IoC, бины AOP (аспектно-ориентир...
Как создать Python wrapper и не сойти с ума Недавно на Хабре прочитал статью про очень полезный инструмент, и так как я уже давно искал какой-то проект, чтобы начать контрибьютить, решил посмотреть, что там есть на гитхабе и чем можно помочь. Одно из issue было на счет создания обертки (дальше буду использовать wrappe...
[Перевод] Удалённая разработка в VS Code: ваша жизнь никогда не будет прежней У нас в TestMace Visual Studio Code является одним из самых популярных инструментов. И тем более отрадно, что он развивается семимильными шагами. Вашему вниманию предлагается перевод статьи об еще одной вкусной фиче, которая доступна пока только в VS Code Insiders. Согласен,...
На пути к физическим принципам биологической эволюции. Окончание + полный текст перевода Сокращенный перевод статьи М. Кацнельсона, Ю. Вольфа и Е. Кунина Towards physical principles of biological evolution Mikhail I. Katsnelson, Yuri I. Wolf, Eugene V. Koonin Оригинал статьи (Две предыдущие части уже были опубликованы: начало и продолжение ) Возможна ли конвер...
Новый уровень безопасности МФУ: imageRUNNER ADVANCE III С увеличением встроенных функций офисные МФУ давно вышли за рамки тривиального сканирования/печати. Сейчас они превратились в полноценные самостоятельные устройства, интегрированные в высокотехнологичные локальные и глобальные сети, связывающие пользователей и организации ...
Сравнение малопопулярных и не очень CLI-библиотек: cliff, plac, plumbum и другие (часть 2) В экосистеме Python существует множество пакетов для CLI-приложений, как популярных, вроде Click, так и не очень. Наиболее распространённые были рассмотрены в предыдущей статье, здесь же будут показаны малоизвестные, но не менее интересные. Читать дальше →
Структура DNS пакета Предисловие Решил как то написать снифер DNS, так сказать just for fun. Просто посмотреть какие адреса в моей системе резолвятся. Протокол старый, документации должно быть много. Много. Но все статьи очень не полные и заканчиваются, на самом интересном моменте. Да, есть rf...
Взгляд изнутри. Аспирантура в EPFL. Часть 3: от поступления до защиты 50-летнему юбилею EPFL посвящается В 30 октября 2012 года на руках у меня был билет в один конец, до Женевы, и большое желание получить степень доктора философии (PhD) в одном из престижнейших университетов Европы, да и мира, пожалуй. А 31 декабря 2018 я провёл свой последн...
[Перевод] WolframClientForPython | Новая клиентская библиотека Wolfram Language для Python Оригинал перевода в моём блоге Получение полного доступа к языку Wolfram Language из языка Python Язык Wolfram (Wolfram Language) дает программистам в руки уникальный язык с огромным множеством сложных алгоритмов, а также встроенных знаний об окружающем мире. На протяжении...
[Из песочницы] Максимальный постоянный ток через полевой транзистор На просторах интернета достаточно много информации о полевых транзисторах (далее ПТ) и их параметрах, но один из довольно простых, на первый взгляд, параметров, а именно – максимальный постоянный ток, который транзистор может через себя пропустить в ключевом режиме, и не сго...
PVS-Studio идёт в облака: Azure DevOps Это вторая статья про использование статического анализатора PVS-Studio в облачных CI-системах, и на этот раз мы рассмотрим платформу Azure DevOps – облачное CI\CD-решение от компании Microsoft. В качестве анализируемого проекта в этот раз рассмотрим ShareX. Читать дальше ...
Решаем судоку с помощью Алгоритма X В этой статье рассмотрим "Алгоритм X" Кнута и его применение для решения судоку. Прелесть алгоритма в том, что судоку при этом решается быстро без программирования каких-то продвинутых техник решения. Читать дальше →
Добавляем ZigBee устройства в Homebridge используя CC2531 На Хабре уже встречались статьи о том, как подружить ZigBee устройства различных производителей с системами управления умным домом, без использования фирменных хабов, вроде Xiaomi Gateway. Однако, инструкции для homebridge, я не нашел не только на Хабре, но и на других прост...
Расчёт каннибализации на основе классического A/B-теста и метод bootstrap’а В данной статье рассмотрен метод расчёта каннибализации для мобильного приложения на основе классического A/B-теста. В данном случае рассматриваются и оцениваются целевые действия в рамках процесса реаттрибуции с рекламного источника (Direct, Criteo, AdWords UAC и прочих) по...
Искусство парсинга 2 или транслитерация собственной разметки +БОНУС: как включать классы друг в друга в C++ Привет, Хабр! Эта статья — прямое продолжение статьи Искусство парсинга или DOM собственными руками, где мы разобрали HTML-документ и построили на его основе абстрактное синтаксическое дерево (AST) с доступом к любому элементу ч...
Как ЛАНИТ оснастил инженерными и ИТ-системами дилинговый центр в Сбербанке В конце 2017 года группа компаний ЛАНИТ закончила один из самых интересных и ярких проектов в своей практике — Дилинговый центр Сбербанка в Москве. Из этой статьи вы узнаете, как именно «дочки» ЛАНИТ оборудовали новый дом для брокеров и уложились в рекордно короткие сроки. ...
Telegram бот для персонализированной подборки статей с хабра Для вопросов в стиле "зачем?" есть более старая статья — Натуральный Geektimes — делаем пространство чище. Статей много, по субъективным причинам некоторые не нравятся, а некоторые, наоборот, жалко пропускать. Хочется оптимизировать этот процесс и экономить время. В вышеупом...
Реализация словаря в Python Всем привет, 30 апреля в ОТУС стартует курс «Алгоритмы для разработчиков», именно к этому приурочена публикация сегодняшнего материала. Начнём. В этой статье вы узнаете, как в Python реализованы словари. Словари индексируются с помощью ключей, и они могут рассматриваться ...
Своя видео-платформа или чем занять много вычислительных ресурсов. Part 1 На фото — первый летающий четырёхколёсный велосипед. Источник. Сегодня, благодаря доступности нужных сервисов, размещение видео в сети не является сложной задачей. Однако материалов по внутреннему устройству подобных систем не так уж и много, особенно в русскоязычном сегмен...
Принципы документирования и локализации, или как получить хорошую локализацию минимальными затратами Всем привет! Меня зовут Денисов Александр. Я работаю в компании Naumen и отвечаю за документирование и локализацию программного продукта Naumen Contact Center (NCC). В этой статье расскажу о тех проблемах, с которыми мы сталкивались при локализации NCC на английский и нем...
Интеграл Эйлера — Пуассона. Подробно о способах вычисления В статье подробно, вплоть до самых мелочей, рассмотрены три способа взятия интеграла Эйлера-Пуассона. В одном из способов выводится вспомогательная формула редукции. Для нахождения некоторых сложных интегралов можно использовать формулы редукции, которые позволяют понизить ...
[Перевод] Насколько хорошо вы знаете CSS? (+ мини-тест) Отличие между успешным использованием CSS и мучительными попытками справиться с ним, зачастую зависит от мелких деталей. На самом деле, в CSS очень много нюансов. Одна из наиболее часто встречающихся областей, где я часто замечаю такую борьбу — это стилизация макетов. Личн...
vCloud Director Extender: миграция В этой статье будет рассмотрена процедура расширения сети предприятия в облако провайдера посредством компонента VMware NSX® Edge™ Gateway Standalone. А также детально разобраны виды миграции виртуальных машин. Прежде чем приступать к миграциям и настройке сети...
[Перевод] Добавление Quartz в Spring Boot И снова здравствуйте. Специально для студентов курса «Разработчик на Spring Framework» подготовили перевод интересной статьи. В моей статье «Specifications to the Rescue» я показал как можно использовать JPA Specification в Spring Boot для реализации фильтрации в RESTful ...
О пиве глазами химика. Часть 3 Привет, %username%. Пока ты копаешься в своём девайсе, мы продолжаем тему о пиве, которую уже частично раскрыли тут, чуть более — тут, но всё ещё не останавливаемся на достигнутом! Я бесконечно рад, что всё-таки решил растянуть это на цикл статей, потому что по комментар...
Operating Systems: Three Easy Pieces. Part 4: Введение в планировщик (перевод) Введение в операционные системы Привет, Хабр! Хочу представить вашему вниманию серию статей-переводов одной интересной на мой взгляд литературы — OSTEP. В этом материале рассматривается достаточно глубоко работа unix-подобных операционных систем, а именно — работа с процесс...
[Перевод] Механизмы расширяемых расширений в JavaScript Здравствуйте, коллеги! Напоминаем, что не так давно у нас вышло 3-е издание легендарной книги «Выразительный JavaScript» (Eloquent JavaScript) — на русском языке напечатано впервые, хотя качественные переводы предыдущих изданий встречались в Интернете. Тем не менее, ни J...
Восхождение на Эльбрус — Разведка боем. Техническая Часть 2. Прерывания, исключения, системный таймер Продолжаем исследовать Эльбрус путем портирования на него Embox. Данная статья является второй частью технической статьи об архитектуре Эльбрус. В первой части речь шла о стеках, регистрах и так далее. Перед прочтением этой части рекомендуем изучить первую, поскольку в ней р...
Безопасность Helm Эмоджи классные, с их помощью можно даже отразить всю суть рассказа о самом популярном пакетном менеджере для Kubernetes: коробка — это Helm (это самое подходящее, что есть в последнем релизе Emoji); замок — безопасность; человечек — решение проблемы. Конечно, построить...
Как взять сетевую инфраструктуру под свой контроль. Глава третья. Сетевая безопасность. Часть третья Эта статья является пятой в цикле статей «Как взять сетевую инфраструктуру под свой контроль». Содержание всех статей цикла и ссылки можно найти здесь. Эта часть будет посвящена Campus (Office) & Remote access VPN сегментам. Может показаться, что дизайн офисной сети...
Электромобиль — это не для меня Дискуссии на тему что лучше, электромобили или автомобили с ДВС не утихают вот уже несколько лет, и с выходом каждой новой модели от известных брендов разгораются вновь и вновь. Пожалуй, для каждого, кто планирует приобретение нового автомобиля встаёт один и тот же вопрос, ...
Рубрика «Читаем статьи за вас». Июль — Сентябрь 2019 Привет, Хабр! Продолжаем публиковать рецензии на научные статьи от членов сообщества Open Data Science из канала #article_essense. Хотите получать их раньше всех — вступайте в сообщество! Статьи на сегодня: Layer rotation: a surprisingly powerful indicator of generalizati...
Рубрика «Читаем статьи за вас». Январь — Июнь 2019 Привет, Хабр! Продолжаем публиковать рецензии на научные статьи от членов сообщества Open Data Science из канала #article_essense. Хотите получать их раньше всех — вступайте в сообщество! Статьи на сегодня: Neural Ordinary Differential Equations (University of Toronto, 2...
[Перевод] Подготовка к Spring Professional Certification. Вопросы по Spring MVC Приветствую всех. Это уже 5 статья из цикла статей для подготовки с Spring Professional Certification. На Хабре она выходит второй, после части 1. Оглавление Внедрение зависимостей, контейнер, IoC, бины AOP (аспектно-ориентированное программирование) JDBC, транзакции, JPA...
PVS-Studio для Java В седьмой версии статического анализатора PVS-Studio мы добавили поддержку языка Java. Пришло время немного рассказать, как мы начинали делать поддержку языка Java, что у нас получилось и какие дальнейшие планы. И, конечно, в статье будут приведены первые испытания анализат...
Как распилить монолит на сервисы и сохранить производительность In-memory кэшей без потери консистентности Всем привет. Меня зовут Александр, я Java-разработчик в группе компаний Tinkoff. В данной статье хочу поделиться опытом решения проблем, связанных с синхронизацией состояния кэшей в распределенных системах. Мы столкнулись с ними, разбивая наше монолитное приложение на микр...
Шифрование трафика в Direct Connect, ч.2 – Ты кто??? – Я новый русский. – А я тогда кто?! Предисловие В первой части статьи мы обустраивали ADCs хаб и рассуждали о Direct Connect в целом. Сегодня нам предстоит научиться использовать такой хаб по прямому назначению. Для этого мы рассмотрим совместимые DC клиенты,...
Magento 2: импорт продуктов прямо в базу В предыдущей статье я описал процесс импорта продуктов в Magento 2 обычным способом — через модели и репозитории. Обычный способ отличается весьма низкой скоростью обработки данных. На моём ноутбуке выходило примерно один продукт в секунду. В данном продолжении я рассматрива...
[Перевод] Apache Kafka и RabbitMQ: семантика и гарантия доставки сообщений Подготовили перевод следующей части многосерийной статьи, где сравнивается функциональность Apache Kafka и RabbitMQ. В этой публикации речь идёт о семантике и гарантии доставки сообщений. Обращаем ваше внимание, что автор учитывал Кафку до версии 0.10 включительно, а в вер...