Archive Июль 2014

Прорвало… (18+)

Женщина с младенцем
        на земле сырой,
Что с тобой, не уж то
        страшно нам с тобой?
Страшно, что все это
        люди вдруг творят.
Страшно, что убийства
        по земле плодят.

Что ты смотришь мирно,
        это не игра!
Женщина с младенцем
        была сожена.
Он не понял точно,
        почему, за что?
И последни вздох свой
        сделал уж давно.

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

Почему скажите,
        руки здесь в крови
У того, кто якобы,
        не хотел войны?
У того, кто борется
        за «Евросоюз»?
И руками в грудь
        стучит, говоря «Борюсь»?

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

Не простит вам
        это не одна страна,
Ведь не вами — Богом
        жизнь была дана.
Не увидев света
        вами забрана
Чистая надежда
        одного двора.

Женщина с младенцем
        на земле сырой,
Что с тобой, не уж то
        страшно нам с тобой?
Страшно, что все это
        люди вдруг творят
Но трубы провосудия
        скоро прозвучат!

(18+) Читать далее

Парк развлечений «Динозаврик»

Каждый раз, когда приближается какая-либо знаменательная дата для вас или вашей семьи, хочется её отметить, и отметить её так, чтобы запомнилось надолго. Сделать это не просто, особенно если надо организовать это для всей семьи, и, по возможности, не дома. В этом году мы решили отметить годовщину втроем: я, муж и сын (трех лет). Так как на дворе лето, то, естественно, хочется куда-нибудь выехать. Возник вопрос — куда? Ехать к речке и комарам хотелось не сильно. Сын ещё маленький для ночевок в палатке, да и погода этим летом очень переменчива. Перебрав много вариантов, находящихся недалеко от города Магнитогорск, мы решили узнать, как можно отдохнуть в парке развлечений «Веселый Дино». Решение было принято потому, что по описанию это место должно было подойти для отдыха как детям, так и взрослым.
Чтобы организовать отдых, мы зашли на сайт, познакомились с информацией и позвонили по указанному телефону. Надо отдать должное, телефон на сайте указан не «мертвый». Нам ответил администратор, узнал о наличие свободных номеров и проконсультировал о том как нам их забронировать.
Читать далее

У кого что болит…

С Ленты:

Член фракции ЛДПР Роман Худяков нашел порнографию в 100-рублевой купюре. Об этом сообщает газета «Известия».

Парламентарий уже направил письмо председателю Центробанка Эльвире Набиуллиной, напомнив, что в соответствии с законом о защите детей от вредной информации на купюрах должна быть маркировка «18+».

В документе, который попал в распоряжение газеты, Роман Худяков отмечает, что на 100-рублевой купюре изображены «интимные части тела фигуры» Аполлона на крыше Большого театра в Москве, поэтому он не отвечает требованиям закона номер 436-ФЗ «О защите детей от вредной информации».

Воистину, права народная мудрость — у кого что болит, тот о том и говорит.

Как задать и использовать константу в виде коллекции на Pl/SQL.

Иногда в реальных задачах необходимо в константах хранить какую-либо коллекцию. На языке pl/sql просто создать коллекцию и перечислить через запятую данные, которые она будет содержать, нельзя. Такое возможно только с массивами, у которых строго задан размер и тип элементов. Если же возникла необходимость сделать предопределенную коллекцию-константу, то в этом случае её не получится проинициализировать простым перечислением данных. Чтобы проинициализировать коллекцию–константу, необходимо задать функцию, которая вернет заполненную коллекцию для присвоения её в указанную переменную. Выглядеть это будет примерно так, как показано ниже.

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

subtype typeActionName is varchar2(50);                      -- Тип: Код действия
type typeActionCol is table of typeActionName                -- Тип: Список действий   
  index by varchar2(200);

cOperSetDefault       constant typeOperName:= 'SetDefault’;        
cOperUndoDefault      constant typeOperName:= 'UndoSetDefault';       
cOperChangeParam      constant typeOperName:= 'ChangeParam';      
cOperClose            constant typeOperName:= 'CLOSE';          
cOperOpen             constant typeOperName:= 'UNCLOSE';        
cOperDelete           constant typeOperName:= 'Delete';              
cOperAddItem          constant typeOperName:= 'AddItem';          

function setActionCollection  return typeOperCol;            --функция задания массива кода операции и имени операции

ActionCollection constant typeOperCol:= setActionCollection;  --список действий пользователя

function setActionCollection return typeActionCol
  is
    pOperCol  typeActionCol;
  begin
    pOperCol(cActionSetDefault)    := 'Установить параметры по умолчанию'; 
    pOperCol(cActionUndoDefault)   := 'Вернуть параметры, которые были до сброса';    
    pOperCol(cActionCloseAgree)    := 'Закрыть соглашение';
    pOperCol(cActionOpenAgree)     := 'Открыть соглашение';
    pOperCol(cActionChangeParam)   := 'Изменить значение параметров;
    pOperCol(cActionDelete)        := 'Удалить элемент';      
    pOperCol(cActionAddItem)       := 'Добавить элемент';  
    return  pOperCol;                             
  end;

Таким образом можно задать коллекцию, содержащую данные любого составного типа. В зависимости от типа будет меняться только функция его заполнения (либо усложнятmся, либо упрощаться). После того, как мы объявили свою константу, возникает вопрос: как выполнить какие-либо операции при помощи данных, которые мы проинициализировали? Если рассматривать коллекцию, которую я привела выше, то для обхода её потребуется массив индексов.

type typeColkeys is varray(7) of typeOperName;

--массив для индексации действий
    Collectionkeys typeColkeys  := typeColkeys (cActionSetDefault, cActionUndoDefault, cActionCloseAgree, cActionOpenAgree, cActionChangeParam, cActionDelete, cActionAddItem);

А после этого можно будет пройти по коллекции циклом и выполнить необходимые вам операции.

    FOR i IN 1..ActionCollection.count loop
        --выполняем необходимые операции
        --Collectionkeys(i) – это будет код действия пользователя 
        --ActionCollection(Collectionkeys(i)) –это будет заголовок действия 
    end loop;  

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