Относительный код. Структура навигационного сообщения глонасс. Внутренняя ошибка сервера

Рис.2.9. Код с инверсией токовых посылок

Код с поразрядно чередующейся инверсией (ADI)

При построении низкий потенциал представляется элементом , а высокий – элементом . Построение кода ADI начинают с низкого потенциала. При смене полярности в исходной двоичной последовательности уровень кода остается постоянным, а при повторении полярности предыдущего символа происходит смена полярности кода. Пример кодирования показан на рис.2.10.


Для передачи логического нуля используется элемент , а для передачи логической единицы – элемент . Пример кодирования показан на рис.2.11.

Рис.2.11. Абсолютный биимпульсный код

Относительный биимпульсный код (ОБС)



Для формирования кода используются элементы или . Нулевой уровень кодируется изменением предыдущего состояния; а единичный - сохранением состояния. Пример кодирования показан на рис.2.12.

Рис.2.12. Относительный биимпульсный код

Код Миллера (ML)

Код Миллера является двоичным двухуровневым кодом. При кодирования каждый тактовый интервал делится пополам.

Принятие решения о выборе следующего элемента кодовой последовательности осуществляется на основе графа, представленного на рис.2.13. Узлами графа являются возможные текущие состояния кодовой последовательности. Направление перехода от текущей вершины выбирается на основании анализа последующего элемента в исходной двоичной последовательности. Элементы новой текущей вершины графа являются элементами кода. Кодирование начинается всегда с вершины "11".


В построении кода участвуют элементы , , и . Пример кодирования показан на рис.2.14.

Рис.2.14. Код Миллера

Код DMI

В коде DMI двоичный нуль в исходной двоичной последовательности заменяется элементами и , а двоичная единица – поочередно элементами и . Причем если единица кодировалась элементом , то следующий за ней нуль кодируется элементом , а если единица кодировалась элементом , то следующий за ней нуль кодируется элементом . Начинают построение с положительного потенциала. Пример кодирования показан на рис.2.15.

Рис.2.15. Код DMI

Код H

В коде двоичный нуль в исходной двоичной последовательности заменяется поочередно элементами и , а двоичная единица – поочередно элементами и . Начинают построение с положительного потенциала. Пример кодирования показан на рис.2.16.

Внести немного разнообразия в игры на андроид устройстве позволяет игра My Singing Monsters или Мои поющие монстры . Это очень симпатичный гибрид стратегии и тамагочи, позволяющий совместить логику и умиление очаровательными монстриками и отвлечься от поиска "запчастей" к своему ноутбуку на http://100detaley.ru/catalog/category/247/ . Очень разные и такие интересные монстры обитают на островах этй игры. Они ещё и поют, не забывайте!

My Singing Monsters - игра, донат присутствует. В ваше распоряжение попадает этакий очень развитый тамагочи, в котором питомцев может быть ну очень много, и в ваших силах создать для них идеальные условия. Мудро правьте на каждом из островов игры и сможете узнать его мелодию. В том и интерес игры Мои поющие монстры, чтобы полностью развить все острова и узнать, как поёт живое на них в единой гармонии.

Красивый мультяшный мир, милые персонажи, простор для развития и изучения нового мира делают My Singing Monsters для андроид отличным способом отдохнуть. Играть в Моих поющих монстров достаточно просто и нескучно, и каждый раз есть, с чем познакомиться: новый монстрёныш, его песенка (у каждого своя), новые предметы "быта", устройства и здания. Обновления стоят игровых денег, заработать их предлагают разными способами, в том числе и неигровыми - например, загрузить и установить какое-нибудь приложение (у каждого приложения своя "цена"). С прохождением My Singing Monsters вы можете ознакомиться в нашем видеообзоре.

И вот ещё несколько советов по прохождению Моих поющих монстров :

  • Как только вы подселили на остров нового монстра, вся информация о нём становится доступна, так что можно сразу же узнать, что новосёлу нужно для счастья, что именно лучше всего строить и размещать вокруг.
  • Выполняйте задания, особенно вначале - это помогает быстро развиться и подарит бесплатную еду.
  • Чтобы разводить монстров, будущие "молодожёны" должны быть достаточно взрослыми - их нужно усовершенствовать до конца (да и вообще, большие и счастливые монстры зарабатывают больше денег). Обращайте внимание на элементы каждого монстра: новый вид получится только если они не совпадают, иначе "родится" копия мамочки с папочкой. Эту информацию можно посмотреть в меню покупки или под информационной областью. С монстром связано от одного до четырёх элементов - ветер, снег, дождь, земля, растения.
  • Совершенствуйте пекарни и вообще всё, связанное с едой - монтрам нужно кушать. Можно, конечно, накупить кучу еды за настоящие деньги - но тут уж дело вкуса, жадности и здравого смысла.
  • Как можно скорее установите шахту. Каждые 24 часа она будет приносить вам два бесплатных изумруда.
  • Купив несколько островов, вы получите новые возможности для выведения неведомых доселе пород. Но перемещать монстров с одного острова на другой пока нельзя.

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

