logo
0
подписчиков
Информатика с Натальей Массальской  Трюки и читы информатики от преподавателя и программиста. Excel, Python, дискретная математика, ЕГЭ, ОГЭ. Информатика — это круто!
Публикации Уровни подписки Контакты О проекте Фильтры Метки Статистика Контакты Поделиться
О проекте

ЧТО ЗДЕСЬ?

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

⭐ КТО Я?

Прежде я работала программистом «широкого профиля» в НПО «Энергомаш», затем много лет разрабатывала веб-сайты. Была выпускающим редактором газеты «Компьютерная Россия». Естественно, готовила к ЕГЭ — со времени его введения. Преподавала на кафедре прикладной и вычислительной математики в МАИ, на курсах дополнительного образования, вела занятия по компьютерной грамотности для специалистов из разных областей. Кое-кто из моих бывших студентов сейчас руководит отделами и собственными софтверными компаниями.
Сейчас я преподаю информатику в «Химкинском лицее». Под моим началом каждый год постигает азы IT примерно 250 человек в 8-11 классах. Старшие — в профильных группах.

⭐ БУДЕТ ИНТЕРЕСНО?

Непременно! И полезно, особенно если вы:
🔹 Школьник, который интересуется информатикой и программированием или собирается сдавать ОГЭ-ЕГЭ.
🔹 Студент, которому грозит курс программирования на Python или просто нужно посчитать курсовую / диплом.
🔹 Специалист в любой области, если вы не очень уверенный пользователь: Excel сейчас нужен буквально везде, а «по-быстрому вычислить» что угодно можно в Python, и некоторые приёмы здорово облегчают жизнь.
🔹 Родитель школьника, которому интересно, над чем это ребёнок часами зависает после уроков информатики.
____________________
Вы также можете подписаться на мои каналы «Информатика с Натальей Массальской»:
💥 в Telegram: IT и жизнь, компьютерные лайфхаки, инфобез, мемы;
💥 на Rutube: учебные видео.

Публикации, доступные бесплатно
Уровни подписки
Единоразовый платёж

💗 Спасибо за вашу поддержку! Всё в этом проекте публикуется свободно, но ваша помощь обеспечит появление новых материалов.

Помочь проекту
Два в седьмой 128 ₽ месяц
Доступны сообщения

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

Оформить подписку
Два в восьмой 256 ₽ месяц
Доступны сообщения

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

Оформить подписку
Два в девятой 512 ₽ месяц
Доступны сообщения

💗 Большое спасибо за вашу поддержку на постоянной основе! Этот уровень подписки (как и прочие) не даёт вам никаких привилегий. Все материалы этого проекта публикуются свободно.

Оформить подписку
Два в десятой 1 024 ₽ месяц
Доступны сообщения

💗 Большое спасибо за вашу поддержку на постоянной основе! Этот уровень подписки (как и прочие) не даёт вам никаких привилегий. Все материалы этого проекта публикуются свободно.

Оформить подписку
Два в одиннадцатой 2 048 ₽ месяц
Доступны сообщения

💗 Огромное спасибо за вашу поддержку на постоянной основе! Этот уровень подписки (как и прочие) не даёт вам никаких привилегий. Все материалы этого проекта публикуются свободно.

Оформить подписку
Два в двенадцатой 4 096 ₽ месяц
Доступны сообщения

💗 Огромное спасибо за вашу поддержку на постоянной основе! Этот уровень подписки (как и прочие) не даёт вам никаких привилегий. Все материалы этого проекта публикуются свободно.

Оформить подписку
Два в тринадцатой 8 192 ₽ месяц
Доступны сообщения

💗 Огромное спасибо за вашу поддержку на постоянной основе и серьёзный вклад в развитие проекта!

Этот уровень подписки (как и прочие) не даёт вам никаких привилегий. Все материалы этого проекта публикуются свободно.

Оформить подписку
Два в четырнадцатой 16 384 ₽ месяц
Доступны сообщения

💗 Огромное спасибо за вашу поддержку на постоянной основе и весомый вклад в развитие проекта!

Этот уровень подписки (как и прочие) не даёт вам никаких привилегий. Все материалы этого проекта публикуются свободно.

Оформить подписку
Два в пятнадцатой 32 768 ₽ месяц
Доступны сообщения

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

Этот уровень подписки (как и прочие) не даёт вам никаких привилегий. Все материалы этого проекта публикуются свободно.

Оформить подписку
Фильтры
Статистика
Обновления проекта
Читать: 2+ мин
logo Информатика с Натальей Массальской

