vvvvvvvv's Friends [entries|friends|calendar]
vvvvvvvv

[ userinfo | livejournal userinfo ]
[ calendar | livejournal calendar ]

[27 Nov 2022|07:22am]

oort
охото пукоть
post comment

Face to Face with Communism, 1951 [26 Nov 2022|11:23pm]

oort
https://www.youtube.com/watch?v=h_jbMrXcVmw

Creator(s): Department of Defense. Department of the Air Force. (09/26/1947 - ) (Most Recent)

Series : Armed Forces Information Films, compiled 1950 - 1977
Record Group 111: Records of the Office of the Chief Signal Officer, 1860 - 1985

Scope & Content: This film tells the story of an airman, in town on furlough, who discovers an entire town has been taken over by Communists. He later found out the experience had been staged by the citizenry to show what could happen in such an event.
post comment

Lazarus, встроенный парсер командной строки. [27 Nov 2022|12:04am]

hex_laden
Преамбула


В Lazarus есть довольно неплохой парсер командной строки, который (почти) работает из коробки.

Для его использования нужно создать приложение на базе класса TCustomApplication, который обладает таким функционалом. Готовый шаблон проекта имеется в комплекте. Проект --> Создать проект... и в появившемся окне выбрать тип проекта Консольное приложение:



Можно ввести параметры для генерации кода:



Основной код приложения размещается в процедуре DoRun, например, в procedure TMyApplication.DoRun;

Решил расширить пример с поиском файла по маске (копия), заодно поэкспериментировать с парсером командной строки.

Параметры будут такие:

Использование: smallfinder.exe <аргументы>
-h - эта помощь
-m <маска> - маска файла для поиска. Обязательный параметр
-d <директория> - Начальняя директория, если параметр не указан, используется текущая.
-s - включить в поиск подкаталоги


Анализ параметров командной строки


Примечание: весь код в процедуре TSmallfinder.DoRun.

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

// check if no parameters - способ из документации нихуя не сработал
if ParamCount=0 then begin
	WriteHelp;
	Terminate;
	Exit;
end;


Но далее все вроде бы пошло как надо, единственное, что параметры регистрозависимые (т.е. -d и -D программа воспринимает как разные параметры), пока не стал с этим разбираться, может после, если сильно надо будет. Длинные имена параметров не использовал, только короткие.

Вывод помощи:

//help
if HasOption('h', '') then begin
	WriteHelp;
	Terminate;
	Exit;
end;


Процедуру WriteHelp можно создать при создании нового проекта, а потом только запомнить, примерно так:

procedure TSmallfinder.WriteHelp;
begin
  writeln('Usage: ',ExtractFileName(ExeName), ' <arguments>');
  WriteLn('-h - this help');
  WriteLn('-m <mask> - file mask for search. Parameter must be!');
  WriteLn('-d <directory> - start directory. If not, use current dir.');
  WriteLn('-s - include subdirs');
end;


Маска файла:

//mask
if HasOption('m','') then begin
	Mask:=GetOptionValue('m','');
	if Mask = '' then begin
		WriteHelp;
		Terminate;
		Exit;
	end;
end;


Стартовый каталог:

//start directory
StartDir:=GetOptionValue('d','');
if StartDir='' then begin
	StartDir:=GetCurrentDir();
end;


Искать в подкаталогах:

//Include subdirs
IncludeSubdirs:=HasOption('s','');


Ну и сам процесс поиска, до кучи:

WriteLn('Start directory: ',StartDir);
lstFiles := TStringList.Create;
FindAllFiles(lstFiles, StartDir, Mask, IncludeSubdirs);
i:=0;
while i < lstFiles.Count do begin
	WriteLn(lstFiles[i]);
	inc(i);
end;
lstFiles.Free();


Естественно, все нужные переменные перечисляем в секции var процедуры TSmallfinder.DoRun

var
   Mask, StartDir:string;
   IncludeSubdirs:boolean;
   i:LongInt;
   lstFiles:TStringList;


Примеры работы


smallfinder.exe -m *.exe -d C:\Windows



smallfinder.exe -m *.exe -d C:\Windows -s



smallfinder.exe -m *.exe



Ссылки


Мануал по обработке параметров командной строки
Пример целиком на GitHub

Это репост с сайта http://tolik-punkoff.com
Оригинал: https://tolik-punkoff.com/2022/11/27/lazarus-vstroennyj-parser-komandnoj-stroki/
4 comments|post comment

Грани XX века. Ночь. [26 Nov 2022|10:01pm]

steinkrauz

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


Смотрим дальше... )
1 comment|post comment

продолжаю класть хуй на тестирование [26 Nov 2022|11:41am]

ketmar
поскольку собираюсь менять хэш на sparse arrays, то и гоняю их реализацию в fuzzy. потому что практика неоднократно доказывала, что если основная структура данных стабильна, то на тесты всего остального можно смело забить: не окупается. точно так же нет смысла делать что-то кроме fuzzy: тесты, подвязаные к специфике реализации, нужны только затем, чтобы бесполезно потратить кучу времени, и потом никогда больше не менять дизайн кода, даже если он откровенно неудачный — потому что от одной мысли, что надо опять писать кучу сраных тестов под него, весь энтузиазм заканчивается.

конечно, заваливание кода рандомами не обнаружит всё. но если оставить тестер крутиться несколько дней — то этого обычно достаточно, чтобы быть увереным в стабильности. оно, натурально, медленно — потому что рядом ведётся параллельная структура данных, и оригинал после каждого шага проверяется на консистентность (а гоняется всё под валгриндом); но никто никуда ведь не спешит.
2 comments|post comment

Lazarus: Транслит строки (в консоли) [26 Nov 2022|03:45am]

hex_laden
1. Понадобятся модули regexpr и fgl:

uses regexpr, fgl;

regexpr нужен для небольшой оптимизации, a fgl - для создания аналога словаря (Dictionary).

2. Создаем тип для будущего словаря:

type
  TDictTrans=class(specialize TFPGMap<string, string>);


Документация по TFPGMap

3. Сделаем функцию для транслитерации, с одним параметром, входной строкой с русскими буквами:

function Translit(Str:string):string;
//тут будет код
end;


4. Заводим внутренние переменные функции:

var Regex:TRegExpr;
Dict:TDictTrans;
Ch,oStr,oTrans:string;
I:LongInt;


Regex - экземпляр класса для работы с регулярным выражением.
Dict - словарь для транслитерации.
Ch - транслитерируемый символ
oStr - выходная строка
oTrans - сюда будем возвращать результат транслита отдельного символа.
I - счетчик цикла, в котором будем анализировать строку.

Небольшая оптимизация


Создаем новое регулярное выражение для кириллицы (и пробела) и проверяем входную строку на наличие русских букв. Если их нет - возвращаем исходную строку и выходим из функции:

Regex:=TRegExpr.Create;
Regex.Expression:='[А-Я]|[а-я]|\s';
if not Regex.Exec(Str) then begin
   exit(Str);
end;


5. Заполняем словарь (транслит взят из старого армейского учебника времен СССР, можете сделать свой):

Dict:=TDictTrans.Create;
Dict.Add(' ','_');
Dict.Add('А','A'); Dict.Add('а','a');
...
Dict.Add('Я','JA'); Dict.Add('я','ja');


Словарь целиком на PasteBin

6. Инициализируем переменные, используемые в цикле:

Ch:=''; oStr:='';

7. Заводим цикл for, нумерация символов в строке идет с 1, длина строки получается функцией Length(Str):

for I:=1 to Length(Str) do begin
...
end;


8. В цикле получаем символ из строки:

Ch:=Copy(Str,I,1);

9. Пробуем получить данные из словаря по ключу, которым является русская буква. Если это удалось, присоединяем результат транслита к выходной строке, если нет - это не русская буква, присоединяем исходный символ к выходной строке:

if Dict.TryGetData(Ch, oTrans) then begin
	oStr:=oStr+oTrans; //russkaya bukva - transliteriruem
end
else begin
	oStr:=oStr+Ch; //nerusskaya bukva, ostavlaem v pokoe
end;


10. Освобождаем память словаря после цикла:

Dict.Free;

11. Возвращаем результат работы функции:

exit(oStr);

Функция целиком на PasteBin

12. Код основной программы:
var
    strInput, strOutput:string;
...
begin
  Write('Input string:'); ReadLn(strInput);
  strOutput:=Translit(strInput);
  WriteLn(strOutput);
  WriteLn('Press Enter...'); ReadLn();
end.


Для совместимости с русским языком в консоли необходимо добавить директивы компилятора, иначе словарь будет работать неправильно:

program translit;
{$mode objfpc} {H+}
{$codepage CP866}
...


$mode objfpc
H+ - чтоб строки по умолчанию не были ShortString'ами
$codepage CP866 - установка кодовой страницы.

Документация по работе со строками

Проверка




Исходник примера на GitHub

Это репост с сайта http://tolik-punkoff.com
Оригинал: https://tolik-punkoff.com/2022/11/26/lazarus-translit-stroki-v-konsoli/
post comment

Lazarus, поддержка русских букв в консоли (Windows 7) [25 Nov 2022|11:55pm]

hex_laden
Из коробки русские буквы в консоли поддерживаются через жопу:



Это потому что Lazarus по умолчанию создает файл в UTF8, а консоль Windows 7 поддерживает CP 866 (кодировку DOS/OEM), достаточно перекодировать файл:

1. Щелкаем по пустому месту в исходнике в редакторе.

2. Выбираем Параметры файла --> Кодировка



3. В выпадающем списке выбираем CP866:



4. В появившемся окне нажимаем кнопку Изменить файл:



5. ФАНФАРЫ!



Источник
Тестовый пример на GitHub

Это репост с сайта http://tolik-punkoff.com
Оригинал: https://tolik-punkoff.com/2022/11/25/lazarus-podderzhka-russkih-bukv-v-konsoli-windows-7/
2 comments|post comment

Lazarus, регулярные выражения. [25 Nov 2022|08:39pm]

hex_laden
Из коробки доступен мощный класс TRegExpr, вполне себе работает с регулярками. Сожрал даже C#-овскую, без изменения синтаксиса вообще. Пример регулярки для обнаружения русских букв:

program regexptest;
uses regexpr;
var  Regex:TRegExpr;

begin
     Regex:=TRegExpr.Create;
     Regex.Expression:='[а-я]|\s';
     Writeln(Regex.Exec('АБВГ'));
     Writeln(Regex.Exec('ABCD'));
     ReadLn();
end.




Документация
Пример на Киберфоруме

Этот пример на GitHub

UPD: Более лучшая регулярка для поиска кириллицы (и пробела).

[А-Я]|[а-я]|\s

Первая ([а-я]|\s) нормально работает, если формат файла исходника UTF-8, и текст в UTF-8, а вот с консолью в Win7 она работает только на строчных буквах, на заглавных не работает. А консоль требует CP866.

О других косяках кириллицы в консоли - в следующих выпусках нашего журнала.

Это репост с сайта http://tolik-punkoff.com
Оригинал: https://tolik-punkoff.com/2022/11/25/lazarus-regulyarnye-vyrazheniya/
post comment

про мракопедию, я мудак [25 Nov 2022|03:32pm]

ketmar
см. апдейт к предыдущему. надо было не вставать в позу обиженки, а сначала написать Тори. раз публично обосрал, то и публично приношу извинения: был неправ с истерикой.
12 comments|post comment

Lazarus, список каталогов с подкаталогами [25 Nov 2022|01:34pm]

hex_laden
Плохо, что по маске не умеет каталоги искать. А в остальном все просто.



program alldirs;
uses Classes, SysUtils, FileUtil;
var
   lstDirs:TStringList;
   i: Integer;
begin
     lstDirs := TStringList.Create;
     FindAllDirectories(lstDirs,'C:\Windows',true);
     i:=0;
     while i < lstDirs.Count do begin
       WriteLn(lstDirs[i]);
       inc(i);
     end;
     WriteLn ('Found: ',lstDirs.Count);
     WriteLn ('Press Enter');
     lstDirs.Free();
     ReadLn();
end.


Ссылка на GitHub

Это репост с сайта http://tolik-punkoff.com
Оригинал: https://tolik-punkoff.com/2022/11/25/lazarus-spisok-katalogov-s-podkatalogami/
post comment

жаль [25 Nov 2022|03:28am]

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

upd: мудак в этой ситуации я, потому что стоило не истерить, а сначала связаться с Тори. по итогу он написал мне сам (чего я совершенно не ожидал, и не требовал, конечно), и теперь мне весьма стыдно. оставлю это как очередное назидание самому себе: стирать свои обсёры некрасиво.
6 comments|post comment

Поигрался с Freepascal/Lazarus [24 Nov 2022|09:58pm]

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

Поиск файла


Наконец-то нормальный поиск файла, где маска файла работает как надо (как в DOS) и не принимает, например, расширение *.htm и *.html за одно и то же. C# мне не удалось этому очевидному решению научить, конечно, можно потом по выборке прогнать регулярное выражение, но оно тоже плохо срабатывает, упускает некоторые случаи, например, если имя файла начинается с расширения (т.е. на файл .html оно не сработает):

В Lazarus все работает из коробки:



program testfind;
uses Classes, SysUtils, FileUtil;
var
   lstFiles:TStringList;
   i: Integer;
begin
     lstFiles := TStringList.Create;
     FindAllFiles(lstFiles, 'C:\Temp\Test', '*.htm', true);
     i:=0;
     while i < lstFiles.Count do begin
       WriteLn(lstFiles[i]);
       inc(i);
     end;
     WriteLn ('Found: ',lstFiles.Count);
     WriteLn ('Press Enter');
     ReadLn();
     lstFiles.Free();
end.


Пример и каталог с тестовыми файлами на GitHub

UPD: Ссылка на мануал

Это репост с сайта http://tolik-punkoff.com
Оригинал: https://tolik-punkoff.com/2022/11/24/poigralsya-s-freepascal-lazarus/
6 comments|post comment

иллюстрация тезисов о террористическом государстве [24 Nov 2022|12:45pm]

tiphareth
[ mood | sick ]
[ music | Telemann: Oboe Concertos ]

Очередной патриотический канал в телеге, каких тысячи.
https://t.me/s/BeregTime

-- Нам. Нужен. Террор. Мы неизбежно придем к ответному
террору, системе заложников, уничтожению домов участников
АТО и военнослужащих ВСУ, и тд, и тп. Чем раньше начнем,
тем эффективнее будет. За одного нашего нужно
расстреливать сто украинцев, благо их у нас под 8 тысяч.

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

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

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

Привет

176 comments|post comment

Glory Hole Skills Quest [24 Nov 2022|06:36am]

tiphareth
[ mood | sick ]
[ music | Andrea Coen plays Telemann 100 Menuets ]

а этого я еще не видел
https://twitter.com/Bratt_world/status/1593085562134855680
https://globalnews.ca/news/7204384/coronavirus-glory-holes-sex/
https://globalnews.ca/news/7212403/coronavirus-glory-hole-sex-workers/
https://www.complex.com/life/2020/07/canadian-health-officials-suggest-glory-holes-for-sex-during-covid19
https://slate.com/human-interest/2020/09/glory-holes-pandemic-rise.html

оказывается, одержимые ковидобесием "врачи" из
CDC British Columbia на полном серьезе рекомендовали заниматься
сексом только через дырку в стене, "glory hole".
Не шутка.

И не только CDC British Columbia, много где звучали подобные
советы. Впоследствии целые сообщества гомосеков (гомосеки
в Штатах очень политически ангажированы, и для них игнорировать
ковидобесные рекомендации политически невозможно) перешли
целиком на еблю через дырку в стене, во избежание ковида.

А чего, безумно, конечно, но, если вдуматься, куда менее
безумно, чем ношение масочек.

Привет

43 comments|post comment

Глубинный народ! [24 Nov 2022|03:06am]

tiphareth
[ mood | sick ]
[ music | Деда План Планыч - ШАМБАЛА ШАМАНА ]

Офигенно
https://twitter.com/ru2ch/status/1595057535236481024
https://twitter.com/Ioann199/status/1595149638851444736
Простых русских людей на улицах опрашивают, что надо
делать с украинцами. Простые русские люди: "расчленять,
топить в кислоте, пытать до смерти". Глубинный народ!

И это нихуя не пропаганда, наоборот, пропаганда
подстраивается под глубинный народ, и несет простым
русским людям то, что они желают услышать. Когда ему надо,
глубинный народ срет и ссыт зомбоящику в физиономию.
Скажем, при аналогичном уровне наглого пропагандистского
натиска, истерики на тему ковидобесия случались строго
в образованном сословии (и то по большей части среди
тех же самых людей, которые сейчас пытаются свалить
из сраной). На глубинный народ пропаганда ковидобесия
не воздействовала вовсе. На самом деле влияние пропаганды
небольшое, может, вообще никакого нет. Какая-то часть
пропаганды усваивается сразу, а какая-то отторгается, и
это форма, в которой глубинный народ доносит свое мнение
до власти, которой он раболепно поклоняется.

Привет

102 comments|post comment

Грани XX века. День. [24 Nov 2022|12:11am]

steinkrauz


В Московском Музее Современного Искусства, также известном как MMOMA, в корпусе на Гоголевском, работает на удивление милая выставка, посвященная 125-летию Самарского Художественного Музея. Конечно, на неё не стоит идти с целью увидеть поразительные шедевры. Большая часть работ это просто крепкий училищный уровень, а трупики таланта Удальцовой и Машкова в «зале старых мастеров» навевают грусть и меланхолию. Но если знать куда и как смотреть, можно увидеть много интересного, и я бы даже сказал, захватывающего. Так что давайте пройдёмся по выставке и посмотрим, что там такое найдётся.


Смотреть... )
2 comments|post comment

Lowest Pandemic Mortality in the World [23 Nov 2022|12:17pm]

tiphareth
[ mood | sick ]
[ music | Деда План Планыч - ШАМБАЛА ШАМАНА ]

Хорошее
https://dailysceptic.org/2022/11/08/sweden-wins-country-that-refused-lockdown-and-kept-schools-open-has-lowest-pandemic-cumulative-excess-mortality-in-the-world/
Sweden Wins! Country That Refused Lockdown and Kept
Schools Open Has Lowest Pandemic Mortality in the World

посчитали результаты "локдауна" и "ковида"
по всему миру, смертность в Швеции, где "локдаун"
был минимальный, тоже меньше всего.

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

Привет

89 comments|post comment

про комсомол и торжество великой победы [23 Nov 2022|04:06am]

tiphareth
[ mood | sick ]
[ music | Деда План Планыч - ШАМБАЛА ШАМАНА ]

Смешно
https://twitter.com/EITC_Official/status/1555396215285506048
в Атланте, в частной (дичайше дорогой) школе для идиотов
ввели новый предмет, основы православной культуры
история кпсс курс расовой справедливости, 35 минут
в день.

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

54 comments|post comment

Bauhaus - Double Dare [22 Nov 2022|07:01pm]

oort
https://www.youtube.com/watch?v=F4NmAdaQoD8
post comment

Андрей Вох [22 Nov 2022|06:42pm]

tiphareth
[ mood | sick ]
[ music | Андрей Вох - "Песня о неоставившем следов" ]

Творчество Андрея Воха
http://music.lib.ru/editors/w/woh_a/
http://www.artlib.ru/index.php?id=11&idp=120&fp=2&uid=731&idg=0&user_serie=0
https://rutracker.net/forum/viewtopic.php?t=1750401
https://russianshanson.info/catalog/76
https://proza.ru/2020/01/20/978?ysclid=laso9oq6wj557908678
https://z2.fm/artist/304908

я слушал его альбом "Песня о неоставившем следов"
миллион раз, но ничего про Андрея Воха не знаю.
А кто-нибудь знает? Он из Свердловска, звучит
как любая другая свердловская группа того времени,
где-то посередине между Новиковым и Наутилусом,
но про его связи с рок-клубовской тусовкой
я ничего не слышал. Кто там играл вообще?
Тексты его дичайше своеобразные,
хотя и сродни Кормильцеву, но
влияния не видно, скорее наоборот -
влияние Воха на Кормильцева. Кто-нибудь
знает, какие там тайные пружины, интриги,
расследования? Очень занятно, что человек
с поп-потенциалом того же Наутилуса оказался
настолько глубоко в андерграунде.

В music.lib.ru указано
"аранжировка Герман Конев, Виктор Стельмах",
поиск на "Германа Конева" выдает страничку группы ТОП
https://ru.wikipedia.org/wiki/%D0%A2%D0%9E%D0%9F_(%D0%B3%D1%80%D1%83%D0%BF%D0%BF%D0%B0)
из Свердловска; рок-клубовская группа из
второго-третьего ряда, мне совершенно неведомая.

ПЕСНЯ О ТОМ, КАК Я БЫЛ ВЫНУЖДЕН ЗАЛОЖИТЬ СВОЮ ЮНОСТЬ В ЛОМБАРД

Вот опять над страной бредит месяц март,
Но уже "между нами снега и снега."
Я за трешку сдал юность в необъятный ломбард,
Моя юность пошла с молотка.

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

На себе их катала по ухабам Земля,
Их носили ветра в заскорузлых руках,
Им Господь раздавал, как кресты, векселя,
Чтоб они умирали в долгах.

Чтоб они подустали, сбиваясь с пути,
Средь каких-то неведомых праведных стран,
Где застыли глаголы "прощай" и "прости"
Под наркозом невидимых ран.

На изгибах эпох драка, словно антракт,
Неизбежен притоп, если сделан прихлоп.
Мы шагали не в ногу и пели не в такт.
Мы пронизаны встречным движением в лоб.

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

Мы упали, как камни, и страны водоем
Предоставил нам дно для бездонных затей.
Ослепленные блеском легальных имен
Мы завязли в трясине болотных идей.

Тот приемщик, смеясь, засучив рукава,
Мою юность чинушам на чистку отнес,
И они так усердно отдирали слова
И скрипучие звуки металлических гнезд.

Все старьевщик продал, всю житейскую муть,
Я немногое спрятал в сердечной горсти.
Жизнь не раз и не два предлагала уснуть
И однажды прикажет уйти.

Мимо спящих тиранов и звучных имен,
Мимо темных широких, стальных площадей,
Переулками мимо священных знамен,
Мимо лживых людей, мимо лживых идей;

В белый сад, где деревья застыли в мольбе,
Где прозрачней с годами вода в родниках,
Эту песню я пел о далекой тебе,
О великой любви, о бескрайних снегах

В тайниках человеческих замкнутых душ
Дремлют вещие, вечные, добрые сны.
Я пропил трехрублевый свой мартовский куш
Под бредовую песню весны.

1987

Привет

20 comments|post comment

navigation
[ viewing | most recent entries ]
[ go | earlier ]