Компас

Несколько параллельных вещей напомнили об одном и том же.

Фильм “Ип-Ман 2”. Мастер, обращаясь к ученику, отметил, что он фокусирует своё обучение только на технике, и не обращает внимание на сердце, ум и дух.

В книге “Жизнь на полной мощности” рассматриваются те же четыре “энергетических” аспекта деятельности человека в фокусе траты и восполнения: физическая, эмоциональная, умственная, духовная энергия.

Четыре вектора, ко всему прочему, попарно противоположных. Материальная сила противоположна нематериальному духу, а бессмысленные эмоции противостоят рассудительному уму. Вот такой “компас”.

А из “предрассудков философов” Ницще в том числе можно уловить, что такие противоположности являются мнимыми. Так пусть это будут четыре разных вектора, хотя и зависимых.

От Экселя до Шахмат

ABAP2XLSX

Началось всё с осмотра одной разработки – abap2xlsx. Ещё один движок экспорта данных в Excel. Движок как движок – есть преимущества и недостатки.

Фишки:

  • Экспорт происходит через  обработку XML.  Никаких OLE, CSV, HTML, макросов и прочих костылей
  • Теоретически – самый быстрый вариант при большом количестве данных
  • Теоретически доступны все возможности, если написать к ним верные обёртки – они не все написаны, но кое-что планируется по roadmap
  • Клиент не участвует в обработке – файл полностью генерируется на сервере

