• Многопоточная сортировка с использованием пула потоков на Java

    В данном посте будет рассказано, как реализовать сортировку на Java c использованием ExecutorService. Общая суть сортировки в следующем:

    1. Массив разбивается на части
    2. Каждая часть массива сортируется
    3. Идем по упорядоченным массивам, сливаем их в один

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

    Для слияния можно использовать следующую функцию:
    Читать дальше →
  • Кучи. Часть 1. Биномиальная куча

    Здравствуйте, Хабросообщество!

    На хабре есть описание множества интересных структур данных, таких как деревья отрезков, дуча и т.п. Если Вам интересны сложные структуры данных, то добро пожаловать под кат!
    Читать дальше →
  • 30+ парсеров для сбора данных с любого сайта

      30+ парсеров для сбора данных с любого сайта

      Десктопные/облачные, платные/бесплатные, для SEO, для совместных покупок, для наполнения сайтов, для сбора цен… В обилии парсеров можно утонуть.


      Мы разложили все по полочкам и собрали самые толковые инструменты парсинга — чтобы вы могли быстро и просто собрать открытую информацию с любого сайта.

      Читать дальше
      • +8
      • 5,9k
      • 8
    • Пирамидальная сортировка (HeapSort)

      • Перевод


      Перевод статьи подготовлен специально для студентов курса «Алгоритмы для разработчиков».




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

      Читать дальше →
      • +26
      • 20,2k
      • 6
    • IT-эмиграция в Новую Зеландию

      Это очередная статья про IT-эмиграцию, но про Новую Зеландию пока информации не было.


      Здесь будет рассматриваться в том числе техническая сторона эмиграции, что представляет собой эдакий квест, с вполне определенными правилами. Если кому интересно данное направление, то прошу под кат.


      Почему стоит здесь жить


      Типичная Новая Зеландия

      Читать дальше →
    • Коронавирус COVID-19: только факты, без паники

        Паника — худшее, что может случиться во время пандемии. Хабр всегда был и остается местом, где людям важны факты, а не домыслы. Факты такие: коронавирус оказался заразным и в некоторых случаях — смертельным. Государства избирательно закрывают границы, авиакомпании отменяют рейсы, массовые мероприятия переносятся. Лучшее, что можно сделать — как следует подготовиться. Ниже мы собираем самые внятные и полезные статьи, которые выходили на площадке в последнее время. Материал будет дополняться.
        Читать дальше →
      • Коронавирус: почему надо действовать прямо сейчас

        • Перевод
        • Tutorial

        Вступление


        Учитывая всё, что происходит с коронавирусом, может оказаться очень сложно принять решение, что делать прямо сейчас. Стоит ли подождать, пока станет больше информации? Надо ли предпринять что-то уже сегодня? Если да, то что?

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

        • Сколько людей заболеют коронавирусом в вашем регионе?
        • Что случится, когда они начнут заболевать?
        • Что вы должны делать?
        • Когда?

        Когда вы закончите читать статью, вы придёте к следующим выводам:

        • Коронавирус приближается к вам.
        • Он приближается с экспоненциальной скоростью: сперва постепенно, а потом внезапно.
        • Это вопрос нескольких дней. Может быть, неделя или две.
        • Когда это случится, ваша система здравоохранения будет перегружена.
        • Ваши сограждане будут лечиться в коридорах.
        • Изможденные медицинские работники сломаются. Некоторые погибнут.
        • Им придётся решать, кто из пациентов получит лечение, а кто умрет.
        • Единственный способ предотвратить это — социальная изоляция уже сегодня. Не завтра. Сегодня.
        • Это значит держать как можно больше людей дома, начиная с сегодняшнего дня.

        Если вы политик, общественный деятель или руководитель, у вас есть власть и ответственность, чтобы предотвратить описанное выше.

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

        Однако через 2-4 недели, когда весь мир будет закрыт и изолирован, когда окажется, что несколько драгоценных дней социальной изоляции, которые вы организовали, спасли жизни, вас больше не будут критиковать. Люди будут благодарить вас за то, что вы приняли правильное решение.

        Итак, давайте разбираться.

        Много графиков и длинный текст
      • Коронавирус: филогения, курение, летальность и снижение рисков заболеть



          Есть ощущение, что про эпидемию COVID-19 сейчас вещают из каждого утюга. В этом плане Хабр радует хорошими постами с нормальными источниками и конструктивным обсуждением. Я тоже решила поделиться свежими препринтами на тему экспрессии ACE2 у укуренных мышей, особенностями генетики и эволюции вируса, а также рекомендациями о снижении рисков заболеть. И ещё поскольку мы занимаемся средствами для глаз в лаборатории, меня просто достали вопросами, что помогает. Если коротко — лучше всего помогает пакет на голову.
          Читать дальше →
        • Законы программирования

          • Перевод

          Законы, теории, принципы и закономерности, полезные для разработчиков


          Введение


          Перевод репозитория github.com/dwmkerr/hacker-laws

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

          Здесь содержатся объяснения некоторых законов, принципов и закономерностей, но нет никакой агитации в их пользу. Применять их или нет – это всегда вопрос спорный, и всё зависит от того, над чем вы работаете.

          Законы


          Закон Амдала


          Закон Амдала — это формула, демонстрирующая потенциал ускорения вычислительной задачи, которого можно достичь при увеличении количества ресурсов системы. Обычно он используется в параллельных вычислениях, и может предсказать наличие реальных преимуществ от увеличения количества процессоров с учётом ограничений параллелизуемости программы.
          Читать дальше →
        • Самые важные и полезные материалы по коронавирусу COVID-19

            image

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

            Я хочу инициировать создание ситуационного центра, где можно оперативно и централизованно получать информацию ДЛЯ САМОСТОЯТЕЛЬНЫХ выводов о текущем положении дел и принимаемых мерах по поводу:

            а) вируса
            б) действий правительств
            в) действий медиков
            г) действий работников и работодателей
            д) действий каждого отдельного человека

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

            Добрый день. Прошло уже 2 года с момента написания последней статьи про парсинг Хабра, и некоторые моменты изменились.


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

            Читать дальше →
          • Quick Sort Algorithm in JavaSript (pivot as the first element + pivot as the random element)

            • Tutorial

            Introduction


            Quick Sort is one of the most famous and effective Sorting Algorithms. The comprehension of how it works will undoubtedly help you in your JavaScript learning. Also, questions on algorithms are popular in job interviews, so there is a big chance you will be asked to describe how Quick Sort works.

            I’m sure that I convinced you that Quick Sort is important. Let’s start!


            Read more →
          • Самые популярные структуры данных

            • Tutorial
            Что такое структура данных?
            Проще говоря, структура данных — это контейнер, в котором хранятся данные в определенной компоновке (формате, или способе организации их в памяти). Эта «компоновка» позволяет структуре данных быть эффективной в одних операциях и неэффективной в других. Ваша цель — понять структуры данных, чтобы вы могли выбрать структуру данных, наиболее оптимальную для рассматриваемой проблемы.

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

            Читать дальше →
            • +12
            • 8,8k
            • 8
          • Верни моего ребенка! (н.-ф. рассказ)



              Это был особняк Бенсона. Новый особняк – в нем она никогда не бывала. Материнским инстинктом Нилда почувствовала, что ребенок здесь. Конечно, здесь: где еще держать похищенного ребенка, как не в самом надежном укрытии?

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

              Подняв воротник плаща, чтобы не опознали камеры, Нилда пошла вдоль ограды в направлении парка. Там меньше вероятность нарваться на свидетелей.
              Читать дальше →
            • История человека, чувствительного к электромагнитному излучению, или как мы щупаем край обрыва… UPD: +FAQ


                С этой впечатлившей меня драматичной историей я познакомился довольно банально. Находясь по делам в Калифорнии, я написал человеку, что хотел бы с ним встретиться по работе. Он ответил, мы договорились о дне, месте и времени. Какая-то кафешка в паре километров от гостиницы, вполне удобно. Единственное, когда договаривались, человек предупредил, что сотового у него не будет:


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

                Мы встретились и мило пообщались пару часов. Он подробно ответил на все мои вопросы. Ему были интересны наши исследования, и он по ним много вопросов задал. А уже под конец, когда мы готовились расходиться, я, как человек любопытный, спросил:
                — А почему вы не носите сотовый? 
                Он с задумчивой американской улыбкой посмотрел на меня и спросил в ответ:
                — Тебе короткую версию или длинную? 
                Я осторожно предложил начать с короткой, а там как пойдет. Честно говоря, моя основная рабочая версия была — слежка Большого Брата. Я был неправ…

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


                Кому интересно, как оно (очень редко) бывает, добро пожаловать под кат.
                Читать дальше →
              • Как проверить навыки программирования на Python? Задачи от Яндекса


                  Хакатон в Школе бэкенд-разработки

                  В 2019 году нам потребовалось автоматизированно проверить умение писать Python-код у сотен разработчиков. Так мы отбирали будущих студентов для Школы бэкенд-разработки. Это не то же самое, что предложить решить задачу на листе бумаги, как на собеседовании. С другой стороны, мы также не могли переиспользовать условия задач, уже подготовленные для наших соревнований по программированию. Дело в том, что соревнования с целью определить лучших из лучших — это одно, а отбор специалистов с небольшим опытом в школу — совсем другое. Нам требовались задачи, по решению которых было бы видно, обладает ли разработчик базовыми навыками написания кода и умением грамотно использовать память и время. Вот какие условия мы составили.
                  Читать дальше →
                • KPI копирайтера или особенности оценки работы удаленных авторов в штате и фрилансеров



                    В статье рассказано как определить эффективность KPI рунетовского копирайтера и коммерческого автора контента. Описаны решаемые автором задачи и способы оплаты труда автора, недостатки и плюсы.
                    Читать дальше →
                  • Какие навыки нужны для создания iOS-приложения? Доклад Яндекса

                      Мобильному разработчику нужно обладать понятным набором навыков. Рассказывать о них нужно в контексте конкретных задач, которые возникают по ходу создания и публикации приложения. Артур Антонов работает iOS-разработчиком в отделе машинного перевода Яндекса. В своём докладе для студентов и начинающих специалистов Артур объяснил, что должен уметь разработчик, чтобы создавать современный мобильный софт.


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

                        Я знаю, что люди обожают истории, в которых автора облапошили или о событиях на пути становления. Так что надеюсь, вам будет интересно.
                        Читать дальше →
                      • Почему быстрая сортировка на самом деле медленная? Новый метод сортировки массива

                        imageМногие программисты думают, что Quick Sort — самый быстрый алгоритм из всех существующих. Отчасти это так. Но работает она действительно хорошо только если правильно выбран опорный элемент (тогда сложность составляет O (n log n)). В противном же случае асимптотика будет примерно такой же как и у пузырика (то-есть O (n2)).
                        При этом, если массив уже отсортирован, то алгоритм всё-равно будет работать не быстрее, чем O (n log n)


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

                        «Дело было вечером, делать было нечего», — Сергей Михалков.

                        Требования:


                        1. Лучший случай O (n)
                        2. Средний случай O (n log n)
                        3. Худший случай O (n log n)
                        4. В среднем быстрее быстрой сортировки


                        А теперь давайте обо всём по порядку


                        Чтобы наш алгоритм всегда работал быстро, нужно чтобы в среднем случае асимптотика была хотя бы O (n log n), а в лучшем — O (n). Все мы прекрасно знаем, что в лучшем случае сортировка вставками работает за один проход. Но в худшем ей придётся гонять по массиву столько раз, сколько в нём элементов.


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