Социальные сети Рунета
Пятница, 19 апреля 2024

[recovery mode] Бинарные деревья поиска Прелюдия Эта статья посвящена бинарным деревьям поиска. Недавно делал статью про сжатие данных методом Хаффмана. Там я не очень обращал внимание на бинарные деревья, ибо методы поиска, вставки, удаления не были актуальны. Теперь решил написать статью именно про деревья. Пожа...

ld -z separate-code Речь в этой статье пойдёт о небольшой security-фиче, добавленной в GNU ld к релизу 2.30 в январе 2018 года. На русском языке это улучшение упоминалось на opennet с такой аннотацией: режим "-z separate-code", повышающий защищённость исполняемых файлов ценой небольшого увели...

QVD-файлы — что внутри, часть 2 В первой статье о структуре QVD файла я описал общую структуру и достаточно подробно остановился на метаданных. В этой статье я опишу формат хранения информации о колонках, поделюсь своим опытом трактовки этих данных. Итак (вспоминаем) QVD файл соответствует реляционной табл...

Алгоритм мышления и сознания, часть 2 Данный текст содержит пояснения к алгоритму из моей первой статьи “Алгоритм мышления и сознания”. Тезисы первой статьи: Феномен субъективного мышления можно алгоритмизовать. Предъявленный в статье алгоритм мыслит и этим можно воспользоваться практически. С помощью алгорит...

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

Optlib. Реализация генетического алгоритма оптимизации на Rust В этой статье описывается библиотека optlib, предназначенная для решения задач глобальной оптимизации на языке Rust. На момент написания этой статьи в этой библиотеке реализован генетический алгоритм нахождения глобального минимума функции. Библиотека optlib не привязана к к...

[Из песочницы] Элементарные шифры на понятном языке Привет, Хабр! Все мы довольно часто слышим такие слова и словосочетания, как «шифрование данных», «секретные шифры», «криптозащита», «шифрование», но далеко не все понимают, о чем конкретно идет речь. В этом посте разберемся, что из себя представляет шифрование и рассмотрим...

[Из песочницы] Сравнение: Svelte и React На сайте React'a есть туториал, в котором описывается разработка игры Tic Tac Toe. Я решил повторить разработку этой игры на Svelte. Статья охватывает только первую половину туториала, до реализации истории ходов. Для целей ознакомления с фреймворком этого вполне достаточно....

[Из песочницы] Импорт OpenStreetMap. От бинарного исходника к таблице в БД в несколько шагов Обычно, когда кто-то говорит про OSM, то в голове всплывает какой-нибудь из веб-сервисов, или приложение вроде Maps.me, основанные на данных OSM. На самом деле проект OSM — это в первую очередь данные, всё остальное по сути частные случаи их использования. Сервисы предоставл...

Импортозамещение на практике. Часть 2. Начало. Гипервизор В предыдущей статье были рассмотрены варианты, на что можно заменить существующие системы в рамках выполнения приказа об импортозамещении. Далее в статьях речь пойдет о выборе конкретных продуктов для замены развернутых в настоящее время. Начнем с точки отсчета — системы вир...

[Перевод] Монорепозитории: пожалуйста не надо От переводчика: Привет, Хабр! Да, это очередная статья о преимуществах и недостатках монорепозиториев. Собирался написать свою статью о том, как мы используем монорепозиторий, как мы переходили с maven на bazel и что из этого получилось. Но пока собирался с мыслями, вышла от...

[Перевод] Трассировка лучей на GPU в Unity — Часть 3 [Первая и вторая части.] Сегодня мы совершим большой скачок. Мы отойдём от исключительно сферических конструкций и бесконечной плоскости, которые трассировали ранее, и добавим треугольники — всю суть современной компьютерной графики, элемент, из которого состоят все виртуа...

[Перевод] Топ-5 JS-фреймворков для фронтенд-разработки в 2020 году. Часть 2 Публикуем вторую часть перевода материала, посвящённого пятёрке лучших JavaScript-инструментов для разработки клиентских частей веб-проектов. В первой части речь шла о библиотеке React и о фреймворке Angular. Здесь мы обсудим Vue, Ember и Backbone. Читать дальше →

[Перевод] Объясняем код с помощью ASCII-арта Примечание от переводчика: типично пятничная статья во вторник утром… почему бы и нет? Большинство людей — визуалы. Они используют изображения, чтобы вникнуть в суть проблемы. А вот мэйнстримные языки программирования, напротив, основаны на текстовом представлении. Возник...

[Перевод] Современный рендеринг текста в Linux: часть 1 Добро пожаловать в первую часть «Современного рендеринга текста в Linux». В каждой статье из этой серии мы разработаем самодостаточную программу на C для визуализации символа или последовательности символов. Каждая из этих программ будет реализовывать функцию, которую я счит...

Реализация горячей перезагрузки С++ кода в Linux и macOS: копаем глубже *Ссылка на библиотеку и демо видео в конце статьи. Для понимания того, что происходит, и кто все эти люди, рекомендую прочитать предыдущую статью. В прошлой статье мы ознакомились с подходом, позволяющим осуществлять "горячую" перезагрузку c++ кода. "Код" в данном случае — ...

[Перевод] Алгоритмы обнаружения контуров изображения В статье представлены четыре самых распространённых алгоритма обнаружения контуров. Первые два, а именно алгоритм трассировки квадратов и трассировка окрестностей Мура, просты в реализации, а потому часто применяются для определения контура заданного паттерна. К сожалению, ...

Тайна прошивок Авторы: к.ф.-м.н. Чернов А.В. (monsieur_cher) и к.ф.-м.н. Трошина К.Н. Как с помощью самых общих предположений, основанных на знании современных процессорных архитектур, можно восстановить структуру программы из бинарного образа неизвестной архитектуры, и дальше восстановит...

[Перевод] Генератор подземелий на основе узлов графа В этом посте я опишу алгоритм процедурной генерации уровней двухмерного подземелья с заранее заданной структурой. В первой части будет представлено общее описание, а во второй — реализация алгоритма. Введение Алгоритм был написан как часть работы на получение степени бакал...

[Перевод] Деревья квадрантов и распознавание коллизий Эта неделя была короткой, в понедельник и вторник я продолжал работать над системой 2D-освещения. Остальное время я потратил на реализацию деревьев квадрантов (quadtree). В этой статье я поделюсь своей реализацией и мыслями, возникшими в процессе её проектирования. Во-пер...

Рекомендательная система для Directum Club. Часть первая, коллаборативная Каждый день пользователи по всему миру получают большое количество различных рассылок — только через сервис MailChimp ежедневно рассылают миллиард писем. Из них открывают 20.81%. Ежемесячно пользователи наших сайтов получают рассылки с отобранными редактором материалами. Эти...

[Перевод] Reflective Shadow Maps: Часть 2 ― Реализация Привет, Хабр! В данной статье представлена простая реализация Reflective Shadow Maps (алгоритм описан в предыдущей статье). Далее я объясню, как я это сделал и какие подводные камни были. Также будут рассмотрены некоторые возможные оптимизации. Рисунок 1: Слева направо: бе...

Мюонный катализ с точки зрения квантовой химии. Часть II: электронная vs. мюонная химическая связь Многабукафф о том, что квантовая химия думает о принципе работы мюонного катализа: как именно мюон понижает температуру требуемой плазмы. В двух частях (первую часть можно прочитать тут). Суть второй части проста: мюон тяжелее, чем электрон, поэтому он обеспечивает более пр...

[Перевод] Лямбды: от C++11 до C++20. Часть 2 Привет, хабровчане. В связи со стартом набора в новую группу по курсу «Разработчик C++», делимся с вами переводом второй части статьи «Лямбды: от C++11 до C++20». Первую часть можно прочитать тут. В первой части серии мы рассмотрели лямбды с точки зрения C++03, C++11 и C+...

Tic Tac Toe, часть 1 В статье "Сравнение: Svelte и React" я попробовал повторить разработку игры Tic Tac Toe. Там я выполнил только первую часть исходного туториала для React'а без поддержки истории ходов. В этой статье мы начнем разработку этой игры с применением фреймворка Svelte с поддержкой ...

[Перевод] История о V8, React и падении производительности. Часть 1 В материале, первую часть перевода которого мы публикуем сегодня, речь пойдёт о том, как JavaScript-движок V8 выбирает оптимальные способы представления различных JS-значений в памяти, и о том, как это влияет на внутренние механизмы V8, касающиеся работы с так называемыми фо...

[Перевод] Функциональное мышление. Часть 11: Финал Сегодня мы заканчиваем нашу серию статей о функциональном программировании. Получилось 11 частей. Я считаю, что это достижение. В этой статье реализуем простой стековый калькулятор (также известный как "обратная Польская нотация"). Реализация практически полностью построена ...

Слёрм DevOps: от Git до SRE со всеми остановками 4-6 сентября в Санкт-Петербурге, в конференц-зале Selectel пройдет трехдневный Слёрм DevOps. Мы строили программу, исходя из мысли, что теоретические труды по DevOps, как и мануалы к инструментам, каждый может прочитать самостоятельно. Интересны только опыт и практика: расс...

ShIoTiny и окружающий мир: подключение датчиков к бинарным входам, дребезг контактов и другие вопросы Основные тезисы или о чем эта статья Очередная статья о ShIoTiny — визуально программируемом контроллере на базе чипа ESP8266. В статье описаны особенности подключения датчиков различных типов к бинарным входам контроллера ShIoTiny. Кроме того, имеются ответы на ряд популяр...

[Перевод] Новшества JavaScript: итоги Google I/O 2019. Часть 1 Материал, первую часть перевода которого мы сегодня публикуем, посвящён новым стандартным возможностям JavaScript, о которых шла речь на конференции Google I/O 2019. В частности, здесь мы поговорим о регулярных выражениях, о полях классов, о работе со строками. Ретроспект...

Искусственный интеллект превращает сигналы мозга в человеческую речь — послушайте сами В будущем немые люди смогут свободно и внятно произносить слова благодаря устройствам, превращающим их мозговую активность в синтезированный голос. Исследователи из Калифорнийского университета в Сан-Франциско недавно сделали большой шаг в улучшении этой технологии, позволи...

[Перевод] Типы для HTTP-API, написанных на Python: опыт Instagram Сегодня мы публикуем второй материал из цикла, посвящённого использованию Python в Instagram. В прошлый раз речь шла проверке типов серверного кода Instagram. Сервер представляет собой монолит, написанный на Python. Он состоит из нескольких миллионов строк кода и имеет неско...

«И невозможное возможно»: превращаем черный ящик в белый с помощью бинарного анализа На данный момент существует два основных подхода к поиску уязвимостей в приложениях — статический и динамический анализ. У обоих подходов есть свои плюсы и минусы. Рынок приходит к тому, что использовать надо оба подхода — они решают немного разные задачи с разным результа...

[Перевод] Samsung SSD 860 QVO 1 ТB и 4 ТB: первый потребительский SATA QLC (2 часть) Часть 1 Часть 2 Произвольное чтение В первом тесте производительности произвольного чтения используются очень короткие пакеты операций, выполняемые по одному, без очереди. Накопители имеют такое время простоя между пакетами, чтобы рабочее время составило 20%, поэтому термич...

[Из песочницы] Пишем VLC плагин для изучения английского В данной статье я расскажу о том, как написать плагин на языке C для медиаплеера VLC. Я написал свой плагин для упрощения просмотра сериалов и фильмов на английском языке. Идея создания этого плагина описывается в разделах Идея и Поиск решения. Технические детали реализаци...

[Перевод] Reflective Shadow Maps: Часть 1 Привет, Хабр! Представляю вашему вниманию перевод статьи «Reflective Shadow Maps» автора Eric Polman. Reflective Shadow Maps (RSM) (отражающие карты теней) ― это алгоритм, расширяющий “простые” shadow map. Алгоритм учитывает свет, рассеянный после первого попадания на пов...

[Перевод] Создание динамических PDF-файлов с использованием React и Node.js Материал, перевод которого мы сегодня публикуем, посвящён созданию динамических PDF-файлов с использованием HTML-кода в качестве шаблона. А именно, речь пойдёт о том, как сформировать простой счёт на оплату неких товаров или услуг, динамические данные, включённые в который, ...

Линейная регрессия и методы её восстановления Источник: xkcd Линейная регрессия является одним из базовых алгоритмов для многих областей, связанных с анализом данных. Причина этому очевидна. Это очень простой и понятный алгоритм, что способствует его широкому применению уже многие десятки, если не сотни, лет. Идея зак...

[Перевод] Тот день, когда я полюбил фаззинг В 2007 году я написал пару инструментов для моддинга космического симулятора Freelancer. Ресурсы игры хранятся в формате “binary INI” или “BINI”. Вероятно, бинарный формат выбрали ради производительности: такие файлы быстрее загружать и читать, чем произвольный текст в форма...

NLP. Основы. Техники. Саморазвитие. Часть 2: NER Первую часть статьи об основах NLP можно прочитать здесь. А сегодня мы поговорим об одной из самых популярных задач NLP – извлечении именованных сущностей (Named-entity recognition, NER) – и разберем подробно архитектуры решений этой задачи. Читать дальше →

[Из песочницы] Алгоритм нечеткого поиска TextRadar — основные подходы Алгоритм нечеткого поиска TextRadar — основные подходы В отличие от нечеткого сравнения строк, когда обе сравниваемых строки равнозначны, в задаче нечеткого поиска выделяются строка поиска и строка данных, а определить необходимо не степень похожести двух строк, а степень пр...

Google открывает исходный код парсера robots.txt Сегодня компания Google анонсировала черновик RFC стандарта Robots Exclusion Protocol (REP), попутно сделав доступным свой парсер файла robots.txt под лицензией Apache License 2.0. До сегодняшнего дня какого-либо официального стандарта для Robots Exclusion Protocol (REP) и...

Переводчик Google научился имитировать голос пользователя В 2018 появились первые демонстрации работы нового проекта Duplex. Это расширение ассистента Google могло совершать звонки самостоятельно и голосом бронировать столик в ресторане, номер в гостинице или заказывать билеты. Компания смогла добиться такого звучания компьютерного...

AERODISK Engine: Катастрофоустойчивость. Часть 1 Привет, читатели хабра! Темой этой статьи будет реализация средств катастрофоустойчивости в системах хранения AERODISK Engine. Изначально мы хотели написать в одной статье про оба средства: репликацию и метрокластер, но, к сожалению, статья получилась слишком большой, поэто...

Алгоритм взаимодействия сотен тысяч уникальных частиц на GPU, в GLES3 и WebGL2 Описание алгоритма логики, и разбор рабочего примера в виде техно-демки-игры WebGL2 версия этой демки https://danilw.itch.io/flat-maze-web остальные ссылки смотрите в статье. Статья разбита на две части, сначала про логику, и вторая часть про применение в игре, первая часть...

Граф Скоринг де ля Фер или исследование на тему кредитного скоринга, в рамках расширения кругозора. Ч.3 Часть третья, в которой Атос выпал в осадок, а Граф де ля Фер мудрит с алгоритмами. UPD Часть первая здесь UPD Часть вторая здесь AntipovSN and MihhaCF Вступление от авторов: Добрый день! Сегодня мы продолжаем цикл статей, посвященных скорингу и использованию в оном теории г...

Управление параметрами в бизнес-приложениях по аналогии с системой контроля версий В различных приложениях регулярно возникает задача по поддержке логики изменения во времени некоторого атрибута объекта относительно некоторого субъекта (или субъектов). Например, это может быть изменение розничной цены товара в магазинах или показателей KPI для сотруднико...

Работа не волк, часть 1. Поиск работы: 9 кругов HR-a Поиск работы вызывает неприятные тревожно-азартные ощущения и у вчерашнего студента, и у профессионала с годами опыта за плечами. Это не признак неуверенности в себе, это проблема всей отрасли поиска персонала: мы идём на собеседование и понимаем, что не всё может зависеть о...

[Из песочницы] Систематические корректирующие коды. Линейно групповой код В данной публикации будет рассматриваться линейно групповой код, как один из представителей систематических корректирующих кодов и предложена его реализация на C++. Что из себя представляет из себя корректирующий код. Корректирующий код – это код направленный на обнаружение...

Arend – язык с зависимыми типами, основанный на HoTT (часть 1) В данном посте мы поговорим о только что выпущенном JetBrains языке с зависимыми типами Arend. Этот язык разрабатывался JetBrains Research на протяжении последних нескольких лет. И хотя репозитории уже год назад были выложены в открытый доступ на github.com/JetBrains, полноц...

ShIoTiny: обновления и уведомления О чем эта статья Продолжаем цикл статей о ShIoTiny — визуально программируемом контроллере на базе чипа ESP8266. В этой статье рассказано о том, что изменилось со времени предыдущей прошивки ShIoTiny: как изменился интерфейс пользователя; как переназначить «ножки» и други...

[recovery mode] ShIoTiny: часы без пружины или реальное время и как с ним работать О чем эта статья Продолжаем цикл статей о ShIoTiny — визуально программируемом контроллере на базе чипа ESP8266. В этот статье рассказано о часах реального времени в контроллере ShIoTiny, синхронизации времени и использовании узлов работы с часами. Сайт проекта ShIoTiny...

[Перевод] Разработка Adblock Radio tl;dr: Adblock Radio распознаёт аудиорекламу с помощью машинного обучения и Shazam-подобных техник. Основной движок с открытым исходным кодом: используйте его в своих продуктах! Можно объединить усилия для поддержки большего количества радиостанций и подкастов. Мало кому н...

Ломаем простую «крякми» при помощи Ghidra — Часть 2 В первой части статьи мы при помощи Ghidra провели автоматический анализ простой программы-крякми (которую мы скачали с сайта crackmes.one). Мы разобрались с тем, как переименовывать «непонятные» функции прямо в листинге декомпилятора, а также поняли алгоритм программы «верх...

[Из песочницы] Облачный Умный Дом. Часть 1: Контроллер и датчики Сегодня, благодаря бурному развитию микроэлектроники, каналов связи, Интернет-технологий и Искусственного Интеллекта, тема умных домов становится все более и более актуальной. Человеческое жилище претерпело существенные изменения со времен каменного века и в эпоху Промышле...

Безопасность алгоритмов машинного обучения. Защита и тестирование моделей с использованием Python В рамках предыдущей статьи мы рассказали про такую проблему машинного обучения, как Adversarial примеры и некоторые виды атак, которые позволяют их генерировать. В данной статье речь пойдет об алгоритмах защиты от такого рода эффекта и рекомендациях по тестированию моделей....

PVS-Studio идёт в облака – запуск анализа на Travis CI На данный момент облачные CI-системы — очень востребованный сервис. В этой статье мы расскажем, как, с помощью уже существующих средств, доступных в PVS-Studio, можно интегрировать анализ исходного кода с облачной CI платформой, на примере сервиса Travis CI. Читать дальше ...

MU-MIMO: один из алгоритмов реализации Предисловие В качестве дополнения к моей недавней статье хотелось бы также поговорить о теме MU (Multi User) MIMO. Есть у мною уже упомянутого профессора Хаардта одна очень известная статья, где он вместе со своими коллегами предлагает алгоритм разделения пользователей по ни...

[Перевод] Опыт кандидата при рекрутинге разработчиков программного обеспечения. Часть 2 Добрый день. Делимся с вами второй частью статьи о рекрутинге разработчиков ПО, которая приурочена к запуску курса «IT-Recruiter». Первую часть можно прочитать тут. Уведомление привлекательно Итак, вы сходили на свое первое свидание, а потом… ничего. Вы звоните на следую...

[Перевод] Обучение с подкреплением на языке Python Привет, коллеги! В последней публикации уходящего года мы хотели упомянуть о Reinforcement Learning — теме, книгу на которую мы уже переводим. Посудите сами: нашлась элементарная статья с Medium, в которой изложен контекст проблемы, описан простейший алгоритм с реализаци...

[Перевод] Создание процедурного генератора головоломок В этом посте описывается генератор уровней для моей игры-головоломки Linjat. Пост можно читать и без подготовки, но он легче усвоится, если сыграть в несколько уровней. Исходный код я выложил на github; всё обсуждаемое в статье находится в файле src/main.cc. Примерный план ...

