• Список статей и литературы про 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 проекта

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

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

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

                  beta.gitlance.net/top/javascript


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




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


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


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

                  Читать дальше →
                • Объяснение блокчейна для веб-разработчиков

                  Предисловие переводчика


                  Предлагаю читателям Хабрахабра перевод статьи «The Blockchain Explained to Web Developers, Part 1: The Theory» за авторством Francois Zaninotto. Эту статью я нашел в блоге компании Marmelab. Статья представляет собой отличное введение в технологию блокчейн «с нуля», но может оказаться интересной и для тех, кто уже «в теме». Она касается не только того, как работает блокчейн, но и перспектив его развития, а также с чего начать, если вы хотите создать свой проект, использующий блокчейн.

                  Объяснение блокчейна для веб-разработчиков, Часть первая: Теория


                  Блокчейн – это новая популярная технология. Даже если вы не слышали о ней, вы, вероятнее всего, знаете о Bitcoin. Блокчейн — это одна из фундаментальных технологий на которых основан Bitcoin. Эксперты говорят, что блокчейн вызовет революцию схожую с той, которую некогда вызвал Интернет. Но что это на самом деле и как его можно использовать для создания приложений? Эта статья является первой в серии из трех, рассказывающей о феномене Блокчейна. Мы обсудим теорию, покажем фактический код и поделимся своим опытом, основанным на реальном проекте.
                  Читать дальше →
                • Открытое письмо рекрутерам IT-сферы

                  • Перевод
                  От переводчика:

                  Оригинал данного текста был написан разработчиком программного обеспечения из Швейцарии Адрианом akosma Космачевским. Другой его текст «Каково это — быть разработчиком, когда тебе сорок» уже переводился для Хабра. В первую очередь, все написанное ниже обращено к рекрутерам «по найму» — рекрутинговым агенствам, предоставляющим услуги поиска работников другим компаниям. Но в целом, он применим и для обычных HR-департаментов в нашем регионе.

                  Приятного чтения.



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

                  Мне иногда кажется, что преследование со стороны рекрутеров всех мастей является неотъемлемой частью бытности разработчика программного обеспечения. Я получаю по три-четыре письма в неделю на свой e-mail, постоянно отвечаю на телефонные звонки и даже получаю почту (знаете, эти старые-добрые пакеты, конверты, с такими марками на них), с предложениями вакансий по всей Европе.

                  Мои навыки пользуются спросом и мне кажется, я должен радоваться этому. Но есть проблема, и состоит она в том, что 99% всех попыток контакта со мной со стороны рекрутеров были тем или иным образом провалены. За 19 лет работы разработчиком ПО у меня сложилось не самое хорошее представления обо всех этих «возможностях», призывах «индустрии» и связанными со всем этим методами.

                  Так что, дамы и господа (рекрутеры), чтя стандартный стиль ваших сообщений, пожалуйста, ознакомьтесь с моим Top Five List некорректных моделей коммуникации рекрутеров с разработчиками программного обеспечения.
                  Читать дальше →