Приложение медуза не работает
Не открывается, не грузится, не доступен, лежит или глючит?
Что не работает?
Самые частые проблемы Meduza.io
Что делать, если сайт MEDUZA.IO недоступен?
Если MEDUZA.IO работает, однако вы не можете получить доступ к сайту или отдельной его странице, попробуйте одно из возможных решений:
Кэш браузера.
Чтобы удалить кэш и получить актуальную версию страницы, обновите в браузере страницу с помощью комбинации клавиш Ctrl + F5.
Блокировка доступа к сайту.
Очистите файлы cookie браузера и смените IP-адрес компьютера.
Антивирус и файрвол. Проверьте, чтобы антивирусные программы (McAfee, Kaspersky Antivirus или аналог) или файрвол, установленные на ваш компьютер - не блокировали доступ к MEDUZA.IO.
DNS-кэш.Очистите DNS-кэш на вашем компьютере и повторите попытку доступа на сайт. Смотреть видео-инструкцию ↓
VPN и альтернативные службы DNS.
VPN: например, мы рекомендуем NordVPN.
Альтернативные DNS: OpenDNS или Google Public DNS.
Плагины браузера.
Например, расширение AdBlock вместе с рекламой может блокировать содержимое сайта. Найдите и отключите похожие плагины для исследуемого вами сайта.
Сбой драйвера микрофона
Быстро проверить микрофон: Тест Микрофона.
Форум Meduza.io
Подсказки? Разочарования? Обсуждаем проблемы сервиса с другими посетителями сайта: или добавить свои "5 копеек" в комментарииидентификация не требуется, для комментариев "5 копеек" действуют ограничения
Уведомления приходят, но приложение не открывается. Черный экран
Та же самая проблема. Черный экран вместо приложения. уже третий день пошёл
Очень сожелительно, что не работает "Медуза". Приходится читать всякую жёлтую и пропагандистскую лабуду. Быстрее чините это замечательное объективное Приложение
Приложение уже как два дня не работает. Похоже на блокировку. Трафик некоторое время "сжирается" но контент не отображается. Переустановка не помогает .
Черный экран. С вечера 10.11.2021
Не работает последние 24 часа приложение
Так жаль, что уже вторые сутки вместо медузы чёрный экран!
Приложение не работает
Приложение не работает.
Сегодня чёрный экран поменяется?
Такая же бабуйня
Приложение лежит вторые сутки, черный экран
Чёрный экран в приложении и всё
При включении приложения черный экран и всё
Мобильная версия вторые сутки не открывается
Удалял , переустанавливал
При включении сайта на мобильнм- чёрное поле.
На компе работает, на мобильном грузится оболочка
не открывается сайт
Сайт не грузится
При переходе с главной страницы: Ой произошла ошибка, и видео-игра
Не грузится сайт
Сайт не работает
Второй день не грузится сайт
Не работает сайт. Статьи не открываются. На экране появляется видеоигра.
Второй или третий день подряд не открывается из двух сетей (Мегафон).Могу открыть только с домашней сети.
Не грузитс главная страница уже два дня в iOs
Ой произошла ошибка и видео-игра
Вместо сайта мини-игра, не заходит.
не работает сайт
Стоит сделать отступление и рассказать, что DDoS-атаки бывают разные по структуре и защищаются от них, в зависимости от вида атаки, по-разному. Самые простые атаки — на переполнение сетевого канала. Сетевые интерфейсы серверов, хостеров и даже интернет-провайдеров хостеров просто заливают мусорным трафиком. Крупнейшая атака такого рода на сайт журналиста Брайана Кребса достигала размера 600 Gbps, а хостер OVH недавно отчитался уже о терабитной атаке. Представьте себе, все 60 серий Игр престолов в высоком разрешении меньше, чем за полсекунды!
Классический прием — забомбить бессмысленными запросами поиск на сайте. Дело в том, что поиск — ресурсоемкая операция, так что легко выесть все вычислительные ресурсы сайта запрашивая много поисковых фраз. Перегрузить процессор и память, так что на обработку запросов нормальных страниц сил у серверов уже не хватит.
Эта атака работает хорошо, если поиском и выдачей обычных страниц занимаются одни и те же серверы. В случае «Медузы» это не так, у нас микросервисная архитектура, так что все, что могли сломать атакующие — это поиск, которым можно без особых последствий пожертвовать. Единственная проблема — это режим «по порядку», технически завязанный на поиск. В этом режиме все материалы «Медузы» выдаются автоматически по хронологии (в отличие от обычного режима, где все собирается вручную редакцией. А от режима по-порядку, в свою очередь, раньше зависели RSS-потоки и подготовка Facebook Instant Articles.
Ботнет — это сотни тысяч, миллионы зараженных компьютеров и телефонов невинных людей. Боты (зомби), выполняющие команду, которую им дают атакующие. С ростом числа «умных вещей» (тостеров, холодильников, голосовых помощников) размеры ботнетов выросли на порядки и продолжают увеличиваться. Сегодня элементарно арендовать сотни тысяч зараженных компьютеров всего лишь за сотни, если не десятки долларов в день.
Итак, я в Брюсселе уже в отеле, все никак не лягу спать, а атакующие запускают нагрузку в 50K RPS. Это все еще не влияет на читателей, но нас в технической команде пугают пики в 300K RPS.
И вот в 0:15 они заряжают уже полноценную атаку:
Да, Медузу нельзя сломать целиком, перегрузив поиск. Но атака в таком объеме грузит уже не сервер поиска, как планировали злоумышленники, а edge-серверы. Они не успевают говорить “нет, у нас нет такой страницы”. Атакующие, тем временем, видимо, решают полвторого пойти поспать и снимают часть нагрузки, оставляя ее постепенно спадать до 21K RPS в 8 утра.
Я просыпаюсь в 8 утра невыспавшийся, чтобы успеть на завтрак и доклады, но быстро понимаю, что конференцию я сегодня пропущу:
250K RPS становится новой нормой, мы добавляем еще 10 edge-тачек (серверов) и понимаем, что так дольше продолжаться не может. Где 300K RPS там и миллион; бороться экстенсивно своими ресурсами мы не хотим — а то это уже выйдет атака на опустошение банковского счета.
Все эти дни я провел в переговорах с Google Project Shield и Cloudlfare Project Galileo. В результате, Google включил нашему аккаунту защиту от этого типа атак (она выключена по умолчанию из-за редкости), а Cloudflare (крупнейший мировой CDN) добавил нас в Project Galileo, что дает нам, как медиа-проекту, полную защиту от атак бесплатно.
Прошли уже две недели после этого инцидента. Мы успели хорошо протестировать работу наших систем с Cloudflare, подправили все шероховатости и готовы в течение 2 минут переключиться под их защиту. Если вдруг с Cloudflare что-то пойдет не так — перейдем в Project Shield.
Нам повезло, что атакующие были невнимательны или не-профессиональны. У них был реальный шанс завалить «Медузу».
Это урок для всех русских медиа. Атака может прийти в любой момент и подготовиться лучше заранее.
Если у вас небольшой блог, но вы опасаетесь DDoS атаки или боитесь не выдержать внезапной популярности, как случилось с сайтом Дениса Карагодина, когда о нем написали федеральные СМИ — то обращайтесь в Deflect. Это проект по защите свободы слова, готовый оказать чуть больше технической поддержки, чем Cloudflare или Shield. И в нем, кстати, есть русскоговорящие сотрудники.
Технический директор Борис Горячев рассказывает, как «Медуза» работала над ним целый год и почему оно написано на Flutter
12 мая состоялся релиз новых мобильных приложений «Медузы» (iOS, Android) — почти через два года после того, как мы решили их переписать. Почему так долго? Почему не нативные приложения? Почему именно Flutter? Обо всем этом рассказывает технический директор «Медузы» Борис Горячев.
В отличие от наших старых приложений, новые мы решили не делать нативными. Во-первых, писать два раза один и тот же код утомительно. Во-вторых, никогда не получится сделать так, чтобы в двух разных проектах, написанных разными людьми, все было синхронно и одинаково. Обычно кто-то работает медленнее, кто-то ушел в отпуск, у кого-то технический долг, который надо закрыть. Весь наш опыт создания и поддержки нативных приложений подсказывал нам — либо мы что-то делаем не так, либо это просто не наш путь. И мы начали искать свой. Пробовали React Native и Ionic, думали про подход Basecamp — все в веб + тонкая нативная прослойка, даже порывались пойти в сторону Progressive Web App и остаться веб-онли.
Примерно тогда же я побывал на конференции Google I/O и там познакомился с людьми, делающими Flutter. Сразу попробовал Dart и поработал немного на Flutter, но на тот момент технология еще не была готова для «Медузы»: нельзя было встраивать внутрь наших материалов разный интерактив и эмбеды, а для медиа это критично. Так что я решил подождать, пока Flutter подрастет.
За время ожидания мы много чего сделали на стороне веба: переписали сайт, написали новую версию AMP. Написали и перевели все проекты «Медузы» на ui-kit — единую библиотеку компонентов, которую использует сайт и благодаря которой возможно огромное количество наших игровых механик. Мы разделили десктопные и мобильные версии сайта, так что раздающие страницы (главная и страницы разделов) стали формироваться в двух разных местах по своим правилам.
Параллельно с работой по сайту мы думали над новым приложением — придумывали его навигацию, смыслы, экраны, фичи и так далее.
Почему все-таки Flutter. И немного про Dart
Когда люди узнают про Flutter, они неизбежно узнают и про Dart. Кажется, он считается, самым большим минусом Flutter, но ровно до тех пор, пока не попробуешь на нем писать. Он действительно прикольный. После JavaScript так особенно.
Dart — это язык программирования, который был разработан в Google. Его анонсировали в 2011 году, то есть это еще пока молодой язык. Он не стал major языком программирования (по крайней мере пока), но при этом его очень активно используют в самой компании. Помимо Google, есть и другие большие компании, например, Wrike, которые используют Dart и пишут на нем фуллстек.
Поскольку и Dart, и Flutter поддерживаются одной компанией, это дает возможность менять язык под нужды Flutter. Насколько я знаю, обе команды активно взаимодействуют друг с другом, поэтому в языке постоянно появляются фишки, позволяющие писать более приятный код на Flutter.
Я не буду пытаться объяснить, из чего состоит Flutter, — Википедия справится с этой задачей лучше, но скажу только, что среди авторов есть люди, которые сделали рендеринг в Chromium.
В декабре 2018 года команда Flutter выпустила библиотеку встраивания Webview в Flutter. Она была сырой и, кстати, до сих пор еще не вышла из Developers Preview Status, но этот факт не помешал начать прикидывать структуру будущего приложения. Несколько месяцев я экспериментировал в свободное от работы время, а потом было принято окончательное решение.
Сначала я сел писать новую версию API специально для приложения. Идеологию этого API можно сформулировать так: если что-то можно сделать на бэкенде, значит, надо это делать на бэкенде. И не потому, что сделать что-то на клиенте сложно. Дело в том, что релизы в App Store и Google Play — это трудоемкий и долгий процесс. Нужно подстраиваться под их графики работы и помнить, что не все пользователи сразу обновят приложение. Этого можно избежать, когда основная логика происходит у тебя на сервере. Надо подвинуть заголовок на 10 пикселей вниз? Пожалуйста. Быстро убрать или добавить компонент? Нет проблем!
По этой же причине API для мобильного приложения содержит максимально простые компоненты, из которых рекурсивно собирается почти любой материал. Я говорю «почти», потому что игры мы показываем через WebView. Приложению без разницы, что показывать — карточку, подкаст, новость или «Шапито». Все обрабатывается одним кодом, а задача приложения — взять компонент и отрендерить его (или пойти в список его детей и вызваться рекурсивно).
Еще один важный аргумент в пользу Flutter: разработчик «контролирует все пиксели». Когда нужно сделать так, чтобы везде были правильные тени, как в макете в Sketch, или хочется, чтобы прозрачность менялась по кривым, или нужно, чтобы размеры шрифтов и вся типографика были настраиваемыми, — в Flutter все просто и реалистично.
Еще одна киллер-фича Flutter — комфорт разработки. Hot-reload, к которому я так привык в веб-разработке, и быстрая скорость перезагрузки приложения без потери состояния максимально облегчают работу. Тебе не нужно сидеть и ждать, пока пересобирается приложение, потом ждать, пока заработает новый код, и повторять состояние, в котором ты работаешь. Все происходит действительно быстро и круто.
Экосистема
Хотя Flutter и Dart пока не очень популярные технологии, у нас не возникло проблем с поиском библиотек. Большая часть того, что нужно в приложении, есть либо в самом фреймворке, либо на pub.dev. Комьюнити очень приятное и готово помогать. Это общение — настоящий глоток свежего воздуха, очень поддерживало.
Кроме того, сам Google хорошо поддерживает Flutter. Мы используем Firebase для пушей, аналитики, профилей и хранения пользовательских данных (история чтения, позиции эпизодов, закладок), и там все «просто работает». Конечно, мне как человеку, который никогда раньше не писал нативных приложений, иногда дико лезть в gradle файлы или ставить проперти в info.plist. Но обычно все гуглится, и там нет ничего невероятно сложного.
Отличия платформ
Про разницу iOS и Android можно говорить бесконечно. Как правило, сразу вспоминают о том, что паттерны должны быть привычными пользователю и что надо обязательно следовать дизайн-гайдлайнам. Мы с этим согласны, но не совсем. Важно помнить и про свой фирменный стиль, и про здравый смысл, и про логику поведения уже знакомых тебе пользователей.
Если взглянуть на историю самих платформ, то мы видим, что одни паттерны меняются вместе с устройствами, а другие перетекают из системы в систему. Это не скрижали, ничего не стоит на месте. Есть десятки крутых примеров, когда компании отступают от рекомендаций Google и Apple и делают так, как считают правильным.
Рассказывает моя коллега, арт-директор «Медузы» Настя Яровая:
У меня маленькие руки и большой телефон. Смешно вроде бы, но это повлияло на два важных решения в процессе разработки. Сначала я предложила значительно увеличить зону свайпа назад (увеличили до 50%) — первое отступление от гайдлайнов. Потом, когда мы работали над навигацией и функциональными кнопками внутри материала, я предложила кнопку «назад» поставить в общее меню внизу — это еще одно отступление от привычного паттерна в интерфейсе. Теперь до нее можно дотянуться большим пальцем, ведь в основном скроллят именно им.
Мы знаем, что нам точно прилетит за то, что мы нарушили ряд рекомендаций Apple и Google. Но мы, если что, тоже пользуемся телефонами и понимаем, что многие паттерны устарели, так как были придуманы для устройств в два раза меньше.
Немного практики: как это устроено в Flutter
После React и других реактивных фреймворков собрать прототип на Flutter можно за пару дней. Генеральная идея Flutter — everything is a widget. Flutter дает две (на самом деле три) парадигмы: можно использовать material виджеты, которые следуют концепции material design. Можно использовать Cupertino widgets — виджеты, которые выглядят и ведут себя как в iOS. И можно все писать самому.
Грубо говоря, есть два вида виджетов, с которым взаимодействует разработчик: stateless и stateful.
Stateless виджеты — это плюс-минус виджеты, которые не держат внутри себя логики, которая должна менять состояние виджета.
В stateful виджетах есть функция setState (привет, реакт!). Ты меняешь state, и виджет перерисовывается.
Но конечно, большое приложение на простых setState далеко не уедет, поэтому нужно решение стейт-менеджмента.
Для Flutter есть несколько решений. Например, есть BloC паттерн, в котором используются стримы и события из источников данных, в них лежит бизнес-логика, которая провоцирует рождение новых событий. Эти события слушаются виджетами, и виджеты реагируют на изменения.
Тем, кто приходит после React, может захотеться попробовать Redux. По идее, не должно возникнуть проблем, если вы писали на React, используя этот подход.
Я пробовал оба подхода и в итоге выбрал третий. Приложение «Медузы» использует Provider. Это библиотека, которую написали не в Google, но интересно, что Google, попробовав Provider у себя, начал отказываться от своего BloC и даже решил повторить Provider как отдельную библиотеку. Но в итоге отказался от идеи повторять чужой код и начал использовать и поддерживать то, что родилось как open source.
Устройство Provider довольно простое. Это виджет, внутри которого есть состояние. Это состояние меняется функциями, которые внутри вызывают notifyListeners(). Те виджеты, которые должны реагировать на изменения, находятся в дереве виджетов — они либо прямые дети Provider виджета, либо дети его детей. Когда notifyListeners() вызывается, дети получают через контекст новые значения и происходит rebuild.
Обычно провайдеры объявляются в самом «верху» приложения, и можно использовать много провайдеров сразу — каждый отвечает за свою бизнес-логику.
На инстанс добавляется реакция на изменения документа из Firebase, который содержит ключи материалов, отложенных читателями в закладки. На каждый onChange этого документа обновляется связанная переменная в провайдере и вызывается notifyListeners. В результате все виджеты, которые слушают этот провайдер, показывают правильную иконку.
Через провайдеры также сделано переключение темы приложения. У приложения есть ThemeProvider, который внутри себя содержит два инстанса тем — и, по сути, это просто Map с нашим неймингом цветов и самими цветами.
В итоге правильный цвет приходит в виджет примерно так:
Код провайдера, если его упростить, будет таким:
Соответственно, при изменении current переменной все без исключения виджеты, которые забирают цвета из темы, будут показаны правильно.
Прежде всего, нужно сказать, я установил прекрасный, на мой взгляд, девайс — Medusa. За что спасибо его создателю Евгению addelectronics .
Чтобы было удобно смотреть на показания и не опускать глаза вниз, я решил не подключать данное устройство к уже установленной на штатное место Андроид-голове, а установить еще одно. Выбрал самую дешевую на рынке модель с малой установочной глубиной — некий Cyclon MP-7039 GPS AND и отдал Виктору в ArtBass на внедрение его вместо "очечника", или как он там называется.
Сенсоры решил покупать самостоятельно, а не заказывать сразу с Медузой. Тем более, что еще до получения посылки с самой Медузой, Евгений мне выслал электронную версию инструкции. Из-за которой, собственно, и вышел весь сыр-бор. Но обо всем по-порядку.
В общем, получил я электронную инструкицю, где помимо всего прочего, указаны модели сенсоров, с которым работает (видимо, с которыми тестировалась) Медуза и, важно — таблицы с калибровками для тех или иных моделей. Выглядит вот так:
Чтобы не выдумывать велосипед, я зыказал себе датчики, которые были указаны в этой инструкции:
— Для температуры масла двигателя DEPO S3747
— Для температуры масла АКПП DEPO S3747
— Для давления масла двигателя DEPO PK-S27
Покупаю сенсоры, устанавливаю их в тачку: температуру и давку масла двигателя ставлю в проставку фильтра GREXX с термостатом
А температуру масла АКПП вкручиваю прямо в поддон АКПП, через оригинальный переходник 11024АА210
Ну и, без задней мысли, сразу вношу калибровку для них из инструкции.
Катаюсь, присматриваюсь, наблюдаю… Ах да! Чуть ранее я еще и 25-рядный радиатор поставил на масло двигателя.
Так вот. Катаюсь, наблюдаю за показаниями Медузы и понимаю, что масло двигателя летом доходит до 112 градусов Цельсия без особых навалов. Стоит буквально минуты 2-3 проехаться активно по городу и данная температура тут как тут. Думаю, показания могли бы еще ползти вверх, но я давал тачке остыть, круизя.
Но то работа, то еще что-то. В общем, дотянул я с этим вопросом до нынешней зимы. Прилетел домой. Зима. Прохладно. Стою в пробке, а температура масла растет на глазах и доходит до 107 градусов. И это зимой (правда температура около 0) без навалов и в пробке!
Короче, я уже начинаю очковать, что с тачкой реально что-то не так и перебарываю лень. Беру в руки специально купленный для таких целей планшет на Windows 8.1 32bit, кабели Tactrix Openport 2.0 и VAG-COM K-Line и иду в машину сверять показания Медузы и мозгов авто.
По началу, при температуре масла в 66 градусов (по мозгам авто), разница с медузой составила всего 1-2 градуса. Использовал, к слову, программу FreeSSM и VAG-COM кабель.
Ну, думаю, все, п***. Если показания совпадают, значит и температры в 107-112 градусов тоже реальны. Но все же решил посидеть в тачке, подождать роста температуры масла и еще посравнивать. Чуть отвлекся на телефон, потом на сравнения показания температуры АКПП, как одуплился, что разница в показаниях составляет уже 5 градусов
Подождал еще немного и разница достигла 10 градусов!
Тут то я и понял, что проблема во внесенных калибровках для сенсоров температуры. Причем, видимо, ошибочные правки идут где-то после 70 градусов. Так как машина уже была прогрета и я был один, решил внести калибровки для 80-85-90 градусов, сравнивая получаемые данные с показаниями с мозгов авто.
Спустя 2 минуты, правки были внесены и температуры при 80, 85 и 90 градусах совпадали на мозгах и Медузе.
Завтра, на холодную, сверю и откалибрую значения от 0 до 80 и, если найду компаньона, и смогу прогреть масло свыше 90 градусов, то внесу правки и для этого диапазона температур.
Тем более, я завтра заеду на сервис для замены масла, где перенесу сенсоры из проставки прямо в блок.
Если других подводных камней не найду и калиброовка пройдет успешно, в след. записи выложу свою таблику калибровки для данных сенсоров.
P. S> Эта запись ни в коем случаи не камень в огород Евгения addelectronics . Может я не внимательно прочел инструкцию, может сенсоры у тайваньцев все разные и дают разные показания, а может…
Не суть. Главное — не доверяй бумажкам, а лучше все перепроверяй.
Читайте также: