Как стать автором
Поиск
Написать публикацию
Обновить
1144.34

Программирование *

Искусство создания компьютерных программ

Сначала показывать
Порог рейтинга
Уровень сложности

WebRTC на своем сайте — без багов и бюджета

Время на прочтение2 мин
Количество просмотров10K
Технология WebRTC существует давно и поддерживается практически всеми браузерами (97% по нашему опыту). Многие задумываются установить и себе виджет WebRTC для связи с клиентами и повышения конверсии.



Как добавить себе на сайт WebRTC звонки без лишних затрат и обойти баги с граблями,
Читать дальше →

PostGIS и JPA

Время на прочтение4 мин
Количество просмотров17K


PostGIS — открытое программное обеспечение, добавляющее поддержку географических объектов в реляционную базу данных PostgreSQL.

В этой небольшой статье будет рассмотрено использование его в Java. В частности — задача нахождения географических объектов по их координатам.
Читать дальше →

Больше возможностей с паттернами в C# 8.0

Время на прочтение7 мин
Количество просмотров15K

Совсем недавно вышла Visual Studio 2019 Preview 2. И вместе с ней пара дополнительных функций C# 8.0 готовы к тому, чтобы вы их опробовали. В основном речь идет о сопоставлении с образцом, хотя в конце я коснусь и некоторых других новостей и изменений.


Эта статья на английском


Читать дальше →

Как быстро написать веб-сайт или веб-приложение и не увязнуть в сборщиках

Время на прочтение5 мин
Количество просмотров16K
Это маленькое руководство описывает создание реактивного веб-приложения используя отрисовку на стороне сервера (Server-Side Rendering, SSR). Клиентская часть являет собой полноценное Vue-приложение, в моём случае используя шаблон MVVM. Серверное приложение работает на микрофреймворке Flask, который может предоставить конечные точки подключения (endpoint) и отдать готовую HTML страницу. HTML страницы (расположены в подкаталоге myapp/templates) рендерятся шаблонизатором Jinja (устанавливается в качестве зависимости Flask).
Читать дальше →

Как загрузить OpenStreetMap в Hive?

Время на прочтение9 мин
Количество просмотров3.7K
В прошлой статье я рассмотрел обратное геокодирование средствами Spark. Теперь представим, что перед нами встала задача прямого геокодирования почтовых адресов. То есть, получения для записанного текстом адреса неких географических координат.

Адреса для определенности российские, и главное — зачастую написаны криво, то есть с ошибками, неоднозначностями и прочими прелестями. И находятся эти адреса в базе данных Hive, на кластере Hadoop.


Ну казалось бы — берем Google Maps Geocoding API (или, если вы сторонник импортозамещения, то Yandex Maps API), и работаем. Но тут нас, как впрочем и c обратным геокодированием, ждет небольшая засада.
Читать дальше →

Сравнение архитектур Viper и MVVM: Как применить ту и другую

Время на прочтение15 мин
Количество просмотров25K


В настоящее время VIPER и MVVM являются наиболее популярными архитектурными решениями, применяемыми при разработке крупных приложений, требующих участия в разработке больших команд, являющихся хорошо тестируемыми, длительно проддерживаемыми и постоянно развивающимися. В данной статье мы попробуем применить их на небольшом тестовом проекте, который представляет из себя список контактов пользователей с возможностью добавления нового контакта. В данной статье больше практики, чем аналитики, и предназначена она в первую очередь для тех, кто уже в теории знаком с данными архитектурами и теперь хотел бы понять как это работает на конкретных примерах. Впрочем, базовое описание архитектур и их сравнение также присутствует.
Читать дальше →

SmartCard I2C Protocol. Обмен APDU командами через I2C интерфейс

Время на прочтение13 мин
Количество просмотров6.8K

Введение


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

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

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


Читать дальше →

Побег из Крипто Про. ГОСТ 34.10-2012 edition

Время на прочтение4 мин
Количество просмотров56K
На Хабре есть великолепная статья "Побег из Крипто Про. Режиссерская версия, СМЭВ-edition", но наступил 2019 год и все УЦ стали выдавать ЭЦП по ГОСТ 34.10-2012 вместо ГОСТ 34.10-2001.

Под катом рассказ как можно модифицировать свой софт на Bouncy Castle для поддержки работы с ключами по новым гостам.

