Три года назад разработчик Софи Кунин* опубликовала пост под названием «Вот что я нагуглила за неделю в качестве профессионального инженера-программиста», и он явно нашел отклик у читателей, поскольку стал довольно вирусным. За эти три года многое произошло. Софи повысили, теперь она старший инженер-программист и руководитель направления веб-разработок в Monzo. Но одно не изменилось: она по-прежнему много гуглит, каждый божий день. Вот что она нагуглила за неделю, версия 2022 года.

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

*Обращаем ваше внимание, что позиция автора может не всегда совпадать с мнением МойОфис.


Некоторые из моих поисковых запросов могут заставить вас рассмеяться и подумать: «Как же этого можно не знать?». Есть несколько причин, по которым вы можете чего-то не знать (подчеркните нужное):

  • вы никогда не использовали это раньше;

  • вы использовали это раньше, но не можете вспомнить;

  • это изменилось с тех пор, когда вы использовали это в последний раз;

  • вы устали;

  • вы не можете сосредоточиться;

  • вы человек.

Сегодня к нам со всех сторон поступает беспрецедентно огромный объем информации. Невозможно постоянно помнить обо всем.

Надеюсь, это ободрит вас, когда вы начнете переживать из-за того, что приходится в очередной раз гуглить что-то «очевидное».

Понедельник

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

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

дерево каталогов cli — как отобразить дерево каталогов в CLI.

react-toastify — полезная библиотека уведомлений.

anchor dataset — доступ к атрибутам данных в JS.

mdn element dataset

waitfornextupdate — пытаюсь вспомнить, предназначена ли эта функция библиотеки тестирования только для хуков. (Так и есть.)

Следующие несколько запросов напрямую связаны с тем, что в JS все еще нельзя автоматически загружать файл кросс-браузерным способом без добавления элемента со ссылкой. Существует API загрузок, но Safari его не поддерживает.

jest как тестировать detached элементыjest-dom видит только то, что находится в тестируемом DOM, поэтому элементы, отсоединенные от DOM, не удастся протестировать. Но это не сразу пришло мне в голову.

document.createElement('a')

document.createElement('a') detached

react-hook-form — мы пытаемся добавить эту библиотеку в некоторые из наших веб-компонентов, поскольку в них нет управления формами, а react-hook-form — это действительно хорошая абстракция.

spread types may only be created from object types — я постоянно получала эту ошибку и не могла понять причину. Оказалось, мы использовали старую версию react-hook-form, установленную в другом приложении (типичные проблемы монорепозитория), которая имела другие типы возврата.

react-hook-form — «spread types may only be created from object types».

Вторник

ссылки на каналы slack в API

gilts — о них писали в новостях, а я не знала, что это такое.

js доступ по ключу к свойству вложенного объекта — я не смогла быстро вспомнить, можно ли получить доступ к свойствам вложенных объектов, например myObj['key1.key2']. (нельзя, потому что вся строка интерпретируется как один ключ).

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

modal accessibility — я дискутировала с одним человеком о том, почему модальные окна обычно недоступны. Оказывается, здесь есть свои нюансы, и для того, чтобы сделать модальные окна широко доступными, нужно попотеть.

modal window accessibility

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

storybook документация комментарии markdown

storybook описание истории

storybook документация

storybook комментарий

storybook JSdoc

Среда

Марк Хоппус — я упомянула, что пыталась достать билеты на концерт Blink-182 (мне это не удалось), и мы обсуждали, сколько сейчас лет участникам группы.

lofi girl — при проведении retro мы включаем музыку, пока люди пишут свои тикеты Retrium, и я подумала, что это создаст подходящее настроение.

запрос apollo oncompleted

useLazyQuery — пытаюсь понять, что возвращает запрос (возвращаемое значение или void?) Оказалось, что новейшая версия возвращает значение, а версия, которую мы используем, нет :(

sentry github

'RequestSessionStatus' не экспортируется из '@ sentry/types' — оказалось, что это не проблема библиотеки Sentry, а несоответствие yarn.lock (особенность монорепозитория).

Четверг

document.write — я знала, что это устарело, но хотела найти что-то, подтверждающее мой комментарий к PR.

apollo server request size — получаем 412 ошибку от нашего сервера apollo и пытаемся понять, как увеличить максимальный размер запроса.

apollo-server-koa

apollo server request size site:stackoverflow.com — полезный совет при поиске через Google заключается в том, что область поиска можно ограничить определенным сайтом с помощью оператора site:.

набор данных элементов mdn

открыть новое окно и установить содержимое html — пытаюсь найти подходящую замену document.write для человека, попросившего об этом. Мы выбрали window.open() и myWindow.document.documentElemen t.innerHTML = myHtml.

mock clock golang — выясняю оптимальный способ имитации функции time.Now() в Go. В нашей базе кода есть разные варианты; я не была уверена, какой из них самый актуальный, но в итоге разобралась.

graphql server request entity too large — все еще пытаемся исправить лимит запросов сервера apollo.

doggo ipsumмой любимый генератор ipsum.

apollo server body parser config

apollo server body parser config koa

koa — я наконец-то поняла, что нам нужно установить конфигурацию парсера запроса на самом сервере, а не в обертке apollo-server.

koa request size

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

ronseal — я люблю гуглить картинки Ronseal и помещать их в описания PR, когда заголовок описывает именно то, что делает PR (т. е. делает то, что написано на банке). Думаю, я переняла эту привычку от b3ta в свое время.

Пятница

чтение символической ссылки — я плохо разбираюсь в символических ссылках lolol.

npm service status

apollo async oncompleted

window.history — поиск аргументов для history.push.

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

  • saga выполнить функцию non-saga

  • saga выполнить функцию non-redux

  • redux-saga эффекты

Больше генераторов ipsum, потому что моим коллегам понравился doggo ipsum:

cupcake ipsum

veggie ipsum — мне нравится, что я гуглила это и в предыдущем посте (поверьте, это просто совпадение).

ts-command-line-args — теперь займемся созданием CLI!

node.js interactive shell

node.js interactive shell select — я искала библиотеку CLI, которая позволяет выбирать различные опции с помощью клавиш со стрелками. Я нашла inquirer.js!

types/inquirer

ts-command-line-args

should you symlink from destination — я никак не могу запомнить порядок аргументов при создании символической ссылки.

TS2464

next-images — проверка актуальности некоторых из наших плагинов.

nextjs документ

react-hook-form radio buttons — иногда вам просто нужен хороший пример. Оказалось, что это проще, чем я думала: мне просто нужно было передать ссылку на наш компонент RadioButton.

Оглядываясь назад

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

Это также зависит от того, над чем я работаю. На прошлой неделе я потратила много времени на проектирование экспорта данных в Go, и поэтому моя история поиска полна запросов типа golang readseeker from buffer и create a file from string golang, которые ничего толкового не дали. (Я все еще помогаю с тикетами по бэкенду, когда это необходимо).

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

  • пробел regex

  • regex не буква

  • js дата

  • grid minmax

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

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