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