• Поиск альтернатив для Flash Player на примере реального проекта

      Надпись “Поддержка Flash Player будет прекращена в декабре 2020 года” в браузере способна вызвать различные эмоции у пользователей, начиная от облегчения, что де уязвимости решены, до осознания некоего предательства со стороны технологических гигантов. Первые, возможно, пострадали от вируса, некогда внедренного на сомнительном сайте, последние же вынуждены прикрывать проект, почти полностью зависящий от этой технологии.
      В начале 2016 года, когда перспективы Flash все еще были радужными, автору этой заметки пришла идея реализовать контент сайта с применением встраиваемых SWF-роликов. К тому времени уже были звоночки, наподобие претензий Стива Джобса к Adobe в 2010, заключающиеся в том, что проприетарный продукт не достоин быть внедрен в проприетарные ОС. Здесь должен быть ироничный смайлик. В то время мобильный трафик не был таким заметным (а трава зеленее) и всерьез такие заявления мало кто воспринимал.
      Читать дальше →
    • Универсальная архитектура приложений

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

      Как же так выходит, что в мире, где большинство проектов укладываются в схему "ввод данных, валидация и сохранение в базу данных" так много проектов скатываются в полную неразбериху? При том, что все разработчики преисполнены знаний об алгоритмах, фреймворках и паттернах, а принципы SOLID на собеседовании отскакивают от зубов. Рискну высказать по этому поводу свое предположение о причине, а также мой личный способ, как с этим можно бороться.

      Читать далее
    • Ультимативный гайд по поиску утечек памяти в Python

      • Tutorial

      Практика показывает, что в современном мире Docker-контейнеров и оркестраторов (Kubernetes, Nomad, etc) проблема с утечкой памяти может быть обнаружена не при локальной разработке, а в ходе нагрузочного тестирования, или даже в production-среде. В этой статье рассмотрим причины появления утечек в Python-приложениях, доступные инструменты для отладки и мониторинга работающего приложения, а также общую методику поиска утечек памяти.

      Читать далее
      • +61
      • 7.7k
      • 4
    • 15 лучших наборов данных для обучения чат-бота

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


      Приятного чтения!
      • +14
      • 3.2k
      • 2
    • 5 приемов и хитростей для работы с SSH и кое-что ещё

      • Translation
      image

      В этой статье мы поговорим о полезных приемах и командах при работе с SSH. А именно:

      • Как использовать двухфакторную аутентификацию для SSH-подключений.
      • Безопасное использование «проброса ключа» (agent forwarding).
      • Завершение зависшей сессии.
      • Оставляем терминал открытым при выходе или разрыве связи.
      • Расшариваем удаленный терминал с другом (без Zoom!).
      Читать дальше →
      • +21
      • 16.5k
      • 7
    • Типичные ошибки в тестовых заданиях стажёров-исследователей

        Привет, меня зовут Ксения, я исследователь в UXlab Авито. Некоторое время назад мы запустили стажёрскую программу сразу в несколько направлений: искали продуктовых дизайнеров и дизайнеров коммуникаций, редакторов и исследователей.


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


        Читать дальше →
      • Мониторинг пропускной способности интернет-канала

        • Translation
        Я использую для выхода в интернет LTE-модем. Меня часто интересует то, какую полосу пропускания канала обеспечивает провайдер. Поэтому я и подумал о том, что неплохо было бы сделать систему для мониторинга интернет-канала. Такая система должна была быть компактной и экономичной в плане потребления электроэнергии. В качестве её основы я решил использовать Raspberry Pi Zero. Этот одноплатный компьютер подключается к модему по беспроводной сети. В результате с помощью моей системы можно не только мониторить интернет-канал, но ещё и обнаруживать проблемы с сетью.


        Готовая система мониторинга пропускной способности интернет-канала
        Читать дальше →
      • Фоторамка на Flutter своими руками

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

          Читать далее
          • +17
          • 4.4k
          • 4
        • CIFS over SSH штатными средствами Windows 10

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


          Однажды потребовалось мне организовать доступ к серверу по протоколу SMB и в поиске решения я наткнулся на следующую статью: Mounting your Nikhef home directory using SSH for Windows 8. Это было простое и удобное решение, которое использовало Putty. Чуть позже мне пришлось настраивать это решение на другом компьютере и я понял, что Putty тут лишний с тех пор как в Windows 10 появился встроенный ssh-клиент на основе OpenSSH.


          Под катом — идентичная схема, только с использованием OpenSSH под Windows 10.

          Читать дальше →
        • Аппаратный взлом жёсткого диска

          • Translation

          Жёсткие диски: если вы читаете эту статью, то с большой вероятностью у вас есть одно или несколько таких устройств. Они довольно просты и, по сути, представляют собой набор 512-байтных секторов, пронумерованных возрастающими адресами, также называемыми LBA (Logical Block Address). Компьютер, к которому подключен жёсткий диск (hard drive, HD), может считывать и записывать данные в эти сектора. Обычно используется файловая система, абстрагирующая все эти сектора до файлов и папок.

          Неспециалисту может показаться, что оборудование HD должно быть довольно простым: достаточно всего лишь устройства, подключаемого к порту SATA, которое может позиционировать свои головки чтения/записи и считывать или записывать данные на пластины. Однако их работа намного сложнее: разве жёсткие диски не занимаются обработкой сбойных блоки и атрибутов SMART, и не имеют кэша, с которым тоже каким-то образом нужно работать?

          Всё это подразумевает, что в жёстком диске есть что-то умное, а умность устройства подразумевает возможность его взлома. Меня всегда интересовали возможности взлома, поэтому я решил узнать, как жёсткие диски работают на немеханическом уровне. Подобные исследования уже проводились с разными видами оборудования, от PCI-карт расширения и встроенных контроллеров до ноутбуков и даже клавиатур Apple. Обычно исследования проводились для того, чтобы доказать, что возможность взлома этих устройств может привести к компрометации ПО, поэтому я захотел воспользоваться тем же подходом: создавая этот хак, я стремился создать жёсткий диск, способный обходить программную защиту.
          Читать дальше →
        • Код youtube-dl распространяют на альтернативных платформах, в виде картинок и с помощью уязвимости GitHub



            Разработчики и энтузиасты начали распространять код youtube-dl на альтернативных платформах. Кроссплатформенный свободный проект с открытым исходным кодом на Python теперь доступен для скачивания в виде пары картинок формата png.
            Читать дальше →
          • Отказоустойчивый кластер с балансировкой нагрузки с помощью keepalived

            • Tutorial

            Сегодня я расскажу о том, как быстро собрать отказоустойчивый кластер с балансировкой нагрузки с помощью keepalived на примере DNS-серверов.

            Читать дальше →
          • Сбер выложил русскоязычную модель GPT-3 Large с 760 миллионами параметров в открытый доступ

              Последнее десятилетие в области компьютерных технологий ознаменовалось началом новой «весны искусственного интеллекта». Впрочем, ситуацию в индустрии в наши дни можно, наверное, охарактеризовать уже не как весну, а полноценное «лето ИИ». Судите сами, за последние неполные 10 лет только в области обработки естественного языка (Natural language processing, NLP) произошли уже две настоящие технологические революции. Появившаяся в результате второй из них модель GPT-3 произвела настоящий фурор не только в технологических медиа, но стала знаменитой далеко за пределами научного сообщества. Например, GPT-3 написала для издания «The Guardian» эссе о том, почему ИИ не угрожает людям. GPT-3 сочиняет стихи и прозу, выполняет переводы, ведёт диалоги, даёт ответы на вопросы, хотя никогда специально не училась выполнять эти задачи. До недавних пор все возможности GPT-3 могли по достоинству оценить лишь англоязычные пользователи. Мы в Сбере решили исправить эту досадную оплошность. И сейчас расскажем вам, что из этого получилось.


              Источник изображения
              Читать дальше →
            • Голосовой бот + телефония на полном OpenSource. Часть 2 — учим бота слушать и говорить


                В первой части статьи я описал как создать простого чат бота, в этой статье мы научим нашего бота говорить и слушать русскую речь и переводить ее в текст.
                Читать дальше →
                • +10
                • 6.2k
                • 5
              • Как генерируются UUID

                • Translation

                Вы наверняка уже использовали в своих проектах UUID и полагали, что они уникальны. Давайте рассмотрим основные аспекты реализации и разберёмся, почему UUID практически уникальны, поскольку существует мизерная возможность возникновения одинаковых значений.

                Современную реализацию UUID можно проследить до RFC 4122, в котором описано пять разных подходов к генерированию этих идентификаторов. Мы рассмотрим каждый из них и пройдёмся по реализации версии 1 и версии 4.
                Читать дальше →
              • В нативный код из уютного мира Java: путешествие туда и обратно (часть 1)


                  Java и другие управляемые языки просты и удобны во многих случаях, но иногда их возможностей недостаточно — например, если нужна библиотека, написанная только на C или C++. Иногда хочется позвать пару методов из системного API, или попытаться улучшить производительность для модуля — и тогда прямой путь в нативный код.


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


                  Иван Углянский (dbg_nsk) из Huawei разбирается со всем по порядку: что необычного в интеропе между Java и нативным кодом, как оно работало раньше и что нужно делать для их нормальной совместной работы (и можно ли это вообще сделать). Иван рассказывает, как избежать просадок производительности, внезапных OOM и размышляет на тему будущего — в контексте проектов Panama и Sulong.


                  Мы подготовили текстовую версию доклада о работе с нативами в Java. В первой части:


                  • Зачем вообще работать с нативным кодом в Java.
                  • С какими ошибками и проблемами придётся столкнуться при работе с нативами.

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


                  Далее — повествование от лица спикера.

                  Читать дальше →
                • Бесплатные аналоги популярных SaaS решений



                    Мы подготовили небольшой обзор бесплатных альтернатив популярных в России платформ SaaS. С небольшими усилиями зачастую можно добиться практически такой же функциональной отдачи, но с меньшими финансовыми затратами.
                    Читать дальше →
                    • +26
                    • 7.6k
                    • 8
                  • Опасность при настройке SSL VPN на FortiGate



                      По информации SAM Seamless Network более 200 тысяч компаний, в которых используется SSL VPN с настройкой «из коробки», уязвимы к атакам типа MitM. Злоумышленники при подключении могут предоставить действующий SSL сертификат и обманным путем подключиться к корпоративной сети компании. Под катом представлен пример атаки, а также рекомендации по безопасной настройке SSL VPN.
                      Читать дальше →
                    • IPSec туннель между Strongswan за NAT и VMWare NSX Edge

                        В силу ряда причин, потребовалось организовать VPN-соединение между сетью в VMWare Cloud Director и отдельной машиной Ubuntu в облаке. Заметка не претендует на полноценное описание, это просто небольшое howto.

                        IPSec туннель между Strongswan за NAT и VMWare NSX Edge
                        Читать дальше →
                      • Создание Discord – бота на .NET Core с деплоем на VPS-сервер

                        • Tutorial


                        Привет, Хабровчане!

                        Сегодня вы ознакомитесь со статьей, в которой будет рассказано, как создать бота, используя C# на .NET Core, и о том, как его завести на удаленном сервере.

                        Статья будет состоять из предыстории, подготовительного этапа, написания логики и переноса бота на удаленный сервер.

                        Надеюсь, данная статья поможет многим начинающим.
                        Читать дальше →