Заметки Андрея Гейна

I worked at Google for -10 days

It’s the story of how I was laid off from Google before I even started to do my job there. I have tried to write only facts, although there is a small hurricane somewhere inside me right now.

It began nearly a year ago, in April of 2022, when I applied for multiple SWE and SRE positions at Google. Large tech companies usually have a lengthy hiring process, but I could take it slow. I successfully completed five technical interviews during May and June. However, shortly after that, the company encountered some difficulties due to the global post-COVID crisis, and as a result, HR were unavailable for weeks. I had to be patient.

In July, I entered the Team Matching Phase where I had the opportunity to meet with hiring managers. During these meetings, we talked about ourselves, the team, and the project, and ultimately decided whether or not we were a good fit for each other. After attending two meetings, I realised that I wasn’t interested in joining either team at the moment.

Regrettably, I had to wait a considerable amount of time for the next opportunity. Google had announced an international hiring freeze, which essentially halted all interview and job offer processes. The exact extent of the freeze and the regions it affected is unclear, with contradictory information available online. Nevertheless, the freeze did affect me: I was assigned to a different HR manager who informed me that “Unfortunately we are not in a position to move forward with your application at this time due to a current slowdown in hiring at Google. Our leaders are taking the next few weeks to review our priorities for the rest of the year and we hope to have an update for you at the beginning of August.”

At the beginning of August, things didn’t change a lot (“Unfortunately we still have a pause on hiring and I’m afraid that there have been no further updates from the business side at this point in time.”), and at the end of the month either (“Unfortunately we still haven’t had any news, I’m really sorry that it’s taking longer than initially expected”). It wasn’t until the end of September that the situation shifted. I received news that my candidacy could be submitted to the Hiring Committee before completing the team matching phase. Nearly six months after submitting my application, I was thrilled to learn on October 11th that the Hiring Committee had approved me. The next step was to find a team that was willing to bring me on board. Fortunately, a suitable team was found in November. I had a conversation with Tom, the hiring manager, and we hit it off. From there, the process moved forward smoothly.

On November 17, my salary was announced and in December, I received an official offer for a SRE position at Google London. I began preparing for my move by taking an English exam and a mandatory tuberculosis test for Russians working in the UK. After the long New Year holidays, I applied to the visa application center, which took nearly two months to issue the visa. In March, I quit my previous company, Yandex, to spend the last month preparing for my move to London, which involved vacating my apartment in Yekaterinburg, packing my belongings, and selling some items.

I had planned to fly out on April 10, giving myself a week to acclimate and get comfortable before starting work on April 17. However, on the evening of April 6, I received an unexpected email from Liz West, the head of Google Cloud HR in Europe, asking to connect with me regarding “an update on my Google offer”. I chose to connect the following day.

During the call, Liz West informed me that my contract with Google had been terminated due to a wave of layoffs that began in the United States and now reached Europe and Britain. “Unfortunately”, my position had come under reduction, so I no longer had the job I had been working towards for the past year. Nothing personal, just business.

This is the official notification that I received after the conversation:

Thus, the contract with me has been terminated 10 days before it was supposed to take effect.

As for what to do next, I am not entirely sure yet. I held a garage sale (in Russian) and sold most of my belongings. The remaining items were either discarded, recycled, or packed into two suitcases that I had planned to take with me. Moving to a new country is a difficult task that typically requires months of preparation. Changing these plans on the fly is challenging and somewhat painful. However, I feel that I should say something optimistic at the end. All will be good 🙂

If you would like to speak with me, please send an email to andgein@gmail.com, or message me on Telegram @andgein. Additionally, I would be grateful if you share this story as widely as possible.

Заметка двадцатая. Как я проработал в гугле -10 дней

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

Это русская версия поста. Если вы хотите пошарить ссылку, лучше отправлять английскую: https://andgein.ru/blog/all/20-i-worked-at-google-for-10-days/.

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

В июле я добрался до Team Matching Phase — это когда тебе устраивают встречи с менеджерами нанимающих команд, ты рассказываешь про себя, они про команду и проект, и вы решаете, нравитесь ли вы друг другу. Мне дважды попались проекты, в которые я не очень хотел, и я решил подождать ещё.

К сожалению, ждать пришлось долго — Гугл объявил международный фриз найма, то есть приостановил все процессы, связанные с собеседованиями и офферами. Насколько обширным был фриз и какие регионы он задел, знают только топ-менеджеры Гугла, в сети информация противоречивая. Однако меня фриз задел: меня передали другой эйчарше, которая первым делом объявила, что «Unfortunately we are not in a position to move forward with your application at this time due a current slowdown in hiring at Google. Our leaders are taking the next few weeks to review our priorities for the rest of the year and we hope to have an update for you at the beginning of August.»

В начале августа дело не поменялось («Unfortunately we still have a pause on hiring and I’m afraid that there have been no further updates from the business side at this point in time.»), как и в конце («Unfortunately we still haven’t had any news, I’m really sorry that it’s taking longer than initially expected»). Ситуация изменилась только в конце сентября, когда мне сказали, что мою кандидатуру могут отправить в Hiring Committee до того, как для меня найдётся подходящая команда. 11 октября, спустя почти полгода с подачи заявки, меня обрадовали: Hiring Committee одобрил меня, и нам остаётся только найти команду, которая готова меня взять к себе. Такая команда нашлась в ноябре — я созвонился с Томом, нанимающим менеджером, мы понравились друг другу, и с тех пор процесс сдвинулся с места.

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

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

Вечером 6 апреля новый для меня человек, Лиза Уэст, руководительница эйчаров Гугл Клауда в Европе, написала мне письмо: «I am reaching out on behalf of Google Recruiting to provide an update regarding your Google offer. Would you have time to connect with me this week (tomorrow) or early next week (Monday)?». В понедельник я был бы уже в Лондоне, поэтому я выбрал tomorrow, то есть пятницу.

На звонке в пятницу Лиза Уэст сообщила мне, что Гугл разрывает мой контракт. Что мне не нужно ехать в Лондон. Что у меня больше нет работы, к которой я стремился последний год. Причина? Волна увольнений, начатая в январе в США, дошла до Европы и Британии, и моя позиция попала под сокращение. Ничего личного, просто бизнес.

Вот такое официальное уведомление мне прислали после разговора:

