А давайте результаты побыстрее!

Есть в «дорожном ралли» — особенно в его блудильно-квестовом подвиде — забавная составляющая, связанная с подсчетом результатов. В большом и серьезном автоспорте все просто и понятно — скажем, в кольцевых гонках процедура награждения должна состояться непременно через 15 минут после финиша и регламентирована вплоть до высоты ступенек подиума и размера груди у девушек, подносящих всякие там кубки и медали. Впрочем, победитель определяется просто и особых вопросов ни у кого обычно не возникает (нет, бывают иногда странные правила вроде Ле-Мановских, где результат определяется по пройденному за 24 часа расстоянию — но с ними тоже в целом все понятно). Легко определить результат и в ралли, и в дисциплинах вроде ралли-рейдов — хоть там и не всегда работает правило «кто самый быстрый — тот и папка».

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

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

Впрочем, проблема тут возникает и у самих же организаторов соревнования. Как подсчитать результаты, когда ни один из участников не проехал по маршруту правильно? Как «разгрести» протокол судейского пункта с множеством повторных прохождений? Тот же подсчет норматива «регулярности движения» запросто может оказаться неверным, о чем незамедлительно напомнят участники (был у меня случай, когда я зашел в секретариат «Ралли МАДИ» с множеством претензий по подсчетам нормативов, посидел часа полтора с судейской бригадой, пересчитывая нормативы, и вышел победителем соревнования — правда, все было вполне честно, с моими подсчетами согласны были и другие участники).

Естественно, все это обычно сильно усложняет подсчет результатов — и редко бывает, что результаты оказываются готовы в определенное регламентом соревнования время (на МАДИ порой сидят до раннего утра следующего дня). Но то МАДИ, а на каком-нибудь ретро судейская бригада находится в крайне сложном положении — кабак снят на определенное время, иногда заказаны артисты, и награждение просто нельзя особо сильно сдвигать. Недавно был свидетелем крайне курьезного подведения итогов — в одном из зачетов обнаружились сложности с подсчетом, и аж на голосование участников был вынесен вопрос — провести награждение сейчас, по не совсем корректным результатам, или дождаться подсчета и собраться той же компанией для торжественного награждения через пару дней?

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

А вот вам еще сказочка для самых маленьких программистов

Лежит файл, в том файле SQL-дамп, в SQL-дампе поле с JSON, в JSON-е NaCl-овский криптоконтейнер, в криптоконтейнере protobuf, а в protobuf’е смерть Кащеева.

И еще сказочка про выборы и ленивого программиста

Люблю я истории про O(N²), ничего не могу с собой поделать. Так как в этот раз все пока что держится на слухах — пусть это будет сказочка про республику Анчурия, где-то в Латинской Америке.

Анчурия — республика демократическая, в ней есть аж четыре партии — Пиратов, Жуликов, Воров и Коммунистов, и даже иногда проводятся выборы в парламент. Более того, Анчурия не чужда высоким технологиям и решила применить на очередных выборах модную новинку — электронную голосовалку на блокчейне, скачав ее прямо с гитхаба.

Одного не знали бедные любители высоких технологий из Анчурии — писал ту голосовалку не очень образованный программист Вася, и время подсчета результатов в той голосовалке зависело от количества избирателей квадаратично. Но Министерство Информационных Технологий Анчурии — люди прошаренные, и даже провели тестовое голосование — выбирали, что лучше, леденцы с ментолом или менты с леденцами. В голосовании приняли участие самые прошаренные граждане Анчурии, коих набралось аж 10 000, результаты подсчитались достаточно быстро — и систему решили внедрить на будущих парламентских выборах с десятью миллионами избирателей.

И вот поздно вечером в воскресенье закрылись электронные избирательные участки, и сам Министр Информационных Технологий нажал на самом мощном компьютере Анчурии кнопочку Enter, запустив процедуру подсчета. Долго ли ждать результатов? Ну полчаса-час, ответил министр — и все решили подождать. Сначала два часа ждали, потом четыре, восемь… — в общем, и к утру не дождались. Зато проснулись коммунисты и с криком «Дурят капиталисты нашего брата!» собрали митинг на Главной площади. К вечеру собрался уже не митинг, а целый майдан, кто-то обозвал цифрового министра пiдрахуем (не обошлось без украинского следа), пираты подрались с коммунистами, жулики с ворами — но все вместе пошли от Главной площади по Главной улице к Президентскому дворцу (география столицы Анчурии проста и понятна).

