• Балансировка HTTP(S) трафика

      Добрый день, %username%. Меня зовут Антон Резников, я работаю над проектом Облако Mail.Ru Сегодня я хочу рассказать о технологиях балансировки трафика, проиллюстрировав историей о развитии социальной сети. Все персонажи выдуманы, а совпадения почти случайны. Статья обзорная, составлена по следам доклада на Highload Junior 2017. Некоторые вещи могут показаться элементарными, но опыт проведения собеседований показывает, что это не совсем так. Кое-что будет спорным, не без этого.

      Если интересно, добро пожаловать под кат.
      Читать дальше →
    • Работаем в консоли быстро и эффективно

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

      Читать дальше →
    • DevBoy — как я создал проект устройства с открытым исходным кодом и запустил проект на Kickstarter

      Привет, друзья!

      Меня зовут Николай, читателем Хабра являюсь давно, а вот с написанием статей как-то не сложилось. Пора исправлять эту ситуацию, тем более что как раз имеется повод — только что я запустил компанию на Kickstarter для реализации устройства с открытым исходным кодом.



      Кому интересно — прошу под кат.
      Читать дальше →
    • Список статей и литературы про NAS


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


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

        Читать дальше →
      • Создание «искусственной жизни» на компьютере

        • Tutorial
        Всем привет. В статье хочу описать свой эксперимент по созданию «искусственной жизни» на компьютере.

        Как это выглядит?

        картинка кликабельна

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

        Ну а дальше за работу принимается эволюция и естественный отбор.

        А мне остаётся только наблюдать за развитием мира.

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

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

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

        Внутреннее устройство кода — это самое интересное в проекте.

        Код должен быть простым и выдерживать различные модификации (случайное изменение любого элемента в коде) над собой без синтаксических ошибок.
        Читать дальше →
      • Добываем Wi-Fi соседа стандартными средствами MacOS

          Я всегда был фанатом багов и уязвимостей «на поверхности», всегда завидовал чувакам, которые пишут эксплойты для самых защищённых ОС, а сам умел только скрипткиддить (термин из нулевых). Однако мой пост про уязвимости в системах контроля версий набрал более 1000 лайков на Хабре и остаётся топ1 постом за всю историю Хабра, несмотря на то, что был написан 9(!) лет назад.

          И сегодня я хотел бы на пальцах показать и рассказать про такую штуку, как вардрайвинг. А точнее, как стандартными средствами MacOS можно добыть пароли от Wi-Fi соседей. Нелёгкая забросила меня на очередную квартиру. Как-то исторически сложилось, что я ленивый. Пару лет назад я уже писал, что моя лень, новая квартира и провод Beeline (бывшая Corbina) помогли мне найти багу у Билайна и иметь бесплатно интернет в их сети. «Сегодня» происходит «подобное», я на новой квартире, нет даже провода, но есть много сетей у соседей.


          Заколебавшись расходовать мобильный трафик, я решил, что «соседям надо помогать», и под «соседями» я имел введу себя…
          Читать дальше →
        • А давайте сообща напишем «памятку населению» по настройке квартирных Wi-Fi

            В многоквартирных домах с wi-fi произошла трагедия общин: он есть у всех, выкручен на максимум, в результате все друг другу забили эфир до практически полной неработоспособности. Можно ли порешать проблему «малыми усилиями»?
            Читать дальше →
          • Что должен знать о поиске каждый разработчик

            • Перевод
            • 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 и другие


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

                Читать дальше →
              • Бумажный компьютер

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

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


                Читать дальше →
              • Переходим с 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, но пусть вас это не смущает, ведь заложенные в шаблонах принципы неизменны. Кроме того, внедряется поддержка других языков.

                Читать дальше →
              • 802.одиннадцать чего там ещё? Почему WiFi – отстой, и что с этим делать

                • Перевод

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


                image

                Когда сети на основе стандарта беспроводной связи 802.11b в конце 90-х вышли на рынок, то на бумаге они выглядели прекрасно. Они обещали «11 Мбит/с» по сравнению со скоростью 10 Мбит/с по проводам Ethernet, и можно было подумать, что беспроводная сеть на самом деле работает быстрее, чем Ethernet. Прошло немало времени, прежде чем я познакомился с беспроводными сетями – смартфоны тогда ещё не выстрелили, ноутбуки были чрезвычайно дорогими, маломощными и тяжёлыми. А я уже ставил в офисы своим клиентам и себе домой Fast Ethernet (100 Мбит/с), так что идея урезания скорости на 90% меня не привлекала.

                В начале 2000-х всё начало меняться. Ноутбуки уменьшались, становились легче и дешевле – а ещё в них стали встраивать WiFi. Малый бизнес начал присматриваться к обещанным стандартом «11 Мбит/с» и размышлять – раз 10 Мбит/с в старом офисе хватало, почему бы не поставить в новом беспроводную сеть? Моё первое знакомство с WiFi состоялось, когда я разбирался с последствиями такого решения, и первое впечатление оказалось плохим. Оказывается, что «11 Мбит/с» – это максимальный физический уровень чистого битрейта, а не скорость, с которой реальные данные смогут передаваться между компьютерами. На практике он был не особенно лучше диалапа – как по скорости, так и по надёжности. На самом деле, если разместить все устройства довольно близко друг к другу и к точке доступа, то можно было ожидать, в лучшем случае, 1 Мбит/с – около 125 Кб/с. А так было ещё хуже – если десять компьютеров пытаются достучаться до сервера, нужно поделить эти 125 Кб/с и получить 12,5 Кб/с для каждого из них.
                Читать дальше →
              • Теории заговора. Алкогольное лобби


                  По данным ВОЗ, россияне мужского пола потребляют 23,9 литра чистого спирта в год (белорусы — 27,5 л) при среднемировом уровне потребления алкоголя 6,2 литра в год. Медики считают, что именно алкоголь является причиной многочисленных смертельных заболеваний. Повсеместная алкоголизация населения — главный фактор низкой продолжительности жизни в России. Говорят, что это единственная страна в мире, где смертность мужчин на свободе в три раза выше, чем в тюрьме (там алкоголь запрещён). Фактически, алкоголь унёс уже больше жизней, чем голод, эпидемии, теракты и все войны в истории, включая Вторую мировую войну. Сейчас от этого вещества умирает 3,3 млн человек в год.

                  Алкоголь вызывает привыкание, разрушает мозг, печень, пищеварительный тракт и желудок. Он приводит к циррозу печени, раку поджелудочной железы, ожирению, гипертонии, болезням сердца.
                  Читать дальше →
                • Невидимые друзья вашего github-репозитория

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

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

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

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




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

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

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

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