image
Читать дальше →

Защита ПО от копирования и взлома: основные методы и стратегии

Время на прочтение5 мин
Количество просмотров38K


По статистике, приведенной в исследовании 2018 BSA Global Software Survey:

  • Нелицензированное (пиратское) ПО составляет 37% от всего объема программного обеспечения, установленного на персональных ПК по всему миру.
  • Стоимость контрафактного ПО оценивается в $46 млрд.
  • Malware, которыми заражены многие пиратские программы, загружаемые из сторонних источников, обходятся бизнесу в $359 млрд в год.
  • Потери от взлома лицензионного ПО составляют порядка $600 млрд ежегодно.

Все мы знаем, что среди пользователей есть те, кто честно покупает программу и использует ее по назначению, а есть и те, кто взламывает ПО тем или иным образом и работает с ним сам либо же продает.
Читать дальше →

Объясняем код с помощью ASCII-арта

Время на прочтение2 мин
Количество просмотров21K
Примечание от переводчика: типично пятничная статья во вторник утром… почему бы и нет?



Большинство людей — визуалы. Они используют изображения, чтобы вникнуть в суть проблемы. А вот мэйнстримные языки программирования, напротив, основаны на текстовом представлении. Возникающую пропасть между текстом и графикой заполняют ASCII-изображения, нарисованные с помощью текстовых символов и вставленные в исходный код программы. Я их обожаю! Как-то раз я кинул клич в Twitter и мне прислали гораздо больше примеров, чем я ожидал. Спасибо всем участвовавшим. В этой теме попалось несколько прекрасных примеров, которые я собрал и разложил на категории. Для каждого изображения дается ссылка на соответствующий репозиторий.
Читать дальше →

День, когда Dodo IS остановилась. Синхронный сценарий

Время на прочтение8 мин
Количество просмотров17K
Dodo IS — глобальная система, которая помогает эффективно управлять бизнесом в Додо Пицце. Она закрывает вопросы по заказу пиццы, помогает франчайзи следить за бизнесом, улучшает эффективность сотрудников и иногда падает. Последнее — самое страшное для нас. Каждая минута таких падений приводит к потерям прибыли, недовольству пользователей и бессонным ночам разработчиков.

Но теперь мы спим лучше. Мы научились распознавать сценарии системного апокалипсиса и обрабатывать их. Ниже расскажу, как мы обеспечиваем стабильность системы.

Читать дальше →

KISS Architecture. От микросервиса до монолита

Время на прочтение3 мин
Количество просмотров8K

Андрей Копылов, наш технический директор, рассказывает, какой подход к проектированию архитектуры приложений использует команда веб-разработчиков AREALIDEA, и, чем KISS Architecture, его собственная разработка, так хороша.


Читать дальше →

Apache Kafka + Spring Boot: Hello, microservices

Время на прочтение12 мин
Количество просмотров132K
Привет, Хабр! В этом посте мы напишем приложение на Spring Boot 2 с использованием Apache Kafka под Linux, от установки JRE до работающего микросервисного приложения.

Коллеги из отдела фронтэнд-разработки, увидевшие статью, сетуют на то, что я не объясняю, что такое Apache Kafka и Spring Boot. Я полагаю, что всякий, кому понадобится собрать готовый проект с использованием вышеперечисленных технологий, знают, что это и зачем они им нужны. Если для читателя вопрос не праздный, вот отличные статьи на Хабре, что такое Apache Kafka и Spring Boot.

Мы же обойдёмся без пространных объяснений, что такое Kafka, Spring Boot и Linux, а вместо этого запустим Kafka-сервер с нуля на Linux-машине, напишем два микросервиса и сделаем так, чтобы одно из них посылало сообщения на другое — в общем, настроим полноценную микросервисную архитектуру.



Пост будет состоять из двух разделов. В первом мы настроим и запустим Apache Kafka на Linux-машине, во втором — напишем два микросервиса на Java.
Читать дальше →

Ближайшие события

Конференция DEFCON 19. Три поколения DoS-атак (с участием аудитории в качестве жертв). Часть 1

Время на прочтение14 мин
Количество просмотров3.8K
Меня зовут Сэм Боун, я здесь, чтобы поговорить с вами о DoS-атаках, и вы мне в этом поможете. Мы немного поговорим о хактивистах, которые использовали такие атаки, потому что я нахожу их интересными. Они наглядно показывают, сколько вреда вы можете нанести различными видами DoS-атак, сами при этом рискуя попасть в тюрьму.

