/* * Plugin Name: APCu Object Cache * Description: APCu backend for the WP Object Cache. * Based on Plugin named APCu Object Cache Backend * Plugin URI: https://wordpress.org/plugins/apcu/ * Author: Pierre Schmitz * Author URI: https://pierre-schmitz.com/ * Plugin URI: https://wordpress.org/plugins/apcu/ * * * @Authors James Dugger, Jonathan Bardo * @copyright 2017 GoDaddy Inc. 14455 N. Hayden Road Scottsdale, Arizona */ $oc_logged_in = false; foreach ( $_COOKIE as $k => $v ) { if ( preg_match( '/^comment_author|wordpress_logged_in_[a-f0-9]+|woocommerce_items_in_cart|PHPSESSID_|edd_wp_session|edd_items_in_cartcc_cart_key|ccm_token/', $k ) ) { $oc_logged_in = true; break; } } $oc_blocked_page = ( defined( 'WP_ADMIN' ) || defined( 'DOING_AJAX' ) || defined( 'XMLRPC_REQUEST' ) || 'wp-login.php' === basename( $_SERVER['SCRIPT_FILENAME'] ) ); function wpaas_is_using_apcu() { return version_compare( PHP_VERSION, '5.6.0', '>=' ) && function_exists( 'apcu_fetch' ); } if ( 'cli' !== php_sapi_name() && ! $oc_logged_in && ! $oc_blocked_page && wpaas_is_using_apcu() ) : /** * Save the transients to the DB. The explanation is a bit too long * for code. The tl;dr of it is that we don't have a single 'fast cache' * source yet (like memcached) and so some long lived items like transients * are still best cached in the db and then brought back into APC * * @param string $transient * @param mixed $value * @param int $expire * @param boolean $site = false * * @return bool */ function wpaas_save_transient( $transient, $value, $expire, $site = false ) { global $wp_object_cache, $wpdb; // The 'special' transient option names $transient_timeout = ( $site ? '_site' : '' ) . '_transient_timeout_' . $transient; $transient = ( $site ? '_site' : '' ) . '_transient_' . $transient; // Cap expiration at 24 hours to avoid littering the DB if ( $expire == 0 ) { $expire = 24 * 60 * 60; } // Save to object cache $wp_object_cache->set( $transient, $value, 'options', $expire ); $wp_object_cache->set( $transient_timeout, time() + $expire, 'options', $expire ); // Update alloptions $alloptions = $wp_object_cache->get( 'alloptions', 'options' ); $alloptions[ $transient ] = $value; $alloptions[ $transient_timeout ] = time() + $expire; $wp_object_cache->set( 'alloptions', $alloptions, 'options' ); // Use the normal update option logic if ( ! empty( $wpdb ) && $wpdb instanceof wpdb ) { $flag = $wpdb->suppress_errors; $wpdb->suppress_errors( true ); if ( $site && is_multisite() ) { $wpdb->query( $wpdb->prepare( "INSERT INTO `{$wpdb->sitemeta}` ( `option_name`, `option_value`, `autoload` ) VALUES ( %s, UNIX_TIMESTAMP( NOW() ) + %d, 'yes' ) ON DUPLICATE KEY UPDATE `option_name` = VALUES ( `option_name` ), `option_value` = VALUES ( `option_value` ), `autoload` = VALUES ( `autoload` );", $transient_timeout, $expire ) ); $wpdb->query( $wpdb->prepare( "INSERT INTO `{$wpdb->sitemeta}` ( `option_name`, `option_value`, `autoload` ) VALUES ( %s, %s, 'no' ) ON DUPLICATE KEY UPDATE `option_name` = VALUES ( `option_name` ), `option_value` = VALUES ( `option_value` ), `autoload` = VALUES ( `autoload` );", $transient, maybe_serialize( $value ) ) ); } else { $wpdb->query( $wpdb->prepare( "INSERT INTO `{$wpdb->options}` (`option_name`, `option_value`, `autoload`) VALUES ( %s, UNIX_TIMESTAMP( NOW() ) + %d, 'yes' ) ON DUPLICATE KEY UPDATE `option_name` = VALUES ( `option_name` ), `option_value` = VALUES ( `option_value` ), `autoload` = VALUES ( `autoload` );", $transient_timeout, $expire ) ); $wpdb->query( $wpdb->prepare( "INSERT INTO `{$wpdb->options}` (`option_name`, `option_value`, `autoload`) VALUES ( %s, %s, 'no' ) ON DUPLICATE KEY UPDATE `option_name` = VALUES ( `option_name` ), `option_value` = VALUES ( `option_value` ), `autoload` = VALUES ( `autoload` );", $transient, maybe_serialize( $value ) ) ); } $wpdb->suppress_errors( $flag ); } return true; } function wpaas_prune_transients() { global $wpdb; if ( ! empty( $wpdb ) && $wpdb instanceof wpdb && function_exists( 'is_main_site' ) && function_exists( 'is_main_network' ) ) { $flag = $wpdb->suppress_errors; $wpdb->suppress_errors( true ); // Lifted straight from schema.php // Deletes all expired transients. // The multi-table delete syntax is used to delete the transient record from table a, // and the corresponding transient_timeout record from table b. $time = time(); $wpdb->query( "DELETE a, b FROM $wpdb->options a, $wpdb->options b WHERE a.option_name LIKE '\_transient\_%' AND a.option_name NOT LIKE '\_transient\_timeout\_%' AND b.option_name = CONCAT( '_transient_timeout_', SUBSTRING( a.option_name, 12 ) ) AND b.option_value < $time" ); if ( is_main_site() && is_main_network() ) { $wpdb->query( "DELETE a, b FROM $wpdb->options a, $wpdb->options b WHERE a.option_name LIKE '\_site\_transient\_%' AND a.option_name NOT LIKE '\_site\_transient\_timeout\_%' AND b.option_name = CONCAT( '_site_transient_timeout_', SUBSTRING( a.option_name, 17 ) ) AND b.option_value < $time" ); } $wpdb->suppress_errors( $flag ); } } /** * If another cache was flushed or updated, sync across all servers / processes using * the database as the authority. This uses the database as the authority for timestamps * as well to avoid drift between servers. * @return void */ function wpaas_init_sync_cache() { global $wpdb; if ( empty( $wpdb ) || ! ( $wpdb instanceof wpdb ) ) { return; } $flag = $wpdb->suppress_errors; $wpdb->suppress_errors( true ); $result = $wpdb->get_results( "SELECT option_name, option_value FROM `{$wpdb->options}` WHERE option_name = 'gd_system_last_cache_flush' UNION SELECT 'current_time', UNIX_TIMESTAMP( NOW() ) AS option_value;", ARRAY_A ); $wpdb->suppress_errors( $flag ); if ( empty( $result ) ) { return; } $master_flush = false; foreach ( $result as $row ) { switch ( $row['option_name'] ) { case 'current_time' : $current_time = $row['option_value']; break; case 'gd_system_last_cache_flush' : $master_flush = $row['option_value']; break; } } $local_flush = wp_cache_get( 'gd_system_last_cache_flush' ); if ( false === $local_flush || $local_flush < $master_flush ) { wp_cache_flush( true ); wp_cache_set( 'gd_system_last_cache_flush', $current_time ); } } /** * Start default implementation of object cache */ if ( ! defined( 'WP_APC_KEY_SALT' ) ) { define( 'WP_APC_KEY_SALT', '' ); } function wp_cache_add( $key, $data, $group = '', $expire = 0 ) { global $wp_object_cache; if ( 'transient' == $group ) { wpaas_save_transient( $key, $data, $expire ); return $wp_object_cache->add( "_transient_$key", $data, 'options', $expire ); } elseif ( 'site-transient' == $group ) { wpaas_save_transient( $key, $data, $expire, true ); return $wp_object_cache->add( "_site_transient_$key", $data, 'site-options', $expire ); } else { return $wp_object_cache->add( $key, $data, $group, $expire ); } } function wp_cache_incr( $key, $n = 1, $group = '' ) { global $wp_object_cache; return $wp_object_cache->incr2( $key, $n, $group ); } function wp_cache_decr( $key, $n = 1, $group = '' ) { global $wp_object_cache; return $wp_object_cache->decr( $key, $n, $group ); } function wp_cache_close() { return true; } function wp_cache_delete( $key, $group = '' ) { global $wp_object_cache, $wpdb; if ( 'transient' == $group ) { if ( ! empty( $wpdb ) && $wpdb instanceof wpdb ) { $flag = $wpdb->suppress_errors; $wpdb->suppress_errors( true ); $wpdb->query( $wpdb->prepare( "DELETE FROM `{$wpdb->prefix}options` WHERE option_name IN ( %s, %s );", "_transient_{$key}", "_transient_timeout_{$key}" ) ); $wpdb->suppress_errors( $flag ); } $wp_object_cache->delete( "_transient_timeout_$key", 'options' ); // Update alloptions $alloptions = $wp_object_cache->get( 'alloptions', 'options' ); unset( $alloptions["_transient_$key"] ); unset( $alloptions["_transient_timeout_$key"] ); $wp_object_cache->set( 'alloptions', $alloptions, 'options' ); return $wp_object_cache->delete( "_transient_$key", 'options' ); } elseif ( 'site-transient' == $group ) { if ( ! empty( $wpdb ) && $wpdb instanceof wpdb ) { $table = $wpdb->options; if ( is_multisite() ) { $table = $wpdb->sitemeta; } $flag = $wpdb->suppress_errors; $wpdb->suppress_errors( true ); $wpdb->query( $wpdb->prepare( "DELETE FROM `{$table}` WHERE option_name IN ( %s, %s );", "_transient_{$key}", "_transient_timeout_{$key}" ) ); $wpdb->suppress_errors( $flag ); } $wp_object_cache->delete( "_transient_timeout_$key", 'site-options' ); // Update alloptions $alloptions = $wp_object_cache->get( 'alloptions', 'options' ); unset( $alloptions["_site_transient_$key"] ); unset( $alloptions["_site_transient_timeout_$key"] ); $wp_object_cache->set( 'alloptions', $alloptions, 'options' ); return $wp_object_cache->delete( "_site_transient_$key", 'site-options' ); } return $wp_object_cache->delete( $key, $group ); } function wp_cache_flush( $local_flush = false ) { global $wp_object_cache, $wpdb; if ( ! $local_flush ) { if ( ! empty( $wpdb ) && $wpdb instanceof wpdb ) { $flag = $wpdb->suppress_errors; $wpdb->suppress_errors( true ); $wpdb->query( "INSERT INTO `{$wpdb->options}` (`option_name`, `option_value`, `autoload`) VALUES ( 'gd_system_last_cache_flush', UNIX_TIMESTAMP( NOW() ), 'no' ) ON DUPLICATE KEY UPDATE `option_name` = VALUES ( `option_name` ), `option_value` = VALUES ( `option_value` ), `autoload` = VALUES ( `autoload` );" ); $wpdb->suppress_errors( $flag ); } } return $wp_object_cache->flush(); } function wp_cache_get( $key, $group = '', $force = false ) { global $wp_object_cache, $wpdb; if ( 'transient' == $group ) { $alloptions = $wp_object_cache->get( 'alloptions', 'options' ); if ( isset( $alloptions["_transient_$key"] ) && isset( $alloptions["_transient_timeout_$key"] ) && $alloptions["_transient_timeout_$key"] > time() ) { return maybe_unserialize( $alloptions["_transient_$key"] ); } $transient = $wp_object_cache->get( "_transient_$key", 'options', $force ); $timeout = $wp_object_cache->get( "_transient_timeout_$key", 'options', $force ); if ( false !== $transient && ! empty( $timeout ) && $timeout > time() ) { return maybe_unserialize( $transient ); } if ( ! empty( $wpdb ) && $wpdb instanceof wpdb ) { $flag = $wpdb->suppress_errors; $wpdb->suppress_errors( true ); $result = $wpdb->get_results( $wpdb->prepare( "SELECT option_name, option_value FROM `{$wpdb->options}` WHERE option_name IN ( %s, %s ) UNION SELECT 'current_time', UNIX_TIMESTAMP( NOW() ) AS option_value;", "_transient_{$key}", "_transient_timeout_{$key}" ), ARRAY_A ); $wpdb->suppress_errors( $flag ); if ( ! empty( $result ) ) { $transient = false; $timeout = false; $current_time = time(); foreach ( $result as $row ) { switch ( $row['option_name'] ) { case "_transient_$key" : $transient = $row['option_value']; break; case "_transient_timeout_$key" : $timeout = $row['option_value']; break; case 'current_time' : $current_time = $row['option_value']; break; } } if ( false !== $transient && ! empty( $timeout ) && $timeout > $current_time ) { return maybe_unserialize( $transient ); } } } return false; } elseif ( 'site-transient' == $group ) { $transient = $wp_object_cache->get( "_site_transient_$key", 'options', $force ); $timeout = $wp_object_cache->get( "_site_transient_timeout_$key", 'options', $force ); if ( false !== $transient && ! empty( $timeout ) && $timeout > time() ) { return maybe_unserialize( $transient ); } if ( ! empty( $wpdb ) && $wpdb instanceof wpdb ) { $table = $wpdb->options; if ( is_multisite() ) { $table = $wpdb->sitemeta; } $flag = $wpdb->suppress_errors; $wpdb->suppress_errors( true ); $result = $wpdb->get_results( $wpdb->prepare( "SELECT option_name, option_value FROM `{$table}` WHERE option_name IN ( %s, %s ) UNION SELECT 'current_time', UNIX_TIMESTAMP( NOW() ) AS option_value;", "_site_transient_{$key}", "_site_transient_timeout_{$key}" ), ARRAY_A ); $wpdb->suppress_errors( $flag ); if ( ! empty( $result ) ) { $transient = false; $timeout = false; $current_time = time(); foreach ( $result as $row ) { switch ( $row['option_name'] ) { case "_site_transient_$key" : $transient = $row['option_value']; break; case "_site_transient_timeout_$key" : $timeout = $row['option_value']; break; case 'current_time' : $current_time = $row['option_value']; break; } } if ( false !== $transient && ! empty( $timeout ) && $timeout > $current_time ) { return maybe_unserialize( $transient ); } } } return false; } else { return $wp_object_cache->get( $key, $group, $force ); } } function wp_cache_init() { global $wp_object_cache; if ( mt_rand( 1, 100 ) == 42 ) { wpaas_prune_transients(); } add_action( 'muplugins_loaded', 'wpaas_init_sync_cache' ); $wp_object_cache = new APCu_Object_Cache(); } function wp_cache_replace( $key, $data, $group = '', $expire = 0 ) { global $wp_object_cache; return $wp_object_cache->replace( $key, $data, $group, $expire ); } function wp_cache_set( $key, $data, $group = '', $expire = 0 ) { global $wp_object_cache; if ( defined( 'WP_INSTALLING' ) == false ) { if ( 'transient' == $group ) { return wpaas_save_transient( $key, $data, $expire ); } elseif ( 'site-transient' == $group ) { return wpaas_save_transient( $key, $data, $expire, true ); } else { return $wp_object_cache->set( $key, $data, $group, $expire ); } } else { return $wp_object_cache->delete( $key, $group ); } } function wp_cache_switch_to_blog( $blog_id ) { global $wp_object_cache; return $wp_object_cache->switch_to_blog( $blog_id ); } function wp_cache_add_global_groups( $groups ) { global $wp_object_cache; $wp_object_cache->add_global_groups( $groups ); } function wp_cache_add_non_persistent_groups( $groups ) { global $wp_object_cache; $wp_object_cache->add_non_persistent_groups( $groups ); } class GD_APCu_Object_Cache { private $prefix = ''; private $local_cache = array(); private $global_groups = array(); private $non_persistent_groups = array(); private $multisite = false; private $blog_prefix = ''; public function __construct() { global $table_prefix; $this->multisite = is_multisite(); $this->blog_prefix = $this->multisite ? get_current_blog_id() . ':' : ''; $this->prefix = DB_HOST . '.' . DB_NAME . '.' . $table_prefix; } private function get_group( $group ) { return empty( $group ) ? 'default' : $group; } private function get_key( $group, $key ) { if ( $this->multisite && ! isset( $this->global_groups[ $group ] ) ) { return $this->prefix . '.' . $group . '.' . $this->blog_prefix . ':' . $key; } else { return $this->prefix . '.' . $group . '.' . $key; } } public function add( $key, $data, $group = 'default', $expire = 0 ) { $group = $this->get_group( $group ); $key = $this->get_key( $group, $key ); if ( function_exists( 'wp_suspend_cache_addition' ) && wp_suspend_cache_addition() ) { return false; } if ( isset( $this->local_cache[ $group ][ $key ] ) ) { return false; } // FIXME: Somehow apcu_add does not return false if key already exists if ( ! isset( $this->non_persistent_groups[ $group ] ) && apcu_exists( $key ) ) { return false; } if ( is_object( $data ) ) { $this->local_cache[ $group ][ $key ] = clone $data; } else { $this->local_cache[ $group ][ $key ] = $data; } if ( ! isset( $this->non_persistent_groups[ $group ] ) ) { return apcu_add( $key, $data, (int) $expire ); } return true; } public function add_global_groups( $groups ) { if ( is_array( $groups ) ) { foreach ( $groups as $group ) { $this->global_groups[ $group ] = true; } } else { $this->global_groups[ $groups ] = true; } } public function add_non_persistent_groups( $groups ) { if ( is_array( $groups ) ) { foreach ( $groups as $group ) { $this->non_persistent_groups[ $group ] = true; } } else { $this->non_persistent_groups[ $groups ] = true; } } public function decr( $key, $offset = 1, $group = 'default' ) { if ( $offset < 0 ) { return $this->incr( $key, abs( $offset ), $group ); } $group = $this->get_group( $group ); $key = $this->get_key( $group, $key ); if ( isset( $this->local_cache[ $group ][ $key ] ) && $this->local_cache[ $group ][ $key ] - $offset >= 0 ) { $this->local_cache[ $group ][ $key ] -= $offset; } else { $this->local_cache[ $group ][ $key ] = 0; } if ( isset( $this->non_persistent_groups[ $group ] ) ) { return $this->local_cache[ $group ][ $key ]; } else { $value = apcu_dec( $key, $offset ); if ( $value < 0 ) { apcu_store( $key, 0 ); return 0; } return $value; } } public function delete( $key, $group = 'default', $force = false ) { $group = $this->get_group( $group ); $key = $this->get_key( $group, $key ); unset( $this->local_cache[ $group ][ $key ] ); if ( ! isset( $this->non_persistent_groups[ $group ] ) ) { return apcu_delete( $key ); } return true; } public function flush() { $this->local_cache = array(); // TODO: only clear our own entries apcu_clear_cache(); return true; } public function get( $key, $group = 'default', $force = false, &$found = null ) { $group = $this->get_group( $group ); $key = $this->get_key( $group, $key ); if ( ! $force && isset( $this->local_cache[ $group ][ $key ] ) ) { $found = true; if ( is_object( $this->local_cache[ $group ][ $key ] ) ) { return clone $this->local_cache[ $group ][ $key ]; } else { return $this->local_cache[ $group ][ $key ]; } } elseif ( isset( $this->non_persistent_groups[ $group ] ) ) { $found = false; return false; } else { $value = @apcu_fetch( $key, $found ); if ( $found ) { if ( $force ) { $this->local_cache[ $group ][ $key ] = $value; } return $value; } else { return false; } } } public function incr2( $key, $offset = 1, $group = 'default' ) { if ( $offset < 0 ) { return $this->decr( $key, abs( $offset ), $group ); } $group = $this->get_group( $group ); $key = $this->get_key( $group, $key ); if ( isset( $this->local_cache[ $group ][ $key ] ) && $this->local_cache[ $group ][ $key ] + $offset >= 0 ) { $this->local_cache[ $group ][ $key ] += $offset; } else { $this->local_cache[ $group ][ $key ] = 0; } if ( isset( $this->non_persistent_groups[ $group ] ) ) { return $this->local_cache[ $group ][ $key ]; } else if ( function_exists( 'apcu_inc' ) ) { $value = apcu_inc( $key, $offset ); if ( $value < 0 ) { apcu_store( $key, 0 ); return 0; } return $value; } return false; } public function replace( $key, $data, $group = 'default', $expire = 0 ) { $group = $this->get_group( $group ); $key = $this->get_key( $group, $key ); if ( isset( $this->non_persistent_groups[ $group ] ) ) { if ( ! isset( $this->local_cache[ $group ][ $key ] ) ) { return false; } } else { if ( ! isset( $this->local_cache[ $group ][ $key ] ) && ! apcu_exists( $key ) ) { return false; } apcu_store( $key, $data, (int) $expire ); } if ( is_object( $data ) ) { $this->local_cache[ $group ][ $key ] = clone $data; } else { $this->local_cache[ $group ][ $key ] = $data; } return true; } public function reset() { // This function is deprecated as of WordPress 3.5 // Be safe and flush the cache if this function is still used $this->flush(); } public function set( $key, $data, $group = 'default', $expire = 0 ) { $group = $this->get_group( $group ); $key = $this->get_key( $group, $key ); if ( is_object( $data ) ) { $this->local_cache[ $group ][ $key ] = clone $data; } else { $this->local_cache[ $group ][ $key ] = $data; } if ( ! isset( $this->non_persistent_groups[ $group ] ) ) { return apcu_store( $key, $data, (int) $expire ); } return true; } public function stats() { // Only implemented because the default cache class provides this. // This method is never called. echo ''; } public function switch_to_blog( $blog_id ) { $this->blog_prefix = $this->multisite ? $blog_id . ':' : ''; } } if ( function_exists( 'apcu_inc' ) ) { class APCu_Object_Cache extends GD_APCu_Object_Cache { function incr( $key, $offset = 1, $group = 'default' ) { return parent::incr2( $key, $offset, $group ); } } } else { class APCu_Object_Cache extends GD_APCu_Object_Cache { // Blank } } endif;
Warning: Cannot modify header information - headers already sent by (output started at /usr/hosting/oldpics.net/html/wp-content/object-cache.php:1) in /usr/hosting/oldpics.net/html/wp-includes/feed-rss2.php on line 8
Архивы India - Old Pictures https://oldpics.net Historical photos, stories and even more Thu, 01 Oct 2020 14:58:12 +0000 en-US hourly 1 https://wordpress.org/?v=5.9.5 https://oldpics.net/wp-content/uploads/2017/06/cropped-favicon-32x32.png Архивы India - Old Pictures https://oldpics.net 32 32 Gandhi and spinning wheel: a story behind the iconic photo https://oldpics.net/gandhi-and-spinning-wheel-a-story-behind-the-iconic-photo/ https://oldpics.net/gandhi-and-spinning-wheel-a-story-behind-the-iconic-photo/#respond Thu, 01 Oct 2020 14:58:10 +0000 https://oldpics.net/?p=6028 American photographer Margaret Bourke-White took her legendary Mahatma Gandhi and spinning wheel photo in 1946. It became a symbol of the “nonviolent...

Сообщение Gandhi and spinning wheel: a story behind the iconic photo появились сначала на Old Pictures.

]]>
Gandhi and the Spinning Wheel, Margaret Bourke-White, 1946American photographer Margaret Bourke-White took her legendary Mahatma Gandhi and spinning wheel photo in 1946. It became a symbol of the “nonviolent resistance” ideology. Later it turned out that the spinning wheel was a perfect visual component to show the lifestyle and the mindset of Gandhi.

Margaret Bourke-White was a fearless photographer. She became the first female military journalist and took pictures that are sometimes horrifying with the brutality of the events they depict. But at the same time, she was able to capture moments of peace and tranquility. Her photograph of “Gandhi and His Spinning Wheel” is a perfect illustration of her skill.

This Mahatma Gandhi photo is among the 100 most important pictures in history

The harsh time for India

1946 is a turbulent time for India. The former British colony split into independent states – Pakistan and the Indian Union. Numerous bloody clashes between Hindus and Muslims will follow, more than 500 thousand people will die. Mahatma Gandhi, who believed in the senselessness of violence, was very upset by the country’s situation. But in 1946, the parties still hoped for a more peaceful settlement of the conflict. During this time, Margaret Burke-White was on assignment for the editorial staff of LIFE magazine in India. She was working on an article ultimately titled “Leaders of India” issued on May 27, 1946.

The photographer took hundreds of pictures, including many photographs of Gandhi himself: with his family, with a spinning wheel, at prayer. A dozen pictures of the Leaders of India hit the pages of the magazine. But there was no famous Gandhi photo among them.

This picture hit the paper in June 1946, as a small image on top of an article dedicated to Gandhi’s charm, which the editorial board called “natural medicine” for the sick.

Why is the spinning wheel a symbol of Gandhi

