• Что должен знать о поиске каждый разработчик

    • Перевод
    • Tutorial

    Хотите внедрить или доработать функцию поиска? Вам сюда.



    Спросите разработчика: «Как бы вы реализовали функцию поиска в своем продукте?» или «Как создать поисковую систему?». Вероятно, в ответ вы услышите что-нибудь такое: «Ну, мы просто запустим кластер Elasticsearch: с поиском сегодня всё просто».

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

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

    Цель статьи


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

    Основываясь на опыте работы с универсальными решениями и узкоспециализированными проектами самого разного масштаба (в компаниях Google, Airbnb и нескольких стартапах), я расскажу о некоторых популярных подходах, алгоритмах, методах и инструментах.

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

    Переведено в Alconost
    Читать дальше →
  • tig — улучшаем продуктивность работы с git

      Всем привет! Хочу рассказать о консольной утилите, которая значительно увеличила мою продуктивность работы с Git, и, надеюсь, ускорит и вашу также. Называется она tig и была написана канадским программистом Джонасом Фонсека (Jonas Fonseca) ещё в далёком 2006-м году, но по настоящий день она активно развивается и поддерживается в великолепном состоянии. Я хочу показать её функционал (внимание, есть относительно тяжелые gif-ки внутри) и поделиться самыми удобными способами использования.


      Читать дальше →
    • Взлом Wi-Fi

      • Перевод
      • Tutorial

      Взлом маршрутизаторов WPA/WPA2 Wi-Fi с помощью Airodump-ng и Aircrack-ng/Hashcat


      Это краткое пошаговое руководство, которое демонстрирует способ взлома сетей Wi-Fi, защищённых слабыми паролями. Оно не исчерпывающее, но этой информации должно хватить, чтобы вы протестировали свою собственную сетевую безопасность или взломали кого-нибудь поблизости. Изложенная ниже атака полностью пассивна (только прослушивание, ничего не транслируется с вашего компьютера) и о ней невозможно узнать, если вы только реально не воспользуетесь паролем, который взломали. Необязательную активную атаку с деаутентификацией можно применить для ускорения разведывательного процесса. Она описана в конце статьи.
      Читать дальше →
    • Игры, в которых нужно писать код: Grid Garden, Elevator Saga и другие


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

        Читать дальше →
      • Переходим с Disqus на комментарии Github

        • Перевод
        Какое-то время я хотел убрать комментарии из своего блога; в основном, потому что здесь вообще мало комментариев, да и не хочется возиться с лишними «тормозами» от Disqus. Посмотрев на время загрузки Disqus, я был потрясён тем, что приходится терпеть посетителям сайта по моей вине (кроме тех, кто использует блокировщики вроде Privacy Badger и uBlock Origin.

        Эта статья заточена под Hugo, но код легко адаптируется для любого сайта.

        Что не так с Disqus?


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


        А вот лог после отключения Disqus.


        ЧЕГО!?
        Читать дальше →
      • OpenSSL, ssl_ciphers и nginx: прокачиваем на 100%

        • Tutorial


        Много где написано о том, как получить 100% и A+ по тесту от Qualys. При всём при том практически везде директивы ssl_ciphers и подобные даются как эдакие магические строки, которые нужно просто вставить, и надеяться, что автор не подводит вас под монастырь. Эта статья призвана исправить это недоразумение. По прочтению этой статьи директива ssl_ciphers потеряет для вас всякую магию, а ECDHE и AES будут как друзья да братья.


        Читать дальше →
      • Шаблоны проектирования с человеческим лицом

        • Перевод

        image


        Шаблоны проектирования — это способ решения периодически возникающих проблем. Точнее, это руководства по решению конкретных проблем. Это не классы, пакеты или библиотеки, которые вы можете вставить в своё приложение и ожидать волшебства.


        Как сказано в Википедии:


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

        image Будьте осторожны


        • Шаблоны проектирования — не «серебряная пуля».
        • Не пытайтесь внедрять их принудительно, последствия могут быть негативными. Помните, что шаблоны — это способы решения, а не поиска проблем. Так что не перемудрите.
        • Если применять их правильно и в нужных местах, они могут оказаться спасением. В противном случае у вас будет ещё больше проблем.

        В статье приведены примеры на PHP 7, но пусть вас это не смущает, ведь заложенные в шаблонах принципы неизменны. Кроме того, внедряется поддержка других языков.

        Читать дальше →
      • Невидимые друзья вашего github-репозитория

        • Tutorial
        image
        Github это незаменимый инструмент, прочно вошедший в жизнь практически каждого разработчика.

        Хотя многие из нас используют его постоянно, не все знают, что существует большое количество сторонних (и бесплатных) сервисов и инструментов, которые тесно интегрированы с github и расширяют его функциональность.

        В данной статье мы уделим внимание, в основном, инструментам, работающим в инфраструктуре npm. Полный список сервисов, интегрирующихся с github, можно посмотреть на странице github integrations directory.

        Сегодня в выпуске:




        Читать дальше →
      • Лицензия для вашего open-source проекта

          В этой статье я хочу немного поговорить об авторском праве и свободных лицензиях на ПО. Текст является результатом самостоятельного выбора лицензий и их применения к своим проектам.

          Статья будет полезна тем, кто хочет:

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

          beta.gitlance.net/top/javascript


          Источник изображения: beta.gitlance.net/top/javascript




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


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


          Мы же верим, что есть способ получше, и именно поэтому создали GitLance. По сути своей, коммиты в Git подобно бухгалтерской книге надежно фиксируют вклад каждого из участников, а на Github находится огромное множество публичных репозиториев Git вместе с их разработчиками, а также сравнимое количество их взаимных оценок в виде звёздочек на репозиториях и форков, идущих от них. Так почему бы не воспользоваться этим для генерации кодового графа?

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