суббота, 23 апреля 2016 г.

Утиные истории

Жизнь летит как ураган
В утиных сказках!
Лазеры, аэропланы,
Песни! Пляски!


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

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

И в этом ручейке водятся утки.

Уток подкармливают, в общем, всё как обычно. Однако, сегодня, когда мы подходили к парку, мы заметили нечто необычное.


Да, возле речки была довольно необычная утка с целым утиным выводком – восемь утят! У нас, как и везде, водятся обычные кряквы (Anas platyrhynchos), а это была утка породы средний крохаль (Mergus serrator linnaeus). Вид считается редким, в большинстве районов – очень редким, и внесён в том числе в Красную книгу Республики Беларусь.

Мы на неё посмотрели и пошли дальше кормить крякв – понятно же, что мама утка нас не подпустит.

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

И вот с этого перепада падает один утёнок.

Мы этого не видели, рассказ со слов непосредственных свидетелей. Утка прыгает за ним, и, естественно, все остальные утята немедленно следуют за ней. Утка пытается посадить их на спину (получается, естественно, посадить максимум пятерых) и выпрыгнуть с ними наружу, но стратегия заранее обречена на провал – надо возвращаться за остальными, а утята прыгают за ней. Она стала носиться туда-назад, спрыгивать-запрыгивать, тревожно крякать...

Я эти странные утиные телодвижения наблюдал издалека. То, что утята упали вниз, я понял сразу, но что туда надо бежать и спасать утят, как-то не сообразил.

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

Присутствующие люди, оказывается, на тот момент уже вызвали МЧС. Приехали ребята, спустились в воду, с фонарём светили за решётку, но срывать решётку или замок на калитке не решились. Звонили кому-то, но толку – чуть. Через время посветили за решётку ещё раз, и сказали, что на этой стороне их нет, и уехали.

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

А там эта утка и один спасшийся утёнок!




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



Поверьте мне на слово, их там трое.

Ребята сказали, что везде дальше решётки, и, самое главное, никто не пищит больше. Такие дела. И вот, сотрудник МЧС отправился выпускать утят, и счастливые малыши рванули к маме. Кстати, я никогда не подозревал, насколько быстро плавают утята.






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


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


Но я надеюсь, мама утка будет внимательна и уследит.

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

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

Вид включён в Приложение II Директивы ЕС по охране редких птиц, Приложение III Бернской конвенции, Приложение II Боннской конвенции. Внесён в Красную книгу Латвии, Красную книгу Республики Беларусь. Так что, буду теперь директору звонить, может, он окажется способным взять на себя ответственность. Надеюсь, их оттуда заберут.

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

Продолжение: http://dimoneverything.blogspot.com.by/2016/04/2.html

вторник, 8 декабря 2015 г.

Почему стоит заглядывать на кладбище или Систематическая ошибка выжившего


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

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

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

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

Ошибка выжившего ждёт вас в денежных вопросах: вот, ваш друг начинает предпринимательскую деятельность. Вы его потенциальный инвестор или партнёр и чувствуете: это может быть новый Гугл. Может, удача на вашей стороне. Но реальность в том, что наиболее ожидаемый результат – это то, что компания даже не стартует. Второй наиболее вероятный исход – банкротство в ближайшие 3 года. Из тех компаний, которые переживают первые три года, большинство никогда не вырастают более, чем до десяти сотрудников. Что, получается нужно никогда не рисковать тяжело заработанными деньгами и никогда не рисковать увольняться с основной работы? Да нет, не обязательно. Но вы всегда должны распознавать ошибку выжившего, искажающую вероятность успеха, как приближающая линза.

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

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

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

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

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

пятница, 28 августа 2015 г.

Гибкая методология разработки и правдоподобное отрицание

– За последний месяц он побеседовал с каждым из своих учеников. Своего рода передача последней крупицы мудрости.
– И какой же последней крупицей мудрости он поделился с тобой? – спросил я. – Ну, то есть если это не секрет… или не что-то такое, слишком личное.
Энея улыбнулась:
– Напомнил, что заказчик непременно заплатит вдвое больше, если сообщать о дополнительных расходах постепенно и только после того, как будет заложен фундамент и конструкция начнет обретать форму. Он сказал, что тогда отступать уже некуда, и клиент не сорвется с крючка.
Дэн Симмонс, Восход Эндимиона.


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

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