The ‘Gandhi spinning wheel’ photograph became truly famous after the assassination of Gandhi in January 1948. LIFE magazine released an article entitled “India Lost Its Great Soul.” A shot of Gandhi with a spinning wheel took half a page over the text. The photograph served as a moving visual eulogy for this man and his ideals.

Margaret Bourke-White noted the significance of the simple spinning wheel in the photograph for Mahatma Gandhi. She wrote: “Gandhi spins every day for an hour, usually starting at 4 a.m. All members of his ashram must spin too. He and his followers encourage everyone to spin”. They even told Margaret Bourke-White to put aside the camera to spin … When she noticed that photography and spinning are both crafts, they replied seriously: “Spinning is the greater of two.” Spinning rises to the heights of the almost religious Gandhi and his followers.

The spinning wheel is almost like an icon to them. Spinning is a medicine for them, and they talk about it in terms of high poetry. “

In Burke-White’s most famous portrait of Gandhi, a note to the LIFE editors reads: “Gandhi is reading clippings — in the foreground is the spinning wheel he has just stopped using. It would be impossible to exaggerate the reverence with which Gandhi’s personal spinning wheel is kept in the ashram.”

Read more: The story of American way photo by Margarett Bourke-White

Gandhi and his spinning wheel, another angle

Gandhi reading religious texts

