А разъясните мне про ФКН ВШЭ

Попалась на глаза книжка «Arduino Uno и Raspberry Pi 4: От электроники к интернету вещей«, написанная аж целым преподавателем ФКН ВШЭ С. Л. Макаровым. В отличие от других новинок издательства ДМК, это — типичный пример говнолитературы по встраиваемым системам, где 90% примеров работы с ардуиной представляют собой тупой «линейный» код (без единого намека на то, что можно сделать что-то интересное, написав буковки if), а Android Things на Raspberry Pi — сборник рецептов в духе «скопипастим эту громадную простыню кода и поморгаем лампочкой».

Впрочем, осуждать доцента Макарова сегодня будем не за это — в конце концов, не он единственный автор такой макулатуры. Я вот интереса ради решил заглянуть на его страничку на ВШЭшном сайте и посмотреть, что он преподает, и там увидел нечто на самом деле ужасное — список тем дипломных работ, выполненных под его руководством: «Комплекс веб-сервисов для дистанционного мониторинга пациентов», «Ориентированные на персонал приложения системы управления заказами для кафе и ресторанов», «Мобильное приложение «GPF» для поиска игровых партнеров для компьютерных игр», «Мобильный дневник самоконтроля диабетика», «Андроид-приложение «Комбинаторные задачи»» — там еще много, это только первые пять названий.

Но скажите, есть ли в этом «компьютерные науки»? Может ли аккуратно выполненная работа по специальности 09.02.03 быть принята к защите, как магистерская диссертация по специальности 09.04.04? Мне кажется, что нет — но при этом такие работы, описывающие реализацию простых и типовых оперденей, защищаются на 9 баллов из 10:

https://www.hse.ru/edu/vkr/835939664

И вот что на самом деле ужасно — так это то, что при отборе на ФКН «как в космонавты» и проходном балле 305 баллов по 3 ЕГЭ, там внутри имеем Ардуину с тривиальными задачами на 3 курсе и безыдейные типовые опердени в качестве дипломных работ. Скажите, а может, есть там что-то хорошее, может, не все так страшно?

Кто-то в лесу сдох

Издательство ДМК внезапно выпустило две более-менее вменяемых книги про встраиваемые системы. Во-первых, сначала я наткнулся на «Реверс-инжиниринг встраиваемых систем» Алексея Усанова. Не сказал бы, что раскрыты какие-то глубины этого процесса — но если рассматривать книгу, как каталог ссылок на всякие полезные материалы — то сойдет. В целом — нормальное дополнение к какому-нибудь учебному курсу по программированию встраиваемых систем — «как на ваше устройство смотрит недоброжелатель :)».

Во-вторых, поизучав другие издания на сайте, нашел перевод учебника Даниэле Лакамеры «Архитектура встраиваемых систем» — в отличие от массы литературы «по STM32», сводящейся к пересказу даташита вперемешку с многочисленными скриншотами из Cube MX, здесь описывают среду разработки с использованием gcc и make, работу с памятью «на низком уровне», немного затрагивают внешние сетевые интерфейсы и многозадачность — в общем, подходящий набор для того, чтобы не пугаться любого более-менее современного микроконтроллерного проекта, отличающегося от «а мы тут быстренько что-то под ардуину налабали».

На фоне того, что издают по программированию для разного мелкого embedded на русском языке (всякие там «77 бесполезных проектов на ардуине») — внезапно уровень очень неплох. Прямо даже задаешься вопросом — что же случилось (и кажется, логотип YADRO на обложке второй книги намекает, кому это может быть нужно).

The Leprechauns of Software Engineering

Вообще, троллинг программистов — это легко и приятно. Вот вчерашний, например, был снова пойман на очередной глупости — сначала начал рассуждать, что goto пользоваться никак нельзя, а потом, после прямо заданного вопроса «а break, continue, try-catch ты используешь?» начал громко орать, что это совсем другое и никак нельзя эти конструкции сравнивать. Самое смешное — вроде бы в подтверждение своих слов он притащил известную статью Дейкстры, про «Go To Statement Considered Harmful«, и на этом стало понятно, что он ее не читал, от слова совсем.

