/*
* 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
Сообщение Early color pictures of the American lifestyle in the 1920s появились сначала на Old Pictures.
]]>Nonetheless, the Society accumulated a collection of autochrome color pictures from the 1910s and 1920s with around 12,000 images.
In July 1914, National Geographic magazine published its first color photographs. They showcased the power of autochrome and changed the style of the magazine cover.
Another value of this set is its wide geography. Oldpics used to publish some bright 1920s (as well as other periods’ photographs) pictures of the large cities, like New York, which attracted many outstanding photographers. This photo set is different. There’re plenty of countryside photographs which are relatively rare finds. But those NYC-photography lovers shouldn’t worry either. Some special color shots of the Greatest city in the world are in this publication too.
This series covers different aspects of American life, culture, and magnificent landscapes. These 1920s pictures look closer to the 19th-century landscape photography of Carleton Watkins and American settler’s Solomon Butcher series. Again, these are color ones, and thus they keep some exceptional details of the early 20th-century lifestyle.
Сообщение Early color pictures of the American lifestyle in the 1920s появились сначала на Old Pictures.
]]>Сообщение Adolf Hitler trains body language – unique historical photos появились сначала на Old Pictures.
]]>Heinrich Hoffmann (also known for these Fuhrer’s WWI photos) photographed Hitler view the footage, and evaluate his own image. Here’s how we’ve got this series of pictures in which dictator appears in very strange poses. Later, Heinrich Hoffmann used these portraits in his memoirs.
The photographs look almost photoshopped. Adolf Hitler looks more like a ballroom dancer or stage actor than a ruthless dictator. But it was a fair price for polishing his speaking skills that were so important during the elections’ campaign.
Let’s note that Adolf Hitler was a skillful politician and he was ready for some bold moves to get the voters’ sympathy. For example, he organized a very special photoshoot while wearing traditional Tyrollian shorts, very popular in Bavaria. Hitler didn’t like those shorts, that looked almost ridiculous. But he knew that people will pay attention and did to gain more popularity before the elections. A strong move that, among others, allowed the Nazi party to get absolute power.
Сообщение Adolf Hitler trains body language – unique historical photos появились сначала на Old Pictures.
]]>Сообщение 15 best LIFE magazine covers появились сначала на Old Pictures.
]]>The stunning covers were one of the reasons why LIFE magazine gained its popularity. Excellent cover images emphasized the unique design and overall visual approach of this publication. Beautifully illustrated photographs accompanied any events, news, magazine reviews. LIFE’s illustrations were close to perfect, and they dominated the public imagination in the pre- and early TV era. Can you imagine that watching and reading LIFE was much more fun for Americans than watching television news in the 1940s? The best masters contributed their photographs to the magazine. Then editors selected the best of them for the LIFE magazine covers.
All photographers’ names in this list are legends for Oldpics. Leonard McCombe, J.R. Eyerman, John Bryson, W. Eugene Smith, Lennart Nilsson, Ralph Morse, Margaret Bourke-White, Ed Clark, Ralph Morse, Leonard McCombe, Philippe Halsman, Mark Shaw, Alfred Eisenstaedt, and many others. We’ve dedicated a separate publication at Oldpics to some of the most prominent photographers from this list. But all of them are genius, and we promise to cover their photography (both the best images and the stories behind the selected ones) in the future.
Сообщение 15 best LIFE magazine covers появились сначала на Old Pictures.
]]>Сообщение 64 Amazing photos by Alfred Eisenstaedt появились сначала на Old Pictures.
]]>Oldpics has covered the ‘V-J Day,’ which is one of the most remarkable photos by Alfred Eisenstadt. It also hit the list of Top 100 most important photos in history. In this publication, we’ll show you his most brilliant photos.
Alfred Eisenstaedt was born in 1898 in the city of Dirschau (then Eastern Germany, now it’s Tczew in Poland). He died at 96 and devoted more than 70 to photography. Eisenstaedt studied at the University of Berlin, joined the German Army during WWI. After the war, he sold buttons and belts in Berlin and started to freelance as a photojournalist. In 1929, he received his first photo assignment. It was the beginning of a professional career as a photojournalist: he was filming the Nobel Prize ceremony in Stockholm.
From 1929 to 1935, Eisenstadt was a staff photojournalist for the Pacific and Atlantic agency, then a part of the Associated Press. While dodging the horrors of the jew-life in Nazi Germany, he emigrated to the United States in 1935. Alfred Eisenstaedt continued his photo career in New York, working for Harper’s Bazaar, Vogue, Town and Country, and other publications. In 1936, Henry Luce hired him as one of four photographers for LIFE magazine (the other three cameramen were Margaret Burke-White, Peter Stackpole, and Thomas McAvoy). Eisenstaedt stayed with this legendary magazine for the next four decades. His photographs have appeared on the LIFE magazine covers 90 times.
Alfred Eisenstaedt was among those Europeans who pioneered using the 35mm camera in photojournalism on American publications after WWI. He was also an early advocate of natural light photography. When photographing famous people, he tried to create a relaxed atmosphere to capture natural postures and expressions: “Don’t take me too seriously with my small camera,” Eisenstaedt said. – I’m here not as a photographer. I came as a friend. “
Creating a relaxed environment was not always easy. Let’s take a photoshoot with Ernest Hemingway in his boat in 1952. While establishing those special links between genius and the photographer, the writer tore his shirt in a rage and threatened to throw Alfred Eisenstaedt overboard. The photographer recalled that shooting in Cuba in 1952 more than once. “Hemingway nearly killed me,” the photographer said.
Unlike many photojournalists of the post-war period, Alfred Eisenstadt didn’t commit to any particular type of events or geographic area. He was a generalist. And he liked to capture people and their emotions than the news. Editors appreciated his eagle eye and his talent to take good photographs of any situation or event. Eisenstadt’s skill set a perfect composition that turned his photos into the era’s memorable documents in historical and aesthetic contexts.
Сообщение 64 Amazing photos by Alfred Eisenstaedt появились сначала на Old Pictures.
]]>Сообщение Vintage pictures of samurai women, 19th century появились сначала на Old Pictures.
]]>The onna-bugeisha ethics was as uncompromising as the samurai code – bushido. Samurai women began training at the age of 12. They mastered the art of using the naginata, the yari spear, chains, ropes, and the samurai tanto dagger, rather than paying mercenaries to protect themselves, as the terrified townspeople in Akira Kurosawa’s Seven Samurai did these women trained in combat to protect communities that lacked male fighters.
Many stories about prominent onna-bugeisha date back to feudal times. Many of them refer to the medieval warrior Tomoe Gozen, who became a national hero. Her story became a base for the book Heike Monogatari, also known as the “Japanese Iliad.” Tomoe Gozen was “exceptionally beautiful” and “a surprisingly skillful archer and swordsman … she was a warrior worth thousands, ready to face a demon or God, on horseback or foot.”
By the mid-1800s, the onna-bugeisha tradition almost disappeared. But the fortitude and habits of training in women samurai families persisted. Some women participated in the Bosin Civil War and shocked the public with their exploits. Nakano Takeko was among them. She was one of the last women samurai to die a soldier’s death in 1868. She led the attacking squad and was wounded in the chest. Takeko knew that the wound was fatal, and so she asked her sister Yuko to cut off her head and bury her so that the enemy could not capture her as a trophy.
Very few portraits of women samurai from the 19th-century survived. Some pictures in this publication are just actors or geisha images. Nonetheless, they give us a vivid idea of what the legendary Japanese female warriors might have looked like.
Сообщение Vintage pictures of samurai women, 19th century появились сначала на Old Pictures.
]]>Сообщение Vintage photos of Paris in the 1890s by Emile Zola появились сначала на Old Pictures.
]]>Emile Zola took most of these photographs in Paris at the turn of the 19th and 20th centuries. He tried himself as a cameraman shortly after the 1899 World Exhibition was over. The one that brought the Eiffel Tower to Paris.
And yes, we know that Emile Zola, together with Alexandre Dumas, Guy de Maupassant, and other respected artists, signed a letter against its construction. He called on the Parisians “in the name of taste, in the name of French art, which is in danger, to protest against the construction in the heart of our capital the useless and ugly Eiffel Tower.” Nevertheless, the tower constantly appears in his photographs. Apparently, we have before us a classic case of “endure – amour.”
After returning home from exile in England, Zola again fell in love with Paris in all its manifestations. We remind you that he was in exile to avoid arrest after his scandalous letter “J’accuse …!” So Emile Zola focused his lens on random passers-by, his young wife, and two daughters, after all, on himself.
Emile Zola didn’t practice the pictorial photography genre as Leonard Misonne. He neither published his photos in the magazine of Alfred Stieglitz, who was constantly looking for the new photo talents during that historical period. Nonetheless, take a look at the selection of 25 excellent shots.
Сообщение Vintage photos of Paris in the 1890s by Emile Zola появились сначала на Old Pictures.
]]>Сообщение Flying baby photography, California, 1991 появились сначала на Old Pictures.
]]>It’s amazing how some photos become a part of pop culture. We cannot say that the Flying baby photo was taken by accident. But it wasn’t a serious staged photoshoot too, just like the picture “Tennis Girl,”, 1976. Or the ‘Cowboy’ photo became one of the most expensive pictures in the world and hit the Top 100 most important in history.
Nowadays, when we overcare our children, the Flying baby photo looks even more amazing.
But in 1991, everything was possible. Apparently, Sherri and Jeff Leeds were not shocked when photographer Gregg Epperson asked them to participate in the special photoshoot. It happened in Joshua Tree National Park in California.
Epperson wanted the parents, standing on two large stones, to throw the child from hand to hand.
And the parents enthusiastically agreed. Mr. and Mrs. Leeds is not one of those couples who sit with babies at home. On the contrary, they went with little Jordan (this is the Flying baby) on hikes.
Epperson snapped the photo and kept it in archives for four years until it was sold to the hiking apparel company Patagonia’s spring catalog. That’s how Flying baby photography became famous in 1995.
Meanwhile, Jordan grew up; now, she is about 30 years old. She stated that she was not offended by her parents to put her in danger as a child.
On the contrary, Jordan plans to take the same picture with her child. “I will hang my photo on the wall in the hallway, and next I will hang a photo with my child … I think it will be cool.”
Сообщение Flying baby photography, California, 1991 появились сначала на Old Pictures.
]]>Сообщение Sleeping on a rope in London, 1930s появились сначала на Old Pictures.
]]>Look at this photo every time your own mattress feels too hard for you.
People who like to lament about what terrible time we live in, what terrible air we breathe, and what disgusting GMO we eat, obviously, have little idea of how our ancestors lived.
We thought that these eye-grabbing pictures belong to the Victorian era. People often did some bizarre things during this period. Everything looked weird: the way people swam in the sea, visited dentists, or even smiled.
But here’s a surprise, this photograph was taken in London in the 1930s. The scene is pretty clear: people are sleeping, hanging on ropes.
This comfort cost 2 pence and was called “twopenny suspension” among the townspeople. Orwell described it in detail in his book “Pounds of Dashing in Paris and London.”
“Overnight stay in a class slightly higher than the street class. In a two-penny hanger, clients are seated on a long bench with a rope stretched in front of them, which holds the sleepers like a transverse rail of a sloping rotten hedge. At five in the morning, a man mockingly called a valet removes the rope. I myself have not been in suspensions, but Chumar spent the night there often, and when asked if it was possible to sleep in such a position at all, he replied that it’s not so bad as weaklings ringing about it – it’s better than on a bare floor. There is a similar type of refuge in Paris, only there are not two pence, but twenty-five centimes (half a penny)”.
But if you were a lucky owner of four pence you, could afford to settle in one of the hard boxes covered with tarpaulin. A solid luxury option when compared with a “two-penny suspension.”
Сообщение Sleeping on a rope in London, 1930s появились сначала на Old Pictures.
]]>Сообщение A street traffic police with a torch, London, 1935 появились сначала на Old Pictures.
]]>The first traffic light was deployed in London in 1930, at the intersection of Fleet Street. It was a primitive signal installation of three lights: red, yellow, and green. But not every intersection could count on such a technological luxury. Here’s why traffic police controlled the streets of London for many years more.
The traffic controller wore a white uniform for safety reasons. You should differ from the gray London landscape. This form was particularly relevant in the autumn and winter months when the brand heavy fog shrowds London.
But the white cloth is not enough when you manage traffic in the heart of the capital of Great Britain. Here’s why you have to use a torch. These hand-made lanterns were stationary and connected to a gas pipeline. The traffic controller opened the hatch, laid out the light, and could easily direct the movement under its protection. It’s hard not to notice a bright flame, even in the thickest fog.
This torch was in the focus of the publication in the New York Times.
The caption for the image said, “This device can be folded and hidden in a metal box recessed into the pavement.” We assume that traffic police in New York didn’t have such “traffic lights.”
Сообщение A street traffic police with a torch, London, 1935 появились сначала на Old Pictures.
]]>Сообщение Winston Churchill with a Tommy Gun, 1940 появились сначала на Old Pictures.
]]>Winston Churchill was a tough guy during his young years and during his Prime-Minister cadence (at least, the first one). So, he was an actual leader of the UK when he took a trip across the country in the summer of 1940. Churchill aimed to maintain morale in the military units. He wanted to show the servicemen, and the civilian population, that the words he said in the House of Commons on June 4 of the same 1940 were not demagoguery.
As you may remember Winston Churchill said: “We shall fight in France, we shall fight on the seas and oceans; we shall fight with growing confidence and growing strength in the air, we shall defend our Island, whatever the cost may be, we shall fight on the beaches, we shall fight on the landing grounds, we shall fight in the fields and the streets. We will never give up!” Maybe here’s why we have a picture of Winston Churchill among the Top 100 most influential photos of all the time.
It was a great speech, and Prime-Minister was looking for visual support of his words. He found one during the inspection of the port of Hartlepool. Winston Churchill picked up the legendary Tommy Gun and grinned into the lens.
The choice of weapon is not accidental. Winston Churchill perfectly knew that the British army bought thousands of Tommy Guns from the US. (However, brits discovered that the submachine gun is difficult to handle and weighs a lot, they rushed to exchange it for something more manageable.) The picture of Winston Churchill with a Tommy Gun immediately spread across the UK. It said: Look, even our leader took up arms! It soon became apparent that outside the country, the photo is no less popular…
Joseph Goebbels was the head of the NSDAP propaganda department during WW2. He liked the photo of Winston Churchill with a Tommy Gun so much that he decided to squeeze everything out of it. He removed the unnecessary background (in this case, the soldiers on the sides of the prime minister). Then Photoshoppers framed the picture in an American manner and added: “WANTED. For incitement to murder.”
The calculation was perfect. Churchill looked like a drunken American gangster with a weapon in his hands. He looked like a real outlaw.
Another version of anti-Churchill used just one-word ‘Scharfschütze.’ It means ‘sniper.’
Nazi distributed this photo of the “gangster” in Germany and the Axis countries. They also dropped copies over the territory of Great Britain during the Battle of Britain. The imported prints had the following text: “The gangster you see here is pushing you to participate in the war with women, children and the rest of the civilian population in the lead roles. This is an illegal massacre. The Hague Convention prohibits it, and we will stop it with wartime methods. Save at least your own family from her horrors!”
Сообщение Winston Churchill with a Tommy Gun, 1940 появились сначала на Old Pictures.
]]>