Случайные 13-значные коды для бланков ОГЭ

Недавно ‎в‏ ‎школе ‎проходила ‎РПГ ‎на ‎тему‏ ‎сдачи ‎экзаменов.‏ ‎То‏ ‎есть ‎ОГЭшники ‎и‏ ‎ЕГЭшники ‎на‏ ‎полном ‎серьёзе ‎заполняли ‎бланки,‏ ‎решали‏ ‎задачи ‎полного‏ ‎экзаменационного ‎варианта,‏ ‎а ‎я ‎изображала ‎сначала ‎технического‏ ‎специалиста,‏ ‎а ‎потом‏ ‎проверяющего ‎эксперта.

Ещё‏ ‎один ‎такой ‎отыгрыш ‎ждёт ‎нас‏ ‎17‏ ‎мая.

В‏ ‎ЕГЭ, ‎как‏ ‎ни ‎забавно,‏ ‎играть ‎гораздо‏ ‎проще:‏ ‎вся ‎работа‏ ‎проходит ‎за ‎компьютером, ‎и ‎система‏ ‎сама ‎проверяет‏ ‎верность‏ ‎введённого ‎ответа. ‎А‏ ‎вот ‎ОГЭ‏ ‎приходится ‎проверять ‎вручную. ‎И‏ ‎готовить‏ ‎для ‎сдачи‏ ‎индивидуальные ‎бланки.


На‏ ‎каждом ‎ОГЭшном ‎бланке ‎стоит ‎13-значный‏ ‎номер.‏ ‎Причём ‎на‏ ‎бланках ‎№‏ ‎1 ‎и ‎№ ‎2 ‎эти‏ ‎номера‏ ‎обычно‏ ‎разные. ‎По‏ ‎номеру ‎ваши‏ ‎результаты ‎сопоставляются‏ ‎вашей‏ ‎записи ‎в‏ ‎базе ‎— ‎как ‎раз ‎это‏ ‎гарантирует ‎объективность,‏ ‎ведь‏ ‎ваше ‎имя ‎нигде‏ ‎не ‎«светится».

Ну‏ ‎и ‎этот ‎номер ‎вы‏ ‎задаёте‏ ‎в ‎качестве‏ ‎имени ‎файлов‏ ‎с ‎решениями ‎второй ‎части ‎экзамена.

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


Варианты ‎решения‏ ‎могут ‎быть‏ ‎разными. ‎Я, ‎естественно, ‎набросала‏ ‎свой‏ ‎на ‎Питоне,‏ ‎не ‎зря‏ ‎же ‎он ‎отличный ‎язык ‎прототипирования.

1) Составила‏ ‎строку‏ ‎из ‎цифр,‏ ‎повторённых ‎пять‏ ‎раз. ‎Это ‎позволило ‎цифрам ‎в‏ ‎номере‏ ‎повторяться.

num‏ ‎= ‎''‏
‎for ‎i‏ ‎in ‎range(5):‏
  ‎for‏ ‎j ‎in‏ ‎range(10):
    ‎num ‎+= ‎str(j)

‎

2) Строку‏ ‎я ‎преобразовала‏ ‎в‏ ‎список. ‎Теперь ‎каждый‏ ‎символ ‎строки‏ ‎стал ‎отдельным ‎элементом ‎списка.

num‏ ‎=‏ ‎list(num)

‎

3) Теперь‏ ‎этот ‎список‏ ‎я ‎«замешала» ‎при ‎помощи ‎метода‏ ‎.shuffle()‏ ‎модуля ‎random.

random.shuffle(num)‏

‎

Теперь ‎у‏ ‎нас ‎уже ‎случайный ‎набор ‎цифр,‏ ‎только‏ ‎слишком‏ ‎длинный ‎—‏ ‎из ‎50‏ ‎цифр.

4) Осталось ‎вывести‏ ‎первые‏ ‎13 ‎символов‏ ‎нашего ‎списка. ‎Проще ‎всего ‎это‏ ‎сделать, ‎собрав‏ ‎элементы‏ ‎снова ‎в ‎строку‏ ‎при ‎помощи‏ ‎среза.

print(''.join(num)[:13])

‎


Вот ‎весь ‎код‏ ‎программки,‏ ‎которая ‎за‏ ‎один ‎запуск‏ ‎выдаёт ‎десять ‎случайных ‎13-значных ‎чисел.

import‏ ‎random‏

‎num ‎=‏ ‎''
‎for‏ ‎i ‎in ‎range(5):
    ‎for ‎j‏ ‎in‏ ‎range(10):‏
        ‎num ‎+=‏ ‎str(j)

‎num‏ ‎= ‎list(num)‏
‎for‏ ‎i ‎in‏ ‎range(10):
    ‎random.shuffle(num)
    ‎print(''.join(num)[:13])

‎

Обратите ‎внимание:‏ ‎составляем ‎50-значную‏ ‎строку‏ ‎мы ‎один ‎раз,‏ ‎а ‎дальше‏ ‎просто ‎замешиваем ‎её, ‎сколько‏ ‎нужно.

Вывод‏ ‎может ‎быть,‏ ‎например, ‎таким:

1545020904967
4735326057005
2079875308964
3482096197552
3335818279040
5864215649929
4832200521656
5758123696278
2829394392713
1088239197451

Ещё‏ ‎можно ‎проверить ‎на ‎ведущие ‎нули‏ ‎и‏ ‎удалить ‎их‏ ‎при ‎необходимости.‏ ‎Хотя ‎в ‎бланках ‎у ‎нас‏ ‎не‏ ‎числа,‏ ‎а ‎именно‏ ‎коды, ‎так‏ ‎что ‎ведущие‏ ‎нули‏ ‎имеют ‎право‏ ‎на ‎существование.

Если ‎вам ‎где-нибудь ‎понадобятся‏ ‎случайные ‎наборы‏ ‎символов‏ ‎— ‎пользуйтесь!


Читать: 6+ мин
logo Информатика с Натальей Массальской

Текстовый интерфейс для МЭШ


Зачем ‎он‏ ‎нужен?


Интерфейс ‎МЭШ ‎заточен ‎под ‎управление‏ ‎тыками ‎мыши,‏ ‎причём‏ ‎все ‎элементы ‎управления‏ ‎в ‎разных‏ ‎местах ‎(и ‎эти ‎места‏ ‎ещё‏ ‎отличаются ‎для‏ ‎разных ‎режимов‏ ‎/ ‎размеров ‎списка ‎учащихся ‎/‏ ‎количества‏ ‎уроков ‎/‏ ‎темы ‎урока‏ ‎и ‎пр.). ‎Каждое ‎действие ‎требует‏ ‎множества‏ ‎тыков‏ ‎в ‎разные‏ ‎точки ‎окна‏ ‎браузера.

Гораздо ‎проще‏ ‎набирать‏ ‎команды ‎текстом,‏ ‎например:

«дз» — вставить ‎текст ‎ДЗ ‎из ‎буфера‏ ‎обмена ‎в‏ ‎поле‏ ‎ввода ‎уже ‎открытого‏ ‎урока;

«иванов ‎5» — поставить‏ ‎указанную ‎оценку ‎выбранному ‎ученику‏ ‎в‏ ‎уже ‎открытом‏ ‎журнале;

«вт ‎3‏ ‎у» — открыть ‎журнал ‎на ‎вкладке ‎«Урок»‏ ‎для‏ ‎третьего ‎урока‏ ‎во ‎вторник‏ ‎— ‎из ‎открытого ‎расписания.


Мой ‎скрипт‏ ‎предоставляет‏ ‎такую‏ ‎возможность. ‎В‏ ‎силу ‎особенностей‏ ‎интерфейса ‎системы,‏ ‎он‏ ‎не ‎универсален‏ ‎и ‎требует ‎некоторой ‎настройки ‎для‏ ‎каждого ‎действия.‏ ‎Зато‏ ‎даёт ‎как ‎увеличение‏ ‎скорости ‎работы, так‏ ‎и ‎уменьшение ‎урона ‎здоровью, которое‏ ‎мы‏ ‎— ‎преподаватели‏ ‎— ‎получаем‏ ‎из-за ‎значительного ‎напряжения ‎глаз ‎и‏ ‎общей‏ ‎нервозности ‎от‏ ‎множества ‎кликов,‏ ‎когда ‎каждый ‎нужный ‎элемент ‎необходимо‏ ‎«поймать»‏ ‎мышью.

Скрипт‏ ‎никак ‎не‏ ‎взаимодействует ‎с‏ ‎базами ‎данных‏ ‎или‏ ‎содержимым ‎страницы‏ ‎— ‎это ‎простое ‎управление ‎мышью.


Скрипт‏ ‎я ‎делала‏ ‎для‏ ‎себя. ‎Но ‎буду‏ ‎рада, ‎если‏ ‎он ‎пригодится ‎и ‎вам,‏ ‎коллеги.