My Singing Monsters — инновационная игра для операционной системы Android, а также можно играть My Singing Monsters на компьютере , главными героями которой являются поющие монстры. Цель игры — это создание собственного оркестра из монстров. В игре существует больше 20 видов монстров. Ими постепенно заселяют острова, которых в игре семь. На каждом острове свой оркестр, создающий отличную от других мелодию.

Как вывести монстра My Singing Monsters

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

Итак, чтобы получить «одноместного» (изаблолиста, ти рокс, вужас), следует нажать в Питомнике на «добавить яйцо». Вот и все. По завершению, когда монстр будет получен, можно отправить его на определенный остров, дабы он начал петь и зарабатывать деньги. А вот для получения «двух-, трех-, четырехместных» (сахабуша, смычорога, йола) необходимо сначала купить здание для размножения, обзавестись 2 монстрами (4 уровня) и терпением. Когда его нет, помогут кристаллы.

Чтобы получить «двух и трехместного» монстра, нужно запомнить стихии желаемого монстра и учесть несложную арифметику. У каждого монстра под картинкой имеются значки с элементами стихий. Остается только смотреть стихии разных монстров и скрещивать их. Стихии должны не совпадать, иначе «родится» копия мамочки с папочкой, а не новый вид. Создание «четырехместного» монстра требует созданных ранее «одноместного» и «трехместного».

Как повысить уровень

Монстры My Singing Monsters тоже нуждаются в еде, производится которая в Пекарнях. Размеры монстров увеличиваются на 4, 10 и 15 уровнях, но, кстати, место во дворце они не увеличивают. Однако, чем больше уровень, тем больше еды нужно для монстра и для повышения уровня. За каждый уровень монстра нужно покормить 4 раза. Также поднять уровень можно за счет дорогих декораций и выпекания дорогой еды.

Секреты по прохождению

Если нужно ускорить или замедлить время воспроизведения мелодии острова — есть часы «Time Machine», которые можно приобрести в Маркете.

Заработать кристаллы можно с помощью выполнения специальных заданий, публикации вылупленного монстра (на Facebook) или в Шахте («Mine»).

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

Если у Вас не получается что то сделать самостоятельно, то советуем обратится в скорую компьютерную помощь — pchelp24.com, приемлемые цены, опытные специалисты, бесплатный вызов и диагностика.

Мы выпустили новую книгу «Контент-маркетинг в социальных сетях: Как засесть в голову подписчиков и влюбить их в свой бренд».

Роботы общаются между собой. Не только в Японии или голливудских блокбастерах, а прямо сейчас, пока вы читаете статью. Только язык общения у них специфический, и вам нужно понимать его, если хотите знать, как выстраивать работу над улучшением сайта. Для этого нужно изучить коды состояния . Чтобы вы ориентировались в грамматике, перевели с Yoast об основах основ.

Коды состояния HTTP, такие как 404, 301 и , едва ли имеют значение для пользователей, но для оптимизаторов они невероятно важны. Мало того, что роботы поисковых систем (как Googlebot) используют их для определения здоровья сайта, коды состояния помогают узнать, что происходит между браузером и сервером. Некоторые из них указывает на ошибку, например, сигнализируют о том, что запрошенное содержимое не может быть найдено, в то время как другие просто выводят запрашиваемый материал. В этой статье мы пристальнее посмотрим на важнейшие коды HTTP заголовков и узнаем, что они означают для SEO.

Что такое коды состояния HTTP и почему вы их видите?

Код состояния HTTP – это сообщение, которое посылается сервером при отправке запроса с браузера, о том, может ли быть выполнен запрос или нет. Согласно официальной спецификации W3C, существуют десятки кодов состояния, со многими из которых вы вряд ли столкнетесь. А если столкнетесь, полный обзор возможных вариантов можно посмотреть на HTTPstatuses.com.

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

Добраться до веб-сайта пользователь может двумя способами – набрав URL сайта или введя запрос в строке поиска. После этого браузер посылает запрос на IP-адрес сайта, для получения соответствующей веб-страницы. Сервер отвечает браузеру, отправляя код состояния, встроенный в заголовок HTTP. Когда все нормально, код заголовка HTTP 200 отправляется обратно в браузер, вместе с запрошенным контентом.

Однако с запрашиваемым контентом или сервером что-то может быть не так. Например, не найдена страница (тогда возвращается код ошибки 404) или есть временная техническая проблема с сервером, в результате чего появляется код внутренней ошибки сервера 500. Эти коды статуса HTTP – важные инструменты для оценки состояния здоровья сайта и его сервера. Если сайт регулярно посылает неправильные коды заголовка HTTP в поисковую систему, его содержимое не индексируется, что, в свою очередь, вредит рейтингу.

Различные классы

Есть пять классов диапазонов кодов состояния HTTP, определяющих различные типы процессов, которые происходят между клиентом и сервером. Выглядят они следующим образом:

  • 1xx – Информирующие о чем-либо.
  • 2xx – Сообщающие об успешном выполнении.
  • 3xx – Уведомляющие о перенаправлении.
  • 4xx – Сообщающие об ошибке клиента.
  • 5xx – Сообщающие об ошибке сервера.

Наиболее важные коды состояния HTTP для SEO

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

200: OK / Успешно

Вот как должно быть: клиент запрашивает у сервера контент и сервер отвечает сообщением 200. Это означает, что запрос прошел успешно – браузер получает содержимое, которое удовлетворяет потребностям клиента. И сервер, и клиент довольны. Пользователь счастлив. Все сообщения класса 2xx означают успешное выполнение какой-либо операции.

301: Перемещено навсегда

Заголовок HTTP 301 используется, когда запрашиваемый URL перемещен на новое место. Поскольку вы работаете с сайтом, с кодом придется сталкиваться часто – чтобы перенаправить старый URL на новый, вам обязательно нужно делать 301 редирект. Если вы этого не сделаете, пользователи, открывая старый URL, увидят страницу с кодом ошибки (404).

302: Найдено

Код состояния HTTP 302 означает, что целевой контент был найден, но находится в другом месте. Это довольно неоднозначный код состояния – он не говорит, временная это ситуация или нет. Используйте 302 редирект только в том случае, если хотите временно перенаправить URL на другой источник, и вы уверены в том, что будете использовать URL снова. Этим кодом вы сообщаете поисковым системам, что URL-адрес будет использоваться, а значит ссылочный вес не перенесется на новый URL. Поэтому не пользуйтесь 302 редиректом при перемещении домена или серьезных изменениях в структуре сайта.

307: Временное перенаправление

Код состояния 307 заменяет 302 в спецификации HTTP1.1 и может рассматриваться как единственный истинный редирект. Вы можете использовать 307 если вам нужно временно перенаправить URL на новый, оставив оригинальный метод запроса без изменений. 307 выглядит как 302, за исключением того, что он конкретно сообщает о временном характере нового местоположения. Запрос может меняться с течением времени, поэтому клиент должен продолжать использовать оригинальный URL при создании новых запросов.

403: Запрещено

403 сообщает браузеру, что запрошенное содержимое запрещено для пользователя. Если пользователь не сможет предоставить корректные учетные данные для входа, содержание останется недоступным.

404: Не найдено

Код заголовка HTTP 404 – один из наиболее важных. Когда сервер дает ответ в виде ошибки 404, вы получаете информацию о том, что содержимое не было найдено, и, вероятно, удалено. Старайтесь не раздражать посетителей сообщениями с этим кодом, исправляйте ошибки как можно скорее. Используйте редирект для перенаправления посетителей сайта со старого URL на новую статью или страницу, которая имеет связанный контент.

Мониторьте 404 сообщения в интерфейсе ошибок (Crawl errors) Google Search Console и пытайтесь свести их количество к минимуму. Большое количество ошибок этого типа может быть расценено Google как признак плохого обслуживания, а это повлияет на рейтинг сайта.

410: Удален

Результат кода 410 такой же, как 404 – содержимое не было обнаружено. Тем не менее, с 410 вы сообщаете поисковым системам об удалении запрошенного содержимого. Таким образом, этот код намного конкретнее 404. В некотором смысле вы отдаете команду поисковой машине удалить URL из индекса. Перед тем, как окончательно удалить что-то с сайта, подумайте, есть ли где-нибудь эквивалент страницы. Если да, сделайте редирект. Если нет, страницу нужно удалить или улучшить.

451: Информация недоступна по юридическим причинам

Относительно новое дополнение. Код состояния HTTP 451 показывает, что запрошенное содержимое было удалено по юридическим причинам. Если вы получили запрос на удаление, нужно использовать этот код, чтобы сообщить поисковым системам, что случилось со страницей.

500: Внутренняя ошибка сервера

Ошибка 500 – сообщение о том, что сервер столкнулся с неким условием, которое не позволяет ему выполнить запрос, без указания на то, что является его причиной. Причиной ошибок может стать что угодно, например, неисправный скрипт на вашем сайте. Проверьте журналы сервера, чтобы увидеть, где проблемы.

503: Сервис недоступен

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

Работа с кодами состояния HTTP

Коды HTTP – важная часть деятельности оптимизаторов. Вы будете сталкиваться с ними ежедневно, и поэтому важно понять, что означают различные коды. Например, при удалении страницы с сайта важно знать разницу между 301 и 410 редиректом. Они служат для разных целей, и, следовательно, ведут к разным результатам.

Если вы хотите получить представление о видах кодов состояния, которые генерирует ваш сайт, войдите в Google Search Console. Здесь вы найдете страницу с ошибками сканирования. Они должны быть найдены и устранены, прежде чем ваш сайт будет проиндексирован.

В заключение

Помните об этих кодах, при работе с сайтом вы увидите как часто они появляются. Зная, какие редиректы нужно использовать в той или иной ситуации, вы сможете спасти свой сайт от необязательных потерь позиций в ранжировании. Одного взгляда на ошибки при сканировании в Google Search Console должно быть достаточно, чтобы вы получили достаточно точные данные о происходящем под капотом.

Ирина Винниченко

Контент-маркетолог SEMANTICA

Владелец сайта – современный Микеланджело. У него есть бесформенный материал, цель и, возможно, вкус и навыки, достаточные для воплощения проекта. Но у владельца сайта есть и то, чего не было у скульпторов – Google Search Console, которая позволяет вовремя найти ошибки и устранить их.

Как это сделать? Откройте Google Search Console. Перейдите во вкладку «Crawl» > «Crawl Errors» . Там вы сможете посмотреть, что происходит с сайтом и уладить проблемы.

В первую очередь разберитесь с внешними ссылками, ведущими на страницу. Google, как правило, сортирует ошибки по важности. Ошибки с внешними ссылками относятся к приоритетным. Чтобы посмотреть, откуда идет ссылка, кликнете по URL-адресу 404 страницы. В открывшейся вкладке выберите «Linked From» и посмотрите URL-ссылки на страницу. Убедитесь, что все 404 страницы перенаправлены 301 редиректом на релевантный URL.

Проверять сайт на наличие ошибок нужно часто. Делайте это хотя бы раз в месяц.

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

Она должна содержать:

  • Уведомление о том, что пользователь открыл страницу, которая не существует.
  • Окно поиска.
  • Простую навигацию, с помощью которой пользователь получит доступ к тому, что искал.
  • Ссылку на главную страницу.

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

Это продолженеие статьи о помехоустойчивом кодировании, которая очень долго лежала в черновиках. В прошлой части нет ничего интересного с практической точки зрения - лишь общие сведения о том, зачем это нужно, где применяется и т.п. В данной части будут рассматриваться некоторые (самые простые) коды для обнаружения и/или исправления ошибок. Итак, поехали.

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

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

По сути, кодирование - это добавление к исходной информации дополнительной, проверочной, информации. Для кодирования на передающей стороне используются кодер , а на принимающей стороне - используют декодер для получения исходного сообщения.
Избыточность кода - это количество проверочной информации в сообщении. Рассчитывается она по формуле:

k/(i+k) , где
k - количество проверочных бит,
i - количество информационных бит.
Например, мы передаем 3 бита и к ним добавляем 1 проверочный бит - избыточность составит 1/(3+1) = 1/4 (25%).

Код с проверкой на четность

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