Gandhi reading religious texts.

Gandhi stretching during the reading

Mahatma Gandhi stretching during the reading

Gandhi and his follower

Gandhi and his follower

Another angle of the famous spinning wheel photo

Another angle of the famous spinning wheel photo

 



Сообщение Gandhi and spinning wheel: a story behind the iconic photo появились сначала на Old Pictures.

]]>
https://oldpics.net/gandhi-and-spinning-wheel-a-story-behind-the-iconic-photo/feed/ 0
Punkah Wallah: interesting facts and pictures https://oldpics.net/punkah-wallah-interesting-facts-and-pictures/ https://oldpics.net/punkah-wallah-interesting-facts-and-pictures/#respond Fri, 18 Sep 2020 10:26:46 +0000 https://oldpics.net/?p=5236 Punkah Wallah was a replacement for the air conditioners for the wealthy people hundreds of years ago. Basically, punkah is a large...

Сообщение Punkah Wallah: interesting facts and pictures появились сначала на Old Pictures.

]]>

punkah wallah at work

Punkah Wallah was a replacement for the air conditioners for the wealthy people hundreds of years ago. Basically, punkah is a large fan, while Wallah is a servant who’s moving it, usually with his legs.

Punkah Wallah seems to be the most boring job ever. Don’t forget it when complaining about our work: boring, paying little… So, from now on, when you feel that your career is not good enough, remember the Punkah Wallah.