Таким образом, контракт со мной был расторгнут за 10 дней до того, как он должен был начать действовать.

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

Со мной можно связаться в телеграме или по почте andgein@yandex.ru. Я буду благодарен, если вы репостните эту заметку или её английскую версию: https://andgein.ru/blog/all/20-i-worked-at-google-for-10-days/.

Заметка девятнадцатая. О математике в музыке и докторах философии

«У слова тон значений больше, чем снега в горах.»
Иоанн де Грокейо

Привет! Сегодня мы поговорим про ноты. Да-да, те самые, которые до-ре-ми-фа-соль-ля-си. Почему в этом ряду их всегда семь? Почему после си снова идёт до, но следующей октавы? И почему на фортепиано между этим семью белыми нотами есть ещё пять чёрных? Почему их ровно пять, и почему они так странно расположенны?

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

Немножко физики

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

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

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

Музыканты в этот момент говорят, что звук, который вы слышите, образуется как сумма основного тона (например, ноты ля с частотой 440 Гц) и обертонов (от немецкого ober — высокий) — колебаний с частотой 880 Гц, 1320 Гц, 1760 Гц и так далее. Наше ухо воспринимает такую склейку позитивно, ведь все встречающиеся в природе звуки образуются ровно таким образом.

Здесь нам важно запомнить, что с точки зрения нашего уха колебания с частотами $\nu$, $2 \cdot \nu$, $3 \cdot \nu$, $4 \cdot \nu$ и так далее хорошо сочетаются друг с другом и приятно звучат. При этом частоты соседних колебаний относятся друг к другу как 1 к 2, 2 к 3, 3 к 4 и так далее. Благодаря этому факту появятся на свет приятные нашему слуху октавы, квинты, кварты и терции, но об этом чуть позже :-)

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

Именно поэтому две получившиеся ноты (построенные от частоты $\nu$ с её обертонами и от частоты $2 \cdot \nu$ с её обертонами) решили называть одинаково — и там ля, и тут ля. А чтобы эти ля различать, придумали, собственно, октавы. Нота, построенная на основной частоте 440 Гц — это ля первой октавы, а на основной частоте 880 Гц — ля второй октавы. Ля третьей октавы построено уже на 1760 Гц, дальше идёт ля четвёртой октавы и так далее. Октавы ниже первой тоже существуют — ля малой октавы строится на 220 Гц, ля большой — на 110 Гц и так далее.

Немножко математики

Окей, с октавами разобрались. Но откуда берутся остальные ноты внутри октавы? На самом деле они появляются достаточно естественным образом. Мы только что выяснили, что обертоны для ля первой октавы звучат на частотах 880 Гц, 1320 Гц и 1760 Гц. Про 880 Гц и 1760 Гц нам уже всё понятно — это ля второй и третьей октавы. А вот что такое 1320 Гц? Если частоты нот ля второй и третьей октавы относятся друг к другу как 1 к 2, то частота этой лежащей между ними ноты соотносится с ними как 2 к 3 и 3 к 4 (а $\frac{2}{3} \times \frac{3}{4}$ как раз равно $\frac{1}{2}$ — радует, что математически мы ещё нигде не ошиблись). Эта промежуточная нота — нота ми. На самом деле это не совсем современная нота ми, но мы об этом поговорим позже. Пока давайте считать, что это честная ми, образующая квинту с ля второй октавы и кварту с ля третьей октавы. Названия «квинта» и «кварта» на самом деле появятся позже, но уже сейчас нам нужно как-то обозначать музыкальные интервалы (промежутки между двумя нотами), вот давайте и воспользуемся правильными названиями: интервал между нотами с соотношением основных частот 2 к 3 будем называть квинтой, а с соотношением 3 к 4 — квартой.

Получается, что обертоны располагаются следующим образом: первый — через октаву после базового тона, второй — через квинту после первого обертона и третий — через кварту после второго (что то же самое, что через две октавы после базового тона). Ну а дальше аналогично появляются и остальные интервалы — большая терция (интервал с соотношением частот 4 к 5) и малая терция (5 к 6). Чтобы можно было сыграть такие интервалы на наших инструментах, внутри октавы появляются и другие ноты.

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

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

$$
\frac{8}{9} \hspace{4em} \frac{8}{9} \hspace{4em} \frac{243}{256} \hspace{4em} \frac{8}{9} \hspace{4em} \frac{8}{9} \hspace{4em} \frac{8}{9} \hspace{4em} \frac{243}{256}
$$

Обратите внимание — в этой последовательности встречается только два интервала — $\frac{8}{9}$, он побольше, и $\frac{243}{256}$, он поменьше (да, чем меньше число, тем больше интервал. Целая октава — это вообще $\frac{1}{2}$, как вы помните). Причём интервал $\frac{243}{256}$ встречается то через два больших интервала, то через три. Прямо как чёрные клавиши на фортепиано ;-)

Понятно, кстати, откуда здесь взялась дробь $\frac{8}{9}$ — это разность между двумя главными (после октавы, конечно) интервалами: квинтой и квартой.

$$\frac{2}{3} : \frac{3}{4} = \frac{8}{9}$$

В Пифагоровом строе не всё гладко — во-первых, эти двести-сорок-три двести-пятьдесят-шестых, которые появились как число, которого не хватало в ряду, чтобы произведение чисел во всём ряду было равно $\frac{1}{2}$. Смотрите: $\left(\frac{243}{256}\right)^2 \times \left(\frac{8}{9}\right)^5 = \frac{3^{5 \times 2}}{2^{8 \times 2}} \times \frac{2^{3 \times 5}}{3 ^ {2 \times 5}} = \frac{1}{2}$.

Во-вторых, фишкой пифагоровского строя было то, что от любой ноты можно было отложить не только октаву, но и чистую квинту, ведь $\frac{8}{9} \times \frac{8}{9} \times \frac{243}{256} \times \frac{8}{9} = \frac{1}{2}$. Исключение составляла только нота си, от неё квинта не откладывалась.

Пифагор попытался решить эту проблему добавлением в строй ещё пяти нот, тем самым разбив каждый из интервалов, равных $\frac{8}{9}$, на два более мелких интервала. С математической точки зрения он построил замыкание множества частот относительно операции откладывания квинты (то есть умножения и деления на $\frac{2}{3}$). Квинта от ля — это ми, квинта от ми — это си, но уже следующей октавы. Чтобы «вернуть» си в нашу октавы, просто делим частоту на два и продолжаем.

