Pull to refresh
25
0

Оператор ПК

Send message

Вальяжной походкой по HTTP-заголовкам

Level of difficulty Easy
Reading time 8 min
Views 9.8K

Статья по основам HTTP‑заголовков, обеспечивающим безопасность, а также методы их использования. То есть будем разбираться какие заголовки безопасности существуют, какие директивы у них есть, какие методы использования возможны, и от чего мы вообще можем защититься, если будем их применять.

Разбора конфигов Web‑сервера не будет, будут только заголовки, их директивы и пояснения с примерами.

Давайте разбираться
Total votes 14: ↑11 and ↓3 +8
Comments 3

Умный дом с голосовым ассистентом на минималках

Level of difficulty Medium
Reading time 8 min
Views 15K

Небольшой лонгрид с предысторией и планами, чтобы лучше понимать почему, что и как получилось.

Разработка шла с переменной скоростью в течении лет 5. Совсем не сразу взялся за летопись, поэтому прошу прощения, если что-то будет некорректно ;)

В результате имеем масштабируемое решение, которое можно использовать в любом месте (квартира, дом или еще что).

Читать далее
Total votes 11: ↑11 and ↓0 +11
Comments 19

Своё частичное зеркало PyPi, на всякий случай

Reading time 7 min
Views 7.6K

Создание своего зеркала PyPi в текущей ситуации — это наверное почти обязательное действие, если вы программируете на Python и хотите сохранить работоспособность менеджера пакетов pip (в прошлом случайная блокировка уже нарушала его работу). Решение известно — можно создать своё зеркало PyPi, куда будут загружаться все используемые вами пакеты. Автор данной статьи постарался подготовить как можно более простой в использовании вариант, своё зеркало запускается в четыре простых шага: git clone ..., настройка пароля администратора зеркала, docker-compose up -d и настройка pip на использование вашего зеркала.

Читать далее
Total votes 4: ↑4 and ↓0 +4
Comments 1

Сравниваем четыре опенсорсные альтернативы Disqus

Reading time 4 min
Views 8.2K


Disqus всех задолбал. Из некогда удобной встраиваемой платформы для комментирования он превратился в многомегабайтного монстра с кучей сторонних скриптов и трекинга и совсем перестал устраивать технически подкованных блогеров и администраторов, причем положение дел всё хуже с каждым годом. Удивительно, что так и не появилось стопроцентного аналога, совместимого с Disqus, но опенсорс-сообщество всё же выкатило довольно крутые системы комментирования, ориентирующиеся на его замену. Рассмотрим самые интересные и жизнеспособные из них.
Читать дальше →
Total votes 37: ↑34 and ↓3 +31
Comments 18

Настройка сетевого стека Linux для высоконагруженных систем

Reading time 10 min
Views 30K

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

О том как изменять параметры ядра, описываемые здесь, можно прочитать в статье Linux Kernel Tuning for High Performance Networking: Configuring Kernel Settings.

Читать далее
Total votes 29: ↑29 and ↓0 +29
Comments 7

Делаем вебсокеты на PHP с нуля

Reading time 18 min
Views 304K
Некоторое время назад я выбирал библиотеку для работы с вебсокетами. На просторах интернета я натыкался на статьи по интеграции node.js с yii, а почти все статьи о вебсокетах на хабре ограничивались инструкциями к тому, как использовать phpdaemon.

Я изучал библиотеки phpdaemon и ratchet, они достаточно монструозны (причём используя ratchet для отправки сообщения конкретному пользователю рекомендовано дополнительно использовать wamp). Мне не совсем было понятно для чего использовать таких монстров, которые требуют установку других монстров. Почитав исходники этих, а также других библиотек, я разобрался как всё устроено и мне захотелось написать простой вебсокет-сервер на php самостоятельно. Это помогло мне закрепить изученный материал и наткнуться на некоторые подводные камни, о которых я не имел представления.

Так я решил написать необходимый для меня функционал с нуля.

Получившийся код и ссылка на демонстрационный чат в конце статьи.
Читать дальше →
Total votes 88: ↑76 and ↓12 +64
Comments 77

Упрощенный синтаксис для jsonb в PostgreSQL 14

Reading time 1 min
Views 9.4K

Как сообщает telegram-канал Cross Join, в репозиторий Postgres упал комит, упрощающий работу с jsonb. Теперь можно обращаться к частям jsonb с помощью квадратных скобок, причем это работает как на чтение, так и на запись.


