• Взломать 50 000 сетевых принтеров и распечатать произвольный текст? Нет ничего прощеǃ

      29 ноября 2018 года пользователь твиттера под псевдонимом @TheHackerGiraffe «взломал» более 50 000 сетевых принтеров и распечатал на них листовки с призывом подписываться на YouTube-канал некоего PewDiePie. Он говорит, что таким образом хотел способствовать популярности своего кумира, который сейчас сражается за 1-е место по количеству подписчиков на YouTube.

      Здесь интересна простота, с которой хакеру удалось получить доступ к 50 000 принтеров. В сессии вопросов и ответов AMA на Reddit хакер раскрыл подробности этого взлома. Оказывается, в нём нет ничего сложного. Более того, в Сети свободно доступны программные инструменты для эксплуатации многих уязвимостей в старых прошивках принтеров. К сожалению, повторить этот фокус может буквально любой желающий.

      На иллюстрации: пeчать по raw-порту 9100
      Читать дальше →
    • Работа с изображениями на Python

        Тема сегодняшнего разговора — чему же научился Python за все годы своего существования в работе с изображениями. И действительно, кроме старичков родом из 1990 года ImageMagick и GraphicsMagick, есть современные эффективные библиотеки. Например, Pillow и более производительная Pillow-SIMD. Их активный разработчик Александр Карпинский (homm) на MoscowPython сравнил разные библиотеки для работы с изображениями на Python, представил бенчмарки и рассказал о неочевидных особенностях, которых всегда хватает. В этой статье расшифровка доклада, который поможет вам выбрать библиотеку под свое приложение, и сделать так, чтобы она работало максимально эффективно.


        О спикере: Александр Карпинский работает в компании Uploadcare и занимается сервисом быстрой модификации изображений на лету. Участвует в разработке Pillow — популярной библиотеки для работы с изображениями на Python, развивает собственный форк этой библиотеки — Pillow-SIMD, который использует современные инструкции процессоров для наибольшей производительности.
        Читать дальше →
        • +49
        • 25.6k
        • 9
      • «Спасти» старый софт — три проекта, которые делают это

          Еще в 2014 году Microsoft передала код MS-DOS 1.25 и 2.0 Музею компьютерной истории, а в начале октября этого года этот код был загружен на GitHub. Но не только Microsoft занимается сохранением исторического программного наследия. Есть несколько глобальных проектов, цель которых — сохранить старый софт. О них мы и расскажем в сегодняшнем материале.

          Читать дальше →
        • Создаём простую, компактную и дешёвую интернет радиостанцию

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

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

          Что-то типа Raspberry Pi 3?

          Нет, мы же хотим дешевле, так что нам нужно что-то типа Orange Pi. У меня нашлась модель Orange Pi Pc Plus с 1GB DDR3 оперативной памяти и 8GB EMMC Flash.

          Читать дальше →
        • Как «воевали» и эволюционировали аудиоформаты и аудиотехнологии: большой исторический дайджест

            Сегодня мы представляем вашему вниманию избранные исторические материалы из нашего «Мира Hi-Fi». Они будут интересны всем, кто любит почитать статьи о необычных музыкальных инструментах, аудиобрендах и их создателях, а также носителях и форматах.

            Читать дальше →
          • Что нужно запомнить программисту, переходящему на Python

            • Tutorial

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


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


            • Билл Любанович «Простой Python. Современный стиль программирования»
            • Дэн Бейдер «Чистый Python. Тонкости программирования для профи»
            • Бретт Слаткин «Секреты Python: 59 рекомендаций по написанию эффективного кода»

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


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

            Читать дальше →
          • Улучшенные эффекты с режимом смешивания фоновых слоев в CSS

            • Translation
            Если одна картина заслуживает тысячи слов, то смешение двух картин заслуживает гораздо большего. Точно так же, возможности дизайна, которые открываются с появлением возможности смешивания слоев в CSS гораздо больше, чем вы думаете.

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

            Вот эти свойства:

            • background-blend-mode — для смешивания фоновых изображений, градиентов и цветов фона элементов;
            • mix-blend-mode — для смешивания элементов с другими элементами;
            • isolation – менее используемое свойство, которое применяется вместе с mix-blend-mode для предотвращения смешивания элементов.



            Как бы то ни было, эта статья будет посвящена background-blend-mode, свойству, которое пользуется наиболее широкой поддержкой, и возможностям его использования для создания на своем сайте привлекательных фонов и фотоэффектов, которые когда-то были возможны только в Photoshop.
            Читать дальше →
          • Django Channels – ответ современному вебу

              В мире Django набирает популярность дополнение Django Channels. Эта библиотека должна принести в Django асинхронное сетевое программирование, которое мы так долго ждали. Артём Малышев на Moscow Python Conf 2017 объяснил, как это делает первая версия библиотеки (сейчас автор уже запилил channels2), зачем она это делает и делает ли вообще.

              Прежде всего, дзен Python говорит, что любое решение должно быть единственное. Поэтому в Python всего минимум по три. Сетевых асинхронных фреймворков уже существует большое множество:

              • Twisted;
              • Eventlet;
              • Gevent;
              • Tornado;
              • Asyncio.

              Казалось бы, зачем писать еще одну библиотеку и надо ли вообще.


              О спикере: Артём Малышев независимый Python разработчик. Занимается разработкой распределённых систем, выступает на конференциях по Python. Артёма можно найти по никнейму PROOFIT404 на Github и в социальных сетях.
              Читать дальше →
            • 15 малоизвестных свойств и методов объектов DOM

              • Translation
              При разработке современных веб-сайтов интенсивно используются возможности JavaScript по работе с DOM. Скрипты позволяют отображать и скрывать элементы, из которых строятся страницы, настраивать свойства этих элементов. У объектов DOM, с которыми взаимодействуют из программ, имеются свойства и методы. О некоторых из них, по мнению автора материала, перевод которого мы сегодня публикуем, знают практически все веб-программисты. А вот некоторые, о которых он и хочет здесь рассказать, пользуются куда меньшей известностью.


              Читать дальше →
            • Нахождение числа комиссий, «рисовавших» целые значения явки на президентских выборах РФ 2018 года

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

                У распределений даже стали появляться свои имена. Это и «борода Чурова» для выборов 2011, и «пик Володина» для знаменитых 62.2% в Саратове. Поскольку до сих пор даже на хабре появляются статьи, не знакомые с решением проблемы целочисленного деления и не согласные "добавлять мусор" небольшой случайной добавки в данные, давайте посмотрим на результаты совсем иначе. Мы зайдём к построению графиков с противоположной стороны, где проблемы целочисленного деления вообще нет. И тоже увидим пики на целых значениях.


                Читать дальше →
              • Осторожнее с копипастом: фингерпринтинг текста непечатаемыми символами

                • Translation
                Не хотите читать? Посмотрите демо.

                Символы нулевой ширины — это непечатаемые управляющие символы, которые не отображаются большинством приложений. Н​апример, в э​то пред​ложение я вст​авил де​сять про​​белов н​улевой ширины, вы эт​о замет​или? (Подсказка: вставьте предложение в Diff Checker, чтобы увидеть местоположение символов!). Эти символы можно использовать как уникальные «отпечатки» текста для идентификации пользователей.


                Безусловно, он может здесь быть. И вы никогда не догадаетесь

                Зачем?


                Ну, изначальная причина не слишком интересна. Несколько лет назад я с командой участвовали в соревнованиях по различным видеоиграм. У команды была приватная страничка для важных объявлений, среди прочего. Но в итоге эти объявления стали репостить в других местах, с издевательствами над командой, раскрывая конфиденциальную информацию и командную тактику.
                Читать дальше →
              • Django DB Mailer — простая и удобная батарейка, для отправки почтовых сообщений в вашем проекте

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

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

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

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


                Читать дальше →
              • Введение в алгоритм A*

                • Translation
                При разработке игр нам часто нужно находить пути из одной точки в другую. Мы не просто стремимся найти кратчайшее расстояние, нам также нужно учесть и длительность движения. Передвигайте звёздочку (начальную точку) и крестик (конечную точку), чтобы увидеть кратчайший путь. [Прим. пер.: в статьях этого автора всегда много интерактивных вставок, рекомендую сходить в оригинал статьи.]


                Для поиска этого пути можно использовать алгоритм поиска по графу, который применим, если карта представляет собой граф. A* часто используется в качестве алгоритма поиска по графу. Поиск в ширину — это простейший из алгоритмов поиска по графу, поэтому давайте начнём с него и постепенно перейдём к A*.
                Читать дальше →
              • Генерация фиктивных данных с Mimesis: Часть I

                image

                Mimesis — это библиотека для языка программирования Python, которая помогает генерировать фиктивные данные для различных целей. Библиотека написана с использованием средств, включенных в стандартную библиотеку языка Python, потому не имеет никаких сторонних зависимостей. На данный момент библиотека поддерживает 30 языковых стандартов (в числе которых и русский) и более 20 классов-провайдеров, предоставляющих разного рода данные.


                Возможность генерировать фиктивные, но в то же время валидные данные бывает очень полезна при разработке приложений, которые подразумевают работу с базой данных. Ручное заполнение базы данных представляется довольно затратным по времени и трудоемким процессом, который выполняется как минимум в 3 этапа — это:


                1. Сбор необходимой информации.
                2. Постобработка собранных данных.
                3. Программирования генераторов данных.

                Эта непростая задача по-настоящему усложняется в тот момент, когда требуется сгенерировать не 10-15 пользователей, а 100-150 тысяч пользователей (или иного рода данные). В этой и двух последующих статьях мы постараемся обратить ваше внимание на инструмент, который в разы упрощает процесс генерации тестовых данных, начальной загрузки базы данных и тестирования в целом.

                Читать дальше →
              • Разработка космической стрелялки для android с использованием игрового движка Unity3D


                  Доброго времени суток! В этой статье я хочу поделиться опытом разработки своей игры с использованием игрового движка Unity.

                  Концепция игры заключается в том что вам нужно взять на себя управление звездолетом и уничтожить как можно большее количество метеоритов. На вашем пути будут появляться вражеские звездолеты, которые будут мешать вам и после их уничтожения будут появляться «капсулы» после подбора которых будет доступен новый тип оружия. Игра будет называться Galaxy Desteroid.
                  Читать дальше →
                • Ещё 10 батареек для джанго


                    Продолжаем делиться своим опытом использования полезных батареек для Django.
                    Первая часть
                    Ещё рекомендуем «Сумбурные заметки про python и django» и «Django проект PR Hero: что внутри и полученный опыт».

                    Для Django написано огромное количество пакетов. Из них мы выбрали 10, которые использовали сами в своих последних проектах и которыми остались довольны. Все они есть на PyPI. Они продокументированы и покрыты тестами, где-то больше, где-то меньше. Исключение составляет django-sphinx, о котором отдельно.

                    Читать дальше →
                  • Медиана: точно, иногда точно и почти точно

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



                      Для таких целей подойдет оценка медианы. То есть такая статистика, что половина значений выборки меньше, а половина больше. Более формально: упорядочим значения выборки X=(x_1,..., x_n) по порядку (x_{[1]}, ..., x_{[n]}) и выберем среди них с порядковым номером floor(n/2). У такой оценки есть несколько преимуществ. Она менее подвержена влиянию ошибочных данных, значение всегда будет из того множества, что встречалось в выборке, но есть и неприятные недостатки, главный из них, это сложность подсчета, даже для довольно распространенных распределений не существует общей формулы расчета (точнее есть, но ее сложно применить на практике, смотрите Распределение порядковой статистики).
                      Читать дальше →
                      • +36
                      • 25.2k
                      • 6
                    • Bootstrap 4 вышел в alpha версии

                        image

                        Те кто так или иначе связан с веб разработкой скорее всего знает что такое Bootstrap.
                        Лично я познакомился с фреймворком Bootstrap версии 2.x и он на меня произвел неизгладимое впечатление. Можно было без участия дизайнера получить вполне сносный интерфейс. Встроенный перфекционист ликовал. Можно ругаться, что интернет стал очень уж бутстраповым, но нужно отдать должное, парни, работающие над ним в целом молодцы и делают нужное, а то, что народ ленивый – проблема другая.

                        Сегодня день рождения этого замечательного фреймворка. В свой день рождения был объявлен Bootstrap 4.


                        Читать дальше →
                      • 7 правил создания красивых интерфейсов. Часть 2

                        • Translation


                        Недавно мы в «Я люблю ИП» закончили курсы по дизайну от trydesignlab.com. И это одна из самых важных статей, которую нам посоветовал ментор в процессе обучения. Сегодня мы публикуем вторую часть перевода. Посмотреть все наши работы с курсов можно в ВКонтакте по тэгу #design101@iloveip.

                        Мы говорили о правилах создания чистых и красивых интерфейсов.

                        Вот эти правила:
                        1. Свет падает сверху (Часть 1)
                        2. Сначала черное и белое (Часть 1)
                        3. Увеличьте белое пространство (Часть 1)
                        4. Научитесь накладывать текст на изображения
                        5. Научитесь выделять и утапливать текст
                        6. Используйте только хорошие шрифты
                        7. Крадите как художник

                        Читать дальше →
                      • 12 малоизвестных фактов о CSS

                        Предлагаю читателям «Хабрахабра» перевод статьи «12 Little-Known CSS Facts (The Sequel)». Она совсем недавно была упомянута в дайджесте интересных материалов из мира веб-разработки и IT.

                        Update: немного «шлифанул» перевод напильником. Выражаю благодарность всем неравнодушным читателям.
                        Внимание! Под катом почти 1.5 Мб картинок и много интересных ссылок.

                        Итак, начнём-с…

                        1. В свойстве border-radius можно использовать slash-синтаксис.


                        Об этом уже писалось 4 года назад, но многие новички и даже некоторые опытные разработчики не знают о существовании этой «фишки».

                        Верите или нет, но следующий код валиден:

                        .box {
                          border-radius: 35px 25px 30px 20px / 35px 25px 15px 30px;
                        }
                        

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