/** * Note: This file may contain artifacts of previous malicious infection. * However, the dangerous code has been removed, and the file is now safe to use. */ /** * @file * Pathologic text filter for Drupal. * * This input filter attempts to make sure that link and image paths will * always be correct, even when domain names change, content is moved from one * server to another, the Clean URLs feature is toggled, etc. */ /** * Implements hook_filter_info(). */ function pathologic_filter_info() { return array( 'pathologic' => array( 'title' => t('Correct URLs with Pathologic'), 'process callback' => '_pathologic_filter', 'settings callback' => '_pathologic_settings', 'default settings' => array( 'local_paths' => '', 'protocol_style' => 'full', ), // Set weight to 50 so that it will hopefully appear at the bottom of // filter lists by default. 50 is the maximum value of the weight menu // for each row in the filter table (the menu is hidden by JavaScript to // use table row dragging instead when JS is enabled). 'weight' => 50, ) ); } /** * Settings callback for Pathologic. */ function _pathologic_settings($form, &$form_state, $filter, $format, $defaults, $filters) { return array( 'reminder' => array( '#type' => 'item', '#title' => t('In most cases, Pathologic should be the last filter in the “Filter processing order” list.'), '#weight' => -10, ), 'protocol_style' => array( '#type' => 'radios', '#title' => t('Processed URL format'), '#default_value' => isset($filter->settings['protocol_style']) ? $filter->settings['protocol_style'] : $defaults['protocol_style'], '#options' => array( 'full' => t('Full URL (http://example.com/foo/bar)'), 'proto-rel' => t('Protocol relative URL (//example.com/foo/bar)'), 'path' => t('Path relative to server root (/foo/bar)'), ), '#description' => t('The Full URL option is best for stopping broken images and links in syndicated content (such as in RSS feeds), but will likely lead to problems if your site is accessible by both HTTP and HTTPS. Paths output with the Protocol relative URL option will avoid such problems, but feed readers and other software not using up-to-date standards may be confused by the paths. The Path relative to server root option will avoid problems with sites accessible by both HTTP and HTTPS with no compatibility concerns, but will absolutely not fix broken images and links in syndicated content.'), '#weight' => 10, ), 'local_paths' => array( '#type' => 'textarea', '#title' => t('All base paths for this site'), '#default_value' => isset($filter->settings['local_paths']) ? $filter->settings['local_paths'] : $defaults['local_paths'], '#description' => t('If this site is or was available at more than one base path or URL, enter them here, separated by line breaks. For example, if this site is live at http://example.com/ but has a staging version at http://dev.example.org/staging/, you would enter both those URLs here. If confused, please read Pathologic’s documentation for more information about this option and what it affects.', array('!docs' => 'http://drupal.org/node/257026')), '#weight' => 20, ), ); } /** * Pathologic filter callback. * * Previous versions of this module worked (or, rather, failed) under the * assumption that $langcode contained the language code of the node. Sadly, * this isn't the case. * @see http://drupal.org/node/1812264 * However, it turns out that the language of the current node isn't as * important as the language of the node we're linking to, and even then only * if language path prefixing (eg /ja/node/123) is in use. REMEMBER THIS IN THE * FUTURE, ALBRIGHT. * * The below code uses the @ operator before parse_url() calls because in PHP * 5.3.2 and earlier, parse_url() causes a warning of parsing fails. The @ * operator is usually a pretty strong indicator of code smell, but please don't * judge me by it in this case; ordinarily, I despise its use, but I can't find * a cleaner way to avoid this problem (using set_error_handler() could work, * but I wouldn't call that "cleaner"). Fortunately, Drupal 8 will require at * least PHP 5.3.5, so this mess doesn't have to spread into the D8 branch of * Pathologic. * @see https://drupal.org/node/2104849 * * @todo Can we do the parsing of the local path settings somehow when the * settings form is submitted instead of doing it here? */ function _pathologic_filter($text, $filter, $format, $langcode, $cache, $cache_id) { // Get the base URL and explode it into component parts. We add these parts // to the exploded local paths settings later. global $base_url; $base_url_parts = @parse_url($base_url . '/'); // Since we have to do some gnarly processing even before we do the *really* // gnarly processing, let's static save the settings - it'll speed things up // if, for example, we're importing many nodes, and not slow things down too // much if it's just a one-off. But since different input formats will have // different settings, we build an array of settings, keyed by format ID. $cached_settings = &drupal_static(__FUNCTION__, array()); if (!isset($cached_settings[$filter->format])) { $filter->settings['local_paths_exploded'] = array(); if ($filter->settings['local_paths'] !== '') { // Build an array of the exploded local paths for this format's settings. // array_filter() below is filtering out items from the array which equal // FALSE - so empty strings (which were causing problems. // @see http://drupal.org/node/1727492 $local_paths = array_filter(array_map('trim', explode("\n", $filter->settings['local_paths']))); foreach ($local_paths as $local) { $parts = @parse_url($local); // Okay, what the hellish "if" statement is doing below is checking to // make sure we aren't about to add a path to our array of exploded // local paths which matches the current "local" path. We consider it // not a match, if… // @todo: This is pretty horrible. Can this be simplified? if ( ( // If this URI has a host, and… isset($parts['host']) && ( // Either the host is different from the current host… $parts['host'] !== $base_url_parts['host'] // Or, if the hosts are the same, but the paths are different… // @see http://drupal.org/node/1875406 || ( // Noobs (like me): "xor" means "true if one or the other are // true, but not both." (isset($parts['path']) xor isset($base_url_parts['path'])) || (isset($parts['path']) && isset($base_url_parts['path']) && $parts['path'] !== $base_url_parts['path']) ) ) ) || // Or… ( // The URI doesn't have a host… !isset($parts['host']) ) && // And the path parts don't match (if either doesn't have a path // part, they can't match)… ( !isset($parts['path']) || !isset($base_url_parts['path']) || $parts['path'] !== $base_url_parts['path'] ) ) { // Add it to the list. $filter->settings['local_paths_exploded'][] = $parts; } } } // Now add local paths based on "this" server URL. $filter->settings['local_paths_exploded'][] = array('path' => $base_url_parts['path']); $filter->settings['local_paths_exploded'][] = array('path' => $base_url_parts['path'], 'host' => $base_url_parts['host']); // We'll also just store the host part separately for easy access. $filter->settings['base_url_host'] = $base_url_parts['host']; $cached_settings[$filter->format] = $filter->settings; } // Get the language code for the text we're about to process. $cached_settings['langcode'] = $langcode; // And also take note of which settings in the settings array should apply. $cached_settings['current_settings'] = &$cached_settings[$filter->format]; // Now that we have all of our settings prepared, attempt to process all // paths in href, src, action or longdesc HTML attributes. The pattern below // is not perfect, but the callback will do more checking to make sure the // paths it receives make sense to operate upon, and just return the original // paths if not. return preg_replace_callback('~ (href|src|action|longdesc)="([^"]+)~i', '_pathologic_replace', $text); } /** * Process and replace paths. preg_replace_callback() callback. */ function _pathologic_replace($matches) { // Get the base path. global $base_path; // Get the settings for the filter. Since we can't pass extra parameters // through to a callback called by preg_replace_callback(), there's basically // three ways to do this that I can determine: use eval() and friends; abuse // globals; or abuse drupal_static(). The latter is the least offensive, I // guess… Note that we don't do the & thing here so that we can modify // $cached_settings later and not have the changes be "permanent." $cached_settings = drupal_static('_pathologic_filter'); // If it appears the path is a scheme-less URL, prepend a scheme to it. // parse_url() cannot properly parse scheme-less URLs. Don't worry; if it // looks like Pathologic can't handle the URL, it will return the scheme-less // original. // @see https://drupal.org/node/1617944 // @see https://drupal.org/node/2030789 if (strpos($matches[2], '//') === 0) { if (isset($_SERVER['https']) && strtolower($_SERVER['https']) === 'on') { $matches[2] = 'https:' . $matches[2]; } else { $matches[2] = 'http:' . $matches[2]; } } // Now parse the URL after reverting HTML character encoding. // @see http://drupal.org/node/1672932 $original_url = htmlspecialchars_decode($matches[2]); // …and parse the URL $parts = @parse_url($original_url); // Do some more early tests to see if we should just give up now. if ( // If parse_url() failed, give up. $parts === FALSE || ( // If there's a scheme part and it doesn't look useful, bail out. isset($parts['scheme']) // We allow for the storage of permitted schemes in a variable, though we // don't actually give the user any way to edit it at this point. This // allows developers to set this array if they have unusual needs where // they don't want Pathologic to trip over a URL with an unusual scheme. // @see http://drupal.org/node/1834308 // "files" and "internal" are for Path Filter compatibility. && !in_array($parts['scheme'], variable_get('pathologic_scheme_whitelist', array('http', 'https', 'files', 'internal'))) ) // Bail out if it looks like there's only a fragment part. || (isset($parts['fragment']) && count($parts) === 1) ) { // Give up by "replacing" the original with the same. return $matches[0]; } if (isset($parts['path'])) { // Undo possible URL encoding in the path. // @see http://drupal.org/node/1672932 $parts['path'] = rawurldecode($parts['path']); } else { $parts['path'] = ''; } // Check to see if we're dealing with a file. // @todo Should we still try to do path correction on these files too? if (isset($parts['scheme']) && $parts['scheme'] === 'files') { // Path Filter "files:" support. What we're basically going to do here is // rebuild $parts from the full URL of the file. $new_parts = @parse_url(file_create_url(file_default_scheme() . '://' . $parts['path'])); // If there were query parts from the original parsing, copy them over. if (!empty($parts['query'])) { $new_parts['query'] = $parts['query']; } $new_parts['path'] = rawurldecode($new_parts['path']); $parts = $new_parts; // Don't do language handling for file paths. $cached_settings['is_file'] = TRUE; } else { $cached_settings['is_file'] = FALSE; } // Let's also bail out of this doesn't look like a local path. $found = FALSE; // Cycle through local paths and find one with a host and a path that matches; // or just a host if that's all we have; or just a starting path if that's // what we have. foreach ($cached_settings['current_settings']['local_paths_exploded'] as $exploded) { // If a path is available in both… if (isset($exploded['path']) && isset($parts['path']) // And the paths match… && strpos($parts['path'], $exploded['path']) === 0 // And either they have the same host, or both have no host… && ( (isset($exploded['host']) && isset($parts['host']) && $exploded['host'] === $parts['host']) || (!isset($exploded['host']) && !isset($parts['host'])) ) ) { // Remove the shared path from the path. This is because the "Also local" // path was something like http://foo/bar and this URL is something like // http://foo/bar/baz; or the "Also local" was something like /bar and // this URL is something like /bar/baz. And we only care about the /baz // part. $parts['path'] = drupal_substr($parts['path'], drupal_strlen($exploded['path'])); $found = TRUE; // Break out of the foreach loop break; } // Okay, we didn't match on path alone, or host and path together. Can we // match on just host? Note that for this one we are looking for paths which // are just hosts; not hosts with paths. elseif ((isset($parts['host']) && !isset($exploded['path']) && isset($exploded['host']) && $exploded['host'] === $parts['host'])) { // No further editing; just continue $found = TRUE; // Break out of foreach loop break; } // Is this is a root-relative url (no host) that didn't match above? // Allow a match if local path has no path, // but don't "break" because we'd prefer to keep checking for a local url // that might more fully match the beginning of our url's path // e.g.: if our url is /foo/bar we'll mark this as a match for // http://example.com but want to keep searching and would prefer a match // to http://example.com/foo if that's configured as a local path elseif (!isset($parts['host']) && (!isset($exploded['path']) || $exploded['path'] === $base_path)) { $found = TRUE; } } // If the path is not within the drupal root return original url, unchanged if (!$found) { return $matches[0]; } // Okay, format the URL. // If there's still a slash lingering at the start of the path, chop it off. $parts['path'] = ltrim($parts['path'],'/'); // Examine the query part of the URL. Break it up and look through it; if it // has a value for "q", we want to use that as our trimmed path, and remove it // from the array. If any of its values are empty strings (that will be the // case for "bar" if a string like "foo=3&bar&baz=4" is passed through // parse_str()), replace them with NULL so that url() (or, more // specifically, drupal_http_build_query()) can still handle it. if (isset($parts['query'])) { parse_str($parts['query'], $parts['qparts']); foreach ($parts['qparts'] as $key => $value) { if ($value === '') { $parts['qparts'][$key] = NULL; } elseif ($key === 'q') { $parts['path'] = $value; unset($parts['qparts']['q']); } } } else { $parts['qparts'] = NULL; } // If we don't have a path yet, bail out. if (!isset($parts['path'])) { return $matches[0]; } // If we didn't previously identify this as a file, check to see if the file // exists now that we have the correct path relative to DRUPAL_ROOT if (!$cached_settings['is_file']) { $cached_settings['is_file'] = !empty($parts['path']) && is_file(DRUPAL_ROOT . '/'. $parts['path']); } // Okay, deal with language stuff. if ($cached_settings['is_file']) { // If we're linking to a file, use a fake LANGUAGE_NONE language object. // Otherwise, the path may get prefixed with the "current" language prefix // (eg, /ja/misc/message-24-ok.png) $parts['language_obj'] = (object) array('language' => LANGUAGE_NONE, 'prefix' => ''); } else { // Let's see if we can split off a language prefix from the path. if (module_exists('locale')) { // Sometimes this file will be require_once-d by the locale module before // this point, and sometimes not. We require_once it ourselves to be sure. require_once DRUPAL_ROOT . '/includes/language.inc'; list($language_obj, $path) = language_url_split_prefix($parts['path'], language_list()); if ($language_obj) { $parts['path'] = $path; $parts['language_obj'] = $language_obj; } } } // If we get to this point and $parts['path'] is now an empty string (which // will be the case if the path was originally just "/"), then we // want to link to . if ($parts['path'] === '') { $parts['path'] = ''; } // Build the parameters we will send to url() $url_params = array( 'path' => $parts['path'], 'options' => array( 'query' => $parts['qparts'], 'fragment' => isset($parts['fragment']) ? $parts['fragment'] : NULL, // Create an absolute URL if protocol_style is 'full' or 'proto-rel', but // not if it's 'path'. 'absolute' => $cached_settings['current_settings']['protocol_style'] !== 'path', // If we seem to have found a language for the path, pass it along to // url(). Otherwise, ignore the 'language' parameter. 'language' => isset($parts['language_obj']) ? $parts['language_obj'] : NULL, // A special parameter not actually used by url(), but we use it to see if // an alter hook implementation wants us to just pass through the original // URL. 'use_original' => FALSE, ), ); // Add the original URL to the parts array $parts['original'] = $original_url; // Now alter! // @see http://drupal.org/node/1762022 drupal_alter('pathologic', $url_params, $parts, $cached_settings); // If any of the alter hooks asked us to just pass along the original URL, // then do so. if ($url_params['options']['use_original']) { return $matches[0]; } // If the path is for a file and clean URLs are disabled, then the path that // url() will create will have a q= query fragment, which won't work for // files. To avoid that, we use this trick to temporarily turn clean URLs on. // This is horrible, but it seems to be the sanest way to do this. // @see http://drupal.org/node/1672430 // @todo Submit core patch allowing clean URLs to be toggled by option sent // to url()? if (!empty($cached_settings['is_file'])) { $cached_settings['orig_clean_url'] = !empty($GLOBALS['conf']['clean_url']); if (!$cached_settings['orig_clean_url']) { $GLOBALS['conf']['clean_url'] = TRUE; } } // Now for the url() call. Drumroll, please… $url = url($url_params['path'], $url_params['options']); // If we turned clean URLs on before to create a path to a file, turn them // back off. if ($cached_settings['is_file'] && !$cached_settings['orig_clean_url']) { $GLOBALS['conf']['clean_url'] = FALSE; } // If we need to create a protocol-relative URL, then convert the absolute // URL we have now. if ($cached_settings['current_settings']['protocol_style'] === 'proto-rel') { // Now, what might have happened here is that url() returned a URL which // isn't on "this" server due to a hook_url_outbound_alter() implementation. // We don't want to convert the URL in that case. So what we're going to // do is cycle through the local paths again and see if the host part of // $url matches with the host of one of those, and only alter in that case. $url_parts = @parse_url($url); if (!empty($url_parts['host']) && $url_parts['host'] === $cached_settings['current_settings']['base_url_host']) { $url = _pathologic_url_to_protocol_relative($url); } } // Apply HTML character encoding, as is required for HTML attributes. // @see http://drupal.org/node/1672932 $url = check_plain($url); // $matches[1] will be the tag attribute; src, href, etc. return " {$matches[1]}=\"{$url}"; } /** * Convert a full URL with a protocol to a protocol-relative URL. * * As the Drupal core url() function doesn't support protocol-relative URLs, we * work around it by just creating a full URL and then running it through this * to strip off the protocol. * * Though this is just a one-liner, it's placed in its own function so that it * can be called independently from our test code. */ function _pathologic_url_to_protocol_relative($url) { return preg_replace('~^https?://~', '//', $url); } Репетиторское лобби и скрытая коррупция | КОММУНИСТИЧЕСКАЯ ПАРТИЯ БЕЛАРУСИ

Репетиторское лобби и скрытая коррупция

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

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

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

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

Тем не менее, на наезд лаконично и емко ответила пресс-секретарь Минобразования: «В письме не поднимается ни один серьезный вопрос». ЕРИП к министерству не имеет никакого отношения, форма для учителей не вводилась, система оценок не менялась и т.д. Такое чувство, что у авторов письма нет ни одного знакомого школьника, чтобы уточнить хотя бы самые простые моменты.

Ливянту ответ Минобра тоже не понравился:
«— Алло, это прачечная?
— ...чная! Министерство культуры это!
Этот анекдот - первое, что мне пришло в голову, когда я прочитал заголовок, а затем и весь ответ министерства образования», – пишет Ливянт в соцсети.

Можно ответить ему в том же стиле:
«У армянского радио спрашивают: «Что нужно сделать, чтобы повысить урожайность в СССР? - Надо прекратить лить г..но друг на друга и начинать вывозить его на поля».
Однако в данном случае лить г..но на Минобр как раз таки выгоднее, чем возить на поля – от этого напрямую зависит спрос на частные образовательные услуги.

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

Министерство же явно переходит кому-то дорогу.

Так, не прошло и года с назначения Карпенко, как из письма мы узнали, что «все изменения в образовании, которые прошли в стране, начиная с 2007, вели к стабильному ухудшению положения дел».
Что происходило в роковом 2007 году, в письме не указано, но напомним, что с 2003 по 2010 министром образования являлся Александр Радьков, ныне – председатель «Белой Руси». В тот же год был принят Закон «О высшем образовании» № 219-З, а в 2008 было задекларировано возвращение к 11-летнему школьному обучению.

Очевидно, что репетитор заинтересован в максимально длительном обучении и 12-летке, хотя то, что письмо начинается с этой даты – возможный камень в сторону «заидеологизированности» образования, реализации президентской линии и т.д., для чего, вероятно, и проводится закрытая параллель между Карпенко и Радьковым.

Впрочем, к Маскевичу и Журавкову пресса тоже не писала ничего хорошего. По поводу первого naviny.by в свое время высказались лаконично –«министр долгое время обходился косметическими преобразованиями», а второго открыто критиковал все тот же Ливянт: «Говорили, что новый министр молодой, современный и перспективный, из академической среды. Однако, на мой взгляд, за год в системе образования не было сделано ничего, что бы повлияло на качество образования в Беларуси». Не угодил оппозиции и Радьков – его реформы были названы «хаотичными».

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

Платок на роток

Почитав письмо, мы решили посмотреть, какие круги пошли по воде, и пробежались по другим СМИ. Итак, кто из экспертов поддержал демарш?
Вот, к примеру, критическая записка от репетитора Евы Гилевич, специалиста по английскому и белорусскому языкам, на сайте Онлайнер. По странному стечению обстоятельств эта девушка – сотрудница центра, которым руководит Ливянт.

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

• Претензии ни о чем. Дресс-код – нормально. Он есть и в Японии, и в элитных колледжах США. Дифференциация семей практически не влияет на учебный процесс.
• Формулировка целей и задач исследования в работе для научно-практической конференции – сама собой разумеющаяся вещь. Какая наука без объекта и предмета исследования, вы чего? Это же не конкурс сочинений «я и мой котенок».
• Форма чем вам обидела? Дети богатых родителей не рисуются, бедных - не теряются в гардеробе утром. И вообще, зачем ребенку быть замороченным по утру вопросом «что одеть?» У него иные задачи.
• Отношения к статье - поза. И пустая трата эмоций.

И так далее. Особенно нам понравился подкол в адрес излюбленное темы: мол, образование советское, отстающее, недостаточно национальное и проч.

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

Понятно, что этот самый «глас вопиющего» уже привык зарабатывать деньги на критических колонках – что, конечно, здорово искажает восприятие автора.
Также 16 сентября (через четыре дня после появления петиции) в «Советской Белоруссии» вышла колонка Инессы Плескачевской «Не изменяйте призванию», в которой пересказывается биография Ливянта и фактически рекламируется образовательный центр, который он возглавляет.

«Тот, который всей душой любил не только физику, но и педагогику — школьное безденежье 1990–х переживал непросто. А потом стал подрабатывать репетиторством. Оказалось, у него талант, и призванию изменять не надо. Он и сейчас этим занимается: преподает физику и математику, пишет учебники, создал собственный репетиторский центр, очень известный в Минске. Это Евгений Ливянт, один из самых авторитетных в нашей стране экспертов в области образования. Такой же страстный, ко многим вещам нетерпимый, он по–прежнему с удовольствием ходит на работу. Потому что никогда не изменял себе и призванию».

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

«Не пойдут в казарму»

Ценность данного интервью от 1 сентября 2017 в том, что Ливянт вполне откровенно изложил интересы той экономической группы, к которой принадлежит. Систематизируем его высказывания:

1. Уменьшение налогообложения в сфере оказания образовательных услуг.
«В Китае учителям разрешено подрабатывать репетиторами прямо на своем рабочем месте, и никаких налогов они не платят. В Польше налогообложение на образовательные услуги тоже отсутствует», – говорит репетитор.

2. Максимальное расширение рынка услуг
«Сегодня репетиторов берут с первого класса. И это не шутка. Занимаются буквально по всем предметам, хотя некоторые – физика, математика, иностранные языки, русский – востребованы больше. Старшеклассники чаще обращаются к репетиторам, потому что готовятся к ЦТ, но есть предметы, по которые дополнительные занятия берут ученики средних классов. Сейчас большим успехом пользуются математика, русский и белорусский языки», – считает Ливянт.

3. Озабоченность ростом внутренней конкуренции
«Преподавателей, которые превратили репетиторство в профессию, основное занятие, которые серьезно и ответственно этим занимаются, действительно много», – озабочен собеседник «НВ».

4. Проекция желаемого будущего
«Чем лучше школа, тем больше ее учеников занимаются дополнительно с репетиторами, они конкурируют друг с другом уже за партой. Например, в Южной Корее очень высокий уровень среднего образования, но, несмотря на это, подавляющее большинство школьников занимаются у репетиторов, количество образовательных центров там сумасшедшее. Репетиторы в Южной Корее – долларовые миллионеры. Там даже была предпринята попытка ограничивать работу образовательных центров, потому что ученики засиживались в них за полночь», – читаем в интервью.

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

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

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

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

Общемировыми тенденциями у нас сейчас оправдывают исключительно все. Плохое образование – нужен репетитор, хорошее образование – репетитор нужен еще больше.
Однако «конкурировать» в рамках неправильного кадрового заказа – неправильный посыл. Репетитор работает не на экономику, а на самого себя, задача же государства – сбалансировать спрос и предложение на рынке образования и труда. Чем больше дисбаланса в этой сфере, тем выше внутренняя конкуренция и тем нужнее репетитор – для отдельных, высококонкурентных сегментов рынка.
На практике мы уже имеем ситуацию, когда рабочих специальностей не хватает, в то время как юристов и экономистов избыток, а рынок IT-специалистов насыщается быстрыми рывками. Министерство, к слову, ведет работу по изменению политики заказа кадров, но пресса подает это так, будто вся деятельность органа управления сводится исключительно к изменению времени начала уроков для сына Президента.
И, наконец, приведем характеристику личных взглядов нашего «крупного эксперта»:

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

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

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

Скрытая коррупция и репетиторское лобби

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

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

Например, «Призыв спасти школу и учителей» состоит из 5-6 требований, где помимо общих рассуждений «как страшно жить» есть один любопытный пункт:

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

В отношении же ЦТ обыватель видит только крестики и бланки, которые «не развивают ребенка», отучают думать и так далее. На деле все сложнее: фактически ЦТ противодействует коррупции на школьном и вузовскому уровне, для чего его подготовка и проведение было отнесено к компетенции отдельной структуры.
Здесь важно не повторять чужих ошибок. Посмотрим, что происходило в Российской Федерации.

Россия имеет более оформленный рынок образовательных услуг; как следствие, репетиторское лобби там выражено сильнее. В российском интернете мы нашли как минимум два примера острых конфликтов государства и репетиторов, связанных с ЕГЭ (аналог ЦТ).

Так, в 2014 году сообщалось, что вузы по приказу Минобрнауки могут изменить список вступительных экзаменов и выбирать их сами, что тут же вызвало некое «возмущение».
«К примеру, затратив огромные деньги на репетиторов, абитуриенты теперь не могут сдать этот дополнительный предмет, потому что он исчез. Среди возмущающихся нет студентов, там есть позиция, скорее, репетиторского лобби, которое пытается сейчас использовать ситуацию, и в системе общественного мнения оспорить приказ», – отметил тогда глава департамента Минобрнауки.

А вот еще одна характерная ситуация (Москва, 2012). Речь шла об очень интересной норме – запрете репетировать в той же школе, где работает педагог.

«С введением ЕГЭ репетиторство переместилось в школы. И началось… В спальных районах столицы творится что-то весьма похожее на рэкет. Происходит это по двум схемам.
Первая — личная инициатива желающего подзаработать педагога. В этом случае ребенку — как правило, хорошисту — резко снижают оценки. За тестовый ЕГЭ, который проводится в начале учебного года, он получает мало баллов. На вопрос родителей «Что делать?» следует стандартный ответ: «Ну, нужно еще позаниматься…» Более того, нередко бывает, что родители уже нашли репетитора из вуза, учитель это понимает и, как только видит, что ученик прибавил, ему говорится, что все плохо, что ребенка учат не тому. И часто семье, которая понимает правила игры, но боится навредить чаду, приходится платить и частному педагогу, и школьному.
Второй вариант — всем заправляет директор школы или завучи. В этом случае в приказном порядке педагогов обязывают объяснить родителям «политику» и объявить дополнительные платные занятия по своему предмету. И попробуй откажись: директор современной школы — царь и бог, от него и только от него зависят зарплата учителя, часы, нагрузки, разряд
».

Хотя идея о том, что нельзя репетиторствовать на той же площадке, где работает педагог, правильная и абсолютно оправданная, норму убрали: из законопроекта «Об образовании» была изъята норма, запрещающая школьным учителям заниматься репетиторством с учащимися своих же школ.
Изначально предполагалось, что запрет избавит родителей от ситуации, когда их вынуждают доплачивать за уроки. Очевидно, сработало репетиторское лобби, причем рынок образовательных услуг одной Москвы наверняка превышает по объему весь белорусский.

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

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

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

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

Интересно, что оппозиционные сайты достаточно вяло подхватывают тему. То ли им надоело пиарить Карпенко, но, скорее, оппозиция просто не имеет интереса. Там обычно ругали белорусское образование в пику программу Калиновского и ЕГУ, но первую уже закрыли, а второй погряз в финансовых скандалах и дележке ресурсов.
Поэтому в критических материалах заинтересованы не оппозиция, а репетиторы, которые не несут никакой ответственности за публичные заявления. Если «Хартия97» продавливает политические моменты, то здесь – чисто экономическая подоплека. Фактически, это две разные команды, которым одинаково не нравится фигура Карпенко.

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

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

Андрей Лазуткин

Добавить комментарий

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