Школоло / Говнокод #23898 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
unit Shaker;

interface

uses Windows, SysUtils, StrUtils, Math, Graphics;

type
  TShakeFlags=(sfStyle, sfSize, sfColor);
  TShakeOpts=set of TShakeFlags;

function ShakeString(const Text:string; Options:TShakeOpts=[sfColor]):string;

implementation

function ShakeString(const Text:string; Options:TShakeOpts=[sfColor]):string;

function SetFontStyle(const Src:string):string;
const
  Styles:array[0..5] of string=('[u]%s[/u]','[i]%s[/i]','[b]%s[/b]','[s]%s[/s]','[code]%s[/code]','%s');
begin
  Randomize;
  Result:=Format(Styles[RandomRange(0,4)], [Src]);
end;

function SetFontSize(const Src:string):string;
const
  Sizes:array[0..3] of string=('[size=10]%s[/size]','[size=15]%s[/size]','[size=20]%s[/size]','%s');
begin
  Randomize;
  Result:=Format(Sizes[RandomRange(0,4)], [Src]);
end;

function SetFontColor(const Src:string):string;
const
  Colors:array[0..3] of string=('[color=red]%s[/color]','[color=blue]%s[/color]','[color=green]%s[/color]','%s');
begin
  Randomize;
  Result:=Format(Colors[RandomRange(0,4)], [Src]);
end;

var
  S:string;
  I:Integer;
