Социальные нормы потребления электричества

Отличную идею придумало правительство во главе с незабвенным нашим Дмитрием Анатольевичем — социальные нормы потребления электричества. Сама идея проста как дважды два — смотрим среднее потребление электричества по региону, берем за него текущую цену, а остальное, что народ нажжет, в полтора-четыре раза больше.

По замыслу этих славных товарищей, бесконечно далеких от народа, большая часть людей будет получать электричество по обычной цене, а остальные за тройной счет. Ибо нефиг электричество тратить, мало его осталось, на всех не хватает. Не ты, чувак, и не твои предки электростанции строили, а лично Чубайс собака в поте лица вкалывал по 30 часов в сутки сразу после войны под чутким руководством Сталина, затем Хрущева, а после Брежнева с Горбачевым.

Социальные нормы потребления электричества

Как определять пайку каждому человеку российскому, чтоб не обидно никому было — непонятно. Идея-то пришла, а палец, откуда они эту идею высосали, кончился, видимо. Напрягли тогда тугой череп власть держащие и решили поставить ЭКСПЕРИМЕНТ над народом: установить норму потребления электричества в 50-70КВт на пару месяц в самых нищих районах России-матушки и посмотреть кто сколько потребляет.

Задумайтесь на пару секунд: что будет делать не самый богатый народ, чтоб за эту норму не выскочить ненароком?

ПРАВИЛЬНО! Он будет экономить на всем, вплоть до зажигания лучин и сидения в полной темноте по вечерам.

Представим, что будет дальше: эксперимент прошел, наверх ушла бумага о потреблении электричества в данном регионе. Правительство посмотрит на отчет и подумает — АГА, тут потребление электричества всего 10КВт на душу. Почешет задумчиво нимб и сделает 10КВт для всей России нормой. Ловко, а? Ну это же профит в чистом виде!

Поэтому, уважаемые жители тех регионов, где проводят сейчас этот эксперимент — жгите как можно больше электричества! Я вас очень прошу! Остальные регионы будут вам только благодарны.

Основы библиотеки PIXI.js

Библиотека PIXI.js предназначена для вывода 2D графики с помощью javascript. Она может работать с двумя типами рендеров: Canvas и WebGL.

В этой библиотеке вся сцена представлена деревом элементов, которые присоединены к объекту типа Stage. Это root для всех элементов сцены. Отрисовка начинается с него и проходит по всем детям этого объекта в прямом порядке.

Базовый «кирпичик» сцены — объект типа DisplayObject. Он содержит: 2D позицию, поворот, масштаб, прозрачность, цвет.

Набор элементов типа DisplayObject можно объединить с помощью DisplayObjectContainer. Это наследник от класса DisplayObject с поддержкой добавления и удаления детей.

Примитивное создание сцены PIXI.js выглядит так:

function createScene() {
    var stage = new PIXI.Stage();
    var container = new PIXI.DisplayObjectContainer();
    var object = new PIXI.DisplayObject();

    container.addChild(object);
    stage.addChild(container);

    return stage;
}

Класс DisplayObject, по сути, бесполезно использовать напрямую, он не содержит никакой визуальной информации. Самый часто используемый класс на базе DisplayObject — это класс Sprite. Он представляет собой наследника от DisplayObject и добавляет к нему текстуру и выбор режима отрисовки этой текстуры.

Для задания текстуры используется класс BaseTexture. Это другой базовый «кирпичик» библиотеки PIXI.js. Он является простой оберткой над изображением. Содержит в себе размер этого изображения, ссылку на источник и загруженные данные типа Image.

Таким образом создание простой сцены теперь выглядит так:

function createScene() {
    var stage = new PIXI.Stage();
    var texture = new PIXI.BaseTexture("image.png");
    var sprite = new PIXI.Sprite(texture);
    stage.addChild(sprite);
    
    return stage;
}

Следующим по списку, но не по значению, идет класс Texture. Он содержит в себе ссылку на BaseTexture и прямоугольник, который задает видимую область BaseTexture.

С помощью класса Texture можно создавать такой полезный объект как текстурный атлас. Для этого необходимо загрузить изображение с помощью BaseTexture, а затем создать на его основе множество мелких объектов типа Texture со ссылкой на базовую текстуру и прямоугольник. Таким образом достигается уменьшение объема используемой памяти и увеличение скорости работы.

function createTextures() {
    // загружаем изображение размером 1024x1024
    var atlas = new PIXI.BaseTexture("atlas.png");
    // левая верхняя часть размером 512x512
    var textureLT = new PIXI.Texture(atlas, new Rectangle(0, 0, 512, 512);
    // правая верхняя часть размером 512x512
    var textureRT = new PIXI.Texture(atlas, new Rectangle(512, 0, 512, 512);
    // левая нижняя часть размером 512x512
    var textureLB = new PIXI.Texture(atlas, new Rectangle(0, 512, 512, 512);
    // правая нижняя часть размером 512x512
    var textureRB = new PIXI.Texture(atlas, new Rectangle(512, 512, 512, 512);
}

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

На этой радостной ноте закончу описание PIXI.js. Спасибо за внимание. Как всегда ваши комментарии и угрозы вопросы вы можете оставлять прямо здесь.

Самая маленькая программа на C/C++, которая вызывает segmentation fault

Самый маленький код, который после компиляции с помощью gcc вызывает segmentation fault:

main;

Компилируем:

$ gcc crash.c
crash.c:1: warning: data definition has no type or storage class

Запускаем:

$ ./a.out
Segmentation fault

Увидел не так давно на хабре, делюсь.

Личный блог Евгения Жирнова