Немножко истории

Вы не поверите, но эта система просуществовала на протяжении 12 веков! Дольше, чем любая другая известная музыкальная система. Вот только музыкантов постоянно бесила так называемая волчья квинта. Дело в том, что если в системе Пифагора отложить квинту 12 раз, то мы должны получить исходную ноту, просто на 7 октав выше. Но на самом деле мы получим чуууть-чуть более высокую ноту, ведь $\left(\frac{3}{2}\right)^{12} \approx 129.746$, что чуть больше, чем $2^7=128$. Накопленную разницу называли пифагорейской коммой, и чтобы избавиться от неё, частоту какой-нибудь одной ноты немного подкручивали. В итоге одна из квинт внутри октавы получалась короче остальных и звучала абсолютно отвратительно, будто волки воют...

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

Этим кем-то стал Андреас Веркмейстер. Он сформулировал задачу так. Первое: нужно сохранить в октаве двенадцать традиционно устоявшихся звуков. Всё-таки 12 веков музыкальной истории так просто на помойку не выкинешь. Второе: никакой коммы быть не должно. И третье: все соотношения между соседними частотами должны быть абсолютно равными. Вот это было поистине революционное решение!

Математически Веркмейстер взял октаву с соотношением 1 к 2 и распределил её поровну между 12 нотами. Если две соседние ноты отличаются по своей частоте в $x$ раз, то $x^{12} = 2$, а значит, $x = \sqrt[^{12}]{2}$, вот и всё.

Частота ноты до-диез — это частота до, умноженная на $\sqrt[^{12}]{2}$. Частота ноты ре, следующей после до-диеза, это частота до-диеза, умноженная ещё на $\sqrt[^{12}]{2}$. И так далее! Через 12 нот получается идеальная октава.

Такие образом, Веркмейстер по сути равномерно распределил Пифагорову комму между всеми звуками внутри каждой октавы. Комма рассосалась и стала незаметной. Но досталось это счастье большой ценой: внутри октавы не осталось ни одного чистого интервала. Даже квинта — интервал, тысячелетиями считавшийся незыблемым — стала чуть короче, теперь она равна не $\frac{2}{3}$, а $\frac{1}{\sqrt[^{12}]{2}^7}$, то есть примерно $0,66742$.

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

Вместо заключения

Зачем я вам всё это рассказал? Во-первых, это красиво :-)

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

Бонус!

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

Заметка восемнадцатая. Разбор задания Wired CSV с Google CTF 2018

Год назад мы играли в Google CTF. В этом году решили не отставать и снова размяться командой старичков. Вообще мы стали чаще играть в CTF, это меня очень радует.

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

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

Итак, нам дали картинку подключения... эм... какого-то чипа на... эм... какой-то плате к... эм... какому-то устройству (не очень информативно, да, но вы же помните, что я в этом ничего не понимаю?)

Кроме фотографии нам дали 222-мегабайтную CSV-шку: data.7z. Начало у этой CSV-шки примерно такое:

Time [s],Wire6-Analog,Wire7-Analog, Time [s],Wire0-Digital, Time [s],Wire1-Digital, Time [s],Wire2-Digital, Time [s],Wire3-Digital, Time [s],Wire4-Digital, Time [s],Wire5-Digital, Time [s],Wire6-Digital, Time [s],Wire7-Digital
0.000000000000000, 4.768121242523193, 4.773899555206299, 0.000000000000000, 0, 0.000000000000000, 0, 0.000000000000000, 0, 0.000000000000000, 1, 0.000000000000000, 0, 0.000000000000000, 0, 0.000000000000000, 1, 0.000000000000000, 1
0.000008000000000, 4.768121242523193, 4.773899555206299, 0.000000990000000, 1, 0.000065560000000, 1, 0.000194380000000, 1, 0.000451750000000, 0, 0.000452070000000, 1, 0.001480790000000, 1, 1.468471380000000, 0, 2.503182740000000, 0
0.000016000000000, 4.773141384124756, 4.778934478759766, 0.000065230000000, 0, 0.000194070000000, 0, 0.000451450000000, 0, 0.000965990000000, 1, 0.001480440000000, 0, 0.003537600000000, 0, 1.468535670000000, 1, 2.503689840000000, 1
0.000024000000000, 4.773141384124756, 4.773899555206299, 0.000129540000000, 1, 0.000322660000000, 1, 0.000708600000000, 1, 0.001480170000000, 0, 0.002508920000000, 1, 0.005594510000000, 1, 1.472585100000000, 0, 2.507288860000000, 0
0.000032000000000, 4.773141384124756, 4.773899555206299, 0.000193780000000, 0, 0.000451180000000, 0, 0.000965660000000, 0, 0.001994420000000, 1, 0.003537300000000, 0, 0.007651320000000, 0, 1.472649390000000, 1, 2.507799430000000, 1
0.000040000000000, 4.773141384124756, 4.773899555206299, 0.000258100000000, 1, 0.000579770000000, 1, 0.001222810000000, 1, 0.002508600000000, 0, 0.004565780000000, 1, 0.009708230000000, 1, 1.476698830000000, 0, 2.511395640000000, 0
0.000048000000000, 4.778161048889160, 4.778934478759766, 0.000322340000000, 0, 0.000708280000000, 0, 0.001479880000000, 0, 0.003022850000000, 1, 0.005594170000000, 0, 0.011765040000000, 0, 1.476763110000000, 1, 2.511904320000000, 1

Первые полчаса мы занимались двумя вещами: пытались понять, зачем в таблице 9 столбцов со временем, когда можно было сделать один, и гуглили надпись на чипе, к которому подключены клеммы (они же клеммами называются, да?).

Строчки с маркировки гуглятся плохо. Спасает запрос «chip ami 8327», по которому на первом месте выводится страничка «Atari chips». Заодно выясняется, что на чипе написано «CO1», а не «COI», и именно поэтому вторая строчка не гуглилась.

Искомое «CO12294B» на этой странице встречается аж шесть раз, и каждый раз около слова «pokey». Наконец-то можно пойти почитать википедию (это мой любимый момент в каждом таске, ведь именно здесь узнаётся столько нового):

