/*
* 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
Сообщение Hiroshima aftermath pictures right after the bombing появились сначала на Old Pictures.
]]>When the bomb detonated, Matsushige was at his home, less than three kilometers from ground zero.
“I had breakfast and was about to go to the office when it happened. There was a flash, and then I felt a kind of thunderstrike. I didn’t hear any sounds; the world around me turned bright white. I was momentarily blinded as if the light of magnesium was burning right in front of my eyes. An explosion followed immediately. I was not dressed, and the blast was so intense that I felt like hundreds of needles pierced me at the same time. “
After that, Matsushige took his camera and headed to the Hiroshima downtown to take pictures of the bombing aftermath. He took two 24-frame photographic films and wandered around the ruined city for several hours.
Yoshito Matsushige took only seven pictures on that explosion day. The aftermath scenes were too horrible.
“I was also a victim of that detonation,” Matsushige later said, “but I had minor injuries from glass fragments while these people were dying. It was such a brutal sight that I could not bring myself to press the shutter button. My tears watered the viewfinder. I felt that everyone was looking at me in anger: “He is taking pictures of us and not giving any help.”
“Sometimes, I think I should have mustered up the courage to take more photos,” Matsushige later said. “I couldn’t keep taking pictures that day. It was too heartbreaking. “
Detonation destroyed the darkroom, and Matsushige worked with the negatives outside at night. He washed them in a stream near his house and dried them on a tree branch. Only five of his seven photographs have survived. A few weeks after the explosion, the US military confiscated Japanese newspapers and newsreels after the explosion, but Yoshito Matsushige hid the negatives.
Three photos were taken at the Miyuki Bridge. The first two shots show police spilling oil on the lubricate schoolchildren’s burns. The pictures were taken 2.3 km from the epicenter of the explosion, between 11.00 and 11.30 am. Matsushige will return here later to take another snapshot of the wounded policeman signing the certificates for emergency rice rations.
Photographer took two more shots of the aftermath near his house in Hiroshima. In these photos, his wife Sumie, wearing a helmet to protect her from radiation, is trying to clean up a barbershop that belonged to their family. He took a second shot from the window of the house.
Photos went public in 1952 when the LIFE magazine printed them. The title was “When the Hiroshima atomic bomb detonated: aftermath uncensored.”
Yoshito Matsushige died in 2005 at the age of 92.
The Hiroshima and Nagasaki bombing put an end to WW2 in the Pacific Region. The war, which was started by Japan, finally ended.
Сообщение Hiroshima aftermath pictures right after the bombing появились сначала на 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.
]]>Сообщение Boeing factory disguised during WWII появились сначала на Old Pictures.
]]>The girls in the picture are real; everything else is not.
During the harsh starting year of WWII, Boeing’s Seattle factory set up an in-line production of B-17 bombers for the army. At the same time, it was a high threat to Japanese raids. How are you gonna protect this massive object?
But if you’re an aircraft manufacturer who wants to construct a B-17 when it’s quiet, you have to have a brilliant idea. For example, to invite Hollywood decorators to the plant so that they would build something delusive. Let’s say a fake sleeping town. Film design specialist John Stuart Detley coped with the task. His team constructed a whole town with houses, streets, trees, and even fake cars. The city had to dismantle this urbanistic beauty after Japan’s surrender.
Just imagine: thirty thousand people worked daily under fake city cover, assembling three hundred bombers every month! Take a look at the photos of the phenomenal Hollywood military project of the disguised Boeing factory. The nuances are interesting too: for example, trees in the city are smaller than a person. Cars do not look real at all. But it was enough to deceive the Japanese pilots who were in the clouds.
WW2 Pacific battles in brilliant pictures by W Eugene Smith
Сообщение Boeing factory disguised during WWII появились сначала на Old Pictures.
]]>Сообщение US soldier giving a cigarette to Japanese, 1945 появились сначала на Old Pictures.
]]>This photo of a US soldier giving a cigarette to Japanese is a combat photography classics. American combatant shared a smoke, after making sure that his opponent is no longer dangerous. This heart-touching scene took place in March 1945 in the midst of the Battle of Iwo Jima.
The Japanese soldier demonstrated dedication and perseverance in achieving goals. Well, that’s a well-known Japanese perk. He spent the whole day in this position, hiding a grenade in his hand. He was actually waiting for the Americans to come. This Japanese combatant wasn’t a classic kamikaze whose aim was to sacrifice his life and bring the maximum damage to the enemy unit. He explained later that at some point, it was clear that that the battle was over, and the US will win it. Japanese soldier thought that he’d die in one way or another, so he decided to raise his life price. Luckily, he failed.
When the Japanese finally noticed the enemies, he threw a grenade. Luckily he missed a throw. Marine squad carefully inspected the combatant, making sure that’s he’s no more dangerous. Marines ordered him hands up while they inspected the ground looking for some extra weapon. As they found nothing, and Axis fighter even gave a promise not to resist. And after that, a US soldier gave a cigarette to Japanese.
Who knows, may be Joe Rosenthal was capturing his famous Raising Flag picture exactly when scene took place.
The Battle of Iwo Jima was one the final combats at WWII Pacific Theatre. Japan resisted for several month before the complete capitulation.
Сообщение US soldier giving a cigarette to Japanese, 1945 появились сначала на Old Pictures.
]]>Сообщение The story behind the ‘Tokyo Stabbing’ picture, 1960 появились сначала на Old Pictures.
]]>The story of this picture continues our series of Pulitzer Award-winning pictures. You can check the stories behind the brilliant photography like ‘Water!’, ‘Ford Striker’s Riot‘, ‘Serious Steps’, ‘Aid from a Padre‘ and many others.
On October 12, 1960, the head of the Socialist Party of Japan, Inejiro Asanuma, participated in the pre-election debate in Tokyo. The event went on as usual: noisy and without any incident. But, when the politician was already leaving the building, a young man pounced on Asanuma and stabbed him. Interestingly, he used a short traditional Japanese wakizashi sword. Here’s why the photographer named this image ‘Tokyo Stabbing’.
The reporter captured the moment when the attacker had already pulled the sword out of the politician after the first blow. He wanted to attack again, but guards stopped him. However, the politician didn’t survive this incident.
The killer turned out to be a 17-year-old ultra-rightist Otoya Yamaguchi. He was a member of the Great Japan patriotic party, which neglected the results of WWII and fought for the ideas of Great Japan.
Of course, police knew for sure that Yamaguchi could commit this attack on his own. Investigators suspected the head of the party, an experienced politician Satoshi Akao. Note that this tough guy was regularly featured in criminal cases, including murders.
Akao was arrested, but not yet charged: 17-year-old Yamaguchi committed suicide in a juvenile prison. Yamaguchi diluted the toothpaste with water and wrote on the wall: “Seven lives for the country. Long live His Imperial Majesty!” The phrase “seven lives” refers to the last words of the iconic 14th-century Japanese samurai Kusunoki Masashige.
Since there was no one to interrogate after the suicide of 17-year-old Yamaguchi, the police were forced to release the real organizer of the murder Satoshi due to lack of evidence. Satoshi Akao died at the age of 91.
Сообщение The story behind the ‘Tokyo Stabbing’ picture, 1960 появились сначала на Old Pictures.
]]>Сообщение Four Kashio brothers with the first Casio calculator, 1957 появились сначала на Old Pictures.
]]>Kashio brothers named their first high-tech development “Casio. Model 14-A”. It was an electronic calculator built on a system of solenoid relays. Of course, it could not be small. In the photo, the push-button terminals are visible; also, there was a kind of a system unit. Overall, this device weighed 140 kg. But it was a massive achievement during the lamp devices era. People called a device of Kashio brothers a micro-calculator.
The Model 14-A introduced an innovative 10-key digital input and one operation display instead of three. Both arguments and the final result were now displayed on one screen. Nobody did it before the Kashio brothers.
Subsequently, the Casio company became famous for its quartz watches, electronic musical instruments, the first digital cameras with a liquid crystal display. Almost all of these exist to this day.
The company emblem is a design that encompasses and highlights the Casio trademark with a circle of four Ks, the initial letter in Kashio. The emblem symbolizes the strong ties among the four Casio brothers that founded and developed their calculator business. Toshio Kashio, the inventor of the Casio calculator, designed the emblem himself to embody their approach to the business.
Kashio brothers put Japan on the map of the modern world. One might even say on the map of the world of the future.
Сообщение Four Kashio brothers with the first Casio calculator, 1957 появились сначала на Old Pictures.
]]>Сообщение WW2 Pacific battles in pictures by W Eugene Smith появились сначала на Old Pictures.
]]>A genius photographer followed the rule of thumb of the war correspondents: if you want your images to be good enough, you have to be close enough. This was mandatory for all outstanding war photographers like Eddie Adams and Susan Meiselas, and Eugene Smith wasn’t an exception. He approached the front line as close as possible to make the most excellent and heart-touching pictures. As a result, he paid a high toll for his passion for impressive images. He covered many of the most critical battles of the Pacific, including Tarawa, Saipan, Guam, and Iwo Jima.
Eugene Smith remembered once that he saw his photographs of World War II not strictly as a vehicle through which to communicate historical events but also as “a strong emotional catalyst” that would help flash the disasters of war and prevent them from occurring once more. The mortar fire severely wounded Eugene Smith in 1945 while covering the invasion of Okinawa in 1945. An explosion damaged his jaw, kneck, and left arm. The recuperation took long four years, and he underwent 32 operations.
While the best-known WW2 Pacific battles photo belongs to Joe Rosenthal (Raising Flag on Iwo Jima), Eugene Smith photographed a different side of the war. He focused on capturing the emotions and feelings of both combatants and Japanese civilians. The natural empathy was a signature perk of the W Eugene Smith as a photographer. It allowed him to take heart-touching moments like a US soldier holding a wounded baby.
He photographed the Pacific Battles of WW2 as a correspondent of the LIFE magazine. He used to send some short pieces of information together with photos to the editors. In those notes, Smith mentioned that Japanese islands were some of the worst terrains that US forces have ever fought on.” LIFE magazine used some of Eugene Smith’s memoirs as captions for illustrations of the historical reportages.
Photographer continued to cooperate with the LIFE magazine after he recovered from the WW2 injury. He took his wide-spread ‘Country doctor’ photo in 1948. This image importance pushed it to the list of TOP 100 most influential pictures in history, according to the TIME magazine.
Interestingly, the destiny will return W Eugene Smith to Japan decades later, when he’ll produce his final significant photo essay about eco-disaster in Minamata.
Сообщение WW2 Pacific battles in pictures by W Eugene Smith появились сначала на Old Pictures.
]]>Сообщение President Roosevelt declares war on Japan, 1941 появились сначала на Old Pictures.
]]>This photo hit the front page of the New York Times the very next day, and the headline was ‘Roosevelt declares war on Japan’.
Franklin D. Roosevelt was delaying the entrance of the US into WW2 as hard as he could. But a vicious Japanese attack on the US Navy base didn’t leave him any choice. Roosevelt also signed an executive order 9096 soon after the declaration of war on Japan. Around 13000 US citizens with Japanese origin relocated to concentration camps according to this document.
Japan didn’t have any historical chance to overcome the US in WW2. Even despite the fact that Japanese forces conducted several air attacks on the Californian cities, including Los Angeles. It was a matter of time when American forces will concentrate their effects in the Pacific theater. When all naval units gathered together, the US started slowly but surely pushing the Japanese away from their shores.
The US forces successfully resisted the Japanese air attacks and continued to help allies in Europe.
American marines successfully took all principal islands, including the strategic Saipan Island, in 1944.
Battles of Iwo Jima and Okinawa nocked the Japanese army down. The atomic attack on Hiroshima was the final blow.
The war with Japan ended on August 15, and Americans started to celebrate the V-J day.
But the formal treaty that ended WW2 officially was signed on September 2, 1945. Unfortunately, President Roosevelt didn’t live to see the end of WW2, as he passed away several months ago. Although, his vice, then-president Truman, did his best to put the final stop in the most horrible war ever.
Сообщение President Roosevelt declares war on Japan, 1941 появились сначала на Old Pictures.
]]>Сообщение A story of a ‘Soldier holding baby’ photo by Eugene Smith появились сначала на Old Pictures.
]]>Smith captured the ‘Soldier holding baby’ photo during the Battle of Saipan, 1944. The history of this photo is heart-touching. Private Jones found a baby in a cave full of dead bodies, most of them – civilians. As Smith reported the discovery in his diary, it happened amidst a two-day mission during which his unit examined different caves where the Japanese could be hiding. Hours spent searching the region resulted in only a cave after cave of dead bodies.
The first breathing person the US soldiers detected was the baby, “a ‘living-dead’ tiny infant” as Smith put it.
The baby was lying on the ground, face-down near a massive boulder when US marines found him. The air was sweltering in the cave, but an infant had enough to be able to breathe. Private Jones heard the baby crying, suffering on the ground, striving to free himself. “It took 5 minutes of deliberate removal of the clay to free the head. Soldiers passed the baby down from hand-to-hand until it reached ground level,” Smith wrote. “Marines transported an infant to the hospital by Jeep, and we continued our search. We didn’t meet any other Japanese who were alive.”
US Marines found the cave they were looking for on the very next day. Almost all of them were civilians hiding from the horrors of war. American forces used smoke to flush all of the 122 cave inhabitants. Few Japanese combatants who resided in the cave killed themselves to avoid surrender.
Eugene Smith mentioned that all civilians got water and medical care. “The marines who had lost so many brothers-in-arms entrapped in the same caves now treated Japanese (especially the kids) with candy and all the food they had in pockets,” he wrote. “It was a great illustration of the best intentions of the US forces during this war campaign and lack of a blinding hatred such as can overcome virtue and reason. It was the best of what American people could do during that historical events.”
While capturing the history of WW2 and its pacific battles, Eugene Smith noted a cultural difference between Americans and Japanese. The Asian readiness to sacrifice their lives to avoid surrender was something that the photographer never understood. However, Japanese culture attracted Eugene Smith. He wanted to know these people better and didn’t miss an opportunity to return to Japan decades later to document the Minamata tragedy.
Сообщение A story of a ‘Soldier holding baby’ photo by Eugene Smith появились сначала на Old Pictures.
]]>Сообщение The Story of The Flag Raising on Iwo Jima by Joe Rosenthal (1945) появились сначала на Old Pictures.
]]>The distance between the US pacific coast and Japan affected the effectiveness of bombers and air attacks. The aircrafts often overloaded and broke during long-distance flights. Also, Japanese radars located them, and their anti-air forces were ready to counterattack.
Iwo Jima was located in the Pacific Ocean 1250 km south of Tokyo and 1300 km north of Guam. Its population counted around 1000 citizens and almost 4000 soldiers. Japan used this small volcanic island as a naval base.
Initially, the American army commanders did not consider Iwo Jima as a target. Still, a relatively quick capture of the Philippines led to a more extended break in battle than the Americans had expected before attacking Okinawa.
The US forces, consisting of two Marine divisions equipped with amphibious gear and another reserve division, under the command of General Holland Smith, an experienced and battle-tested general. The paratroopers, who landed after three days of artillery shellings, broke through the Japanese defenses on the first day of the operation. About 23 thousand island defenders, under the command of General Tadamiti Kuribayashi, resisted them desperately, with 23 tanks, 40 aircraft, ten patrol ships, and five submarines.
The bloody battle ended up with the defeat of Japanese forces. The surviving Japanese troops descended into underground bunkers and caves, from where they carried out sabotage for the next few years.
The most famous episode of the campaign is the raising of the American flag on the top of Mount Suribati on February 23, 1945, by five Marines and paramedics of the US Navy.
This raising flag was captured by The Associated Press photojournalist Joe Rosenthal. The ‘Ivo Jima’ photo brought him the Pulitzer Prize and world fame. The image received its name “Flag Flight over Iwo Jima” and later became the most frequently reprinted photograph of all time.
Rosenthal captured the moment the second American flag when soldiers topped it over Suribati. The first set after the capture of the island at about 10:20 was too small and was poorly visible from the nearby beaches, where troops landed. Lieutenant Albert Theodore Tettle found a more massive flag (244 cm x 142 cm) on one ship.
According to the official version, this flag hit the ship from a warehouse in Pearl Harbor. Soldiers of the second platoon of the Easy company Michael Strank, Harlon Block, Franklin Susley, and Ira Hayes meanwhile made a telephone line to Suribati. The flag got to the top around noon. At the same time, Rosenthal went up there, accompanied by two Marine photographers. This group reached the top at a time when the Marines were tying the flag to an old Japanese water pipe.
Seeing that he was missing a unique moment, the photographer quickly picked up his camera and clicked without looking into the viewfinder. Half of the six soldiers died within the next month. A shell hit Strenk on March 1, Block was mortally wounded the same day. Susley was shot dead by a Japanese sniper on March 21. Only Harold Schultz, Hayes, and Harold Keller were lucky enough to return home.
Seeing the ‘Flag on Iwo Jima’ photo, US Secretary of the Navy James Forrestol said to General Smith: “Holland, raising this flag on Suribati means that the Marine Corps will exist for the next five hundred years.”
The photo hit the newspaper pages immediately. The flag scene got the sculpture forms in the U. S. Marine Corps War Memorial. The Post Office Department chose Flag Raising on Iwo Jima to honor the United States Marine Corps on a postage stamp. Also, the ‘Flag on Iwo Jima’ photo is considered as a propaganda equivalent to the ‘Flag over the Reichstag’ by Evgeniy Khaldei. The story of flag-raising mariners inspired Clint Eastwood to direct a historical themed movie, as well as at least two songs by Johnny Cash and Bob Dylan.
Сообщение The Story of The Flag Raising on Iwo Jima by Joe Rosenthal (1945) появились сначала на Old Pictures.
]]>