Если совсем коротко ее пересказать — то дело в том, что процесс выполнения «структурной» программы (где используются только условные операторы и циклы) описывается крайне просто — фактически лишь номером строки исходного кода, инвариантами циклов и условиями выхода из тех же циклов. Это очень сильно упрощает формальные методы анализа, за которые топил Дейкстра, и которые при желании можно показать семиклассникам (собственно, «через Дейкстру» они в школьную программу и попали). Применение же goto делает такой простой анализ практически невозможным, описать состояние программы, написанной с использованием goto, получится лишь перебором всех возможных путей выполнения. Если подумать — то всевозможные break, continue, обработка исключений, наконец, точно так же усложняют рассуждения о выполнении программы. Попробуйте написать инвариант несложного цикла, в котором может быть выкинуто исключение! А если это исключение еще и обрабатывается «на уровень выше»?

Но люди думать не хотят, люди хотят пользоваться своими заблуждениями, при необходимости подкрепляя их ссылками на «научную» литературу, которой даже толком не читали. Примерно о том же — и книга Leprechauns of Software Engineering, посвященная разбору популярных — настолько популярных, что их массово тиражируют даже в учебных курсах — утверждений о процессе разработки ПО, которые по факту оказываются либо слабо обоснованными, либо вообще «о противоположном». Сколько раз вы слышали, скажем, о «методологии водопада»? А ведь это такое удобное чучелко для битья, когда рассказывают про всякий Agile! Но если полезть копаться в литературе — то окажется, что «водопад» — в том виде, в каком он был описан впервые, в статье 1970 года — это совсем не то, что вы себе представляете.

Автор докапывается до происхождения мифов о «10x-программисте», о «конусе неопределенности», о «стоимости изменений» на этапах разработки и тестирования — и всякий раз оказывается, что фундамент у этих известных вещей крайне шаткий, местами в первоисточниках написано вообще что-то в духе «а эту картинку мы нарисовали, потому что нам так кажется». Дальше красивая, но не обязательно верная, концепция обрастает несколькими цитированиями — и вперед, она уже тиражируется на правах общеизвестной истины.

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

Унижаем программистов

Объяснял программисту в одном чатике разницу между тестированием и формальной верификацией кода, для пущего издевательства притащил книжку для семиклассников — «Программирование: вводный курс» за авторством Д. Школьника, Н. Авданина и А. Суханова, и более того — издевался, приводя в качестве примера третью (!) программу в этой книжке — 1.3 на вот этом развороте:

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

Джефф Сазерленд. SCRUM. Революционный метод управления проектами

Решил тут прочитать книжку про Scrum — и в общем нисколько не разочарован! Автор, как и положено, рассказывает больше про себя, чем про управление проектами, а биография у него прямо интересная, тут тебе и Вест-Поинт, и разработка софта для ФБР, и сын-журналист на площади Тахрир во время «Арабской весны». Прямо бинго какое-то, внутренний конспиролог несказанно радуется.

PS Еще один штрих к портрету автора — манера приводить примеры из командных видов спорта (собственно, сам термин scrum взят из американского футбола), свойственная, по рассказам, американским преподавателям физкультуры.

Пишу про попаданцев

Обсуждали в одном чатике любовь американцев к аббревиатурам типа REST и SOLID — которые складываются в осмысленные слова. Сказал, что знаю на русском лишь один такой пример — Плеханов, Игнатов, Засулич, Дейч, Аксельрод, на что был обрадован аналогом (думаю, тематика чата будет сразу понятна): Cormen, Ullman, Neumann, Turing. Сразу же родился сюжет романа про попаданцев:

Наш современник-сисадмин попадает в США времен маккартизма и подает в ЦРУ этот список; аналитики-советологи, сопоставив ПИЗДА и CUNT, решают запретить кибернетику, а обладателей перечисленных фамилий ликвидируют физически; в это же время в Союзе принимают план по развитию вычислительной техники Окно-95.

Думаю, целевой аудитории сисадминов, поддрачивающих на кибернетику и прочий ОГАС, прямо зайдет!

О прикладной антропологии

Известный американский антрополог левого толка Дэвид Грэбер в своей книге «Утопия правил. О технологиях, глупости и тайном обаянии бюрократии» описывает бюрократическую технологию «спихивания» и строит вокруг нее целую теорию о «мертвых зонах воображения». Ознакомиться с трудами антрополога-анархиста было бы интересно в более мирное время, а сейчас порекомендую прочитать «Справочник пехотинца: для тех, кому в армию, и не только» А. В. Маркина, где описано три (!) направления «спихивания» — вниз (именно это единственное направление описано у Грэбера), вверх и вбок, буквально на одной страничке, но намного полезнее!

Bertsekas, Gallager, Data Networks

