/*
* 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
Сообщение Rare celebrity pictures in Venice in the 1960s появились сначала на Old Pictures.
]]>These Venice pictures are the small part of the more than 300,000 negatives in the Venetian studio Cameraphoto. They have accumulated over a period spanning over sixty years.
Vittorio Pavan, a former student and now owner of the Cameraphoto studio has become the extraordinary photo archive custodian. Despite continuous and painstaking care for the safety of negatives, they deteriorate quickly and inevitably. To preserve this historical legacy, the owner of the archive launched a Kickstarter crowdfunding campaign. He plans to raise funds to digitalize the original images and preserve high-resolution copies of these excellent Venice pictures.
Oldpcis selected 26 Venice pictures from the Cameraphoto archive. Take a look at Catherine Deneuve, Sean Connery, Sophia Loren, Ernest Hemingway, Salvador Dali, Alain Delon, Claudia Cardinale, Brigitte Bardot, Jane Fonda in the streets (well, sometimes in the waters) of this old city.
Genius writer Hemingway had a special feeling for Venice. The writer participated in WWI in the Venice area. Hemingway was wounded and spent several months while recuperating after an injury.
See more photos from Italian trip of Ernest Hemingway
Сообщение Rare celebrity pictures in Venice in the 1960s появились сначала на 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.
]]>Сообщение Mt Vesuvius eruption during WWII, 1944 появились сначала на Old Pictures.
]]>The Americans tried to destroy or drive out the unfinished groups of fascists. Although nature also made its adjustments to the combat and strategic situation.
This colorized photograph shows a squadron of B-25 bombers on a combat mission on March 15, 1944. Their aim was the abbey of Monte Cassino, which became a Nazi stronghold.
Unfortunately, not all aircraft were as lucky as the one in photo: the eruption covered the US airbase near the city of Pompeii. Ashes destroyed up to 88 aircraft immediately. Mt Vesuvius eruption was the largest non-combat loss for the Allies during WWII.
Сообщение Mt Vesuvius eruption during WWII, 1944 появились сначала на Old Pictures.
]]>Сообщение Andrea Doria sinking in pictures (Pulitzer prize, 1957) появились сначала на Old Pictures.
]]>Harry A. Trask was a lucky photographer at Boston Traveler who captured the final moments of the ship. His historical pictures of sinking Andrea Doria liner received a Pulitzer Award a year later, in 1957.
Andrea Doria sinking accident shouldn’t have happened, especially given the bitter experience of the Titanic disaster. After the crash of 1912, the design of ocean liners changed forever. New vessels used enhanced waterproof partitions, the number of lifeboats was abnormous, and most importantly, radar became a mandatory device on all ocean-going ships. By 1956, about 6 million passengers were traveling between America and Europe, with no collisions or other ship accidents. The world was sure that a disaster like the tragedy of the Titanic liner would never happen again. But this was a delusion.
Many passengers crossing the Atlantic believed that America would have more opportunities than Italy. The passengers of Andria Doria shared this dream too. More than half of the passengers, totaling 1,100, were immigrants hoping to start a new life in the United States. There was the first class too: politicians, movie stars, and world-class musicians.
Sixteen hundred and fifty passengers survive the wreck. Fifty-one others are lost beneath the sea.
On July 25, 1956, the weather was beautiful over the North Atlantic. The Andrea Doria was due to arrive in New York the next morning. Passengers on the upper deck were enjoying the summer sun as the weather changed dramatically. Mist abruptly enveloped the passenger ship. It was so dense that it was difficult to see my hand. For safety reasons, Captain Calamai ordered the compartments battened down, but the ship’s speed did not slow down. The captain had to get to the port of New York the next morning. In case of delay, the carrier company must pay each passenger two dollars and fifty cents for each extra hour spent on board. The liner speed remained high at 23 knots. The passengers suspected nothing.
A festive atmosphere reigned aboard the Andrea Doria liner; nobody could imagine it will be sinking during the next ten hours.
The ship was sailing in the fog; the radar was functioning. The captain Calamai carefully peered into the mist. At 23:45, a point appeared on the radar of the Andrea Doria liner – at a distance of 12 miles at full speed 18 knots, the Swedish passenger ship Stockholm was floating. His captain Nordenson dined in his cabin, leaving the bridge under the command of a young 3rd rank officer, Johansson. Soon the Andrea Doria appeared on the Stockholm radar. The distance between the ships was inexorably decreasing – they approached one mile every one and a half minutes. Experts still do not understand why both ships changed their trajectory during the last minutes before the collision. But they did so, and a tragic accident happened soon after.
The next morning, a chartered Beechcraft Bonanza plane circles low over the abandoned liner. A Boston Traveler photographer Harry Trask was in this aircraft. As the tiny plane clips and turns, Trask becomes violently airsick. Although, the cameraman continued to press the shutter.
Photographerappeared above the sinking Andrea Doria on the airplane nine minutes before the ship disappeared entirely under the waves. His photography sequence won a Pulitzer Prize in 1957.
“I asked the pilot to fly a bit closer so I could record it with my Graphic camera. As we circled, I could see how Andrea Doria was gradually sinking below the surface. As the air from the cabins rose to the surface, the water foamed. Debris and empty lifeboats were scattered even-where. In nine minutes, it was all over.” The tardy, airsick news photographer took 16 pictures.
Harry Trask joined a good company of outstanding photographers who won the prestigious Pulitzer Award in the photography section. The Homecoming, The Water!, and Ford Strikers Riot were already in the list of winners.
After the wreck of the Italian ship Andrea Doria, people switched to flights across the Atlantic by airplane rather than by ocean liner.
Сообщение Andrea Doria sinking in pictures (Pulitzer prize, 1957) появились сначала на Old Pictures.
]]>Сообщение Umberto II, King of Italy, during the referendum of 1946 появились сначала на Old Pictures.
]]>Umberto, II was the very last king of Italy. He had a nickname ‘May King’ because he ruled only 34 days — from May 9, 1946, to June 12, 1946. It took ten days to count the votes, after what Italy became a republic.
At the same time, Umberto II ruled Italy for a bit longer period de-facto. His father, King Victor, passed the rule to his son in 1944 when Rome was freed from the German occupation. Don’t be confused, the only reason Victor allowed his son to rule, was his unpopularity.
Umberto was raised in an authoritarian and militaristic style. Parents taught him “show exaggerated respect for his father”; as in private and public Umberto always kneel down and kiss his father’s hand before speak. Even in adulthood, and he had to stand still and greet when his father entered the room. Like the other princes of Savoy before him, Umberto received a military education;
Umberto II was married to Marie José of Belgium, but it was a kind of facade for the real love of Italian Monarch. Newspapers published a lot of witnesses of the homosexual life of Umberto II in Italy. His partners’ list supposedly involved Italian screenwriter Luchino Visconti and French artist Jean Marais. Some historians claim that Benito Mussolini had a dossier on Umberto’s private life for blackmail plans. Interestingly, Adolf Hitler also knew about this sex specifics of the Italian prince. He feared that Umberto II will become the formal (the real power was in Mussolini’s hands) ruler of the Germany ally. Here’s why Furer offered several times to abolish the monarchy and get rid of the royal family.
Сообщение Umberto II, King of Italy, during the referendum of 1946 появились сначала на Old Pictures.
]]>Сообщение Hemingway travel to Italy, 1948, in pictures появились сначала на Old Pictures.
]]>Ernest Hemingway confessed once that the main reason for his trip to Italy in 1948 was the inspiration. He wrote his previous masterpiece ‘For whom the Bell Tolls, nine years before, and the writer was desperately looking for the new creativity boost. Hemingway decided to visit places where he served during WW1, where he was injured, and the hospital where he fell in love for the first time.
In 1948 Italy overcame the consequences of the Mussolini rule, removed the fascism from their political system, and elected the democratic parliament just months before. An Interesting one: Mussolini didn’t like the novels of Hemingway, and publishers didn’t dare to translate his works into Italian. This ban had no place in post-war Italy.
During a windy November, Hemingway and his fourth wife Mary stayed in the tiny hotel the Locanda Cipriani in Torcello, not far from Venice, Italy. This isolated settlement counted several dozens of citizens. This location was famous for Cipriani’s founding and three buildings—the basilica, the church of Santa Fosca, and the baptistery—that are more than a thousand years old.
Hemingway liked Torcello so much that he devoted his short essay to it. The text starts with a wink: “For we, who love the lagoon, it makes no difference if Attila sat in the chair or if he did not. I doubt if he did. It is enough for me that Cipriani sat in it.” Hemingway mentions Attila the Hun, who raided this Italian region during the fifth century. Outside the cathedral is a stone bench that is associated with Attila’s Throne.
At 49, a genius writer still was an avid hunter. Of course, Hemingway didn’t miss an opportunity to shoot a few ducks during his stay in Italy.
Also, Hemingway decided to endorse Giuseppe Cipriani, the owner of the Locanda, and Harry’s Bar in Venice. The writer mentioned him in the novel that came after Italian travels, Across the River, and into the Trees (1950). We can assume that the famous alcohol lover, Hemingway spent some good nights at this bar.
Hemingway recalled his Italian trip warmly as he got what he wanted. He met old friends and refreshed his creativity while visiting the places of his youth. He will repeat this inspiration trick at least once in the future when he’ll go to Spain for the second time.
Сообщение Hemingway travel to Italy, 1948, in pictures появились сначала на Old Pictures.
]]>Сообщение Ernest Hemingway recuperating after his injury during WW1 появились сначала на Old Pictures.
]]>Ernest Hemingway participated in WWI as a volunteer. Writer’s war history didn’t mean to be heroic as he served in Italy as an ambulance driver with the American Red Cross. In June 1918, while operating a mobile kitchen distributing chocolate and cigarettes for combatants, he was wounded by an Austrian shell explosion. “Then there was a flash, as when a blast-furnace door is twirled open, and a cry that started white and went red,” Hemingway recalled his injury in a letter home.
Hemingway ignored his wounds and transported an injured Italian officer to safety. He caught another bullet from the machine-guns while doing this heroic deed. Later Hemingway got the Silver Medal of Valor from the Italian Ministry of Defence for this historical episode.
Hemingway spent over a year in Europe but he fell in love with the Old Continent. He visited many European countries later, including Italy, Spain, and France, looking for inspiration and new characters for his books.
Hemingway remembered those events later in Men at War: “When you go to war as a kid, you have a high illusion of immortality. Other guys get killed; not you. . . . Then when you catch your bullet for the first time, you lose that illusion, and you know it can happen to you. After being severely wounded two weeks before my nineteenth birthday, I had a bad time until I figured out that nothing could happen to me that had not happened to all men before me. Whatever I had to do, men had always done. If they had done it, then I could do it too, and the best thing was not to worry about it.”
Rehabilitation took long six months in a Milan hospital. During that period, Hemingway fell in love with Agnes von Kurowsky, an American Red Cross nurse. The rumor has it that this Hospital of Milan was full of wine and cats, and injured soldiers spent their time with pets. Who knows, maybe those six months made Ernest Hemingway a famous cat-lover. This romantic event completed the transformation of Ernest Hemingway from a young boy from Oak Park, Illinois, to a different, adult man. WW1 granted him invaluable life experience that included combat and love. Changes in his character were exciting.
Сообщение Ernest Hemingway recuperating after his injury during WW1 появились сначала на Old Pictures.
]]>Сообщение Australian soldiers guard Italians and German prisoners, WW2 появились сначала на Old Pictures.
]]>The allied forces in the Northern Africa outnumbered the armies under Rommel’s command. And nonetheless, german authority tried to leverage the high battle morale in Axis forces of 1941, and attack the opposing forces everywhere. The numerous assaults ended up with defeated and imprisonment.
The major part of german troops in Africa consisted of Italians. There is little doubt that the fighting quality of the Italian army was inferior to the German army. But like in France, it was hardly the average soldier’s fault. Mussolini had dragged the country into a war it was not ready for, and it showed. The Italian army was equipped with obsolete and poorly designed equipment such as the L3 tankette and the Carcano rifle.
Then there is the issue of the Italian industry. Italy had a relatively small industrial base, with a strong peasant base. At one point in 1942, Italian divisions were at a deficit of 15,000 artillery guns, while Italian factories could only produce about 8 percent of that number in a year.
The Italian history in WW2 ended up when allied forces intervened it 1943. Mussolini quickly lost his power, and Italy managed to exit the war with much lesser damages than their allies.
Сообщение Australian soldiers guard Italians and German prisoners, WW2 появились сначала на Old Pictures.
]]>Сообщение Coca-Cola advertising made by pigeons появились сначала на Old Pictures.
]]>Coca-cola topped the marketing creativity charted many times. One of their brightest advertising creations was made in the late 1960s, in Venice. It was a time when the company introduced 12-ounce metal cans that were previously used in the army only.
Read more:
Coca-Cola bottling line, Kansas factory, circa 1958
Marketing idea itself was pretty simple: Coke’s team from the Europian branch just spread out a huge amount of birdseed in St. Mark’s Square in the shape of their logo. Birds covered the seeds immediately and it now it could be clearly seen the Coca Cola logo. Photo was taken by a local photographer and it remains a very famous piece of advertising today. Interestingly, the company’s representative tried to get the council’s consent for this event, but city authority neither approved nor declined this request. Marketers decide to complete the event no matter what as it wasn’t prohibited to feed the pigeons overall.
Сообщение Coca-Cola advertising made by pigeons появились сначала на Old Pictures.
]]>