ShIoTiny и окружающий мир: аналоговые датчики или АЦП для самых маленьких Основные тезисы или о чем эта статья Продолжение серии статей о ShIoTiny — визуально программируемом контроллере на базе чипа ESP8266. Ключевой особенностью данного контроллера является возможность его программирования путем рисования программы в браузере. В данной статье о...

[Из песочницы] Организация поиска по веб-странице на JavaScript (без jQuery) Пару дней назад получил тестовое задание от компании на вакансию Front-end dev. Конечно же, задание состояло из нескольких пунктов. Но сейчас речь пойдет только об одном из них — организация поиска по странице. Т.е. банальный поиск по введенному в поле тексту (аналог Ctrl+F ...

Превращая FunC в FunCtional: как Serokell победили в Telegram Blockchain Competition Вы наверняка слышали о том, что Telegram собирается запустить блокчейн-платформу Ton. Но вы могли пропустить новость, что не так давно Telegram объявил конкурс на реализацию одного или нескольких смарт-контрактов для этой платформы. Команда Serokell с богатым опытом разрабо...

Разработка собственного ядра для встраивания в процессорную систему на базе ПЛИС Итак, в первой статье цикла говорилось, что для управления нашим оборудованием, реализованным средствами ПЛИС, для комплекса Redd лучше всего использовать процессорную систему, после чего на протяжении первой и второй статей показывал, как эту систему сделать. Хорошо, она ...

Работа не волк, часть 2. Пройти босса и выжить на испытательном сроке Новая работа — маленькая (а иногда и не очень) новая жизнь. Самое главное это начать её правильно, чтобы верный старт стал началом отличного пути. После того, как вы прошли HR-а, остаётся два важных шага: пройти собеседование с руководителем и удачно завершить испытательный ...

Как создать Python wrapper и не сойти с ума Недавно на Хабре прочитал статью про очень полезный инструмент, и так как я уже давно искал какой-то проект, чтобы начать контрибьютить, решил посмотреть, что там есть на гитхабе и чем можно помочь. Одно из issue было на счет создания обертки (дальше буду использовать wrappe...

Google представила инструмент для синхронного перевода речи с сохранением голоса и интонации Важной особенностью разработки стало то, что она позволяет переводить разговоры с сохранением голоса и интонации говорящего. При этом конвертация голоса в текст и обратно не производится, как в случае с "Google.Переводчиком". Translatotron пропускает этот этап и ра...

[recovery mode] Вертикальное письмо в современном IT Привет, Хабр! Двунаправленным письмом в наше время никого не удивить. Оно поддерживается управляющими символами Уникода, для него создан HTML-тег <bdo>. Но горизонтальные письменности – не единственные существующие и применяемые для записи человеческой речи. Кроме обыч...

[Перевод] Распознавание источников освещения на картах окружения В этой статье представлена реализация на Python алгоритма распознавания источников освещения на картах окружения (LDR или HDR) при помощи равнопромежуточной проекции (equirectangular projection). Однако после внесения незначительных изменений её также можно использовать с п...

[Из песочницы] Лучшие практики React и советы, которые каждый разработчик должен знать. Часть 1 Привет, Хабр! Представляю вашему вниманию перевод статьи «React Best Practices & Tips Every React Developer Should Know Pt.1» автора Alex Devero. React — одна из самых популярных библиотек для построения интерактивных пользовательских интерфейсов. В этой статье я пока...

Пиксельные отступы в текстурной развертке Представляем четвертую статью нашего цикла о работе с 3D-моделями в Unity. Предшествующие статьи: «Особенности работы с Mesh в Unity», «Unity: процедурное редактирование Mesh», «Импорт 3D-моделей в Unity и подводные камни». В предыдущей статье мы упомянули о проверке тексту...

[Из песочницы] 10 понятий для дизайнера в 2019-м Среда работы UI/UX дизайнеров стремительно расширяется и растет: появляется уйма новых продуктов и инструментов для разработки интерфейсов, крутых возможностей благодаря развитию гибких языков программирования и, конечно же, в дизайнерскую экосферу внедряется множество новых...

[Из песочницы] На одной асимптотике далеко не уедешь… Любители посоревноваться в алгоритмах часто говорят об асимптотике того или иного решения задачи. При этом нередко можно встретить высказывания, что, мол, «вот этот» алгоритм работает за O(n), а «вон тот»  – за O(n·log(n)), значит первый однозначно быстрее и, следовательно,...

[Из песочницы] Алгоритм мышления и сознания В этой статье изложен алгоритм мышления и сознания. Я предлагаю свой ответ на вопрос о том как работает мышление и сознание. И демонстрирую алгоритм, который умеет по-настоящему, творчески, думать и обладает настоящим сознанием. Статья рассчитана на программистов и состоит и...

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

[Перевод] SSD GIGABYTE Aorus RGB M.2: мал, да удал даже для RGB-светодиодов (2 часть) Часть 1 >> Часть 2 Производительность случайного чтения В первом тесте производительности случайного чтения используются очень короткие пакеты операций, выполняемые по одному, и без очереди. Диски получают достаточно времени простоя между пакетами, чтобы общий рабочий...

Пишем XGBoost с нуля — часть 2: градиентый бустинг Всем привет! В прошлой статье мы разбирались, как устроены решающие деревья, и с нуля реализовали алгоритм построения, попутно оптимизируя и улучшая его. В этой статье мы реализуем алгоритм градиентого бустинга и в конце создадим свой собственный XGBoost. Повествование буд...

Восхождение на Эльбрус — Разведка боем. Техническая Часть 2. Прерывания, исключения, системный таймер Продолжаем исследовать Эльбрус путем портирования на него Embox. Данная статья является второй частью технической статьи об архитектуре Эльбрус. В первой части речь шла о стеках, регистрах и так далее. Перед прочтением этой части рекомендуем изучить первую, поскольку в ней р...

Криптовалютный океан: обзор топ-50 проектов с CoinMarketCap Когда смотришь на бесконечный список криптовалют на CoinMarketCap, первый вопрос который приходит в голову: а чем все они отличаются? И зачем их столько? Первый же ответ из зала — это все хайп и маркетинг! Но осознанные люди не поддаются очарованию простых ответов. Чтобы от...

[Из песочницы] JavaScript: Создание простого MEVN-приложения О чем статья Цель этой статьи — показать, как можно создать базовое MEVN-приложение. Акроним MEVN означает — MongoDB + Express.js + Vue.js + Node.js. В качестве примера будет написано одностраничное приложение, которое содержит форму, состоящую из нескольких текстовых полей....

[Перевод] Подготовка приложения к Android Q. Часть 2 Перевод статьи подготовлен специально для студентов курса «Android-разработчик. Базовый курс». Также напоминаем о том, что мы продолжаем набор на расширенный курс «Специализация Android-разработчик» О конфиденциальности и безопасности можно прочитать в первой части статьи...

Синтетические символы и модули (WinDbg/DbgEng) В этой публикации речь пойдет о синтетических модулях и символах отладочного движка Windows (debugger engine). То есть о сущностях, которые можно искусственно добавить в отладчик для раскраски адресов памяти. Читать дальше →

Save File Me — бесплатный сервис бакапов с шифрованием на стороне клиента Каждый администратор знает, на сколько важно делать ежедневные резервные копии. Для меня «идеальный» сервис резервирования это: Отсутствие регистрации, привязки к почтовому адресу и т.п. Возможность создавать независимые учетные записи, под каждый проект Шифрование на сто...

Как поделить архитектуру и реализацию и не поругаться Создание новой системы — многоэтапный процесс: проработка концепции и дизайна, проектирование архитектуры, реализация, тестирование, релиз. Проектирование архитектуры и реализация — это те этапы, которыми в первую очередь занимаются разработчики. Большинство разработчиков лю...

.NET: Инструменты для работы с многопоточностью и асинхронностью. Часть 2 Публикую на Хабр оригинал статьи, перевод которой размещен в блоге Codingsight. Я продолжаю создавать текстовую версию своего выступления на митапе по многопоточности. С первой частью можно ознакомиться здесь или здесь, там речь больше шла о базовом наборе инструментов, что...

[Перевод] 5 важных и упущенных навыков, необходимых лучшему разработчику Предисловие Вы видели эти статьи тысячу раз: «10 вещей, которые нужно создать чтобы стать лучшим разработчиком.» «Лучшие фреймворки для изучения в 2019.» «Сделайте это чтобы стать разработчиком Rockstar.» «Прочитайте эти десять технических книг, и Вы станете успешным раз...

Динамическая генерация DAG в Airflow Всем привет! Меня зовут Антон, в Ростелекоме я занимаюсь разработкой центрального хранилища данных. Наше хранилище состоит из модулей, в качестве оркестратора которых используются несколько инстансов Informatica, часть из которых мы хотим перевести на Airflow в рамках перехо...

Нейросеть научили воссоздавать 3D-модель человека по фотографии Американские и японские разработчики научили нейросеть создавать цветную 3D-модель человека по одной или нескольким фотографиям. Особенность алгоритма заключается в том, что он достаточно качественно воссоздает даже вид со спины, которая не видна на исходном снимке, рассказы...

Реализация словаря в Python Всем привет, 30 апреля в ОТУС стартует курс «Алгоритмы для разработчиков», именно к этому приурочена публикация сегодняшнего материала. Начнём. В этой статье вы узнаете, как в Python реализованы словари. Словари индексируются с помощью ключей, и они могут рассматриваться ...

Об open-source реализациях хэш-функции ГОСТ Р 34.11-2012 и их влиянии на электронную подпись ГОСТ Р 34.10-2012 В свое время реализация отечественных криптографических алгоритмов в библиотеке libgcrypt очень меня вдохновила. Стало возможным задействовать эти алгоритмы и в Kleopatra и в Kmail и в GnuPg в целом, рассматривать библиотеку libgcrypt как алтернативу openssl с ГОСТ-ым engine...

Примеры дичи из заказов «приходите спасать» (разбор десятка инцидентов с примерами) Иногда бывает так: — Приезжайте, у нас упало. Если сейчас не поднять — покажут по телевизору. И мы едем. Ночью. На другой край страны. Ситуация, когда не повезло: на графике показан резкий рост нагрузки на СУБД. Очень часто это первое, на что смотрят администраторы систем...

Часть 5/2 корп. 1: Перекрёсток проспекта RocketChip и скользкой дорожки инструментации В предыдущих четырёх частях велась подготовка к экспериментам с RISC-V ядром RocketChip, а именно, портирование этого ядра на «нестандартную» для него плату с ПЛИС фирмы Altera (теперь уже Intel). Наконец, в прошлой части на этой плате получилось запустить Linux. Знаете, что...

Брешь Microsoft Office 365 позволила вести омограф-атаки Злоумышленники нашли новый способ заманить пользователей на опасные сайты в обход защитных систем Microsoft Office 365. Техника построена на использовании пробелов нулевой ширины (zero-width spaces) — невидимых для пользователя символов, которые мешают антиспам-фильтрам расп...

[Из песочницы] Как сойти за хорошего программиста Привет, Хабр! Представляю вашему вниманию перевод статьи «How To Fake Being a Good Programmer» автора Stan Sootla. Программисты – это, своего рода, волшебники: слегка потрепанные персонажи-бедняки, которые умеют превращать кофе в строчки кода. Я не владею магией, я всего ...

Сжатие указателей в Java В статье речь пойдет о реализации сжатия указателей в Java Virtual Machine 64-bit, которая контролируется опцией UseCompressedOops и включена по-умолчанию для 64 битных систем начиная с Java SE 6u23. Читать дальше →

[Из песочницы] Установка OpenCV + CUDA на Windows Введение В данной статье речь пойдет о сборке и установке OpenCV 4 из исходных файлов с дополнительными модулями CUDA 10 на ОС Windows. Я постарался включить сюда все тонкости и нюансы, с которыми можно столкнуться в ходе установки, и про которые не написано в официальном м...

[Перевод] Профилирование Unity UI: кто портит мой батчинг? Вы потратили бесконечное количество времени на оптимизацию Unity UI. Но для того, чтобы вызвать торможения, достаточно небольшой модификации крошечного атрибута почти невидимого элемента UI Canvas. И когда такое случается, даже профилирование Unity UI не спасёт вас от сниже...

Amazon запатентовала криптографическую систему на базе алгоритма Proof-of-Work Технологический гигант Amazon заинтересовался исследованием криптовалютных технологий. Об этом свидетельствует полученный компанией патент, в котором среди прочего упоминается алгоритм консенсуса Proof-of-Work и структура данных «дерево Меркла», сообщает CoinDesk. ...

[Перевод] Sketch + Node.js: генерируем иконки для множества платформ и брендов. Часть 2 Это вторая часть статьи о создании инструмента, способного экспортировать все помещённые в Sketch-файл иконки: в разных форматах, для разных платформ, с возможностью A/B-тестирования каждой из иконок. Первую часть вы можете прочесть по ссылке. В прошлый раз мы подготов...

Много иероглифов – много нейросетей: как построить эффективную систему распознавания для большого числа классов? В прошлых статьях уже писали о том, как у нас устроены технологии распознавания текста: Навигатор по серии постов Распознавание текста в ABBYY FineReader (1/2) Распознавание текста в ABBYY FineReader (2/2) Примерно так же до 2018 года было устроено распознавание японских и ...

Учебные проекты на Godot — Pong (часть 1) Создание и настройка сцены игрового процесса Приветствую вас, хабровчане! Как и обещал в конце прошлой статьи, я обратил свой взгляд на игровой движок. Правда мне больше приглянулся Godot. Почему? Тема для отдельной статьи размышления, а я не умею долго думать и, тем более, размышлять. Несмотря на то, что Pong имеетс...

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

[Из песочницы] Справочник начинающего подкастера Эта статья — краткое руководство для тех, кто хочет запустить свой собственный подкаст. Когда я вместе с моим нынешним соведущим год назад запускал подкаст “В бесконечность и далее”, я не смог найти ни одной по-настоящему всеобъемлющей статьи. Поэтому я решил попытаться запо...

[Из песочницы] Выигрышная стратегия Гомоку – 35 ходов При игре по стандартным правилам Гомоку для выигрыша черным требуется не более 35 ходов. В статье Вашему вниманию представлена полная выигрышная стратегия и соответствующий алгоритм игры. Демонстрация полного решения – здесь – можно поиграть и найти самые длинные варианты. ...

[Перевод] Поиск пути среди круглых препятствий Навигация по лесу Алгоритм поиска пути A* — это мощный инструмент для быстрой генерации оптимальных путей. Обычно A* демонстрируют при навигации по картам из сеток, но он может использоваться не только для сеток! Он может работать с любыми графами. Можно использовать A* для ...

Sony представила устройство, превращающее любые часы в умные. Но стоит оно очень дорого! Гаджет под названием Sony Wena по сути представляет собой умный ремешок, которым можно заменить ремешок обычных часов. У него есть небольшой экран для вывода уведомлений со смартфона, а также модули NFC, GPS и ЧСС.

Инвентаризация от И до Я. Считаем ИТ-активы На этом скриншоте результат работы Quest KACE относительно компьютера бухгалтера одной из российских компаний. Выяснилось, что часть ПО установлена, но не используется. Здесь приведены цены, по которым это ПО закупалось. В вашем случае цена на ПО может отличаться, здесь ва...

Интервью с Виталием Брагилевским: «Мир, в котором все будут программировать на Haskell — это вряд ли хороший мир» Виталий Брагилевский (@_bravit) пока что еще преподает в ЮФУ курсы по Haskell и теории алгоритмов. Также, дает выездные курсы в других городах, является редактором и переводчиком множества книг о Haskell и функциональном программировании, состоит в комитетах Haskell 2020 и...

Стохастический градиентный спуск(SGD) для логарифмической функции потерь(LogLoss) в задаче бинарной классификации Предыдущая часть (про линейную регрессию, градиентный спуск и про то, как оно всё работает) — habr.com/ru/post/471458 В этой статье я покажу решение задачи классификации сначала, что называется, «ручками», без сторонних библиотек для SGD, LogLoss'а и вычисления градиентов, ...

Новый голосовой переводчик Google сохраняет интонацию и голос исходного языка Google представила новую экспериментальную нейросеть Translatotron, способную напрямую переводить речь на другой язык, не используя ее текстовое представление, и сохранять голосовые данные и темп речи говорящего, сообщается в блоге компании. Система с долгой краткосрочной п...

[Из песочницы] Структура Data Science-проекта с высоты птичьего полета Как узнать наверняка, что внутри у колобка? Может, ты его проглотишь, а внутри него река? © Таня Задорожная Что такое Data Science сегодня, кажется, знают уже не только дети, но и домашние животные. Спроси любого котика, и он скажет: статистика, Python, R, BigData, маш...

[Перевод] Оптимизация загрузки JavaScript-кода в Wikipedia Автор материала, перевод которого мы сегодня публикуем, говорит, что он, в середине сентября 2019, наконец-то завершил проект, которым занимался уже год. Целью этого проекта было сокращение размеров манифеста, необходимого для инициализации асинхронного JavaScript-конвейера ...

Реализация целого типа в CPython На Хабре уже были статьи о подробностях реализации менеджера памяти CPython, Pandas, я написал статью про реализацию словаря. Казалось бы, что можно написать про обычный целочисленный тип? Однако тут не всё так просто и целочисленный тип не такой уж и очевидный. Если вам и...

Устройство компилятора Swift. Часть 3 Продолжаем изучать компилятор Swift. Эта часть посвящена Swift Intermediate Language. Если вы не видели предыдущие, рекомендую перейти по ссылке и прочитать: Общий обзор компонентов. Разбор исходного файла. Читать дальше →

Архитектура AERODISK vAIR или особенности национального кластеростроения Привет, Хабровчане! Мы продолжаем знакомить вас с российской гиперконвергентной системой AERODISK vAIR. В этой статье речь пойдет об архитектуре данной системы. В прошлой статье мы разобрали нашу файловую систему ARDFS, а в данной статье пройдёмся по всем основным программн...

Operating Systems: Three Easy Pieces. Part 5: Планирование: Multi-Level Feedback Queue (перевод) Введение в операционные системы Привет, Хабр! Хочу представить вашему вниманию серию статей-переводов одной интересной на мой взгляд литературы — OSTEP. В этом материале рассматривается достаточно глубоко работа unix-подобных операционных систем, а именно — работа с процесс...

Make Your Database Dream of Electric Sheep: Designing for Autonomous Operation Как вы думаете, кто лучше настроит PostgreSQL — DBA или ML алгоритм? И если второй, то пора ли нам задуматься, чем заняться, когда нас заменят машины. Или до этого не дойдет, и важные решения все-таки должен принимать человек. Наверное, уровень изоляции и требования к устойч...

[Перевод] Самодельный сборщик мусора для OpenJDK Это перевод статьи Алексея Шипилёва «Do It Yourself (OpenJDK) Garbage Collector», публикуется с согласия автора. О любых опечатках и других багах сообщайте в личку — мы их поправим.Процесс создания чего-нибудь в рантайме языка — весёлое упражнение. По крайней мере, создание ...

[Из песочницы] Ретрогейминг: PAL vs NTSC. Или почему PAL не нужен Многие из вас знают про форматы видео как PAL, NTSC и, конечно же, SECAM. Скорее всего эти аббривеатуры вы слышали, когда речь шла о видеотехнике. Толком никто не знал в чем была между ними разница и почему они отличались. Что касательно видеоигровой индустрии, то тут уж точ...

Operating Systems: Three Easy Pieces. Part 4: Введение в планировщик (перевод) Введение в операционные системы Привет, Хабр! Хочу представить вашему вниманию серию статей-переводов одной интересной на мой взгляд литературы — OSTEP. В этом материале рассматривается достаточно глубоко работа unix-подобных операционных систем, а именно — работа с процесс...

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

[Перевод] Как вы избавляетесь от неиспользуемого CSS-кода? Часть 1 Автор статьи, первую часть перевода которой мы сегодня публикуем, хотел бы, чтобы читатели заранее знали о том, что избавление от ненужного CSS — это трудная задача. Если вы это читаете в надежде найти некий инструмент, запустив который, вы сможете узнать о том, какой именно...

[Из песочницы] Многоязычный синтез речи с клонированием Хотя нейронные сети стали использоваться для синтеза речи не так давно (например), они уже успели обогнал классические подходы и с каждым годам испытывают на себе всё новые и новый задачи. Например, пару месяцев назад появилась реализация синтеза речи с голосовым клонировани...

Отображение текста в Android Отображение текстовой информации — наверное, самая базовая и важная часть многих Android-приложений. В данной статье пойдет речь о TextView. Каждый разработчик, начиная с «Hello World», постоянно сталкивается с этим элементом пользовательского интерфейса. Периодически в раб...

Обзор системы жидкостного охлаждения Cooler Master MasterLiquid ML240P Mirage Вероятно, стратегия Cooler Master по завоеванию рынка систем жидкостного охлаждения состоит в том, чтобы выпустить как можно больше разновидностей СВО. И, конечно же, снабдить их RGB-подсветкой. Именно такое ощущение складывается после изучения их...

Asterisk. Dialplan Askozia 6. Исходящие звонки В статье пойдет речь о бесплатной АТС Askozia версии 6. При разработке телефонной станции одной из первых задач была организация исходящих звонков. Как это было В старой версии Askozia использовались стандартные “шаблоны” dialplan. X! — все номера телефонов XXX — трехзна...

Установка FPV и телеметрии на квадрокоптер Данная статья является продолжением статьи «Квадрокоптер на MultiWii SE v2.5 — от задумки до первого полёта», в ней я поделюсь с Вами своим опытом установки и настройки FPV оборудования на квадрокоптер для полётов от первого лица. Заинтересовавшихся прошу под кат. Читать ...

[Из песочницы] Невидимый деплой монолитного приложения в продакшн на AWS. Личный опыт Я – Lead DevOps Engineer в международной SaaS-компании. Мы разрабатываем платформу для совместной работы кроссфункциональных команд. В статье поделюсь тем, как наша DevOps-команда решила проблему ежедневных серверных релизов монолитного stateful-приложения и сделала их автом...

[Перевод] PEG парсеры Несколько лет назад меня кто-то спросил имеет ли смысл превести Python на PEG-парсер (или на грамматику PEG; я не помню точно кто и когда это было). Тогда я немного посмотрел на него, но так и не пришёл к какому-либо выводу, а потому и отбросил эту тему. Недавно я узнал боль...

Сжимаем список IP-адресов наилучшим образом Как-то я прочитал на Хабре статью про настройку BGP на роутере. Инструкции оттуда можно использовать для настройки домашнего роутера так, чтобы трафик на определённые IP-адреса шёл через другой канал. Однако здесь есть проблема: список IP-адресов может быть очень большим. ...

[Перевод] Краткий и бодрый обзор архитектуры компиляторов Большинство компиляторов имеют следующую архитектуру: В данной статье я собираюсь детально препарировать эту архитектуру, элемент за элементом. Можно сказать, что эта статья — дополнение к огромному количеству существующих ресурсов на тему компиляторов. Она является а...

[Перевод] Машинно-синестетический подход к обнаружению сетевых DDoS-атак. Часть 2 И снова здравствуйте. Сегодня мы продолжаем делиться материалом, приуроченным к запуску курса «Сетевой инженер», который стартует уже в начале марта. Мы видим, что многих заинтересовала первая часть статьи «Машинно-синестетический подход к обнаружению сетевых DDoS-атак» и се...

[Перевод] Парсим 25Tb с помощью AWK и R Как читать эту статью: прошу прощения за то, что текст получился таким длинным и хаотичным. Чтобы сэкономить ваше время, я каждую главу начинаю со вступления «Чему я научился», в котором одним-двумя предложениями излагаю суть главы. «Просто покажи решение!» Если вы хотите ...

Основы формата GLTF и GLB, часть 1 Что такое GLTF и GLB? GLTF (GL Transmission Format) — это формат файла для хранения 3Д сцен и моделей, который является крайне простым в понимании (структура записана в стандарте JSON), расширяемым и легко взаимодействующим с современными веб-технологиями. Данный формат хоро...

[Перевод] Улучшайте свое знание JavaScript разбирая исходный код Когда вы только начинаете карьеру программиста копание в исходном коде открытых библиотек и фреймворков может казаться чем-то страшным. В этой статье Карл Мунгази делится опытом как он поборол свой страх и стал использовать исходный код для приобретения знаний и развития нав...

Реализация QoS в СХД Qsan Технология QoS (Quality of Service) в сетевой инфраструктуре известна достаточно давно. Позже подобные алгоритмы нашли применение и в сфере хранения данных, став фактически стандартом для систем, претендующих на рынок Enterprise. В СХД Qsan данный функционал стал доступен от...

Пишем XGBoost с нуля — часть 1: деревья решений Привет, Хабр! После многочисленных поисков качественных руководств о решающих деревьях и ансамблевых алгоритмах (бустинг, решающий лес и пр.) с их непосредственной реализацией на языках программирования, и так ничего не найдя (кто найдёт — напишите в комментах, может, что...

Невидимая фотография О чём речь? Знакомые часто интересуются: зачем я занимаюсь невидимой фотографией? Инфракрасной, ультрафиолетовой, тепловой. Неужели там есть что-то интересное? Поскольку лучше один раз увидеть, чем сто раз услышать, то вот вам небольшая демка. С 15-ю предметами. Здесь они...

[Из песочницы] Руководство Google по стилю в C++ Часть 1. Именование Часть 2. Комментарии … Все мы при написании кода пользуемся правилами оформления кода. Иногда изобретаются свои правила, в других случаях используются готовые стайлгайды. Хотя все C++ программисты читают на английском легче, чем на родном, приятнее иметь...

Вредные советы: как правильно писать техническую документацию? Часть вторая Советы по грамотному написанию технической документации для пользователей. Часть 2 Продолжение руководства нашего технического писателя Андрея Старовойтова, которое поможет сделать вашу пользовательскую документацию проще и понятнее. Начало статьи можно почитать тут, а то...

Архитектура компьютера. Цифровой логический уровень Компьютер — это машина, которая может выполнять вычисления через исполнение примитивных операций. Она может понимать только два сигнала, которые принимаются за 0 и 1. Организация архитектур машин представляется как ряд уровней, каждый из которых надстраивается над нижележа...

Разработка hexapod с нуля (часть 3) — математика Всем привет! Разработка гексапода продвигается и наконец-то базовая математическая часть протестирована и готова к документированию. Чтобы проект дожил до конца и не остался пылиться на полке нужно видеть его сдвиги в положительную сторону, даже если они незначительны. В эт...

[Перевод] Полное руководство по Prometheus в 2019 году DevOps- и SRE-инженеры уже, наверное, не раз слышали о Prometheus. Prometheus был создан на SoundCloud в 2012 году и с тех пор стал стандартом для мониторинга систем. У него полностью открытый исходный код, он предоставляет десятки разных экспортеров, с помощью которых можн...

[Перевод] MVC в Unity со Scriptable Objects. Часть 2 Продолжение цикла статей от Cem Ugur Karacam (часть 1 можно прочитать здесь). В этот раз мы начнем с того, что создадим несколько представлений для отображения объекта инвентаря и панель информации для отображения параметров объекта. Этакий примитивный инвентарь. Затем сос...

[Перевод] Фотографии из грубых набросков: как именно работает нейросеть NVIDIA GauGAN В прошлом месяце на NVIDIA GTC 2019 компания NVIDIA представила новое приложение, которое превращает нарисованные пользователем простые цветные шарики в великолепные фотореалистичные изображения. Приложение построено на технологии генеративно-состязательных сетей (GAN), в ...

[Перевод] Как работает kubectl exec? Прим. перев.: автор статьи — Erkan Erol, инженер из SAP — делится своим изучением механизмов функционирования команды kubectl exec, столь привычной для всех, кто работает с Kubernetes. Весь алгоритм он сопровождает листингами исходного кода Kubernetes (и связанных проектов),...

Начались продажи троянов в исходном коде с учебником для тех, кто не умеет программировать В последнее время в даркнете встречается немалое количество ресурсов, предлагающих шифровальщики как услугу (RaaS), где от клиента вообще не требуется никаких или почти никаких технических знаний. Однако Inpivx работает по иному принципу.За $500 клиенту предлагается исходные...

Проблемы пакетной обработки запросов и их решения (часть 2) Это продолжение статьи «Проблемы пакетной обработки запросов и их решения». Рекомендуется сначала ознакомиться с первой частью, так как в ней подробно описана суть задачи и некоторые подходы к ее решению. Здесь же мы рассмотрим другие методы. Читать дальше →

Устройство компилятора Swift. Часть 1 Swift — это не только язык программирования. Это проект, в который помимо компилятора входит много других компонентов. Да и сам компилятор — это не большая и страшная коробка, которая с помощью магии превращает ваш код в набор понятных для машины инструкций. Его тоже можно ...

[Перевод] Сила дженериков в Swift. Часть 2 Добрый день, друзья. Специально для студентов курса «iOS Разработчик. Продвинутый курс» мы подготовили перевод второй части статьи «Сила дженериков в Swift». Связанные типы, условия where, сабскрипты и прочее… В статье «Сила дженериков в Swift. Часть 1» описывались gene...

[Перевод] Семь книг для тех, кто хочет стать гейм-дизайнером В этой статье рассказывается о том, когда и как дизайн игр стал профессией, а также о том, как он сформировался в отдельную дисциплину. Также мы предложим 7 книг, которые нужно прочитать каждому гейм-дизайнеру. Мы объясним, что особо ценного в этих книгах и как они позволят...

[Перевод] Courier: мигрирование Dropbox на gRPC Примечание переводчика Большинство современных программных продуктов не являются монолитными, а состоят из множества частей, которые взаимодействуют друг с другом. При таком положении дел необходимо, чтобы общение взаимодействующих частей системы происходило на одном языке...

Пишем свой язык программирования, часть 3: Архитектура транслятора. Разбор языковых структур и математических выражений Введение Приветствую вас, заинтересованные читающие разработчики на не важно каких языках, на которых я ориентирую эти статьи и чьи поддержку и мнения я ценю. Для начала, по устоявшимся традициям, я приведу ссылки на предыдущие статьи: Часть 1: пишем языковую ВМ Часть 2:...

Нейросеть от Nvidia превращает простейшие наброски в красивые пейзажи Водопад курильщика и водопад здорового человека Все мы знаем, как нарисовать сову. Нужно сначала нарисовать овал, потом еще окружность, ну а потом — получается шикарная сова. Конечно, это шутка, причем очень старая, но инженеры Nvidia постарались сделать так, чтобы фантази...

Феном, пингвин и оверклокинг (часть 1) Статья в трех частях о личном опыте разгона старого железа под Линукс. Сначала, подбор инструментария, потом обзор железок и результаты тестов. Первая часть статьи - мониторинг различных параметров системы. Убунту и графический интерфейс с щепоткой командной строки и текстов...

[Из песочницы] 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 ...

SmartCard I2C Protocol. Обмен APDU командами через I2C интерфейс Введение Некоторое время назад я принимал участие в разработке устройства, в котором было необходимо реализовать российскую криптографию. Так как в дальнейшем предполагалось это решение сертифицировать, то к реализации криптографии выдвигались определенные требования. И как ...

FreeBSD планирует перейти на ZFSonLinux На прошлой неделе один из разработчиков FreeBSD Matt Macy выдвинул предложение об использовании реализации ZFS от проекта ZFSonLinux. Таким образом все требуемые изменения для FreeBSD будут сразу интегрированы в кодовую базу ZFSonLinux. Предложением это не завершилось, уже с...

[Перевод] Трансформатор Теслы на плате площадью в один квадратный дюйм Увидев заголовок статьи «One inch tesla coil», я поначалу подумал, что речь идёт о трансформаторе Теслы высотой в один дюйм. Оказалось, что он несколько больше, но выполнен на плате площадью в один квадратный дюйм — таковы условия конкурса. Но даже это достаточно интересно...

Байт-машина для форта (и не только) по-индейски (часть 4) И снова я несколько переоценил объем статьи! Планировал, что это будет заключительная статья, где сделаем компилятор и выполним тестирование. Но объем оказался велик, и я решил разбить статью на две. В этой статье мы сделаем практически все основные функции компилятора. ...

Умножение матриц: эффективная реализация шаг за шагом Введение Умножение матриц — это один из базовых алгоритмов, который широко применяется в различных численных методах, и в частности в алгоритмах машинного обучения. Многие реализации прямого и обратного распространения сигнала в сверточных слоях неронной сети базируются на...

Когерентные CFP WDM (100G/200G) и их применение в системах DWDM Первые пресс релизы о появлении когерентных CFP модулей (coherent CFP optical pluggable modules) стали появляться примерно 5-6 лет назад. Тогда их использование в системах оптического уплотнения было в новинку и являлось по сути нишевым решением. Сейчас, по прошествии шест...

[Из песочницы] Сортировка: определяем лучший алгоритм Как нетрудно догадаться, я знаю ответ на этот вопрос, но, поскольку моя статья с описанием алгоритма сортировки «воронкой» была здесь встречена, мягко говоря, нервозно, я решил провести-таки тестирование «по образу и подобию» тех, которые обычно проводятся — в основном, коне...

CRM-тренды 2019: забавно читать, опасно верить Кто чем занимался в праздники, а мы читали прогнозы CRM-ного рынка. Начали мы патриотично и ввели в Яндексе «crm 2019 прогноз», но получили… свою же хабровскую статью от начала 2017 года на 4 месте выдачи. Первые три тоже немного не о том. Ну что же, пошли по англоязычным са...

Мюонный катализ с точки зрения квантовой химии. Часть I: обычный водород vs. мюонный водород Многабукафф о том, что квантовая химия думает о принципе работы мюонного катализа: как именно мюон понижает температуру требуемой плазмы. В двух частях. Суть первой части выражается одним предложением: мюон тяжелее, чем электрон, поэтому его сложнее отодрать от протона. Но...

[Перевод] Вся правда об ОСРВ. Статья #30. Инициализация и процедуры запуска Nucleus SE У любой операционной системы есть определенный механизм запуска. Принцип работы этого механизма у каждой системы свой. Обычно говорят, что система загружается (англ. boot), это сокращение от «bootstrap», которое отсылает к выражению «pull oneself over a fence by one’s boot...

Что такое прокси-сервер и как его настроить на iPhone и iPad Как ни странно даже сегодня, во времена постепенно внедряемой системы запретов и цензуры в интернете, не каждый знает о том, что такое «прокси». Данная статья призвана восполнить пробелы в знаниях несведущих в подобных вопросах пользователей.   Что такое прокси-сервер? ...

[Из песочницы] Как подключить Яндекс Кассу и преуспеть в конверсии В этой статье я поделюсь опытом использования платёжной системы в контексте того, как это может отражаться на конверсии. Часть тезисов будет актуальна для почти любой системы, но в основном речь пойдёт о Яндекс Кассе с целью привнести больше конкретики. Статья будет полезна ...

Сбалансированные двоичные деревья поиска: реализация на Julia Иллюстрация из работы Г.М. Адельсон-Вельского и Е.М. Ландиса 1962 года Деревья поиска — это структуры данных для упорядоченного хранения и простого поиска элементов. Широко применяются двоичные деревья поиска, в которых у каждого узла есть только два потомка. В этой статье ...

[Перевод] Fortnite — это будущее, но по довольно неожиданным причинам Уже многое сказано о Fortnite, о её доходах, пользователях, бизнес-модели, истоках и многоплатформенности. Но вокруг всех этих историй слишком много ажиотажа. Самое главное то, как все эти достижения, дополненные остальной частью Epic Games, навечно сохранятся в индустрии р...

Добровольная амнезия: манипуляции с гиппокампом для удаления болезненных воспоминаний У каждого человека есть воспоминания, которые он старается забыть. Некоторые из них просто неприятны, вызывающие грусть, стыд, страх, а некоторые могут наносить серьезный ущерб, вызывая у человека самые настоящие психические расстройства (ПТСР, тревожное расстройство и т.д...

Citymobil — пособие для стартапов по увеличению стабильности на фоне роста. Часть 2. Какие бывают виды аварий? Это вторая статья из цикла про то, как мы в Citymobil увеличивали стабильность сервиса (первую можете почитать здесь). В этой статье я углублюсь в конкретику разбора аварий. Но перед этим я освещу один момент, о котором я должен был подумать заранее и осветить в первой ста...

[Из песочницы] NeoBook: среда программирования для непрограммистов NeoBook: среда программирования для непрограммистов Для кого эта статья Статья написана, в первую очередь, для тех, кто не является профессиональным программистом, но хочет уметь создавать свои собственные компьютерные программы для компьютеров с Windows. Программирование ...

[Перевод] Google запустил «вознаграждения за просмотр рекламы» в приложениях Google объявили о новой функции, которую разработчики могут добавлять в приложения, «вознаграждения за просмотр рекламы». Идея заключается в том, чтобы стимулировать пользователей смотреть больше рекламы, поощряя их виртуальными товарами и внутриигровой валютой. Большое коли...

[Из песочницы] Domain Driven Design: Value Objects и Entity Framework Core на практике На Хабре и не только написано приличное количество статей про Domain Driven Design — как в общем про архитектуру, так и с примерами на .Net. Но при этом зачастую слабо упоминается такая важнейшая часть этой архитектуры, как Value Objects. В этой статье я постараюсь раскрыт...

Debian + Postfix + Dovecot + Multidomain + SSL + IPv6 + OpenVPN + Multi-interfaces + SpamAssassin-learn + Bind Данная статья о том как настроить современный почтовый сервер. Postfix + Dovecot. SPF + DKIM + rDNS. С IPv6. С шифрованием TSL. С поддержкой нескольких доменов — часть с настоящим SSL сертификатом. С антиспам-защитой и высоким антиспам-рейтингом у других почтовых серверов. С...

[Из песочницы] Опыт разработки свободного приложения для коллекционеров OpenNumismat Хочу поделиться своим опытом разработки настольного приложения для коллекционеров с открытым исходным кодом. По роду своей основной деятельности я разрабатываю ПО для встраиваемых систем и редко пересекаюсь с конечными пользователями. Поэтому речь пойдет об особенностях, с ...

[Перевод] Виртуальные файловые системы в Linux: зачем они нужны и как они работают? Часть 2 Всем привет, делимся с вами второй частью публикации «Виртуальные файловые системы в Linux: зачем они нужны и как они работают?» Первую часть можно прочитать тут. Напомним, данная серия публикаций приурочена к запуску нового потока по курсу «Администратор Linux», который ста...

Запускаем php скриптики через php-fpm без web сервера. Или свой FastCgi клиент (под капотом) Приветствую всех читателей "Хабра". Дисклеймер Статья получилась довольно длинная и тем кто не хочет читать предысторию, а хочет перейти сразу к сути прошу прямиком к главе "Решение" Вступление В данной статье хотелось бы рассказать о решении довольно нестандартной задачи, с...

Linux Backup от Veeam на ОС «Эльбрус». Импортозамещение ['?' | '.' | '!'] Всем привет. Недавние статьи на Хабре Импортозамещение на практике. Часть 1. Варианты и Не долго музыка играла… или как ОС Эльбрус так и не стала свободной не оставили меня равнодушным. Я решил поизучать этот вопрос в ключе задачи резервного копирования. Тем более, что в э...

[Из песочницы] Сказ о полукольцах Привет, Хабр! Предлагаю вашему вниманию перевод статьи "A tale on Semirings" автора Luka Jacobowitz. Когда-нибудь задумывались, почему сумма типов называется суммой типов. Или, может, вы всегда хотели узнать, почему оператор <*> записывается именно так? И что...

Сравнение и выбор систем миграции данных Сравнение и выбор систем миграции данных Модель данных в процессе разработки имеет свойство изменяться, и в какой-то момент она перестает соответствовать базе данных. Конечно же, БД можно удалить, и тогда ORM создаст новую версию, которая будет соответствовать модели, но т...

К вопросу о bitset «Не пора ли, друзья мои, нам замахнуться на Вильяма, понимаете ли, нашего Шекспира? ». Прочитал недавно пост про кастомную клавиатуру и в очередной раз подумал, что было бы неплохо написать эталонную (то есть такую, которую не стыдно подписать своим именем и выложить на вс...

[Из песочницы] Реверс-инжиниринг приложений после обфускации Введение Данная публикация направлена на изучение некоторых приемов реверс-инжиниринга. Все материалы представлены исключительно в ознакомительных целях и не предназначены в использовании в чьих-либо корыстных целях Предмет исследования В качестве примера будем изучать код ...

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

[Из песочницы] Красивые точные часы из старого смартфона Речь в статье пойдёт о том, как старый ненужный мобильник переделать в отличные настенные часы с крупными цифрами, всегда точным временем и резервным питанием. Я расскажу о некоторых выясненных особенностях сихронизации времени в ОС Андроид, а также о разных электрических...

Самодокументируемый REST сервер (Node.JS, TypeScript, Koa, Joi, Swagger) Про преимущества и недостатки REST написано уже довольно много статей (и еще больше в комментариях к ним) ). И если уж так вышло, что вам предстоит разработать сервис, в котором должна быть применена именно эта архитектура, то вы обязательно столкнетесь с ее документировани...

Изучаем календарь Эта статья получилась из вопроса, который я вчера задал сам себе. «Существует ли год, в котором ни один месяц не начинается в понедельник?» На первый взгляд — да. Год может начинаться с любого дня недели, месяцы тоже каждый раз начинаются в разные дни недели. Вариантов множ...

[Перевод] Основы движков JavaScript: оптимизация прототипов. Часть 2 Добрый день, друзья! Курс «Безопасность информационных систем» запущен, в связи с этим делимся с вами завершающей частью статьи «Основы движков JavaScript: оптимизация прототипов», первую часть которой можно прочитать тут. Также напоминаем о том, что нынешняя публикация явл...

[Из песочницы] Что значит unsafe в Rust? Привет, Хабр! Представляю вашему вниманию перевод статьи "What Is Rust's unsafe?" автора Nora Codes. Мне доводилось видеть много недопониманий относительно того, что значит ключевое слово unsafe для полезности и правильности языка Rust и его продвижения как "б...

[Перевод] Цепи Маркова для процедурной генерации зданий Примечание: полный исходный код этого проекта можно найти [здесь]. Так как он является частью более масштабного проекта, я рекомендую смотреть коммит на момент выпуска этой статьи, или файл /source/helpers/arraymath.h, а также /source/world/blueprint.cpp. В этой статье я х...

Еще одна система мониторинга 16 модемов, 4 сотовых оператора= Исходящая скорость 933.45 Мбит/с Введение Привет! Это статья про то, как мы написали для себя новую систему мониторинга. От существующих она отличается возможностью высокочастотного синхронного получения метрик и очень маленьким потребление...

Осторожно: на Android появились фальшивые пуш-уведомления Несмотря на то что Android, как оказалось, имеет более высокий уровень защиты от взлома, чем iOS, это совершенно не отпугивает мошенников. Именно за счет своей многочисленности смартфоны на базе мобильной операционки от Google исправно привлекают злоумышленников, которые го...

JMeter — швейцарский нож тестировщика (Часть 2) Сегодня расскажу, как мы с помощью JMeter’а наладили процесс кэширования продуктовых страниц, проверили работу мобильного приложения без самого приложения и создали 2000 юзеров в системе без доступа к базе данных. Кто не в курсе, что здесь происходит, читайте первую часть ...

Готовим полнотекстовый поиск в Postgres. Часть 1 Эта статья — первая из небольшой серии статей о том, как оптимально настроить полнотекстовый поиск в PostgreSQL. Мне пришлось недавно решать подобную задачу на работе — и я был очень удивлен отсутствию хоть сколько-нибудь вменяемых материалов по этому поводу. Мой опыт борьбы...

[Перевод] Как стать хорошим менеджером? 4 способа восполнить пробел в навыках управления Перевод статьи подготовлен специально для студентов курса «Team Lead 2.0». Как стать хорошим менеджером и восполнить пробелы в навыках управления бизнесом? На сегодняшний день многие недооценивают необходимость грамотного менеджмента в бизнесе. Менеджмент – это сложно. Н...

[Перевод] Приключения неуловимой малвари, часть 1 Этой статьей мы начинаем серию публикаций о неуловимых малвари. Программы для взлома, не оставляющие следов атаки, известные также как fileless («бестелесные», невидимые, безфайловые), как правило, используют PowerShell на системах Windows, чтобы скрытно выполнять команды ...

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

Создание бота для участия в Russian AI Cup 2018 CodeBall Сложилась традиция, что после соревнований по спортивному программированию победитель или просто игрок выкладывает на Хабре статью, чтобы рассказать как здорово было участвовать в соревновании и как вариант победить в нем. Из его статьи конечно же многое можно почерпнуть дл...

Астрономы нашли недостающую треть Вселенной Подчеркнем: речь идет не о темной материи или чем-то еще невидимом. Нет, мы не видим самые обычные водород с кислородом, которые где-то должны быть. Одна из версия заключается в том, что недостающая масса собирается в гигантские нитевидные структуры теплого (температура мене...

[Перевод] Понимание алгоритма БПФ Здравствуйте, друзья. Уже завтра стартует курс «Алгоритмы для разработчиков», а у нас остался один неопубликованный перевод. Собственно исправляемся и делимся с вами материалом. Поехали. Быстрое преобразование Фурье (БПФ — англ. FFT) является одним из важнейших алгоритмов о...

Не очередной язык программирования. Часть 2: Логика представлений Вторая часть трилогии о языке и платформе lsFusion. Первую часть можно найти тут. В ней речь пойдет о логике представлений, а именно обо всем том, что связано с объединением данных и отображением их пользователю или другим информационным системам. Читать дальше →

[Перевод] Реализация анимации в React Native Перевод статьи подготовлен специально для студентов курса «ReactJS/React Native-разработчик». Трудно себе представить мобильное приложение, в котором нет анимации. В вебе анимации обычно простые, если они есть вообще (максимум – одна страница сменяет другую). Анимации же...

[Из песочницы] Разработчик хочет уйти в стартап. Что делать работодателю? Обыкновенная история. Но не самая простая Как правило, разработчики создают свой бизнес, уже имея в голове несколько сногсшибательных идей. Которые, внимание, они уже начали воплощать в жизнь на предыдущем месте работы. С места в карьер никто не прыгает. В этой статье пого...

DeepPavlov для разработчиков: #2 настройка и деплоймент Всем привет! В первой статье из нашего цикла мы узнали, что такое DeepPavlov, какие модели библиотеки готовы к использованию без предварительного обучения и как запустить REST серверы с ними. Перед тем, как приступить к обучению моделей, мы расскажем о различных возможностях...

Восхождение на Эльбрус — Разведка боем. Техническая Часть 1. Регистры, стеки и другие технические детали Как и обещали, продолжаем рассказывать про освоение процессоров Эльбрус. Данная статья является технической. Информация, приведенная в статье, не является официальной документацией, ведь получена она при исследовании Эльбруса во многом как черного ящика. Но будет безусловно ...

«Мыши плакали и кололись..» Импортозамещение на практике. Часть 4 (теоретическая, завершающая). Системы и сервисы Поговорив в прошлых статьях о вариантах, «отечественных» гипервизорах и «отечественных» Операционных Системах, продолжим сбор информации о необходимых системах и сервисах, которые на этих ОСях можно развернуть. Читать дальше →

[Перевод] Использование JavaScript-модулей в продакшне: современное состояние дел. Часть 1 Два года назад я писал о методике, которую сейчас обычно называют паттерном module/nomodule. Её применение позволяет писать JavaScript-код, используя возможности ES2015+, а потом применять бандлеры и транспиляторы для создания двух версий кодовой базы. Одна из них содержит с...

[Из песочницы] Играем в консоли браузера Как прекрасен этот мир сonsole.log() — хороший метод, чтобы вывести отладочную информацию в веб-консоль. Можно выводить числа, строки, массивы, объекты, функции, обычный текст, к тому же, ко всему этому можно добавлять форматирование, цвет, фон и вообще довольно много друг...

Google представила Translatotron — технологию синхронного перевода устной речи Алгоритм умеет сохранять исходный голос говорящего.

«Секретики» DPAPI. Взгляд на осла В дополнение к нашей прошлой статье про расшифровку DPAPI-блобов расскажем еще о двух случаях, с которыми нам пришлось столкнуться. Речь пойдет о сохраненных паролях в браузерах MS IE11 и Edge. Стратегия остается прежней – будем все расшифровывать в режиме offline. Для это...

Нейросеть научили дорисовывать фотографии Нейросетевые алгоритмы успешно применяются для редактирования фотографий, но на сегодняшний день они, как правило, способны дорисовывать лишь небольшие фрагменты или, наоборот, удалять лишние объекты со снимков. Специалистам из Google Research удалось научить нейросеть весьм...

«А вместо процессов у них там практики…» Такую фразу довольно часто можно услышать или прочитать в обсуждении новой версии ITIL® 4. Корректно ли это утверждение? Насколько «вместо»? Есть ли разница между процессами и практиками? Действительно, существенную часть объёма книги составляет раздел, в котором для тех, кт...

CLRium #5: Garbage Collector. Крупнейший семинар по .NET Наш семинар уверенно набирает слушателей и постепенно перерастает офис компании EPAM в Петербурге: мы планируем набрать до 250 разработчиков под одной крышей как в Петербурге, так и в Москве. А всё почему? Когда-то я выступал с докладом по работе Garbage Collector и доклад ...

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

[recovery mode] Сбалансированные показатели сайта. Часть 2: Техническая оптимизация Это вторая выпуск статей о сбалансированных показателях сайта. В первом выпуске речь шла о формировании стратегии продвижения, базиса для всех дальнейших работ. В этот раз поговорим о технической стороне внутренней оптимизации. Нельзя сказать, что это очень большая тема: осн...

Huawei HarmonyOS может прописаться в автомобилях Geely Geely, одна из крупнейших китайских автомобилестроительных компаний, как сообщают сетевые источники, заключила соглашение о сотрудничестве с телекоммуникационным гигантом Huawei. Речь идёт о продвижении программной платформы HarmonyOS. Эту операционную систему компания Huawe...

[Перевод] Эффекты фильтрации SVG. Часть 4. Двухцветные изображения при помощи feComponentTransfer Эта четвертая статья серии об SVG-фильтрах, в которой Sara Soueidan покажет вам, как использовать feComponentTransfer для создания эффекта двухтонового фильтра. Предлагаемая серия статей "Эффекты фильтрации SVG" Sara Soueidan, внештатного разработчика UI/UX интерфейса и авт...

[Перевод] Работа над PEG на Core Developer Sprint В этой статье я не буду рассказывать о новых фичах генератора парсера — я достаточно описал его в предыдущих частях. Вместо этого хочу рассказать что я делал на Core Developer Sprint на прошлой неделе, прежде чем всё сотрётся из моей памяти. Хотя большая часть материала так ...

Как Мефодий стал Анной: опыт разработки и запуска классификаторов голосовых сообщений. Часть 2 Цель и задача Напомню, что в рамках первой статьи мы получили модель с удовлетворяющим нас качеством и пришли к выводу, что не стоит сразу строить нейронные сети, на некорректных данных большой пользы от этого не будет. Чтобы избежать потери времени и своих сил, достаточно п...

Первый коммерческий полёт космического корабля SpaceX Starship может состояться уже в 2021 году Компания SpaceX однозначно произвела революцию как в отрасли, так и в каком-то смысле в целом. Причём сразу по нескольким направлениям. В частности, несмотря на то, что нередко сроки реализации того или иного проекта, которые называет Илон Маск, в итоге оказываются суще...

Мобильная тумба для китайских станков. Или как разместить их в квартире Дамы и господа, здравствуйте! Данную статью я решил написать после прочтения комментария в статье Программирование на JavaScript для токарного станка от QwertyOFF Я слабо представляю как можно держать токарный, даже такой, в квартире, разве что у вас есть комната, которую с...

Android Camera2 API от чайника, часть 3. Media Codec и стрим видео по UDP Итак, со съемками фоточек и записью видео при помощи Camera2 API мы вроде бы, разобрались. Осталось только научиться передавать видеопоток c Android устройства страждущим получателям извне. Конечной целью, как уже неоднократно ранее говорилось, является интеллектуализация ро...

Как ускорить шифрование по ГОСТ 28147-89 на процессоре Байкал-Т1 за счет SIMD-блока В статье на примере описания реализации алгоритма шифрования по ГОСТ 28147–89, построенного на сети Фейстеля, показаны возможности двухъядерного процессора BE-T1000 (aka Байкал-Т1) и проведены сравнительные испытания реализации алгоритма с помощью векторных вычислений с сопр...

[Перевод] Аппликативные регулярные выражения, как свободный альтернативный функтор Предлагаю вашему вниманию перевод замечательной свежей статьи Джастина Ле. В своём блоге in Code этот автор достаточно легким языком рассказывает о математической сути красивых и изящных функциональных решений для практических задач. В этой статье подробно разбирается приме...

Flare-On 2019 write-up -0x01 — Intro Данная статья посвящена разбору всех заданий Flare-On 2019 — ежегодного соревнования по реверс-инжинирингу от FireEye. В данных соревнованиях я принимаю участие уже второй раз. В предыдущем году мне удалось попасть на 11-ое место по времени сдачи, решив все з...

ShIoTiny: вентиляция влажного помещения (проект-пример) Основные тезисы или о чем эта статья Продолжаем цикл статей о ShIoTiny — визуально программируемом контроллере на базе чипа ESP8266. В этот статье рассказано на примере проекта управления вентиляции в ванной комнате или другом помещении с повышенной влажностью о том, как ...

[Перевод] Пишем операционную систему на Rust. Реализация страничной памяти (новый вариант) В этой статье разберёмся, как реализовать поддержку страничной памяти в нашем ядре. Сначала изучим различные методы, чтобы фреймы физической таблицы страниц стали доступны ядру, и обсудим их преимущества и недостатки. Затем реализуем функцию преобразования адресов и функцию ...

[Перевод] Один язык чтобы править всеми Скрытый под слоем кода, томится язык, жаждущий быть выученным. На момент написания этой статьи запрос «программирование какой язык изучать первым» выдаёт 517 миллионов поисковых результатов. Каждый из этих сайтов будет нахваливать один определённый язык, и 90% из них, в кон...

[Из песочницы] Deploy Symfony + React приложения на AWS посредством CI Добрый день, в данной статье я покажу как развернуть Symfony 4 приложение на AWS. В официальной документации есть пример подобного процесса, однако мой вариант не столь тривиален, как загрузка zip архива с приложением. На дворе 2019, в моде docker, микросервисная архитектура...

Книги, которые стоит прочитать каждому продакт-менеджеру Никогда не читайте книги для самообразования просто так, без практики. Это самое плохое, когда человек прочитывает кучу книг, а затем пытается устроиться работать продакт-менеджером, размахивая книжными знаниями. Таких соискателей сразу видно. И замечательно, если человек ...

Возможности языка Q и KDB+ на примере сервиса реального времени О том, что такое база KDB+, язык программирования Q, какие у них есть сильные и слабые стороны, можно прочитать в моей предыдущей статье и кратко во введении. В статье же мы реализуем на Q сервис, который будет обрабатывать входящий поток данных и высчитывать поминутно разли...

[Перевод] Исчерпывающий список различий между VB.NET и C#. Часть 1 Согласно рейтингу TIOBE в 2018 году VB.NET обогнал по популярности C#. Совпадение или нет, но в феврале Эрик Липперт, один из создателей C#, призвал читателей обратить внимание на блог его друга, бывшего коллеги по команде компилятора Roslyn и, по совместительству, ярого ф...

Cataclysm Dark Days Ahead, статический анализ и рогалики Скорее всего, из названия статьи вы уже догадались, что в центре внимания ошибки в исходном коде. Но это вовсе не единственное, о чем пойдет речь в этой статье. Если кроме С++ и ошибок в чужом коде вас привлекают необычные игры и вам интересно узнать, что это такие за «рога...

[Перевод] Как разрабатываются и производятся процессоры: изготовление чипа Это третья статья из серии о проектировании ЦП. В первой статье мы рассмотрели архитектуру компьютера и объяснили его работу на высоком уровне. Во второй статье говорилось о проектировании и реализации некоторых компонентов чипа. В третьей части мы узнаем, как архитектурные...

Восемь именных законов в UX дизайне (часть 2) Эта статья является продолжением опубликованной ранее первой части. Если вы еще не успели ознакомиться с ней, рекомендую начать именно с нее. Читать дальше →

[Перевод] Как работает FaceID в iPhone X: алгоритм на Python Одна из самых крутых фишек iPhone X – это метод разблокировки: FaceID. В этой статье разобран принцип работы данной технологии. Изображение лица пользователя снимается с помощью инфракрасной камеры, которая более устойчива к изменениям света и цвета окружающей среды. Исп...

OpenSceneGraph: Обработка событий Введение Одной из особенностей языка C++, за которую его часто критикуют — отсутствие в стандарте механизма обработки событий. Между тем данных механизм это один из основных путей взаимодействия одних программных компонентов с другими программными компонентами и аппаратным ...

[Перевод] Топ 20 навигационных фич в IntelliJ IDEA. Часть 2 Перевод статьи подготовлен специально для студентов курса «Android-разработчик. Продвинутый курс». И хотя в данном материале речь пойдет преимущественно о Java, материал будет полезен Android-разработчикам Первая часть тут Читать дальше →

[Из песочницы] Как я не стал программистом в 35 лет С самого начала сентября широким потоком хлынули на Хабр публикации об успешном успехе на тему «Детство программиста», «Как стать программистом после N лет», «Как я ушёл в IT из другой профессии», «Путь в программирование» и так далее. Подобные статьи пишут постоянно, но во...

Samsung Compiler Bootcamp: научим создавать «программирующие программы» Каждый уважающий себя программист хотя бы раз в жизни хотел придумать свой язык программирования – и сделать для него компилятор. Подобное желание вполне понятно: сделать программу, которая в результате своей работы порождает другую программу – это, если вдуматься, волшебс...

Тесты или типы? — Rust version Пару дней назад 0xd34df00d опубликовал здесь перевод статьи, описывающей, что можно узнать о функции в разных языках, если рассматривать её как "чёрный ящик", не используя информацию о её реализации (но, разумеется, не мешая ей пользоваться компилятору). Разумеется, получаем...

Искусственный интеллект помогает парализованным людям писать от руки при помощи мысли Писать от руки можно даже силой мысли Ежегодно тысячи людей по всему миру сталкиваются с различными неврологическими заболеваниями вроде инсульта и получают травмы спинного мозга. Вследствие этих заболеваний у многих из них перестают двигаться некоторые конечности, то есть у...

Вместо Android: Google запустила сайт об ОС Fuchsia Никто не знает, сколько тайных проектов в данный момент развивает Google, но даже если и узнает, нет никаких гарантий, что он представляет собой именно то, чем кажется. Именно так было в случае с проектом Fuchsia, которому прочили роль преемника Android, Wear OS и Chrome OS...

Разрабатываем приложение, которое отсылает данные другим приложениям (экосистемное приложение) Привет, хаброжители! Это моя вторая статья про разработку своего проекта. Тем, кто не читал предыдущая статейку: она про то, как из одного места (гугл таблицы) автоматически экспортировать данные в другое (ноушн). Сегодня я расскажу, как я писал (и проектировал) библиотеку...

Трансформация кода в Android 2. Анализ AST Первая часть Пример на Github В этой статье расскажу о том, как решал проблемы, с которыми столкнулся в предыдущей части при реализации проекта. Во-первых, при анализе трансформируемого класса, нужно как-то понять, является ли этот класс наследником Activity или Fragment...

Нафаршировать медведя: Механик рассказал о подключении скрытых функций Skoda Kodiaq Как оказалось, у кроссовера в «топе» есть предостаточно различных «секретов». Большей частью из них решил поделиться «ваговод» из Москвы. Ему всегда было интересно, какие скрытые функции есть в его Skoda Kodiaq, и как именно можно их подключить, потому, при первой же возмож...

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

[Перевод] Модели дженериков и метапрограммирования: Go, Rust, Swift, D и другие В некоторых сферах программирования нормально хотеть написать такую структуру данных или алгоритм, которые могут работать с элементами разных типов. Например, список дженериков или алгоритм сортировки, которому нужна только функция сравнения. В разных языках предложены всев...

[Перевод] Продвинутые структуры данных. Часть первая: Направленный ациклический граф Всем привет! Уже на следующей неделе стартуют занятия в новой группе курса «Алгоритмы для разработчиков». В связи с этим, делимся с вами переводом совсем небольшого, но довольно интересного материала. Я хотел начать эту серию статей со структуры данных, с которой все мы к...

[Перевод] Краткое введение в цепи Маркова В 1998 году Лоуренс Пейдж, Сергей Брин, Раджив Мотвани и Терри Виноград опубликовали статью «The PageRank Citation Ranking: Bringing Order to the Web», в которой описали знаменитый теперь алгоритм PageRank, ставший фундаментом Google. Спустя чуть менее два десятка лет Googl...

[Из песочницы] Dagger 2 – это элементарно (Часть 1) Содержание Введение Что такое Dependency Injection, Пример зависимости Dagger 2 – введение Первое использование Dagger 2 Введение Статья написана не продвинутым программистом для таких же, обычными и понятными словами В статье используется пример кода на Kotlin. Версия da...

[Перевод] Введение в Redis с использованием Spring Boot Перевод статьи подготовлен специально для студентов курса «Разработчик на Spring Framework». В этой статье мы рассмотрим основы использования Redis через Spring Boot с помощью библиотеки Spring Data Redis. Мы создадим приложение, которое демонстрирует, как выполнять CR...

Решаем судоку с помощью Алгоритма X В этой статье рассмотрим "Алгоритм X" Кнута и его применение для решения судоку. Прелесть алгоритма в том, что судоку при этом решается быстро без программирования каких-то продвинутых техник решения. Читать дальше →

[Из песочницы] Классификация покрова земли при помощи eo-learn. Часть 1 Привет, Хабр! Представляю вашему вниманию перевод статьи "Land Cover Classification with eo-learn: Part 1" автора Matic Lubej. Предисловие Примерно полгода назад был сделан первый коммит в репозиторий eo-learn на GitHub. Сегодня, eo-learn превратился в замечательную библиоте...

Помоги Дюку найти выход Всем привет! Для каждой конференции по Java мы придумываем игру, чтобы любой желающий мог весело провести время на нашем стенде. На конференции Joker 2018 мы предлагали участникам вывести Дюка из лабиринта, подробную статью про игру прошлого года можно прочитать тут. В этом...

[Из песочницы] Передача знания и Нейронный машинный перевод на практике Нейронный машинные перевод (НМП, англ. Neural Machine Translation, NMT) развивается очень быстро. Сегодня, чтобы собрать свой переводчик, не нужно иметь два высших образования. Но чтобы обучить модель, нужен большой параллельный корпус (корпус, в котором предложению на исход...

Зависимость производительности кода от контекста объявления переменных в JavaScript Изначально эта статья задумывалась как небольшой бенчмарк для собственного использования, да и вообще статьёй быть не планировалась, однако, в процессе проведения замеров всплыли некоторые интересные особенности в реализации архитектуры JavaScript, сильно влияющие на произв...

[Из песочницы] Создание своего jsfiddle, часть 1 Привет всем читателем habr. В данной статье мы напишем свой онлайн редактор кода. Зачем я писал свой онлайн редактор кода В один день мне стало интересно насколько сложно создать свой онлайн редактор по типу jsfiddle, из-за чего я решил написать свой редактор. Написание сво...

[Перевод] Стоит ли высокое качество ПО затрат на его разработку? Часто в процессе реализации проектов команды сталкиваются с вопросом: чему следует уделять больше внимания – выпуску новых фич или повышению качества кода? Обычно менеджеры делают выбор в пользу фич. Зачастую разработчики таким положением дел недовольны, считая, что им выде...

Древности: IBM ThinkPad T40, первый беспроводной Пятнадцать лет назад, в 2003 году, беспроводной интернет из дорогостоящей узкоспециализированной технологии начал превращаться в нечто доступное всем и само собой разумеющееся. Конечно произошло это не сразу: чтобы появился Wi-Fi, нужно было провести домой в каком-то виде пр...

[Из песочницы] Система генерации ландшафта лабиринта с улучшенным визуальным реализмом [перевод статьи Jinmo Kim] Привет, Хабр! В этой публикации я расскажу о статье автора Jinmo Kim: "Maze Terrain Authoring System in Immersive Virtual Reality for New Visual Realism". Она была опубликована 4.04.2019. Полный текст статьи можно посмотреть здесь. Краткое описание системы В стать...

Как мы создали систему оповещения о ядерной угрозе, или как я обучил нейросеть на заголовках Хабра Заголовок статьи может показаться странным и это неспроста — он прекрасен именно тем, что написал его не я, а LSTM-нейросеть (а точнее его часть перед "или"). (схема LSTM взята из Understanding LSTM Networks) И сегодня мы разберёмся, как можно генерировать заголовки статей ...

Web — javascript authentication, obfuscation и native code. Решение задач с r0от-мi —. Client. Часть 1 Данная статья содержит решений заданий, в которых рассматриваются аутентификация javascript, обфускация javascript и javascript native code. Организационная информацияСпециально для тех, кто хочет узнавать что-то новое и развиваться в любой из сфер информационной и компьют...

Operating Systems: Three Easy Pieces. Part 2: Абстракция: Процесс (перевод) Введение в операционные системы Привет, Хабр! Хочу представить вашему вниманию серию статей-переводов одной интересной на мой взгляд литературы — OSTEP. В этом материале рассматривается достаточно глубоко работа unix-подобных операционных систем, а именно — работа с процесс...

Хабрамегарейтинг: лучшие статьи и статистика Хабра за 12 лет. Часть 1/2 Привет Хабр. После публикации рейтинга статей за 2017 и 2018 год, следующая идея была очевидна — собрать обобщенный рейтинг за все годы. Но просто собрать ссылки было бы банально (хотя и тоже полезно), поэтому было решено расширить обработку данных и собрать еще немного пол...

Изучаем Adversarial Tactics, Techniques & Common Knowledge (ATT@CK). Часть 7 Часть 7. Обнаружение (Discovery) Ссылки на все части: Часть 1. Получение первоначального доступа (Initial Access) Часть 2. Выполнение (Execution) Часть 3. Закрепление (Persistence) Часть 4. Повышение привилегий (Privilege Escalation) Часть 5. Обход защиты (Defense Evasion) ...

Теория программирования: Вариантность Здравствуйте, меня зовут Дмитрий Карловский и я… хочу поведать вам о фундаментальной особенности систем типов, которую зачастую или вообще не понимают или понимают не правильно через призму реализации конкретного языка, который ввиду эволюционного развития имеет много атавиз...

Самосинхронные схемы. Вычисление логических функций непосредственно по графу событий. Часть 3. Декомпозиция Напомню важный вывод из предыдущих частей. Для циклического последовательного поведения, не содержащего кратных сигналов (переключающихся за цикл более двух раз), минимальная логическая функция каждого сигнала может быть представлена в следующем виде (естественно при отсутст...

Кросс-компиляция в docker. Почему бы и нет? Что такое кросс-компиляция? Какие есть инструменты для сборки бинарных файлов для Windows в Linux? Как настроить docker-контейнер для всего этого? Вот лишь небольшая часть вопросов, которые будут обсуждаться ниже. Читать дальше →

Создание и обновление списков рассылки в Zimbra Collaboration OSE на основе групп и пользователей Active Directory 1. Пара слов от автора В комментариях к прошлой статье мне задали интересный вопрос об автоматическом формировании списков рассылки на основе групп безопасности AD. Есть задача – есть решение. Правда, оговорюсь сразу, решение несколько костыльное (почему – читать далее), но ...

Модели натурального ряда чисел и его элементов: Геометрическая (плоскостная) модель натурального ряда     Задача криптографического анализа шифра (атака на шифр) предполагает построение и исследование модели криптографической системы (алгоритма шифра и его элементов), а также ситуации, в рамках которой осуществляется криптоанализ. Для шифра RSA такой моделью его элемента д...

[Перевод] Тренинг Cisco 200-125 CCNA v3.0. День 30. Сетевая архитектура Cisco и устранение Мы практически дошли до конца тематики первой части курса CCNA, необходимой для сдачи экзамена ICND1. Поскольку я пропустил несколько тем, то этот и следующий видеоуроки будут посвящены заполнению пробелов в ваших знаниях. Сегодня мы рассмотрим три темы: сетевая архитекту...

Зажигаем! Ночные превращения Лахта Центра В одном сером-сером городе стояла темная-темная башня… Говорят, что раньше в ней шла стройка, а потом — отделочные работы. Люди работали в три смены, и по ночам она была подобна световому маяку. А потом комплекс заселили обитатели офисов. Каждый день, кто раньше, кто поз...

Подборка @pythonetc, июнь 2019 Это одиннадцатая подборка советов про Python и программирование из моего авторского канала @pythonetc. ← Предыдущие подборки Символ \ в обычной строке имеет особое значение. \t — это символ табуляции, \r — разрыв строки, и так далее. Чтобы отключить такое поведение, вы ...

[Перевод] Искусственный интеллект Horizon Zero Dawn: индивидуальное поведение В первой части исследования ИИ Horizon Zero Dawn я рассказал, как игра создаёт стада управляемых искусственным интеллектом животных-машин. Для этого требуется сложная система иерархии агентов, в которой каждая машина может принимать решения о том, как вести себя, пользуясь п...

Создание системы формальной верификации с нуля. Часть 1: символьная виртуальная машина на PHP и Python Формальная верификация — это проверка одной программы либо алгоритма с помощью другой. Это один из самых мощных методов, который позволяет найти в программе все уязвимости либо же доказать, что их нет. Более подробное описание формальной верификации можно увидеть на пример...

[Перевод] Parcel — мой любимый сборщик проектов Сегодня мы поговорим о сборщиках проектов (о бандлерах), об инструментах, которые облегчают жизнь разработчиков. Суть работы бандлеров заключается в том, что они берут JavaScript-код, содержащийся во множестве файлов, и упаковывают его в один или несколько файлов, определённ...

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

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

Подборка: 5 книг по маркетингу, которые нужно прочитать основателю стартапа Создание и развитие новой компании – всегда непростой процесс. И одна из главных сложностей зачастую заключается в том, что основатель проекта поначалу вынужден погружаться в самые разные области знаний. Он должен улучшать сам продукт или услугу, выстроить процесс продаж, ...

[Перевод] Основы движков JavaScript: общие формы и Inline кэширование. Часть 2 Всем привет! Курс «Безопасность информационных систем» стартует уже через 2 недели, поэтому сегодня мы хотим опубликовать вторую часть статьи, публикация которой приурочена к его запуску. Прочитать первую часть можно тут. Итак, начнем. Inline Caches (ICs) Основной идеей, к...

Как закрывать задачи в баг-трекере Эту статью я написала в рабочем конфлюенсе в 2013 году. И на момент написания этой статьи (2019 год) она все еще была актуальна. Исходно чек-лист записала как напоминание, в том числе и себе. Потому что к задачам приходится возвращаться, в том числе людям, которые их НЕ про...

Где летом поговорить про Apache Ignite и распределенные системы 14 июня в Петербурге пройдет митап Apache Ignite Meetup: реальные кейсы. Послушаем парней, у которых получилось. Первый кейс — IMDG для расчета маржинальности торговых контрактов в Heineken. Второй — промышленная платформа Газпромнефти. Почему open source и Ignite? Куда прик...

Определение кодировки текста в PHP вместо mb_detect_encoding Существует несколько кодировок символов кириллицы. При создании сайтов в Интернете обычно используют: utf-8 windows-1251 koi8-r Еще популярные кодировки: iso-8859-5 ibm866 mac-cyrillic Вероятно это не весь список, это те кодировки с которыми я часто сталкиваюсь. Иног...

Наш первый обед вместе: почему и как мы проводим тестовый день Привет, Хабр! Пару месяцев назад мои коллеги рассказывали про расширение команды в 5 раз: от 50 тогда до 250 разработчиков к концу 2020 года. Как вы могли догадаться, сейчас мы уделяем много внимания найму. При этом, мы не готовы «брать количеством» нанимая всех подряд, мол ...

Дискретная математика для WMS: алгоритм сжатия товаров в ячейках (часть 1) В статье мы расскажем, как решали проблему нехватки свободных ячеек на складе и о разработке алгоритма дискретной оптимизации для решения такой задачи. Расскажем о том, как мы «строили» математическую модель задачи оптимизации, и о том с какими трудностями мы неожиданно ст...

[Перевод] Как заставить игру работать с частотой 60fps Представьте себе задачу: у вас есть игра, и вам нужно, чтобы она работала с частотой 60 fps на 60-герцовом мониторе. Ваш компьютер достаточно быстр для того, чтобы рендеринг и обновление занимали несущественное количество времени, поэтому вы включаете vsync и пишете такой иг...

“Тайна третьей планеты” теперь в HD: нейросети улучшают советские мульфильмы Пользователь портала habr применил нейросетевые алгоритмы для улучшения видеоряда. Разрешение исходного файла увеличилось почти в три раза, а при просмотре на экране смартфона или компьютера больше нет ощущения, что объекты находятся «не в фокусе». Автор ремастери...

Строительные блоки распределенных приложений. Второе приближение Анонс Коллеги, в середине лета я планирую выпустить еще один цикл статей по проектированию систем массового обслуживания: “Эксперимент VTrade” — попытка написать фреймворк для торговых систем. В цикле будет разобрана теория и практика построения биржи, аукциона и магазина. В...

Разбор заданий конкурса AI CTF на Positive Hack Days 9 На PHDays 9 мы решили рассмотреть с практической стороны модную сегодня тему безопасности машинного обучения. Для этого мы создали онлайн-конкурс AI CTF (capture the flag) формата task-based, с заданиями, посвященными безопасности применения техник искусственного интеллекта....

[Перевод] Введение в детерминированные сборки на С/С++. Часть 1 Перевод статьи подготовлен специально для студентов курса «Разработчик С++». Что такое детерминированная сборка? Детерминированная сборка — это процесс сборки одного и того же исходного кода с одной и той же средой и инструкциями сборки, при котором создаются одни и те же...

На пути к физическим принципам биологической эволюции Сокращенный перевод статьи М. Кацнельсона, Ю. Вольфа и Е. Кунина Возможна ли конвергенция физики и биологии? Статьей, наводящей на подобные размышления, я заинтересовался с подачи астрофизика и популяризатора науки Сергея Попова. В одном из его обзоров препринтов была упом...

[Перевод] Что на самом деле случилось с исчезнувшим малайзийским Боингом (часть 3/3) Не претендую на лавры товарища five, но мне кажется, что цикл статей прервался на самом интересном месте, и позволю себе восполнить этот пробел. Исчезновение Прибрежный бродяга Золотая жила Заговоры Возможный сценарий Капитан Истина Читать дальше →

Как ускорить работу с API на языке R с помощью параллельных вычислений, на примере API Яндекс.Директ (Часть 2) В прошлой статье я рассказал о том, что такое многопоточность, и привёл примеры её реализации на языке R при работе с API Яндекс.Директ с помощью пакетов doSNOW, doParallel и конструкции foreach. Данная статья является продолжением, но может быть рассмотрена как автономное р...

Видео: Sony представила новое ограниченное издание Days of Play консоли PS4 Slim Во время прошлогодней акции Days of Play («Время играть») компания Sony представила ограниченную серию консоли PS4 Slim в синем исполнении. Что ж — мероприятие возвращается в этом году в июне, причём вскоре у игроков появится возможность приобрести ещё одно тематическое спец...

[censored]-bot, или есть ли жизнь после китайского комплекта типа "соберисам" Предыстория. Пару лет назад был куплен FlyingBear p902, собран и запущен. Но как это обычно бывает в принтеростроении, пошел процесс модернизаций и разных улучшалок.В итоге были изменены- стол на Anycubic- мозги на Lerdge-S + тач-экран- Добавлен жирный мосфет для командовани...

Laravel: объясняем основные понятия. Часть вторая: «Практика» Всем привет! Продолжаем серию авторских публикаций в преддверии старта курса «Framework Laravel». В прошлой статье мы с вами посмотрели на теоретические основы Laravel. Однако теорию любого фреймворка можно изучать достаточно долго и ничего не понять, пока сам не напишешь н...

[Перевод] Обзор AI & ML решений в 2018 году и прогнозы на 2019 год: Часть 1 — NLP, Computer Vision Всем привет! Представляю вам перевод статьи Analytics Vidhya с обзором событий в области AI / ML в 2018 году и трендов 2019 года. Материал довольно большой, поэтому разделен на 2 части. Надеюсь, что статья заинтересует не только профильных специалистов, но и интересующихся т...

[Перевод] Пишем API для React компонентов, часть 1: не создавайте конфликтующие пропсы Пишем API для React компонентов, часть 1: не создавайте конфликтующие пропсы Пишем API для React компонентов, часть 2: давайте названия поведению, а не способам взаимодействия Пишем API для React компонентов, часть 3: порядок пропсов важенЭтот пост — перевод первой статьи ...

[Перевод] PostgreSQL 11: Эволюция секционирования от Postgres 9.6 до Postgres 11 Отличной всем пятницы! Все меньше времени остается до запуска курса «Реляционные СУБД», поэтому сегодня делимся переводом еще одного полезного материала по теме. В процессе разработки PostgreSQL 11 была проделана впечатляющая работа по улучшению секционирования таблиц. Секц...

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

Не очередной язык программирования. Часть 3: Физика Третья и заключительная часть серии статей о языке lsFusion (ссылки на первую и вторую части) В ней речь пойдет о физической модели: всем том, что не связано с функционалом системы, а связано с ее разработкой и оптимизацией производительности, когда данных становится слиш...

Spring Data JPA: что такое хорошо, и что такое плохо Крошка-сын к отцу пришел И спросила кроха — Что такое хорошо и что такое плохо Владимир Маяковский Эта статья о Spring Data JPA, а именно в подводных граблях, встретившихся на моём пути, ну и конечно же немного о производительности. Читать дальше →

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

Приложение на ТСД и связь с 1С: Предприятие 8.3 через HTTP-Сервис. Часть 2 (Реализация API на стороне 1С) 1. Выбор способа обмена. Описание API. 2. Реализация API на стороне 1С. 3. Приложение на ТСД и связь с 1С: Предприятие 8.3 через HTTP-Сервис. Часть 3(BroadcastReceiver. Получаем данные) Пособий как создать HTTP-сервис в интернете предостаточно. Поэтому сразу опишу реализац...

Улучшаем работу Wi-Fi. Часть 2. Особенности оборудования Друзья, эта статья является продолжением первой части цикла статей о том как улучшить работу WiFi в офисе или на предприятии. Читать дальше →

«Как перестать гореть», или о проблемах входящего потока информации современного человека В 20-м веке жизнь и работа людей шли по плану. На работе (упрощая — можно представить завод) у людей имелся четкий план на неделю, на месяц, на год вперед. Упрощая: тебе надо выпилить 20 деталей. Никто не придет и не скажет, что деталей теперь надо выпилить 37, а кроме тог...

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

[Перевод] К CI/CD и Kubernetes GitLab шел необычным путем Как наша команда Delivery, используя только собственные ресурсы, переделала нашу систему под CI/CD. Команды инженеров постоянно испытывают давление: нужно выдавать новые функции в виде достойного продукта и при этом постоянно минимизировать время цикла. Зачастую специалисты...

[Перевод] Индустрия робомобилей, наконец, становится более реалистичной За последнее десятилетие большая часть шумихи вокруг робомобилей была сконцентрирована на идее, которую первой запустили в компании Google (теперь Waymo), а потом подхватили Tesla и другие. Это идея о робомобиле пятого уровня (полностью, на самом деле, по-настоящему автоном...

[Перевод] Что есть и чего нет в Go. Часть 2 Всем привет! Cегодня делимся заключительной частью перевода статьи «Что есть и чего нет в Go». Напоминаем, в первой части речь шла о элементах, которые есть в Go, сегодня же поговорим о том, чего в Go нет. Перевод данного материала подготовлен в преддверии старта нового пот...

5 способов сделать Python-сервер на Raspberry Pi. Часть 2 Привет Хабр. Сегодня мы продолжим изучать сетевые возможности Raspberry Pi, а точнее их реализацию на языке Python. В первой части мы рассмотрели базовые функции простейшего веб-сервера, работающего на Raspberry Pi. Сейчас мы пойдем дальше, и рассмотрим несколько способов, ...

Security Week 47: нетривиальные уязвимости В прошлом году у нас уже был дайджест про нетривиальные атаки. Тогда речь шла про DoS-атаку на ПК через акустическое воздействие на жесткий диск и кражу пользовательских данных через хак со стилями CSS. А на прошлой неделе как раз было опубликовано два исследования про уязви...

Гиперконвергентное решение AERODISK vAIR. Основа — файловая система ARDFS Привет, читатели Хабра. Этой статьей мы открываем цикл, который будет рассказывать о разработанной нами гиперконвергентной системе AERODISK vAIR. Изначально мы хотели первой же статьей рассказать всё обо всём, но система довольно сложная, поэтому будем есть слона по частям....

Выбираем хостинг: топ-5 рекомендаций При выборе «домика» для сайта или Интернет-проекта важно помнить несколько простых рекомендаций, чтобы потом не было «мучительно больно» за потерянное время и деньги. Наши советы помогут вам построить четкий алгоритм по выбору платного хостинга для размещения сайта на осно...

[Перевод] Деплоим на PythonAnywhere из GitHub Каждый может сделать так: локальный проект → github С (платным) ssh доступом вы сможете сделать так: локальный проект → PythonAnywhere В статье показано как (бесплатно) сделать так: локальный проект → github → PythonAnywhere Сначала я перечислю, зачем вам это может быть ну...

Часть вторая. Как проходить code review по версии Google Возможно вы читали первую часть статьи про код ревью со стороны ревьювера (кстати, мы уже успели ее обсудить в последнем выпуске подкаста "Цинковый прод"). Так как статья набрала много лайков, пишу обещанное продолжение про код ревью с другой стороны — со стороны автора из...

Google хочет сделать YouTube Music стандартным плеером на Android Команда разработчиков YouTube Music подготовила первое в этом году обновление сервиса для мобильных устройств. И хотя новая версия приложения с индексом 2.65 не содержит существенных изменений, в его коде обнаружены подтверждения некоторых новых функции, на которых разработч...

Как сделать два приложения из одного. Опыт Тинькофф Джуниор Привет, меня зовут Андрей и я занимаюсь приложениями Тинькофф и Тинькофф Джуниор для платформы Android. Хочу рассказать о том, как мы собираем два похожих приложения из одной кодовой базы. Тинькофф Джуниор — это мобильное банковское приложение, ориентированное на детей ...

Опыт создания первого робота на Ардуино (робот-«охотник») Здравствуйте. В данной статье я хочу описать процесс сборки своего первого робота на ардуино. Материал будет полезен другим таким же новичкам, как и я, которые захотят изготовить какую-нибудь «самобеглую тележку». Статья представляет собой описание этапов работы с моими доп...

OpenVPN, о котором вы так мало знали OpenVPN, как много в этом слове. Мультиплатформенный, гибко настраиваемый, бесплатный VPN сервер с открытым исходным кодом, являющийся фактически стандартом "defacto" для организации доступа к внутренним корпоративным сетям. Большинство администраторов используют его с настр...

Паттерны и анти-паттерны CI/CD. Часть 2 Всех с пятницей, друзья. Сегодня делимся с вами переводом второй части статьи «Паттерны и анти-паттерны CI/CD», первую часть которой можно прочитать здесь. Напомним, даная серия публикаций приурочена к запуску нового потока по курсу «DevOps практики и инструменты». 1.3 Патт...

FortiConverter или беспроблемный переезд В настоящее время запускается множество проектов, целью которых является замена существующих средств защиты информации. И это неудивительно — атаки становятся все изощреннее, многие средства защиты уже не могут обеспечить должный уровень безопасности. По ходу таких проекто...

Проверка Telerik UI for UWP для знакомства с PVS-Studio Уже стало традицией, что программисты, пополняющие команду PVS-Studio, начинают свою деятельность с написания статьи про анализ проекта с открытым исходным кодом. В этот раз таким проверенным проектом станет Telerik UI for UWP. Читать дальше →

[Перевод] Лямбды: от C++11 до C++20. Часть 1 Добрый день, друзья. Сегодня мы подготовили для вас перевод первой части статьи «Лямбды: от C++11 до C++20». Публикация данного материала приурочена к запуску курса «Разработчик C++», который стартует уже завтра. Лямбда-выражения являются одним из наиболее мощных дополнений...

ЧПУ в хоббийной мастерской (часть 2) → Первая часть В статье рассмотрим стандартное и нестандартное использование CNC-роутера. Для чего кроме вырезания деревянных картинок можно приспособить такой станок. Осторожно, трафик. Читать дальше →

Как настроить Linux для входа в домен с использованием алгоритмов ГОСТ Введение Протокол Kerberos 5 сейчас активно используется для аутентификации. Особенностью данного протокола является то, что он осуществляет аутентификацию, базируясь на трех китах: Симметричное шифрование Хеширование ЭЦП Третья доверенная сторона Начиная с пятой версии п...

Планирование проектов в организации (часть 4) Я продолжаю цикл публикаций о Pulse Management — Управление проектной организацией (Метод Пульса). В этой статье я расскажу о самой «вкусной» части: Планирование проектов. Планирование — это самая простая и самая сложная часть любого проекта основанного целью которого являет...

Об ошибках, возникающих ниоткуда и в которых некого винить: Феномен Размазывания Ответственности В статье не пойдет речь о безответственных сотрудниках, как можно было бы предположить по заголовку статьи. Мы обсудим одну реальную техническую опасность, которая возможно поджидает и вас, если вы создаёте распределённые системы. В одной Enterprise системе жила-была комп...

[Перевод] Вычисление 2D-коллизий: алгоритм Гилберта — Джонсона — Кирти Я занялся изучением процессов распознавания коллизий, и это привело меня к алгоритму Гилберта — Джонсона — Кирти (Gilbert-Johnson-Keerthi, GJK). Все примеры кода в посте написаны на TypeScript. В примерах используются созданные мной структуры, которые подробно в посте не р...

[Из песочницы] Динамическое изменение схемы JSON в Go с помощью gob Значимо изменить маршализацию структуры в json можно только через метод MarshalJSON(), написав там полную реализацию маршализации. Как именно? На это документация Go ни ответов, ни рекомендаций не даёт, предоставляя, так сказать, полную свободу. А как воспользоваться этой св...

[Из песочницы] Рецензия на перевод «Если софт создаётся на общественные деньги, код должен быть открыт» Прочитал статью-перевод «Если софт создаётся на общественные деньги, код должен быть открыт» которая вызвала двоякое чувство. С одной стороны идея кажется правильной, но в статье описано несколько принципиальных проблем, которые вольно или невольно оказывают читателям медвеж...

На пути к физическим принципам биологической эволюции. Окончание + полный текст перевода Сокращенный перевод статьи М. Кацнельсона, Ю. Вольфа и Е. Кунина Towards physical principles of biological evolution Mikhail I. Katsnelson, Yuri I. Wolf, Eugene V. Koonin Оригинал статьи (Две предыдущие части уже были опубликованы: начало и продолжение ) Возможна ли конвер...

[Перевод] Представлен Polaris для поддержания кластеров Kubernetes в здоровом состоянии Прим. перев.: Оригинал этого текста написал Rob Scott — ведущий SRE-инженер компании ReactiveOps, которая и стоит за разработкой анонсируемого проекта. Нам очень близка идея централизованной валидации того, что деплоится в Kubernetes, поэтому мы с интересом следим за подобны...

Делаем мессенджер*, который работает даже в лифте *на самом деле мы напишем только прототип протокола. Возможно, вы встречались с подобной ситуацией – сидите в любимом мессенджере, переписываетесь с друзьями, заходите в лифт/тоннель/вагон, и интернет вроде ещё ловит, но отправить ничего не получается? Или иногда ваш прова...

Строительные блоки распределенных приложений. Первое приближение В прошлой статье мы разобрали теоретические основы реактивной архитектуры. Пришло время поговорить о потоках данных, путях реализации реактивных Erlang/Elixir систем и шаблонах обмена сообщениями в них: Request-response Request-Chunked Response Response with Request Publis...

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

Intel Element — взгляд компании на модульный ПК ближайшего будущего Компания Intel всё время пытается создавать новые устройства, новые сегменты и новые стандарты. В своё время именно с подачи Intel появился сегмент ультрабуков и, как следствие, производители стали активнее выпускать тонкие ноутбуки. Вчера на одном из мероприятий Intel ...

[Перевод] Прекратите использовать Ngrx/effects для этого Иногда простейшая реализация функциональности в конечном итоге создает больше проблем, чем пользы, только увеличивая сложность в другом месте. Конечным результатом является забагованная архитектура, которую никто не хочет трогать. Читать дальше →

[Перевод] Компилируем FFmpeg в WebAssembly (=ffmpeg.js): Часть 1 — Приготовления Из этой части вы узнаете: Зачем это всё нужно Как скомпилировать FFmpeg в Docker Зачем это всё нужно Главные задачи у серии публикаций такие: Создать туториал по использованию Emscripten для компиляции C/C++ библиотек в JavaScript (более детальный и полезный, чем написа...

[Из песочницы] Прикладные технологии на руинах блокчейн-лихорадки или о практической пользе распределения ресурсов В последние годы новостные ленты наводнили сообщения о появляющихся буквально из ниоткуда распределенных вычислительных сетях нового типа, решающих (точнее, пытающихся решить) самые разнообразные задачи — сделать город умным, спасти мир от нарушителей авторских прав или наоб...

Реверс-инжиниринг приложений после обфускации (Часть 2) Введение Данная публикация направлена на изучение некоторых приемов реверс-инжиниринга. Все материалы представлены исключительно в ознакомительных целях и не предназначены в использовании в чьих-либо корыстных целях. Рекомендуется к протчению после первой части Если хирург...

Не нужен вам вуз, идите в ПТУ? Эта статья — ответ на публикацию "Что же не так с IT-образованием в России", а точнее, даже не на саму статью, а на часть комментариев к ней и идеи, в них прозвучавшие. Я сейчас выскажу, наверное, очень непопулярную здесь на Хабре точку зрения, но не высказать я ее не мог...

[Из песочницы] Использование случайного оракула на примере лотереи Как-то утром на глаза попалась статья о проверяемом генераторе случайных чисел на блокчейне Waves platform. Общая картина была понятна, а вот способ конкретной реализации — нет. Какие-то коды, подписи, что, куда, зачем? Несколько консультаций у автора оракула, в результат...

[Перевод] Что лучше выбрать в 2020 году — React или Vue? JavaScript-фреймворки стали неотъемлемой частью каждого современного веб-проекта. Существует множество подобных фреймворков, в результате разработчикам постоянно приходится задаваться вопросом о том, что выбрать. Искать ответ на этот вопрос придётся и в 2020 году. Если вы ...

[Из песочницы] Распаковка вложенных списков неопределенной глубины Сегодня я хотел бы поговорить о распаковке вложенных списков неопределённой глубины. Это достаточно нетривиальное занятие, поэтому я бы хотел рассказать тут о том, какие реализации есть, их плюсы и минусы и сравнение их производительности. Статья будет состоять из нескольких...

[Перевод] Как с Prometheus собирать метрики, не искаженные привязкой ко времени Многие сетевые приложения состоят из веб-сервера, обрабатывающего трафик в реальном времени, и дополнительного обработчика, запускаемого в фоне асинхронно. Есть множество отличных советов по проверке состояния трафика да и сообщество не перестает разрабатывать инструменты в...

[Из песочницы] ShIoTiny: малая автоматизация, интернет вещей или «за полгода до отпуска» Основные тезисы или о чем эта статья Так как интересы людей разные, а времени у людей мало, то кратко о содержании статьи. Статья эта представляет собой обзор проекта контроллера с минимальной ценой и возможностью визуального программирования посредством WEB-браузера. Пос...

Состоялась первая гонка с участием беспилотных гоночных болидов. Но до Формулы-1 ей далеко Автогонки являются одним из самых зрелищных видов спорта. Существует много подвидов гонок вроде тех же раллийных гонок или соревнований NASCAR, но если вы любите посмотреть на соревнования высокоскоростных автомобилей, то вполне возможно, что вас ждет сюрприз. Ведь помимо п...

[Перевод] Java Challengers #4: Сравнение объектов с equals() и hashCode() Java Challengers #4: Сравнение объектов с equals() и hashCode() В преддверии запуска нового потока по курсу "Разработчик Java" мы продолжаем перевод серии статей Java Challengers, предыдущие части которых можно прочитать по ссылкам ниже: Перегрузка методов в JVM Сравнение с...

Моя Marble Machine, напечатанная на 3D принтере Я пытаюсь освоить 3D печать — у меня появился принтер FLSUN-QQ, я установил себе 3D редакторы: Fusion 360, Blender, пробую Компас 3D. Что-то получается, что-то не получается. Эта Marble Machine на видео — один из моих первых успешных проектов. Проект, хоть визуально и не бо...

Хватит использовать RSA Привет, %username%! RSA — первый широко используемый алгоритм асимметричной криптографии, который до сих пор популярен в индустрии. Он относительно прост, на первый взгляд. Шифрование и подпись RSA можно посчитать на листке бумаги, чем часто занимаются студенты на лаборат...

[Перевод] Реализация PEG парсера Вдохновленный лишь частичным пониманием PEG, я решил попробовать его реализовать. Результат может получиться и не самым лучшим среди парсеров PEG общего назначения — их уже много (например, TatSu написан на Python и генерирует код Python) — но это хороший способ разобраться ...

Очередные странности в алгоритмах ГОСТ Кузнечик и Стрибог Привет, %username%! Криптографические алгоритмы в России не проходят через открытые конкурсы, их просто спускают нам свыше. И рано или поздно это сильно нам аукнется. Эта статья об очередном исследовании наших ГОСТов. Читать дальше →

[Перевод] Назад к микросервисам вместе с Istio. Часть 2 Прим. перев.: Первая часть этого цикла была посвящена знакомству с возможностями Istio и их демонстрации в действии. Теперь же речь пойдёт про более сложные аспекты конфигурации и использования этого service mesh, а в частности — про тонко настраиваемую маршрутизацию и упр...

Музей DataArt. Человек-машина: настольная вычислительная техника до микрокалькуляторов DataArt продолжает расширять коллекцию и рассказывать об отдельных экспонатах музея. В прошлой статье речь шла о советских мышках. На этот раз в центре внимания арифмометры и ЭКВМ — орудия производства специально обученных вычислителей. Читать дальше →

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

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

Книга «Совершенный алгоритм. Графовые алгоритмы и структуры данных» Привет, Хаброжители! Алгоритмы — это сердце и душа computer science. Без них не обойтись, они есть везде — от сетевой маршрутизации и расчетов по геномике до криптографии и машинного обучения. «Совершенный алгоритм» превратит вас в настоящего профи, который будет ставить за...

Численное моделирование – история одного проекта Привет, Хабр и его уважаемые читатели! В статье (ссылка) мы рассказали о нашем опыте внедрения инструментов численного моделирования в исследовательскую практику металлургической компании. Рады, что тема нашла поддержку и вызвала интерес у читателей ресурса. Сегодня мы рас...

Реализация паттерна Page Object на Python + pytest Когда я начинал изучать автоматизацию тестирования, не мог понять — “что такое Page Object и как его реализовать на Python + pytest?”. Штудируя интернет, нашел реализацию на других языках и фреймворках: обучающие статьи, которые были непонятны для меня. Поэтому решил написат...

Как мы YouTube Live с Zoom интегрировали Всем привет! Это вторая часть серии статей от IT-команды сервиса бронирования отелей Ostrovok.ru об организации онлайн-трансляции корпоративных презентаций и мероприятий в одном отдельно взятом помещении. В первой статье мы рассказали о том, как решили проблему плохого зву...

[Перевод] Использование JavaScript-модулей в продакшне: современное состояние дел. Часть 2 Сегодня мы публикуем вторую часть перевода материала, который посвящён использованию JS-модулей в продакшне. → Кстати, вот первая часть статьи. Читать дальше →

[Перевод] Как реализовать чистую архитектуру на Android? Что вы найдёте в этой статье? В 2016 году я начал изучать Java, а в начале 2017 года — Android. С самого начала я уже знал, что существует понятие архитектуры приложений, но не знал, как это применить в своём коде. Я находил много разных гайдов, но понятнее от этого мне не ...

[Из песочницы] Yota — или как можно узнать всё Все действия в данной статье выполнены в ознакомительных целях. Все персонажи произведения являются вымышленными, любое совпадение с реальными людьми — случайно. Введение Все началось с того что я прочитал данные статьи про Мегафон. Как Мегафон спалился на мобильных подпи...

3. Дизайн сети предприятия на коммутаторах Extreme Добрый день, друзья! Сегодня я продолжу цикл, посвященный коммутаторам Extreme статьей по проектированию сети Enterprise. В статье я постараюсь по возможности кратко: описать модульный подход к проектированию сети Etnterprise рассмотреть виды построения одного из важне...

[Из песочницы] Исследуем утверждение центральной предельной теоремы с помощью экспоненциального распределения Вместо введения В статье описывается исследование, проведенное с целью проверки утверждения центральной предельной теоремы о том, что сумма N независимых и одинаково распределенных случайных величин, отобранных практически из любого распределения, имеет распределение, близко...

[Перевод] Доступное объяснение алгоритма коллапса волновой функции Алгоритм коллапса волновой функции (Wavefunction Collapse Algorithm) учит компьютер импровизировать. На входе он получает архетипичные данные и создаёт процедурно генерируемые данные, похожие на исходные. (Источник) Чаще всего он используется для создания изображений, но ...

Треугольник Паскаля vs цепочек типа «000…/111…» в бинарных рядах и нейронных сетях Серия «Белый шум рисует черный квадрат» История цикла этих публикаций начинается с того, что в книге Г.Секей «Парадоксы в теории вероятностей и математической статистике» (стр.43), было обнаружено следующее утверждение: Рис. 1. По анализу комментарий к первым публикациям...

Виды контекста в JavaScript И снова здраствуйте! Мы уже писали о том, что в конце сентября в OTUS стартует новый поток курса «Fullstack разработчик JavaScript». В преддверии начала занятий продолжаем делиться с вами авторскими статьями, подготовленными специально для студентов курса. Сегодня разберем в...

Способ организации коллективного изучения теории в ходе семестра Всем привет! Год назад я написал статью про то, как я организовывал университетский курс по обработке сигналов. Судя по отзывам, в статье много интересных идей, но она большая и тяжелочитаемая. И я давно хотел разбить её на более маленькие и написать их понятнее. Но писать о...

[Перевод] Функциональное мышление. Часть 9 Это уже 9 часть серии статей по функциональному программированию на F#! Уверен, на Хабре существует не очень много настолько длинных циклов. Но мы не собираемся останавливаться. Сегодня расскажем про вложенные функции, модули, пространства имен и смешивание типов и функций в...

Устройство компилятора Swift. Часть 4 Это последняя часть моего обзора компилятора Swift. Я покажу, как можно осуществить генерацию LLVM IR из AST и что выдаёт настоящий фронтенд. Если вы не читали предыдущие части, то переходите по ссылкам: Общий обзор компонентов Разбор исходного файла Swift intermediate lan...

TDDx2, BDD, DDD, FDD, MDD и PDD, или все, что вы хотите узнать о Driven Development Просматривая статьи по проектированию ПО, я постоянно встречал тучу невиданных сокращений и вскользь упоминаемых практик разработки. TDD — ну, это все знают, сначала пишем тесты, а потом остальной код. BDD — что-то знакомое, вроде как, тоже тесты, но особенные. TDD — снов...

[Из песочницы] Стратегии локализации контента Настройка локализации контента и, следовательно, настройка языка интерфейса продукта таким образом, чтобы правильный язык отображался для правильного пользователя, чрезвычайно важен для каждой цифровой платформы. Предпосылки и предварительные соображения Цифровые проекты, ...

[Перевод] Как я создал фильтр, не портящий изображение даже после миллиона прогонов Завершив создание веб-архитектуры для нашего нового веб-комикса Meow the Infinite, я решил, что самое время написать несколько давно назревших технических статей. Данная статья будет посвящена фильтру, разработанному мной несколько лет назад. Он никогда не обсуждался в облас...

[Перевод] Шардинг в Блокчейне Всем привет, я один из разработчиков Near Protocol, который, среди прочего, реализует шардинг, и в этой статье хочу подробно рассказать что вообще такое шардинг в блокчейне, как он работает, и коснуться ряда проблем, которые возникают при попытке его построить. Хорошо извест...

Библиотека Symbols GOST для DipTrace Ниже на скрине представлена часть символов библиотеки. В общей сложности библиотека содержит около 300-сот УГО выполненных по стандартам ГОСТ (ЕСКД). Библиотека разрабатывается и поддерживается мной. Все предложения, пожелания по добавлению символов (УГО) или компонентов...

Почему не 1С? Совсем недавно мы опубликовали статью с описанием проблем одной из самых популярных технологий, используемых в IT, и на наше удивление она вызвала достаточно живой интерес (во всяком случае для технической статьи). Поэтому мы решили на этом не останавливаться, и сегодня мы...

[Из песочницы] Многорукий бог дедлайна или Широкое Использование Возможностей Аналитика Ни для кого не секрет, что аналитики — одна из самых свободно и многогранно трактуемых профессий. И, несмотря на наличие аж двух профессиональных стандартов, каждая компания индивидуально очерчивает круг задач, возлагаемых на специалиста, занимающего эту должность. В своей с...

Американские ученые научили роботов использовать вспомогательные инструменты Обезьяна (шимпанзе) достает термитов из термитника при помощи палки. Навторой фотографии горилла использует палку для сбора нужной ей травы Разработчики из США создали специализированный алгоритм для роботов, который дал возможность последним использовать дополнительные и...

[Из песочницы] Что сейчас происходит с RDF-хранилищами? Semantic Web и Linked Data подобны ближнему космосу: жизни там нет. Чтобы отправиться туда на более-менее длительный срок… ну, не знаю, что говорили вам в детстве в ответ на «хочу стать космонавтом». Но понаблюдать за происходящим можно и находясь на Земле; стать астрономом-...

Слухи твердят, что Nvidia представит новые версии видеокарт RTX 2060, RTX 2070 и RTX 2080 и существенно снизит цены Вчера мы писали о том, что слухи указывают на скорый анонс компанией Nvidia неких новых видеокарт. Якобы именно это производитель рекламировал под словом «super» несколько дней назад. Тогда источник говорил о двух новых моделях, а мы предположили, что речь м...

[Перевод] Компиляция C в WebAssembly без Emscripten Компилятор — часть Emscripten. А что, если удалить все свистелки и оставить только его? Emscripten необходим для компиляции C/C++ в WebAssembly. Но это гораздо больше, чем просто компилятор. Цель Emscripten в том, чтобы полностью заменить ваш компилятор C/C++ и запустить в ...

10 консольных команд, которые помогут дебажить JavaScript-код like a PRO Перевели статью Амита Соланки по отладке JavaScript-кода при помощи консольных команд. По словам автора, эти команды помогут значительно повысить производительность труда программиста при поиске багов и сэкономят кучу времени. Давайте рассмотрим команды, которые действит...

Быстрее и точнее: гибридная система разнотипных кубитов Некоторые идеи ярко зарождаются и быстро умирают ввиду сложности, дороговизны или даже ненужности реализации. Акулы-убийцы с лазерными установками на голове — звучит очень круто, очень сложно и невероятно нелепо. Однако некоторые идеи в своей реализации обещают если не «зо...

[Перевод] Бесстрашная защита. Безопасность потоков в Rust Это вторая часть цикла статей «Бесстрашная защита». В первой мы рассказывали про безопасность памяти Современные приложения многопоточны: вместо последовательного выполнения задач программа использует потоки для одновременного выполнения нескольких задач. Все мы ежедневно ...

PVS-Studio идёт в облака: CircleCI Мы продолжаем цикл статей по использованию статического анализатора PVS-Studio в облачных CI-системах. Сегодня рассматриваем очередной сервис — CircleCI. В качестве проекта для анализа в этот раз выступит медиаплеер Kodi, в исходном коде которого постараемся найти интересны...

Как настроить типы задач и не сойти с ума Вводная частьВ предыдущем посте я писал как организовать процесс “грумминга” задач в системе JIra так чтобы “Менеджеру продукта” было удобно осуществлять навигацию по всему Беклогу продукта. Продолжая продуктовую тему напишу о том как я долго шел к пониманию того — что такое...

[Перевод] Функциональное мышление. Часть 8 Привет, Хабр! Мы с небольшим запозданием возвращаемся с новогодних каникул с продолжением нашей серии статей про функциональное программирование. Сегодня расскажем про понимание функций через сигнатуры и определение собственных типов для сигнатур функций. Подробности под кат...

Ускорение поиска сцен в видео с помощью табличного представления Что такое табличное представление видео? Табличное представление видео — это таблица, где в каждой из её ячеек отображается свой кусочек исходного видео. Выглядит это как на изображении представленном ниже. Нужно понимать, что табличное видео не статичная картинка, а именно ...

[Из песочницы] Знакомство с простейшей нейронной сетью и ее пошаговая реализация Как-то раз я наткнулся на книгу под названием «Создай свою нейросеть», автор которой -Тарик Рашид и после прочтения остался доволен, в отличие от многих других методичек по нейронным сетям, которые по-своему, несомненно, хороши, в этой книге все подавалось простым языком c д...

SQL в CSV с помощью DBMS_SQL Часто при решении задач системной интеграции требуется представить некоторый объем данных в том или ином формате. При этом потребителем данных может быть кто угодно, а вот источником почти всегда является корпоративная база данных. К примеру, производитель может требовать у ...

Who is HubEx? Как мы создали платформу для управления сервисом оборудования Иногда можно услышать такую фразу «чем старше продукт, тем он функциональнее». В век современных технологий, далеко идущего web и модели SaaS это утверждение почти не работает. Залог успешной разработки это постоянный мониторинг рынка, отслеживание запросов и требований клие...

[Перевод] Визуализируем и разбираемся с Hash Match Join Этот пост является третьей частью серии, посвященной операторам соединения (обязательно прочитайте часть 1 — nested loops joins, и часть 2 — merge joins). Перевод статьи подготовлен специально для студентов курса «MS SQL Server разработчик». Hash Match Joins — это надежные ...

[Перевод] 10 самых распространенных ошибок при работе с платформой Spring. Часть 1 Всем привет. Сегодня делимся первой частью статьи, перевод которой подготовлен специально для студентов курса «Разработчик на Spring Framework». Начнём! Spring — пожалуй, одна из самых популярных платформ разработки на языке Java. Это мощный, но довольно сложный в освоении...

Некролог на смерть Chromecast Audio: Google убил черные диски Несколько дней назад www.reddit.com сообщил, что Googlе прекращает выпуск Chromecast Audio, устройства, которое в свое время стало одним из самых удобных альтернатив большим мультирум системам. Для тех, кто успел забыть, что это за штуковина, напомню, что это такой диск, кот...

[Перевод] Как работает альфа-композитинг Возможно, прозрачность не кажется какой-то интересной темой. Формат GIF, позволявший некоторым пикселям просвечивать сквозь фон, опубликован более 30 лет назад. Почти в каждом приложении для графического дизайна, выпущенном за последние два десятка лет, поддерживается созда...

Многопоточные вычисления на Javascript, или как телефон выиграл гонку у ноутбука Привет, Хабр! Продолжаем битву за производительность Javascript на примере построения сводных таблиц. В прошлый раз мы реализовали несколько оптимизаций, и оставалась последняя реальная возможность ускорить расчет — перейти на многопоточные вычисления. В Javascript уже давн...

[Перевод] Машинно-синестетический подход к обнаружению сетевых DDoS-атак. Часть 1 Всем, привет. В последнее время у нас большое количество новых запусков и сегодня хотелось бы анонсировать курс «Сетевой инженер», который стартует уже в начале марта. Традиционно начинаем делиться с вами полезным материалом по теме, и сегодня публикуем первую часть статьи «...

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

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

[recovery mode] REST страсти по 200 Давно я хотел написать эту статью. Все думал — с какой стороны зайти правильнее? Но, вдруг, недавно, на Хабре появилась подобная статья, которая вызвала бурю в стакане. Больше всего меня удивил тот простой факт, что статью начали вбивать в минуса, хотя она даже не декларир...

5 советов о Design Leadership. Часть 1 Всем привет. Уже в этом месяце мы запускаем курс «Team Lead 2.0», который подготовлен специально для старших разработчиков, TeamLead’ов, SCRUM мастеров и специалистов, желающих повысить свой профессиональный уровень и получить уникальный опыт, необходимый для эффективного уп...

Круче, чем у SpaceX: Германский центр авиации и космонавтики предлагает ловить первую ступень многоразовой ракеты... самолётом Согласно сообщению источников, Германский центр авиации и космонавтики (Deutsches Zentrum für Luft - und Raumfahrt; DLR) приступает в этом месяце к исследованию концепции многоразовой ракеты-носителя. Учитывая, что SpaceX уже всем давно доказала состоятельность по...

Upgrade дисковой подсистемы старого сервера с шиной PCIe 1.0 — 2.0 Почему темой данной статьи выбран апгрейд дисковой подсистемыПонятно, что в первую очередь нужно, как правило: Увеличить оперативную память. Это настолько очевидный ход, что я даже не счёл нужным писать об этом в основной статье Поставить дополнительный процессор(ы) или за...

Как общаются машины: протокол Modbus Протокол Modbus — самый распространенный промышленный протокол для M2M-взаимодействия. Является стандартом де-факто и поддерживается почти всеми производителями промышленного оборудования. Благодаря универсальности и открытости, стандарт позволяет интегрировать оборудовани...

Обман нейронной сети для начинающих В рамках ежегодного контеста ZeroNights HackQuest 2018 участникам предлагалось попробовать силы в целом ряде нетривиальных заданий и конкурсов. Часть одного из них была связана с генерированием adversarial-примера для нейронной сети. В наших статьях мы уже уделяли внимание ...

[Перевод] Истории лунного компьютера. Часть 1 Часть 2 Часть 3 Часть фотографий была взята с сайта Hack The Moon. Статья была представлена на 27-й ежегодной конференции по навигации и управлению Американского Общества Астронавтики (AAS) в Брекенридже, штат Колорадо, 6 февраля 2004. Предлагаемая вам версия содержит допо...

[Из песочницы] Построение пакета RPM для Rosa Linux на практике Если Вы уже давно пользуетесь операционной системой Linux и хоть немного разбираетесь в программировании, рано или поздно Вам может понадобиться собрать программу из исходного кода. Может быть, нужной программы не окажется в репозиториях дистрибутива. Или в этих репозиториях...

MIRO — открытая платформа indoor-робота. Часть 4 — Программная составляющая: ARDUINO (AVR) Продолжаем разбирать программную составляющую платформы MIRO. Хочется более подробно рассмотреть именно программное обеспечение под AVR. Поэтому вопросу посвятим две части. В первой опишем общую структуру библиотеки, а во второй — реализацию некоторых ключевых методов клас...

Обзор и тестирование материнской платы ASUS ROG Maximus XI Formula Из всех модификаций выделяется именно Formula. Так исторически сложилось, что эти модели выпускаются с особенными радиаторами на транзисторах системы питания процессора. По сути это водоблок. Значит, материнская плата предназначена в первую очередь для любителей кастомных СЖ...

Как сделать так, чтобы вашу англоязычную статью для Хабра прочитали десятки тысяч человек: 3 простых совета Англоязычная версия Хабра существует уже какое-то время. Все больше пользователей пробуют свои силы в переводе своих русскоязычных статей и написании новых. Я очень много пишу на английском по работе, и вижу некоторые повторяющиеся ошибки, которые не позволяют таким статья...

[Перевод] Приключения неуловимой малвари: многосторонняя оборона (заключительные мысли) Эта статья является частью серии «Fileless Malware». Все остальные части серии: Приключения неуловимой малвари, часть I Приключения неуловимой малвари, часть II: скрытные VBA-скрипты Приключения неуловимой малвари, часть III: запутанные VBA-скрипты для смеха и прибыли...

Обфускация данных для тестов производительности Пользователи ClickHouse знают, что его главное преимущество — высокая скорость обработки аналитических запросов. Но как мы можем выдвигать такие утверждения? Это должно подтверждаться тестами производительности, которым можно доверять. О них мы сегодня и поговорим. Такие...

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

Дубай Молл в смартфоне, или как добавить поэтажный план здания в своё приложение В прошлой статье статье я рассказал, как сделать мобильное приложение с картой. В продолжении серии «на коленке» поделюсь с вами инструментами для реализации поэтажных планов. Исходная постановка задачи в упрощённом виде: хочется иметь возможность визуализировать схему эт...

Vue 3 станет быстрее Одним из самых ярких событий в мире Фронтенда в этому году стала публикация репозитория Vue next — части функционала третьей версии VueJS. В этой в этой статье представлен обзор новых killer features VueJS. На момент публикации статьи репозиторий находился в статусе Pre-Alp...

Старая система? Microsoft обновит ее сама! Если вы помните, то в 2015 году Microsoft представила программу «Помощник по обновлению до Windows 10». Данное приложение автоматически устанавливалось на операционные системы Windows 7 и Windows 8/8.1. Суть ее заключалась в том, чтобы обновить вашу операционную систему до а...

Микросервис на GO для граббинга видео из твитов Добрый день, Хабравчане! Статья для новичков, каких то сверх новых идей вы здесь не увидите. Да и данный функционал, скорее всего, реализовывался десятки раз на различных языках. Идея состоит в том, что бы получив ссылку на пост в твиттере в котором содержится видео, забрать...

[Из песочницы] Библиотека генератора ассеблерного кода для микроконтроллеров AVR. Часть 1 Библиотека генератора ассеблерного кода для микроконтроллеров AVR Часть 1. Первое знакомство Добрый день, уважаемые хабаровчане. Хочу предложить Вашему вниманию очередной (из имеющегося великого множества) проект, для программирования популярных микроконтроллеров серии AVR. ...

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

Амеба справилась с вычислениями лучше современного компьютера Группа исследователей из токийского университета Кейо решила использовать амебу для решения так называемой «задачи коммивояжера», известной в области компьютерных наук проблемы. Суть ее такова: представьте, что вы — путешествующий от города к городу продавец, предлагающий св...

Реверс-инжиниринг бинарного формата на примере файлов Korg SNG. Часть 2 В прошлой статье я описал ход рассуждений при разборе неизвестного двоичного формата данных. Используя Hex-редактор Synalaze It!, я показал как можно разобрать заголовок двоичного файла и выделить основные блоки данных. Так как в случае формата SNG эти блоки образуют иерар...

Текстурирование, или что нужно знать, чтобы стать Художником по поверхностям. Часть 4. Модели, нормали и развертка Модели, нормали и развертка По моему скромному мнению, художник по текстурам должен отвечать за развертку. Не за саму развертку (ее стоит делать 3D-художникам или вообще отдельным UV-специалистам), а ее укладку. Он должен определять, как острова должны располагаться, как дол...

[Из песочницы] Как я делился местоположением через ВК API Недавно решил попробовать реализовать идею о том, как можно делиться местоположением через API ВКонтакте с друзьями в режиме, приближенном к реальному времени. На выходе получилось кроссплатформенное Qt-приложение для iOS/Android, веб-приложение для ВКонтакте и парочка pull ...

[Перевод] Хитрый Perl-квайн Прим. пер.: Встретил сегодня в твиттере очень забавный, на первый взгляд, тред. А потом пригляделся и понял, что он не только забавный, но и занятный. А раз уж так сложилось, что сегодня пятница, то решил, что стоит поделиться обнаруженным и с товарищами:) Сохраните следу...

Каталог ИТ систем компании Вы сможете сходу ответить на вопрос, сколько ИТ-систем у вас в компании? До недавнего времени мы тоже не могли. Поэтому сейчас расскажем о нашем подходе к построению единого перечня ИТ-систем компании, который нужен был для решения следующих задач: Единый словарь для все...

Что ты такое, Event Loop? Или как устроен цикл событий в браузере Chrome Как думаете, что произойдет, если запустить в консоле браузера этот фрагмент кода? function foo() { setTimeout(foo, 0); } foo(); А этот? function foo() { Promise.resolve().then(foo); } foo(); Если вы также как и я, прочитали кучу статей про Event Loop, Main Thread,...

[Перевод] Интернетизированный человек Представьте сырое зернышко риса. А теперь представьте мир, в котором это крошечное рисовое зерно может открыть вам двери, купить продукты и завести машину. Эта крупица размером с рисовинку заменит ваш гигантский кошелек и брелок с ключами. Когда вы встречаете кого-то на ме...

[Из песочницы] Как работают веб-приложения Это статья для начинающих разработчиков и тех, кто хочет немного ориентироваться в терминах и технологиях современных веб-приложений. В статье написано о том, чем веб-приложения отличаются от сайтов, какие бывают веб-приложения, из чего они состоят и как работают. Читать да...

[Перевод] «Тетрис» в роли принтера Поворачивая, переставляя и опуская вниз заранее заданную последовательность фигур, Tetris Printer Algorithm использует механику «Тетриса» для генерации произвольных битовых изображений. Описание алгоритма Алгоритм построчно преобразует пиксели исходного изображения в квадр...

[Перевод] Реалистичная каустика отражений Большинство технических художников на каком-то этапе карьеры пытается создать правдоподобные отражения каустики. Если вы разработчик игр, то одна из основных причин чтения Twitter заключается в бесконечном потоке вдохновения, которое из него можно почерпать. Несколько дней ...

[Перевод] Назад к микросервисам вместе с Istio. Часть 3 Прим. перев.: Первая часть этого цикла была посвящена знакомству с возможностями Istio и их демонстрации в действии, вторая — тонко настраиваемой маршрутизации и управлению сетевым трафиком. Теперь же речь пойдёт про безопасность: для демонстрации связанных с ней базовых ф...

Триллион маленьких шинглов Источник изображения:www.nikonsmallworld.com Антиплагиат – это специализированный поисковик, о чем уже писали ранее. А любому поисковику, как ни крути, чтобы работать быстро, нужен свой индекс, который учитывает все особенности области поиска. В своей первой статье на Хабре...

Язык программирования Zig Первым комментарием к замечательной статье Субъективное видение идеального языка программирования оказалась ссылка на язык программирования Zig. Естественно, стало интересно, что же это такое за язык, который претендует на шину C++, D и Rust. Посмотрел — язык показался симп...

Мифы популярной физики, продолжение: Гравитация Первая часть статьи тут. А мы пока разберем другие мифы, о которых вам не расскажут эти два парня: Читать дальше →

Как оптимизировать pandas при работе с большими datasetами (очерк) Когда памяти вагоны и/или dataset небольшой можно смело закидывать его в pandas безо всяких оптимизаций. Однако, если данные большие, остро встает вопрос, как их обрабатывать или хотя бы считать. Предлагается взглянуть на оптимизацию в миниатюре, дабы не вытаскивать из сети...

Ищем аномалии и предсказываем сбои с помощью нейросетей Промышленная разработка программных систем требует большого внимания к отказоустойчивости конечного продукта, а также быстрого реагирования на отказы и сбои, если они все-таки случаются. Мониторинг, конечно же, помогает реагировать на отказы и сбои эффективнее и быстрее, но...

MPPT контроллер заряда на STM32F334C8T6 В комментариях под моими предыдущими статьями неоднократно возникал вполне резонный вопрос: "Зачем делать dc/dc преобразователи на микроконтроллере, когда есть готовые?" и я в качестве ответа постоянно упоминал, как наиболее яркий пример, контроллер заряда с алгоритмом MPPT....

LuaVela: реализация Lua 5.1, основанная на LuaJIT 2.0 Некоторое время назад мы анонсировали публичный релиз и открыли под лицензией MIT исходный код LuaVela – реализации Lua 5.1, основанной на LuaJIT 2.0. Мы начали работать над ним в 2015 году, и к началу 2017 года его использовали в более чем 95% проектов компании. Сейчас хоче...

Интересные факты об истории Китайской лунной программы и космической миссии «Чанъэ-4» Многое скрыто за заборами полигонов и стенами лабораторий Китайской академии космических технологий при реализации лунных научно-исследовательских космических программ, но часть информации потом все равно любезно предоставляется в открытый доступ. Читать дальше →

[Перевод] Советы по созданию нестандартных рабочих процессов в GitLab CI Прим. перев.: Оригинальную статью написал Miłosz Smółka — один из основателей небольшой польской компании Three Dots Labs, специализирующейся на «продвинутых backend-решениях». Автор опирается на свой опыт активной эксплуатации GitLab CI и делится накопленными советами для д...

Библиотека генератора ассемблерного кода для микроконтроллеров AVR. Часть 5 ← Часть 4. Программирование периферийных устройств и обработка прерываний Библиотека генератора ассемблерного кода для микроконтроллеров AVR Часть 5. Проектирование многопоточных приложений В предыдущих частях статьи мы подробно останавливались на основах программирования с ...

Уместить звездное небо на WebGL в 1009 байт JavaScript Две вещи наполняют душу всегда новым и все более сильным удивлением и благоговением, чем чаще и продолжительнее мы размышляем о них, — это звездное небо надо мной и моральный закон во мне. Иммануил КантJS1k — ежегодное соревнование, где надо вместить демо, игру или все что у...

[Перевод] Как генерируются подземелья в Enter The Gungeon В последнее время я много играл в Enter The Gungeon. Это потрясающая, ужасно сложная игра в жанре bullet hell, сильно напомнившая мне Binding of Isaac. Но чем больше я играл в неё, тем больше осознавал малозаметную гениальность дизайна подземелий. Существует много процедур...

[Перевод] Chaos Engineering: искусство умышленного разрушения Прим. перев.: Рады поделиться переводом замечательного материала от старшего технологического евангелиста из AWS — Adrian Hornsby. В простых словах он объясняет важность экспериментов, призванных смягчить последствия сбоев в ИТ-системах. Вы, наверное, уже слышали про Chaos M...

Распознавание текста с помощью OCR Tesseract — это движок оптического распознавания символов (OCR) с открытым исходным кодом, является самой популярной и качественной OCR-библиотекой. OCR использует нейронные сети для поиска и распознавания текста на изображениях. Tesseract ищет шаблоны в пикселях, буквах, сл...

[Перевод] Знакомство с Тестированием в Python. Ч. 3 Друзья, у нас для вас отличные новости. Во-первых на улице наконец-то светит солнышко, а это значит, что весна начинает полноправно вступать в свои права. Вторая новость более профильная — уже 20 марта стартует первое занятие в новом потоке по курсу «Разработчик Python», в с...

[Из песочницы] Как организовать хакатон будучи студентом 101. Часть первая Всем привет, уже несколько раз натыкался на статьи про хакатоны: почему люди туда ходят, что работает, что нет. Возможно людям будет интересно услышать про хакатоны с другой стороны: со стороны организатора. Прошу обратить внимание что речь идет о Великобритании, организат...

[Перевод] Не потерял ли GraphQL актуальности в эпоху HTTP/2? Недавно Фил Стерджен опубликовал твит, который сильно задел любителей GraphQL. В этом твите речь шла о том, что GraphQL — это, по определению, технология, которая противоречит сущности HTTP/2. О том, что уже вышел стандарт HTTP/3, и о том, что автор твита не очень понимает т...

Дискретная математика для WMS: кластеризация партий товаров на складе В статье рассказывается как при внедрении WMS-системы мы столкнулись с необходимостью решения нестандартной задачи кластеризации и какими алгоритмами мы ее решали. Расскажем, как мы применяли системный, научный подход к решению проблемы, с какими сложностями столкнулись и ...

Как съездить на стажировку в крупную IT-компанию Если вы давно хотели поехать на зарубежную стажировку, но совершенно не знаете, как к этому подступиться, то эта статья для вас. Фёдор Киташов (kitashov), студент 4 курса ФРКТ МФТИ, рассказал что нужно сделать, чтобы съездить на стажировку с полным покрытием, поработать на...

[Перевод] Вирусы, атакующие промышленные предприятия как угроза физической безопасности Всем привет! Сегодня делимся статьей переведенной специально для студентов курса «Реверс-инжиниринг». Поехали. Вирусы, атакующие промышленные предприятия как угроза физической безопасности Мы живем в мире, где все больше и больше производственных процессов контролируются ...

[Из песочницы] OpenAI Gym+ROS+Gazebo: обучение автономного робота в домашних условиях. Часть 1 За последние несколько лет мы стали свидетелями внедрения технологий искусственного интеллекта в нашу повседневной жизни — от роботов-пылесосов до беспилотных дронов. Все они, управляемые искусственным интеллектом, уже являются для нас обыденностью. Но несмотря на это, проце...

Пример разбора C++ кода с помощью libclang на Python На одном личном проекте на C++ мне потребовалось получать информацию о типах объектов во время выполнения приложения. В C++ есть встроенный механизм Run-Time Type Information (RTTI), и конечно же первая мысль была использовать именно его, но я решил написать свою реализацию,...

UML&Enterprise Architect: проектируем целевой процесс при создании автоматизированной системы Советский плакат «Автоматическую систему управления производством — народному хозяйству!», художник Р. Сурьянинов, 1972 «Рассказ о моделировании именно сложных систем» Предыстория К одной из моих статей по моделированию «сказочной» предметной области (часть 1, часть 2) был ...

[Перевод] Ко дню рождения Юрия Кнорозова: изучаем основы письменности Майя Письменность майя была единственной полноценной системой письменности в Америке, но благодаря старанием отважных испанских конкистадоров к XVII веку она была полностью забыта. Тем не менее, тысячи этих символов сохранилось на резных камнях, фресках и керамике, и в XX веке о...

Статистика и мониторинг PHP скриптов в реальном времени. ClickHouse и Grafana идут на помощь к Pinba В этой статье я расскажу как использовать pinba совместно с clickhouse и grafana вместо pinba_engine и pinboard. На php-проекте pinba — пожалуй единственный надёжный способ понять, что происходит с производительностью. Правда обычно pinba внедряется только тогда, когда уже н...

Tic Tac Toe, часть 3: Undo/Redo с хранением команд Tic Tac Toe, часть 0: Сравнение Svelte и React Tic Tac Toe, часть 1: Svelte и Canvas 2D Tic Tac Toe, часть 2: Undo/Redo с хранением состояний Tic Tac Toe, часть 3: Undo/Redo с хранением командВ этой части рассмотрена реализация игры Tic Tac Toe с помощью паттерна Command, с ...

[Перевод] 5 главных алгоритмов сэмплинга Работа с данными — работа с алгоритмами обработки данных. И мне приходилось работать с самыми разнообразными на ежедневной основе, так что я решил составить список наиболее востребованных в серии публикаций. Эта статья посвящена наиболее распространённым способам сэмплинга ...

Нейросеть превращает наброски в готовое изображение объекта в реальном времени Разработчики из Adobe Research создали приложение на основе нейросетевого алгоритма, которое в реальном времени дорисовывает сделанный пользователем набросок и превращает его в готовое изображение. Разработка будет представлена на конференции ICCV 2019, статья о ней опублико...

Технический анализ эксплойта checkm8 С большой вероятностью вы уже слышали про нашумевший эксплойт checkm8, использующий неисправимую уязвимость в BootROM большинства iDevice-ов, включая iPhone X. В этой статье мы приведем технический анализ эксплойта и разберемся в причинах уязвимости. Всем заинтересовавшимся...

Бизнес-аналитика. ИТ-объекты, компоненты, инструменты Бизнес-аналитика. ИТ-объекты, компоненты, инструменты Я имел счастье (творчество) и несчастье (признание и внедрение) разрабатывать проект банковской аналитики. Разрабатывать от идеи до реализации и непосредственно участвовать во всех стадиях разработки. Больше всего мне нра...

О локализации продуктов. Часть 2: как формируется цена? Во второй части статьи нашего технического писателя Андрея Старовойтова мы посмотрим, как именно формируется цена за перевод технической документации. Если не хочется читать много текста, смотрите сразу раздел «Примеры» в конце статьи. С первой частью статьи можно ознаком...

[recovery mode] 10 ошибок юного PO (часть II) Вторая часть с моими ошибками, первая тут.  Напомню, что я владелец продукта в команде, состоящей исключительно из разработчиков, и мы делаем IT-платформу для управления партнерскими сетями АЗС.  4. Ошибка четыре. Bus-фактор: то, что сначала казалось многим ошибкой, а по ф...

Машинное зрение vs интуиция человека: алгоритмы нарушения работы программ распознавания объектов Логика машин безупречна, они не совершают ошибок, если их алгоритм работает исправно и заданные параметры соответствуют необходимым стандартам. Попросите машину выбрать маршрут от точки А в точку Б, и она построит самый оптимальный, учитывая расстояние, расход топлива, нал...

Electronic Arts: новые части Battlefield и Star Wars находятся в разработке Компания Electronic Arts опубликовала ежеквартальный финансовый отчёт, в котором рассказала об успехах Apex Legends, а также раскрыла некоторую информацию о разрабатывающихся проектах, в том числе о новых частях Battlefield и Star Wars. Перечислим самые интересные моменты: ...

Разработка монолитной Unix подобной OS — Библиотека С В предыдущей статье мы научились запускать Hello World ядро и написали пару функций для работы со строками. Теперь пришло время расширить библиотеку С чтобы можно было реализовать kprintf и другие необходимые функции. Поехали! Читать дальше →

Один из методов получения профиля рабочей нагрузки и истории ожиданий в PostgreSQL Продолжение статьи "Попытка создать аналог ASH для PostgreSQL ". В статье будет рассмотрено и показано на конкретных запросах и примерах — какую же полезную информацию можно получить с помощью истории представления pg_stat_activity. Предупреждение. В силу довольно большого ...

USB регулятор громкости Atmega328 Привет. Прочитав как то статью заинтересовался идеей, но необходимости не было. Но после того как достал старые колонки и у меня стало 4.1 регулировать громкость по отдельности  стало неудобно, да еще включать/выключать.Так как нужного железа у меня не было сделал на то...

Мониторинг метеоданных в Grafana В этой статье речь пойдет о том, как вывести для мониторинга — нужные показатели системы на графики, при этом не написав ни одной строчки кода. Используемое ПО распространяется свободно кроме сервера БД — это MS SQL сервер, развернутый в облачном сервисе MS Azure, который вы...

Превращаем DSLogic Basic в DSLogic Plus Привет, Хабр! В данной статье расскажу как модифицировать DSLogic Basic до DSLogic Plus. Возможно для кого-то это не будет новостью. Во всяком случае — собрал инфу с зарубежного форума, убрал все лишнее и рассказываю вам. Кому интересно — прошу под кат. Читать дальше →

Автоблогер: «Заменить руль на LADA Vesta – очень просто» Рулевое колесо «Весты» может устраивать не всех. Специально для таких автовладельцев блогер показать, как заменить его быстро и безболезненно. О том, как нужно менять руль на «Весте», рассказал владелец YouTube-канала «Энергетий Сергей Николаевич». По его мнению: «Заменить ...

Все, что мы знаем о Windows 10X Основываясь на слухах, Microsoft сейчас разрабатывает новую версию Windows 10 с внутренним кодовым названием Windows Core OS / Windows Lite.Сообщается, что Windows 10X, являющаяся частью Windows Core OS, предназначена для потребительских двухэкранных ПК, ноутбуков и аналогич...

Первый программируемый компьютер на ДНК Экспериментальный протокол и реализация алгоритма сортировки на программируемом ДНК-компьютере Учёные давно ведут эксперименты с хранением информации в ДНК и с обработкой этой информации. Например, учёные из Вашингтонского университета и Microsoft недавно построили «первы...

Видео дня: виртуальный клон-переводчик, созданный силами гарнитуры Microsoft HoloLens В начале года Microsoft представила гарнитуру дополненной реальности HoloLens 2. Несмотря на ожидания и слухи, новая модель не превратилась в потребительское устройство. Напротив, став ещё дороже, а за новинку просят 3500 долларов, HoloLens 2 стала ещё чуть дальше от об...

[Перевод] Как разрабатываются и производятся процессоры: проектирование ЦП Теперь, когда мы знаем, как работают процессоры на высоком уровне, настало время углубиться в разбор процесса проектирования их внутренних компонентов. Это вторая статья из серии, посвящённой разработке процессоров. Рекомендую изучить для начала первую часть, чтобы вы поним...

Причины бросить Mac OS и выбрать Linux Если вы выбираете между Mac OS и Linux, то этот пост будет для вас. Подробно расписал — продолжать использовать Linux или переключиться на Mac OS. И Linux, и Mac OS являются Unix-подобными ОС и предоставляют доступ к командам Unix, а также к оболочкам bash и прочим. В срав...

Патенты в дизайне: часть вторая (примеры от Microsoft, Snapchat, Samsung, Netflix, Airbnb, Tinder) Под катом — вторая часть перевода статьи о том, как крупные, известные компании защищают свои дизайн-решения (и какие именно). Примерное представление о том, как происходит процесс оформления прав на тот или иной интерфейс, можно получить в первой части. Читать дальше →

[Перевод] Пишем чистый и масштабируемый JavaScript-код: 12 советов Язык JavaScript родом из раннего веба. Сначала на нём писали простые скрипты, которые «оживляли» страницы сайтов. Теперь же JS превратился в полноценный язык программирования, который можно использовать даже для разработки серверных проектов. Современные веб-приложения силь...

Практические задачи по Java — для курсов и прочих занятий Практические задачи по Java — для курсов и прочих занятий Несколько вводных слов Последние несколько лет я читаю курс по программированию на Java. Со временем он менялся — то добавлялись, то выкидывались разные части, менялась последовательность тем, менялся подход к построе...

[Перевод] PowerShell в роли инструмента для пентеста: скрипты и примеры от Varonis Хакеры любят использовать PowerShell для запуска «fileless malware» — бестелесных вредоносных программ, которые не являются традиционными бинарными файлами с компилированным вредоносным кодом, и по этой причине подчас не могут быть обнаружены антивирусными решениями. Powe...

Карьерные стероиды. Базовый алгоритм Статья про быстрый карьерный рост внутри одной компании. Именно внутри одной, т.к. скачок при переходе — это другая методика, к ней нужно иначе готовиться (там больше комплект увольнения подходит). Сразу скажу: я не считаю, что строить карьеру — это правильно, без этого ник...

[Перевод] Лабиринты: классификация, генерирование, поиск решений В этом классическом посте подробно рассказывается о самых популярных способах создания и прохождения лабиринтов. Статья разделена на четыре части: классификация, алгоритмы генерации, алгоритмы решения лабиринтов и другие операции с лабиринтами. Классификация лабиринтов Лаб...

PowerColor объявила конкурс, призом в котором, как ожидается, будет видеокарта Radeon RX 5700 XT Red Devil Уже через три дня в продаже появятся видеокарты Radeon RX 5700 и RX 5700 XT. Судя по первым тестам, нас действительно ждёт серьёзное противостояние новинок AMD с новинками Nvidia. Однако первое время на рынке будут лишь референсные адаптеры Navi. Слухи твердили, что нер...

[Перевод] Создаем конвейер потоковой обработки данных. Часть 1 Всем привет. Друзья, делимся с вами переводом статьи, подготовленным специально для студентов курса «Data Engineer». Поехали! Apache Beam и DataFlow для конвейеров реального времени Сегодняшний пост основан на задаче, которой я недавно занимался на работе. Я был действитель...

Всё ли могут деньги? Юзабилити-аудит сайта на три миллиона Когда я встречаю очередную историю о том, как «инновационные» стартапы сливают миллионы на создание сервиса, а потом их сайт выглядит как нечто невразумительное, я искренне негодую. А прочитав статью о многозадачности и симбиозе от сооснователя и операционного директора «Тно...

[Перевод] Создаем базовую сцену в A-Frame От автора перевода: в предыдущей статье мы обсудили базовые концепции A-Frame. Чтобы продолжить цикл, я хотел создать урок, который бы иллюстрировал основные возможности A-Frame, но понял, что лучше сделать перевод статьи с официального сайта, которая, по-моему мнению напи...

Гидрогель, черника и щепотка куркумы: искусственная сосудистая система Какой орган самый важный в организме человека? Романтики скажут сердце, прагматики — мозг, а реалисты скажут все. И это так, ведь организм человека это слаженный механизм, состоящий из множества деталей, больших и малых, работающих в унисон. Если же говорить о самом важном...

В онлайн-чате «Expensive Chat» пользователи платят за каждый напечатанный символ Разработчик и экспериментатор Марк Кельбрюгге запустил онлайн-чат Expensive Chat с крайне необычной особенностью. Здесь публикация каждого символа стоит 1 цент, и деньги используются настоящие, не виртуальные. К оплате принимаются разные виды банковских карт, а основная идея...

Как робот «Совести» общается с клиентами Расскажем, как финтех-проект группы QIWI — карта беспроцентной рассрочки «Совесть» — перевел часть разговоров контакт-центра на робота, который не только отвечает на вопросы, но и сам задает их при исходящих обзвонах. Статья про применение на практике HTTP-запросов, синтеза ...

[Перевод] Обзор инструментов для безопасности GitHub репозиториев Введение Когда вы начинаете создавать репозиторий на GitHub, одной из первых вещей, о которых вы должны подумать, является безопасность. В случае, если вы создаете свой собственный репозиторий GitHub или часто контрибьютите в репозиторий, вам необходимо знать, содержит ли...

[Из песочницы] Локальный (offline) npm репозиторий Предыстория Решив продаться задорого, я оказался у работодателя, где интернета нет не только в пром-контуре, но и в деве (ситуация на самом деле нередкая во многих, так сказать, "энтерпрайзах"). Есть IE в консоли, где ты, мой дорогой читатель, можешь конечно посм...

Как взять сетевую инфраструктуру под свой контроль. Глава четвертая. Автоматизация. Темплейты Эта статья является шестой в цикле статей «Как взять сетевую инфраструктуру под свой контроль». Содержание всех статей цикла и ссылки можно найти здесь. Оставив несколько тем позади, я решил все же начать новую главу. К безопасности вернусь чуть позже. Здесь я хочу обсудит...

Робот научился копировать человеческий почерк и рисунки Умение писать слова на бумаге кажется довольно простым человеческим навыком, но на самом деле он крайне сложен. Подумать только — чтобы научиться писать, нужно понимать, в какой точке нужно опустить кончик ручки, как долго и в каком направлении водить линию, а также где дел...

[Перевод] Современная загрузка скриптов Передать нужный код для каждого браузера – непростая задача. В этой статье рассмотрим несколько вариантов, как эту задачу можно решить. Передача современного кода современным браузером может очень сильно повысить производительность. Ваши JavaScript-пакеты смогут содержа...

Cмарт розетка REDMOND SkyPort 100S Это продолжение моей первой статьи на смарт цоколь Redmond. В этой статье речь пойдет о другом девайсе компании Redmond — Cмарт розетка REDMOND SkyPort 100S. Данное устройство тоже базируется на чипе nRF51822 и как говорится тут сам бог велел попробовать. Итак, была куплена ...

Все материалы на данном сайте взяты из открытых источников или присланы посетителями сайта и предоставляются исключительно в ознакомительных целях. Права на материалы принадлежат их владельцам. Администрация сайта ответственности за содержание материала не несет. (Правообладателям)