#javascript

7 постов
пост №1392Разработка и инженерия

Javascript — один из самых популярных языков программирования в мире. Javascript используется почти на всех веб-сайтах. Любой чатик, любой интерактивный элемент на сайте — это javascript. На нем написаны серверные части самых популярных сервисов на свете, на нем пишут мобильные приложения (тот самый React Native) и даже для дата-сайнса можно использовать js.

Почему js завоевал этот мир и как с этим жить — разбираемся с участником комитета стандартизации жаваскрипта, разработчиком WebAssembly Сергеем Рубановым.

Это — бонусный эпизод нашего подкаста запуск++. Подписывайтесь в Apple Podcasts и на Patreon.

пост №1317Бизнес и стартапы

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

Причины две:

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

2) Не всем клиентам нужна своя внутренняя команда разработки. Часто клиент хочет запустить первую версию продукта, проверить гипотезу и только в случае успеха будет нанимать программистов на постоянку.

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

Что это значит практически?

💼 Для клиентов: можно нанять нас на разработку MVP, а уже потом заказать у нас себе найм команды внутрь, по необходимости. Пишите мне в личку. Очередь из клиентов на 3 месяца вперед, но оно того стоит.

🛠 Для программистов: мы открываем большой найм в команду «Федя и Самат». Много разных проектов, технологий, бизнес-задач и непременно высокий уровень качества. Стек — python и js. Пишите Феде на fedor@borshev.com.

Ух.

пост №849Разработка и инженерия

Давно я не рассказывал истории из профессиональной жизни.

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

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

Из-за этой кнопки с аватаркой всё и закрутилось. Для начала, пришлось выкинуть старый механизм аутентификации с oauth-редиректом и подключить библиотеку фб, которая делает всю работу сама. Потом я заметил (уже на продакшене), что страница логина крешится. Оказалось, что фейсбук хитро инициализирует свою js-библиотеку и при определенной последовательности загрузки скриптов она ломается. Воспроизводится это у нас не каждый раз и только на продакшене. В сафари ломается чаще, чем в хроме, так что любовь нашего фронтендера Ромы к Linux отладку не упрощала. Чтобы не ломать страницу целиком, мы срочно вставили try-catch, а потом сделали хитрую схему.

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

В отношении этой разработки у меня два разных чувства:

- жалость, что зря потеряли время, потому что у большинства пользователей, которым нужен логин через Facebook, уже загружена js-библиотека фейсбука, так что можно было не извращаться + кажется, что тупо недоразобрались с js-ошибками;
- чувство удовлетворения, что сделали качественно «заднюю стенку шкафа», все три кнопки логина покажутся мгновенно, без задержки в любом случае.

В любом случае, получилось классно. Логиньтесь!

В ролях: продакт 🤔 Алексей Горностаев, дизайн 🖌 Андрей Кулагин, фронтенд 🖼 Роман Ахмадуллин.

пост №798Разработка и инженерия

Оказывается, что Googlebot не умеет ES6.

Объяснение для тех, кто не теряет лучшие годы жизни на SEO и поэтому ничего не понял:

Гугл не анализирует html страниц, а рендерит их на гигантских серверных фермах на основе движка Chrome. Он делает это, чтобы «черные SEO-шники» не мухлевали с html-содержимым, показывая поисковым роботам одно (годный контент), а обычным пользователям — другое (рекламу дженерик виагры). Что мешает отдавать разный контент с сервера на основе user agent и как гугл это отслеживает — мне неясно.

Так вот, главное отличие рендер-фермы гугла от нормальных свежих браузеров — в отсутствии поддержки новой версии языка javascript — ES6.

Проверить, нормально ли рендерится ваш сайт в гугле, можно в специальном инструменте Fetch as Google.

пост №366Разработка и инженерия

Полтора года назад мы сделали игру «футбольный менеджер».

Plug-n-play движка из этой механики сделать не получается — уж очень все игры разные, но минимальными ресурсами разработки получается делать вот такие крутые проекты:

https://meduza.io/games/perezhit-tyurmu-maloy-krovyu

Кстати, если вы умеете js (react, node, вот это всё) и не чураетесь верстки — можем сделать пару проектов вместе. Пишите мне на samat@meduza.io— перед новым годом очень много проектов.

пост №37Разработка и инженерия

„Rudyard Kipling died 59 years before javascript was created.“

http://mrmrs.io/writing/2015/07/27/too-many-tools/

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

«Instead of telling people to stop creating new js frameworks. Instead of discouraging people from adding to the vast amount of available tools, I'm going to encourage people to build even more tools. Pick a problem and try to solve it better than anyone else has before. Having better tools will help us push the web forward. And it's okay if 90% of them are bad. The 10% will be worth it.»

пост №5Разработка и инженерия

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

Мы с Антоном только что отлаживали js-код, исполняемый внутри WebView в Android приложения Медузы в симуляторе quemu на удаленной машине, подключившись к ней вдвоем одновременно по teamviewer.
При этом js генерировался на компьютере Антона, делался доступным через PythonSimpleHTTPServer и прокидывался до эмулятора через ngrok.

БОЛЬШЕ ЭМУЛЯЦИЙ, АБСТРАКЦИЙ И INDIRECTION, ГОВОРИТЕ ОТКРЫТО И СМЕЛО ПРЯМО В ЛИЦО.