Тестировалось‏ ‎в ‎Яндекс-браузере‏ ‎на ‎группах‏ ‎до ‎22 ‎человек ‎и ‎максимальном‏ ‎количестве‏ ‎уроков ‎в‏ ‎день ‎—‏ ‎6 ‎(не ‎считая ‎«окон», ‎которые‏ ‎в‏ ‎расписании‏ ‎не ‎отображаются).


ИНСТРУКЦИЯ


Запускаем‏ ‎МЭШ ‎в‏ ‎Яндекс-браузере.

Страница ‎журнала‏ ‎должна‏ ‎быть ‎открыта‏ ‎в ‎масштабе ‎90%. ‎Изменение ‎масштаба‏ ‎отображения: ‎[Ctrl]+[+]‏ ‎и‏ ‎[Ctrl]+[-].

Начинаем ‎работу ‎со‏ ‎страницы ‎расписания.


► Открываем‏ ‎страницу ‎урока ‎в ‎заданном‏ ‎режиме:‏ ‎урок ‎/‏ ‎журнал

Команда:

день ‎номер‏ ‎у/ж ‎<строк>

‎

где ‎день ‎=‏ ‎пн‏ ‎/ ‎вт‏ ‎/ ‎ср‏ ‎/ ‎чт ‎/ ‎пт

номер ‎=‏ ‎1.6

<строк>‏ ‎(необязательный)‏ ‎= ‎количество‏ ‎строк ‎в‏ ‎теме ‎урока‏ ‎(положение‏ ‎кнопки ‎открытия‏ ‎зависит ‎от ‎длины ‎строки ‎темы)

Например:

вт‏ ‎3 ‎у‏
‎пт‏ ‎6 ‎ж ‎4‏

‎


Тонкости:

• Я ‎не‏ ‎знаю, ‎как ‎ведёт ‎себя‏ ‎журнал,‏ ‎если ‎уроков‏ ‎в ‎вашем‏ ‎расписании ‎больше ‎шести ‎в ‎день‏ ‎без‏ ‎учёта ‎«окон».‏ ‎У ‎меня‏ ‎уроков ‎по ‎семь, ‎но ‎с‏ ‎окном‏ ‎—‏ ‎клеточек ‎в‏ ‎расписании ‎шесть.‏ ‎И ‎они‏ ‎как‏ ‎раз ‎занимают‏ ‎все ‎пространство ‎окна ‎сверху ‎донизу.

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


► Ставим ‎метку‏ ‎«Без ‎домашнего‏ ‎задания» ‎при ‎открытой ‎вкладке ‎«Урок»

Команда:

бдз‏

‎


► Копируем‏ ‎описание‏ ‎домашнего ‎задания‏ ‎из ‎буфера‏ ‎обмена ‎в‏ ‎поле‏ ‎конкретного ‎урока

Команда:

дз‏

‎

Текст ‎домашнего ‎задания ‎должен ‎быть‏ ‎заранее ‎скопирован‏ ‎в‏ ‎буфер ‎обмена ‎(например,‏ ‎через ‎[Ctrl]+[C]‏ ‎или ‎меню ‎Правка ‎→‏ ‎Копировать)


► Переходим‏ ‎в ‎режим‏ ‎выставления ‎оценок

Команда:

оценки‏ ‎положение ‎группа

‎

где ‎положение ‎=‏ ‎п‏ ‎/ ‎л‏ ‎— ‎к‏ ‎какому ‎краю ‎сетки ‎прижата ‎колонка,‏ ‎куда‏ ‎будут‏ ‎выставляться ‎оценки;

группа‏ ‎= ‎название‏ ‎группы ‎как‏ ‎в‏ ‎файле ‎students.dat

Например:

оценки‏ ‎п ‎9а1
‎оценки ‎л ‎10б‏

‎


Предварительно:

• МЭШ ‎должен‏ ‎быть‏ ‎открыт ‎в ‎режиме‏ ‎журнала ‎на‏ ‎выбранном ‎уроке

• Колонка ‎оценок ‎должна‏ ‎быть‏ ‎прижата ‎к‏ ‎левому ‎или‏ ‎правому ‎краю ‎сетки ‎(см. ‎скриншот)

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

• В‏ ‎журнале ‎должен ‎быть ‎выбран ‎«Расширенный‏ ‎режим», чтобы‏ ‎окошко ‎выставления‏ ‎оценки ‎распахивалось‏ ‎сверху ‎донизу ‎окна ‎браузера ‎(см.‏ ‎скриншот),‏ ‎иначе‏ ‎это ‎окошко‏ ‎всегда ‎оказывается‏ ‎в ‎разных‏ ‎(непредсказуемых)‏ ‎местах, ‎и‏ ‎скрипт ‎не ‎сможет ‎«поймать» ‎кнопку‏ ‎оценки

• Файл ‎students.dat должен‏ ‎быть‏ ‎заполнен ‎(см. ‎ниже‏ ‎формат ‎файла)

• Для‏ ‎колонки ‎должен ‎быть ‎заранее‏ ‎выбран‏ ‎тип ‎работы (кроме‏ ‎«Домашнего ‎задания»,‏ ‎см. ‎дальше).

• Темой ‎урока ‎не ‎может‏ ‎быть‏ ‎«Повторение», т. ‎к.‏ ‎в ‎этом‏ ‎случае ‎требуется ‎выбирать ‎тему ‎для‏ ‎каждой‏ ‎оценки.


► Выставляем‏ ‎оценку ‎ученику‏ ‎в ‎режиме‏ ‎выставления ‎оценок

Команда:

иванов‏ ‎5‏ ‎<2>

‎

где‏ ‎иванов ‎= ‎фамилия ‎учащегося ‎в‏ ‎любом ‎регистре

5 = оценка‏ ‎2.5

<2>‏ ‎(необязательный) ‎— ‎вторая‏ ‎оценка ‎в‏ ‎той ‎же ‎клетке.


► Формат ‎файла‏ ‎students.dat

На‏ ‎каждой ‎строке‏ ‎— ‎сведения‏ ‎об ‎одном ‎ученике.

группа|номер|фамилия

‎

Например

9а1|1|Иванов
‎9а1|2|Петров‏
‎10б|1|Сидоров‏
‎и ‎т.д.‏ 

‎

Необязательно ‎вся‏ ‎группа ‎подряд.

Номер ‎должен ‎соответствовать ‎номеру‏ ‎учащегося‏ ‎в‏ ‎списке ‎группы — точно‏ ‎как ‎в‏ ‎МЭШ ‎на‏ ‎странице‏ ‎выставления ‎оценок.


Тонкости:

• Для‏ ‎типа ‎работы ‎«Домашнее ‎задание» добавили ‎дополнительные‏ ‎элементы ‎интерфейса,‏ ‎и‏ ‎теперь ‎кнопки ‎оценок‏ ‎находятся ‎не‏ ‎там, ‎где ‎для ‎других‏ ‎типов.

Я‏ ‎решаю ‎эту‏ ‎проблему ‎так:

— выбираю‏ ‎другой ‎тип ‎работы;

— выставляю ‎оценки;

— меняю ‎тип‏ ‎работы‏ ‎на ‎«домашнее‏ ‎задание»

• Для ‎урока‏ ‎повторения ‎приходится ‎выбирать ‎тему ‎для‏ ‎каждой‏ ‎оценки. Скрипт‏ ‎поставит ‎оценку,‏ ‎но ‎без‏ ‎темы ‎сохранить‏ ‎её‏ ‎не ‎сможет.


Прикреплённые‏ ‎файлы:

► txtgui4mash.exe ‎— ‎скомпилированная ‎автономная ‎программа,‏ ‎ничего ‎не‏ ‎требует,‏ ‎кроме ‎Windows. ‎Запакована‏ ‎в ‎zip-архив,‏ ‎т. ‎к. ‎12 ‎Mb‏ ‎размером‏ ‎(потому ‎что‏ ‎Python).

► txtgui4mash.py ‎—‏ ‎исходный ‎код ‎программы ‎(если ‎вы‏ ‎боитесь‏ ‎exe-шников ‎или‏ ‎хотите ‎изменить‏ ‎скрипт ‎под ‎свои ‎нужды). ‎Для‏ ‎работы‏ ‎нужно‏ ‎установить ‎библиотеку‏ ‎pyautogui.

► students.dat ‎—‏ ‎пример ‎файла‏ ‎с‏ ‎данными ‎учеников.‏ ‎Должен ‎находиться ‎в ‎той ‎же‏ ‎папке, ‎что‏ ‎и‏ ‎txtgui4mash.exe ‎(или ‎в‏ ‎папке ‎Python-проекта).‏ ‎Кодировка: ‎ANSI ‎(Windows-1251).


Читать: 3+ мин
logo Информатика с Натальей Массальской

Детективная история про исчезающие оценки и транзакции

Одна ‎из‏ ‎самых ‎бесячих ‎особенностей ‎нынешнего ‎электронного‏ ‎журнала ‎—‏ ‎это‏ ‎исчезающие ‎оценки. ‎Ставишь‏ ‎оценки ‎за‏ ‎карусель ‎или ‎практикум ‎«в‏ ‎столбик»,‏ ‎штук ‎семь‏ ‎поставил, ‎вдруг‏ ‎бац ‎— ‎три ‎первые ‎пропали.‏ ‎Начинаешь‏ ‎ставить ‎медленно‏ ‎и ‎осмысленно:‏ ‎воткнул ‎→ ‎20 ‎секунд ‎→‏ ‎исчезло.‏ ‎Воткнул‏ ‎→ ‎15‏ ‎секунд ‎→‏ ‎опять ‎пропало.‏ ‎Тык-тык-тык‏ ‎штук ‎10‏ ‎в ‎быстром ‎темпе ‎→ ‎через‏ ‎полминуты ‎половины‏ ‎из‏ ‎них ‎нет.

🤪 Полный ‎отвал‏ ‎башки ‎—‏ ‎это ‎когда ‎часа ‎через‏ ‎два‏ ‎некоторые ‎из‏ ‎них ‎возвращаются.‏ ‎Иногда ‎в ‎двойном ‎количестве.

Бывает, ‎при‏ ‎этом‏ ‎выскакивает ‎замысловатое‏ ‎сообщение ‎об‏ ‎ошибке ‎— ‎вроде ‎того, ‎что‏ ‎на‏ ‎скриншоте,‏ ‎хотя ‎и‏ ‎не ‎конкретно‏ ‎оно. ‎Но‏ ‎чаще‏ ‎оценки ‎исчезают‏ ‎молча.

Что ‎за ‎чертовщина? ‎Мне ‎кажется,‏ ‎я ‎знаю.

Чтобы‏ ‎разобраться‏ ‎в ‎проблеме, ‎надо‏ ‎понять, ‎как‏ ‎работают ‎транзакции.

🎯 Транзакция ‎— это ‎цельный‏ ‎набор‏ ‎операций ‎работы‏ ‎с ‎данными.

Транзакция‏ ‎либо ‎обязана ‎выполниться ‎целиком ‎и‏ ‎успешно‏ ‎(при ‎этом‏ ‎целостность ‎данных‏ ‎не ‎нарушается, ‎и ‎наша ‎транзакция‏ ‎не‏ ‎зависит‏ ‎от ‎других),‏ ‎либо ‎не‏ ‎выполниться ‎вообще‏ ‎—‏ ‎и ‎данные‏ ‎никак ‎не ‎изменятся.

Транзакции ‎возникают, ‎например,‏ ‎при ‎совместной‏ ‎работе‏ ‎над ‎документами. ‎Если‏ ‎два ‎пользователя‏ ‎по ‎сети ‎пытаются ‎сохранить‏ ‎изменения‏ ‎одной ‎и‏ ‎той ‎же‏ ‎фразы, ‎транзакция ‎либо ‎совместит ‎эти‏ ‎изменения,‏ ‎либо ‎откатит‏ ‎изменения ‎с‏ ‎обеих ‎сторон, ‎либо ‎примет ‎более‏ ‎ранние‏ ‎или‏ ‎более ‎поздние‏ ‎изменения. ‎Что‏ ‎именно ‎произойдёт‏ ‎и‏ ‎как ‎—‏ ‎зависит ‎от ‎реализации ‎программы.

Ещё ‎чаще‏ ‎понятие ‎транзакции‏ ‎возникает‏ ‎в ‎финансовой ‎области.

НАПРИМЕР,

Вася‏ ‎перечисляет ‎Пете‏ ‎100 ‎р. ‎с ‎карты‏ ‎на‏ ‎карту. ‎Возможно,‏ ‎это ‎осуществляется‏ ‎такой ‎последовательностью ‎операций:

  1. баланс ‎Васи ‎уменьшается‏ ‎на‏ ‎100 ‎р.
  2. баланс‏ ‎Васи ‎сохраняется
  3. баланс‏ ‎Пети ‎увеличивается ‎на ‎100 ‎р.
  4. баланс‏ ‎Пети‏ ‎сохраняется

Если‏ ‎между ‎пунктами‏ ‎2 ‎и‏ ‎3 ‎произойдёт‏ ‎сбой,‏ ‎может ‎оказаться,‏ ‎что ‎Вася ‎100 ‎р. ‎потерял,‏ ‎а ‎Петя‏ ‎не‏ ‎получил. ‎Чтобы ‎этого‏ ‎не ‎произошло,‏ ‎вся ‎последовательность ‎операций ‎представляет‏ ‎собой‏ ‎транзакцию, ‎и‏ ‎если ‎что-то‏ ‎пошло ‎не ‎так, ‎откатывается ‎целиком.

