Synchronization error ejudge

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

Время прочтения
10 мин

Просмотры 23K


Recovery mode


Из песочницы

В одном

нецентральном

отдаленном регионе нашей необъятной страны как-то раз проходил очередной региональный этап Всероссийской олимпиады школьников по информатике и программированию. До 2014 года всё было хорошо, проводили олимпиаду на старой системе, написанной в далеких 2004 годах очень одаренным программистом, на Delphi. С тех пор его никто не менял — работал, ну и ладно. В 2014 году решили попробовать ejudge. Поднимать всё с исходников не стали, решили взять готовое, образ для виртуальной машины. Всё было хорошо, все работало.

Но тут наступил 2015 год, в котором некоторые пункты проведения олимпиады немножко, совсем чуть-чуть поменяли, и нужные «человеки» об этих изменениях узнали только за 1-2 дня до начала…

Тут-то и начинается самое веселое.

Дело в том, что почти все эти изменения касались только нас двоих(я + ripatti).
Я отвечал за сервер (fedora19, ejudge) и его работоспособность, он отвечал за подготовку тестов, конфигурации туров в целом. У него в этом довольно богатый опыт.

Итак, пойду по хронологическому порядку.

21 января, среда

Меня спрашивают, смогу ли я поднять сервер для олимпиады на базе выделенных машин университета, на что я отвечаю отрицательно, ибо времени оставалось мало, и среда для меня может быть незнакомой (думал, что там VMWare, а я только на Virtual Box мог). В общем, я не смог дать гарантию, что всё будет хорошо.

22 января, четверг

Узнаю, что появилось такое понятие, как токены. Это означало лишь одно: решения участников должно проверяться во время тура, а не после. Вспомнив прошлогодний тур, решил, что один сервер всё потянет. В прошлом году же ничего не упало, все сработало, все были довольны. Начал работать над сервером. Привез машину (железо) в стены университета.

пояснение

Сервер с ejudge я поднял в стенах своего лицея, в прошлом году, заранее, до олимпиады. Поэтому на прошлом региональном этапе было принято испробовать готовое решение.

Вечером узнаю от напарника, что предыдущая версия ejudge (2.3) не удовлетворяет требованиям. Как раз к этому времени Александр Чернов выложил рабочую версию. Даже специально завел новый репозиторий со всеми настройками пробного тура. Было очень заманчиво, потому что у меня в голове была идея настроить старую версию. Решили собрать новую версию из исходников, так как готового образа не было. Тут начались первые проблемы.

Проблема: как пустить ssh по не 22 порту?

предыстория, решение (частичное)

Дело тут в университете. Они, как и любая организацию, блокируют 22 порт снаружи. Мы могли в стенах универа работать спокойно, а вот за стенами начились бы проблемы. Слава Богу, мой научный руководитель был администратором кластера, у которого был внешний IP, но доступ к нему был запрещен. Попросил его помочь, в итоге он нам полностью всё настроил. На самом деле, я попросил дать мне ssh доступ к кластеру (откуда я спокойно попадал на свой сервер по 22 порту), но ему очень не хотелось раздавать доступ налево-направо. Решили «кардинально решить проблему». Я ему даю все пароли, логины, а он обещал посмотреть. Да, человек я доверчивый.

На самом деле, я и сам пытался это сделать, но не смог.

Вырезки из того, что он потом прислал:

… в-третьих, настройки ssh-сервера хранятся в /etc/ssh/sshd_config, а не ssh_config, я добавил в первом

Port 22
Port 5000
PermitRootLogin no

и все вывесилось как надо:
[root@localhost ssh]# service sshd status
Redirecting to /bin/systemctl status sshd.service
sshd.service — OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled)
Active: active (running) since Thu 2015-01-22 21:01:38 YEKT; 4min 53s ago

Ур-р-а!
Порт 5000 для ssh свободен, я могу к нему зайти.
Но ни гитхаба, ни yum update, ничего…
Точнее, ночью я эти вещи не смог настроить.

В 7 утра позвонил (разбудил напарника), всё рассказал. Проблема стояла в том, что мы тупо не могли скомпилировать исходный код, ибо некотоые библиотеки отсутствовали, я стягивать их нельзя (ssh 5000). Пытался по одному, но там, блин, зависимости, очень хорошие.

Решили создать другой сервер с полными настройками ejudge (3.3) так, чтобы потом не пришлось заходить к серверу (она находилась в серверной, под замком, было проблематично получить физический доступ к машине).

23 января, пятница, начало пробного тура в 16:00

В 9 утра иду сдавать коллоквиум по Функану, декан что-то поставил, не смотрел. Вроде не «неуд».
В 10 часов начинаю собирать новый ejudge параллельно с Артемом. У него это получается чуть быстрее, я же остановился на мелком шаге и перестал дальше думать.
Вторая проблема.

Собрать ejudge весрии 3.3 из образа fedora19 c ejudge 2.3

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

git clone https://github.com/blackav/ejudge.git
cd ejudge/
./fedora-configure
make
su
make install
#Вроде теперь надо просто запустить ejudge-control, но:
ejudge-control
Tue Jan 27 01:24:35 2015:info:ej-users 2.3.29, compiled Sat Dec 14 07:58:33 2013
mysql: SELECT config_val FROM config WHERE config_key = 'version' ;
Tue Jan 27 01:24:35 2015:info:ej-super-server 2.3.29, compiled Sat Dec 14 07:58:33 2013
Tue Jan 27 01:24:35 2015:info:configuration file parsed ok
Tue Jan 27 01:24:36 2015:info:ej-jobs 2.3.29, compiled Sat Dec 14 07:58:33 2013
Tue Jan 27 01:24:36 2015:info:ej-contests 2.3.29, compiled Sat Dec 14 07:58:33 2013
Tue Jan 27 01:24:36 2015:info:using files as the new-server database

Да, именно, ejudge-conrtol подцепил старую версию.
Всё заработало, заходим на веб версию — видим старое.
Переименовал папку, где находился старая версия бинарника. При этом преследовал 2 цели: сделать так, чтобы он пропал из путей и сделать бэкап старой версии.

Теперь запускаем заново ejudge-control, который находится в /usr/bin/ejudge-control:

[ejudge@localhost ~]$ ejudge-control start
2015-01-27T19:03:18Z:info:ej-users 3.3.1, compiled 2015-01-23 09:25:21
mysql: SELECT config_val FROM config WHERE config_key = 'version' ;
2015-01-27T19:03:18Z:info:ej-super-server 3.3.1, compiled 2015-01-23 09:25:21
2015-01-27T19:03:18Z:info:configuration file parsed ok
2015-01-27T19:03:19Z:info:ej-jobs 3.3.1, compiled 2015-01-23 09:25:21
2015-01-27T19:03:19Z:info:ej-contests 3.3.1, compiled 2015-01-23 09:25:21
2015-01-27T19:03:19Z:info:using files as the new-server database

Ещё немножко шаманства, и пробный тур готов!

Это мы сказали, когда время было примерно 17:00.

Я побежал с дистрибутивом в серверную. Прихожу, а там экран только потух. Думал, уснул монитор. Всё хуже — только что сисадмин по непонятной мне причине отрубил питание у моего железа. Теперь я жду, пока windows server 2008 загрузится, дальше копирую, импортирую в virtual box, запускаю, проставляю статические адреса, настраиваю ssh. Из-за того, что в прошлый раз мне его настраивал мой науч.рук (Юлдашев Артур Владимирович), в этот раз пришлось потратить кучу времени. Усугублялось всё это тем, что в серверной у меня не было возможности погуглить.

Время 17:45, пробный тур почти закончился, у нас сервер до сих пор не встал… Поступают множество звонков — отвечаем, мол, всё, закругляемся, сервер не успеем поднять.

Время 18:00, сервер ещё не встал. Собрались с другими жюри, думаем, как выйти из этой ситуации.

Было решено следующее: Мы с Артемом не спим, допиливаем пробный тур и первый, приготовим всё к 10, с 10:00 по 11:00 запускаем пробный тур, а в 11:00 запускаем 1 тур. Так мы лишились сна на 2 ночь.

Попрощались и поехали домой. Дома стали заново всё настраивать, настроили. К утру всё было готово.

24 января, суббота, 1 тур (официальное расписание)

Начинается пробный тур, и тут мы, наконец, поняли, с чем имеем дело.

Токены

Что это такое?
В прошлом году была следующая ситуация: участник отправляет исходный код на тестирующую систему, которая, в свою очередь, проверяет только на тестах, которые показаны на примере к задаче. Если посылка их не проходит, то она не становится в очередь для полной проверки. Поэтому наш почетный один сервер спокойно справлялся со всей нагрузкой(всего было 150 участников).

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

Пробный тур начался, а у нас задержка сервера уже 15 минут. То есть участник отправляет решение на сервер, а оно там проверяется только через 15 минут. Не испугались мы этого. А зря. Подумали, что пройдет.

Я делаю Reload contest, сбрасываю весь очередь посылок. При этом никому об этом не сообщил. В итоге за 10 минут до конца пробного тура нас снова забрасывают посылками. Тихонько закрываем контест, открываем контест 1 тура.

11:00, 1 тур

