/** * 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); } Добавить комментарий | КОММУНИСТИЧЕСКАЯ ПАРТИЯ БЕЛАРУСИ

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

100 лет ГОЭЛРО. Советскую власть и электрификацию России делали одни и те же люди

В 2020 году мы отмечаем 100 лет со дня утверждения плана ГОЭЛРО, Государственной Электрификации России, одобренного 22 декабря 1920 года VIII Всероссийским съездом Советов. Пять лет назад был проведен социологический опрос, результаты которого оказались весьма «убедительными». 50% опрошенных не смогли расшифровать аббревиатуру, только 15% смогли назвать 1920-й годом утверждения ГОЭЛРО, только 50% смогли назвать хотя бы одну стройку ГОЭЛРО. А ведь без создания и реализации ГОЭЛРО были бы невозможны довоенные пятилетки, коллективизация и индустриализация: комиссия ГОЭЛРО практически полностью вошла в состав первого Госплана, без участия этих профессионалов план первой пятилетки не оказался бы настолько удачным. Без электрификации русской деревни на создание крупного сельскохозяйственного производства ушло бы в разы больше времени, без электрификации были бы невозможно восстановление старых промышленных районов, создание и развитие новых, которые оказались жизненно необходимы стране в годы Великой Отечественной войны.

Мифы вокруг плана ГОЭЛРО

Вокруг ГОЭЛРО сложились две устойчивые группы мифов — старая и новая. Старая складывалась в годы Советской власти, причём в головах авторов мифов гулким набатом звучали строки из «Интернационала»: «Весь мир насилья мы разрушим до основанья…» Средневзвешенно эти мифы выглядят следующим образом: царская Россия вообще не имела собственной энергетической базы, план ГОЭЛРО — детище исключительно большевиков и лично В. И. Ленина. Вторую группу мифов сочиняли в годы пресловутой «перестройки», её старательно поддерживают поклонники и фанатики либеральной идеологии: роль В. И. Ленина и большевиков в разработке и реализации ГОЭЛРО ничтожна, сам план — калька с зарубежных разработок, выполнен он в итоге не был, а то, что всё-таки было реализовано, удалось исключительно благодаря иноземной помощи, поскольку никакого промышленного потенциала у царской России не было, а национальная электротехническая школа умерла непосредственно 7 ноября 1917 года.

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

То, что электротехническая школа после Октября-1917 никуда не делась, доказать просто. С 1900 года в России проходили Электротехнические съезды, на которых профессионалы обменивались новыми идеями, разрабатывали новые направления развития. До 1914 года такие съезды состоялись семь раз, а время проведения VIII съезда — 1921 год, IX съезда — 1928 год. VIII съезд проводили те же люди, которые проводили и предыдущий, — никакого «до основанья мы разрушим» в российской энергетике не было и в помине. На дореволюционных съездах всегда хватало представителей царских чиновников — руки жали, головами кивали, однако о реализации инициатив ученых и инженеров никто и не думал. Вот эта традиция после революции канула в Лету — решения обоих съездов уверенно воплощались в «железо». Удивляться этому не приходится, поскольку во главе Советского государства стоял Владимир Ильич Ленин.

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

Инженеры-энергетики и становление марксизма в России

На вопрос о том, как пришел марксизм в Россию, обычно вспоминают, что в 1883 году была создана группа «Освобождение труда» в составе Плеханова, Аксельрода, Засулич, Дейча и Игнатова, а потом «всё и завертелось». Это верно, но группа эта создана была в славном швейцарском городе под названием Женева. Кто в самой России знакомил рабочих с трудами Маркса? Одной из первых марксистских организаций стала группа Михаила Бруснева, созданная в 1889 году в Санкт-Петербурге. Лекции по марксизму рабочим читали студенты Технологического, Горного и Лесного институтов — будущие инженеры, некоторые из которых достаточно известны, а имя самого Михаила Бруснева имеется на географической карте. Организатор первых в России "маёвок" сразу после окончания учёбы, в 1892 году, получил четырёхлетний тюремный срок, а после него — 10 лет ссылки в Якутии. Там Бруснев и стал участником Русской полярной экспедиции, его именем назван один из островов в бухте Тикси. Участником группы Бруснева был и студент Технологического института Леонид Борисович Красин. Красину «с первого захода» получить высшее образование не удалось — срок ссылки он получил уже на третьем курсе. После ссылки — учёба в Харьковском «политехе», снова исключение. В 1900 году Красин участвовал в строительстве электростанций на бакинских нефтепромыслах, и только в 1901 году получил диплом Санкт-Петербургского Технического института. Активнейший участник революции 1905 года, Красин продолжал оставаться инженером, заведуя в «Обществе электрического освещения 1886 года» (далее — ОЭО) кабельной сетью российской столицы. Название компании русское, но принадлежала она братьям Сименсам, благодаря чему Красин после того, как его выслали из России, в 1908 году был принят на работу в фирму «Сименс и Шуккарт» в Берлине. Красин был действительно талантливым инженером — уже в 1909 году он стал руководителем берлинского филиала компании, а в 1911 году ему доверили ещё более высокий пост — генерального представителя в России, что и позволило ему вернуться на родину. Так что первый народный комиссар торговли и промышленности РСФСР с одной стороны, конечно — пламенный революционер, но с другой — один из лучших инженеров-энергетиков царской России.

Именно Леонид Красин в 1891 году привел в группу Бруснева ещё одного студента Технологического института — Глеба Кржижановского. Да-да, того самого автора русского перевода «Варшавянки», человека, с которым Владимир Ленин до конца жизни был «на ты», будущего главу комиссии ГОЭЛРО, первого председателя Госплана, создателя концепции Единой Энергетической Системы СССР. В 1897 году, в возрасте 25 лет Кржижановский прибыл в ссылку в Минусинский уезд, где отбывал ссылку и Ленин. Ссыльные социал-демократы находили возможность для встреч и в тех краях — в крестьянских избах, при лучинах да свечах. Три революции, две мировых войны, ГОЭЛРО и первые пятилетки, создание Энергетического института, создание ЕЭС СССР и концепции энергетического обеспечения городов. В 1956 году Кржижановский «встраивал» в состав ЕЭС СССР первую АЭС — если кто-нибудь решится написать биографию Г.М. Кржижановского не столько как революционера-марксиста, сколько как инженера-энергетика, то название «От лучины до атомных реакторов» просто напрашивается. Теперь понятно, откуда у молодого юриста В.И. Ульянова были такие неплохие знания о современном для него состоянии электроэнергетики, не так ли? Но это неполный ответ — с данной темой Владимир Ульянов познакомился не в годы ссылки, а на несколько лет раньше.

Выше приведена ставшая «классической» фотография центрального штаба «Союза борьбы за освобождение рабочего класса», созданного Лениным в 1898 году. Наверняка многие неоднократно её видели, но давайте вспомним, кто на ней запечатлен. Стоят, слева направо: Малченко Александр Леонтьевич, студент Петербургского Технического института (ПТИ). Запорожец Пётр Кузьмич, студент ПТИ. Ванеев Анатолий Александрович, студент ПТИ. Сидят, слева направо: Старков Василий Васильевич, студент ПТИ. Кржижановский Глеб Максимилианович, студент ПТИ. В центре за столиком — человек с совершенно невероятным для этой компании образованием: «юрист» Владимир Ильич Ульянов. Крайний справа — Юлий Осипович Мартов, студент физико-математического факультета Санкт-Петербургского университета.

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

План ГОЭЛРО не был неким «откровением свыше», его разработка не ограничивается считанными месяцами между февралём и декабрём 1920 года. Проработка отдельных его фрагментов шла с начала ХХ века, но ничего единого, централизованного в условиях царской России создано не было. Достижения выдающихся российских энергетиков, среди которых такие имена, как Б.С. Якоби, П.Н. Яблочков, А.Н. Лодыгин, Ф.А. Пироцкий, М.О. Доливо-Добровольский, А.Г. Столетов, А.С. Попов, не приводили к развитию отечественной энергетической промышленности — к 1913 году доля русских капиталов в производстве электротехнического оборудования едва дотягивала до 30%, да и со всем остальным дела обстояли крайне печально. Как пример: упомянутое ОЭО было монопольным поставщиком электроэнергии для Москвы, срок концессии заканчивался в 1945 году. Энергетическая школа в России развивалась, концентрируясь вокруг Петербургского Технического и Электротехнического институтов и Московского Высшего Технического училища. Но это были центры науки академического уровня, а, как известно, любая теория поверяется практикой. И вот тут — ещё одно удивительно удачное стечение обстоятельств: в начале века в Москве сложился центр именно практического электростроения, чем мы обязаны Роберту Эдуардовичу Классону, чьё имя вспоминают, к сожалению, очень редко.

Роберт Классон — инженер и марксист

Родился Роберт Классон в 1868 году в Киеве, в семье онемеченного шведа Эдуарда Эрнестовича Классона, магистра фармации, дослужившегося до чина коллежского асессора. Эдуард Эрнестович умер рано, в 46 лет, оставив своей вдове Анне старшую дочь Иоганну, сына Роберта и младшую дочь Эллу. Элла Эдуардовна прожила всего 35 лет, но, выйдя замуж за Петра Павловича Александрова, успела родить сына Анатолия. Роберт Классон, крестный отец своего племянника, вряд ли догадывался, что Анатолий Петрович Александров станет одним из основоположников нашего атомного проекта, соратником Игоря Курчатова и президентом АН СССР. В 1886 году Роберт Классон успешно поступил на механическое отделение Петербургского Технологического института. Дальше — группа Бруснева, в которой Классон вёл теоретические занятия по марксизму для рабочих и студентов, в том числе — и для слушательницы Высших женских курсов Надежды Крупской. Тем не менее, Роберт Классон учился без перерывов на тюрьмы и ссылки — его увлечение электроэнергетикой оказалось выше интереса к революционным учениям. Именно в те годы в мировой электроэнергетике шла бурная «война электрических токов» между сторонниками использования постоянного и переменного токов, и Классону накал этих споров оказался куда как ближе.

В 1891 году Роберту Классону откровенно повезло: английскому инженеру Линдлею Вильяму, чья компания по водоснабжению и сточным водам базировалась во Франкфурте-на-Майне и как раз в это время выполняла ряд заказов в России, потребовался молодой выпускник со знанием немецкого языка. Классон, получивший рекомендацию от ректора ПТИ, Николая Павловича Ильина от такой оказии отказываться не стал: он понимал, что из России ему пора было на какое-то время уехать — это был лучший способ хотя бы временно избавиться от полицейского надзора. Добравшись до Европы, инженер Классон не преминул побывать в Цюрихе, чтобы лично познакомиться с Плехановым, но куда более значительным событием для него стало участие в Международной электротехнической выставке во Франкфурте. Именно там Михаил Осипович Доливо-Добровольский впервые в истории продемонстрировал передачу переменного тока по ЛЭП с напряжением в 8500 вольт на расстоянии в целых 57 км, от Лауффена до Франкфурта. Доливо-Добровольский, изобретатель трёхфазных генератора, двигателя и трансформатора — основы электроэнергетики ХХ века, — с 1881 года вынужден был жить в Германии, поскольку за участие в студенческих волнениях ему запретили получение высшего образования в Российской империи. Демонстрация разработок Доливо-Добровольского произвела настолько глубокое впечатление на всех участников Франкфуртской выставки, что именно 1891 год принято считать датой начала всемирной электрификации. Ассистент Линдсея Роберт Классон обеспечивал измерение результатов состоявшейся электропередачи, и с того момента трёхфазные переменный ток и ЛЭП стали его «коньком». Для России, куда Классон вернулся в 1893 году, специалисты-практики такого уровня были «штучным товаром», что и стало причиной приглашения на пост руководителя электрификации Охтинских пороховых заводов в Санкт-Петербурге.

Итог работы Классона в Санкт-Петербурге — вторая в истории России ГЭС мощностью 270 кВт. Трёхфазный генератор и распределительная сеть для трехфазных двигателей станков на заводе — отличный дебют Классона как инженера-энергетика. В те же годы на его счету появилось ещё одно достижение, результат которого известен многим: в квартире молодого инженера на Охте начал работать марксистский кружок, и в 1894 году Роберт Эдуардович познакомил Надежду Крупскую «с одним волжанином» — именно так Классон представил собравшимся Владимира Ульянова. Однако в 1896 году Роберт Эдуардович попадает под плотный прессинг со стороны Жандармского управления — нескольких обысков и установления негласного надзора оказалось достаточно для того, чтобы Классон в дальнейшем сосредоточился исключительно на энергетике.

По завершении работы на Охтинских заводах Классон получил предложение, от которого не стал отказываться — ОЭО пригласило его на пост «старшего техника» сначала в своё Петербургское, а затем в Московское отделение. «Старший техник» того времени — эквивалент нынешнего «главный инженер», что соответствовало обязанностям, которые в течение следующих десятилетий выполнял Роберт Эдуардович. Он убедил руководство ОЭО в преимуществах переменного трёхфазного тока, и новым проектом Классона стала «Центральная электростанция ОЭО в Санкт-Петербурге» на Обводном канале, 76, позволившая закрыть семь электростанций на постоянном токе. Эта электростанция и сейчас «в строю», работает в составе «Центральной ТЭЦ ЭС-1» ОГК-1.

Следующее назначение Классона — старший техник в Московском отделении ОЭО, задача — обеспечение ввода в эксплуатацию электрической части электростанции на Раушской набережной. «Раушская» электростанция сегодня — ГЭС-1 им. П.Г. Смидовича, «Государственная электростанция №1». Необходимость её строительства в 1898 году была обусловлена стремительным ростом спроса на электроэнергию в Москве и невозможностью удовлетворить этот спрос за счёт электростанции «Георгиевская», работавшей на постоянном токе. Классон с поставленной задачей справился, хотя для этого ему пришлось многократно ездить в Германию, откуда поступало практически все оборудование. Кроме того, Роберт Эдуардович обнаружил ещё одну неприятную особенность — в строительстве электростанции участвовали всего два русских инженера, русских рабочих, допущенных к монтажу и налаживанию оборудования, можно было пересчитать по пальцам. Причина — в системе высшего образования России на тот момент не существовало специальности «инженер-электротехник», не было и системы подготовки квалифицированных рабочих. Классон задумался над этой проблемой ещё в Санкт-Петербурге, но на тот момент жандармское управление не разрешило ему организовать курсы для рабочих из-за его связей с марксистами. Но и в руководстве ОЭО, в планах которого было дальнейшее строительство электростанций в России, прекрасно понимали, что местные специалисты крайне необходимы. Монтаж и ввод энергоблоков в эксплуатацию могли обеспечить и приглашаемые европейские профессионалы, но вопрос самой эксплуатации таким способом решить было невозможно. В результате Классону был выдан «карт-бланш» на самостоятельный подбор и подготовку кадров, но не в Москве, а в Баку. Классон был отправлен на Кавказ в 1900 году, а Электротехнический Институт (ныне — Санкт-Петербургский государственный электротехнический институт) получил статус высшего учебного заведения в 1899-м, срок обучения в нём составлял четыре года. Спрос рождал предложение, но предложение в данном конкретном случае не успевало за спросом.

Баку — кузница российских кадров для энергетики

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

Для Классона строительство электростанций «Белый город» (ныне —Бакинская ТЭС) и «Биби-Эйбат» (сейчас в её здании — музей каменной летописи) — новая ступень карьеры инженера и рост авторитета, в том числе и как человека, способного подготовить квалифицированных специалистов. Вот некоторые имена этих специалистов — они стоят того, чтобы их вспомнить. Василий Васильевич Старков, «человек с фотографии», — арестован вместе с Лениным и Кржижановским, ссылка — в том же Минусинском уезде, в 1904 году — директор электростанции «Белый город», в 1907-м — директор электростанции «Трамвайная» в Москве. С 1921 года он — заместитель торгпреда СССР в Германии: ГОЭЛРО набирал ход, требовалось оборудование, требовался профессионал отрасли с хорошими связями. Связи эти Старкову помогал выстраивать Леонид Красин, который с 1900 года трудился в Баку, проектируя и прокладывая кабельную сеть обеих электростанций, в связи с чем, с подачи Классона, и начал сотрудничать с «Сименс и Шуккарт». В Баку у Классона появились два студента-практиканта: будущий руководитель строительства Шатурской электростанции и ДнепроГЭСа Александр Васильевич Винтер, а также Виктор Дмитриевич Кирпичников, впоследствии — активный участник разработки и реализации плана ГОЭЛРО. Готовил Классон и квалифицированных рабочих, подтягивая их до уровня, который можно считать средним техническим образованием. Именно в Баку получил новую для него профессию специалиста по трансформаторному хозяйству Сергей Яковлевич Аллилуев — Классон принял его в штат сотрудников, невзирая на то, что тот только что отбыл тюремный срок за участие в организации стачки. О том, кто такая Надежда Аллилуева, и о том, что петербургскую квартиру семьи Аллилуевых в качестве явочной использовали многие революционеры, в том числе В.И. Ленин и И.С. Сталин, известно хорошо. Вот только мало кто задумывается о вещах сугубо бытовых: отец четверых детей Сергей Аллилуев был единственным работником в семье, но и квартира была четырехкомнатной, и гимназическое образование у всех его детей имелось. Его оклад в питерском отделении ОЭО составлял 150 рублей в месяц, так что, с учётом уровня цен, Аллилуевы относились к среднему классу. Сергей Аллилуев к моменту его переезда в столицу империи за антиправительственную деятельность имел пять арестов и три срока ссылки. Тем не менее, в Петербурге он жил совершенно легально, без полицейского надзора, поскольку без Аллилуева работу электростанций и подстанций, дворовых и домовых трансформаторных пунктов, сооружаемых ОЭО в обеих столицах и их пригородах обеспечивать было бы практически невозможно.

«Электропередача» — первая районная электростанция России

Вернувшись в Москву, Роберт Классон проектировал расширение мощностей «Раушской» и строительство «Трамвайной» электростанций в Москве, а в 1911-м приступил к разработке и строительству первой в России районной электростанции, работавшей на местном топливе — торфе. «Электропередача», введенная в строй весной 1914 года, потребовала строительства ЛЭП напряжением 30 кВ для потребителей Богородского уезда Подмосковья и 70 кВ для потребителей Москвы — тоже впервые в России. Слово «впервые» для нынешней «ГРЭС-3 им. Р.Э. Классона» можно повторять многократно: металлические опоры ЛЭП, переходы ЛЭП через реки и железную дорогу, первый опыт объединённой работы двух крупных электростанций («Электропередача» с 1915 года работала параллельно с «Раушской»), первый опыт работы с торфом будущего руководителя советского Главторфа Ивана Ивановича Радченко, первая приличная зарплата для коммерческого директора станции Глеба Кржижановского, первое потребительское общество, организацией которого занимался Вацлав Вацлавович Воровский. «Электропередача» стала для российских энергетиков своеобразным «испытательным полигоном», где отрабатывались самые новые для того времени изобретения и улучшения имеющихся технологий.

И здесь же коллектив штатных инженеров, по составу, как видите, похожий на «ЦК ВКП(б) на болотах», получил ещё один опыт: первоначальная смета, составленная Классоном, увеличилась вдвое: с 6 до 12 млн. рублей. 75 вёрст от Москвы, торфяное болото на берегу озера Губожье, полнейшее отсутствие дорог и жилья — вот условия перед началом работ. Из воспоминаний Классона: «Приходилось строить не только квартиры и общежития, но и больницы, школы, склады, бани и пр. — словом, выстроить небольшой город». Город Электрогорск областного подчинения начинался как посёлок при станции, в 1915 году его население составляло уже более 4000 человек, там появились ясли и ремесленное училище, почтово-телеграфное управление, магазины, лавки и столовые, небольшая гостиница для приезжих специалистов, рабочий клуб, железнодорожная станция. Учиться инженерам-энергетикам приходилось в буквальном смысле слова на ходу, но опыт дорогого стоил: напомню, что на сами электростанции ушло не более 8% всего объёма финансирования плана ГОЭЛРО, а 92% — это комплексное развитие промышленных и сельскохозяйственных районов, которые планово строились вокруг новых источников электрогенерации.

Царские инженеры и ГОЭЛРО

Разумеется, Роберта Классона и его коллег по ОЭО сразу после революции привлекли к работе по планированию электрификации России. Осенью 1918 года по инициативе Леонида Красина был создан Центральный электротехнический совет (ЦЭС), в состав которого вошёл и Классон. Уже в январе 1919 года Классон предложил полностью готовый проект строительства Шатурской электрической станции, начальником «Шатурстроя» был назначен А.В. Винтер. Из воспоминаний Классона: «Пример ЦЭСа подтверждает, что техническая интеллигенция отнюдь не чуждается государственной работы. При этом за год в этой организации можно было заработать не более 6 000 рублей, или фунт сахара. Почему же инженеры так охотно работали в ЦЭСе? Интерес к реальной работе. Никто не мешает работе ЦЭСа, она протекает совершенно спокойно, и в этом заключается объяснение того, что она столь плодотворна».

Все прочие домыслы из разделов «шикарный продпаёк», «дуло чекистского нагана в боку» — искажение простого факта: инженеры смогли приступить к реальной работе. Классон разработал проект Шатурской электростанции в 1914 году, но он не был востребован при царском правительстве, а в Советской России приступили к его реализации, как только позволила обстановка на фронтах. Генрих Осипович Графтио проект Волховской ГЭС разработал в 1911 году, однако царскому правительству было не до него, а по распоряжению Ленина «Волховстрой» был организован уже в 1918-м, строительство началось в 1921-м. Первый проект ГЭС на Днепре был разработан ещё в 1894 году Всеволодом Евгеньевичем Тимоновым, но 20 лет не был востребован, — ДнепроГЭС стал составной частью ГОЭЛРО. Список электростанций, проекты которых были разработаны царскими инженерами, а реализованы теми же людьми, но уже именовавшимися инженерами советскими, можно продолжать и продолжать. Суть же их успеха сформулировал именно Роберт Классон: российские энергетики впервые получили возможность работать реально, без помех, именно при Советской власти. Конечно, не все царские инженеры записались в партию большевиков, но без большевиков все их проекты так бы и оставались «работой в стол».

Вот и ответ на все мифы: ГОЭЛРО был невозможен без царских инженеров, без достижений отечественной энергетической школы, но невозможен он был и без большевиков, а история распорядилась так, что среди царских инженеров большевиков было вполне достаточно. Да, царская Россия, что называется, «созрела» для рывка в своём промышленном и энергетическом развитии, все предпосылки были сформированы, но политическая система Российской империи оказалась не способна их реализовать — для этого потребовалась совсем другая система государственного строя. Рывок обеспечили большевики — это просто факт, оспаривать который нет ни малейшего смысла. Новая власть услышала российских инженеров-энергетиков, план ГОЭЛРО стал «второй программой партии», а его реализация обеспечила возможность воплощения ещё одной чеканной формулы: «Мы отстали от передовых стран на 50-100 лет. Мы должны пробежать это расстояние в 10 лет. Либо мы сделаем это, либо нас сомнут». Сталин сказал это в 1931 году — именно в том году был полностью завершено электростроительство, предусмотренное планом ГОЭЛРО.

Борис Марцинкевич

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