Навальный и профессиональные борцы с коррупцией

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

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

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

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

26 марта прошли «массовые» акции протеста сторонников Навального по вышеописанной схеме. И это всё, честно говоря, уже просто навевает зевоту: одно и то же, раз за разом, по тем же самым лекалам и ровно с теми же реакциями от «прогрессивных стран». Задержали несколько сотен людей и какой ужас, их оттаскивали в автозаки! Какая беспредельная жестокость и нечеловеческое коварство подлых властей по отношению к несанкционированному митингу! А вы видели, как разгоняют несанкционированные митинги в Германии или США?.. То-то и оно, происходящее настолько прозрачно и очевидно, что уже даже не увлекает и не развлекает.

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

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

Русские дороги как проявление гуманизма

Иногда складывается отчётливое ощущение, что в России дороги в городах и между специально оставляют в четвертьвековых выбоинах, а иногда и нарочито делают новые под видом ремонта. Поддерживают их в таком состоянии, в котором по ним невозможна езда быстрее 40-50, а то и 20 километров в час.

А «какой русский не любит быстрой езды»?.. Можно написать диссертацию по философии на тему «русские дороги как высшее проявление гуманизма».

Настройка базового файервола на сервере при помощи iptables

В статье рассмотрена настройка простого забора-файервола (firewall) вокруг сервера при помощи стандартной для ОС Linux утилиты (драйвера?) iptables. Этот файервол защитит сервер от базовых атак (вроде SYN-флуда и пакетов сканирования) и оставит открытыми только те порты, которые непосредственно используются. Так же эта статья — заметка из разряда «что бы не забыть», так как подобные операции приходится проводить заново время от времени.

Это, разумеется, далеко не исчерпывающее руководство по защите сервера. Оно покажет, как заблокировать разведывательные пакеты (так называемые recon packets) и оставить открытыми только нужные порты: для веб-сервера, SSH, FTP. При этом не блокируя весь исходящий трафик и соединения, инициированные со стороны сервера. Будут использованы лишь несколько самых общих правил, отрезающих сканирование системы на открытые порты, кулхацкеров и ботов, которые ищут уязвимые сервера. Однако, по крайней мере такая базовая защита должна в обязательном порядке присутствовать на любом открытом вовне сервере.

Читать далее

Правильная настройка серверной кодировки MySQL

Сегодня все разработчики в Интернете пытаются уйти от ASCII и прочих частичных кодировок к юникоду и, конкретно, к UTF-8. Корректная кодировка особенно важна для систем управления базами данных: неправильная установка кодировок «СУБД-хранение/СУБД-соединение/приложение» приводит не только к некорректному отображению символов, но может вызвать куда более серьёзные и глубокие проблемы в будущем. Полтора года назад я потратил полную рабочую неделю, с утра до ночи, для хотя бы частичного решения проблемы разбившихся за годы символов в огромной БД одного из наших старых проектов — GLADpwnz. Мне пришлось написать несколько утилит с практически эвристическим анализом, и даже после этого не всю информацию удалось восстановить из-за возникающей неоднозначности. Эта неоднозначность умножила некоторые символы на ноль навсегда, теперь их возможно восстановить разве что из контекста. Так что важность изначально правильной настройки всех кодировок сложно переоценить.

Большинство веб-приложений (и других типов серверного ПО) умеют самостоятельно автоматически настраивать кодировку и коллацию СУБД (вроде SET NAMES 'utf8' и т.п.), так что глобальные настройки СУБД просто не имеют никакого эффекта. Однако, некоторые CMS (особенно, как показала практика, MODX) не используют эту возможность или по какой-то непонятной причине не хотят этого делать. И здесь всплывают глобальные настройки системы управления базами данных.

Каждая версия MySQL (кроме форка MariaDB, конечно) поставляется с установленным глобальным чарсетом latin1 и коллацией latin1_swedish_ci, которые, как раз, напрочь убивают всё, что не является латиницей. Ситуация может быть разрешена либо хак-патчингом и отладкой ядра целевого приложения (что обычно очень быстро становится очень запутанным) или установкой корректных глобальных уставок СУБД. Для MySQL это делается добавлением в конфигурационный файл (обычно находящийся в /etc/mysql/my.cnf) следующих строк в любом месте под секцией [mysqld]:

character-set-server = utf8
collation-server = utf8_general_ci
skip-character-set-client-handshake