Прощай jsonb_set  и прочие костыли типа data = data - 'a' || '{"a":5}'


Несколько примеров:


Обновляем значение объекта по ключу. 25 здесь является числом, но взято в кавычки, потому что присваиваемое значение должно быть jsonb


-- (person_data имеет тип jsonb)
UPDATE users 
SET person_data['age'] = '25'; 
Читать дальше →
Total votes 53: ↑53 and ↓0 +53
Comments 28

Опыт эксплуатации MySQL Master-Master — как пережить аварию датацентра

Reading time 6 min
Views 80K
Всем привет!

Сегодня поговорим о том, для каких задач на самом деле полезна MySQL Master-Master репликация, для каких — полностью бесполезна и вредна, какие мифы и заблуждения с ней связаны и какую практическую пользу можно быстро получить от данной технологии. Приведу конкретные примеры настройки и схемы архитектур.

Говорить о MySQL Master-Master репликации — в контекстах высокой доступности и производительности — модно, но, к сожалению, многие не понимают ее сути и связанных с технологией серьезных ограничений.
Начнем с того, что в классическом MySQL «настоящей» Master-Master репликации — пока нет :-) Но если постараться, можно все таки просто и быстро настроить эффективную схему выживания при отказе одного датацентра и получить свою долю счастья.


Читать дальше →
Total votes 86: ↑73 and ↓13 +60
Comments 70

Установка Visual Studio Code в облаке

Reading time 7 min
Views 18K

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

Интегрированные среды разработки тоже не избежали переноса в облака. Около десяти лет назад это было диковинкой, Cloud IDE только начинали развиваться, но потом на них обратили внимание самые крупные игроки IT-индустрии. 
Читать дальше →
Total votes 33: ↑32 and ↓1 +31
Comments 25

Open Source распознавание речи SOVA

Reading time 16 min
Views 28K
Мы в Наносемантике занимаемся виртуальными ассистентами (чат-ботами и голосовыми помощниками) для компаний с большими колл-центрами. Раньше мы использовали распознавание и синтез речи других компаний, а 1.5 года назад решили, что хотим быть самодостаточным вендором.



Если интересно, зачем нам это, что у нас получилось, а также для чего нам выкладывать ASR & TTS в Open Source – добро пожаловать под кат.
Total votes 28: ↑26 and ↓2 +24
Comments 32

Хранение иерархических структур. Симбиоз «Closure Table» и «Adjacency List»

Reading time 6 min
Views 45K
Когда перед нами встаёт задача хранения и управления иерархическими структурами данных всегда приходится выбирать из довольно ограниченного набора паттернов. Для того чтобы найти наиболее подходящий шаблон необходимо проанализировать особенности каждого способа хранения и обработки данных и оценить их с учётом задачи и специфики используемой СУБД.

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

Наша цель – разработать свою реализацию, учитывающую требования нашего приложения.
Читать дальше →
Total votes 11: ↑10 and ↓1 +9
Comments 22

Подборка полезных слайдов от Джулии Эванс

Reading time 1 min
Views 52K
Перевели новую порцию слайдов. Права доступа в Unix, файловые дескрипторы, потоки, магия proc. И на закуску пара советов о том, как общаться, когда ты не согласен. А вдруг пригодятся =)



Читать дальше →
Total votes 115: ↑111 and ↓4 +107
Comments 42

Аудио через Bluetooth: максимально подробно о профилях, кодеках и устройствах

Reading time 26 min
Views 611K
Комикс XKCD про 14 конкурирующих стандартов: Надпись: СИТУАЦИЯ: есть 14 конкурирующих стандартов. Гик: 14?! Абсурд! Нам необходимо разработать один универсальный стандарт, на все случаи жизни. Спутница гика: Да! Надпись: Скоро: СИТУАЦИЯ: Есть 15 конкурирующих стандартов.

This article is also available in English

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

TL;DR:
  • SBC — нормальный кодек
  • У наушников есть свой эквалайзер и пост-процессинг на каждый кодек отдельно
  • aptX не настолько хорош, как о нём говорят рекламные анонсы
  • LDAC — маркетинговое фуфло
  • Качество звука в режиме разговора всё ещё низкое
  • В браузер можно встроить аудиоэнкодеры на C, скомпилировав в WebAssembly через emscripten, и они не будут особо тормозить.

