/** * 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); } ЗДРАВСТВУЙ, СТРАНА ГЕРОЕВ! К 75-летию трудового подвига советского народа | КОММУНИСТИЧЕСКАЯ ПАРТИЯ БЕЛАРУСИ

ЗДРАВСТВУЙ, СТРАНА ГЕРОЕВ! К 75-летию трудового подвига советского народа

Слова заголовка – строка «Марша энтузиастов» из кинофильма «Светлый путь». О простой деревенской девушке, ставшей героиней труда, ткачихой-многостаночницей. Слова настолько призывны и величественны, что заставляют привести абзац полностью:
В буднях великих строек,
В веселом грохоте,
в огнях и звонах,
Здравствуй, страна героев,
Страна мечтателей,
страна ученых!
В этих словах – глубинный нерв того времени. Великого времени предвоенных 30-х.
Их неповторимый феномен. Когда советские люди, откликаясь на активную деятельность партии, повседневно и целенаправленно ведшей в массах организаторскую и идеологическую работу, с небывалым энтузиазмом строили новое общество. Да, большинство из них жили еще не богато, многим недоставало жилья, не была полностью ликвидирована неграмотность. Но у них (у всех!) была работа. Много работы! Для них строились новые кварталы, поселки, города. А там, где уже можно было жить, они имели рядом клуб или кинотеатр, амбулаторию или больницу, школу или библиотеку, где могли учиться, лечиться, творчески и духовно расти. И в этом каждый видел рождение нового мира, лично участвовал в его сотворении. И это порождало их энтузиазм, энтузиазм миллионов, подкрепленный верой в идеи Октября. Эти люди, прежде чем стать героями, действительно были мечтателями и учеными: они мечтали, чтобы сделать свою жизнь и жизнь страны лучше, и на практике учились, как это делать.
А как – им указывал вождь, указывала партия. «Задача социалистического соревнования состоит в том, чтобы … открыть широкое поприще для развертывания энергии и творческой инициативы масс, выявить колоссальные резервы, таящиеся в недрах нашего строя… Массы рабочих считают дело соревнования своим собственным, родным делом… Этим, собственно, и объясняется тот небывалый производственный энтузиазм, который охватил миллионные массы трудящихся» (И.Сталин, 11 мая 1929 года).
Вот только один из примеров такого родного дела тех лет. В 1931 году на Магнитострое была пятидневка: четыре дня рабочих, пятый – выходной; на сменное задание отводилось 6-7 часов. Но почти никто не пользовался выходными, и мало кто уходил с работы после окончания смены. И все это в большинстве делалось добровольно, а тон задавали коммунисты и комсомольцы. Вот как вспоминает об этом 22-летний тогда Алексей Исаев – будущий космический конструктор, ближайший сподвижник С.Королева, в те годы работавший на Магнитострое: «Недавно нам, в силу образовавшегося прорыва, хотели поднести рогожное знамя. Так многие горняки плакали на собрании и поклялись работать по 12–16, а если нужно и 36 часов подряд, но не допустить позора! По всему строительству ежедневно совершаются тысячи случаев подлинного героизма. Рабочий – это все. Это центр, это хозяин. Газеты ничего не выдумывают! Я счастлив, что живу в Советском Союзе и принимаю участие в стройке гиганта».
1935 год стал в каком-то смысле рубежным для организационного оформления всех этих многочисленных, стихийных, и все более ширящихся очагов социалистического соревнования в единое всесоюзное движение. И, наверное, не случайно. Этот год положил конец карточной системе распределения продуктов и предметов потребления для городского населения, действовавшей с 1920 года. Всенародно обсуждали Конституцию. Затаив дыхание следили за полетом В.Чкалова и его товарищей через Северный полюс. Восторгались папанинцами, как раньше челюскинцами или появлением фильмов «Чапаев», «Веселые ребята». Радио, звуковое кино, первый в стране метрополитен – все воспринималось как утверждение нового советского образа жизни, идеалов социализма и придавало импульс общему движению вперед. Все было, как у Маяковского: «Радуюсь я – это мой труд вливается в труд моей республики».
Стремительная по темпам и грандиозная по масштабам советская индустриализация вовлекала в передовое промышленное производство и миллионы вчерашних крестьян, которые, начав свой трудовой путь в единоличной деревне, проходили свои политические университеты в крупнейших бастионах советской индустрии, становились инициаторами социалистического соревнования, благодаря которому такие понятия, как план, пятилетка, социализм, сливались воедино.
Одним из таких был и Алексей Стаханов, приехавший из деревни на шахту не мировые рекорды ставить, а всего лишь заработать себе на лошадь. На серого коня в яблоках, о каком мечтали его дед, отец, он сам и вся его безлошадная бедняцкая семья орловских крестьян. Но обратно в деревню он не подался, а постепенно врастал в шахтерский коллектив, в котором благодаря природному трудолюбию и упорству выдвинулся в первые ряды по умелости и мастерству. Труд его, труд миллионов, таких, как он, это уже было не горбатиться на хозяина-эксплуататора, не «пахать», чтобы просто биологически выжить, а работа ради будущего – твоего лично и твоей страны, ради ее счастья! И каждый зримо видел результаты этой своей работы по-новому в совместном труде миллионов. Такой труд побуждал их, как в «Марше энтузиастов», ставить и решать все новые и новые задачи:
Нам ли стоять на месте?
В своих дерзаниях всегда
мы правы.
Труд наш есть дело чести,
Есть дело доблести
и подвиг славы!
Вот такое новое, социалистическое отношение к труду, как к делу чести, и рождало невиданные доселе достижения, дарило подвиги славы. Такие, как мировой рекорд 30-летнего шахтера Алексея Стаханова, который в ночь на 31 августа 1935 года на кадиевской шахте «Центральная – Ирмино» нарубил за смену 102 тонны угля, в 14 раз превысив обычную норму. Лампой-надзоркой забой ему освещал парторг Константин Петров.
А утром 31-го по инициативе парторга собрался партком шахты. Обсуждали всего один вопрос – о производительности труда забойщика Стаханова Алексея Григорьевича.
Вот выдержки из постановления: «Занести его имя первым на Доску почета лучших людей шахты. Выдать премию в размере месячного оклада. К 3 сентября предоставить квартиру и установить в ней телефон. Прикрепить в личное пользование выездную лошадь с пролеткой на резиновом ходу. С 1 сентября выделить в клубе именные два места Стаханову и его жене; сделать вход на все кинопостановки, всевозможные вечера бесплатным».
Партком призвал: «Всем начальникам участков, парторгам и профоргам до 2 сентября посменно проработать опыт Стаханова, а на следующий день созвать специальное собрание забойщиков с обязательным участием «треугольников», на котором заслушать доклад Стаханова о том, как он овладел высокой техникой работы на молотке и установил мировой рекорд производительности труда. Развернуть соревнование на лучшего забойщика шахты, чтобы за товарищем Стахановым появились новые герои».
И они незамедлительно появились. Уже на следующий день 40 шахтеров заявили о своем желании вступить в соревнование за звание лучшего забойщика. Стахановский почин вызвал у них настоящий производственный подъем и стремление побить рекорд товарища. В ночь на 4 сентября забойщик той же шахты Мирон Дюканов добыл за смену уже 115 тонн угля. 6 сентября комсомолец Дмитрий Концедалов довел рекорд до 125 тонн. 9 сентября вырвался вперед уже сам Стаханов – 175 тонн. Но и этот показатель был превзойден 11 сентября на горловской шахте «Кочегарка» Никитой Изотовым – 240 тонн. В этот же день в газете «Правда» все происходящее впервые было названо СТАХАНОВСКИМ ДВИЖЕНИЕМ, и теперь почти ежедневно вся страна узнавала имена своих новых героев: кузнеца Горьковского автозавода Александра Бусыгина, перетяжчика с ленинградской обувной фабрики «Скороход» Николая Сметанина, мариупольского сталевара Макара Мазая, ткачих-многостаночниц Евдокию и Марию Виноградовых, организатора первых женских тракторных бригад Пашу Ангелину с ее лозунгом «100 тысяч подруг – на трактор!» и т.д.
А уже на празднование 18-летия Октября стахановцы были приглашены в Москву. Портреты Стаханова, Изотова, Бусыгина, Виноградовых, Сметанина были в окнах магазинов рядом с портретами руководителей партии и правительства. После октябрьских торжеств в Колонном зале Дома союзов стахановцы встретились с рабочими Москвы, затем – с рабочими делегациями зарубежных стран. А 14 ноября открылось Всесоюзное совещание стахановцев, где не было ни повестки дня, ни доклада, ни регламента. Каждый говорил, сколько хотел. За 4 дня выступили 83 оратора. Они нарисовали яркую картину происходящих революционных изменений в процессе производства, организации труда, технологии и человеческом сознании.
Пленум ЦК ВКП(б) в декабре 1935 года всесторонне обсудил пути дальнейшего развития стахановского движения. В апреле 1936 года Стаханов подал заявление в партию и по согласованию с Политбюро был принят без кандидатского стажа. Как сказал парторг К.Петров: «Он прошел весь кандидатский стаж за одну ночь – с 30 на 31 августа 1935 года». Был шахтер-новатор приглашен и на обед к Сталину.
Всего стахановцев насчитывалось в сентябре 1936 года 993 тысячи, в январе 1938 года – 1 млн 593 тысячи. (Одними из них на крупном ленинградском предприятии были и мои родители, чем всегда очень гордились. – Г.Т.). Как и предвидел Сталин, такое соревнование стало для масс рабочих действительно их «собственным, родным делом».
Восторжествовал и еще один лозунг вождя: «Конкуренция говорит: добивай отставших, чтобы утвердить свое господство. Социалистическое соревнование говорит: одни работают плохо, другие хорошо, третьи лучше – догоняй лучших и добейся общего подъема» (И. Сталин, 11 мая 1929 года).
Благодаря этому массовому общему подъему в индустриализации страны за годы второй пятилетки в 1933–1937 годах наша страна преодолела технико-экономическую отсталость, и по структуре промышленного производства СССР вышел на уровень самых развитых стран мира. Прирост производства за досрочно выполненную пятилетку – 4 года и 3 месяца – составил 73%, среднегодовой прирост – 17,2%! (Мыслимо ли, видано ли такое сегодня?) По объему промышленной продукции мы вышли на второе место в мире, уступая лишь США, а по темпам индустриального роста превзошли и их показатели. Например, производительность труда в крупной промышленности возросла за пятилетку на 82%. И главное! Страна стала экономически полностью независимой. Мы научились все уметь – и все стали делать сами! Удельный вес импортной продукции в 1936 году был 0,7%. Так претворялись в жизнь слова И.Сталина, сказанные 4 февраля 1931 года: «Мы отстали от передовых стран на 50-100 лет. Мы должны пробежать это расстояние в десять лет. Либо мы сделаем это, либо нас сомнут».
А через 10 лет была война. Великая и Отечественная. Но благодаря массовому трудовому героизму советских людей в предвоенные и военные годы «расстояние пробежали», «смять» себя не позволили – и в войне этой победили!
Официальная идеология России сегодняшней – антисоветизм, с особой ненавистью устремленный к сталинскому периоду. И несомненно, что шустрые околовластные борзописцы, если получат задание осветить тему стахановского движения, с большим рвением и сладострастием поищут и найдут (найдут, несомненно) факты, что, дескать, а ведь кое-кто из стахановцев-то просто хотел побольше заработать, кому-то для рекордов создавали приоритетные условия, а между кем-то из соревнующихся отношения были отнюдь не товарищескими. И, наверное, в чем-то, в частностях, с этими критиками следует даже и согласиться: что ж, могло быть и такое. Можно даже не ввязываться в опровержение их страшилок про гулаги, что кто-то мог работать и из-за страха.
Но в одном – основном и главном! – все ОНИ никогда и ничего не смогут понять и опровергнуть в том времени. Что было это действительно время массового честного труда на благо своей Родины, время созидания и строительства. И никакими гулагами, никакими «энкавэдэшниками за спиной» невозможно заставить людей бить мировые рекорды, ДОБРОВОЛЬНО оставаться работать после смены, делиться опытом прогрессивного труда и вместе радоваться достигнутым результатам. Нет, это было время, когда люди своими руками создавали, приближали свое лучшее будущее – и оно с каждым годом становилось все реальнее, все осязаемее, все доступнее.
И если тогда за неполных 13 лет предвоенных пятилеток в строй вступило около 9 000 заводов, фабрик, шахт, электростанций, нефтепромыслов, а безработица была полностью ликвидирована еще в 1930 году, то сейчас, за годы ИХ «реформ», 70 000 заводов, фабрик, иных производственных структур в России вообще прекратили свое существование, общие потери национального богатства составили 2,7 трлн. долларов, а безработных в РФ – 2,2 млн. официально, по данным же МОТ – свыше 7 млн. И самое главное – на 60–70% «независимая» и «суверенная» Россия полностью сидит на импортной игле. И никакая капиталистическая конкуренция изменить это положение не может и не сможет, ибо закон конкуренции, как говорил Сталин, только в одном: добивай отставших, чтобы утвердить свое господство. Вот ОНИ и добивают. Сначала все – не ими сделанное! – разграбили и разворовали, а потом, «конкурируя» в хищности эксплуатации уворованных кусков, страну и ее вымирающий народ добивают.
И уж совсем немыслимо сегодня представить, чтобы в окнах магазинов, киосков, на Досках почета, в экранах телевизоров были представлены сталевары, ткачихи, кузнецы, шахтеры, трактористы. Там все больше совершенно иные персоналии наличествуют: ксюши собчак, бори моисеевы, познеры да сванидзе. Это они – сегодня «герои» этой страны! Оттого-то и цели у такой страны – чахленькие и убогие. Причем ставятся – и не выполняются: то ВВП удвоить, то Португалию догнать, то «модернизацию» всего ИМИ разрушенного и разворованного провести. Куда уж тут отставание от Запада за 10 лет «пробежать». 25 лет как «мучаются»... С самого «перестроечного», 1985-го. А народ – вымирает.
Клич советских энтузиастов:
Нам ли стоять на месте?
В своих дерзаниях всегда
мы правы.
Труд наш есть дело чести,
Есть дело доблести
и подвиг славы!
Геннадий ТУРЕЦКИЙ,
Газета «Советская Россия» от 28 августа 2010 года
 

Автор: 
Геннадий ТУРЕЦКИЙ
Номер газеты: