Listen notes не работает

Скучный технологический стек интернет-компании из одного человека


Поисковая выдача на ListenNotes.com

Listen Notes — это поисковая система и база данных подкастов. Технология на самом деле очень скучная. Никакого ИИ, глубокого обучения или блокчейна. «Если вы должны объявлять о внедрении ИИ, то вы не используете Настоящий ИИ» 🙂

После прочтения этой статьи вы сможете повторить мой проект или легко сделать нечто подобное. Не придётся нанимать много разработчиков. Помните, когда Instagram привлёк $57,5 млн и отошёл к Facebook за $1 млрд, у них было всего 13 сотрудников — и это не только разработчики. Покупка Instagram произошла в начале 2012-го. Сейчас 2019 год, и сегодня как никогда просто создать что-то значимое с крошечной инженерной командой — даже из одного человека.

Если вы ещё не видели Listen Notes, попробуйте прямо сейчас:

Обзор

Начнём с требований или особенностей проекта.

Listen Notes предоставляет две функции:

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

Всё работает на AWS, всего 20 серверов в продакшне (на 5 мая 2019 года):


Серверы, на которых работает Listen Notes

По имени хоста можно легко догадаться, что делает каждый сервер.

  • production-web обслуживает веб-трафик для ListenNotes.com.
  • production-api обслуживает трафик API. Мы поддерживаем две версии API (по состоянию на 4 мая 2019 года): v1api (устаревшая) и v2api (новая)
  • production-db запускает PostgreSQL (master и slave)
  • production-es запускает кластер Elasticsearch.
  • production-worker запускает автономные задачи обработки, чтобы всегда поддерживать базу данных подкастов в актуальном состоянии и предоставлять некоторые волшебные функции (например, ранжирование результатов поиска, рекомендации по эпизодам/подкастам и т.д.).
  • production-lb — балансировщик нагрузки. Для удобства я также запускаю на этом сервере Redis и RabbitMQ. Знаю, что это не идеально. Но я не идеальный человек. 🙂
  • production-pangu — производственный сервер, на котором я иногда запускаю одноразовые скрипты и тестирую изменения. Что такое паньгу?

Большинство серверов можно горизонтально масштабировать. Вот почему я называю их production-что-то1, production-что-то2 и т. д… Очень легко добавить в кластер production-что-то3 и production-что-то4.

Бэкенд

Весь бэкенд написан на Django/Python3. Операционная система — Ubuntu.

Для обслуживания веб-трафика используется uWSGI. Перед процессами uWSGI я поставил nginx, он также работает балансировщиком нагрузки.

Основное хранилище данных — PostgreSQL, с которой у меня большой опыт разработки и эксплуатации на протяжении многих лет. С проверенной технологией спокойно спится по ночам. Redis применяется для различных целей (например, кэширование, статистика. ). Нетрудно догадаться, что где-то используется и Elasticsearch. Да, я применяю его для индексирования подкастов и для обслуживания поисковых запросов, как и большинство скучных компаний.

Celery используется для автономной обработки, а Celery Beat предназначен для планирования задач, которые похожи на задания Cron, но немного приятнее. Если в будущем Listen Notes станет популярным, а Celery и Beat вызовут проблемы с масштабированием, я, вероятно, переключусь на два проекта, которые сделал для предыдущего работодателя: ndkale и ndscheduler.

Supervisord управляет процессами на каждом сервере.

Погодите, а как же Docker, Kubernetes и бессерверная архитектура? Ничего такого. С опытом вы учитесь не делать лишнего. На самом деле я немного работал с Docker ещё в 2014 году на предыдущей работе: что было хорошо для среднего стартапа ценой миллиард долларов, кажется излишним для крошечной компании из одного человека.

Фронтенд

Веб-интерфейс в основном построен с помощью React + Redux + Webpack + ES. Довольно стандартно в наши дни. При развёртывании в рабочей среде пакеты JS загружаются в Amazon S3 и выдаются через CloudFront.

Читайте также:  Как настроить тиайс сс3

На ListenNotes.com большинство веб-страниц наполовину рендерятся на стороне сервера (шаблон Django), наполовину на стороне клиента (React). С сервера поступает шаблон веб-страницы, а на стороне клиента в основном рендерится интерактивное веб-приложение. Но несколько веб-страниц полностью готовятся на сервере из-за моей лени и некоторых потенциальных преимуществ SEO.

Аудиоплеер

Я использую сильно модифицированную версию react-media-player. Он работает на веб-сайте как встроенный плеер в твиттере и встроенный плеер на сторонних сайтах:


Встроенный плеер на сторонних сайтах

Мы предоставляем разработчикам простой и надёжный API с подкастами. Построение API аналогично созданию веб-сайта. Здесь тот же стек Django/Python для бэкенда и ReactJS для интерфейса (например, панель инструментов API, документация. ).


Панель инструментов Listen API


Документация Listen API

Для API нам нужно отслеживать, сколько запросов использует клиент в текущем цикле биллинга, и взимать оплату. Нетрудно представить, что здесь активно используется Redis 🙂

DevOps

Подготовка машины и развёртывание кода

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


Я мог бы грамотнее назвать директории. Но опять же, этого сейчас достаточно

Ansible также помогает деплоить код в продакшн. В принципе, у меня есть скрипт-обёртка deploy.sh, который работает на macOS:

Этот скрипт принимает три аргумента:

  • Окружение: продакшн или staging.
  • Версия репозитория listennotes: HEAD означает «просто задеплоить последнюю версию». Если указан SHA коммита, то он развернёт определённую версию кода — это особенно полезно, когда мне нужно откатиться назад после плохого деплоя.
  • Тип серверов: веб, воркер, API или все. Мне не нужно деплоить сразу на все серверы. Иногда я делаю изменения в коде Javascript, тогда нужно развернуть его только в вебе, не трогая API или воркеры.

Процесс деплоя в основном организован файлами Ansible yaml, и, конечно же, предельно прост:

  • На моём Macbook Pro, если это деплой для веб-серверов, затем создаются пакеты Javascript и загружаются в S3.
  • На целевых серверах git клонирует репозиторий listennotes в папку с именем timestamp, проверяет конкретную версию и устанавливает новые зависимости Python, если таковые имеются.
  • На целевых серверах символическая ссылка указывает на вышеупомянутую папку с именем timestamp, затем перезапускаем серверы с помощью supervisorctl.

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

Мониторинг и оповещение

Мониторингом и оповещениями занимается Datadog. В простой панели мониторинга демонстрируются некоторые высокоуровневые показатели. Всё здесь предназначено для того, чтобы повысить мою уверенность при возне с серверами в продакшне.


Панель мониторинга Datadog для Listen Notes, по состоянию на декабрь 2017 года

Datadog подключён к PagerDuty. Если что-то пойдёт не так, PagerDuty пришлёт мне оповещение по телефону и SMS.

Я также использую Rollbar, чтобы отслеживать состояние кода Django и ловить неожиданные исключения, уведомляя меня по электронной почте и Slack.

Slack применяется очень активно. Да, это компания с одним человеком, поэтому он нужен не для общения, а для мониторинга интересных событий на уровне приложений. Кроме интеграции Datadog и Rollbar с Slack, в код бэкенда Listen Notes интегрированы входящие веб-хуки Slack, чтобы уведомлять о регистрации пользователя или выполнении некоторых интересных действий (например, добавлении или удалении элементов). Это очень распространённая практика в технологических компаниях. Если вы почитаете книги о первых годах Amazon или PayPal, то узнаете, что у обеих компаний был аналогичный механизм уведомлений: всякий раз, когда регистрировался пользователь, раздавался звук «динь», чтобы уведомить всех в офисе.

С момента запуска в начале 2017 года у Listen Notes не было серьёзного даунтайма (более 5 минут), кроме этого. Я всегда очень осторожен и практичен в работе DevOps. Для серверов предусмотрен серьёзный оверхед на случай какого-то огромного всплеска посещаемости из-за попадания в прессу или чего-то ещё.

Разработка