Atari POKEY (Pot Keyboard Integrated Circuit) — электронный компонент, специально разработанная фирмой Atari микросхема генерации звука и интерфейса с устройствами управления. Использовалась в 1980-х годах в ряде игровых систем от Atari — бытовых компьютерах, игровых консолях и аркадных игровых автоматах. Название микросхемы составлено из начальных слогов английских слов POtentiometer и KEYboard, так как эта микросхема часто использовалась для опроса клавиатуры и аналоговых устройств управления (типа paddle). Но в основном, POKEY стала известна благодаря своими возможностями генерации звуковых эффектов и музыки, получив своих поклонников, аналогично микросхемам MOS Technology SID и General Instruments AY-3-8910.

Окей, значит, перед нами либо что-то связанное с клавиатурой, либо что-то, издающее звуки. Поехали на английскую википедию: https://en.wikipedia.org/wiki/POKEY (кстати, картинки в обеих википедиях подсказывают, что мы на правильном пути: там нарисованы именно такие чипы, как у нас). В английской википедии есть распиновка чипа, что для нас очень важно, ведь клеммы подсоединены к конкретным выходам, а не ко всем:

Итак, две клеммы подсоединены к Vss, то есть к земле (по крайней мере, так написано в левой табличке). Остальные восемь — к линиям KR1, KR2, K0, K1, K2, K3, K4 и K5. Первые две, как написано всё в той же табличке, отвечают за «Keyboard Row strobe Input», а остальные шесть — за «Keyboard Scan Output». Ага, всё-таки клавиатура! Про линии K0–K5, вроде, понятно: в статье написано, что поддерживаются клавиатуры до 64 клавиш (+ два модификатора: шифт и контрол), а 64 клавиши — это как раз 6 битов. Вот только что такое остальные две линии и что такое Keyboard Row strobe Input?

Тут мы снова почитали википедию (не стыдно не знать! стыдно не хотеть узнать!): https://en.wikipedia.org/wiki/Data_strobe_encoding. Там написано, что strobe encoding добавляет к линии данных ещё одну линию, причём делает так, чтобы XOR значений на двух линиях менялся каждый такт. Это позволяет синхронизировать такты, а также обнаруживать поломки линии. Ну круто, чо. А почему у нас на шесть линий с данными только две линии с этим strobe? Или это не о том?..

В этом месте мы немного подзастряли, если честно. У нас ведь кроме картинки был ещё 200-мегабайтный CSV-файл с кучей отметок времени, а мы пока за него даже не брались. Поизучаем-ка его более внимательно. Во-первых, кажется, что он состоит из девяти независимых логических колонок: в первой задаётся время и значение (вольтажа?) на двух аналоговых линиях, а в каждой из следующих восьми снова задаётся какое-то время и логическое значение на одной из цифровых линий — нолик или единичка. Вот только почему-то чем дальше, тем логические колонки становятся короче. В первой, например, сотни тысяч записей, сделанных суммарно за 20 секунд, а в последней — только 11. Не 11 тысяч, нет. Просто 11.

Начали смотреть файл ещё внимательнее. Замечаем, что значение каждой логической линии всё время чередуется — то ноль, то единица, потом снова ноль. Предполагаем сразу, конечно, что записывали только изменения значения. Это объясняет и то, почему значений для последней линии так мало: видимо, значение на ней редко менялось. Но почему значение на первой линии так часто меняется? Посчитали — получается около 15 000 раз в секунду. Не может же быть, что кто-то так быстро нажимал на клавиатуре кнопки? Хм, а, может, это тот самый strobe encoding?..

Окей, пока все равно почти ничего не понятно, изучаем файл дальше. Замечаем, что если первая цифровая линия меняет своё значение 15 000 раз в секунду, то вторая — ровно в два раза реже. Удивительно, но третья — ещё в два раза реже! Подозрительно, но всё ещё непонятно :)

Чтоб вы понимали накал страстей: в этот момент мы даже покушали — настолько всё было непонятно!

А после обеда наткнулись на отсканированную версию документации по этим чипам от самой Atari (с грифом CONFIDENTIAL!). Обязательно перейдите по ссылке и полистайте её. С высоты сегодняшних технологий это кажется невероятным трудом:

Ох уж эти написанные на печатной машинке тексты и нарисованные от руки схемы... От них прямо пахнет чем-то волшебным.

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

Что тут написано: во-первых, линии K0–K5 действительно передают скан-код нажатой клавиши. Брать эти биты надо с отрицанием. В википедии тоже что-то подобное было написано, правда, почему-то отрицание навешано только на K0, K1, K2 и K5:

Интересно, как на самом деле?

Дальше написано, что внутри чипа POKEY, который уже успел стать нам родным, есть 6-битный счётчик, 6-битный регистр для сравнения, и 8-битный регистр для итогового скан-кода. А дальше идёт абзац, который мы читали (и страдали!) минут двадцать:

Итак, есть некоторый алгоритм для определения, в какой момент сигналы, выставленные на линиях K0–K5, всё-таки являются кодом нажатой клавиши, а когда их не надо слушать. Если отрицание KR1 становится нулём («low» в терминах текста), то значение из счётчика копируется в регистр для сравнения. Дальше происходит некоторая магия для определения того, не было ли это случайностью, и если нажатие клавиши подтверждается на следующем тике, то процессору посылается прерывание, а скан-код нажатой клавиши попадает в специальный регистр. После этого запускается парный алгоритм, не позволяющий создавать прерывания очень-очень часто, пока человек держит кнопку нажатой. На следующей странице пдфки даже есть блок-схема для этого процесса. Мы потратили на неё ещё минут десять:

Окей, но это всё не объясняет, почему у нас значение на линии меняется туда-сюда 15 000 раз за секунду. Ну не нажимают люди так быстро клавиши! Помогла как всегда случайность. Мы нашли ещё одну версию этой документации, причём не только в отсканированном, но и оцифрованном виде: http://krap.pl/mirrorz/atari/homepage.ntlworld.com/kryten_droid/Atari/800XL/atari_hw/pokey.htm.

Там был весь тот же текст, что мы уже читали, но вдобавок ещё и интересная картинка:

Во-первых, каждая следующая линия меняет своё значение в два раза реже, чем предыдущая. Прямо, как у нас! Во-вторых, минимальный такт равен 1 / 15.7 kHz, то есть такты тикают 15 700 раз в секунду. Прямо, как у нас [2]!

Благодаря этой картинке появилась гипотеза: значения на каналах K0–K5 меняются вне зависимости от того, нажимал ли человек кнопки, причём меняются именно так, как нарисовано на картинке: каждое следующее меняется в два раза реже, чем предыдущее. И именно это — тот самый strobe encoding, а вовсе не линии KR1 и KR2, как было написано в википедии. А вот когда человек нажимает кнопку на клавиатуре, линии K0–K5 выставляются в правильное положение, а на отрицание KR1 подаётся единица (то есть на самом деле на KR1 подаётся ноль).

Ну что ж, осталось написать код:

def run():
    time = 0
    last_kr1 = 0
    last_scancode = 0
    answer = ''
    while time < 20:
        values = get_values(time)
        kr1, kr2, scancode = parse_values(values)
        if last_kr1 == 0 and kr1 == 1:
            if last_scancode != scancode:
                print(f'Current time is {time}, values are {values}')
                print(f'kr1 = {kr1}, kr2 = {kr2}, scancode = {scancode}, char = {SCANCODES[scancode]}')
                answer += SCANCODES[scancode]
            last_scancode = scancode
        last_kr1 = kr1
        time += HSYNC
    print(answer)

В этом коде мы ловим момент, когда отрицание KR1 изменилось с нуля на единицу и выхватываем скан-код, посчитанный из значений K0–K5. Некоторые символы дублировались, потому что по-хорошему надо было реализовать ту самую логику, описанную в пдфке, но это слишком сложно :) Так что просто запоминаем последний скан-код и не повторяем его, если он случился снова.

Вот только где взять таблицу скан-кодов и символов (словарь SCANCODES в коде)? В пдфке её почему-то не было. Зато нужная табличка (как всегда) нашлась где-то в закромах интернета: https://atariwiki.org/wiki/Wiki.jsp?page=KBCODE

Остаётся только перебить его в наше решение, запустить и получить ответ: «FLAG; 8-BIT-HARDWARE-KEYLOGER{CR}». Отправляем, и-и-и, ..., неправильно :( Да ладно, не может быть, фраза-то читаемая получилась. Замечаем одну G в KEYLOGGER и понимаем, что наш алгоритм в данном случае зря выкинул повторение :) Возвращаем вторую G и сдаём ответ.

Полный код решения можно найти на гитхабе.

P.S. Всё-таки оригинальная пдфка была права: надо брать отрицания ко всем линиям, в том числе и к K3, и к K4. А википедия не права.

Заметка семнадцатая. Переменная users_ids

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

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

Вот несколько доказательств:

  1. тред на стековерфлоу;
  2. поиск по гитхабу: user_ids встречается более 400 000 раз, а users_ids — только 5000;
  3. в гугле за редким исключением все пишут user_ids или userIds, но никак не users_ids и не usersIds.

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

И теперь у меня большая проблема.

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

group_members — это участники группы
groups_members — это участники нескольких групп
course_groups — группы внутри одного курса
courses_groups — группы нескольких курсов
course_group_members — участники группы курса
course_groups_members — участники, например, всех групп курса
courses_groups_members — все участники вообще всех групп всех курсов

Смотрите, сколько дополнительной семантики добавляет маленькая буква s в имя переменной! Надо лишь позволить себе забить на лингвистическую некорректность...

И вот как дальше жить? Страдать, но писать правильно, или переубеждать весь остальной мир?

Заметка шестнадцатая. Первая половина дня

Часто слышу про мистическую «первую половину дня». Мол, позвоню в первой половине дня.

Вы удивитесь, насколько разными будут ответы, если поспрашивать окружающих, когда заканчивается эта самая первая половина дня. Кто-то скажет «до полудня», кто-то «примерно до двух» или «около часа дня», кто-то — «до обеда». И в этом первая проблема этого выражения: если вы договоритесь на «первую половину дня», то вы не сможете быть уверены, что вас поняли верно.

Но главная проблема здесь в другом: эти варианты не выдерживают никакой логической критики. Да, 12 часов — это действительно близко к середине солнечного дня: до этого момента и после него солнце светит примерно одинаковое время. Но вот уже несколько столетий, с момента изобретения свечей и электричества, мы не живём солнечным днём. Мы ложимся позже заката, а встаём далеко не с рассветом.

Вот, например, я. В обычный будний день я встаю около десяти часов. Да, позже, чем многие, но и ложусь я позже большинства, так что всё честно. Получается, что если мне надо сделать что-то в первой половине дня, то у меня есть на это 2 часа. Вторая половина дня при этом будет длиться раз в 5–6 больше. Какие же тогда это половины?

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

Некоторые говорят, что у них всё сходится. Мол, если вы работаете с 8 до 16, то в полдень наступает ровно середина рабочего дня. Но ау, очнитесь! Рабочего дня, а не дня вообще. Чтобы полдень стал серединой вашего дня, надо лечь в восемь вечера и встать в четыре. Вряд ли вы так делаете, да ведь?

Как полечить эту проблему? Очень просто. Просто не используйте словосочетание «первая половина дня», когда договариваетесь с кем-то о времени. Говорите точно: «зайди ко мне до двух часов, пожалуйста». Или «я позвоню после полудня». Так будет легче всем: и вам, и тому, с кем вы договариваетесь :-)

И да, говорить о второй половине дня настолько же ошибочно, как и о первой. Ведь если неизвестно, когда заканчивается первая, то когда тогда начинается вторая?

Заметка пятнадцатая. Китайский интернет

Все знают, что интернет в Китае находится за великим файрволом. Его основная задача — защищать китайцев от информации, порочащей страну и коммунистическую партию.

Все гугловые сервисы здесь не работают: начиная от интернационального поиска, заканчивая ютубом. Единственный работающий сервис от гугла — это пуши в андроид, они нормально приходят. Не работает даже Play Market, так что поставить приложение можно только из сторонних маркетов. Наверно, именно поэтому свой есть и у самсунга, и у местного Xiaomi.

Гугл сделал для Китая специальную версию своего поиска www.google.cn, она работает только по HTTP и фильтрует результаты поиска по специальным правилам. Воспользоваться ей у меня, правда, почему-то не получилось: любой клик редиректит на www.google.com.hk, который недоступен.