Есть на всяких околоайтишных специальностях в вузах предмет под названием «Сети передачи данных» или как-то типа того, где про модель OSI рассказывают, TCP/IP всякое, маршрутизацию и тому подобные вопросы. Есть по нему масса учебников — Олиферы всякие, Таненбаум книжку написал, Куроуз-Росс, Горальски, Стивенс — в общем, на любой вкус, айтишники любят. Содержание в целом более-менее стандартное — вот вам модель OSI, вот вам кучка протоколов с каждого из уровней, вот так работает маршрутизация… — разница в нюансах, где-то больше теории, где-то добавляется практика какая-то. В целом, конечно, это в основном беллетристика и перечисление готовых сетевых протоколов, которые кем-то придуманы — а понимать, почему это все работает — это не вашего айтишного ума дело.

А есть старая (1993 год! а первое издание даже издательство «Мир» в 1989 году перевело) книжка Бертсекаса и Галлагера: http://web.mit.edu/dimitrib/www/datanets.html. Чем она отличается? На первый взгляд, все начинается довольно культурно — модель OSI в первой главе с описанием ее уровней, дальше — немного про всякие протоколы (в основном представляющие собой чисто исторический интерес, из более-менее актуального во второй главе можно назвать только TCP) — но вот в третьей и четвертой главе начинается самое веселье! Внезапно плотность формул на страницу текста становится запредельной, возникает «тяжелая» математика — прежде всего тервер и слупы, но мало не покажется.

К чему это я? Поучаствовал на днях в одном мини-сраче по поводу «высшего айтишного образования», в духе «стоит ли идти на физтех, когда в любом говновузе научат тому же». Так вот, разница между выпускником условного мехмата/физтеха/ВМК и выпускником «айтишной» специальности состоит в том, что первый поймет и книжку Бертсекаса и Галлагера, и «беллетристику» Таненбаума или Курроуза, весь необходимый математический аппарат для этого у него есть. «Айтишник» же, зубривший Олиферов — омерзительный на самом деле учебник, где авторы пытаются трескучими формулировками показать свое «превосходство» над читателем — попросту не сможет осознать проблемы, которые у Бертсекаса разбираются.

Нет, многим, возможно, никогда не потребуется лепить управление очередями, алгоритмы множественного доступа или маршрутизации — но когда за это пытаются браться «чистые айтишники», получается крайне печально. Скажем, посмотрел на днях на Meshtastic — протокол организации mesh-сетей на основе «физики» LoRa. Мало того, что сам по себе протокол толком не документирован — так еще и реализация производит впечатление «слышали звон, да не знают, где он». Элементарнейший пример — используемый алгоритм конкурентного доступа явно сделан «по мотивам» используемой в WiFi distributed coordination function, которая неплохо обоснована с теоретической точки зрения — но упрощен настолько, что утрачена вся суть исходного алгоритма. Да, он выглядит довольно просто — но за этой простотой стоит довольно строгий анализ, и «лишнего» в нем нет. Вишенка на торте — этот важнейший элемент протокола нигде толком не документирован, и для того, чтобы понять, как он работает, приходится лезть в исходники.

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

А вот интересно мне

Читаю тут «Капитальный ремонт» Соболева, и стало мне интересно — к какому же типу относится линкор «Генералиссимус граф Суворов-Рымникский»? Вроде бы на протяжении нескольких глав лейтенант Левитин героически режет ацетиленом «решетчатые мачты» — а стало быть, под «Генералиссимусом» надо понимать один из линкоров типа «Андрей Первозванный»?

А с другой стороны — встречаем там два таких описания:

«Генералиссимус граф Суворов-Рымникский» вдавился в нее тяжко и грузно, и казалось, что серо-голубая броня его бортов отлита одним куском с серо-голубой водой. Он огромен, молчалив и недвижен. Палуба широка и просторна, как соборная паперть. Четыре орудийные башни одна за другой встали в ряд с кормы до носу; их длинные стволы вытянулись из амбразур в стремительном поиске врага и так и застыли над палубой. От простора палубы башни кажутся небольшими и броня их — невесомой. Но броня тяжела: она одела башни и рубки толстой двенадцатидюймовой коркой, она перекрыла корабль вдоль и поперек тяжкими листами и окружила борта тысячепудовым поясом. Броня так тяжела, что громадный корабль, раздавливая воду, утонул в ней двумя третями своего корпуса, оставив над поверхностью воды только низкий борт и палубу, как отдыхающий на воде пловец оставляет над водой один рот — только чтоб не захлебнуться.

«Четыре орудийные башни одна за другой» — разве это не тип «Севастополь»? Да и вот этот абзац больше похож на описание «Севастополя»:

Нет людей на этом острове плавающей стали. Сталь любит числа. Она родилась на заводах в числах градусов, в числах атмосфер, в числах тонн. Сквозь числа формул и числа чертежей она прошла великий машинный путь и вновь обрела числа:
26000 тонн водоизмещения;
42000 лошадиных сил в турбинах;
592 фута длины;
40000000 рублей затрат;
12 двенадцатидюймовых орудий;
1186648 заклепок;
1186 матросов;
39 офицеров;
1 командир — это только числа, обыкновенные числа, без которых сталь не могла бы жить — то есть передвигаться по воде и бросать из стальных труб стальные цилиндры, чтобы поразить другую сталь, в которой 2000000 заклепок и 1306 матросов.

С другой стороны, «Суворов» по состоянию на 1914 год уже в строю, а не спешно достраивается, как «Севастополь» и его систершипы.

Остается только предположить, что описывается каким-то чудом оказавшийся на Балтике «американец» (хотя тут сложно сочетать четыре башни и 12 орудий) :)

И еще вопрос

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

Управление проектами, людьми и собой

В комментах ЖЖ [info]mindfactor кинул ссылку на главу книжки Николая Товеровского «Управление проектами, людьми и собой»:

https://ksoftware.livejournal.com/202173.html

Глава написана бодренько, еще немного материалов есть в демо-версии книжки на сайте — включая и отличную игрушку:

https://bureau.ru/books/fff/demo/17

В общем, потратил 1200 рублей и купил «подписку» на книжку (оцените, кстати, изящество решения — не книжку, а лишь подписку на нее!). Так вот, не повторяйте мою ошибку, лучше было бы эти деньги пропить. Почему? Просто эта книжка — вовсе не про управление проектами, а про методы работы, принятые в «Бюро Артема Горбунова». Может, тоже неплохо, может, очень полезно молодым сотрудникам этого дизайн-бюро — но в основном все можно разделить на три части:

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

Нельзя сказать, что все совсем бесполезно — но в целом это «учебник для исполнителей», местами учащий того же исполнителя исправлять проебы руководства. Например, в той же главе про «что значит сделано» ничего не говорится про «definition of done», хотя казалось бы — нужно, а предполагается, что исполнитель окажется настолько предусмотрителен, что это «definition of done» выяснит сам. Впрочем, занятно, и позволяет понять, какими принципами руководствуются у Горбунова.

Но вот что я понять совсем не могу — так это того, что по этой книжке регулярно продаются еще и «курсы» (пересказ книги для неумеющих читать, сдобренный еще и дополнительными байками)! Она прекрасно смотрится, как «руководство для молодого дизайнера в студии Горбунова», учащее его принципам вроде «дизайнер отвечает за все» или «подхода FFF», более-менее сносно смотрится в формате «детской книжки с картинками» (и пересказом популярных баек) — но вот представить, что кто-то добровольно отдает 39 000 за то, чтобы Товеровский травил байки, мне лично сложно.

Еще раз повторю, 1200 рублей лучше пропить. Бесплатной части книги и записей в блоге Товеровского вполне достаточно.

Introduction to Embedded Systems — A Cyber-Physical Systems Approach

Прекрасная, просто замечательная книжка.

Во введении и первой главе наивного читателя заманивают рассказами про «интернет вещей», «киберфизические системы», «индустрию 4.0» и прочий набор стандартных баззвордов. Читатель уже ждет, когда же ему расскажут про то, как на Ардуине и Распберри сделать очередной умный дом — но тут же в главе 2 ему выкатывают второй закон Ньютона, на пальцах объясняют кусочки термеха, пишут всякие дифференциальные уравнения, а немногих выживших добивают преобразованием Лапласа. Дальше, конечно, становится немного полегче, всякая там дискретная математика и конечные автоматы особого полета фантазии не требуют, а местами даже предлагают написать немного кода на Си. Перевернуть свое представление о встраиваемых системах можно по ссылке:

https://ptolemy.berkeley.edu/books/leeseshia/

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

И еще сказочка про выборы и ленивого программиста

Люблю я истории про O(N²), ничего не могу с собой поделать. Так как в этот раз все пока что держится на слухах — пусть это будет сказочка про республику Анчурия, где-то в Латинской Америке.

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