Буквально через 15-20 минут приходят несколько посылок, появляется нехорошая очередь. Артем сразу дал понять. В первой задаче, в самой легкой, как ожидалось, всего 48 тестов. Решение есть в лоб, который набирает 50 баллов из 100, а есть хорошее решение, до которого нужно додуматься. Но об этом большинство должно было узнать только после того, как их решение получило TLE. Как вы поняли, одна посылка задачи А, решенная в лоб, занимало у сервера 24 секунды. Таких посылок становилось всё больше и больше, стали поступать вопросы к жюри по поводу времени тестирования. Артем всё грамотно пояснил, отправил сообщение для всех. Но даже при этом, почти каждый отправил хотя бы одно «халявное» решение А. И тут очередь закономерно начал возрастать. Сперва 15 минут, потом резко 45. Все, особенно участники, были обеспокоены, напряжены, недовольны. В первую очередь нами. Артем в это время сидел дома, я был на месте и слышал в свой адрес почти всё, что должен был услышать. Начали думать, нужно как-то попытаться выходить из ситуации. Нашли нужную статью в документации, но не смогли воспользоваться. После этого мы просто закрыли глаза на 30 вопросов и ждали, когда всё это закончится.

Наконец, закончился! Задержка проверки — 1 час. Участник должен был отправить решение за час до конца, чтобы успеть посмотреть протокол проверки.

16:00, иду в актовый зал. Встречаю недовольные глаза. Ещё бы, я только что лишил детей выхода на финал. Как на меня ещё можно было смотреть. С одним очень известным учителем пересекся, рассказал, в чем проблема, какие есть решения — распараллелить. Пожелал мне удачи.

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

Вариант №1. Поставить в каждом дисплейном классе по 1 серверу, в больших классах — по 2. После олимпиады все результаты соберем, проблем с сетью не будет ни у кого, нагрузку можно будет снизить в порядок, что и даст возможность отвечать всем требованиям на 100%. Очевидны изъяны: сейчас суббота, почти все дисплейный классы уже закрыты, в том числе серверная. Серверов у нас под рукой нет, образов 2 тура тоже. Дисплейные классы находятся слишком далеко друг от друга, в 3 корпусах. Про доступ по ssh можно и не говорить. 2 тур начинается в понедельник 9 утра, железно. За утро понедельника такое дело не сделать, ибо нас всего лишь двое.

Вариант №2: подключить вычисляющие узлы к основному серверу. Этот случай идеальный. Ничего не нужно менять в плане организации олимпиады. Единственная проблема — создать эти вычисляющие узлы.

Под рукой тогда ничего не было. 1 звонок — и через час у нас 13 ноутбуков, core-i7, по 8 ГБ ОЗУ. Единственный образ машины, который у меня был — образ пробного тура.

20:00, сидим на кафедре, настраиваем сервер для 1 ноутбука. Позвонили Артему, пусть приезжает, помогает мне всё настроить (я не умел настраивать тур). Вдруг в голову организатора приходит мысль — дом же пустой (жена с внуками прилетает только воскресенье днем), пойдем ко мне, на ночь.

Все довольны, точнее, мы с Артемом. С нами едет ещё один учитель, помогать нам.

25 января, ночь — день

Взяли с собой 7 ноутов, приехали, распаковались. Приготовили нам вкусную еду, и мы, набравшись сил, начали.
Настроили 2-й тур, скинули образ в накопитель и задумались, а может попробовать распараллелить?
Времени много, сил, вроде, тоже.

А теперь самое интересное. Как устроен ejudge.
Есть служба (демон), отвечающий за компиляцию, запуск, тестирование программ — ej-super-run. Данные он берет из /home/judges/, где обычно расположены конфигурационные файлы, тесты, чекеры и присланные решения.
Не знаю, какой именно процесс отвечает за веб-интерфейс, но мы запускали ejudge-control, который запускал всю систему. Вдаваться в подробности не стал.
Под распараллеливанием предлагалось расшарить папку /home/judges/. Причем не важно как — SSHFS, Samba, NFS.
Но для этого нужно собрать заново с определенным ключом рабочие узлы, как их называют в распределенных системах — slaves. Лабораторные работы по ОС включали в себя создание сетевых папок при помощи NFS и Samba. Я с легкостью принялся за самбу и тут же уперся в первую проблему, которую уже лень было решать. бросив его, принялся за NFS. Закономерно было ожидать, что тут я тоже встречу множество проблем. Осталось последнее, более знакомое мне SSHFS. Знакомо потому, что с SSH я как-то дружил, часто работал с ним.

Открыл первый туториал, все настроил.

Сперва убедимся, директория /home/judges/ пуст, иначе очищаем её.

sshfs ejudge@192.168.1.11:/home/judges/ /home/judges/

После этого директория /home/judges/ становится общей с серверным. Для полного удобства можно смонтировать его, но мы этого не стали делать, ибо уже утро.

Если нужно указать другой порт, то следует добавить параметр -p

sshfs -p 5000 ejudge@192.168.1.11:/home/judges/ /home/judges/

В случае с нашим сервером это было актуально.

И, Слава Богу, заработало!

В качестве сервера выбрали один ноут, в качестве slave — другой. Речь идет и виртуальных машинах, поднятых на них.
Через веб интерфейс запустил 2 посылки (с while(true), чтобы выдавал на всех тестах TLE), которую сам же сервер и выполнил, засекли время. Запустили ej-super-run на рабочем узле, снова отправили на перепроверку 2 задачи — счастье.
Рабочий узел подхватил посылку, начал тестировать. Время проверки почти в 2 раза меньше, 30 секунд против 50.

Следующим шагом связали рабочий узел с реальным сервером, ведь теперь 5000 порт нам не страшен.

Начали заливать на остальные ноуты, попутно оптимизируя настройки. Хотели скрипт красивый написать, который легко мог бы прописать все настройки, но, увы — кривые руки на то и кривые, что такие вещи сразу не могут сделать. Все настройки прописывал руками. На сервере остановили процесс ej-super-run, пусть занимается только веб интерфейсом.
Далее мы задумались: на каждом ноуте имеется 4 ядра, 1 рабочий узел может проверять только в однопоточном режиме.

Дай человеку гору золота, он ещё одну захочет

Либо мы поднимаем 1 виртаульную машину, даем ему много ресурсов, а в ней распараллеливаем по ядрам, либо просто поднимаем 2 виртуальные машины, по 2 ядра.
Нам было всё равно, насколько ускорялась система — в 2 или 3 раза, если всё равно машин у нас много. Решили остановиться на достигнутом, поднимать по 2 машины на ноуте. Когда все 7 ноутбуков были готовы, мы решили себя наградить сном в 12 часов.

26 января, 08:30

Уже свеженький, в университете, Артем тоже приехал. Достали все 13 ноутов, ребята из «службы по сетям» оперативно обжали провода, настроили сеть, в итоге 12 из них уже были в сети, 13-ый ноут выхода в интернет так и не получил, провод, видимо, был старый. Быстро поднял 7 первых, после чего веб интерфейс начал ужасно тормозить, видимо sshfs скачивал к себе всю директорию, которая была довольно-таки пухленькой.

2 тур начался, у нас уже 14 рабочих узлов! Тихонько стал подключать узлы к системе, по одному, чтобы не перегружать систему.

Очереди на сервере не превышало 10 одновременно выполнявшихся тестирований. То есть, в принципе, достаточно и 5 ноутов, чтобы провести полноценный тур.

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

В итоге 2-й тур участники написали гораздо лучше, чем 1-й, хотя в 1-м туре был участник, который написал на 400, а на 2 туре, набрали только 370.

Альтернатива

На самом деле, всем всё было давно известно, и для этого даже прибегли к помощи Яндекса. Последний принимал заявки от регионов, которые не могли самостоятельно провести региональный этап по новым требованиям. Заявки нужно было подать за 10 дней до олимпиады, поэтому мы этот способ не рассматривали. К Яндексу обратились 26 регионов.
Также сказали, что в других регионах тоже не всё хорошо, баллы низкие в целом.

Вот так мы, технические жюри, позорно провели региональный этап Всероссийской олимпиады.

Вывод

UPD:
Список ошибок:
1) Как студент, у которого в программе обучения есть распараллеливание задачи(openMP, MPI), я должен был понять, что на 1 машине олимпиаду провести нельзя
2) Похоже, нужно ещё раньше начинать интересоваться, самому ходить, узнавать, что нового, а не ждать, пока позвонят. Дело в том, что в этом году я специально, за месяц, а то и за 2, интересовался насчет РОИ, но мне ничего толкового не сообщили.

#c #scanf #fork

Вопрос:

Почему этот код может генерироваться Runtime Error в ejudge? Эта программа подсчитывает количество stdin введенных слов. Слова могут быть разделены любым количеством ' ' и 'n' . Похоже fork() , это может вызвать проблему, но я не уверен, почему я не получаю ту же ошибку на своем компьютере.

ejudge использует gcc — простой C, 64-разрядный, используя -std=c11 или -std=gnu11

Задача:

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

Вам нужно рассчитать количество слов, если вы знаете, что их не более 255, и вывести это значение в стандартный поток вывода.