В каждом пакет данных есть один бит четности , или, так называемый, паритетный бит . Этот бит устанавливается во время записи (или отправки) данных, и затем рассчитывается и сравнивается во время чтения (получения) данных. Он равен сумме по модулю 2 всех бит данных в пакете. То есть число единиц в пакете всегда будет четно . Изменение этого бита (например с 0 на 1) сообщает о возникшей ошибке.
Ниже показана структурная схемы кодера для данного кода

и и декодера

Пример:

Начальные данные: 1111
0 (1 + 1 + 1 + 1 = 0 (mod 2))
Принятые данные: 10 110 (изменился второй бит)
Как мы видим, количество единиц в принятом пакете нечетно, следовательно, при передаче произошла ошибка.

Как говорилось ранее, этот метод служит только для определения одиночной ошибки. В случае изменения состояния двух битов, возможна ситуация, когда вычисление контрольного бита совпадет с записанным. В этом случае система не определит ошибку, а это не есть хорошо. К примеру:
Начальные данные: 1111
Данные после кодирования: 11110 (1 + 1 + 1 + 1 = 0 (mod 2))
Принятые данные: 100 10 (изменились 2 и 3 биты)
В принятых данных число единиц четно, и, следовательно, декодер не обнаружит ошибку.

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

Код Хэмминга

Как говорилось в предыдущей части, очень много для помехоустойчивого кодирования сделал Ричард Хэмминг . В частности, он разработал код, который обеспечивает обнаружение и исправление одиночных ошибок при минимально возможном числе дополнительных проверочных бит. Для каждого числа проверочных символов используется специальная маркировка вида (k, i), где k - количество символов в сообщении, i - количество информационных символов в сообщении. Например, существуют коды (7, 4), (15, 11), (31, 26). Каждый проверочный символ в коде Хэмминга представляет сумму по модулю 2 некоторой подпоследовательности данных. Рассмотрим сразу на примере, когда количество информационных бит i в блоке равно 4 - это код (7,4), количество проверочных символов равно 3. Классически, эти символы располагаются на позициях, равных степеням двойки в порядке возрастания:
первый проверочный бит на 2 0 = 1;
второй проверочный бит на 2 1 = 2;
третий проверочный бит на 2 2 = 4;

но можно и разместить их в конце передаваемого блока данных (но тогда формула для их расчета будет другая).
Теперь рассчитаем эти проверочные символы:
r1 = i1 + i2 + i4
r2 = i1 + i3 + i4
r3 = i2 + i3 + i4

Итак, в закодированном сообщении у нас получится следующее:
r1 r2 i1 r3 i2 i3 i4

В принципе, работа этого алгоритма разобрана очень детально в статье Код Хэмминга. Пример работы алгоритма , так что особо подробно описывать в этой статье не вижу смысла. Вместо этого приведу структурную схему кодера:

и декодера


(может быть, довольно запутано, но лучше начертить не получилось)

E0,e1,e2 опрделяются как функции, зависящие от принятых декодером бит k1 - k7:

e0 = k1 + k3 + k5 + k7 mod 2
e1 = k2 + k3 + k6 + k7 mod 2
e2 = k4 + k5 + k6 + k7 mod 2

Набор этих значений e2e1e0 есть двоичная запись позиции, где произошла ошибка при передаче данных. Декодер эти значения вычисляет, и если они все не равны 0 (то есть не получится 000), то исправляет ошибку.

Коды-произведения

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


Передаваемая информация кодируется дважды: во внешнем и внутреннем кодерах. Между ними устанавливается буфер, работа которого показана на рисунке:

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

При выводе строк из буфера к ним добавляются проверочные символы внутреннего кода. В таком порядке информация передается по каналу связи или записывается куда-нибудь. Условимся, что и внутренний, и внешний коды – коды Хэмминга, с тремя проверочными символами, то есть и тот, и другой могут исправить по одной ошибке в кодовом слове (количество «кубиков» на рисунке не критично - это просто схема). На приемном конце расположен точно такой же массив памяти (буфер), в который информация заносится построчно, а выводится по столбцам. При возникновении пакетной ошибки (крестики на рисунке в третьей и четвертой строках), она малыми порциями распределяется в кодовых словах внешнего кода и может быть исправлена.

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

Использование кодов-произведений многократно увеличивает мощность помехоустойчивого кода при добавлении незначительной избыточности.

P.S.: Плотно занимался этой темой 3 года назад, когда писал дипломный проект, возможно что-то упустил. Все исправления, замечания, пожелания - пожалуйста через личные сообщения