Ну дальше как всегда — Эль Президенте почуял, что пахнет жареным, и сбежал, в Анчурии случилась маленькая гражданская война, к власти пришла военная хунта и от греха подальше запретила все выборы, компьютеры и на всякий случай — украинский язык. Жуликов посадили, воров постреляли, пиратов развесили на реях, коммунистов отправили в тайные тюрьмы ЦРУ. Говорят, что где-то в начале гражданской войны бывший министр даже вылез из своего дата-центра в подземном бункере со словами «Мы все посчитали!» — но всем это было настолько безразлично, что никто про него и не вспомнил.

Так вот, господа программисты, вся беда случилась из-за того, что случайно найденная на гитхабе голосовалка имела сложность подсчета голосов O(N²) — то есть если для подсчета 10 000 бюллетеней требовалась всего 1 секунда — то подсчет 10 000 000 бюллетеней занял не 1 000 секунд, как надеялся цифровой министр, а гораздо больше — 1 000 000 секунд, или целых 11 дней — как раз хватит на то, чтобы не дождавшиеся итогов выборов анчурийцы начали гражданскую войну. O(N²) — очень «хорошая» оценка сложности, она, с одной стороны, достаточно мала, чтобы успешно проходить тесты на небольших наборах данных (это вам не перебор всех подмножеств, и даже не какие-нибудь числа Белла) — а с другой стороны, очень плохо ведет себя, когда данных становится много.

А чтобы не спровоцировать гражданскую войну в латиноамериканской стране — не делайте алгоритмы со сложностью O(N²), а читайте книжки Скиены, Седжвика, Дасгупты и Кормена, можно еще поставить на полочку многотомник Кнута.

Про бесплатные сервисы

На днях в твиторе срались, может ли программистская контора держать свой код на гитхабе, или это стыдно. А я вот подумал — есть ли что-то стыдное в том, что у той же конторы сайт будет на narod.ru и почта на mail.ru?

Про эти ваши выборы

Вот, кстати, прочитал тут очередную заплачку о том, что математик из МГУ Михаил Лобанов (КПРФ+УГ) проиграл выборы «административному кандидату» Попову. Валят все, как обычно, на электронное голосование — мол, «очно» Лобанов уверенно побеждал, а когда добавились результаты «дистанционки» — то единоросс резко скакнул вверх. Че хочу сказать? Ну во-первых, считать независимыми голосование очно/дистанционно и голосование за/против ЕР нельзя — тут играет куча факторов, начиная от КПРФовской агитации «против» электронного голосования и заканчивая «мобилизацией» бюджетников именно на дистанционное голосование (добавим еще сомнения в том, что голосование останется тайным и страшилки, что проголосовавших неправильно ждут мелкие репрессии — и получим изрядный перекос). Собственно, на аргументы вроде «очно побеждал А, а дистанционно у Б на 100500 голосов больше» можно отвечать этим соображением.

Удивляет, конечно, другое — а были ли квалифицированные наблюдатели или члены УИК ДЭГ от КПРФ вообще или Лобанова лично? Кажется, это несложно — отлови пару студентов мехмата или ВМК, выдай по ноутбуку и отправь в комиссию. Но судя по происходящему — никто особо не озаботился даже проверкой «почасовых» выгрузок из базы данных, не говоря уж о проверке результатов на какие-то аномалии. Это несложно — я в прошлом году на спор написал довольно элементарную проверялку результатов дистанционного голосования в его московском варианте за полчаса — но похоже, что ни одна из вопящих о невероятных нарушениях политических сил ничем подобным не озаботилась.

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

Про это ваше умное голосование

Иногда в ленту твитора заносит персонажей с интеллектом инфузории-туфельки, готовых ради победы демократии в России проголосовать хоть за тумбочку, если им так прикажет «Умное голосование».

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

А вот еще в метро такое показывают