Например, приходит человек и говорит, что ему нужен проект, который будет делать то и это, и будет стоить шестьдесят тысяч долларов. А мы рассказываем ему, что мы работаем по гибкой методологии. Это когда мы придумываем список задач, так, что после выполнения их всех получится проект. Потом оцениваем, сколько времени займёт каждая из них. Потом выбираем задач на первую итерацию (допустим, неделю) и делаем. Заказчик проверяет нашу работу, оценивая результат выполнения каждой из задач. Если что-то недоделано / сделано не так, просит переделать. В итоге, как мы это называем, "принимает" задачу, говоря, что тем. что мы сделали в рамках этой задачи, он доволен. Потом выбираем задач на вторую итерацию. Смыть, повторить.

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

Как вы думаете, есть ли у клиента таким образом шанс получить то, что он хотел тогда, когда он хотел?

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

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

Большая часть проектов заканчивается по исчерпанию бюджета заказчика. А точнее, по исчерпанию 3-10 изначально заявленных бюджетов, то есть, когда у заказчика действительно заканчиваются деньги. И виноват в этом заказчик.

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

Компания всячески пытается улучшить ключевые показатели такого процесса ведения проектов, требуя этого от разработчиков и применяя материальное стимулирование. Ключевыми же являются показатели, которые улучшают нашу способность правдоподобно отрицать. Это закрытые истории – всемерное уменьшение количества незакрытых историй. Это постоянное уведомление заказчика о пересмотре оценок – мол, ты же понял, что после твоих изменений мы теперь будет это делать на два дня дольше? Это обязательные ежедневные отчёты – сегодня я делал то-то и то-то. И потом если что – ну он же получал ежедневные отчёты о работе и принимал выполненную работу и соглашался с оценками.

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

Дисклеймеры:

  1. Может показаться, что я говорю это так, как будто это что-то плохое. Это не совсем так. Я понимаю, что разработчику гораздо комфортнее при такой системе, и что я разработчик я тоже понимаю. Но чем-то от этого попахивает. Наверно тем, что сначала заказчику вообще оценивают проект целиком, а не говорят сразу, что он получит неизвестно что неизвестно когда.
    Хорошее резюме из комментариев: "
    Фактически, используя аджайл и оценив матерость заказчика на этапе собеседования, можно сказать проект провалится или нет. Получается, что исполнитель заранее подписывается на проект, который в итоге окажется провальным и в этом несомненно будет виноват заказчик, потому что исполнитель матерый, а заказчик -- нет."
  2. Нет, я не знаю, как лучше. Фиксированная цена звучит честнее, но там возникают проблемы с определением понятия "сделано".
  3. Да, я знаю, что при классическом "водопаде" тоже проваливаются проекты. Но там я могу увидеть шанс, что проект состоится, если команда сделает всё правильно. А здесь посредством дисперсии ответственности любая команда не может обеспечить успешную сдачу проекта в срок – только дисциплина заказчика может дать шанс на это. С другой стороны в провале "водопадного" проекта всегда виновата команда, а в провале "гибкого" – заказчик.


Ссылки:

  1. Правдоподобное отрицание.
  2. Гибкая методология разработки.
  3. Экстремальное программирование.
  4. Каскадная модель.
  5. Песни Гипериона (эпиграф).

понедельник, 27 апреля 2015 г.

Rails authentication routing constraints considered harmful

Давно не писал в блог, а надо. Попробую писать почаще.

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

Сегодня мы поговорим о реализации аутентификационных запретов посредством ограничений в маршрутном файле. Уф. В общем, о authentication routing constraints.

Проблема

Реализация аутентификации в приложении требует способ задания запретов. Способ сказать в приложении "а вот сюда можно только залогиненным пользователям".

Решение