Последняя строка (skip-character-set-client-handshake) пропускает необходимость выполнения директив SET NAMES/SET CHARACTER SET при подключении и делает все три настройки кодировки сервера character_set_clientcharacter_set_database и character_set_connection согласующимися.

Альдейгьюборг

«В скандинавских источниках XIV века княжествами Гардарики (Руси) называются Хольмгард (Holmgarðr), Кэнугард (Kœnugarðr) и Палтескья (Pallteskja), а также Альдейгьюборг (Aldeigjuborg), Смалескья (Smaleskja), Сурсдалар (Súrsdalar), Морамар (Móramar) и Радстофа (Ráðstofa).»

Хольмгард — Новгород;
Кэнугард — Киев;
Палтескья — Полоцк;
Альдейгьюборг — Ладога;
Смалескья — Смоленск;
Сурсдалар — Суздаль;
Морамар — Муром;
Радстофа — Ростов.

Называть города так, как они называются? Слишком просто!

Предвыборная ответственность

В предвыборную пору по телевизору и в соцрекламе на биллбордах нам постоянно внушают ответственность за выборы, за будущее страны, детей, внуков, правнуков чуть ли не до десятого колена. А какая реальная ответственность лежит на тех, кого люди должны выбирать? Ведь именно от них, в конечном счёте, напрямую зависит реализация всех этих заманчивых программ, а не от тех, кто их выбирает. Да, по сути, никакой. Считается, что если выбранный человек плохо работал на своём посту, то его не выберут в следующий раз (это через четыре-то года), ну-ну.

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

Было бы очень здорово применить эти же нормы к предвыборным обещалкам. Они идеально подходят под определения ГК РФ, и вовсе не являются «приглашением к переговорам», в отличие от обычной рекламы. Более того, интересным было бы ужесточение ответственности по предвыборным программам до уголовной (ну в самом деле — будущее Страны же!). При этом, если невыполнение предвыборных обещаний действительно связано с обстоятельствами непреодолимой силы, это всегда может установить суд в рабочем порядке.

Не построил дорогу за год — в тюрьму. Не увеличил пенсию до 1000 долларов — в тюрьму. Не обеспечил детей местами в детском саду, а так же средней школе в радиусе 1 километра от места проживания (это я сейчас цитирую пафосную агитку одного из кандидатов) — в тюрьму. Романтика!

Конечно, в реальности вряд ли это решит какие-либо проблемы, но во всяком случае сделает предвыборный процесс куда более интересным и драматическим.

9 мая, Треблинка

«Я помню …»
Максима Дня победы.

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

И хотя Освенцим является безусловным антилидером по числу замученных людей, есть одно место, которое трогает меня ещё больше — лагерь уничтожения Требли́нка. Всего за один год его существования в этом небольшом поле, на котором он был расположен, было убито 870 тысяч человек (по разным оценкам до 1,2 миллионов). Это, грубо говоря, 2500 человек ежедневно, при работе 24/7.

В отличие от Аушвица-Биркенау, который являлся, несмотря на всё, всё-таки больше трудовым лагерем (смертельным трудовым лагерем), Треблинка была именно тем, что можно без всяких скидок назвать конвейером смерти.

Bundesarchiv_Bild_183-F0918-0201-001,_KZ_Treblinka,_Lageplan_(Zeichnung)_II

Зарисовка плана лагеря из материалов суда над Штанглем.

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

Тела сначала просто закапывали бульдозерами в массовых могилах. Однако затем, по приказу Гиммлера после его визита в Треблинку, тела начали сжигать и перемешивать пепел с землёй или развеивать на большой территории. Это касалось не только новых жертв, но и уже наработанных захоронений — они были разрыты, а трупы сожжены. У жертв лагеря нет ни могил, ни даже места захоронения: «в полях под Треблинкой» — всё что можно сказать о месте их последнего пребывания.

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

Загрузка евреев в поезд до Треблинки.

Загрузка евреев в поезд до Треблинки.

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

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

Зарплаты в России, которую мы потеряли

После денежной реформы Витте 1897 года, вводящей золотой стандарт, 1 рубль был приравнян к 0,774234 граммам чистого золота. Сегодня курс Сбербанка составляет 2460 рублей за 1 грамм.

При прямом пересчёте получим 1 дореволюционный рубль = 1904,6 современных рубля.