Я работаю в коворкинге WeWork в Сан-Франциско. Некоторые могут задать вопрос, почему бы просто не работать из дома или из некоторых случайных кафе. Ну, я очень ценю производительность и готов инвестировать в неё деньги. Не верю, что домашний бардак способствует разработке программного обеспечения (или любой работе в сфере знаний/творчества). Я редко работаю более 8 часов в день (извините, люди 996). Хочется, чтобы каждая минута была на счету. Таким образом, хороший и относительно дорогой частный офис — то, что мне нужно. Вместо экономии денег в ущерб времени, я оптимизирую время, чтобы тратить его с пользой и зарабатывать деньги.

Читайте также:  Hacs не удалось настроить


Мой офис в WeWork

Я работаю на MacBook Pro. Почти идентичная инфраструктура запускается внутри Vagrant + VirtualBox. Для среды разработки внутри Vagrant используется тот же набор файлов Ansible yaml, описанный выше.

Я поддерживаю философию монолитного репозитория. Таким образом, есть один и только один репозиторий listennotes со скриптами DevOps, кодом фронтенда и бэкенда. Он размещён как приватный репозиторий на GitHub. Вся разработка идёт в главной ветке. Я редко использую бранчи.

Я пишу код и запускаю dev-серверы (Django runserver и dev-сервер webpack) с помощью PyCharm. Да, знаю, это скучно. В конце концов, это не Visual Studio Code или Atom или какие-то крутые IDE. Но для меня PyCharm работает просто отлично. Старая школа, что же поделаешь.


Мой PyCharm

Разное

Есть куча полезных инструментов и сервисов, которые я использую для создания Listen Notes как продукта и компании:

  • iTerm2 и tmux как терминалы.
  • Notion для списков TODO lists, вики, заметок, записей по проектированию…
  • G Suite для почты @listennotes.com, календаря и других сервисов Google.
  • MailChimp для ежемесячной почтовой рассылки.
  • Amazon SES для служебных и некоторых маркетинговых рассылок.
  • Gusto для выплат себе и некоторым подрядчикам, если они не с Upwork.
  • Upwork для поиска подрядчиков.
  • Google Ads Manager для управления рекламой и отслеживания эффективности.
  • Carbon Ads и BuySellAds для резервных объявлений.
  • Cloudflare для управления DNS, CDN и файрволом.
  • Zapier и Trello для упрощения рабочих процессов в разделе интервью с подкастерами.
  • Medium для блога компании.
  • Godaddy и Namecheap для доменных имён.
  • Stripe для приёма денег от пользователей (в основном, за API).
  • Google speech-to-text API для расшифровки подкастов.
  • Kaiser Permanente для медицинской страховки.
  • Stripe Atlas для юридической регистрации Listen Notes, Inc.
  • Clerky: генерация юридических документов для венчурных инвесторов (SAFE) и найма подрядчиков, если они не с Upwork.
  • Quickbooks для бухгалтерии.
  • 1password для управления паролями в куче сервисов
  • Brex как платёжная карточка — вы можете получить дополнительные $5000 кредитов AWS, используя их поверх кредитов AWS от WeWork или Stripe Atlas.
  • Bonvoy Business Amex Card — можете накапливать баллы Marriott Bonvoy на люксовые отели и полёты. Это лучшая бонусная программа для путешействий/
  • Capital One Spark для текущего банковского счёта.

Сохраняй спокойствие и не дёргайся…

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

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

В основном, главное препятствие в создании проекта — излишние размышления. Что, если это, что, если то. Парень, ты никому не нужен. Каждый занят собственными делами. Никому не интересен ты и твой проект, пока ты не докажешь, что достоин внимания. Даже если вы запорете запуск, никто этого не заметит. Думайте масштабно, начинайте с малого, действуйте быстро. Абсолютно нормально использовать скучные технологии и начать с чего-то простого (даже уродливого), если вы действительно решаете проблему.

Your overthinking is my opportunity.

Источник

8 основных исправлений для приложения Samsung Notes, которое не работает

Представьте себе: вы хотите найти номер своего водительского удостоверения, который вы сохранили в приложении Samsung Notes. Однако, когда вы его открываете, приложение внезапно вылетает или кажется пустым. Вы не одиноки. Другие пользователи приложения Samsung Notes сталкиваются с той же проблемой и Приложение Samsung Notes для них не работает либо время от времени. Здесь вы найдете 8 решений, которые помогут решить проблему с неправильной работой приложения Samsung Notes.