Используйте создание новых процессов, чтобы каждый процесс считывал не более одного слова, например, используя scanf(«%s»,…).

Вы можете вывести результат только из процесса, который был запущен первым (т. Е. из исходной программы).

Полученная программа должна вернуться с кодом возврата 0.

Размер каждого слова не превышает 4096 байт.

Мой код:

 #include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <unistd.h>

#define DBG(args...) fprintf(stderr, args)
//#define DBG(args...)

int main(int argc, char* argv[])
{
    int status;
    pid_t pid;
    pid_t first_child;

    for (int i = 0; i < 256;   i) {
        pid = fork();

        if (pid == 0) { // child continue reading
            char str[4097];
            if (scanf("%s", str) != EOF)
                continue;
            exit(1);
        } else {
            if (i == 1) {
                first_child = pid;
            }
            if (wait(amp;status) == first_child) {
                break;
            } else {
                exit(WEXITSTATUS(status)   1);
            }
        }
    }

    fprintf(stdout, "%in", WEXITSTATUS(status));
    fflush(stdout);
    fclose(stdout);

    return 0;
}
 

Комментарии:

1. Почему вы закрываетесь вручную stdout ? Это может привести к ошибке в некоторых системах, когда ваша программа завершает работу и пытается закрыть ее снова. Кроме того, можете ли вы предоставить более подробную информацию об ошибке, которую вы получаете?

2. Кроме того, обратите внимание, что stdin может не получиться EOF даже после того, как закончатся фактические входные данные, это опять же зависит от среды.

3. Статус выхода ограничен 255. Это не сработает, если длина файла превышает 255 строк.

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

5. Я думаю if (i == 1) , так и должно быть if (i == 0) .

Ответ №1:

Переписал алгоритм, и он сработал! В первой версии было сделано много ненужных вилок. Например, если предполагалось 6, то создавалось 12.

 #include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <unistd.h>

// #define DBG(args...) fprintf(stderr, args)
#define DBG(args...)

int main(int argc, char* argv[])
{
    int status;
    pid_t first_pid;
    pid_t pid = fork();

    if (pid != 0) {
        wait(amp;status);
        printf("%in", WEXITSTATUS(status));
        return 0;
    }

    for (int i = 0; i < 256;   i) {
        char str[4097];
        if (scanf("%s", str) == EOF) {
            DBG("PID %in", pid);
            exit(0);
        }
        pid = fork();
        if (pid != 0)
            break;
    }

    DBG("PID %i waitingn", pid);
    wait(amp;status);
    exit(WEXITSTATUS(status)   1);
}
 

05.10.2014

Установка ejudge в Ubuntu 20.04 LTS / Alexey Nurgaliev


ejudge — система для проведения онлайн-соревнований по программированию.
Документация системы

Будет рассмотрена установка версии 3.8.0.

Предварительная настройка

Загрузка и установка пакетов. Создается пользователь и группа ejudge.
Также создаются рабочие каталоги.

#!/bin/bash

#Зависимости и компиляторы
sudo apt-get update
sudo apt-get install -y sendmail ncurses-base libncurses-dev libncursesw5 
  libncursesw5-dev expat libexpat1 libexpat1-dev zlib1g-dev libelf-dev 
  g++ gawk apache2 gettext fpc mc openjdk-8-jdk 
  libcurl4-openssl-dev libzip-dev uuid-dev bison flex 
  mono-devel mono-runtime mono-vbnc php7.4-cli perl 
  ruby python python3 gccgo locales net-tools

sudo locale-gen en_US.UTF-8 ru_RU.UTF-8

#Установка FreeBASIC x86_64 (нет в репозитории)
wget -O freebasic.tar.gz http://downloads.sourceforge.net/fbc/FreeBASIC-1.03.0-linux-x86_64.tar.gz?download
sudo tar -xvf freebasic.tar.gz -C /opt/
cd /opt/FreeBASIC-1.03.0-linux-x86_64/
sudo ./install.sh -i
cd

#Или FreeBASIC x86 для 32-битных ОС
#wget -O freebasic.tar.gz http://downloads.sourceforge.net/fbc/FreeBASIC-1.03.0-linux-x86.tar.gz?download
#sudo tar -xvf freebasic.tar.gz -C /opt/
#cd /opt/FreeBASIC-1.03.0-linux-x86/
#sudo ./install.sh -i
#cd

#Создание группы и пользователя ejudge
sudo groupadd ejudge
sudo useradd ejudge -s /bin/bash -m -d /home/ejudge -g ejudge
sudo adduser ejudge sudo

#Создание рабочего каталога judges
sudo mkdir -p /home/judges /home/judges/test_work
sudo chown ejudge:ejudge /home/judges /home/judges/test_work
sudo chmod 0755 /home/judges /home/judges/test_work

#Каталоги сервера
sudo mkdir -p /var/www/ejudge/cgi-bin
sudo mkdir -p /var/www/ejudge/htdocs
sudo chmod 0777 /var/www/ejudge/cgi-bin /var/www/ejudge/htdocs

#Включение модуля CGI
sudo a2enmod cgi
sudo service apache2 restart

Собирать и устанавливать лучше под пользователем ejudge.
Пример, как можно сменить пользователя: sudo su ejudge

#!/bin/bash

cd /home/ejudge

#Загрузка ejudge
wget --no-check-certificate http://www.ejudge.ru/download/ejudge-3.8.0.tgz
tar -xvzf ejudge-3.8.0.tgz

cd ejudge

#Сборка
./configure --prefix=/home/ejudge/inst-ejudge 
            --enable-contests-home-dir=/home/judges 
            --with-httpd-cgi-bin-dir=/var/www/ejudge/cgi-bin 
            --with-httpd-htdocs-dir=/var/www/ejudge/htdocs 
            --with-primary-user="ejudge" 
            --with-exec-user="ejudge" 
            --with-compile-user="ejudge" 
            --enable-ajax 
            --enable-charset=utf-8

make
make install

Конфигурация

Запуск программы конфигурации: /home/ejudge/ejudge/ejudge-setup

Нужно указать Test Working Dir/home/judges/test_work

Также нужно не забыть указать данные администратора в разделе Administrator identity

Сохранить конфигурацию в файл ejudge-install.sh.

Установка

Запустить от имени root: sudo /home/ejudge/ejudge/ejudge-install.sh

Запуск

Запускается система только от имени пользователя ejudge!

Переход в каталог установки: cd /home/ejudge/inst-ejudge/bin

Формирование ресурсов для веб-интерфейса: ./ejudge-upgrade-web

Запуск ejudge: ./ejudge-control start

Настройка apache2

Пример конфигурации виртуального хоста для apache2 версии 2.4
(файл /etc/apache2/sites-enabled/ejudge.conf, возможно потребуется удалить существующую конфигурацию):

<VirtualHost *:80>
    DocumentRoot /var/www/ejudge/htdocs

    ScriptAlias /cgi-bin/ "/var/www/ejudge/cgi-bin/"

    <Directory "/var/www/ejudge/cgi-bin">
        Options +ExecCGI +FollowSymLinks +Includes
        AllowOverride None
        Require all granted
    </Directory>

    <Directory "/var/www/ejudge/htdocs">
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

Перезапустить apache: service apache2 restart

ejudge будет доступен по адресу http://localhost/cgi-bin/serve-control

Настройка nginx

Пример настройки nginx + fcgiwrap.

Установка пакетов:

#Удаление apache
sudo apt-get remove --autoremove apache2

#Установка nginx
sudo apt-get install nginx fcgiwrap

Конфигурация сервера (файл /etc/nginx/sites-enabled/ejudge):

    server {

     listen 80;
     server_name localhost;
     root /var/www/ejudge/htdocs/;

     location ~ ^/cgi-bin/.* {
            gzip           off;
            root           /var/www/ejudge/;
            fastcgi_pass   unix:/var/run/fcgiwrap.socket;

            fastcgi_param  QUERY_STRING       $query_string;
            fastcgi_param  REQUEST_METHOD     $request_method;
            fastcgi_param  CONTENT_TYPE       $content_type;
            fastcgi_param  CONTENT_LENGTH     $content_length;

            fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
            fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
            fastcgi_param  REQUEST_URI        $request_uri;
            fastcgi_param  DOCUMENT_URI       $document_uri;
            fastcgi_param  DOCUMENT_ROOT      $document_root;
            fastcgi_param  SERVER_PROTOCOL    $server_protocol;

            fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
            fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

            fastcgi_param  REMOTE_ADDR        $remote_addr;
            fastcgi_param  REMOTE_PORT        $remote_port;
            fastcgi_param  SERVER_ADDR        $server_addr;
            fastcgi_param  SERVER_PORT        $server_port;
            fastcgi_param  SERVER_NAME        $host;
        }
    }

Конфигурация основана на статье в debian wiki.

ejudge также будет доступен по адресу http://localhost:80

Проверка установки

Если все сделано правильно, то административный интерфейс ejudge будет доступен по адресу
http://localhost/cgi-bin/serve-control

Содержание

  • Исправляем ошибку синхронизации Гугл-аккаунта
  • Подготовка к восстановлению синхронизации данных
    • Шаг 1: Проверка подключения к интернету
    • Шаг 2: Попытка входа в аккаунт
    • Шаг 3: Проверка наличия обновлений
    • Шаг 4: Включение автоматической синхронизации
    • Шаг 5: Устранение неполадок
  • Восстановление синхронизации Google-аккаунта
    • Способ 1: Очистка кэша и данных
    • Способ 2: Принудительная синхронизация аккаунта
    • Способ 3: Повторный вход в учетную запись
  • Заключение
  • Вопросы и ответы

Ошибка синхронизации Google-аккаунта в Android

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

Исправляем ошибку синхронизации Гугл-аккаунта

Чаще всего ошибка синхронизации Google-аккаунта на Android оказывается кратковременным явлением – она сама исчезает спустя несколько минут после возникновения. Если же этого не произошло, и вы по-прежнему видите сообщение типа «Проблемы с синхронизацией. Скоро все заработает» и/или значок Проблемы с синхронизацией. Скоро все заработает (в настройках синхронизации, а иногда и в статус-баре), необходимо искать причину проблемы и, конечно же, прибегать к ее устранению. Однако прежде, чем приступить к активным действиям, следует проверить очевидные, но важные нюансы, о которых расскажем далее.

Подготовка к восстановлению синхронизации данных

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

Перезагрузка смартфона на Android

Шаг 1: Проверка подключения к интернету

Само собой разумеется, что для синхронизации Google-аккаунта с серверами необходимо стабильное подключение к интернету – желательно, чтобы это был Wi-Fi, но и относительно стабильного 3G или 4G тоже будет достаточно. Поэтому прежде всего проверьте, подключены ли вы к интернету и хорошо ли он работает (качество покрытия, скорость передачи данных, стабильность). Сделать это вам помогут следующие статьи на нашем сайте.

Проверка интернет-соединения на смартфоне с Android

Подробнее:
Проверка качества и скорости интернет-соединения
Включение мобильного интернета 3G/4G на смартфоне
Как улучшить качество и скорость интернета на Андроид-устройстве
Поиск и устранение проблем с работой Wi-Fi на Android
Что делать, если Андроид-девайс не подключается к Вай-Фай

Шаг 2: Попытка входа в аккаунт

Разобравшись с интернет-соединением, следует определить «очаг» проблемы и понять, связана ли она исключительно с используемым девайсом или в целом с учетной записью. Так, при ошибке синхронизации вы не сможете пользоваться ни одним из сервисов Гугл, по крайней мере, на мобильном девайсе. Попробуйте войти, например, в почту Gmail, облачное хранилище Google Диск или на видеохостинг YouTube через браузер на компьютере (используя для этого тот же аккаунт). Если у вас получится это сделать, переходите к следующему шагу, но если и на ПК авторизация завершится неудачей, сразу переходите к шагу №5 данной части статьи.

Попытка входа в Google аккаунт через браузер на компьютере

Шаг 3: Проверка наличия обновлений

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

  • Приложение Google;
  • Сервисы Google Play;
  • Приложение Контакты;
  • Google Play Маркет;
  • Операционная система Android.

Проверка и обновление приложений в Google Play Маркете на Android

По первым трем позициям следует обратиться в Плей Маркет, по четвертой – ознакомиться с представленной по ссылке ниже инструкцией, а по последней – зайти в подраздел «О телефоне», который находится в разделе «Система» настроек вашего мобильного девайса.
Проверка наличия обновлений в Google Play Маркете на Android
Подробнее: Как обновить Google Play Маркет

Более подробно процедура обновления как приложений, так и операционной системы, нами была описаны в представленных по ссылкам ниже материалах.
Проверка наличия обновлений для операционной системы Android
Подробнее:
Как обновить приложения на Андроид
Как обновить ОС Android на смартфоне или планшете

Шаг 4: Включение автоматической синхронизации

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

Lumpics.ru

Шаг 5: Устранение неполадок

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

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

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

Бывает так, что ошибка синхронизации данных имеет под собой куда более серьезные причины, чем те, что мы рассмотрели выше. Среди возможных факторов, вызывающих изучаемую проблему, наиболее распространенными являются сбои в работе операционной системы или отдельных ее элементов (приложений и сервисов). Вариантов решения здесь несколько.

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

Способ 1: Очистка кэша и данных

Все мобильные приложения в процессе их использования обрастают так называемым файловым мусором – кэшем и временными данными. Иногда это становится причиной возникновения различных ошибок в работе ОС Андроид, в числе которых и рассматриваемые нами сегодня проблемы синхронизации. Решение в данном случае довольно простое – мы с вами должны убрать этот «мусор».

  1. Откройте «Настройки» своего мобильного девайса и перейдите к разделу «Приложения и уведомления», а из него – к списку всех установленных компонентов.
  2. Переход к списку всех установленных приложений на устройстве с Android

  3. Отыщите в этом перечне Google, тапните по нему для перехода на страницу «О приложении», а затем откройте раздел «Хранилище».
  4. Просмотр раздела О приложении Google на устройстве с Android

  5. Нажмите по кнопкам «Очистить кэш» и «Стереть данные» (или «Очистить хранилище», а затем «Удалить все данные»; зависит от версии Android) и подтвердите свои намерения, если это потребуется.
  6. Очистка данных и кэша приложения Google на устройтсве с Android

  7. Аналогичные действия выполните с приложениями «Контакты», Сервисы Google Play и Google Play Маркетом.
  8. Очистка данных других приложений для восстановления синхронизации на Android

  9. Перезагрузите устройство и проверьте наличие проблемы. Скорее всего, она вас более не потревожит, но если это не так, переходите далее.

Способ 2: Принудительная синхронизация аккаунта

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

  1. Запустите «Настройки» и перейдите к самому последнему разделу – «Система». В нем тапните по пункту «Дата и время» (на некоторых версиях Android этот пункт выведен в отдельный раздел основного списка настроек).
  2. Переход к настройкам Даты и Времени на мобильном устройстве с Android

  3. Отключите автоматическое определение «Даты и времени сети» и «Часового пояса», переведя в неактивное положение расположенные напротив этих пунктов переключатели. Укажите заведомо неверные дату и время (прошлое, а не будущее).
  4. Изменение настроек даты и времени на мобильном устройстве с Android

  5. Перезагрузите мобильный девайс и повторите действия из двух предыдущих пунктов, но в этот раз вручную установите правильные дату и время, а затем включите их автоматическое определение, снова переведя переключатели в активное положение.
  6. Восстановление настроек по умолчанию для даты и времени на устройстве с Android

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

Способ 3: Повторный вход в учетную запись

Последнее, что можно сделать для восстановления синхронизации данных – это устроить «встряску» аккаунту Google, ведь, по сути, именно с ним и возникают проблемы.

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

  1. Откройте «Настройки» и перейдите к разделу «Аккаунты».
  2. Переход к удалению учетной записи Google на смартфоне с ОС Android

  3. Найдите в представленном перечне тот Гугл-аккаунт, с которым возникает ошибка синхронизации, и тапните по нему.
  4. Удаление учетной записи Google в настройках смартфона на Android

  5. Нажмите по кнопке «Удалить учетную запись» и, если потребуется, подтвердите свое решение вводом PIN-кода, пароля, графического ключа или сканером отпечатка пальца, в зависимости от того, что используется для защиты устройства.
  6. Повторный вход в учетную запись Google на смартфоне с Android

  7. Повторно войдите в удаленный Google-аккаунт, воспользовавшись рекомендациями из представленной по ссылке ниже статьи.
  8. Подробнее: Как войти в учетную запись Гугл на Андроид

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

Заключение

Ошибка синхронизации Google-аккаунта – одна из самых неприятных проблем в работе ОС Android. К счастью, практически всегда ее решение не вызывает особых сложностей.

Cosmonaut

0 / 0 / 0

Регистрация: 24.02.2017

Сообщений: 29

1

08.12.2018, 00:53. Показов 15448. Ответов 4

Метки нет (Все метки)


Проверяющая система выдаёт runtime error, хотя код нормально компилится и Process finished with exit code 0.

Что не так?
Код:

Python
1
2
3
4
5
6
7
buff = "0"
sum = 0
while buff != "":
    buff = input()
    if buff != "":
        sum += int(buff)
print(sum)

Добавлено через 1 час 48 минут
Возможно, проблема в признаке конца ввода

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



1726 / 966 / 198

Регистрация: 22.02.2018

Сообщений: 2,694

Записей в блоге: 6

08.12.2018, 03:20

2

Код написан без ошибок, просто проверяющая система видимо рассчитана на проверку другой задачи, имеющей другое условие. Возможно Вы просто не так поняли условие задачи. Или проверяющая система не правильно работает. Возможно в задаче даются данные, которые нужно ввести в код и не использовать ввод с клавиатуры. Тогда код естественно не укладывается в отведенное время и выдается runtime error. В общем, не зная условия задачи, трудно Вам что то посоветовать.



1



Эксперт по компьютерным сетямЭксперт Pascal/Delphi

4188 / 1289 / 237

Регистрация: 27.07.2009

Сообщений: 3,961

08.12.2018, 09:15

3

Цитата
Сообщение от Cosmonaut
Посмотреть сообщение

Что не так?

попробуйте ввести вместо чисел буквы…



0



0 / 0 / 0

Регистрация: 24.02.2017

Сообщений: 29

08.12.2018, 12:10

 [ТС]

4

Кажется я понял что не так, конец ввода(EOF) вызывается сочетанием ctrl + d => прога выдаёт ерор EOFError: EOF when reading a line

Добавлено через 18 минут
Да, это и было проблемой, добавил исключение и всё заработало

Добавлено через 1 час 20 минут
После добавления исключения для EOF и условия для символа конца вывода («» в python), прога прошла проверку



0



JohnDorian00

0 / 0 / 0

Регистрация: 03.03.2019

Сообщений: 1

30.01.2020, 23:20

5

Понимаю, что поздно, но сегодня столкнулся с такой же проблемой: pycharm не выдает ошибку и возвращает 0, а на ejudge вылетает RT (runtime error).

Проблему решил заменой

Python
1
input()

на

Python
1
stdin.read()

Пример кода (это выполнялось с ошибкой):

Python
1
2
3
4
n, s = input().split(" ")
 
n = int(n)
s = int(s)

Вам нужно заменить на это:

Python
1
2
3
4
5
6
7
from sys import stdin
 
line = stdin.read()
data = list(map(int, line.split()))
 
n = data[0]
s = data[1]



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

30.01.2020, 23:20

5

Поставить Ejudge, это всегда для меня было чем-то невыполнимым. Только истинные задры, как Герман аби могут такое творить.

Первый раз я встретил Ejudge в Алмате на летнем кампе для восьмиклассников в 2009 году. Тогда Герман аби нам ставил контесты на нем, а днем он с Мадияром аби рассказывал что-то новое. Тогда это были графы.

Теперь, когда у меня появились хоть какие-то навыки обращения с линукс-дистрибутивом, я решил научится ставить ejudge сам. Естественно, без помощи Герман аби не обошлось. Кроме его статьи в блоге мне потребовалось около 20 писем переписки с ним, чтобы понять что, да как.

Подготовка: в Убунту установим кучу нужных нам пакетов для компиляции ejudge. Все дальнейшие действия выполняем в консоли.
sudo apt-get install bison flex gettext expat libexpat1-dev zlib1g-dev libncurses5-dev libncursesw5-dev sendmail gawk apache2 libcurl4-gnutls-dev libzip-dev libiconv-hook-dev
Если вы хотите, чтобы скомпилировались плагины для работы с mysql, то еще ставим:
sudo apt-get install libmysqlclient-dev mysql-server mysql-client
Если хотите, чтобы работал русский язык, обязательно ставим еще:
sudo apt-get install gettext

Далее скачаем ejudge и распакуем его туда же(в папку distr).
wget http://ejudge.ru/download/ejudge-2.3.24.tgz
tar xvzf ejudge-2.3.24.tgz
cd ejudge

Тут создаем файл myconfigure.sh для простой настройки с таким содержанием:
#!/bin/bash
./configure --prefix=/home/ejudge/ejudge/ --enable-contests-home-dir=/home/ejudge/judges --with-httpd-cgi-bin-dir=/usr/lib/cgi-bin --with-httpd-htdocs-dir=/home/ejudge/public/mincostflow.com/public/ --enable-ajax --enable-hidden-server-bins --enable-local-dir=/var/lib/ejudge --enable-charset=utf-8

И запустим его
sh myconfigure.sh
Если нет никаких проблем, то компилируем и ставим.
make && make install

Теперь в папке ~/ejudge у нас есть установленный, но не настроенный ejudge. Запускаем генератор скрипта с настройками:
cd ~/ejudge/bin/
./ejudge-setup

Там мы должны отметить все настройки и сохранить скрипт. Запускаем полученный скрипт:
sh ejudge-install.sh

Пишем все настройки для apache, для этого нужно отредактировать файл настроек от рута:
sudo gedit /etc/apache2/httpd.conf
Пишем туда конфигурацию apache, ниже приведен пример, который не точен, но должен показать суть.


<VirtualHost *>
ServerName algoprog.kz
ServerAdmin algoprog.kz@gmail.com
DocumentRoot /var/www/algoprog.kz/
ScriptAlias /cgi-bin/ /home/ejudge/ejudge/libexec/ejudge/cgi-bin/
<Directory /home/ejudge/ejudge/libexec/ejudge/cgi-bin>
Options +ExecCGI
AllowOverride Options
</Directory>
<Location "/cgi-bin/">
SetHandler None
</Location>
</VirtualHost>

Создадим себе страничку в помощь:

sudo mkdir /var/www/yaap.kz
sudo gedit /var/www/yaap.kz/index.html

и там копируем такой текст.

Для работы ajax авто-обновления страницы(нужные папки предварительно создайте):
./ejudge-upgrade-web /var/www/yaap.kz/ ~/var/www/yaap.kz/cgi-bin/

Для работы русского языка, вроде нужно, чтобы ваша текущая локаль была русской.

Запускаем apache
sudo invoke-rc.d apache2 start
Запускаем ejudge
~/ejudge/bin/ejudge-control start

Чтобы работали все элементы дизайна и декорации, а так же ajax, необходимо запустить ~/ejudge/bin/ejudge-upgrade-web /var/www/yaap.kz ~/ejudge/libexec/ejudge/cgi-bin
(возможно, нужно будет сделать это от рута, а потом поменять права доступа к файлам)

Заходим на localhost


Использованные материалы:
http://buben.kz/2010/09/24/stavim-ejudge-na-ubuntu/

  1. Что такое ejudge?
  2. Зачем мне делать эти задачи?
  3. Как зарегистрироватьcя?
  4. Я нашел ошибку или уязвимость в системе проверки.
  5. Система проверки выглядит некрасиво!
  6. Стартовая страница и/или этот FAQ выглядят некрасиво!
  7. Я похакал этот сервер!
  8. А сколько баллов мне дадут за %action%?
  9. Почему нет языка %language_name%? Я умею программировать только на нем!
  10. Что означает valgrind рядом с gcc при отправке ответа на C или C++?
  11. Почему тесты проходят так медленно?
  12. У меня ошибка компиляции, но на моем компьютере все работает!
  13. У меня ошибка нарушения безопасности!
  14. У меня тест не прошел, где смотреть ошибку?
  15. У меня правильная программа, но тесты не проходят (на моем компьютере работает)!
  16. Что делать с задачей, у которой статус «ожидает подтверждения»?
  17. У меня появилась идея, как улучшить свое решение, можно мне отправить еще одно? Учтется ли оно как лишняя попытка?
  18. Я нашел ошибку в условии/условие не отображается.
  19. Я нашел ошибку в тесте.
  20. У меня идея для теста / Я написал некорректную программу, но она прошла все тесты.
  21. У меня есть идея для задачи!
  22. Кажется, я нашел пасхалку. Мне за это что-нибудь причитается?
  23. Почему мое решение отклонили?
  24. Почему дисквалифицировали мое решение?
  25. Задача %exercise% решается слишком просто на языке %language_name%, а я пишу на %other_language_name% и там тяжелее!
  26. За что снижаются баллы?
  27. Я сделал все задачи, а мне не дали баллов!
  28. Сколько мне дадут баллов, если задачи в модуле сделаны частично?
  29. Систем начисления баллов несправедлива!
  30. У меня проект состоит из нескольких файлов, как мне их отправить?
  31. Я списал, а мое решение не дисквалифицировали и засчитали задачу!
  32. Что означает сообщение «NOTE: The file checksum has been changed» в файле с ответом?
  33. Я не нашел ответа на свой вопрос.

Что такое ejudge?

Это сервер проверки задач, разработанный Александром Черновым из МГУ. Одна из самых распространенных систем для проведения олимпиад. Системе уже больше 10 лет.

Документация (местами неполная или устаревшая): https://ejudge.ru/wiki/index.php/Система_ejudge

Исходный код: https://github.com/blackav/ejudge

При желании вы можете скачать с официального сайта виртуалку и открыть свой сервер проверки, со Scala и программистками.

Зачем мне делать эти задачи?

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

Как зарегистрироватьcя?

Я нашел ошибку или уязвимость в системе проверки.

Проинформируйте преподавателя о ней. Возможно, это проблема касается только этого сервера. Если нет — то, пожалуйста, сообщите об этом разработчику системы на github (создайте тикет описанием проблемы с шагами воспроизведения).

Система проверки выглядит некрасиво!

Стартовая страница и/или этот FAQ выглядят некрасиво!

Раньше это были вообще голые hmtl-страницы без стилей, но благодаря Александру Маковскому они выглядят более пристойно. Если у вас есть предложение, как улучшить внешний вид этих страниц — шлите свои варианты с нескучными обоями на почту.

Я похакал этот сервер!

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

Пожалуйста, ломайте со своего аккаунта. Ужесточать регистрацию и превращать ejudge в продолжение анекдота про столовую и солонки не хочется.

Экплоиты, особенно приводящие к DoS, старайтесь по максимуму проверять на виртуалке — вы же не хотите подгадить своим одногруппникам, обвалив сервер и задержав им сдачу заданий?

А сколько баллов мне дадут за %action%?

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