Punkah Wallah during a short break.

Punkah Wallah during a short break. Usually, moving fans was boring but not exhausting. Colonists could afford to hire extra workers to make their job easier.

India is a homeland for Punkah Wallah

As you can imagine, India is the land of the dominating heat. This fact frustrated Victorian Era English colonialists, who had a particularly hard time due to their genetic habit to the relatively cold climate.

And since electricity was a rare beast in the 19th century, Punkah Wallah was the only air conditioning option. The cheap labor in India and your colonialist status was a plus.

The task of the fan-boys was as simple as anything boring: they had to set move giant fans – Punkahs, which were hung from the ceiling of living rooms (and sometimes entire churches or other indoor areas).

Lots of different punkahs were in use, tailored or wooden ones. I must say that wooden ones were more dangerous: the ropes that linked the punkah to the ceiling could collapse due to constant friction, and it could fall right on the gentlemen.

Punkahs could be that's large

Punkahs could be that’s large. Usually, such a massive fan was moved by three persons.

The remote control

Sometimes the Punkah Wallah could sit in the same room as the fan was pulled with their hands. But in this main photograph, taken in the 1900s, Wallahs are moving fans with legs. In this case, Punkah Wallah could stay behind the wall of the room, and the strings of the fan are pulled from the outside.

Punkah Wallah was usually deaf. Unlike ordinary servants, Punkahs could not be sent out of the room when the conversation took on a secret nature or a delicate matter – of course if the gentlemen did not want to suffer the heat.