В новых метропоездах вместо банальных рекламных наклеек развешены видеоэкраны, на которых крутят всякую хероту — от ублюдочных мультфильмов до роликов «Слава Собянину». Промежуточный вариант — что-то «транспортно-урбанистическое», например, показывают ролик, как некий мужик едет на велосипеде по Нью-Йорку — вот он целиком на Ютубе:

Смотреть реально страшно, чел не только едет как будто он бессмертный, но и пытается задавить пешеходов, херачит на красный, ну и в общем едет как последний мудак. Видимо, суть всей урбанистики в том, чтобы на предложение расстрелять всех евреев и велосипедистов отвечали так: «А евреев за что?»

Про умные чайники и наблюдательность

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

https://habr.com/ru/company/redmond/blog/385483/

Yurich задался вопросом — а почему это девушка на одной из КДПВ в вечернем макияже, но без колготок (завидую наблюдательности, мастерство не пропьешь!)? Ответ подсказывают нам многочисленные сервисы по поиску картинок, с фотосессией целиком можно ознакомиться, например, здесь (URL подсказывает — Not Safe For Work, я предупредил):

https://nsfwalbum.com/album/558716

Когда берешь клип-арт с Met-Art’а.

С ужасом думаю, что картинка с качками в конце статьи тоже взята из сомнительных мест (нет, я не хочу ее искать в гуглокартинках).

PS А раз вы досюда дочитали — то скажите, в 2021 году еще остались жесткие диски, пригодные для хранения веселых (not gay) картинок в RAID 5 без всякого говна типа SMR?

Интересно, когда Буниной запретят пиздеть?

Что ни интервью гендиректора Яндекса — то какой-то ебаный стыд с примесью говноедства. Вот как можно всерьез в 2021 году нести хуйню про «партнеров-предпринимателей» (то бишь курьеров и таксистов), например?

— Как вы воспринимаете таксиста, который работает на «Яндекс.Такси»? Это совсем не ваш сотрудник или наполовину ваш? Кто он для вас?

— Мы еще не научились правильно их воспринимать, нам это только предстоит.

Очень резко, за несколько лет, у нас появились сотни тысяч людей, которые с нашей помощью, с помощью наших технологий и экосистемы зарабатывают. Это не только таксисты, но и блогеры в Дзене, толокеры, которые выполняют простые задания, курьеры в «Еде» и «Лавке». Мы сейчас думаем, как к ним правильно относиться.

— Какие есть идеи?

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

https://incrussia.ru/understand/elena-bunina-yandex/

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

Или вот из свежего:

Правда ли, что очень много сотрудников в «Яндексе» перерабатывает?

Мне кажется, что правда. По крайней мере, люди так считают сами. Но они перерабатывают не потому, что их кто-то заставляет, это происходит само собой. У нас в «Яндексе» очень интересно, масса возможностей, и если увлечься, то есть возможность работать непрерывно. Это происходит где угодно, лишь бы была связь и WiFi, хоть в метро — ты можешь быть везде таким же продуктивным, как если бы ты работал в офисе. Так у нас было всегда.

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

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

https://vc.ru/yandex/289518-elena-bunina-yandeks-nelzya-planirovat-professiyu-na-vsyu-zhizn

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

А как это называется?

А скажите, как называется то чувство, когда ты сначала хуесосишь чувака в твиторе за тупость, а потом видишь его юзерпик в корпоративном чате? И чтобы два раза не вставать — может ли преподаватель курса по алгоритмам и структурам данных иметь наивные эльфийские представления о том, какие именно данные может сохранять гугл, и что хранилка на несколько сот терабайт может поместиться даже в икеевском журнальном столике?

Электронный документооборот

Пока тут Исавнин с Артамоновым кидают друг в друга какахами на хабре из-за дистанционного электронного голосования — реальные электронные сервисы «от государства» выглядят примерно так:

Прекрасно все, особенно ссылка через левый совершенно «сокращатель ссылок» на гуглодиск.

UPD А за «так же» надо вообще убивать.

Что-то #MeToo в этом году никакое

Хотя вот истории про Хохла, могущественного начальника котлопункта просто волшебно хороши. Например:

https://m.vk.com/wall-195334579_801 — вдали от мужа нахуяриться коньяком с тем самым Хохлом, невероятным половым гигантом? Умею, люблю, практикую! Спустя 13 лет мадам стала испытывать по этому поводу некое странное чувство, когда все воспитание говорит тебе, что ты хорошая девочка, а обстоятельства указывают на то, что ты — конченная блядь; в психологии это вроде бы называется фрустрацией и когнитивным диссонансом. Выход? Разумеется, объявить Хохла ужасным абьюзером!

Продолжения (а в MeToo продолжения просто обязательны, без них никак нельзя) менее насыщены сюжетно, но прекрасны своими определениями:

https://m.vk.com/wall-195334579_803 — «Тут очень важно не забывать фигуру и вес слова этого человека на ББС: он там высоко на Олимпе среди прочих богов этого замкнутого места и действительно мановением пальца может сделать жизнь любого нижестоящего человека адом»

https://m.vk.com/wall-195334579_807 — «Хохол — очень харизматичный и могущественный человек, который заведовал всей едой, принимал заказы на доставку с большой земли (продрейс), и который, если ты ведёшь себя хорошо, может привезти тебе сигареты.»

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

PS Интересно, пропустит ли фейсбук ссылку на пост, где много раз встречается слово «хохол»?

Волшебные константы, часть 2

Мне так понравилось разнообразие мнений по поводу написанного leetspeak-ом слова Bootload (там, где я спер этот скриншот, срач был под полторы сотни комментов), что предлагаю обсудить вот этот кусок кода, 13 лет в практически неизменном виде существующий в довольно популярном опенсорсном проекте:

Хотя… Пожалуй, обсуждать, по какой причине господин Mathieu Lacage старательно расписал enum для разных значений SUBTYPE_CTL_*** и не стал так делать для SUBTYPE_MGT_*** и SUBTYPE_DATA_*** будет довольно скучно (ответ: потому что мудак), а было бы забавней обсудить, как и почему для того, чтобы два байта отослать — я не вру — вот эти два байта октета:

— надо городить аж вот такую фигню:

uint8_t m_ctrlType;     ///< control type
uint8_t m_ctrlSubtype;  ///< control subtype
uint8_t m_ctrlToDs;     ///< control to DS
uint8_t m_ctrlFromDs;   ///< control from DS
uint8_t m_ctrlMoreFrag; ///< control more fragments
uint8_t m_ctrlRetry;    ///< control retry
uint8_t m_ctrlMoreData; ///< control more data
uint8_t m_ctrlWep;      ///< control WEP
uint8_t m_ctrlOrder;    ///< control order

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

uint16_t val = 0;
val |= (m_ctrlType << 2) & (0x3 << 2);
val |= (m_ctrlSubtype << 4) & (0xf << 4);
val |= (m_ctrlToDs << 8) & (0x1 << 8);
val |= (m_ctrlFromDs << 9) & (0x1 << 9);
val |= (m_ctrlMoreFrag << 10) & (0x1 << 10);
val |= (m_ctrlRetry << 11) & (0x1 << 11);
val |= (m_ctrlMoreData << 13) & (0x1 << 13);
val |= (m_ctrlWep << 14) & (0x1 << 14);
val |= (m_ctrlOrder << 15) & (0x1 << 15);
return val;

Вариант второй - экономично-эмбеддерский, выглядит примерно так:

uint16_t frameControl = 0;
frameControl |= (CTL_TYPE_DATA << FRAME_CONTROL_CONTROL_TYPE_OFFSET) & FRAME_CONTROL_CONTROL_TYPE_MASK;
frameControl |= (CTL_SUBTYPE_DATA_QOS << FRAME_CONTROL_CONTROL_SUBTYPE_OFFSET) & FRAME_CONTROL_CONTROL_SUBTYPE_MASK;

ctrlSubtype = (frameControl & FRAME_CONTROL_CONTROL_SUBTYPE_MASK) >> FRAME_CONTROL_CONTROL_SUBTYPE_OFFSET;
/* and so on */

Отличие от предыдущего - мы работаем напрямую с этими двумя байтиками, и это довольно экономично, нам не надо работать с "тяжеловесным" по эмбеддерским меркам объектом с десятком-другим полей, а то и целой ссылкой на vtable (если обратите внимание - функции Serialize и Deserialize виртуальные). Можно обернуть это все в несколько более удобные макросы или inline-функции.