В любом случае, это помогает другим людям продавать системы безопасности, а мне – заинтересовывать своих студентов изучать то, как работают эти атаки и как от них защититься. Так что сегодня вы будете моими жертвами. Кто из вас принес с собой устройства, которые не жалко «убить»? Один, два, три…не много. Райан настроил беспроводную сеть, к которой можно подключить не более 40-50 устройств, после чего эта сеть будет уничтожена. Я был уверен, что не многие из присутствующих захотят, чтобы их устройство было «убито». Однако я верю, что эта атака может быть использована, чтобы убить каждую машину на DefCon. Я продемонстрирую версию такой атаки, которая будет убийственной для устройств в этом зале, но не затронет подключения в остальных помещениях.

На этом слайде вы видите меня, я преподаю хакерскую этику, создание сетей и компьютерную безопасность в Городском колледже Сан-Франциско.

Почему мы используем GraphQL в 8base

Время на прочтение4 мин
Количество просмотров6.8K


Друзья, всем привет!

Эта статья в первую очередь будет интересна фронтенд-разработчикам, особенно тем кому актуальна тема GraphQL, но в то же время я надеюсь, что она будет полезна и бэкенд-разработчикам и поможет им понять преимущества GraphQL глазами фронтендера.
Читать дальше →

Электронная почта, взгляд изнутри

Время на прочтение112 мин
Количество просмотров13K
Работаю я системным администратором в одной фирме. И вот произошла интересная ситуация с отправкой к нам на электронную почту некоторой информации. Дабы не углубляться в подробности с реальной ситуацией (дело касается тендерных предложений, где огромное количество условий), приведу свой пример.
Читать дальше →

AMP и Турбо-страницы: плюсы, минусы и результаты внедрения

Время на прочтение8 мин
Количество просмотров28K
Те, кто следит за новинками сферы IT, знают про “быстрые страницы” от Google и Яндекс: AMP и Турбо-страницы. Они были выпущены больше 2 лет назад, но особого шума на рынке не произвели.Меня зовут Константин. Я директор веб-студии AlkoDesign. Мы решили напомнить об этих инструментах и поделиться результатами их внедрения.

image
Читать дальше →

JetBrains Night в Москве, 13 апреля

Время на прочтение2 мин
Количество просмотров7.1K
Привет, Хабр!

Мы приглашаем всех на JetBrains Night — большую встречу с друзьями, которая пройдет 13 апреля в Москве. Приходите узнать, что интересного происходит в мире Java, Kotlin и веб-технологий. Разработчики JetBrains расскажут, чем мы занимаемся и что нового сделали за последнее время, а самое главное — как все это правильно использовать.

После технических докладов мы проведем открытую дискуссию со спикерами и другими сотрудниками компании — ответим на вопросы о наших продуктах и работе в JetBrains.

image
Читать дальше →

AudioKit и синтезирование звука в iOS/OSX

Время на прочтение14 мин
Количество просмотров7.3K


AudioKit — это аудиофреймворк, разработанный аудиоинженерами, программистами и музыкантами специально для iOS и OSX. Он предоставляет инструменты для обработки и синтезирования звука. Под капотом — это смесь из Swift, Objective-C, C++ и С, и Audio Unit API от Apple. Потрясающие (и довольно сложные) технологии завёрнуты в очень дружелюбное Swift API, к которому можно обращаться прямо из Xcode Playgrounds!

В этом туториале мы отправимся в путешествие по AudioKit, а заодно и истории синтезирования звука. Вы узнаете об основах физики звука и том, как работали первые синтезаторы, такие как Hammond Organ. Также будут рассмотрены и современные техники, например, семплинг.

Приготовьте ваш любимый напиток, устраивайтесь поудобнее и вперёд!
Читать дальше →

Размыкаем замыкания и внедряем Dependency Injection в JavaScript

Время на прочтение5 мин
Количество просмотров20K

image


В этой статье мы рассмотрим, как писать чистый, легко тестируемый код в функциональном стиле, используя паттерн программирования Dependency Injection. Бонусом идет 100% юнит-тест coverage.

Читать дальше →

Вклад авторов