Каждая библиотечка аутентификации в мире Рельсов, работающая на уровне контроллеров, считает своим долгом предложить своему пользователю routing constraint. Примеры:


  • Devise
    authenticated :user do
      resources :posts
    end
  • Clearance
    constraints Clearance::Constraints::SignedIn.new do
      resources :posts
    end
  • Monban
    constraints Monban::Constraints::SignedIn.new do
      resources :posts
    end
Ну, вы поняли. 

Работает это следующим образом – роутинговая система Рельсов позволяет на маршрут задавать условие, при невыполнении которого маршрут просто не сработает. Пример из Рельсов: 

class BlacklistConstraint
  def initialize
    @ips = Blacklist.retrieve_ips
  end

  def matches?(request)
    @ips.include?(request.remote_ip)
  end
end

Rails.application.routes.draw do
  get '*path', to: 'blacklist#index',
    constraints: BlacklistConstraint.new
end

Если ограничение отвергает запрос, роутинговая система не учитывает этот маршрут и переходит к следующему, а по достижении конца файла – бросает RoutingError, который приводит к ответу 404: страница не найдена.

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

Почему плохо


Этот подход поначалу кажется прекрасной альтернативой написанию в контроллере чего-то вроде before_action :authenticate_user!. Вот всё то же самое, но не нужно разбивать это по отдельным файлам контроллеров или выбирать подходящий базовый контроллер. Всё красиво записано именно там, где это нужно – в файле маршрутов. И вы именно так к этому и относитесь: как к замене authenticate_user!.

Однако, это не так. Дело в том, что authenticate_user! и ему подобные в случае, если пользователь незалогинен, не отдают пользователю 404. Они перенаправляют пользователя на страницу ввода логина-пароля с сообщением "вы не вошли в систему", а после успешного входа ещё чаще всего возвращают назад.

А вот routing constraints именно что возвращают 404. И это очень неудобно для пользователя. Потёр он сессию в браузере, зашёл на привычную страницу и увидел "Страница не найдена". Вдобавок, "Страница не найдена" в Рельсах по умолчанию не содержит навигации, поэтому, нужно опять что-то набирать в адресной строке и пользователь совершенно не понимает, что происходит и куда он попал.

Заказчик просит это исправить, вы разбираетесь в проблеме, убираете routing constraints и раскидываете по контроллерам authenticate_user!.

Что делать?


На это есть два ответа: простой и правильный. Прежде всего, не используйте routing constraints и пишите authenticate_user!. Это как минимум не идёт в разрез со стандартным способом делать вещи, и не доставляет проблем пользователю. Но есть и более правильный путь.

Правильный ответ


Дело в том, что проверка полномочий "гость или залогиненный пользователь" – всего лишь частный случай проверки полномочий в приложении вообще, то есть, авторизации. 

Используйте библиотеку авторизации, такую, как CanCan или Pundit. Везде, всегда не глядя делайте authorize! из этой библиотеки. Большинство из них позволяют потребовать, чтобы authorize выполнялся и бросить исключение, если этого не произошло.

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

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

Пример для CanCan:

  • В контроллере (любом)
    class ArticlesController < ApplicationController
      load_and_authorize_resource
    
      def show
      end
    end
  • Вы можете указать ресурс и не обязаны его загружать:
    class ArticlesController < ApplicationController
      authorize_resource :articles
    
      def show
      end
    end
  • Собственно, в том самом одном файле прав доступа:
    class Ability
      include CanCan::Ability
    
      def initialize(user)
        if user # права залогиненного пользователя
          can :manage, :articles
          # ...
        else # права незалогиненного пользователя (гостя)
          can :read, :home
        end
      end
    end

    Понятно, что вы можете пользоваться CanCan'ом и по назначению, проверяя у уже залогиненного пользователя наличие определённых ролей.
  • Соль: чтобы при несоответствии полномочий незалогиненных пользователей перенаправлять на страницу логина, а если полномочия не соответствуют уже для залогиненного пользователя, показывать "доступ запрещён" (пример для Devise):
    class ApplicationController < ActionController::Base
      rescue_from CanCan::AccessDenied do |exception|
        if user_signed_in?
          redirect_to root_url, :alert => exception.message # доступ запрещён
        else
          authenticate_user! # перенаправление на страницу логина
        end
      end
    end
  • Чтобы обязать себя всегда вызывать authorize:
    class ApplicationController < ActionController::Base
      check_authorization
    end