begin
  Result:='';
  for I:=1 to Length(Text) do
  begin
    S:=Text[I];
    if not (Text[I] in [#32,#9,#13,#10]) then
    begin
      if sfStyle in Options then
      S:=SetFontStyle(S);
      if sfSize in Options then
      S:=SetFontSize(S);
      if sfColor in Options then
      S:=SetFontColor(S);
    end;
    Result:=Result+S;
  end;
end;

end.

Функция для "взбалтывания" текста.

Запостил: doctor_stertor doctor_stertor, (Updated )

Комментарии (87) RSS

  • var shakeFlags = {
      STYLE: ['%s','%s','%s','%s','
    %s
    ','%s'], SIZE: ['%s','%s','%s','%s'], COLOR: ['%s','%s','%s','%s'] }; var id = x => x, fconst = x => y => x; function shake(choices, str) { var choice = choices[Math.random() * choices.length | 0]; return choice.replace(/%s/g, fconst(str)); } function shakeString(text, options) { if(!options || !options.length) options = [shakeFlags.COLOR]; var transform = options.reduce((f, choices) => str => f(shake(choices, str)), id); return text.replace(/./g, ch => /\s/.test(ch) ? ch : transform(ch)); } // shakeString('pituh', [shakeFlags.STYLE, shakeFlags.SIZE, shakeFlags.COLOR])
    Ответить
    • Ну и более компактная версия, когда все флаги взведены:
      function shakeString(text) {
        function shakeChar(c) {
          if(/\s/.test(c)) return c;
          return [
            ['%s','%s','%s','%s','
      %s
      ','%s'], ['%s','%s','%s','%s'], ['%s','%s','%s','%s'] ].reduce(function(c, choices) { var choice = choices[Math.random() * choices.length | 0]; return choice.replace(/X/g, t => c); }, c); } return text.replace(/./g, shakeChar); }

      Добавил кнопку [shake] с такой функциональностью в свой юзерскрипт, проверь.
      Ответить
    • Теперь нужно пилить us делающий текст, как положено на ГК: однотипным и зелёным 🙂
      Ответить
  • Вообще, мой внутренний перфекционист рыдает из-за того, что здесь не учтена возможность одновременного использования i/b/s/u, а также одновременных разноцветных s/u/текста.
    Ответить
    • Вот как-то так, пожалуй. У меня очень туго с алгоритмами, особенно в строки.

      function SetFontStyle(const Src:string):string;
      function AlreadyUsed(Arr: array of Integer; Value:Integer):Boolean;
      var
        I:Integer;
      begin
        Result:=False;
        for I:=Low(Arr) to High(Arr) do
        if Arr[i]=Value then
        begin
          Result:=True;
          Exit;
        end;
      end;
      
      const Styles:array[0..5] of string=('%s','[\i]%s[\/i]','[\b]%s[\/b]','[\s]%s[\/s]','[\code]%s[\/code]','%s');
      var
        I,R:Integer;
        Arr:array of Integer;
      begin
        Finalize(Arr);
        Result:='';
        R:=RandomRange(0,6);
        Result:=Format(Styles[R], [Src]);
        SetLength(Arr, Length(Arr)+1);
        Arr[Length(Arr)-1]:=R;
        while Length(Arr) < RandomRange(1,5) do
        begin
          R:=RandomRange(0,6);
          if AlreadyUsed(Arr, R) then Continue;
          SetLength(Arr, Length(Arr)+1);
          Arr[Length(Arr)-1]:=R;
          Result:=Format(Styles[R], [Result]);
        end;
      end;
      Ответить
      • Я бы посоветовал вместо списка использованных позиций ввести массив булевых значений.
        Тогда бы учёт использованного был бы не
        SetLength(Arr, Length(Arr)+1); Arr[Length(Arr)-1]:=R;,
        а Arr[R] := True;
        А проверка на использованность - не AlreadyUsed(Arr, R), а просто Arr[R].

        Кстати, перебирайтесь на JS. Можно будет свой код сразу встраивать в страничку с ГК.
        http://learn.javascript.ru/

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

        P.S. Надо ещё цветами поиграть, чтобы разные были у текста и пере- и подчёркиваний.
        Ответить
        • А если хочется спамить с кучи учеток через прокси, что надо сделать? Хуйца соснуть?
          Ответить
          • Смотря что прокси умеет. Если прокси будет знать учётки, можно делать
            GET my.sweet.proxy/spam?username=g0_pitux&comm=400000&text= spam
            Ответить
                • Но ведь для упомянутой сёмой задачи потребуется много проксей на разных айпишниках. И вряд ли ты будешь для этого поднимать 100500 специализированных проксей сам.

                  З.Ы. Или будет одна локальная, а она уже зароутит на настоящие?
                  Ответить
                  • > Или будет одна локальная, а она уже зароутит на настоящие?

                    Так это уже не на JS) Ну разве что на ноде сделать прокси, которое юзает другие проски, и знает все куки для тысячи аккаунтов, а id юзера из-под которого ты хочешь запостить, передавать в томже урле аякс-запроса &user_id=5528

                    Но строго говоря, это слишком специально, чтобы сказать "на js тоже так можно". В общем случае действительно придётся соснуть хуйца, по сравнению с каким-нибудь пистоном для данной задачи.
                    Ответить
                  • Собрать ботнет и спамить через него, ну или искать в инете список открытых прокси
                    Ответить
                  • >>> хочется спамить с кучи учеток через прокси
                    > для упомянутой сёмой задачи потребуется много проксей на разных айпишниках
                    Для упомянутой задачи подойдёт самописный прокси для ГК, который умеет что-нибудь постить.

                    Если расширять задачу до проксей на разных айпишниках, то спецпрокси для ГК будет общаться с ними.
                    Ответить
                • А, то есть в дополнении к Js нужно еще писать бекенд? Так это уже не JS будет. У меня была такая идея, щелкаем +/- много раз, а бэкенд минусует с разных акков.
                  Ответить
                  • > Так это уже не JS будет.
                    Почему не JS? Node.js призван работать с сетевой питушнёй.
                    Ответить
                    • Причем node даже более качественная (чем питончик), кроссплатформенная питушня для серьезного асинхронного IO, ибо libuv.
                      Ответить
                      • >кроссплатформенная питушня для серьезного асинхронного IO
                        А в питоне его нет?
                        Ответить
                        • Есть pyuv, но в node он изкаробки.

                          Хотя, если по чесноку, то надо читать как сделали asyncio в cpython: может быть там тоже всё не так плохо
                          Ответить
                          • >надо читать как сделали asyncio в cpython
                            Почитай, может для себя что нового откроешь. Ах, да, ты же админ.
                            Ответить
                            • Когда я последний раз читал про asyncio там была реализация только с epoll.
                              Но уже стало лучше:
                              https://docs.python.org/3/library/asyncio-eventloops.html
                              https://docs.python.org/3/library/selectors.html#module-selectors

                              SelectorEventLoop based on the selectors
                              ProactorEventLoop using “I/O Completion Ports”

                              BaseSelector
                              +-- SelectSelector
                              +-- PollSelector
                              +-- EpollSelector
                              +-- DevpollSelector
                              +-- KqueueSelector


                              Т.о. покрыты все основные оси. Не покрыты ports в Solaris видимо (libuv вроде их умеет), но на солярку всем похуй
                              Ответить
                              • А когда ты про него читал? До того как его включили в либу питона?
                                Ответить
                                • Да, мне кажется еще про tulip читал.
                                  Однако же я вижу что IOPC писали еще в PEPе, так что вероятно я читал какое-то неправдивое говно.
                                  Ответить
      • Бля, сколько раз уже обещал себе не кодить ночью - наебал опять, сучка.
        Ответить
    • ну ты и дегенерат, из сраки уже гной течет, фу блеадь, фу нахуй, а он все равно насаживается на срачло, фу блеадь и кукарекает, кукарекает, как же это здорово в собственных экскрементах ковырятся. фу бля фу нахуй. бггг
      Ответить
  • Куда blink подевал? Пользователи олдовых ФФ негодуют!
    Ответить
  • В коде ошибка - дважды может быть вызван один и тот же тег для соседних букв. Я хз как это исправить.
    Ответить
      • Плюсанул. Интересный вопрос.
        Но в данном случае важнее психология (код воздействует на пользователя), а не математика (критерии псевдослучайности). Так что ближе к ошибке.
        Ответить
        • Было дело, Apple меняли алгоритм случайного воспроизведения музыки в iPod, потому что реальный рандом казался людям не достаточно рандомным.
          Ответить
      • Неэкономно, ибо здесь лимит на кол-во символов. Длинные строки запостить не выйдет.
        Ответить
    • А что если внести в SetFont*** дополнительную переменную с последним выбранным ID?
      Тогда эти функции будут каждый раз гарантированно выдавать новый результат.
      Псевдопаскаль:
      Вариант 1:
      var LastSizeID:int = -1;
      
      function SetFontSize(const Src:string):string;
      const
        Sizes:array[0..3] of string=('%s','%s','%s','%s');
      var id:int;
      begin
        Randomize;
        do id := RandomRange(0,4) while id <> LastSizeID;
        LastSizeID := id;
        Result:=Format(Sizes[id], [Src]);
      end;
      
      Вариант 2:
      function SetFontSize(const Src:string, out LastSizeID:int):string;
      const
        Sizes:array[0..3] of string=('%s','%s','%s','%s');
      var id:int;
      begin
        Randomize;
        do id := RandomRange(0,4) while id <> LastSizeID;
        LastSizeID := id;
        Result:=Format(Sizes[id], [Src]);
      end;
      Ответить
    • // Either String String
      const Right = value => [1, value];
      const Left = value => [0, value];
      const Null = v => !v[0];
      const Run = v => v[1];
      const bind = (f, x) => Null(x) ? x : f(Run(x)); // >>=
      const mcompose = (f1, f2) => x => bind(f2, f1(x)); // >=>
      const compose = (f1, f2) => x => f2(Run(f1(x))); // композиция без эффектов Either
      
      // Элементарный взбалтыватель символа
      function shaker(template, options) {
        return function(text) {
          const id = Math.random() * (options.length + 1) | 0;
          return id >= options.length ?
            Left(text) :
            Right(template.replace(/T/g, options[id]).replace(/X/g, () => text));
        };
      }
      
      // Взбалтыватель символа
      function shakeChar(text) {
        const tagTpl = '[T]X[/T]', colorTpl = '[color=T]X[/color]';
        const colors = ['red', 'blue', 'green'];
        return Run(([
          mcompose(shaker(tagTpl, ['u']), shaker(colorTpl, colors)),
          mcompose(shaker(tagTpl, ['s']), shaker(colorTpl, colors)),
          shaker(colorTpl, colors),
          shaker(tagTpl, ['b']),
          shaker(tagTpl, ['i']),
          shaker('[size=T]X[/size]', ['10', '15', '20']),
        ].reduce(compose))(text));
      }
      
      // Взбалтыватель строки
      function shakeString(text) {
        return text.replace(/./g, shakeChar);
      }
      Ответить
      • Ой, раскрашивание основного текста надо вставить до раскрашивания u/s:
        // Взбалтыватель символа
        function shakeChar(text) {
          const tagTpl = '[T]X[/T]', colorTpl = '[color=T]X[/color]';
          const colors = ['red', 'blue', 'green'];
          return Run(([
            shaker(colorTpl, colors),
            mcompose(shaker(tagTpl, ['u']), shaker(colorTpl, colors)),
            mcompose(shaker(tagTpl, ['s']), shaker(colorTpl, colors)),
            shaker(tagTpl, ['b']),
            shaker(tagTpl, ['i']),
            shaker('[size=T]X[/size]', ['10', '15', '20']),
          ].reduce(compose))(text));
        }
        Ответить
          • Элементарный взбалтыватель (ЭВ, shaker) либо обрамляет текст в один из предложенных вариантов обрамления, либо ничего не делает и сообщает об этом.

            ЭВОВ - ЭВ с одним вариантом.

            Взбалтыватель (shakeChar) - это последовательное применение элементарных взбалтывателей (ЭВ):
            1. ЭВ покраска текста
            2. ЭВОВ тэг u; ЭВ покраска текста при успехе
            3. ЭВОВ тэг s; ЭВ покраска текста при успехе
            4. ЭВОВ тэг b
            5. ЭВОВ тэг i
            6. ЭВ размер

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

            Для отслеживания успеха/неудачи shaker реализован как стрелка Клейсли для монады Either (Left - если ОВ не сработал; Right - если ОВ сработал). shakeChar применяет композицию ЭВ к тексту. Пункты 2, 3 содержат композицию с учётом монадических эффектов, т.к. нужно контролировать, что оборачивание в форматирующий тэг сработало; список ОВ для shakeChar сворачивается с использованием композиции без монадических эффектов, т.к. нужно последовательно применить все имеющиеся преобразования.
            Ответить
  • Мне не живётся с людьми, так, что просто тошно. Нужно что-то менять в этой жизни, перестать быть затравленным зверьком и заявить о себе. Если люди настолько плохо относятся ко мне, нужно нанести ответный удар, показать каково это со стороны.
    Я остался верен себе, своим чувствам, ценностям. Контролировать себя всё сложнее, очевидно, болезнь моя зашла слишком далеко.
    Весь день делал только плохое. Разбил окно из заранее припасённой рогатки, не уступал место в маршрутках. Зайдя в подъезд, дождался, когда появится школьник-второсменник, отнял у него телефон, выбросил его учебники в мусоропровод, потом затащил в подвал, излупил и насильно заставил курить. Ох, и достанется же кому-то дома!..Телефон я потом выбросил(ненавижу сенсоры). На следующий день я купил пачку швейных игл, расплатившись фальшивой купюрой, и поехал в больницу. Я тихонько прокрался к двери оперблока, на ходу доставая иглы из упаковки, натолкал игл в замок и обломил концы. В руках у меня остались обломки - я понял, что это жизни тех, кто не успеет на операцию. Мне стало грустно, я вышел из здания и поплёлся в парк, где поймал трамвай, на котором прокатался до полудня. Я вышел на парковочной станции, так как мое внимание привлекли машины. Томимые жарой механики распивали пиво поотдаль, им явно было не до работы. Оглядевшись, я сразу принялся колоть колёса, получая от этого поистине чудовищное наслаждение. Дверь одного из салонов оказалась незаперта - моим трофеем стала женская сумочка. Порывшись я обнаружил немного мелочи, наиболее существенными из которой оказалиь связка ключей с перочинным ножом в качестве брелка, губная помада и пудреница.
    Ответить
  • Я растерзал сумку, изрезав ее на ремни (нож при этом сломался), зашвырнул обратно, потом жирно накрасил себе губы и расцеловал лобовое стекло, жирно выведя знак "кирпич" и надпись снизу и: "Не уверен - не обгоняй", "С любовью" - на слове "любовью" помада кончилась, пришлось доводить надпись пальцем. Мне удалось остаться незамеченным, я опять поймал трамвай. Выйдя из трамвая, я зашагал во двор панельных строений, зашёл не гадая в ближний подъезд, поднялся на лифте и помочился на лестничной клетке, после чего опять сел в лифт. Но просто покидать лифт мне показалось недостаточно; я остановил его на третьем этаже, расплескал средство для розжига примусов, которое прихватил под лестницей, и чиркнул спичкой... Я бы долго любовался полыхающим пламенем, но тут вспомнил, что нужно идти дальше. Спокойно спустившись по лестнице я покинул это место.
    Уже вечерело. Я заскочил в магазин, прикупив сигареты и несколько банок пива.
    Проходя дворами, я наткнулся на компанию пьяненьких спермотоксикозников и решил к ним присоединиться. Угостив их пивом я вполне сошёл за старшОго. Когда пиво кончилось, я вновь проявил широкий жест; волею Бахуса наши стаканы вновь наполнились. Я накачивал их, пока они не перестали двигаться. Могут не оклематься? Мне плевать. Морщась от брезгливости, я слегка расстегнул штаны на одном овоще, стянул с него трусы, завернул их в целлофан и положил в карман пиджака - ещё пригодится. Покинув моих пьяненьких друзей я зашёл в супермаркет. Убедившись в отвутствии рядом агентов, я продолжил диверсантскую деятельность: раздавил полсотни яиц, проколол пакет с соком и вылил на пол литров пять оливкового масла. Ваааау... Скользко! Теперь, когда супермаркет стал филиалом Ледового дворца, прибыль хозяев, несомненно, увеличится. Не дожидаясь благодарностей, я быстро вышел.
    Ответить
  • Сев в трамвай, я незаметно достал нижнее белье и подкинул его в сумку сидевшей рядом дамочки, одновременно разбогатев на пятьсот рублей. По приезде домой к ней будет много острых вопросов, но меня это никак не касается. Я вышел на следующей.
    Настало утро. Я спустил ноги с кровати и сладко потянулся.
    Наскоро позавтракав и одевшись, я выскочил из квартиры, обдумывая план действий.
    Спускаясь по лестнице, я увидел, как сверкнул глазок соседской двери.
    Настроение сразу испортилось.
    -Развели тут, понимаешь, сексотство, - моему негодованию не было предела. Чиркнув спичкой я раскурил сигарету, подкрался к двери, вплотную приблизил огонек сигареты к пластмассовому глазку и сделал несколько глубоких затяжек, затушив сигарету о глазок.
    Выйдя из подъезда, я свернул за угол к телефону-автомату.
    Сверившись со справочником, я обзвонил несколько школ, каждый раз официальным голосом сообщая о якобы готовящемся покушении, о заложенной бобме, о химической атаке. Не вешая трубку, я быстро ушёл дворами, решив опять устроить набег на супермаркет.
    Накупив в аптеке всевозможных лекарств, я разбросал их на детской площадке; теперь у ребятишек будет достойный реквизит для игры "в доктора". На ум пришёл заголовок в бульварной газете: "Игра в доктора закончилась промыванием желудка" - я горько усмехнулся. Трамвай привёз меня на водную станцию. Портфель за спиной мешал мне, но снимать его мне было лень. Примостившись на одной из лавочек, я стал думать, что делать дальше, пока не вспомнил, что придаёт тяжести моему портфелю: пневматический ппистолет. Ноги сами понесли меня на к этажке. Представившись разносчиком пиццы, я беспрепятственно проник в подъезд а затем и на крышу (люк даже не был заперт).
    Ответить
  • Убив с десяток голубей я решил потренироваться и на более крупной дичи. После нескольких удачных выстрелов я поначалу испугался, но потом вошёл во вкус и стрелял, пока не исзрасходовал весь запас пуль. Подойдя к краю крыши, у меня закружилась голова.
    -Вот бы что-нибудь отсюда сбросить,- сказал я вслух.
    -В чем проблема? Прыгай.
    Я круто развернулся. На крыше я был не один. За трубой сидя на портфеле курил парень лет 16. На пай-мальчика он явно не тянул. Хулиган. Возможно, даже нарик.
    Я сразу понял, что от такого может быть толк.
    Оказалось, что он видел, как я стрелял, но, как он сказал, ему "пофиг".
    -Нельзя же быть таким похуистом, сказал я, и принялся осматривать крышу. Скоро я нашёл огромное колесо, наверно, от Камаза. Неизвестно, зачем его притащили на крышу, но применение ему я уже придумал.
    -Скинем его?
    -Если желаешь...
    Я пытался поднять колесо, но это было мне явно не по силам.
    В конце концов мой однокрышник не вытерпел и стал помогать.
    -Ну, понеслась!..
    Мы столкнули колесо вниз.
    Я видел, как огромная махина переворачиваясь в воздухе пулей летит вниз, ударяется об асфальт и бешено крутясь, сбивает прохожих. Внизу постепенно стали собираться люди.
    Мой новый знакомец тоже молча наблюдал. Я вдруг заметил, что у него стеклянный взгляд.
    -Пора бежать.
    Счёт шёл на секунды.
    (жест лётчиков) Он деланно улыбнулся.
    -А ты?
    -Я призрак летящий на крыльях ночи, - и полился бред.
    Я понял, что в таком состоянии его нельзя оставлять. Было странно, но этот плохиш был мне небезразличен. Мы кое-как спустились, сели в лифт и благополучно поймали трамвай.
    На наше счастье в трамвае было мало людей, мой обсаженный друг не привлекал внимания, но был тем не менее неадекватен.
    Когда мы выходили из трамвая, он описался.
    Ответить
  • -Аааа!!! Да что ты делаешь, еб твою мать!
    Бросив его на пустыре, я сбегал в вечерний магазин, купил немного жратвы и пару бутылок минералки. Я вылил ему на голову полбутылки и заставил выпить.
    Через некоторое время он совсем отрубился. Я был в отчаянии.
    Открыв его ранец я немного порылся, но ничего подозрительного не нашёл. Медикаментов у него при себе не было. Полистав дневник, я узнал, что моего друга зовут Макс и что он в общем-то отличник. Сказать, что я был шокирован - ничего не сказать. Машинально сложив всё барахло обратно в ранец я стал обдумывать план действий. Прошло много времени прежде чем мой друг стал подавать признаки жизни.
    -Ну, как ты?
    -Охуительно.
    -Наверно, мы кого-то зашибли колесом, там люди стояли.
    -Мне похуй. Я, кажется, обтриводнился.
    -Тебе не кажется, ты воняешь, как дерьмо. Что дальше? Надо привести тебя в порядок, нельзя в таком виде.
    После долгих размышлений мы решили купить что-нибудь подходящее. Я сзъездил в ближайший секонд хэнд и привёз Максу недорогие обноски, заставив его переодеться. Он не стесняясь скинул одежду.
    -И не стыдно?
    -Кого стыдиться? Тебя? Он улыбнулся.
    -Я вообще-то пидр.
    -Мне похуй.
    Я пожал плечами.
    Обноски ему очень даже пошли. Небросско, но все же лучше, чем ходить обоссанным.
    -Где живёшь?
    -в России.
    -Я что, шучу с тобой?!
    -Не беси... Дай подумать.
    -Слушай, а дневник твой?
    -Мой.
    -Ты даже больший извращенец, чем я мне сначала показалось.
    -Возможно.
    -Тебя дома не хватятся?
    -Я думаю, что нет.
    Я решил его проводить. Мы рассуждали на абстрактные темы, перескакивая с первого на третье, с пятого на десятое.Я вкратце рассказал ему о своих взглядах на жизнь. Он ни разу не перебил, чем, как ни странно, вызвал у меня досаду(похуй небось?), но оказалось он слушал очень внимательно. У витрины магазина мы остановились, чтобы подать друг другу руку.
    -Мы ещё встретимся?
    Ответить
  • -Как хочешь.
    Мы оба поняли, что просто так уйти не получится.
    -Знаешь, как это делается? - Он замотал кулак тряпицей, и изо всей силы ударил во витрине, пробив стекло насквозь. Завизжала сирена. Мы разошлись по домам.
    С Максом мы подружились. Наша дружба определенно пошла обоим на пользу. Прошло много лет, он - знаменитый актёр, а я... А я перестал быть затравенным зверьком - согласитесь, это неплохо...

    ***
    Ответить
  • Домой возвращался под вечер. Да, черт возьми, мне уже 24 и я студент медшараги. Это ужасно.
    Чтобы хоть как-то разогнать тяжелые мысли, я зашел в бургерную. Накупив с полпакета бургеров, я вышел на остановку, чтобы ловить трамвай. Ждать пришлось долго, но на мою радость вагон был полупустой. Сев и положив пакет рядом, я стал смотреть в окно, на проносящиеся мимо силуэты домов, огни и панельные строения. В трамвае стоял дикий галдёж. Сунув руку в карман брюк, я с величайшим огорчением понял, что наушники забыл дома.
    -Ох, не переводится быдло на Руси, - прошептал я, и стал открывать окно, ловя себя на мысли, что с удовольствием выбросил бы всех болтунов из вагона, причем на полном ходу. На одной из остановок в вагон вошёл неряшливого вида старик, очевидно, выходец из Южной Осетии. Несмотря на обилие свободных мест, этот урод решил сесть рядом. Сидишь один, а занимаешь два места?! - примерно такой была его примитивная логика. Даже не взглянув что под ним, он плюхнул свой зад на мой пакет с бургерами, едва я успел их выхватить. Я вскипел. Захотелось обругать, нагрубить - но я тотчас взял себя в руки, поняв, что так дела не делаются. На защиту быдла тут же встанут его собратья по разуму, а я останусь крайним. Надо играть с быдлом по его же правилам.
    -Осторожнее...
    Старик вышел на следующей, и бодро зашагал по дороге, ещё больше убедив меня в преднамеренности своих гнусных замыслов.
    Наутро я накупил в аптеке презервативов - самых дешёвых. После десятой пачки, молодая фармацевтша расплылась в сладкой, вульгарной улыбке.
    -Чего лыбишься, овца?..
    В общаге с помощью резиновой груши наполнил презики формалином, осторожно упаковал в ранец, предварительно вытряхнув их него всю макулатуру - он стал непривычно тяжелым - и выскользнул за дверь.
    Ответить
  • На занятия я, само собой не пошёл, прокатавшись целый день на трамваях. Я выполнял важную цель (пере)воспитания быдла. Незаметно доставая полупрозрачные "святые дары" из ранца я располагал их на свободных местах и удалялся в конец вагона. Вскакивающие с круглыми глазами люди веселили меня, я без зазрения совести ржал им прямо в лицо.
    -Воспитание... -Вос-пи-та-ни-е. Ну ладно. Пару раз, разложив шары, я начинал истерично кричать, чтобы привлечь внимание народа:
    -Ой, смотрите, кто-то вредит!.. Не садитесь!.. Сарафанное радио сделает своё дело, можно и не сомневаться.
    Наутро я намеренно пришёл на пару раньше обычного. Первой парой была органическая химия. Комнаты - наша и параллельного потоков - были незаперты. Я вошёл, подкрался к столу с реактивами и стянул пузырёк с хлороформом. Подлив хлороформа в спиртовки и флакон со спиртом для заправки их, я был таков.
    -Светя другим - сгораешь сам... Достав носовой платок из заднего кармана, я пропитал его остатками хлороформа и подбросил, вместе со склянкой, под дверь лаборантской. Кому-то точно не поздоровится, но точно не мне.

    [продолжение следует]
    Ответить
  • Прогуливаясь по вечерним улочкам, я заприметил вновь открывшийся магазин медицинской техники. -Это именно то, что мне нужно, - сказал я, почти вслух. Наверняка и лабораторное барахло у них есть. Пообещав себе не забыть вернуться сюда днём, я побежал ловить трамвай. На следующий день, после пар, я вытянул из толстой книги по гинекологии пару розовых, пятисотенных бумажек, решив наведаться в магазин, и выскочил из общаги. Я успел за пару минут до закрытия. Впечатление было потрясающим. Надо сказать, что лабораторную утварь в городе достать очень непросто, а о том, чтобы легально купить реактивы, можно даже не мечтать. От обилия товаров у меня разбежались глаза; едва найдя нужную вещь, я сразу спешил купить ее - вместо того, чтобы сперва выбрать и затем оплатить разом. Неудивительно, что этим решила воспользоваться блондинка-продавщица, ловко обсчитав меня почти на двести рублей. Я обомлел от такой наглости, но тут же взял себя в руки. -Погоди, сука, - сказал я мысленно.- Я не прощаюсь.
    Придя в общагу, я первым делом спрятал приобретения под стол, затем отправился на поиски пропитания.
    ***
    Выждав неделю, я решил снова совершить визит в магазин.
    Купив в одном хозмаге ацетона, в другом - хлорку, а в третьем - пластиковый шланг, я отправился в аптеку за детской резиновой грушей и капельницей. Придя в общагу, я поужинал, затем запер дверь, открыл окно и приступил к изготовлению зелья.
    Ответить
  • Первым делом я отмерил в мерной колбе ацетона, добавил хлорки и стал перегонять смесь под спиртовкой. Очень скоро ядовитые испарения стали щипать глаза, когда это стало нестерпимым, я прекратил опыт. Получилось с полшприца дистиллята. Максимально аккуратно наполнив грушу, я аккуратно откусил от капельницы всё лишнее, оставив только шланг. Его я пропустил в брючину - так чтобы один конец шланга был в кармане (который я специально надрезал), другой же спускался по брючине вниз, до подошвы, не стесняя движений. Прикрепив грушу к шлангу, я застегнул штаны, погасил свет и спокойно вышел из комнаты. Я без происшествий добрался до пункта назначения, не создав проблем ни себе, ни пассажирам маршрутки - благо, была зима, и хлорацетон не сильно испарялся.
    Тварь была в магазине не одна. На втором стуле восседала неопрятного вида гусыня, одного с ней возраста. Я попросил продавщицу к витрине и долго водил ее за нос, прося показать то одну, то вторую вещь. Пока она ходила взад вперёд, от моих ботинок чуть натекло; что поделаешь - зима!.. Я походил, размазал лужу, поблагодарил и вышел из магазина.
    Пройдя две-три улицы, я услышал вопли и обернулся. На пороге стояла блондинка. Она кричала и жестикулировала. -Дыши глубже, бедолага, улыбнулся я. Домой шёл пешком.
    -А ты куда смотрела?! - пожалуй, спросит она у своей подруги, та ответит, что ничего подозрительного не заметила. Две дуры. Может, зря я так с ними?..
    Придя в общагу, я на своей шкуре испытал злобу сваренного мною же зелья. Подошвы издавали резкий, удушающий запах, от которого слезились глаза(это несмотря на то, что я всю дорогу шёл по заснеженной дороге!). Кто больший негодяй - я, или те, кто принимает мою открытость за слабохарактерность? А чёрт его знает. Время всё расставит по своим местам.

    [продолжение следует]
    Ответить

Добавить комментарий

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8