Средняя зарплата рабочего низкой квалификации в Российской Империи считается равной 14,5 рублей (10-15 рублей), что после пересчёта составит 27 616 современных рублей. Низшие государственные чины (учителя мл. классов, работники почты и т.д.) получали примерно 20 рублей (38 092 совр. руб.) Фельдшеры получали 35 рублей (66 661 совр. рубль), врачи — 80 рублей (152 368 совр. руб.).

Можно подумать: «вот она, Россия, которую мы потеряли!» Но пойдем дальше: соимость свежего батона ржаного хлеба — 4 копейки (76,2 современных рубля), а белого — 7 копеек, то есть 133,3 совр. рубля. 1 килограмм картофеля свежего урожая стоил 15 копеек (285,7 совр. рублей), 1 литр молока — 14 копеек (266,6 совр. рублей), килограмм кускового сахара рафинада — 60 копеек (1 142,8 совр. рубля), килограмм сливочного масла — 1 рубль 40 копеек (2 666,4 совр. рублей), килограмм зернового кофе — 2 рубля, что составляет 3 809,2 современных рублей. Да-да.

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

Экспорт таблиц Google Docs с помощью PowerShell

В очень многих технических проектах используются данные, хранящиеся в таблицах; это может быть что угодно — описания сущностей, словари, локализации. Такие документы, обычно, предполагают доступ и редактирования не-программистами, и для этого, обыкновенно, используются таблицы (spreadsheets) Google Docs, которые после правок экспортируются в проект в виде CSV-файлов и далее подхватываются программно. Когда таких документов в проекте становится больше, чем один, начинаешь невольно задумываться об автоматизации экспорта. Читать далее

C 2016!

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

Поздравляю всех с наступающим, 2016 годом!

Турция и Су-24

Я не очень горю желанием комментировать акт прямой военной агрессии Турции, но сегодняшняя (уже вчерашняя) информация о том, что ВВС Турции якобы «не знали, что за самолёт» они сбивают меня добила.

Я, как пусть и небольшой, но как-никак экспертик по воздушно-космической отрасли, очень хочу сказать несколько вещей.

Во-первых, о подобных миссиях на границах (если они не секретны, конечно) всегда сообщают заранее заинтересованным сторонам.

Во-вторых, я не верю, что могла отсутствовать связь с экипажем Су. Такое возможно только при серьёзном повреждении подсистем связи.

В третьих, на всех современных самолётах уже давным-давно ставят радиолокационные ответчики (то, что в быту часто называют «свой-чужой»), который конкретно для этой миссии должен быть в обязательном порядке включен как минимум в режиме государственного опознавания именно для того, что бы самолёт мог быть легко идентифицирован, например, ВВС Турции.

В четвёртых, даже если вдруг Юпитер в созвездии Водолея и этого ничего нет (хотя вероятность этого ничтожна), самолёт при перехвате можно опознать просто визуально — посмотрев на него глазами. И страну, и бортовой номер. Даже рукой пилоту помахать и показать «срочно садись».

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

В шестых, даже по турецким радарным трекам видно, что сбитый самолёт находился в воздушном пространстве Турции не более 15-18 секунд. Об этом же говорит и то, что самолёт упал в Сирии — такое могло произойти, только если он был сбит либо в Сирии, либо очень недалеко от границы. Десять предупреждений, говорите?..

В седьмых, направление обломков. Точной и подтверждённой информации пока нет, но судя по видео падения (ракурса, с которого оно было записано) и по турецким же трекам, Су летел ОТ Турции, когда был сбит. Кроме того, поражение произошло, судя по всему, на территории Сирии. Информацию о том, что Су был перехвачен над территорией Сирии сообщило немецкое (!) Минобороны. О какой обороне может идти речь, и не нарушили ли ВВС Турции воздушное пространство Сирии, суверенного, вообще говоря, государства? Если подтвердится информация, что перехват произошёл над Сирией, получится, что турецкие ВВС не просто нарушили границу страны, но и, фактически, проводили боевые действия над территорией чужого государства без соответствующего мандата кого-либо, что значительно отягощает их вину.

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

В девятых, сообщают, что в этот день в районе Хмеймим ветер дул таким образом, что сесть на него (об этом говорилось с самого начала — самолёт возвращался и об этом же свидетельствуют турецкие треки) можно только с севера, влетев на несколько секунд в воздушное пространство Турции. Именно этим объясняются ранние очень громкие заявления Анкары о нарушении их границы, а вовсе не «провокациями Путина». ВВС Турции, как и профильные чиновники, просто не могли не знать об этом.

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

