• Trie, или нагруженное дерево

    Здравствуй, Хабрахабр. Сегодня я хочу рассказать о такой замечательной структуре данных как словарь на нагруженном дереве, известной также как префиксное дерево, или trie.

    Что это ?


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

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

      Читать далее
    • Обновляемся на новую версию API Android по наставлению Google

        Скоро выходит Android 12, но в этом августе уже с 11-й версии разработчикам придётся использовать новые стандарты доступа приложений к внешним файлам. Если раньше можно было просто поставить флаг, что ваше приложение не поддерживает нововведения, то скоро они станут обязательными для всех. Главный фокус — повышение безопасности.

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

        Читать далее
      • Как написать свою клавиатуру для Android

        Здравствуйте. В данной статье я постараюсь рассказать и показать основные моменты написания собственной клавиатуры для Android'а. Статья предназначена для разработчиков, которые с этим не сталкивались, но имеют опыт знакомства с Android'ом.
        Клавиатура для самых маленьких
        • +24
        • 28.1k
        • 9
      • Как эффективно проводить эксперименты по машинному обучению. Общий процесс работы над ML/DL проектом

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

          Читать далее
        • Краткое введение в Машинное обучение

            Пару лет назад я рассказывал жене сказки, что когда я буду старым маразматиком, мое ближайшее окружение не будет страдать от этого, ведь за мной будут ухаживать роботы. Новости о прогрессе искусственного интеллекта впечатляли меня (нейросетки то, нейросетки сё), свет в конце тоннеля манил, как и зарплаты специалистов в этой области. Разумеется, я не смог пройти мимо и решил погрузиться в Machine Learning.

            Для старта хотелось почитать что-то совсем базовое, но поиск по строкам "машинное обучение для чайников" вменяемых результатов не дал. Все статьи начинались с тривиальных рассуждений, а потом перепрыгивали на загадочные формулы без особых пояснений. Я не сдавался и добыл несколько книг с хорошими отзывами, но получил то же самое, только уже на 600 страниц. Спустя полгода поисков могу сообщить вам следующее: при текущих темпах развития AI я не увижу роботов в старости, для работы с Machine Learning на самом деле не нужна математика, и как минимум одна статья "машинное обучение для чайников" существует, вы ее сейчас читаете.

            Читать далее
          • Боевой OSINT — разведка и сбор информации из открытых источников

              OSINT (англ. Open source intelligence) или разведка на основе открытых источников включает в себя поиск, сбор и анализ информации, полученной из общедоступных источников. Ключевой целью является поиск информации, которая представляет ценность для злоумышленника либо конкурента. Сбор информации во многом является ключевым элементом проведения пентеста. От того, насколько качественно он был осуществлён, может зависеть, как эффективность пентеста в целом, так и эффективность отработки отдельных векторов атаки (социальная инженерия, брутфорс, атака на Web-приложения и пр.). В этой статье соберем информацию о компании и посмотрим что о ней знает Интернет и потенциальный злоумышленник.

              Читать далее
            • Свой личный SMS-шлюз. Часть 1 – цели, задачи, сборка и тестирование

              • Tutorial


              Представляю вам цикл статей по созданию собственного шлюза для отправки SMS-сообщений.
              В первой части мы определим цели и некоторые аспекты использования своего шлюза, настроим программное обеспечение для отправки SMS с использованием USB-модемов, а также рассмотрим несколько интересных вариантов отправки
              Читать дальше →
            • Как найти удаленную работу в зарубежной компании. 10 шагов



                Каждый год Оксфордский словарь английского языка выбирает «Слово года». Но в 2020-м что-то пошло не так. Издательство Оксфордского университета описало 2020-й как «год, который лишил нас дара речи», и сказало, что к нему невозможно подобрать правильное слово.


                Но на наш взгляд, такое слово всё-таки есть. С прошлого марта в мире резко возросло использование слова «удаленно». Большинство предприятий отошли от традиционной модели офисной работы и стали пытаться организовать труд сотрудников из дома. Для разработчиков из СНГ это прекрасная возможность начать работу в лучших мировых компаниях. Зарплаты за рубежом выше, а возможностей сейчас стало больше, чем когда-либо прежде.


                Мы постоянно исследуем рынок. Публикуем сотни вакансий ежедневно. И сейчас 40% выручки получаем от иностранных компаний, которые в основном нанимают программистов для удаленной работы.


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

                Читать дальше →
              • Максимальная защита в Интернете

                Скачать в удобном виде Word, PDF.

                Пароли

                Почта

                Банковская карта

                Интернет (Web)

                Социальные сети

                Безопасность компьютера

                Безопасность мобильных устройств

                Wi-Fi 

                Интернет вещей (IoT) 

                Защита конфиденциальных данных

                Читать далее
              • Используй console.log () как про

                • Translation

                Использование console.log() для отладки JavaScript - самая распространенная практика среди разработчиков. Но есть еще кое-что ...

                Объект console обеспечивает доступ к отладочной консоли браузера. Особенности того, как она работает, варьируются от браузера к браузеру, но де-факто существует набор функций, которые обычно предоставляются.

                Читать далее
                • +21
                • 11.5k
                • 5
              • В дикой природе появился Kobalos

                • Translation

                Эксперты компании ESET рассказали о новом вредоносном ПО, целью которого являются кластеры для высокопроизводительных вычислений по всему миру. Оно интересно по нескольким причинам. Несмотря на довольно малый размер кодовой базы (образцы, подвергнутые анализу, имели размер 25 Кб), малварь достаточно сложна для проведения атак на Linux, BSD и Solaris и, потенциально, может подходить для атак на AIX и Microsoft Windows. Еще одной отличительной чертой является способность превращать зараженные серверы в новые C&C по команде оператора. Из-за множества хитростей и малого размера кода исследователи назвали его Kobalos — в честь озорных древнегреческих духов, однажды ограбивших Геракла и обожающих обманывать и пугать людей.

                В опубликованном специалистами исследовании рассказывается о предполагаемых начальных векторах компрометации, механизмах аутентификации и распространения, встроенных функциях и приводится технический анализ вредоносного кода. После этого эксперты указывают на признаки компрометации и применяемые методики MITRE ATT&CK.

                У нас возникла мысль, что людям, слабо владеющим английским языком, но неравнодушным к актуальным исследованиям в области ИБ, в частности, к разбору вредоносного ПО, будет интересен и полезен перевод анализа такой, на наш взгляд, необычной малвари.
                Читать дальше →
              • Нагрузочное тестирование на Gatling — Полное руководство. Часть 1

                • Translation

                Эта статья представляет собой полное, подробное и исчерпывающее руководство по эффективному использованию Gatling для нагрузочного тестирования.

                Если вам нужно провести нагрузочное тестирование вашего сервера HTTP-приложений, то Gatling - идеальный инструмент для этой задачи! Эта серия статей будет представлять собой подробное практическое руководство по нагрузочному тестировании на Gatling. К концу этого руководства у вас появится хорошее представление об использовании Gatling, которое вы сможете применить в ваших последующих проектах по нагрузочному тестированию.

                Читать далее
              • Развертывание ML модели в Docker с использованием Flask (REST API) + масштабирование нагрузки через Nginx балансер

                • Tutorial

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


                Читать дальше →
              • Подборка телеграм-каналов для DevOps инженеров

                Приветствую, братцы!

                Задача получения актуальной информации и совета опытных коллег сегодня актуальна как никогда. С одной стороны, сложно превзойти крупнейшие ИТ-сообщества в Slack. С другой стороны, важно иметь контакт с коллегами в нашей стране, в своем городе. Телеграм за последние годы стал крупнейшей площадкой для русскоязычного ИТ-сообщества, присоединяйтесь, не отставайте :)

                Подборка телеграм-каналов и чатов
              • Сколько радиолюбителей в России?

                  Вроде бы совершенно простой вопрос, но на который как оказалось не так-то просто найти достоверный ответ. Единственные доступные сводные данные по количеству выданных радиолюбительских позывных, которые мне удалось найти, находятся на сайте СРР в разделе «Статистические данные». Собственно из этих данных мы можем узнать, что то-ли на начало ноября 2017 года, то-ли на начало 2018 года в «имеются достоверные сведения о 27 тысячах радиооператоров любительской службы«. И проблема даже не столько в том, что эти данные уже более чем 6-и летней давности, а в их некоторой непонятности и даже сомнительности, но об этом чуть позже.

                  К счастью у Андрея R1CF есть уникальный «GRFC crawler project», который косвенным образом получает данные о действующих/изменяющихся/аннулированных позывных с сайта ГРЧЦ и раскладывает их в свою базу данных. Собственно к этой самой базе данных Андрей любезно предоставил мне доступ и мне осталось только собрать статистику и построить графики/диаграммы.

                  Данные для анализа мне были доступны за период с июня 2015 по февраль 2021 включительно, но изменения происходящие в июне-июле-августе 2015 года я исключил из статистики, так как по всем признакам в этот период происходило первоначальное заполнение базы данных ГРЧЦ. То есть фактический период анализа: сентябрь 2015 — февраль 2021.

                  Также при анализе в базе ГРЧЦ обнаружилось некоторое количество «ошибок ввода»: неправильно проставленные регионы у позывных, ну и т.д. Но этих ошибок сравнительно немного, большинство из них исправляются «на лету» моим скриптом-анализатором и в целом они не должны оказывать какое-то заметное влияние на полученные результаты.

                  Что еще, я также исключил из анализа все позывные маяков, космических станций, специальные и т.д. Оставил только постоянные физических и юридических лиц (коллективки). Последние просто технически невозможно отделить от позывных физических лиц, но их реально единицы по стране.

                  Итак, я получил следующие результаты.

                  Читать далее
                • Что такое ассертивность и зачем она нужна

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

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


                    Читать дальше →
                  • Как я угнал национальный домен Демократической Республики Конго

                    • Translation
                    Примечание: проблема решена. Сейчас национальный домен .cd уже не делегирует полномочия скомпрометированному нейм-серверу

                    TL;DR Представьте, что может произойти, если национальный домен верхнего уровня (ccTLD) суверенного государства попадет в чужие руки. Однако я (@Almroot) купил доменное имя, которое указано для делегирования NS в национальном домене Демократической Республики Конго (.cd), и временно принял более 50% всего DNS-трафика для этой TLD. На моём месте мог оказаться злоумышленник, который использовал бы эту возможность для MITM или других злоупотреблений.


                    Читать дальше →
                  • Мы так и не попали в аптечку МКС, зато начали продавать свой быстрый регенератор тканей

                      image

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

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

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

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

                      К текущему моменту средство показывает нормальные продажи. Потому что мир поменялся, потому что нам повезло, и потому что оно работает. Но по дороге были сюрпризы с наукой, чуть не закончившиеся снятием продукта с производства и отзывом партии из аптек.
                      Читать дальше →
                    • Подтверждение номеров телефона без SMS

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

                        Предлагаем простой API метод для авторизации номеров телефонным звонком.


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