Electricity was a Punkah’s profession killer. And this is clearly not the case when at least someone misses the extinct profession.

punkah wallah air conditioned court rooms too

Punkah air-conditioned courtrooms as well as other administrative units.

punkah wallah for respectful gentelmen

A restless punkah for respectful gentlemen

Punkah Wallah tradition in the USA

A chilling punkah was an integral part of the Southern states’ wealthy homes, but they had a different name. Slaves handled Ceiling-mounted fans. Yep, English gentlemen at least paid some pennies to deaf locals. 

Interestingly, both the wealthy men and their slaves benefited from their interactions with the fans. Masters experienced the fans’ cooling winds, insect-free time, and the occasion to showcase their money and sophistication. Even though they were consigned to labor at the fans, enslaved workers likely used their proximity to elite whites to learn “genteel” codes of behavior, while gleaning information about the plantation world and beyond.

Punkahs were used in the cathedrals too

Punkahs were used in the cathedrals too.

The most common Punkah Wallah was a  deaf boy or man that held a fan in hands.

The most common Punkah Wallah was a deaf boy or man that held a fan in his hands.

Modern Punkahs

Modern Punkahs. No human resources were used for sure.

fancy fans in wealthy indian home

A fancy fan in a wealthy Indian home.

Punah Wallah was a kind of demonstration of how wealthy the colonist is.