Одного не знали бедные любители высоких технологий из Анчурии — писал ту голосовалку не очень образованный программист Вася, и время подсчета результатов в той голосовалке зависело от количества избирателей квадаратично. Но Министерство Информационных Технологий Анчурии — люди прошаренные, и даже провели тестовое голосование — выбирали, что лучше, леденцы с ментолом или менты с леденцами. В голосовании приняли участие самые прошаренные граждане Анчурии, коих набралось аж 10 000, результаты подсчитались достаточно быстро — и систему решили внедрить на будущих парламентских выборах с десятью миллионами избирателей.

И вот поздно вечером в воскресенье закрылись электронные избирательные участки, и сам Министр Информационных Технологий нажал на самом мощном компьютере Анчурии кнопочку Enter, запустив процедуру подсчета. Долго ли ждать результатов? Ну полчаса-час, ответил министр — и все решили подождать. Сначала два часа ждали, потом четыре, восемь… — в общем, и к утру не дождались. Зато проснулись коммунисты и с криком «Дурят капиталисты нашего брата!» собрали митинг на Главной площади. К вечеру собрался уже не митинг, а целый майдан, кто-то обозвал цифрового министра пiдрахуем (не обошлось без украинского следа), пираты подрались с коммунистами, жулики с ворами — но все вместе пошли от Главной площади по Главной улице к Президентскому дворцу (география столицы Анчурии проста и понятна).

Ну дальше как всегда — Эль Президенте почуял, что пахнет жареным, и сбежал, в Анчурии случилась маленькая гражданская война, к власти пришла военная хунта и от греха подальше запретила все выборы, компьютеры и на всякий случай — украинский язык. Жуликов посадили, воров постреляли, пиратов развесили на реях, коммунистов отправили в тайные тюрьмы ЦРУ. Говорят, что где-то в начале гражданской войны бывший министр даже вылез из своего дата-центра в подземном бункере со словами «Мы все посчитали!» — но всем это было настолько безразлично, что никто про него и не вспомнил.

Так вот, господа программисты, вся беда случилась из-за того, что случайно найденная на гитхабе голосовалка имела сложность подсчета голосов O(N²) — то есть если для подсчета 10 000 бюллетеней требовалась всего 1 секунда — то подсчет 10 000 000 бюллетеней занял не 1 000 секунд, как надеялся цифровой министр, а гораздо больше — 1 000 000 секунд, или целых 11 дней — как раз хватит на то, чтобы не дождавшиеся итогов выборов анчурийцы начали гражданскую войну. O(N²) — очень «хорошая» оценка сложности, она, с одной стороны, достаточно мала, чтобы успешно проходить тесты на небольших наборах данных (это вам не перебор всех подмножеств, и даже не какие-нибудь числа Белла) — а с другой стороны, очень плохо ведет себя, когда данных становится много.

А чтобы не спровоцировать гражданскую войну в латиноамериканской стране — не делайте алгоритмы со сложностью O(N²), а читайте книжки Скиены, Седжвика, Дасгупты и Кормена, можно еще поставить на полочку многотомник Кнута.

Панчулу не показывайте

На кикстартере собирают (точнее уже собрали) деньги на книжку-игрушку с демонстрацией работы логических элементов:

https://www.kickstarter.com/projects/babyengineering/computer-engineering-for-babies

Попаданец наоборот

У покойного Константина Крылова на samlib осталась неоконченная «повесть для юношества» под названием «Иосиф Прекрасный» — с примерно такой аннотацией:

Является обратной по отношению к обычному «попаданчеству к Сталину»: здесь не герой приходит к Генералиссимусу, чтобы учить его выигрывать войны и делать атомную бомбу, а Генералиссимус приходит к герою и учит его варить борщ и стирать носки. Это сложнее, чем выиграть войну, но большевики трудностей не боятся!

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

А вот явись дух Сталина к менеджеру по перекладыванию бумажек — там бы ему было где развернуться! Во всяком случае, советы по подсиживанию коллег, офисному выживанию и даже использованию PowerPoint он мог бы давать вполне квалифицированные.

Про PowerPoint — почти не шутка, кстати. Заодно стало понятно, что значит «пиздит, как Троцкий».

Архив «Крокодила»

Совершенно замечательная подборка всех номеров «Крокодила» с 1922 по 2008 год:

https://croco.uno/

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

Кокетничающий Шень

Вот сегодня пошла гулять по интернетикам картинка из нового издания задачника Шеня:

Где-то попытались поднять шум в духе «В России маркируют книги врагов народа» — но автор сам разъяснил ситуацию:

https://www.facebook.com/alexander.shen.182/posts/10158291873213423

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

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

— это практически дословная цитата, я не шучу!

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