Total votes 175: ↑171 and ↓4 +167
Comments 180

Samsung открывает бесплатный онлайн-курс по нейросетям в задачах компьютерного зрения

Reading time 4 min
Views 24K
Вы пока не разбираетесь, почему ReLU лучше сигмоиды, чем отличается Rprop от RMSprop, зачем нормализировать сигналы и что такое skip connection? Зачем нейронной сети нужен граф, и какую он совершил ошибку, что она распространяется обратно? У вас есть проект с компьютерным зрением или, может быть, делаете межгалактического робота для борьбы с грязными тарелками, и хотите, чтобы он мог сам решать, отмывать или и так сойдет?

Мы запускаем открытый курс «Нейронные сети и компьютерное зрение», который адресован тем, кто в этой области делает первые шаги. Курс разработан экспертами Samsung Research Russia: Исследовательского центра Samsung и Центра искусственного интеллекта Samsung в Москве. Сильные стороны курса:

  • авторы курса знают, о чем говорят: это инженеры московского Центра искусственного интеллекта Samsung, Михаил Романов и Игорь Слинько;
  • есть как теория с задачками, так и практика на PyTorch
  • приступаем к практике сразу после освоения минимальных теоретических знаний.
  • лучшие студенты будут приглашены на собеседование в Samsung Research Russia!


Читать дальше →
Total votes 40: ↑39 and ↓1 +38
Comments 17

Новое в PHP 7.4

Reading time 5 min
Views 79K
Новая версия PHP хоть и является минорной, но уже несёт множество новых, без преувеличения, крутых возможностей как для синтаксиса языка, так и для его производительности. Список новшеств не окончательный, но основные изменения уже внесены и приняты. Релиз планируется на декабрь 2019 года.
 

 
Ключевые изменения грядущей версии:

  • Типизированные свойства классов
  • Предзагрузка для улучшения производительности
  • Стрелочные функции для короткой записи анонимных функций
  • Присваивающий оператор объединения с null (??=)
  • Ковариантность/контравариантность в сигнатурах унаследованных методов
  • Интерфейс внешних функций, открывающий новые возможности для разработки расширений на PHP
  • Оператор распаковки в массивах

Подробнее об этих и других изменениях читайте под катом.
Узнать обо всех изменениях
Total votes 74: ↑71 and ↓3 +68
Comments 99

Черное Зеркало своими руками — обучаем бота на базе своей истории чатов

Reading time 4 min
Views 16K

В "Черном Зеркале" была серия (S2E1), в которой создавали роботов, похожих на умерших людей, используя для обучения историю переписок в социальных сетях. Я хочу рассказать, как я попробовал сделать что-то подобное и что из этого получилось. Теории не будет, только практика.


image


Идея была простая — взять историю своих чатов из Telegram и на их основе обучить seq2seq сеть, способную по началу диалога предсказывать его завершение. Такая сеть может работать в трех режимах:


  • Предсказывать завершение фразы пользователя с учетом истории разговора
  • Работать в режиме чат-бота
  • Синтезировать логи разговоров целиком

Вот что получилось у меня


Бот предлагает завершение фразы


image


Бот предлагает завершение диалога


image


Бот общается с живым человеком


User: привет
Bot: привет
User: как ты?
Bot: собираюсь
User: баг пофиксил?
Bot: нет
User: почему?
Bot: да не получается
User: ты сегодня когда дома будешь?
Bot: не знаю пока
User: ты занят?
Bot: в магазин еду 

Дальше я расскажу, как подготовить данные и обучить такого бота самому.

Читать дальше →
Total votes 38: ↑36 and ↓2 +34
Comments 11

Поиск похожих изображений, разбор одного алгоритма

Reading time 4 min
Views 20K


Пришлось мне недавно решать задачку по оптимизации поиска дубликатов изображений.

Существующее решение работает на довольно известной библиотеке, написанной на Python, — Image Match, основанной на работе «AN IMAGE SIGNATURE FOR ANY KIND OF IMAGE» за авторством H. Chi Wong, Marshall Bern и David Goldberg.

По ряду причин было принято решение переписать всё на Kotlin, заодно отказавшись от хранения и поиска в ElasticSearch, который требует заметно больше ресурсов, как железных, так и человеческих на поддержку и администрирование, в пользу поиска в локальном in-memory кэше.

Для понимания того, как оно работает, пришлось с головой погружаться в «эталонный» код на Python, так как оригинальная работа порой не совсем очевидна, а в паре мест заставляет вспомнить мем «как нарисовать сову». Собственно, результатами этого изучения я и хочу поделиться, заодно рассказав про некоторые оптимизации, как по объёму данных, так и по скорости поиска. Может, кому пригодится.
Читать дальше →
Total votes 59: ↑56 and ↓3 +53
Comments 25

Социальная инженерия с помощью программ Universal Windows Platform (APPX)

Reading time 4 min
Views 7.8K
На картинке изображены различные устройства (ПК, смартфоны, IoT, Xbox, Surface Hub, Hololens), поддерживающие приложения Universal Windows Platform

TL;DR: В APPX-файл Universal Windows Platform можно упаковать обычный exe-файл, который будет запускаться в Windows 10 (сборка 1607 и новее) примерно так же, как обычные exe-файлы. Это можно использовать для атак социальной инженерии, с помощью рассылки через email — почтовые провайдеры не блокируют файлы APPX. Файл должен быть подписан действующей цифровой подписью.

Universal Windows Platform

Universal Windows Platform — (сравнительно) новый стандарт для создания универсальных приложений под Windows 10, Windows 10 Mobile, Xbox One и Hololens. Стандарт появился с выходом Windows 10, и предоставляет API с ограничением привилегий и изоляцией, формат контейнера и метаданных внутри него.
UWP-приложения широко представлены в Microsoft Store. Они самодостаточны, безопасны, не требуют прав администратора для установки, хранят настройки в строго отведённых местах, и могут быть удалены начисто, прямо из «пуска».

UWP — попытка Microsoft избавиться от старых архитектурных подходов к разработке программ: внедрить разделение привилегий так, как это сделано на мобильных платформах, уйти от WinAPI GUI с пиксельной сеткой (для полноценной поддержки экранов любой плотности пикселей).
Программы UWP можно писать на C#, C++, VB и JS, а в качестве GUI-фреймфорка предлагается к использованию XAML, DirectX и HTML.

До недавнего времени, UWP-программы могли быть только изолированными, но в сборке Windows 10 1607 Microsoft реализовала Desktop Bridge — возможность упаковки любых Win32-программ в виде UWP, без использования UWP API, ограничений привилегий и изоляции.
Эта функция открывает простор для атак социальной инженерии.
Читать дальше →
Total votes 22: ↑22 and ↓0 +22
Comments 7

Криптография простым языком: разбираем симметричное и асимметричное шифрование на примере сюжета Звездных войн (Updated)

Reading time 14 min
Views 42K
Привет всем читателям Хабра! Не так давно решил разобраться с алгоритмами шифрования и принципами работы электронной подписи. Тема, я считаю, интересная и актуальная. В процессе изучения попробовал несколько библиотек, однако самой удобной с моей точки зрения является библиотека PyCrypto. У неё прекрасная документация, сопровождаемая примерами.

image

После прочтения материала вы усвоите следующие моменты:

  1. Что такое шифрование;
  2. Чем отличается симметричное шифрование от асимметричного;
  3. В каком случае эффективнее применять симметричное, а в каких асимметричное шифрование;
  4. Что такое хеш данных и для чего он используется в шифровании;

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

Целью данной статьи является познакомить читателя с основными алгоритмами шифрования. При написании статьи, я постарался как можно большее внимание уделить вопросу практического применения. Для программирования использовался язык Python 3.6. При написании кода старался делить его на отдельные части и комментировать все ключевые моменты.
Total votes 11: ↑11 and ↓0 +11
Comments 17

Восемь малоизвестных опций Bash

Reading time 3 min
Views 41K
Некоторые опции Bash хорошо известны и часто используются. Например, многие в начале скрипта пишут

set -o xtrace

для отладки,

set -o errexit

для выхода по ошибке или

set -o errunset

для выхода, если вызванная переменная не установлена.

Но есть много других опций. Иногда они слишком путано описаны в манах, поэтому я собрал здесь некоторые из наиболее полезных, с объяснением.
Читать дальше →
Total votes 82: ↑79 and ↓3 +76
Comments 13

Information

Rating
4,329-th
Location
Екатеринбург, Свердловская обл., Россия
Registered
Activity