Другие крупные западные поисковики тоже, говорят, фильтруют результаты специально для Китая. У Bing’а даже китайский интерфейс есть:

У Yahoo открывается английский интерфейс, и даже по HTTPS, однако особой фильтрации не замечено: если поискать в нём «Tiananmen Square protests of 1989» (большой протест, о котором китайские власти хотят поскорее забыть), то найдётся миллион результатов, а ещё и видео предложат посмотреть. Также мне удалось поискать в нём 民主 («демократия») — одно из ключевых слов, заблокированных в китайском интернете полностью.

Не работает здесь и фейсбук, а вместе с ним и инстаграм. А ещё твиттер. Все эти западные сервисы считаются вредными для рядовых китайцев. Забавно, что при этом в твиттере есть достаточно много верифицированных китайских аккаунтов. Вот, например, BBC Chinese:

Яндекс и все его сервисы доступны. Правда, работают они здесь достаточно медленно. По сравнению с местными сервисами вроде главного поисковика Китая Baidu — и вовсе невозможно по-черепашьи. Утром выход в европейский интернет работает шустрее (в Европе в это время ночь), вечером — заметно медленнее, одна страница может загружаться 20–60 секунд. В общем как через edge-интернет :-)

Кроме того, у меня не получилось подключиться напрямую к рабочему компьютеру по RDP — видимо, режут на уровне протокола. А вот по SSH — легко, без проблем подключился к нескольким серверам в разных точках Европы и Америки .

Энтузиасты постарались собрать полный список заблокированных сайтов энтузиасты вот здесь: https://enterchina.ru/blog/cenzura-v-kitae-zolotoy-schit-ili-velikiy-kitayskiy-fayrvol/.

Естественно, все эти ограничения можно обойти с помощью VPN. До поездки в Китай я читал, что «Золотой щит», как ещё называют Великий файрвол, умудряется блокировать и VPN, но это не совсем подтвердилось: я спокойно подключился сначала по OpenVPN к работе, потом к университету, а затем с помощью заранее установленного Opera VPN вышел в свободный интернет с телефона.

Эппловский App Store работает, из него можно поставить приложения для ютуба или тот же Opera VPN. Первое не заработает по понятным причинам, а вот почему мне не удалось подключиться с айпада к Opera VPN, я не понимаю. Интересно, что десктопная опера с включённой встроенной опцией VPN выйти в интернет тоже не может.

Вообще, надо сказать, в Китае к айфонам относятся в некотором смысле лучше, чем к андроидам, хотя последних тут и значительно больше. На тех немногих кассах, где принимают карты Union Pay (национальная платёжная система), часто принимают и Apple Pay. О Google Pay или Samsung Pay никто не знает. Картами Visa и MasterCard нам тоже ни разу не удалось расплатиться.

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

VPN до Европы работает, конечно, небыстро. Фоточки в инстаграме грузятся от 20 до 60 секунд (утром — меньше, вечером — больше), твиттер лучше читать вовсе без фотографий, иначе устанешь ждать. При активном сёрфинге скорость составляет примерно мегабайт в минуту:

Из приятного для русских туристов: работают вконтакте и телеграм. Правда, не без сюрпризов. Например, у вконтакте работает приложение и десктопная веб-версия, но не работает m.vk.com. В целом не беда — с компьютера сидишь в десктопной версии, с телефона — через приложение. Но вот когда переходишь из приложения по любой ссылке, оно сначала перенаправляет тебя на m.vk.com/away.php, что ломает весь процесс, а ссылка в итоге не открывается. Помогает долгое нажатие на ссылку и выбор в контекстном меню Copy link вместо Open link. Правда, в приложении под андроид это работает не всегда: если ссылка вставлена не в текст поста, а как красивое превью, то контекстного меню не дождёшься. Придётся страдать.

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

Ещё из интересного: Amazon AWS при заходе на свой сайт предлагает перейти на специальную китайскую версию, «оптимизированную» для местного интернета:

Кстати говоря, технологически Китай развит хорошо (вот только его технологии сильно изолированы от остального мира). Из многих забегаловок можно заказать еду через приложения. Uber не работает, но вместо него есть местные уберозаменители. Все китайцы гоняют со смартфонами и общаются через мессенджеры — в основном через WeChat. Общаются, кстати, часто аудио-сообщениям, а не текстовыми: видимо, набирать иероглифы на телефоне малоприятная штука.

Заметка четырнадцатая. Где я?

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

Называется он Yuhai International Resort. На территории отеля находится пять жилых зданий и небольшой парк.

Листайте фотки. Их там почти везде по несколько.

Вход в отель, жилой корпус и вид на парк с 12 этажа

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

Бассейн с сюрпризом, да:

Этаж жилого здания выглядит вот так:

Забавно, как пронумерованы номера:

Во-первых, для номеров с 1 по 9 этаж в начало добавляется цифра 8. Как я уже писал, 8 — счастливая и очень любимая цифра у китайцев, поэтому номер 8103 выглядит куда лучше, чем просто 103. Есть и обратная сторона у этой медали. Цифра 4 считается несчастливой: её иероглиф 四 звучит как sì, что созвучно иероглифу 死 (sǐ), означающему смерть. И это не просто примета, к ней в Восточной Азии относятся очень серьёзно. В гостиницах и больницах Китая, Японии и Кореи редко бывают, например, четвёртые этажи, а автомобильные номера, заканчивающиеся на 4, запрещены в Пекине как несчастливые. У этого даже есть название — тетрафобия.

Так вот, в нашем отеле есть четвёртый этаж, но на всех остальных нет номеров с цифрой 4: после нашего 8103 идёт 8105, а после 8113 сразу 8115.

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

По телевизору здесь показывают только китайские каналы — CCTV 1, CCTV 2, CCTV 3, CCTV 4 и так далее. С фантазией на названия телеканалов у них не очень, да (на самом деле это China Central Television — государственное и основное телевидение в Китае). Всё, естественно, по-китайски, но часто с субтитрами. Китайскими :-)

Номер полутороэтажный, на втором маленьком этаже расположились шкаф и кровать:

Вид со второго этажа

Правда, потолок на втором этаже такой низкий, что несмотря на предупредительную надпись, я все равно несколько раз больно ударился головой :-)