Вывод


Для аутентификации не нужно использовать routing constraints. Если же всё же хочется отделить проверку полномочий от конкретных контроллеров и вытащить её в отдельный файл, всё встаёт на свои месте, если пользоваться библиотекой для авторизации. Что неудивительно, поскольку это – авторизация.

Дополнительно

  • Routing constraints – штука сама по себе хорошая. Пользуйтесь. Но не для аутентификации.
  • Библиотеки аутентификации, которые предлагают routing constraints – сами по себе хорошие. У них просят, они и предлагают. Вы не пользуйтесь. Они же не только это предлагают.

вторник, 24 марта 2015 г.

Первая RubyConfBY – впечатления

Дорога

Однажды я с тремя моими коллегами – Сашей, Вовой и Серёжей – собрались на на RubyConfBY в Минске. Поднялись мы рано утром в воскресенье, попрыгали в машину и поехали за триста километров послушать умных людей.

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

Итак, мы приехали в Минск. Навигатор в Яндекс.Картах привел нас на другой берег речки и предложил перебраться вплавь. Мы не сразу это поняли, а когда начали что-то подозревать, уверенно идущие впереди люди нас успокоили. "Наверно, они что-то знают", – подумали мы и спокойно пошли дальше.

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

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


Немало подивившись столь экзотическому входу, мы прошли внутрь и были вознаграждены:


Конференция

Мы заранее знали, что мы опаздываем на первое выступление, но в итоге оказалось, что мы пришли аж на середину второго. Выступление было про статический анализ кода в Руби, средствами специальных гемов для метрик, делали это ребята из JetBrains, соответственно, с позиций разработчиков RubyMine и PyCharm. Что запомнилось, это отвага молодого человека, выходящего на конфереции рубистов, и заявляющего "Я работаю на Питоне, и хотел бы обрисовать разницу между этими языками и подходами". Однако же обошлось без крови.

За ними вышел представитель главного спонсора этой конференции – компании Toptal – и в краткой приветственной речи стал зазывать к себе работать. Ну что делать, кто девушку ужинает, тот её и танцует.

Следующим был небезызвестный в Руби сообществе Божидар Батсов, активно продвигающий свой стандарт форматирования кода в Руби. Тут стоит сказать, что я уже давно хочу, чтобы в Руби сообществе появилось что-то похожее на PEP8 и столь же авторитетное, но думаю, что это безнадёжно. Одна из ценностей Руби, в отличие от Питона, гласит "должно быть много способов сделать это" – и по определению, любые подобные стандарты обречены быть уделом отдельных команд и проектов. А жаль.

На выступление "Rails in production" мы возлагали массу надежд. Однако, оно оказалось некоей версией урока "Как оно в продакшене устроено" для чайников. Вот прямо капитан очевидность у кафедры. Как же я был удивлён, когда вопросы из зала вскрыли в выступающем профессионального и эрудированного девопса и администратора, работавшего с кучей интересных и сложных проблем и инструментов. Жалко, что он решил сделать выступление "Rails in production 101", а не сделать выступление из ответа на любой из этих вопросов.

Выступление "Почему мы увольняемся с работы" порадовало прикольным разбором ценностей agile manifesto.


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

Вторая половина конференции

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

Майкла Паписа, автора RVM и давнего завсегдатая конференций по Руби, я уже знал в лицо. И его появлению не обрадовался. На Рубишифте он плакался о том, что почему-то все пользуются rbenv, а ведь rvm лучше, он такой хороший, такой красивый. На этой он рассказывал, что Бандлер не нужен, потому что всё есть в новом Rubygems. Нет, кое-что из того, что он сказал, весьма дельно и я сделал несколько заметок на будущее, но, чёрт побери, скучными у него получились даже дельные вещи.

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