Это конкретно про самолёт и версии произошедшего. Заниматься политаналитикой я не хочу, это обычно грязное и неблагодарное дело, но надо понимать, что хотя Турция — одна из самых боеспособных и своенравных стран-соседей России, они не решились бы на такое, не будь они в НАТО. И судя по сегодняшним заявлениям от чиновников различных рангов из разных стран, НАТО совсем не оправдало их ожиданий поддержки. Даже США, на ком держится весь Альянс, выразило очень мутную и явно несогласованную позицию. Разница между банальной истиной «Турция имеет право защищать своё воздушное пространство» и конкретным суждением «Турция оборонялась и мы их поддерживаем» колоссальна.

Посмотрим, что будет происходить дальше, но пока, судя по всему, Турция классически выстрелила себе в ногу, дав России casus belli как по учебнику.

Интерполяция высоты по трём точкам

Недавно возникла необходимость в «реальном времени» увеличивать разрешение карты высот для одной разрабатываемой игры. По существу, задача сводится к трёхмерной линейной интерполяции: берем уравнение плоскости, выражаем высоту (Z), т.е. приводим уравнение к виду z = f(x_1, y_1, z_1, x_2, y_2, z_2, x_3, y_3, z_3, x, y), подставляем туда координаты трёх известных точек и две координаты искомой и получаем результат.

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

\begin{vmatrix}x-x_1&y-y_1&z-z_1\\ x_2-x_1&y_2-y_1&z_2-z_1\\ x_3-x_1&y_3-y_1&z_3-z_1\end{vmatrix}=0

Читать далее

Подводные камни исключений

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

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

Читать далее

Заметки   [ + ]

1. Использовался горячий старт, когда перед контрольным замером проводилось несколько аналогичных запросов.

PowerShell для Linux

Сегодня я начну издалека. Давно-давно у операционных систем семейства DOS был простой интерпретатор командной строки под названием COMMAND.COM, а у зародившегося в 70-х годах прошлого века семейства UNIX — командная оболочка Bourne Shell (sh). Шло время, для Unix/Linux устаревший sh сменил более совершенный bash, по сей день являющийся стандартным интерпретатором на всех -nix системах.

В среде Windows тоже произошла небольшая революция — появилось новое ядро Windows NT, которое, несмотря на полное техническое избавление от наследия DOS-эпохи, имело стандартным интерпретатором команд новый cmd.exe, который был… функционально просто повторением COMMAND.COM, только без DOS. Во имя обратной совместимости, ага. То есть, в то время, как линуксоиды могли автоматизировать ОС используя довольно современный (на тот момент) скриптовый язык bash, пользователям (ну, администраторам) Windows предлагалось продолжать долбиться в древний COMMAND.COM.

Читать далее

Как соврать с помощью статистики

Тема про то, как врать с помощью статистики далеко не нова и, признаться, довольно избита. Например, есть хорошая статья на Хабре, где подробно разбираются основные случаи неверного толкования статистических данных. Однако, СМИ всё равно не успокаиваются и зачастую выдают результаты статистических исследований за причинно-следственные, обнажая шокирующую правду-матку о том, что, например, голубые глаза являются фактором риска алкоголизма, да. Мало того, другие важные данные исследования намеренно опускаются. Ну в самом деле, кому интересны какие-то там скучные проценты и стрёмные слова вроде «корреляции» и «стратификации»?

ScienceNewsCycle

Очевидное — коррелированное

Статистические исследования, коих в последние полвека стало ну уж очень много (настолько много, что некоторые научные журналы уже отказываются публиковать «статистически значимые» работы) не раскрывают причинно-следственную связь между явлениями, а лишь могут указать на её потенциальное наличие. Чтобы с уверенностью сказать, что А влияет на Б надо провести точное исследование, раскрывающее то, как именно происходит это взаимовлияние. Всё остальное — суета и томление духа.

Более того. В мире существует куча явлений, которые, очевидно, вообще не связаны друг с другом, но при этом, с точки зрения статистики, имеют очень тесное взаимоотношение (с очень высокой корреляцией). Вот, например, график, показывающий траты США на науку и космос по отношению к количеству суицидов путём повешения (в США). Связь очевидна! Корреляция больше 99%!

Statistics_Suicide

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

Читать далее