В некоторых местах, кажется, проектировали для низкорослых китайцев: например, в ванной я вижу себя в зеркале вот так:

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

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

Магазинчик в отеле

На территории отеля есть два салона свадебных фотосессий. Здесь это не странно — для китайцев свадебная фотосессия чуть ли не важнее самой свадьбы. Фотосессия по времени может занимать целый месяц, фотографируют молодожён в красивых отелях, на лодочках в прудиках и на фоне ярких пальм и деревьев. Стоимость такой фотосессии спокойно может достигать 20 000 юаней (около 180 000 рублей по текущему курсу), что для среднего китайца очень много, но не сделать до или после свадьбы фотосессию считается неприемлимым. Салоны же занимаются организацией таких фотосессий от и до — дают машины, фотографов, осветителей, подбирают платья для невесты и вообще всю одежду молодожён.

Завтрак. Завтрак здесь просто прекрасный — огромный шведский стол, где можно поесть и в привычном нам западном стиле (яичница с беконом, салаты, тосты с маслом), и в традиционном китайском. Из приборов есть и вилки с ножами, и палочки. Для сравнения в китайских забегаловках вилку с ножом вам в большинстве случае никто не даст. Мой личный фаворит здесь — свежевыжатый клубничный сок.

В комнате есть небольшой столик типа кухонного, над ним даже есть вытяжка:

Вот только плиты под вытяжкой нет. Да и готовить самими в отеле нельзя 6-)

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

В Санье сейчас рано и быстро темнеет — примерно в 6:30–6:40. После этого в отеле начинается вечерняя жизнь: в ресторане подают барбекю из морепродуктов (за дорого, но один раз можно сходить бесплатно), а в беседке около бассейна поёт местный музыкант. Каждый день один и тот же, что немного надоедает, надо сказать. Но поёт, вроде, неплохо. В 9 часов песни и танцы заканчиваются, в 10 закрывается ресторан, и в 11 отель как будто вымирает. Зато с 12 этажа открывается отличный ночной вид:

(простите за качество)

По вечерам нас иногда доставали какие-то кровососущие насекомые, но выдаваемые фумигатор и закрытый балкон спасают от них хорошо. Днём же никто не кусает :-)

В каждом номере установлен вай-фай роутер с китайским интернетом. К вай-фаю претензий нет, а вот интернетом пользоваться бывает сложновато. Но об этом — в следующей заметке.

Заметка тринадцатая. Больше фактов о Китае!

Продолжаю список любознательных фактов о Китае, Хайнане и Санье.

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

24. С одной стороны к острову Фениксу подплывают огромные белые лайнеры, а с другой — яхты богатых постояльцев. Выглядит это как-то так (фотка из интернета):

25. После того, как остров Хайнань объявили курортной зоной, сюда начали ездить русские и обеспеченные китайцы. Местных здесь сейчас только 20%, а всего — где-то 700 000 человек. Для Китая это очень мало: скорее большая деревня, а не город.

26. Русских, особенно незагорелых, автоматически считают богатыми. Во-первых, потому что иностранцы. Во-вторых, потому что белая кожа в Китая — признак большого дохода. На улице обычные китайцы могут подойти и попросить сфотографироваться с вами. У многих туристов считается нормальным попросить за это деньги: за фото с белым европейцем китайцы готовы отдать 20 юаней, за видео — 100–150.

27. Если китайцы не готовы фотографироваться с вами, они попробуют вас снять на видео исподтишка. Полученное видео они выложат на местный ютуб, где активно соберут лайки. Вообще у китайцев очень принято хвастаться, особенно своим богатством, дорогими покупками или связями, таков уж менталитет. На недавно купленный автомобиль вешают красную ленточку, чтобы все знали — машина новая. А через несколько месяцев ленточку снимают и вешают новую такую же. Чтобы все вокруг продолжали завидовать, что у вас новая машина. Так может продолжаться 2–3 года, пока не надоест.

28. Так как белая кожа — признак финансовой успешности, китайцы стараются максимально не загореть. Для этого, как нам объяснили, и нужны те самые маски на лицо, а также странные перчатки-прихватки, приделанные к рулю скутеров:

29. Раз уж мы заговорили о скутерах: сегодня выяснилось, что большинство из них — электрические. Это всё из-за экологии: очень уж хотят хайнаньцы сохранить свой чистый воздух. На материковом Китае с этим действительно очень много проблем: там вечный смог, а в последние годы даже увеличилась вероятность онкологических заболеваний среди школьников. Электрические автомобили здесь тоже популярны. Говорят, нередко можно встретить Теслу, а по городу расставлены заправки для неё. Мы, правда, так ни одной пока и не встретили.

30. Как я уже писал в прошлой заметке, на дорогах творится полный ад: каждый ходит и ездит так, как ему хочется. Могут ехать по встречке, на красный свет, резво пересекать двойную сплошную. Но есть одно правило, которое здесь соблюдают все: ограничение скорости в 60 км/ч. За исполнением этого правила следят, в том числе, полуавтоматические камеры на перекрёстках.

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

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

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

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

35. 80% чая, выращенного на острове, поставляется в компартию Китая. Слишком уж он тут хороший из-за опять же хорошей экологии.

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

36. Школьники в Китае учатся очень много, по 12 часов в день. Начинают 8 утра, а некоторые и вовсе в 6:30. Сначала идут важные уроки: математика, язык, физика, ... С 12 до 14 часов перерыв на обед и сон — это вообще общекитайская (или общехайнаньская?) традиция отдыхать в это время. После 14 часов идут не такие важные предметы: например, рисование, физкультура и музыка. А ещё после этого дети идут на факультативы.

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

37. Многие пальмы окружены деревянными или металлическими сооружениями: они делают пальмы крепче и устойчивее. На остров часто заходят тайфуны, и мощный ветер вполне может вырвать пальму и понести её по городу.

38. Мало- и среднеобеспеченные китайцы, кстати, любят не очень сильные тайфуны. Это повод не ходить на работу 2–4 дня, ничего не объясняя начальнику.

39. В Южно-Китайском море водятся странные дельфины-наркоманы. Они кусают ядовитую рыбу фугу, чтобы испытать от боли кайф. Больше такого поведения учёные ни за какими дельфинами не замечали.

40. Акулы (практически) никогда не спят.