Почему нет языка %language_name%? Я умею погромировать только на нем!

Язык программирования может отсутствовать по одной из трех причин: он не поддерживается системой проверки, не является безопасным (например, C#) или не распространен.

Список для первых двух категорий смотрите в документации/коде ejudge. Насчет последней категории — обсуждаемо, но учтите, что какой-нибудь Pascal включаться точно не будет, а на 1-2 курсе был предмет «Алгоритмические языки и программирование», в рамках которого студенты должны были усвоить языки программирования C и C++.

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

Что означает valgrind рядом с gcc при отправке ответа на C или C++?

Valgrind — это программа для динамического обнаружения утечек и других ошибок при работе с памятью. Все программы на C и C++ запускаются в ее окружении, поэтому работают медленее. Но зато вам говорят, где у вас проблема при работе с памятью.

Почему тесты проходят так медленно?

Во-первых, программы на C и C++ запускаются в окружении valgrind (см. вопрос про него).

Во-вторых, вы на сервере не один (особенно если это конец семестра/модуля).

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

У меня ошибка компиляции, но на моем компьютере все работает!

Убедитесь, что вы написали код с учетом общепринятых стандартов (и например там нет какого-нибудь мусора от известного производителя ПО) и не используете нестандартные библиотеки.

Убедитесь, что вы прочли лог компилятора, который выдала вам система проверки и решили все проблемы.

Дайте посмотреть ваш код лучшему программисту в вашей группе. Если это внезапно вы, то пишите преподавателю.

У меня ошибка нарушения безопасности!

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

Если вы пишете на питоне, то тогда это может означать, что вы получили исключение. Интерпертатор питона пытается вам выдать stacktrace, и при этом читает системные файлы (что ему запрещает делать модуль безопасности).

У меня тест не прошел, где смотреть ошибку?

Нажимайте на буквы в табличке!

Картинка с табличкой

У меня правильная программа, но тесты не проходят (на моем компьютере работает)!

Вы внимательно прочитали условие? Скачали тест и отладили программу, по шагам выполняя ее? Обратили внимание на поток ошибок (буква E)? Локализовали ошибку в тесте? Уверены, что ошибка не может быть вызвана каким-нибудь неопределенным поведением или особенностями компилятора? Вы попросили помощи у одногруппников?

Если на все вопросы вы можете с чистейшей совестью ответить «да», тогда высылайте всю информацию преподавателю, с подробным описанием того, что в тесте не так, как должно быть и почему.

См. также вопрос про компиляцию.

Что делать с задачей, у которой статус «ожидает подтверждения»?

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

У меня появилась идея, как улучшить свое решение, можно мне отправить еще одно? Учтется ли оно как лишняя попытка?

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

Я нашел ошибку в условии/условие не отображается.

Пишите преподавателю, где ошибка, и почему вы считаете, что это ошибка.

Я нашел ошибку в тесте.

Опишите преподавателю максимально подробно, в чем именно заключается ошибка в тесте и какой на самом деле должен быть ответ.

У меня идея для теста / Я написал некорректную программу, но она прошла все тесты.

Отлично! Если вы уверены, что ситуация подходит под условие задачи, то высылайте преподавателю:

  1. исходный код, который прошел все тесты (и номер решения);
  2. описание случая, когда код будет работать некорректно;
  3. входные данные для теста, который покрывает этот случай — текстовый файл;
  4. выходные данные для теста — текстовый файл;
  5. исправленный исходный код, который проходит тест.

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

У меня есть идея для задачи!

Очень хорошо. Обсудите идею с товарищами. Обсудите с преподавателем и подумайте, куда эту задачу лучше приткнуть.

Возможно, задача потянет на ДЗ.

Кажется, я нашел пасхалку. Мне за это что-нибудь причитается?

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

Почему мое решение отклонили?

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

Если вы считаете отклонение несправедливым, самый справедливый суд в лице преподавателя готов рассмотреть вашу аппеляцию: шлите ее на почту.

Почему дисквалифицировали мое решение?

Проверяющая система решила, что ваш код очень похож на чужой, и есть сомнения, что решение вы выполнили полностью самостоятельно. Статус «дисквалифицировано» означает, что преподаватель посчитал так же.

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

Дополнительные вопросы по этой теме:

Но ведь невозможно написать 2 программы по одному условию, чтобы они не были похожи!

Многолетний опыт показывает, что возможно. В конце концов сдавали же как-то люди свои работы в прошлом году.

Я просто взял решение друга, чтобы посмотреть, как он сделал, но писал код сам!

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

Я сдал код первым, я не мог ни у кого списать!

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

Задача %exercise% решается слишком просто на языке %language_name%, а я пишу на %other_language_name% и там тяжелее!

Черт побери, так решите ее на %language_name%, в чем проблема-то? Выбирайте инструмент под задачу.

За что снижаются баллы?

Баллы снижаются за количество попыток (но некоторое число попыток на задачу — бесплатно), за отклонение решения, за выполнение модуля не в срок.

Я сделал все задачи, а мне не дали баллов!

К сожалению, преподавателю иногда надо спать и заниматься другими менее приятными делами, поэтому он реагирует не мгновенно. Задачи проверяются массово в конце модуля и иногда в середине.

Сколько мне дадут баллов, если задачи в модуле сделаны частично?

Баллы начисляются только за полностью выполненный модуль, в котором все задачи проходят все тесты, а исходных код проверен преподавателем.

Систем начисления баллов несправедлива!

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

У меня проект состоит из нескольких файлов, как мне их отправить?

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

Большинство языков позволяют создать программу, полностью расположенную в одном файле. Соответственно, вы можете найти/написать скрипт, который пакует ваш проект в один файл (или сделать это вручную).

Я списал, а мое решение не дисквалифицировали и засчитали задачу!

Это можно рассматривать как уязвимость системы проверки. При явке с повинной вам не только оставят баллы, но еще и сверху накинут. Но, разумеется, надо описать, как вы это сделали.

Что означает сообщение «NOTE: The file checksum has been changed» в файле с ответом?

Это служебное сообщение системы ejudge о том, что контрольная сумма файла ответа на тест была изменена во время тестирования.

Но, разумеется, никто его не менял и это баг системы, о котором было доложено разработчику.

На корректность вашей программы это сообщение никак не влияет. Если программа завалилась на этом тесте — надо ее исправить, если нет — не надо.

Я не нашел ответа на свой вопрос.

Задавайте его в чате. Возможно он потом попадет в этот FAQ.

before—>

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

p, blockquote1,0,0,0,0—>

Далее я рассмотрю причины отсутствия синхронизации аккаунта Android и Google, а так же ошибки, которые могут появиться при этом.

p, blockquote2,0,0,0,0—>

Данная статья подходит для всех брендов, выпускающих телефоны на Android 9/8/7/6: Samsung, HTC, Lenovo, LG, Sony, ZTE, Huawei, Meizu, Fly, Alcatel, Xiaomi, Nokia и прочие. Мы не несем ответственности за ваши действия.

p, blockquote3,0,1,0,0—>

Внимание! Вы можете задать свой вопрос специалисту в конце статьи.

p, blockquote4,0,0,0,0—>

Содержание

  • Причины сбоя синхронизации Google и Android
  • Включение синхронизации Google с Андроидом
  • Исправляем ошибку синхронизации Гугл-аккаунта
  • Подготовка к восстановлению синхронизации данных
  • Восстановление синхронизации Google-аккаунта
  • Заключение
  • Как включить функцию
  • Что делать, если сопряжение не работает?
  • Резервное копирование
  • Причины ошибки синхронизации Андроид и Google
  • Как включить синхронизацию Google с Андроид?
  • Ошибка синхронизации аккаунта Google Android: типичные сбои
  • Ошибка синхронизации аккаунта Google Android: что делать?
  • Исправляем синтаксическую ошибку
  • Проверяем параметры синхронизации
  • Удаляем учетную запись
  • Заключение

h21,0,0,0,0—>

Если Android не синхронизирует данные с сервером Google, то искать причину следует прежде всего в работе мобильного устройства. Да, ошибки могут возникать на стороне Google, но это большая редкость. К тому же такие сбои моментально обнаруживаются и устраняются. Так что если Андроид отказывается синхронизировать контакты, почту, фотографии и другую информацию, выполните следующие действия:

p, blockquote5,0,0,0,0—>

  1. Перезагрузите устройство.
  2. Проверьте стабильность интернет-соединения. Подключитесь к Wi-Fi, если есть такая возможность.
  3. Убедитесь, что синхронизация включена, параметры настроены правильно.
  4. Удалите аккаунт Google и добавьте заново.

Читайте Как восстановить удаленные фотографии на Android

p, blockquote6,0,0,0,0—>

Чтобы удалить учетную запись, зайдите в «Настройки» -> «Учетные записи» -> «Google» -> вызовите дополнительное меню (кнопка в виде трех кнопок справа сверху) и нажмите «Удалить».

p, blockquote7,1,0,0,0—>

Увеличить

При удалении учетной записи не пропадут никакие данные, так как сам аккаунт останется нетронутым. Перезагрузите смартфон, а при следующем включении добавьте профиль Google заново, указав логин и пароль.

p, blockquote8,0,0,0,0—>

Увеличить

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

p, blockquote9,0,0,0,0—>

Читайте Как войти в аккаунт Google на Android телефоне или планшете

p, blockquote10,0,0,0,0—>

Включение синхронизации Google с Андроидом

h22,0,0,0,0—>

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

p, blockquote11,0,0,1,0—>

  1. Зайдите в «Настройки».
  2. Откройте раздел «Аккаунты» («Личные данные», «Учетные записи»).
  3. Если внутри нет аккаунта Google, необходимо его добавить. Можно создать новую учетную запись или добавить данные существующего профиля Google – логин и пароль.
  4. Нажмите на добавленный аккаунт, чтобы открыть его параметры.
  5. Для включения синхронизации переведите переключатели возле нужных сервисов – контакты, Google Play Музыка, Google Fit, Google Фото и т.д.
  6. Чтобы запустить синхронизацию прямо сейчас, вызовите дополнительное меню и выберите в нем «Синхронизировать».

Увеличить

Читайте Как проверить Android на ошибки

p, blockquote12,0,0,0,0—>

По умолчанию синхронизируются данные приложений, календарь и контакты. Если вы хотите автоматически синхронизировать с сервером Google фото, то придется установить приложение Google Фото. В его настройках есть пункт «Автозагрузка и синхронизация» после активации которого фотографии будут отправляться на облачное хранилище.

p, blockquote13,0,0,0,0—>

Автоматическая синхронизация фото будет работать даже после удаления Google Фото. Чтобы отключить её, необходимо зайти в настройки приложения и передвинуть переключатель «Автозагрузка и синхронизация» в неактивное положение.

p, blockquote14,0,0,0,0—>

Увеличить

p, blockquote15,0,0,0,1—>

Дополнительные манипуляции понадобятся и для синхронизации почты из приложения Gmail. Чтобы данные отправлялись на сервер, нужно в настройках клиента поставить отметку «Синхронизация Gmail». Если синхронизация почты не работает, поможет очистка внутренней памяти телефона от лишних файлов (если хранилище переполнено) или удаление данных Gmail.

after—>

Исправляем ошибку синхронизации Гугл-аккаунта

Чаще всего ошибка синхронизации Google-аккаунта на Android оказывается кратковременным явлением – она сама исчезает спустя несколько минут после возникновения. Если же этого не произошло, и вы по-прежнему видите сообщение типа «Проблемы с синхронизацией. Скоро все заработает» и/или значок (в настройках синхронизации, а иногда и в статус-баре), необходимо искать причину проблемы и, конечно же, прибегать к ее устранению. Однако прежде, чем приступить к активным действиям, следует проверить очевидные, но важные нюансы, о которых расскажем далее.

Подготовка к восстановлению синхронизации данных

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

Шаг 1: Проверка подключения к интернету

Само собой разумеется, что для синхронизации Google-аккаунта с серверами необходимо стабильное подключение к интернету – желательно, чтобы это был Wi-Fi, но и относительно стабильного 3G или 4G тоже будет достаточно. Поэтому прежде всего проверьте, подключены ли вы к интернету и хорошо ли он работает (качество покрытия, скорость передачи данных, стабильность). Сделать это вам помогут следующие статьи на нашем сайте.

Подробнее:Проверка качества и скорости интернет-соединенияВключение мобильного интернета 3G/4G на смартфонеКак улучшить качество и скорость интернета на Андроид-устройствеПоиск и устранение проблем с работой Wi-Fi на Android Что делать, если Андроид-девайс не подключается к Вай-Фай

Шаг 2: Попытка входа в аккаунт

Разобравшись с интернет-соединением, следует определить «очаг» проблемы и понять, связана ли она исключительно с используемым девайсом или в целом с учетной записью. Так, при ошибке синхронизации вы не сможете пользоваться ни одним из сервисов Гугл, по крайней мере, на мобильном девайсе. Попробуйте войти, например, в почту Gmail, облачное хранилище Google Диск или на видеохостинг YouTube через браузер на компьютере (используя для этого тот же аккаунт). Если у вас получится это сделать, переходите к следующему шагу, но если и на ПК авторизация завершится неудачей, сразу переходите к шагу №5 данной части статьи.

Шаг 3: Проверка наличия обновлений

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

  • Приложение Google;
  • Сервисы Google Play;
  • Приложение Контакты;
  • Google Play Маркет;
  • Операционная система Android.

По первым трем позициям следует обратиться в Плей Маркет, по четвертой – ознакомиться с представленной по ссылке ниже инструкцией, а по последней – зайти в подраздел «О телефоне», который находится в разделе «Система» настроек вашего мобильного девайса. Подробнее: Как обновить Google Play Маркет

Более подробно процедура обновления как приложений, так и операционной системы, нами была описаны в представленных по ссылкам ниже материалах. Подробнее:Как обновить приложения на АндроидКак обновить ОС Android на смартфоне или планшете

Шаг 4: Включение автоматической синхронизации

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

Шаг 5: Устранение неполадок

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

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

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

Восстановление синхронизации Google-аккаунта

Бывает так, что ошибка синхронизации данных имеет под собой куда более серьезные причины, чем те, что мы рассмотрели выше. Среди возможных факторов, вызывающих изучаемую проблему, наиболее распространенными являются сбои в работе операционной системы или отдельных ее элементов (приложений и сервисов). Вариантов решения здесь несколько.

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

Способ 1: Очистка кэша и данных

Все мобильные приложения в процессе их использования обрастают так называемым файловым мусором – кэшем и временными данными. Иногда это становится причиной возникновения различных ошибок в работе ОС Андроид, в числе которых и рассматриваемые нами сегодня проблемы синхронизации. Решение в данном случае довольно простое – мы с вами должны убрать этот «мусор».

  1. Откройте «Настройки» своего мобильного девайса и перейдите к разделу «Приложения и уведомления», а из него – к списку всех установленных компонентов.
  2. Отыщите в этом перечне Google, тапните по нему для перехода на страницу «О приложении», а затем откройте раздел «Хранилище».
  3. Нажмите по кнопкам «Очистить кэш» и «Стереть данные» (или «Очистить хранилище», а затем «Удалить все данные»; зависит от версии Android) и подтвердите свои намерения, если это потребуется.
  4. Аналогичные действия выполните с приложениями «Контакты», Сервисы Google Play и Google Play Маркетом.
  5. Перезагрузите устройство и проверьте наличие проблемы. Скорее всего, она вас более не потревожит, но если это не так, переходите далее.

Способ 2: Принудительная синхронизация аккаунта

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

  1. Запустите «Настройки» и перейдите к самому последнему разделу – «Система». В нем тапните по пункту «Дата и время» (на некоторых версиях Android этот пункт выведен в отдельный раздел основного списка настроек).
  2. Отключите автоматическое определение «Даты и времени сети» и «Часового пояса», переведя в неактивное положение расположенные напротив этих пунктов переключатели. Укажите заведомо неверные дату и время (прошлое, а не будущее).
  3. Перезагрузите мобильный девайс и повторите действия из двух предыдущих пунктов, но в этот раз вручную установите правильные дату и время, а затем включите их автоматическое определение, снова переведя переключатели в активное положение.
  4. Такой, казалось бы, простой и не самый логичный обман системы способен восстановить синхронизацию Google-аккаунта, но если и это не поможет, переходите к следующему методу.

Способ 3: Повторный вход в учетную запись

Последнее, что можно сделать для восстановления синхронизации данных – это устроить «встряску» аккаунту Google, ведь, по сути, именно с ним и возникают проблемы.

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

  1. Откройте «Настройки» и перейдите к разделу «Аккаунты».
  2. Найдите в представленном перечне тот Гугл-аккаунт, с которым возникает ошибка синхронизации, и тапните по нему.
  3. Нажмите по кнопке «Удалить учетную запись» и, если потребуется, подтвердите свое решение вводом PIN-кода, пароля, графического ключа или сканером отпечатка пальца, в зависимости от того, что используется для защиты устройства.
  4. Повторно войдите в удаленный Google-аккаунт, воспользовавшись рекомендациями из представленной по ссылке ниже статьи.
  5. Подробнее: Как войти в учетную запись Гугл на Андроид

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

Заключение

Ошибка синхронизации Google-аккаунта – одна из самых неприятных проблем в работе ОС Android. К счастью, практически всегда ее решение не вызывает особых сложностей. Мы рады, что смогли помочь Вам в решении проблемы. Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.

Помогла ли вам эта статья?

Синхронизация позволяет быстро восстановить информацию, при смене смартфона или поломке старого устройства. Все новые смартфоны на Android, оснащены функцией сопряжения с облаком. Рассмотрим, как устроена синхронизация Google на смартфонах.

Содержание

Как включить функцию

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

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

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

Выбираем подключённую учётную запись Gmail и нажимаем на неё. Кликаем на строчку, выделенную на скриншоте ниже.

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

Контакты

Как синхронизировать контакты людей с Google на Android? Никаких сложней нет, повторяем действия предыдущего пункта, но проверяем наличие включённого ползунка, напротив строчки «Контакты». Они будут доступны в онлайн-сервисе, через браузер или при переходе на другой андроид девайс. О том, как сохранить их на компьютер, читайте в статье: «Как сохранить контакты с Андроида на компьютер».

Рекомендуем:  Синхронизация телефона на Андроид

Что делать, если сопряжение не работает?

Не работает синхронизация с Гугл? Проверьте добавлена ли учётная запись в систему. Переходим в раздел «Аккаунты» и смотрим наличие строчки с подписью Gmail и значком компании. Если его нет, добавляем профиль вручную. Переходим вниз и нажимаем на строчку «Добавить аккаунт».

Для информации: чтобы описанный в инструкции способ сработал, нужно подключение к сети интернет. О том, как перенести информацию с телефона на компьютер, читайте в статье: «Как синхронизировать Андроид с компьютером»

В новом окне, тапаем на «Google», откроется панель с вводом логина и пароля. Если он не создан, выбираем «Создать аккаунт», в левом нижнем углу и проходим регистрации. После входа в систему, выставляем интересующие галочки. Данные будут автоматически отправлены на сервера, после перезагрузки или подключению к интернету.

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

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

Резервное копирование

В последних версиях операционной системы Android добавлена функция, создания резервных копий журнала звонков, SMS, установленных приложений и заданных настроек. Это позволяет восстановить часть информации, при переходе на другой смартфон. Чтобы включить функцию, переходим в раздел «Система», название актуально для версии ОС 9.0.

Рекомендуем:  Как запретить установку программ на Андроид?

Нажимаем на соответствующий пункт в меню. Будут показаны даты последнего копирования, отсортированные по типу информации.

Документы будут загружены на облачное хранилище «Google Диск» убедитесь, что на нём достаточно свободного пространства и что телефон подключён к стабильному интернету. Нажмите на «Начать копирование».

before—>

Сейчас разберемся чот делать, если ваш телефон или планшет Андроид не синхронизируется с аккаунтов Google и выдает ошибку.

p, blockquote1,0,0,0,0—>

Данная статья подходит для телефонов и планшетов всех производителей устройств на Android: Samsung, LG, Sony, Huawei, Xiaomi, HTC, ZTE, Fly, Alcatel и других. Мы не несем ответственности за ваши действия.

p, blockquote2,0,0,0,0—>

Синхронизация аккаунта Google на устройстве Андроид является очень удобной функцией. Благодаря ей на серверах Гугл сохраняется часть важной информации с планшета или смартфона. При переходе на новый гаджет данная информацию быстро может быть восстановлена.

p, blockquote3,0,0,0,0—>

К примеру, список контактов. Когда вы применяете синхронизацию аккаунта, то при переходе на новый телефон список ваших контактов отобразится на нем через 1 мин и вам не придется заново вручную вводить все телефонные номера. Давайте рассмотрим случаи с ошибками синхронизации Гугл аккаунта на Андроид устройствах.

p, blockquote4,0,0,0,0—>

Причины ошибки синхронизации Андроид и Google

h21,0,0,0,0—>

Когда Андроид не синхронизирует информацию с сервером Гугл, причины нужно искать прежде всего в работе вашего гаджета. Ошибки могут возникнуть и на стороне Гугл, но довольно редко. Подобные сбои оперативно обнаруживаются и устраняются.

p, blockquote5,0,1,0,0—>

Увеличить

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

p, blockquote6,0,0,0,0—>

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

p, blockquote7,0,0,0,0—>

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

p, blockquote8,0,0,0,0—>

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

p, blockquote9,0,0,0,0—>

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

p, blockquote10,0,0,0,0—>

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

p, blockquote11,1,0,0,0—>

Если Android отказывается синхронизировать фотографии, почту, контакты и иную информацию, выполняем следующие действия:

p, blockquote12,0,0,0,0—>

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

Для удаления учетной записи следует перейти в «Настройки», «Учетные записи», затем в «Google» и вызвать дополнительное меню (справа сверху кнопка в виде 3-х кнопок). Теперь нажимаем «Удалить».

p, blockquote13,0,0,0,0—>

Увеличить

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

p, blockquote14,0,0,0,0—>

Увеличить

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

p, blockquote15,0,0,0,0—>

Как включить синхронизацию Google с Андроид?

h22,0,0,0,0—>

Для включения синхронизации Гугл аккаунт сначала следует перейти в «Настройки» Android. Затем пролистываем настройки вниз, пока не дойдем до блока с настройками «Личные данные». Переходим в «Учетные записи» или в иных версиях «Аккаунты».

p, blockquote16,0,0,0,0—>

Увеличить

Затем отобразится список с аккаунтами, в которые вы заходили раньше на своем Андроид. Для включения синхронизации выбираем Google аккаунт. Если в списке нет Гугл аккаунта, значит в него вы не вошли.

p, blockquote17,0,0,1,0—>

В данной ситуации следует нажать на «Добавить аккаунт», эта кнопка располагается внизу списка, а потом следовать инструкциям, отображающимся на экране.

p, blockquote18,0,0,0,0—>

Увеличить

После выбора аккаунта Гугл, перед пользователем будут продемонстрированы настройки синхронизации для данного аккаунта. Здесь можно отключить или включить синхронизацию множества сервисов, например, заметки Google Keep, почта Gmail, веб-браузер Chrome и многое другое. Для включения синхронизации переводим переключатель напротив необходимых сервисов в положение «Включено».

p, blockquote19,0,0,0,0—>

Увеличить

Для запуска немедленной синхронизации аккаунта, нужно кликнуть в верхнем правом углу экрана на кнопку. Будет отрыто меню, где следует выбрать «Синхронизировать».

p, blockquote20,0,0,0,0—>

Увеличить

По умолчанию синхронизируется информация с приложений, контакты и календарь. Если требуется автоматически синхронизировать с Гугл серверов фотографии, то необходимо загрузить приложение Google фото. Перейдя в настройки приложения, доступна строчка «Автозагрузка и синхронизация». При ее активации на облачное хранилище будут отправляться фотографии.

p, blockquote21,0,0,0,0—>

Автоматическая синхронизация фотографий работает даже после удаления приложения Google фото. Для ее отключения нужно перейти в настройки программы и переключатель «Автозагрузка и синхронизация» передвинуть в неактивное положение.

p, blockquote22,0,0,0,0—>

Увеличить

p, blockquote23,0,0,0,1—>

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

after—>

Операционная система Android, как и большинство других, идеальной не является. Само собой разумеется, что и в ней могут возникать сбои, особенно сильно проявляющиеся при установке приложений, взятых не из официального сервиса Play Market, и инсталляции неофициальных прошивок. Одной из самых распространенных является ошибка синхронизации аккаунта Google Android. Попробуем разобраться, как от нее избавиться.

Ошибка синхронизации аккаунта Google Android: типичные сбои

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

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

Ошибка синхронизации аккаунта Google Android: что делать?

Самым неприятным в ситуации, когда появляется ошибка синхронизации аккаунта Google Android на телефоне или планшете, может быть так называемая «зависшая синхронизация».

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

Исправляем синтаксическую ошибку

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

Здесь следует просто ввести корректные записи, полученные при регистрации (в качестве логина используется адрес G-mail). В крайнем случае, можно попробовать восстановить пароль.

Проверяем параметры синхронизации

Иногда ошибка синхронизации аккаунта Google Android связана и с неправильными настройками в самой системе. Можно, конечно, попробовать вернуться к заводским настройкам, однако в большинстве случаев этого не требуется. Нужно просто зайти в настройки и посмотреть на включенные службы.

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

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

Удаляем учетную запись

Если все методы, приведенные выше, не помогают, и ошибка синхронизации аккаунта Google Android появляется снова, придется применять крайние меры – удаление существующей «учетки».

Для этого используется меню настроек, в котором выбирается раздел аккаунтов. Здесь нас интересует учетная запись Google. Входим в нее, вводим адрес Gmail и подтверждаем удаление кнопкой снизу или командой меню.

Теперь, как уже, наверное, понятно, следует перезагрузить девайс, после чего, при наличии Интернет-соединения и попытке входа в сервисы Google, система предложит либо создать новую запись, либо использовать уже имеющиеся регистрационные данные. Вводим логин и пароль и подтверждаем выбор. Если и это не поможет (например, на устройствах с установленными прошивками), придется создавать новую «учетку», однако при этом ни о каком восстановлении списка контактов или ранее установленных приложений и речи быть не может.

Заключение

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

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

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

Используемые источники:

  • https://androproblem.ru/polomki/android-ne-vklyuchaetsya-sinhronizatsiya-akkaunta-google.html
  • https://lumpics.ru/error-syncing-google-account-in-android/
  • https://appsetter.ru/kak-vklyuchit-sinhronizatsiyu-s-google-na-android.html
  • http://askproblem.ru/phone/android/remont/oshibka-sinhronizatsii-akkaunta-google.html
  • https://fb.ru/article/227876/oshibka-sinhronizatsii-akkaunta-google-android-kak-ot-nee-izbavitsya

Понравилась статья? Поделить с друзьями:
  • Sync exe error failed to load branding configuration
  • Sync error warhammer
  • Sync error detected ошибка soulstorm apocalypse mod
  • Sync android sdk как исправить
  • Sync 1st gear sequence error