Но неужели для такой стандартной задачи человечество не придумало ничего лучше? Подобного рода херней люди занимаются вот уже несколько десятков лет, и в полувековой давности языке C есть прекрасная штука - битовые поля. В книжке 1984 года The Unix Programming Environment они описывались, как рекомендованный и правильный способ вот этого битоебства. По удобству это напоминает первый способ, с членами структуры, а по экономичности полностью аналогично второму:

struct {
    unsigned int protocolVersion : 2;
    unsigned int type : 2;
    unsigned int subtype : 4;
    unsigned int toDS : 1;
    unsigned int fromDS : 1;
    unsigned int moreFragments : 1;
    unsigned int retry : 1;
    unsigned int powerManagement : 1;
    unsigned int moreData : 1;
    unsigned int protectedFrame : 1;
    unsigned int order : 1;
} frameControl;

frameControl.type = CTL_TYPE_DATA;
frameControl.subtype = CTL_SUBTYPE_DATA_QOS;

ctrlSubtype = frameControl.subtype;
/* and so on */

Но... если на уровне "байтиков" структуры в C и C++ еще как-то предсказуемы (а проблемы с выравниванием обычно решаются с помощью #pragma pack(1)), то вот битовые поля оказываются настолько непредсказуемы, что в книжке Кернигана и Ритчи приведено осторожное предупреждение, а в любом современном учебнике настоятельно рекомендуется ими никогда не пользоваться!

Что-то мне подсказывает, что вовсе не этого хотели Керниган с Ритчи. А что вы порекомендуете?

Читал и ржал

https://www.cnews.ru/news/top/2021-04-20_nazvany_samye_neobychnye

Прямо даже не знаю, что смешнее — «редкий и необычный» программист микроконтроллеров или «московская компания» Ventra.

Решил доебаться

Книжка про Natural Language Processing на русском языке. В книжке — ни одного примера на русском:

https://habr.com/ru/company/piter/blog/556140/#comment_23059060

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

Про эти ваши стартапы

Я, конечно, понимаю, что это — 2015 год: https://habr.com/ru/company/friifond/blog/294744/, но:

Несмотря на то, что в общем смысле ФРИИ поддерживает любые интернет-проекты и мобильные приложения, у нас есть сильная экспертиза по выращиванию определенного типа компаний: это компании с оборотом от 100 тыс. руб. до 1 млн. руб. в месяц в сферах b2c, b2b, маркетплейсов.

Неужели ни у кого не находится смелости сказать авторам «интернет-проектов и мобильных приложений», что с таким оборотом надо не о стартапах думать, а закрывать лавочку и выкладывать резюме на хедхантер?

И к новостям педагогики

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

Первая квалификационная категория педагогическим работникам устанавливается на основе:
стабильных положительных результатов освоения обучающимися образовательных программ по итогам мониторингов, проводимых организацией;
стабильных положительных результатов освоения обучающимися образовательных программ по итогам мониторинга системы образования, проводимого в порядке, установленном постановлением Правительства Российской Федерации от 5 августа 2013 г. N 662*(6);
выявления развития у обучающихся способностей к научной (интеллектуальной), творческой, физкультурно-спортивной деятельности;
личного вклада в повышение качества образования, совершенствования методов обучения и воспитания, транслирования в педагогических коллективах опыта практических результатов своей профессиональной деятельности, активного участия в работе методических объединений педагогических работников организации.

https://base.garant.ru/70662982/53f89421bbdaf741eb2d1ecc4ddb4c33/

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

https://www.pedalmanac.ru/meroprijatija-dlja-rabotnikov-obrazovanija

Да, надпись про «В конце теста будут показаны правильные ответы на вопросы. Количество попыток прохождения теста не ограничено. Участвовать в конкурсе и проверять ответы можно до тех пор, пока Вас не устроит результат» — это не шутка, оно так действительно работает, и всего за 150-180 рублей вы можете приобрести себе необходимую красивую бумажку.

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

http://pedakademy.ru/?page_id=109