41. Почти во всех странах мира запрещено вылавливать акул. Разрешено только в Китае, Японии и Австралии.

42. Чтобы сделать полуторокилограммовое шёлковое одеяло, нужно, чтобы 4000 шелкопрядов соткали свои коконы. Это реально много.

43. В каждом кушательном заведении обязательно висит лицензия и выданный государством уровень чистоты еды: A, B или C. Уровень A — это дорогие рестораны, гарантирующие чистоту и стерильность кухни и всего процесса приготовления блюда. Уровень C — китайские забегаловки с известными уровнем антисанитарии (хотя, говорят, почти никто никогда не травится). Вчера мы кушали в забегаловке с уровнем C, пол-литра колы стоит там 3 юаня. Сегодня мы с экскурсией обедали в «Утке по-пекински» — ресторане китайской кухни для русских. Баночка колы 0,33 л стоит там 8 юаней.

Мой обед с забегаловке уровня C

44. Вообще зарплата на острове в туристический сезон (а это почти весь год, кроме лета) примерно 5000–10 000 юаней. На материковой части Китая средняя зарплата составляет 3000 юаней (около 26 000 рублей). С такой зарплатой приехать с семьёй отдохнуть на Хайнань действительно сложновато.

45. До того, как остров стал туристическим, он был военным. В городе и в лесу располагается большое количество военных баз. 90% из них засекречены, никто даже не знает, где они. На всякий случай военные базы в городе советуют не фотографировать — могут увести на неприятную беседу.

46. Цена фруктов здесь указывается на полкилограмма. Почему так принято — загадка, даже средний манго весит больше, около 700–900 граммов.

47. Шоколада здесь почти нет. В магазинах, по крайней мере, он не продаётся. Зато других сладостей очень много, в основном их делают из кокоса или манго, их тут завались. А сегодня мы ели и вовсе конфеты из мяса акулы.

48. Молочный улун, который подают в российских кафе и ресторанах, по вкусу очень сильно отличается от настоящего китайского молочного улуна :-)

49. Иероглиф 三 означает одновременно и «три», и «больше двух; несколько; много». Так что шутка про «раз, два, много» здесь как нигде актуальна.

Бонус для тех, кто дочитал или доскроллил до конца. Я на самой высокой точке города Санья.

Заметка двенадцатая. Факты о Китае, Хайнане и Санье

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

1. Давным давно, когда здесь ещё не было китайцев, на острове Хайнань жили два народа: ли и мяо. Первые любили земледелие и считали, что произошли от оленей. По легенде охотник нашёл в лесу красивую олениху, спарился с ней, и от их детей и произошли ли. Потомки этого народа и сейчас поклоняются оленям. Название одного из самых красивых заповедников острова, например, переводится как «Олень повернул голову». Мяо же были больше охотниками, чем земледельцами, и жили куда менее цивилизованно, чем ли. Этот народ и его потомки считают, что произошли от собак.

2. Молодец-мяо может вскарабкаться без дополнительных приспособлений на пальму с кокосами и сбросить оттуда плод.

3. Из-за этого во всех домах в Санье стоят решётки на окнах. Не только на первом и последнем этажах, как это бывает у нас, а на всех:

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

4. (Не знал только я, но) плоды кокоса вовсе не волосатые, а гладкие и большие. У них толстая зелёная кожура толщиной 4–5 см. То, что мы видим в России — это плоды кокоса уже без внешней кожуры, только в очень твёрдой внутренней.

5. Немного рекордов: Санья-бай, недалеко от которой мы живём, является самой длинной бухтой в Азии. Её протяжённость составляет 22 километра.

6. На острове располагается и самая длинная подвесная канатная дорога в Азии, она ведёт с острова Хайнань на остров обезьян. На этом острове находится парк, в котором обитают 2000 макак. Кстати, провинившихся обезьян сажают в своеобразную тюрьму на 2–3 дня. Обезьяна может попасть туда, если украдёт у посетителя очки, деньги или кока-колу. Происходит это с ними, как выяснилось, нередко :-). Поеду в парк обезьян через пару дней, посмотрю на них тогда сам.

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

8. 78% территории острова Хайнань — жуткие и непроходимые джунгли. По ним водят экскурсии, и учёные знают, что там растёт много редких растений, но в целом мало кто представляет, что там вообще происходит.

9. Чай у китайцев — это святое, да. Они говорят, что он является одновременно напитком, едой и лекарством. За завтраком, например, принято пить зелёный чай, он пробуждает нервную систему и заряжает энергией на день. А вот после обеда — уже красный. Чёрный чай надо пить, если у вас есть проблемы с пищеварением. В общем, здесь тысячи чаёв, и для каждого известно, когда и как его надо пить.

10. У каждой провинции в Китае есть иероглиф, которым помечаются автомобильные номера. У Хайнань это иероглиф, означающий «жемчуг», так как остров славится своим жемчугом.

11. В китайском макдональдсе продают совсем не то, что в наших. Меню различается минимум на 50%:

12. Кстати, расплатиться в китайском макдональдсе карточкой у меня не получилось — здесь принимают только карты UnionPay (национальная платёжная система), Apple Pay, Alipay и ещё какие-то китайские электронные способы оплаты. Карточкой виза или мастеркард расплатиться пока не удалось нигде.

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

14. Не все китайцы узкоглазые. Большинство хайнаньцев имеют обычный разрез глаз.

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

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

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

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

19. Пляжи здесь восхитительно красивые: чистый песок, пальмы и прозрачная вода. Видимость в воде — от 5 до 35 метров.

20. Горячей воды в кранах здесь нет, по крайней мере в гостинице. Есть холодная и тёплая. В целом это понятно — кто захочет после +31° принимать горячую ванну?

21. RDP во внешний мир без VPN всё-таки не работает :-)

22. Эгея (движок этого блога) плохо работает с длинными списками, внутри которых есть картинки. В заметках работает авто-определение и авто-нумерация списков (как в маркдауне), а после изображения счётчик сбрасывается, и нумерация начинается снова с единицы. Чтобы не разрывать список, мне пришлось прибегнуть к едва незаметной хитрости. Угадайте, какой :-)

И напоследок: за сегодня я выучил, как пишутся три иероглифа: «Китай», «юань» и «курица». Уже неплохо!

Продолжение — в следующей заметке.

Earlier Ctrl + ↓