/*
* 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.
]]>Сообщение 50 amazing and bizarre photos появились сначала на Old Pictures.
]]>His bizarre photos selection features both a photo of Hitler in Tyrolean shorts, a dinner for soldiers with crippled faces, and a married American nine-year-old girl with her twenty-two-year-old guy.
Most of these bizarre photos are documentary, but they grab the attention of the casual viewer.
Rob Moorees describes the origin of his collection as follows. He was called to digitize the large Dutch archive “Spaarnestad” located on the outskirts of Amsterdam. As he was finding more and more amazing and bizarre photos in the archive, Rob as permission to separate them from the rest. As a result, the researcher saved up an impressive amount of unusual photos on his laptop and began to publish them on the Internet and specialized magazines.
Rob even organized few exhibitions and printed a photo album titled “Life is a strange thing.” Moorees emphasizes that he deliberately did not categorize his bizarre photos according to any criteria. He wants each of the photographs in his archive to be not just part of a series or a thematic collection, but to have an inherent personality and self-worth in the photo. This effect is enhanced because most of the photographs in the archive belong to unknown photographers. Muris compares this situation with the works of the great artists of the past. We don’t remember anything about them but their paintings, their masterpieces, their vision of the world…
Here are some more bizarre diving suits from the past: It`s not a robot, it was a diving suit in 1911
Сообщение 50 amazing and bizarre photos появились сначала на Old Pictures.
]]>Сообщение Bizarre pictures of the soviet parade of the 1920s and 1930s появились сначала на Old Pictures.
]]>After discovering some bizarre pictures of the nudists in the Soviet Moscow of the 1920s we decided to dig dipper and found some noteworthy parade pictures. We excluded all blended army parade photos and selected only fascinating images of the very special soviet reality of the 1920s and 1930s. Enjoy.
Сообщение Bizarre pictures of the soviet parade of the 1920s and 1930s появились сначала на Old Pictures.
]]>Сообщение Fiat test track on the factory roof, the 1920s появились сначала на Old Pictures.
]]>What happens when you give a person a paper, a pen, and ask him to write associations with the word “factory.” You’ll get such words as a dirty, ugly, noisy, industrial zone.
But the Italian architect Giacomo Matte-Trucco changed this associative array with just one building. He built a car factory, which Le Corbusier himself described as “one of the most impressive creations in industrial construction.” Yes, we mean the famous Fiat building with the test track on its roof.
The construction began in 1916 and took almost seven years. The factory was located in the Lingotto area of Turin, Italy. The five-story building became the largest car plant in the world. All Fiat cars (including the legendary Fiat Topolino) were assembled there.
At the last assemblage stage, the car drove to the roof of the plant, where. Each Fiat car had to drive on a roof test track until the engineers and drivers approved the mechanism is fine. The plant was both functional and stylish.
We know that Henry Ford received some overseas recognition for his car building talent. This plant creator deserved this honor as well.
Italians demonstrated their exceptional creativity again. They announced a contest to re-qualify the building in 1982. The winning project involved the reconstruction of the plant into a cultural, shopping, and entertainment center.
And the Fiat test track on the roof is still there. Moreover, it holds competitions from time to time.
Сообщение Fiat test track on the factory roof, the 1920s появились сначала на Old Pictures.
]]>Сообщение Nudists on the beach of Soviet Moscow, 1920s появились сначала на Old Pictures.
]]>Overall, you could do anything if you’ll call it the fight vs. bourgeois values. It’s hard to imagine nowadays, but that was the focus of the Bolshevik revolution in 1917. And yes, even to sunbathe naked near the Kremlin in Moscow, the Soviet capital! That’s what we see in this photo.
There was a special social group of nudists that called themselves “No shame!” The group members believed that nudity was a pure embodiment of democracy and universal equality. Somehow it corresponded with the values of the young communist state.
“No-shamers” had a habit of appearing naked in public. Sometimes they were going full-commando, sometimes they wore a red ribbon with the words “No shame!” This unusual freedom couldn’t last long in Soviet Moscow. When Joseph Stalin took power by the beginning of the 1930s, no-shamers quickly moved to the marginal corner of social life.
Take a look at the Soviet Moscow in just thirty years, in the 1950s.
Сообщение Nudists on the beach of Soviet Moscow, 1920s появились сначала на Old Pictures.
]]>Сообщение King Tut tomb seal, November 6, 1922 появились сначала на Old Pictures.
]]>The King Tut tomb and its untouched seal are one of the most excellent archeologist’s discoveries in history. On the morning of November 6, 1922, archaeologist Howard Carter sent a telegram to his colleague and boss, Lord Carnarvon. It said: “Finally, I made a surprising discovery in the Valley: a stunning tomb with intact seals; Now it awaits for your arrival. My congratulations”. It’s safe to say that these egyptologists were about to make the most magnificent historical discovery.
An unexpected discovery
The find was even more surprising because it was unexpected. By the fall of 1922, archaeologists had already lost hope of finding something new in the Valley of the Kings. And when archeologists say ‘something new’ they actually mean something very, very old). Excavation funding was running out, and they planned to scale back and leave the excavation early in the new year.
A mystery of King Tut tomb seal
A small piece of excavation area left uncleared. This area had the remaining of the huts of the XX dynasty period. This huts, course, could point to some unknown tomb, but there was little hope. Carter ordered the workers to level the shelters. The next day he decided to examine the excavation by himself. And immediately realized that they found something incredible.
He found a staircase under the destroyed huts. It was not just a tomb, but the tomb of the XVIII dynasty. Carter knew it for sure as the builders of the later dynasties made more gentle slopes.
But the best find was a seal of the tomb (later they understood that it belonged to King Tut). Prints on the seal were 3000 thousand years ago. The unbroken seals pointed the exiting fact. The tomb had not been plundered and that scientists were about to complete the most significant discovery in the history of archeology.
Сообщение King Tut tomb seal, November 6, 1922 появились сначала на Old Pictures.
]]>Сообщение Rare pictures of young Mao Zedong появились сначала на Old Pictures.
]]>Mao Zedong was born in 1893 and spent his young years in the southern province of China Hunan in the town of Shaoshan. The boy’s parents were illiterate peasants. When young Mao Zedong researched the works of the notable political personalities of the past, he abandoned Buddism and switched to atheism.
Overall early years of the young Mao Zedong remind the same period of another communist leader – Joseph Stalin. Both were raised in poverty; both were confident men looking for any chance to change their country. Both fell in love with Marxism.
The revolutionary movement of 1911 was the next tipping point in Mao’s biography. The Qing dynasty was overthrown, and he spent six months in the army serving as a signalman. It was a time when young Mao Zedong took great interest in the works of Vladimir Lenin and Communism in general.
In 1918, Mao moved to Beijing to work in the capital’s library and continue his education. He met the founder of the Chinese Communist Party Li Dazhao and joined CPC. It was also a time when young Mao met a girl his future wife (the first one) Yang Kaihui.
For the next several years, Mao toured the country. Mao concludes that changing the situation in the country will require a revolution similar to the Russian October coup.
After the victory of the Bolsheviks in Russia, Mao became a follower of the ideas of Leninism. He created resistance factions in many cities in China and became secretary of the Chinese Communist Party. At this time, the communists are actively drawing closer to the Kuomintang party, which is promoting nationalism. But after a few years, the CCP and the Kuomintang are becoming incompatible enemies.
What happened next? The road to the absolute power took long 25 years. The creation of the People’s Republic of China (PRC) in 1949 was the first successful milestone. Then the Great Leap reforms followed. Then the Great Swim and the bloody Cultural Revolution.
We may treat the Great Helmsmen differently, but nobody will doubt that his pictures deserve the placement in the list of the Top 100 most influential photos in the history of humankind.
Сообщение Rare pictures of young Mao Zedong появились сначала на Old Pictures.
]]>Сообщение Ice-ladies delivering a block of ice, 1918 появились сначала на Old Pictures.
]]>Ice delivery was found in the early 19th century by the Frederic “The Ice King” Tudor. He decided to carve the frozen water out of Massachusetts lakes and send it to the southern territories, where natural ice was as rare as hens’ teeth.
The Massachusetts ice was delivered mostly to the southern states, but it also reached Martinique and Cuba.
With each new delivery, Tudor learned to minimize melting: he packed the ice tighter, wrapped it with sawdust (instead of straw). He acted like a drug dealer offering his ice for free at the beginning. Ice was used for storing food and medicaments mainly, but it was also used for cooling drinks. And when you’ve tried a cold drink in the summertime for the time, you’ll never want to drink a warm thing again. Here’s how the business of the Frederic Tudor was growing. It was expanding so well, that he tried to deliver ice to India in 1833, 16K miles away, crossing the equator twice.
Despite the invention of the artificial ice in the second half of the 19th century in Britain, Queen Victoria continued to order Massachusetts ice.
The ice delivery industry was killed by the refrigeration invention, but it was still very popular in large US cities during the first decades of the 20th century.
Сообщение Ice-ladies delivering a block of ice, 1918 появились сначала на Old Pictures.
]]>Сообщение US WWI propaganda posters появились сначала на Old Pictures.
]]>The US entered war I in 1917 in alliance with the good Britain and France. By this time the US economy was one the largest in the world, but nevertheless the government needed to raise funds to support the military activity in Europe in all possible ways, including selling bonds to the citizens of the US. Here’s how the art of the propaganda came in help. The United States was already a leader and trendsetter in the recently discovered art of movie making and therefore the new profession of economic advertising. So it was just a matter of time when such effective newly discovered technologies will become an instrument in the shaping of the American people’s minds and therefore the altering of popular opinion into a pro-war position. The idea of participating in the war ‘over there’ had to be planted into citizen’s minds and result into recruitment to the army itself or funding the war activities with their dollars.
The visual part of this propaganda consisted mainly of posters. The simple attention grabbing slogan and the self speaking illustration served well, convincing people to support the army. They might be pasted on the edges of buildings, put within the windows of homes, tacked up in workplaces, and resized to seem above car windows and in magazines.
In 1917 the U.S. government’s public information committee formed a Division of Pictorial Publicity, and their main goal was to use the advertising techniques in messaging the war news. The committee, headed by former investigative journalist George Creel, emphasised the message that America’s involvement within the war was entirely necessary in achieving the salvation of Europe from the German and enemy forces.
In his book titled “How we Advertised America,” Creel admitted that the committee was called into existence to form WWI a fight that might be a “verdict for mankind”. He called the committee a voice that was created to plead the justice of America’s cause before the jury of popular opinion . Creel also refers to the committee as a “vast enterprise in salesmanship” and “the world’s greatest adventure in advertising”. Needless to say that the committee’s message resonated deep within every American community and also served as a corporation liable for carrying the complete message of yank ideals to each corner of the civilized globe. The isolationism that was once popular across the US public opinion was replaced with understanding of the importance of the events that took place in Europe and necessity of the US government to participate in them.
142 years young and still strong Uncle Sam is going to war
Сообщение US WWI propaganda posters появились сначала на Old Pictures.
]]>Сообщение Retro Christmas decorations 1890s – 1960s появились сначала на Old Pictures.
]]>Сообщение Retro Christmas decorations 1890s – 1960s появились сначала на Old Pictures.
]]>