• Книга в ДМК-Пресс

    Моя книга про Кложу выходит в издательстве ДМК-Пресс. Ожидаемая дата — середина ноября. Твердый переплет, формат B5 (165x235 мм).

    Внимание: на время предзаказа цена 799 рублей (вместо 999 рублей). С промокодом

    Grishaev_Clojure20
    

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

    Книга почти ничем не отличается от второго издания, что вышло в Ридеро. Исправил опечатки и неточности в коде, на которые указали читатели. Особая благодарность Алексею Иванцову, который не просто нашел ошибки, но и оформил их в виде PR к репозиторию книги. Мне оставалось только нажать кнопку, чтобы их принять.

    Кроме того, собрал и залил исправленные PDF на Gumroad. Если вы уже покупали там, зайдите и скачайте новые файлы. Если нет — самое время купить, цена всего пять долларов.

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

    Во-вторых, приятно, что ДМК-Пресс — издание с долгой историей и богатым списком выпущенных книг. Именно в ДМК девять лет назад вышло “Программирование на Clojure” — тот самый альманах на 800 страниц. Он кстати, почти не устарел, советую прочитать. Вдвойне приятно, что моя книга займет место рядом с ним.

    Что это значит для читателя? Главное — книгу в твердой обложке теперь можно купить не только у меня, а на сайте ДМК или в магазине. Это главная проблема Ридеро: у них нет массовой печати в твердой обложке, только разовый (и потому дорогой) тираж. Так что теперь не обязательно слать мне Яндекс.Деньги: заказывайте на сайте ДМК. Однако я всегда рад подписать книжку и отправить в любую страну.

  • Реляционные базы данных в Clojure

    Содержание

    Реляционные базы данных

    В этой главе мы поговорим о том, как работать с реляционными базами данных в Clojure. Большую часть описания займет библиотека clojure.java.jdbc и дополнения к ней. Вы узнаете, какие проблемы вас ждут в работе базам и как их решать в Clojure.

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

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

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

    Реляционные базы данных называют так из за модели реляционной алгебры. Это изящный математическая модель с набором операций, например выборкой, проекцией, декартовым произведением и другими. Из модели следуют строгие правила о том, как работает та или иная операция. Поэтому базы данных работают не спонтанно, а по четким алгебраическим правилам. Из этих же правил следуют нормальные формы (первая, вторая и третья), доказать которые можно аналитически, а не на глаз.

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

    Перейдем к понятиям, более привычным программисту. Базы хранят содержимое в таблицах. Запись в таблице называется кортежем и состоит из отдельных полей. Поля могут быть разного типа. Состав полей и их порядок одинаков в рамках таблицы. Не может быть так, что в первой записи два поля, а во второй три. Если нужно указать, что в поле нет значения, в него пишут специальное пустое, чаще всего NULL.

    Read more →

  • Мертвые программы

    Самые лучшие программы — те, что обыватели называют “мертвыми”. То есть те, что обновляются либо никогда, либо редко и по мелочам. Иной раз поражаюсь: собеседник вроде неглуп, но Sublime Editor у него считается мертвым. Видите ли, давно не обновлялся.

    Не обновлялся, и что? Это же прекрасно! Никаких неожиданностей с интерфейсом, дуракцих фич, синхронизации учетной записи, облачной подписки, что там еще… Как в старые добрые времена. Поставил Фотошоп версии пять, через год вышел шестой. А не через день, как сегодня. И нельзя запустить, пока не скачаешь.

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

    Удивляюсь тем, кто отслеживает грядущие фичи и расстраивается, если их нет в релизе. Я всегда полагался только на то, что идет из коробки. Нахожу забавным обзоры релизов какой-нибудь IDE от Джетбрейнс. Тут заработал автокомплит! А здесь новое окошко! Прокрутка на 3.3 процента плавнее! Поддержка эмодзи, вы слышали! Смехота и только.

    Сердце моего окружения — это именно мертвые программы: Emacs, Git, Bash, утилиты GNU, LaTeX. В них я могу создать программу, сайт, книгу. Они обновляются, но это не играет роли: я использую только то, что в них уже много лет. Если завтра за их поддержку введут смертную казнь, мне хватит их на оставшуюся жизнь. Они не отвалятся из-за протухшей учетной записи, заблокированной кредитки или переезда в Крым-наш.

    Это очень круто и дает настоящую, неподдельную радость.

  • Принтеры

    Пожалуй, самая нелепая, не поддающаяся описанию вещь в нашем мире — это принтеры.

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

    У любого принтера ужасный драйвер и интерфейс опций. Типичный случай — восемь-девять табов с опциями, раскиданными без всякой логики.

    Принтеры ужасно выглядят: у них миллион каких-то щелей, фазок, выемок, лотков, которыми никто не пользуется. Все это скрипит и ходит, как потертое седло. Те же ощущения, что от ноутбуков HP десятилетней давности.

    Самая феерия — это дозаправка картриджа. Производитель считает, что ты должен купить новый у официалов, и если вставить заправленный картридж, система его не увидит. Для своего принтера нагуглил инструкцию (копирую как есть):

    • Включите аппарат и откройте крышку.
    • Теперь выключите принтер.
    • Зажмите клавишу «Go» на клавиатуре панели управления устройства и не отпускайте.
    • Снова включите принтер.
    • Дождитесь пока начнут гореть все индикаторы кроме «Ready».
    • После еще три секунды подержите и отпустите «Go».
    • Теперь 10 раз нажмите «Go» и следите, чтобы после каждого загорался индикатор «Ready» именно зеленым цветом.
    • После делаем небольшую паузу. В это время должны гореть три лампочки вверху.
    • И снова кнопку «Go» жмем 5 раз.
    • После этих мероприятий лампочки еще некоторое время помигают разными оттенками.
    • В конце лампочка «Ready» должна начать постоянно светится.

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

    Дополняет все беды то, что системный диалог печати в операционных системах убог до невозможности, а каждая программа предлагает свои уродские диалоги. В Ворде он ужасен. В Хроме — кастрирован. Для себя нашел спасение: любой документ сохраняю в PDF и печатаю из эпловского Preview. Единственная программа с нормальным диалогом печати.

    Интересно, что именно в компании Xerox начались изыскания в области интерфейса. Окна, кнопки, вырезать-вставить. Но в итоге печатная промышленность пришла куда-то не туда.

  • Что я делаю

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

    Менторю пару девушек: студентку и школьницу. Делаю это бесплатно, потому что не вижу смысла брать с них денег. Путь лучше в будущем научат кого-то еще.

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

    Редактирую текст второй главы по базам данных для следующей книги о Кложе. В день выходит по чайной ложке, но все-же когда-нибудь добью.

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

    А блог… Что ж, пусть со временем он станет архивом. Реальные дела важнее.

  • Анонс главы. Базы данных в Сlojure

    Только что закончил черновик главы о реляционных базах в Сlojure. Вышло сто страниц А4; в книжных страницах это около ста шестидесяти. Мой самый большой текст.

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

    Посмотрел на дату публикации того огрызка и не поверил: ноябрь 2020 года. Прошел почти год! С возрастом время летит незаметно.

    Впереди еще несколько этапов чистки, и только потом опубликую главу. Думаю, ждать осталось месяц.

  • Медуза

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

    Долгое время я рассматривал Медузу как новостной сайт. Но за последний год ее формат изменился. Теперь это не новости, а скорее блоггинг или что-то вроде того. Главный индикатор — в издании отчетливо слышится повестка.

    Повесткой я называю тезисы и идеи, за которые кто-то топит. Например, моя повестка — программирование, Лисп и ФП, образование, книги, управление временем. Повестка условного Варламова — урбанистика, архитектура, политика, общественные события. В блоге повестка обязательна: читатель сразу должен понять, за что топит автор, и исходя из этого уйти или остаться. У меня, как и у всех, есть мнение насчет госдолга США и как поднять Россию с колен, но я стараюсь не писать на эти темы. В первую очередь из уважения к читателям.

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

    Увы, Медуза нарушила этот формат. Ее публикации все больше напоминают блог группы авторов. Сначала в интонации и между строк, а затем и в заголовках редакция выражает свое отношение к новости, и это невыносимо.

    Талибы(1) — плохо. Навальный — жертва. Его расследования — круто. Коронавирус — главная угроза обществу. Вакцинация — хорошо. Тот, кто отрицает — ковид-диссидент (даже термин придумали). Песков несет пургу. Стеб над Путиным. Несправедливое отношение к геям и неграм. Ущемление лесбийских пар в России.

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

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

    После признания ингантом Медуза ведет себя, как обидевшаяся женщина. В заголовках — пассивная агрессия, стеб, сарказм. Так быть не должно. А еще эмодзи в заголовках. Если смешно, то ржачный смайлик. Если грустно, то плачущий. Какое дно.

    В целом, попытка редакции сблизиться с читателем скорее меня отталкивает. Каждая новость пытается выдавить из меня гнев, осуждение, негодование, отчаяние и смех. Я не хочу всего этого. Если переживать за всех ущемленных и несправедливо попавших под ментовский произвол, то исчерпаешь ментальную устойчивость. Да и никакие это не новости. Это тот же условный Варламов.news, то есть блоггинг под видом новостей.

    Конечно, каждый из нас нуждается в толковании событий. Хорошо то или иное событие или нет, молодцы эти ребята или нет. Поставили скульптуру в виде говна глины. Если коллеги заспорят в курилке, за что мне топить? Говно или искусство? Для этого и существует блоггинг — люди делятся мнением, а читатель выбирает, к какому лагерю примкнуть. Но тут важны две вещи.

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

    Это все равно что клевать мертвечину.

    (1): вроде бы считаются запрещенной в России организацией, так что вынужден дать эту сноску.

  • Стратегия

    Предположим, вы смотрите какой-то митап на Ютубчике. Голова с экрана говорит вам, что:

    • нужно нанимать только фулстек-разработчиков;
    • нужно вставать в 5 утра;
    • нужно читать по три книги в месяц

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

    Что делать? Менять технический стек? Закупать книги? Ставить будильник?

    Чтобы все объяснить, прибегу к дешевому трюку — аналогии.

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

    У слова “стратегия” есть и другой смысл — набор действий в игре. Например, удачная комбинация конкретных юнитов. Или порядок постойки зданий. Или покупка предметов и зачистки монстров для раскачки.

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

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

    Теперь обратно к говорящим из Ютуба. Рынок — это игра, в которой многие факторы не определены. Жизнь постоянно корректирует его законы. Нет стратегии, которая обязательно принесет прибыль.

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

    Нужно вставать в 5 утра? Обратитесь к истории про Стивена Хокинга, когда он совершил открытие ложась в кровать поздно ночью.

    Надо держать монореп? У тех успешных ребят отдельные репы.

    И так далее.

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

    Вывод? Смотри Ютуб, почитывай Хабр, но следуй своему пути.

  • Ссылки на выходные (выпуск 36)

    Этот выпуск посвящаю Федору Борщеву. Федор – программист, консультант, занимался Медузой и другими масштабными проектами. Полную информацию о нем вы найдете на сайте, а я прикладываю несколько заметок, чтобы подогреть интерес.

  • Коронавирус на Титанике

    Несколько лет назад мы с сыном увлекались Титаником. Посмотрели несколько документальных фильмов, читали Википедию. Помнится, в 2012 году была столетняя годовщина со дня трагедии, и под это дело Титаник всплыл в информационном поле.

    Изучая историю Титаника, поражаешься нелепым промахам и неудачам. По сути вся история — это череда ошибок. Титаник был приговорен еще в момент спуска на воду, да что там — на этапе чертежей. Проплыви он тот рейс, проблема возникла бы в следующий. Через десять рейсов или сто, неважно. Точно так же была бы трагедия и тысяча с лишним погибших.

    В спорах о Титанике даже речи не может быть о том, какую именно ошибку допустил экипаж. Их было столь много, что можно спорить только о вкладе в общую картину, но никак не о бинарном признаке “было/не было”.

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

    Устройство

    • Дрянные заклепки корпуса, которые лопнули при столкновении.
    • Система сообщающихся отсеков. Заполнив один отсек, вода спокойно переливалась в следующий и так далее.
    • Недостаточное число шлюпок и мест в них: 1200 мест на 2600 пассажиров.

    Халатность

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

    Действия экипажа

    • Первые двадцать минут после столкновения судно шло на полном ходу, из-за чего напор воды из пробоины усилился в десять раз.
    • Долгое время никто ничего не понимал, считали, что все хорошо.
    • Решение опустить перегородки в отсека было фатальным. Если бы вода равномерно растекалась по корпусу, судно погружалось бы в течение 15 часов. За это время пришла бы помощь. Из-за того, что отсеки заполнялись по одному, судно накренилось и переломилось спустя три часа после столкновения.
    • Радисты посылали старый сигнал CQD, хотя все уже перешли на SOS.
    • Экипаж не умел спускать шлюпки, учения никогда не проводились. Где-то их спускали наполовину пустыми, на голову другим или переворачивали.

    Список можно растянуть на два-три экрана. Не будем этого делать, потому что и так ясно: с самого начала все пошло не так, и кончиться иначе не могло. Сегодня, когда мы смотрим фильм про Титаник или читаем википедию, в голове одна мысль: как так? Почему провафлили все что можно? Почему обделались буквально на каждом шаге? Разве нельзя было подумать заранее?

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

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

    Отмотаем время на год назад. Помните ковидные локдауны по три месяца? Stay Home? Ролики с селебрити, где на все лады повторяли эту фразу? Очевидно, это не сработало. Стоило людям выйти на улицу, настала т.н. “вторая волна”. Беру в кавычки, потому что именно под этим термином нам ее подавали. На самом деле это была первая волна, которую просто искусственно прервали. Да и вообще, нет никаких волн — есть локальные вспышки, есть сезонность. А волны только в Доте.

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

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

    Подтягиваются политики и чиновники. Настал их час: всем хочется порулить в момент кризиса, чтобы стать героем. Ввели пропуска, отменили пропуска. Вчера победили ковид, а завтра ВНЕЗАПНАЯ третья (четвертая, пятая) волна. Еще лучше: новый штамм (бета, гамма, сигма — греческих букв хватит надолго).

    Ввели QR-коды, отменили QR-коды. Ввели мобильное приложение, отменили мобильное приложение. Попутно выставив миллионы штрафов просто за то, что люди не осилили адский интерфейс.

    Все ситуативно, непредсказуемо. Сыпятся ограничения, при этом нет режима ЧП. Нет никакого плана или стратегии хотя бы на месяц. Все решается в полете.

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

    Потребление наркотиков возросло на 60%. Неудивительно: как иначе людям справляться с накатившим стрессом?

    Начинается война вакцин и сегрегация. В условную Францию нельзя, потому что не привит. Или привит, но не тем. Сраная Европа не одобряет вакцину России. Сраная Россия не одобряет европейскую. Думай о том, чем привиться выгодней, чтобы охватить больше стран. Чиновники массово едут в Европу и колят Файзер, который простому смертному не достать.

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

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

    Помнится, Барак Обама возвещал, что Россия и вирус Эбола представляют главную угрозу человечеству. С Эболой не сложилось, но уже тогда было видно, насколько желанна эпидемия мирового масштаба.

    Ладно, что же надо делать?

    Во-первых, определиться с терминами. Что такое эпидемия и пандемия? При каких порогах можно утверждать, что в стране происходит второе или первое? Когда определения и пороги найдены, составить план и следовать ему, при этом оперативно уведомлять население о том, где мы и куда движемся. Ничего подобного я не вижу в принципе. Если включить новости Москвы, то все будет плохо, при этом чрезвычайного положения нет, все оперативно и на ходу.

    Наиболее разумный шаг — оставить население в покое. От недостатка денег и стресса умирает гораздо больше людей, чем от коронавируса. Загуглите графики избыточной смертности в Москве и в Питере. Странным образом вместе с ковидниками умирает много других людей. Это те, кто в результате беспощадной борьбы не смог получить помощь: сердечники, раковые больные, инвалиды с редкими болезнями.

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

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

    Наконец, за полтора года можно было вывести из комы массовую медицинскую помощь. Выясняется, что в 18 году число койко-мест “оптимизировали” до 40%. И не только у нас. В Америке программа Obama Care точно так же похоронила массовую медицинскую помощь. Смысл программы в том, чтобы обязать гражданина купить медстраховку. А на что ее купить, если сидишь дома или потерял работу? Или работаешь неофициально? В ответ программа несет чушь про гибкую систему скидок.

    Государства, что наше, что иностранные, полностью снимают с себя ответственность за здоровье гражданина. В результате Америка угробила население, обогатив кошельки страховых компаний. Россия ничуть не лучше: деньги от “оптимизации” медицины пошли явно не на медицину.

    Еще раз: в полуторагодовой борьбе с вирусом нет ни грамма заботы о людях. Ни одна страна не ставит цель иметь здоровое население, где локальные вспышки гасит массовая бесплатная медицинская помощь. Ковид — два в одном, повод и инструмент. Это политика, деньги и война вакцин. Печально наблюдать эту картину Босха в мировом масштабе, и тем труднее сохранить остатки критики и разума.

Страница 1 из 54