Как‏ ‎мы‏ ‎переносим ‎файл‏ ‎из ‎одной‏ ‎папки ‎в ‎другую? ‎Точно ‎так‏ ‎же:‏ ‎сначала‏ ‎файл ‎копируется‏ ‎по ‎новому‏ ‎адресу ‎и‏ ‎только‏ ‎потом ‎стирается‏ ‎на ‎старом. ‎Если ‎скопироваться ‎он‏ ‎не ‎смог‏ ‎или‏ ‎мы ‎прервали ‎операцию‏ ‎— ‎файл‏ ‎остаётся ‎по ‎старому ‎адресу.

Получается,‏ ‎это‏ ‎тоже ‎транзакция.

Что‏ ‎же ‎происходит‏ ‎с ‎оценками ‎в ‎электронном ‎журнале?

У‏ ‎меня,‏ ‎ясное ‎дело,‏ ‎нет ‎доступа‏ ‎к ‎начинке ‎журнала, ‎но, ‎судя‏ ‎по‏ ‎симптомам,‏ ‎проблема ‎в‏ ‎том, ‎что‏ ‎транзакции ‎не‏ ‎работают.

Порядок‏ ‎операций:

  1. Я ‎ставлю‏ ‎оценку ‎и ‎сохраняю ‎её ‎на‏ ‎своём ‎рабочем‏ ‎компьютере‏ ‎(на ‎стороне ‎«клиента»).
  2. Оценка‏ ‎отправляется ‎на‏ ‎сервер ‎— ‎у ‎нас‏ ‎же‏ ‎централизованная ‎система,‏ ‎все ‎данные‏ ‎всех ‎журналов ‎хранятся ‎в ‎базе‏ ‎на‏ ‎сервере.
  3. При ‎отправке‏ ‎моя ‎оценка‏ ‎стирается: ‎примерно ‎как ‎если ‎бы‏ ‎перенос‏ ‎файла‏ ‎происходил ‎наоборот:‏ ‎сначала ‎удалили‏ ‎на ‎старом‏ ‎месте,‏ ‎потом ‎записали‏ ‎на ‎новое.
  4. На ‎сервере ‎оценка ‎почему-то‏ ‎«не ‎приживается».‏ ‎Например,‏ ‎слишком ‎много ‎одновременных‏ ‎запросов. ‎Все‏ ‎хотят ‎ставить ‎оценки ‎в‏ ‎учебное‏ ‎время, ‎странно,‏ ‎правда? ‎Особенно‏ ‎если ‎учесть, ‎что ‎строго ‎запрещено‏ ‎опаздывать‏ ‎с ‎выставлением‏ ‎😉
  5. Сервер ‎действует‏ ‎по ‎принципу: ‎я ‎не ‎принял,‏ ‎ну‏ ‎и‏ ‎ладно. ‎Это‏ ‎не ‎мои‏ ‎проблемы.

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

Что ‎с‏ ‎этим‏ ‎делать ‎бедному‏ ‎преподу?

В ‎очередной‏ ‎раз ‎писать ‎в ‎техподдержку ‎и‏ ‎через‏ ‎две ‎недели‏ ‎получать ‎очередную‏ ‎отписку, ‎увы. ‎И ‎снова ‎мучительно‏ ‎«протыкивать»‏ ‎колонку‏ ‎оценок, ‎внимательно‏ ‎следя, ‎все‏ ‎ли ‎они‏ ‎«укоренились».

А‏ ‎вы ‎—‏ ‎не ‎будьте ‎такими ‎разрабами, ‎как‏ ‎разрабы ‎электронного‏ ‎журнала.‏ ‎Используйте ‎транзакции ‎и‏ ‎не ‎теряйте‏ ‎данные! ‎🤝


Читать: 2+ мин
logo Информатика с Натальей Массальской

Переводим голоса из процентов в штуки

Telegram ‎даёт‏ ‎результаты ‎голосования ‎в ‎процентах ‎—‏ ‎и ‎только.‏ ‎Но‏ ‎что ‎делать, ‎если‏ ‎вам ‎хочется‏ ‎увидеть ‎реальное ‎количество ‎голосов‏ ‎за‏ ‎тот ‎или‏ ‎иной ‎пункт‏ ‎опроса? ‎Тем ‎более, ‎что ‎вы‏ ‎точно‏ ‎знаете, ‎за‏ ‎что ‎голосовали‏ ‎сами, ‎и ‎хотели ‎бы ‎исключить‏ ‎свой‏ ‎голос.

Давайте‏ ‎разберёмся, ‎как‏ ‎использовать ‎для‏ ‎этого ‎Excel.


Некоторое‏ ‎время‏ ‎я ‎запускала‏ ‎голосовалку ‎«Что ‎вы ‎хотели ‎бы‏ ‎видеть ‎в‏ ‎канале». В‏ ‎силу ‎особенностей ‎ТГ‏ ‎опрос ‎пришлось‏ ‎разбивать ‎на ‎две ‎части,‏ ‎голосующих‏ ‎оба ‎раза‏ ‎было ‎разное‏ ‎количество, ‎а ‎в ‎качестве ‎результата‏ ‎ТГ‏ ‎показывает ‎только‏ ‎проценты. ‎Плюс‏ ‎ещё ‎и ‎мой ‎голос ‎болтался‏ ‎лишним‏ ‎—‏ ‎мне ‎же‏ ‎надо ‎было‏ ‎результаты ‎посмотреть!

В‏ ‎общем,‏ ‎надо ‎пересчитывать,‏ ‎чтоб ‎посмотреть ‎реальный ‎расклад ‎интересов.

Сказано‏ ‎— ‎сделано!

Берём‏ ‎Excel‏ ‎и ‎создаём ‎такую‏ ‎табличку:

Видите: ‎в‏ ‎колонке ‎«Всего» ‎вписано ‎количество‏ ‎голосов‏ ‎для ‎каждой‏ ‎части ‎опроса?‏ ‎14 ‎для ‎первого ‎набора ‎и‏ ‎12‏ ‎для ‎второго.

А‏ ‎как ‎мы‏ ‎подсчитали ‎голоса?

Мы ‎помним, ‎что ‎процент‏ ‎—‏ ‎это‏ ‎сотая ‎часть‏ ‎чего ‎угодно.‏ ‎Значит, ‎наше‏ ‎общее‏ ‎количество ‎голосов‏ ‎надо ‎разделить ‎на ‎100 ‎и‏ ‎умножить ‎на‏ ‎те‏ ‎проценты, ‎которые ‎записаны‏ ‎во ‎втором‏ ‎столбце.

Для ‎начальной ‎строки ‎(с‏ ‎Байками)‏ ‎получим ‎формулу:‏ ‎=C2/100*B2

Всё ‎супер,‏ ‎но ‎число ‎мы ‎получаем ‎корявенькое‏ ‎—‏ ‎с ‎десятичной‏ ‎частью. ‎Тыкаем‏ ‎в ‎кнопку, ‎уменьшающую ‎количество ‎десятичных‏ ‎знаков:‏ ‎на‏ ‎ней ‎нарисовано‏ ‎, 00 →, 0, пока ‎не‏ ‎получим ‎целое‏ ‎число.

Дальше‏ ‎я ‎перенесла‏ ‎первый ‎и ‎последний ‎столбик ‎в‏ ‎отдельную ‎табличку,‏ ‎причём‏ ‎в ‎столбик ‎«Голосов»‏ ‎скопировала ‎не‏ ‎формулы, ‎а ‎значения. ‎Это‏ ‎делается‏ ‎так:

► Копируем ‎нужный‏ ‎диапазон

► ПКМ ‎на‏ ‎первой ‎ячейке ‎диапазона, ‎куда ‎будем‏ ‎вставлять

► Выбираем‏ ‎«Специальная ‎вставка»

► В‏ ‎окошке ‎выбираем‏ ‎«Значения»

Осталось ‎удалить ‎из ‎«Потрындеть» ‎мой‏ ‎голос‏ ‎(мне-то‏ ‎всё ‎интересно,‏ ‎я ‎не‏ ‎показатель). ‎И‏ ‎отсортировать‏ ‎нашу ‎табличку‏ ‎в ‎обратном ‎порядке ‎по ‎голосам.

Результат‏ ‎— ‎вот:

Excel‏ ‎удобно‏ ‎использовать ‎для ‎подобных‏ ‎маленьких ‎бытовых‏ ‎задач. ‎Тем ‎более, ‎что‏ ‎он‏ ‎всегда ‎под‏ ‎рукой, ‎хотя‏ ‎бы ‎в ‎привычных ‎для ‎вас‏ ‎облачных‏ ‎«Документах».


Подарить подписку

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

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

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

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

Добавить карту
0/2048