Рубрика «Программирование» - 467

Привет, коллеги! Пока блистательный Илон Маск вынашивает амбициозные планы терраформирования Марса, мы интересуемся новыми возможностями, связанными с парадигмой "Infrastructure as Code" и хотим предложить вам перевод статьи об одном из представителей «великолепной семерки» — Terraform. Книга Евгения Брикмана по теме неплохая, но ей скоро год, так что просим высказаться — хотите ли увидеть ее на русском языке

Слово Камалу Мархуби (Kamal Marhubi) из компании Heap.
Читать полностью »

Функциональное программирование с PHP-генераторами - 1

Генераторы классные. Они облегчают написание итераторов, определяя функции вместо создания целых классов, реализующих Iterator. Также генераторы помогают создавать ленивые списки (lazy list) и бесконечные потоки. Главное отличие функции-генератора от обычной функции в том, что обычная может возвращать только один раз (после этого её исполнение прекращается), а функция-генератор в ходе исполнения способна выдавать несколько значений. При этом в перерывах между возвратами исполнение генератора ставится на паузу до следующего запуска. Поэтому генераторы могут использоваться для создания списков с лениво генерируемыми значениями, то есть каждый элемент в списке вычисляется только в момент востребованности.

Читать полностью »

Авторизация для ленивых. Наши грабли - 1

Всем привет!

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

Читать полностью »

Как я уже сказал в своей биографии, это выступление посвящается двум великим людям, которых мы недавно потеряли – Рэнди Сэвидж Мачо Мену и Рональду Рейгану. И ещё недавно умершему парню по имени Буба, который сыграл в «Полицейской академии». Итак, добро пожаловать в искусство троллинга!

Конференция DEFCON 19. «Искусство троллинга». Мэтт «Опенфлай» Джойс - 1

Я думал, что Вы воспримите идею доклада о троллинге как шутку, но Вы встретили это заявление с энтузиазмом, поэтому я расскажу Вам всё, что знаю по этому поводу. Я Мэтт Джойс, известный под прозвищем «openfly», тот, кто умеет троллить людей, доводя их до крайней степени раздражения. Я известен во многих кругах как профессиональный тролль, забанен в системе чатов IRC и Fark, а на видеоконференции Unreal 2004 меня представили как человека, «который забанен практически на каждом сервере и форуме, известном в Интернете». Кроме этого, я работаю над открытым ресурсом федеральной программы облачных технологий, и участвую в создании образов Fonera 2.0n для проекта ChaosVPN.Читать полностью »

Публикую предпоследнюю часть разбора с третьей задачей. До этого выходил разбор первой задачи и второй задачи.

Код к третьей задаче:

    public static double compute(
            double x1, double y1, double z1,
            double x2, double y2, double z2) {
        double x = y1 * z2 - z1 * y2;
        double y = z1 * x2 - x1 * z2;
        double z = x1 * y2 - y1 * x2;
        return x * x + y * y + z * z;
    }

    public static double compute(
            double x1, double y1, double z1,
            double x2, double y2, double z2) {
        Vector v1 = new Vector(x1, y1, z1);
        Vector v2 = new Vector(x2, y2, z2);
        return v1.crossProduct(v2).squared();
    }

    public final static class Vector {
        private final double x, y, z;

        public Vector(double x, double y, double z) {
            this.x = x; this.y = y; this.z = z;
        }

        public double squared() {
            return x * x + y * y + z * z;
        }

        public Vector crossProduct(Vector v) {
            return new Vector(
                    y * v.z - z * v.y,
                    z * v.x - x * v.z,
                    x * v.y - y * v.x);
        }
    }

Условие (упрощённо):

Определить, какие методы быстрые, а какие — медленные (JRE 1.8.0_161).

Читать полностью »

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

Массивы, указатели и другие квантовые явления вокруг нас - 1

Этот пост полностью соответсвует своему названию. Для начала в нем будет показано, что вопреки утверждению стандарта, а также классиков языка Си Кернигана и Ритчи, использование индексов массивов соверешенно не равнозначно использованию соответствующих указателей, а выбор эпиграфа будет понятен в самом конце. И да – середина поста тоже не пустая.
Читать полностью »

Есть три типа наследования.

  1. Онтологическое наследование указывает на специализацию: вот эта штука — специфическая разновидность той штуки (футбольный мяч — это сфера и у неё такой-то радиус).
  2. Наследование абстрактного типа данных указывает на замещение: у этой штуки такие же свойства, как у той штуки, и такое-то поведение (это принцип подстановки Барбары Лисков).
  3. Наследование реализации связано с совместным использованием кода: эта штука принимает некоторые свойства той штуки и переопределяет или дополняет их таким-то образом. Наследование в моей статье «О наследовании» именно такого и только такого типа.

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

Часто для наследования в ООП приводят контрпример отношений между квадратом и прямоугольником. Геометрически квадрат — это специализация прямоугольника: все квадраты — прямоугольники, но не все прямоугольники — квадраты. Все s в классе «Квадрат» являются прямоугольниками s, у которых длина равна ширине. Но в иерархии типов это отношение обратное: вы можете использовать прямоугольник везде, где используется квадрат (указав прямоугольник с одинаковой шириной и высотой), но нельзя использовать квадрат везде, где используется прямоугольник (например, вы не можете изменить длину и ширину).
Читать полностью »

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

Я попытался объяснить всё в деталях и оставить код максимально простым, насколько это возможно. Если у вас возникли вопросы, предложения или какие-либо проблемы, пожалуйста, оставьте комментарий или создайте таску на GitHub. Исходный код доступен в репозитории.

Минимальный multiboot загрузчик - 1

Читать полностью »

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

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

Эти истории описаны в моей последней книге и в журнале Linux, в номере за декабрь 2012 года, они касаются технологии Интернет-атак. С тех пор прошло 6 лет, и я, наконец, получил возможность написать об этом. Это интересно, потому что технология ботнета даёт Вам возможность завоевать конкурентное преимущество в бизнесе и осуществить стратегическое проникновение в систему. Вы не хотите об этом никому рассказывать, потому что это Ваш торговый секрет. Поэтому, если Вы хотите взглянуть на это с другой точки зрения, прочитайте старые экземпляры журнала Linux. Я пишу там немного иначе, чем буду Вам сегодня рассказывать.Читать полностью »

Привет. Некоторое время назад решил разобраться, что такое стеганография, в чем её смысл и какая она бывает. И спустя несколько ссылок наткнулся на интересную статью про хэш-стеганографию. Возник вопрос — а почему бы не попробовать реализовать такой способ передачи на практике? Для начала — в виде proof of concept.
image

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js