Но до него пришлось послушать социальное выступление "ребята, давайте жить дружно". Оно было обо всём и ни о чём, и должно было убедить нас участвовать в жизни сообщества – делиться кодом, временем, ходить на конференции и выступать на конференциях. Нашлось место и RailsGirls и SummerOfCode, и многим другим подобным явлениям. В целом было позитивно, бодро и приятно. Запомнилась просьба встать и обнять камеру (Friday hug в воскресенье) ну и самым чистым английским на всей конференции.


Апотоник!

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

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

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

Домой

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

Расчёт времени возвращения оказался верным.

Мысли и выводы

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

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

Ну а вообще посещать подобные мероприятия приятно и полезно.

Благодарности

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

вторник, 31 декабря 2013 г.

Одно, совсем особое словцо о славянах, которое мне давно хотелось сказать

Немного Достоевского.

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

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

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

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

Да ни за что на свете не признают!

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

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

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

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

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

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

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

Здесь выдержка, по ссылке целиком, рекомендую. 

четверг, 28 ноября 2013 г.

Немножко политоты



tl;dr: Все пишут, а я чем хуже? Евросоюз - плохо, Таможенный союз - хорошо. 

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

Итак, для начала, никто не примет Украину в Евросоюз — об этом даже речи нет. Украина станет "ассоциированным членом" ЕС, как Израиль или Албания. Подробнее об этом можно прочитать в "соглашении об ассоциации Украины и Европейского союза". Это открытый документ на понятном языке на 236 страницах. Есть ещё и в оригинале — на 906 страницах. К майданщикам у меня вопрос - его кто-нибудь осилил не в пересказе? Врать не буду, я тоже не осилил, но всё же по диагонали полистал. 

Раздел IV, глава 1, часть 2 "Отмена пошлин" сыграет на руку не Украине, а Евросоюзу. Потому как Украина не сможет защищать свой рынок от импортных товаров. Да, я знаю, что вы хотите сказать: "это рынок, значит, туда нашим товарам и дорога, а их товары лучше, вот и будем пользоваться". Есть с этим одна проблема - закрытие производств, безработица и прочие радости прогрессирующего капитализма. Взамен будут открываться торгово-развлекательные центры в которых всё больше и больше людей будет продавать. Продавать европейские товары, отдавая прибыль на сторону. При этом, со стороны таможенного союза пошлины поднимут - и нам торговать будет не только нечем, но и не с кем.

Нельзя также переоценить вклад статьи 19 части первой "Перемещение персон" в общий развал экономики. Я, вообще, подозреваю, что как раз-таки за визы большая часть майданщиков и борются. Фиг с ним, что там будет на Украине, они за это время свалить успеют. Так вот, прогнозирую серьёзнейший отток трудоспособного населения, подстёгиваемый закрытием производств. Люди повалят пачками — уже в очереди стоят.

Статья 93 "доступ на рынок" в пункте 2 особенно хороша. Ограничение количества поставщиков услуг, как в форме количественных квот, монополий, эксклюзивных поставщиков услуг, так и требований проверки экономических потребностей. Именно этим способом будет рушиться экономика Украины.

Кого не задавят квотами, закроют стандартами. Раздел 4, глава 3 "Технические барьеры в торговле" говорит об обязательном переводе всех предприятий Украины, включая сельское хозяйство. Сроки жёсткие, а денег на это никто выделять не будет. И возникнет ситуация, когда на нашу территорию будут беспошлинно ввозить массу продукции, часть предприятий закроют квотами, а часть не сможет продавать товар на Украине же из-за несоответствия стандартам, а ненужные более квалифицированные и не очень кадры потекут на Запад.

А, и у нас на территории начнет согласно главе 9 "Стандарты, касающиеся интеллектуальной собственности" действовать европейский закон об авторском праве. А там за торренты или ex.ua вообще неиллюзорно сажают. И за ваш палёный фотошоп и украденный Microsoft Office - тоже.

Вообще со стороны Украины в документе, в основном обязательства. А со стороны Евросоюза - в основном требования.

Ладно. Когда осилю документ полностью, тогда и буду полемизировать. Давайте сделаем по-другому. Посмотрим на опыт последних стран, присоединившихся к Евросоюзу.