Читайте также:  Сломалась шпилька крепления стабилизатора ваз 2110

Приложение Samsung Notes — прекрасное приложение для заметок на телефоне Samsung. Вы можете писать текстовые заметки, рисовать, создавать напоминания, кодировать свои заметки цветом и многое другое. Ознакомьтесь с нашим руководством по использованию приложения Samsung Notes. Проблема возникает, когда приложение перестает работать.

Надеюсь, следующие исправления помогут вам. Давайте начнем.

1. Перезагрузите телефон.

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

2. Обновите приложение Samsung Notes.

Часто приложение Samsung Notes перестает работать из-за недавнего обновления программного обеспечения. Чтобы исправить это, вам нужно будет обновить приложение Notes.

Вы можете использовать один из трех способов обновить приложение.

Метод 1: обновление из Play Store

Откройте Play Store на своем телефоне Samsung и найдите Samsung Notes. Нажмите на приложение и нажмите кнопку «Обновить». Вы также можете обновить его прямо по ссылке Play Store, опубликованной ниже.

Метод 2: обновление из магазина Galaxy

Если вы не нашли приложение Samsung Notes в Play Store, не волнуйтесь. Вы также можете обновить его в магазине Galaxy. Откройте приложение Galaxy Store на своем телефоне и коснитесь трехточечного значка вверху. Выберите Моя страница.

Выберите Обновить. Найдите Samsung Notes и нажмите значок «Обновить» рядом с ним.

Шаг 2: Нажмите «О программе Samsung Notes». Нажмите «Обновить» на следующем экране, если доступно обновление.

3. Очистить кеш

Вам также следует очистить кеш для приложения Samsung Notes. Это не приведет к удалению ваших заметок или других личных файлов.

Шаг 1: Откройте «Настройки» на телефоне и перейдите в «Приложения».

Шаг 2: Нажмите на Samsung Notes. Нажмите на Хранилище.

Шаг 3: Нажмите на Очистить кеш на следующем экране.

Примечание: Вы потеряете заметки, которые не синхронизируются с облачным хранилищем, если нажмете кнопку «Очистить данные», не проверяя их статус.

4. Отметьте проблемное примечание.

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

5. Проверьте дату и время.

Для правильной работы приложений на вашем телефоне должны быть указаны правильная дата и время. Выберите «Настройки»> «Общее управление»> «Дата и время». Включите переключатель рядом с автоматическими датой и временем.

6. Отключите синхронизацию.

Вы также можете попробовать на время отключить синхронизацию для приложения Samsung Notes. Для этого выполните следующие действия:

Шаг 1: Откройте Настройки и перейдите в Аккаунты и резервное копирование.

Шаг 2: Нажмите на Samsung Cloud, а затем на «Синхронизированные приложения».

Шаг 3: Выключите переключатель в разделе «Синхронизация для заметок Samsung». Перезагрузите телефон, а затем включите тот же переключатель.

Кончик: Если ваши заметки не синхронизируются с мобильными данными, нажмите «Синхронизировать», используя шаг 3, и переключитесь на Wi-Fi или мобильные данные.

7. Удалите приложение.

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

Кончик: Узнайте, как просматривать заметки Samsung в Windows 10.

Чтобы удалить приложение, выполните следующие действия:

Шаг 1: Откройте Настройки и перейдите в Приложения.

Шаг 2: Нажмите на приложение Samsung Notes. Нажмите кнопку «Удалить».

8. Сбросить все настройки.

Если ничего не работает, вам придется предпринять несколько крайних шагов — сбросить настройки телефона. Вы найдете его под названием «Сбросить настройки приложения» на некоторых телефонах. Не волнуйтесь, это не повлияет на ваши данные или файлы. Это затронет только такие настройки, как разрешения, ограничения и т. Д.

Чтобы сбросить все настройки, выберите «Настройки»> «Общее управление»> «Сброс». Нажмите на Сбросить все настройки. Подтвердите на следующем экране.

Источник

Оцените статью