From the monthly archives: "April 2012"

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

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

Читать статью полностью →

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

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

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

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

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

Все как всегда.

Понадобилось скачать довольно объемный архив с depositfiles. Предложили бесплатный GOLD статус на 24 часа — окей, но сначала почитаем правила предоставления услуги.

И находим там классическую наебку.

Плата за услугу «Подписка» в течение 24 часов с момента выполнения Абонентом действий, указанных в пункте 3 настоящих Правил, не взимается. Если по окончании 24 часов с момента выполнения Абонентом действий, указанных в пункте 3 настоящих Правил Абонент не отказывается от предоставления услуги «Подписка» способами, описанными в пункте 8, то услуга «Подписка» начинает предоставляться на платной основе. В рамках оказания услуги Абоненту периодически направляются SMS-сообщения, содержащие информацию о подключении услуги «Подписка» на Сайте, ее продлении, сроке оказания услуги, плате, взимаемой оператором, и способе отказа от услуги. При этом с лицевого счета Абонента списываются денежные средства за использование услуги «Подписка»

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

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

Вчера вечером на «Хабре» появился пост, автор которого рассказывает, как он героически ломает находит дыры в безопасности аппарата госуслуг.

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

Как это обычно бывает в реальной жизни, на самом деле все совершенно не так.

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

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

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

Аналогичное негодование, скорее всего, вызвала бы ситуация, когда вы приходите домой и обнаруживаете, что замки взломаны, дверь открыта, ничего не пропало, а на кухонном столе — бумажка с текстом: «Это было просто. Смените замки».

Однако, поиск уязвимостей в таком виде всегда встречается бурным одобрением. Даже если по сути он представляет собой «пук в воду» — человек ограничивается публикацией такой вот статьи, и ситуация ни на йоту не меняется.

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

Но по сути — нет никакой разницы, сломал ты все из любви к ломанию, или в целях проверки устойчивости системы ко взломам.

Главное — тебя об этом не просили.

Недавно на Хабре проскакивала статья, в которой человек описывал способы реализаиции своей «хотелки». Суть хотелки довольно путана описана в первоисточнике, поэтому я не буду ее дублировать, отсылая к оригинальной заметке, а от себя замечу, что по сути задача сводится к реализации примесей (mixins) в C#.

Конечно, решение автора не поражает изяществом. Давайте рассмотрим его проблемы несколько подробнее.

  • Интерфейс-метка IImplementor не имеет никакого семантического смысла, единственная его задача — это создавать иллюзию строгой типизации. Если мы его снимем — мы увидим то, чем он на самом деле является — голым object.
  • Необходимость сохранять функциональную связь между классами ведет к тому, что используются статические переменные, которые скрывают переменные классов-родителей. Особенно хорошо это видно в случае, если скомпилировать код — компилятор выдаст соответствующее предупреждение. Следует использовать метку new перед скрываемым полем, чтобы явно показать всю низость наших намерений.
  • Неоправданно много дублирования кода. В каждом без исключения объекте необходимо заводить статическое поле и переопределять виртуальную функцию получателя. Если по ошибке забыть это сделать — получим undefined behaviour на уровне системы, и найти ошибку в этом случае будет затруднительно.
  • Объект бизнес-логики (по постановке) обязан знать о возможности своего расширения «левым кодом», что явно нарушает SRP.
  • Необходимость сознательно соблюдать последовательность вызовоа метода — передавать в него тот же объект, от которого был запрошен исполнитель. Это очень легко нарушить непренамерено.

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

Читать статью полностью →

PageLines