Литва.

Возьмём, например, Литву, член ЕС с 2004 года. Литва сейчас - председатель Совета Евросоюза, получает премии, числится участником антикризисного движения, приводится в пример другим союзникам.

Страна превратилась в "купи – продай", поскольку развитая в советские годы промышленность загублена напрочь, сельское хозяйство, стянутое путами квот и ограничений, до сих пор не может оправиться.  Кто-нибудь помнит вильнюсское объединение "Сигма"? Десятки тысяч ее работников выпускали добротную промышленную и военную электронику. Сейчас в ее просторных корпусах - торговые лавки и выставочные павильоны. В Клайпеде ушли в небытие ткацкая и чулочная фабрики, консервный завод, одно из крупнейших в Союзе рыбопромысловых объединений, в составе которого находилось более 400 судов. Стремительно сокращается поголовье крупного рогатого скота, а чтобы держать экспортную планку на взятой высоте, молокопереработчики прибегают к реэкспорту или гонят суррогат из порошка. Десятки тысяч грамотных, толковых работников выброшены на улицу, сидят на нищенском пособии или побираются и бомжуют. Более 20% семей прозябают за чертой бедности (вот хотя бы здесь). Такого не случалось ни в суровые годины войн или вселенских эпидемий: села и города, особенно малые, обезлюдели: страна официально потеряла более полумиллиона жителей. Вообще с вступлением в Евросоюз страны Прибалтики не в силах остановить массовую миграцию населения. Демография ужасающая — страны рискуют исчезнуть с карты мира.

Среди мигрирующих большинство — люди в возрасте от 20 до 30 лет. Если эмиграция будет продолжаться такими же темпами, то через 20-30 лет может сложиться ситуация, когда некому будет платить налоги в объеме позволяющем выплачивать пенсии.

Литва увеличила дефицит государственного бюджета с 2007 по 2009 г. в 8 раз и довела его до 12,1 % от размера ВВП. По итогам 2010 года дефицит бюджета составил уже 7,1% от ВВП. Государственный долг Литвы за этот же период вырос с 16,9 до 29,5%, это при том, что темпы экономического роста в этом государстве в 2012 году еще более замедлились. 

Патриоты Украины, вы именно этого хотите?

Латвия.

Уничтожено производство сахара. Полностью. Латвия не то, что не импортировала сахар, в этой маленькой Латвии было пять сахарных заводов. Это было национальное производство, часть их "самости". Закрыли и теперь Латвия импортирует сахар. Последний сахарный завод в Риге получил от ЕС 13.5 миллионов евро компенсации за закрытие. 

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

Это я тем, кто говорит, что зато Евросоюз сохранит национальную культуру, язык и прочую "самость". Да пожалуйста! Пока это бизнесу не мешает, сохраняйте! А если мешает - извините.

В Латвии дефицит государственного бюджета вырос с 2007 по 2009 годы в 28 раз и достиг величины 10,2% от ВВП. По итогам 2010 года дефицит бюджета составил 7,7%. Государственный долг увеличился за это же время с 9,0 до 36,7%. В 2011 году размер дефицита бюджета страны сократился с 8 % до 5,5% от ВВП. Существует опасность того, что к 2014 году государственный долг этого государства возрастет до 52%.

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

Прибалтика в целом.

Уже через два три года после вступления стран региона в ЕС было зафиксировано увеличение инфляции. В 2007 году среднегодовая инфляция в Латвии – 10,1 процента, в Эстонии составила 6,6 процента, в Литве – 5,7 процента.

Сильно выросли цены на продукты питания, предметы повседневного спроса и лекарственные средства. В декабре 2007 года по сравнению с тем же периодом 2006 годом рост потребительских цен в Эстонии составил 9,6%, в Латвии – 14,1%, в Литве – 8,1%. В Латвии данный уровень является самым высоким за последние десять лет.