Fan-boy was a kind of demonstration of how wealthy the colonist is.

Сообщение Punkah Wallah: interesting facts and pictures появились сначала на Old Pictures.

]]>
https://oldpics.net/punkah-wallah-interesting-facts-and-pictures/feed/ 0
London – Calcutta: the longest bus route in history https://oldpics.net/london-calcutta-the-longest-bus-route-in-history/ https://oldpics.net/london-calcutta-the-longest-bus-route-in-history/#respond Fri, 04 Sep 2020 14:20:01 +0000 https://oldpics.net/?p=5038 This photo was taken on April 15, 1957, at Victoria Bus Station before the first trip on the longest ever bus route...

Сообщение London – Calcutta: the longest bus route in history появились сначала на Old Pictures.

]]>
London - Calcutta: the longest bus route in history

This photo was taken on April 15, 1957, at Victoria Bus Station before the first trip on the longest ever bus route in the world: London – Calcutta. 11,670 kilometers through 11 countries: England, Belgium, Germany, Austria, Yugoslavia, Bulgaria, Turkey, Iran, Afghanistan, Pakistan, India.

45 days to cover the longest bus route

The cheerful people in the picture (among them, by the way, two firefighters who emigrated from Australia) had to spend almost a month and a half on the road. Well, if they were getting to the final point of the route. Fortunately, you did not have to endure the entire journey to Calcutta. You could get off somewhere in Istanbul, giving up the vacated seat to a local passenger in a hurry to Pakistan.

Read more: All Pulitzer Prize photos (1942-1967)

The route was organized by the bus company Albert Travel. The bus was notable for its comfort. There were individual beds for sleeping, a library, and an audio library – for those who preferred to entertain themselves with music. A brochure advertising the route on the Albert Travel bus read: “Your travel home.”

An advertisement of the longest bus route in history

An advertising brochure.

This dubious pleasure was worth 145 pounds one way. Translated into modern money – 1462 pounds.

But do not rush to pack your bags. The route was discontinued in 1976.

For comparison: now the longest bus route is around 5000 kilometers from Lima (Peru) to Rio de Janeiro (Brazil).

Сообщение London – Calcutta: the longest bus route in history появились сначала на Old Pictures.

]]>
https://oldpics.net/london-calcutta-the-longest-bus-route-in-history/feed/ 0