Недостатки:

  • Пока только развивается – ещё не совсем понятно, что из этого выйдет
  • До поддержки шаблонного подхода похоже ещё очень далеко – ещё несколько мажорных версий по roadmap (если я правильно понимаю фразу “v.3.0 — Add xlsx reader”

Выводы:

  • уже можно использовать в качестве замены чистому OLE-подходу
  • не годится для Excel 2003 в общем случае – требуется установка адд-она на клиентскую машину

Ничего особенно удивительного, но это погрузило меня в другое – целую кучу другого.

http://code.google.com/p/abap2xlsx/

Google Code

 

http://code.google.com/

Больше напомнило, чем удивило. Goole Code является альтернативой старому SourceForge. Просто и доступно, как и всё что Гугл делает. Что там есть:

  • страница проекта
  • документация в стиле Wiki
  • раздел файлов для загрузки
  • баготреккер
  • репозитарий на базе SVN

А что ещё нужно для коллективной работы над исходниками?

Google Wave

 

http://wave.google.com/

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

 

ZSAPLINK

 

http://code.google.com/p/saplink/

ZSAPLINK – это движок, через который можно обмениваться разработками. Интересный проект со своими заморочками.

Основная задача: формировать что-то вроде запросов – некоторый файл в формате XML, в котором лежат объекты разработки (отчёты, классы, таблицы, группы функций и так далее).

Этот файл можно получить из одной системы и развернуть на другой системе.

Как альтернатива файлам запросов имеет некоторые преимущества:

  • не требует деблокирования
  • не требует вмешательства администатора системы и транспортной системы
  • работает также и с локальными объектами
  • прозрачность файла-контейнера – формат XML
  • контейнер можно нормально класть в репозитарий (SVN) со всеми вытекающими
  • контейнер дополняем

В качестве заморочек можно отметить, что движку неизвестны все типы объектов разработки. К основным единицам разработки сделаны “плагины”, а к остальным плагины пока никто не написал – к таким можно отнести например объекты авторизации, диапазоны номеров и другие мелочные штучки.

Ещё из заморочек можно упомянуть необходимость ручной активации всех перенесённых объектов.

Тем не менее — полезная штука.

Есть к ней и альтернатива ZAPLINK – что-то похожее, но со своими заморочками.

Шахматы – ZSAPChess

 

http://code.google.com/p/sapchess/

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

image

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

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

SAP-Commander

 

http://code.google.com/p/sapcommander/

Двух-панельный файловый интерфейс с базовой функциональностью – F5-F6-F7-F8.

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

ZAKE

А это просто штука, которая позволяет работать с SVN-клиентом. Работает в паре с ZSAPLink.

В самом ABAP необходимости в SVN/CVS необходимости нет, потому что:

  • Исходный код и прочие объекты репозитария уже централизованно хранятся на сервере, а не локально
  • имеется версионный контроль
  • имеется система переносов

А пригодиться это может в двух случаях:

  • если ввязаться в какой-то проект на том же Google Code
  • если есть несколько систем с большим перечнем общих разработок универсального характера – тут синхронизация через SVN поможет
    Пока такой необходимости нет.

ABAP Report Wizard

 

http://code.google.com/p/abap-report-wizard/

Забавный генератор отчетов в виде мастера.

Основные шаги:

  1. С помощью визуального редактора добавляются таблицы и выстраиваются связи между ними
  2. Галочками отмечаются поля, которые необходимо вынести на селективный экран
  3. Галочками отмечаются поля, которые надо вынести на экран

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

Заготовка содержит:

  • Селективный экран
  • Описание внутренней таблицы
  • Выборку данных (select … inner join …)
  • Подготовку и вывод ALV-grid

Ну а затем можно уже и напильником.

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

Есть к нему ещё более специализированная штука (ABAP Join Wizard), которая только выдаёт заготовку сложной выборки – описание внутренней таблицы и соответствующий оператор select.

Вот такая забавная штука.

“Мы поём стихи”

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

На выходных случайно на канале Ностальгия наткнулся на передачу “Мы поём стихи”. Причем на самое начало. И не мог оторваться до самого конца. Согрело душу.

Год примерно 1984-1985. Никитины разговаривают с Эльдаром Рязановым. И между разговором проходят иллюстрациями песни – затронут весь спектр репертуара.

Достать это можно сами-знаете-где, я видел там несколько сидеров.

Здесь много всего.

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

Во-вторых, гитара у Никитина является серьёзным инструментом.  Песни получаются разными. Здесь и аккордов больше четырёх и есть мелодические/инструментальные врезки. В таком ракурсе песни Булата Окуджавы не дают простора – получается почти то же самое.  Впрочем ещё можно сравнить и с Жанной Бичевской, ибо есть совпадающие песни.

В-третьих, дуэт Татьяны и Сергея интересен в вокальном плане. Здесь нет простых “хором” или “по очереди”. Эти два голоса часто играют друг с другом, дополняют, но не смешиваются. Простые, понятные, близкие.

В-четвёртых. Песни они поют всегда на Стихи. А детские ли это стихи за авторством любимейшей Юнны Мориц, или серьёзный сонет Шекспира, или шуточная студенческая песня, или любимый мной Булат Окуджава, или Пастернак – дело отдельно взятой песни.

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

 

ДВЕ ЖЕНЩИНЫ

Две женщины проснулись, и глядят
Проснулись, и глядят в окно вагона.
Две женщины умылись и сидят,
Друг дружку наряжая благосклонно.

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

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

Две ясности, две хитрых простоты,
Играют в дурака на нижней полке,
А сам дурак лежит на верхней полке,
Заглядывая в карты с высоты.

Там на заход — валетик желторотый,
Там на отбой — четыре короля,
Там козырями — черви под колодой,
Там за окном — летучая земля.

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

Браузерные игры с реальными деньгами – это зло

Очень много развелось разных онлайн игр. Я всё так между делом щупал разные. Даже не хочется упоминать больше их названия.

Поигрывал в них до тех пор, пока не становилось всё ясно с игровой механикой. Это единственное, что меня в них интересовало.

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

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

Минусы

Неограниченность.

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

Если сравнивать такие онлайн-игры с игровыми автоматами, то в последних хоть есть шанс(мизерный) что-то выиграть.

Дутый игровой мир.

Концепции и мир как минимум отсутствуют, а как максимум оставляют желать намного лучшего. Сюжетная составляющая всегда несущественна. Главное действо – меряться пиписьками и бить кому-либо морду (и соответственные эмоции). Остальное – картонные декорации и чат.

Безвозвратность.

Введённые деньги никак нельзя вернуть обратно.

Ненадёжность.

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

Несравниваемость денежных вложений.

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

Поэтому реально сравнить две игры по уровню “реала” – нереально, уж простите за тавтологию.

Уровень “реала” зависит только от жлобства администрации, и больше ни от чего. А из-за того, что эта администрация контролирует сама себя и не имеет эталон, границу жлобства она переходит достаточно быстро.

Трата денег стимулирует трату денег.

До момента вложения реальных денег игра является развлечением.

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

Бухгалтерский учёт.

Большой вопрос, как в таких играх ведётся бухгалтерский учёт. Думаю, что это теневой оборот денежных средств. Стимулировать его считаю глупым.

Экономическая модель.

Оценённые внутриигровые плюшки не имеют никакой себестоимости. Администрации они ровно ничего не стоят.

Игроделы делают собственно движок и контент (общее капиталовложение), и поэтому между аккаунтом с условной стоимостью активов 1 уе и 1’000’000 уе нет абсолютно никакой экономической разницы.

Сервер, трафик, администрация и поддержка по сути являются арендой или ежемесячными фиксированными платежами без капитализации. Значит связь реальной себестоимости есть только с количеством действующих аккаунтов(с учётом их средней активности), а не их денежным или вещевым наполнением.

Плюсы

А плюсов-то и нет. Просто найден далеко не самый удачный метод “благодарности” для владельцев, разработчиков, администраторов и модераторов. Но деньги всё-таки текут, в результате эта дрянь плодится по всему интернету. Затем появляются клоны. Тьфу.

Лохи отправить эсэмэску “я не лох” всегда найдутся, на что “хозяева” и рассчитывают.

Выводы

Не играйте в такие игры.

Никому не советуйте играть в такие игры.

Настороженно относитесь к приглашениям поиграть.

Помните, что единственная цель “хозяев” – это наварить денег, варить деньги постоянно и не париться.

Развязка близка

Половина матчей 1/8 позади. Четыре разнохарактерных матча.

Судьи продолжают расстраивать. Пока грубые ошибки были допущены в двух из четырёх.

Были ли эти грубые ошибки результативными – вопрос спорный.

С одной стороны: если эти ошибки “задним числом” засчитать в финальном счете, то судьба команд бы не изменилась.

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

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

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

"Если бы мяч был засчитан, игра пошла бы по другому сценарию", — полагает и автор этого гола Лэмпард .

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

Мы вам покажем драму „Пиф-паф“. Охотник и заяц: кто прав, кто не прав…
Думайте! Думайте! Думайте! Думайте!.. Думай!

Вот достаточно интересное старое обсуждение по поводу: Видеоповторы в футболе: необходимо или нет?

А вот ещё новое — Видеоповторы: а вы спросите у регбистов!

На каждый аргумент маразматиков и консерваторов, находятся внятные контр-аргументы.

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

А вот после этого начинается маразм:

Футбольная ассоциация больше не разрешает транслировать повторы спорных эпизодов матчей чемпионата мира в целях безопасности судей.

Международная федерация футбольных ассоциаций (ФИФА) приняла решение запретить показы повторов спорных эпизодов матчей чемпионата мира в ЮАР на больших экранах стадионов. На такой шаг FIFA пошла после того, как 27 июня во время двух важных матчей 1/8 финала были показаны видеоповторы судейских ошибок, которые вызвали бурю негодования как болельщиков, так и футболистов.

Мнения со стороны собственно арбитров отличаются невыражением собственного мнения.

Глава судейского комитета ФИФА Хосе-Мария Гарсия Аранда: Внедрение видеоповторов? Наша работа – судить матчи. Если ФИФА решит, что нам нужна помощь, мы согласимся и примем ее. Но думать о том, введут ли видеоповторы, – не наше дело. Это работа тех, кто следит за нами. Мы же должны сосредоточиться на предстоящих матчах.

Вероятно, им очень не хочется портить отношения с руководством ФИФА. Будут рыпаться – перестанут выпускать, и найдут более лояльных.

Равшан Ирматов: Как нам судейский комитет ФИФА скажет работать, так мы и будем делать, – дипломатично ответил на этот вопрос Ирматов. – Не в моей компетенции обсуждать, как работать. Есть правила, и мы их исполняем.

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

Пока есть шансы на стопроцентные южноамериканские полуфиналы. Пять команд со всех сторон идут к финалу. Из них две уже стали на шаг ближе.

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

Во-первых: Чередование русского и казахского языка у комментаторов. К этому ещё можно привыкнуть.

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

В-третьих: Каналы Хабар и ЕлАрна совершенно не бдят за адекватностью собственной телепрограммы на соответствующих сервисах Mail.Ru и Yandex.Ru.  А пока я сверяюсь с Excel-файлом. Бред какой-то.

Чемпионат мира идёт полным ходом

Что-то радует, что-то расстраивает. За кого-то болею, да и против кого-то тоже.

Порадовали, например, матчи Аргентины и матч Испания — Швейцария. Диего Армандо Марадона хорош, привёл себя в порядок, любит свою команду, и команда любит его.  И даже по мячу ударил разок. Порадовал матч Бразилии и Северной Кореи, вероятно самый чистый на этой стадии.

Расстроили матчи Греции, теперь я болею против неё.

Скорее расстроил, чем порадовал матч США – Словения, в котором судья отобрал у них победу. Напор команды порадовал (хотя я болел против них), у США получилось надавить, в отличие от Испанцев. 

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

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

Ошибки больше связаны не с квалификацией самих судей, а с актёрским мастерством футболистов. Очень трудно судить, если обе стороны всё время нагло врут и аппелируют. Этот путь ведёт в тупик, хотя есть и желтые карточки. Вот обратите внимание на матч Германия – Австралия. Там немцы заработали две желтых карточки за симуляцию. Можно даже сказать, что желание свалиться было настолько сильным, что немцы валились при попытке силового контакта. Проблема была только в том, что очень медленные австралийцы успевали размахнуться, но не успевали “сконтактировать”. Немцы успевали упасть до контакта – это и есть симуляция, что было достаточно заметно на повторе.

Именно поэтому в уголовном кодексе есть статья за лжесвидетельство перед судьёй. Мне кажется, что правила нужно немножко менять.

ЗЫ. Мне всегда было интересно, есть ли чувство стыда у футболистов? Может деньги и псевдопрофессионализм не совместимы этим чувством ?

SAP Business Object + Чемпионат мира по футболу = ?

Оказывается если сложить эти две фразы, то можно получить вот такую штуку

http://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/19733

Забавное и одновременно полезное применение. Всем заинтересованным – заходить и крутить отчёты.

Мне интересно, а когда комментаторы сидят и комментируют, то откуда они достают свою информацию. Голова, Бумажки или Информационная Система ?

Вот несколько примеров с “официального” блога:

(далее…)

Алматы шум говна

Проезжал по проспекту Аль-Фараби, что находится в городе Алматы. Вдоль дороги висят флажки с тремя словами “Алматы гул кала”. С точки зрения русского языка слова выбраны (мягко говоря) не оптимально, особенно учитывая, что написано кириллицей.

Я понимаю, город цветов, охрана окружающей среды, прочие мероприятия и всё такое… цитата из новостей:

Ну а для любителей более умиротворяющих зрелищ состоится подведение итогов конкурса цветов "Алматы – гул кала"

А как надо было назвать акцию “Алматы – Цветущий Город” на казахском ?

Новый подход к чемпионату мира по футболу

Местное кабельное телевидение почему-то совсем меня не радует трансляциями с чемпионата мира. По ОРТ какая-то странная модификация без футбола. Каналов Россия-1 и Россия-2 нету.

Хотя говорят, что чемпионат мира показывают по каналам “Хабар” и “Ел Арна”, но отсутствие таких пунктов в программе TV.Mail.ru меня настораживает.

http://www.ferghana.ru/news.php?id=14933 – здесь кое-что интересное по поводу трансляций:

11 июня в ЮАР стартовал Чемпионат мира по футболу, который целиком будет транслироваться в прямом эфире на узбекском телеканале «Спорт». Договор об этом был подписан в начале мая между FIFA и Национальной телерадиокомпанией Узбекистана (НТРК), который обошелся последней в смешную сумму – всего в 20 тысяч долларов США.

FIFA, у которой для всех стран мира существует стандартная такса за возможность полной трансляции Чемпионата мира в прямом эфире – около $5 млн., пошла на гигантскую уступку Узбекистану благодаря слезливому письму от НТРК.

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

Так вот, спасибо отдельно взятым треккерчанам, матчи оперативно выкладываются через собственный сидбокс. Поэтому первые 4 матча (и вероятно все последующие) я смотрел не в прямом эфире, а в удобное время на следующий день. Главное тут: не знать результатов игр – только в этом случае можно заменить данный суррогат на действительно прямой эфир. Тут главное предупредить сокамерников на работе и осторожнее посещать интернет.

Возможность поставить паузу, повторить, промотать — весомые плюсы.

* * *

И ещё к раздумьям вокруг футбола. Комментатор кратко болтнул о причине непопулярности футбола в США, а я задумался:

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

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

Так что вопрос – сколько в этой легенде правды, а сколько шутки.

* * *

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

Таки есть случайные числа в ABAP

Нашлась случайно фишка по получению случайного числа:

Random

* Create a random number generator to return random
* numbers in the range of 1..{String Length}:
CALL METHOD cl_abap_random_int=>create
    EXPORTING
        seed = CO_SEED
        min = lv_min
        max = lv_max
    RECEIVING
        prng = lo_prng.

 

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

А нашлась такая цитатка в книге “ABAP Cookbook, Programming Recipes for Everyday Solutions” за авторством некоего James Wood.

В остальном в бесплатной главе не нашел ничего особенного.

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

А возможно там есть кое-что интересное, очень хотелось бы полистать вот это:

3.3 Introspection with ABAP Run Time Type Services …………………… 98
3.3.1 ABAP RTTS System Classes ………………………………………. 99
3.3.2 Working with Type Objects …………………………………….. 100
3.3.3 Defining Custom Data Types Dynamically …………………… 102
3.3.4 Case Study: RTTS Usage in the ALV Object Model ……….. 104

 

7.2 Transaction Processing with SAP LUWs … 235
7.2.1 Introduction to SAP Logical Units of Work … 235
7.2.2 Bundling Database Changes in Update Function Modules … 239
7.2.3 Bundling Database Changes in Subroutines … 242
7.2.4 Performing Local Updates … 244
7.2.5 Dealing with Exceptions in the Update Task … 245

 

7.5 Tracking Changes with Change Documents ……………………………. 268
7.5.1 What Are Change Documents? …………………………………. 269
7.5.2 Creating Change Document Objects ………………………….. 269
7.5.3 Configuring Change-Relevant Fields ………………………….. 273
7.5.4 Programming with Change Documents ……………………… 274

М-м-м…