В Эстонии безработица выросла за период с 2007 по 2010 годы с 4,7% до 14,6%, в Литве – с 4,3% до 17,3%, а в Латвии – с 6,0% до 17,1%. Согласно статистике Eurostat, в первом полугодии 2011 года уровень безработицы в Латвии составил 16,2%, В Литве – 15,6%, в Эстонии – 12,8%, при среднем показателе по ЕС в 9,5%. Можно говорить о том, что в 2011-2012 годах ситуация с занятостью населения не улучшилась.


Венгрия.

Кто-нибудь помнит, что такое "Икарус"? Увы, их больше не делают. Квоты не позволяют серийное производство. 

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

Да и в целом там картина стандартная для новых членов Евросоюза - вот, почитайте.

Греция.

Закрыли судостроительные заводы. Решили, что лучше корабли строить в Германии. Уже после вступления в Евросоюз, греческие предприниматели заказывали у Германии более 700 кораблей для собственных нужд. Кораблей, которые раньше строили в Греции.

И как обычно из-за квот сократили фермы по выращиванию маслин и... вырубили виноградники. Это вообще трагедия, я считаю. Ну, о том, что сейчас в Греции добровольно заражаются СПИДом, чтобы получать пособие, не писал только ленивый.

Польша.

В свое время угольная промышленность Польши составляла основу экономики.

Хотя в последние годы перед членством в Евросоюзе отрасль нуждалась в государственной поддержке. В Польше после 2004 года закрыли 90% своих угольных предприятий, на которых работали 300 тысяч человек. Остальные 10% - были приватизированы и реорганизованы. В целом, большинству польских шахтеров пришлось искать другую работу.

Если кто-то думает, что в современной энергетике уголь не нужен, вам к школьному учителю или к врачу. Европа покупает уголь у США в огромных масштабах - например, в 2012 году он составил 66 миллионов тонн.

Еще жертвы - Гдыньская и Гданьская верфи. Гдыньская закрыта вообще. Гданьская сейчас разделена на два частных предприятия и почти не работает.


Прогноз.

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

Россия.

Это заслуживает отдельной статьи, но если вкратце, Россия готова открыть свой рынок для нас и сохранять наше производство - стратегия Таможенного Союза другая. У нас со времён Союза даже остались общие технологические цепочки, которые и сейчас нетрудно восстановить. взяв курс на Россию, Украина вполне могла бы стать через какое-то время одним из самых развитых регионов будущей объединённой страны. Но, увы, украинские политики и украинские СМИ куплены Западом. Поэтому Украина будет сопротивляться всеми копытами курсу на сближение с Россией: это сближение категорически невыгодно Штатам и Евросоюзу. Таким образом, Россия будет вынуждена сейчас занять сугубо прагматичную позицию по отношению к Украине. А именно: вести себя с ней так, как она ведёт себя по отношению, скажем, к Турции. То есть, не пускать украинские товары на свой рынок, не давать скидок на газ. Строить на своей территории заводы, которые позволят в некоторой перспективе отказаться от высокотехнологичного импорта из Украины. Например, самолётных двигателей.

А ведь всё могло бы быть по-другому...

F.A.Q.

Этот раздел будет постоянно обновляться по мере поступления возражений. Я обещаю по мере свободного времени рассмотреть их все.

Невидимая рука рынка.

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

По этому поводу высказывались специалисты и аналитики, гораздо умнее меня. Однако же, я постараюсь.

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

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

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

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

В России только трубы.

Я процитирую. "Россия (и ее кореша лузеры из ТС) - болото, и там будет только хуже, все эти иллюзии про совковые производственные схемы, космические двигатели для марсианских ракет и тд, оно никому не надо - Россия живет на газе и нефти, кроме труб там ничего не надо никому."

Короткий ответ: http://www.sdelanounas.ru/. Полистайте подольше, если захотите придраться к одному-двум пунктам. Я отдам их вам, согласившись, что да, это никому не интересная чушь. Вряд ли вам удастся сделать это хотя бы с четвертью списка.

ВВП на душу населения.

В упомянутых странах растёт экономика. Это видно по росту подушевого ВВП. Доля частного сектора в экономике тоже сильно выросла, то есть, реально всё стало лучше. Естественно, ("нет нужды лишний раз пояснять"), выросла покупательская способность.

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

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