Implements an image recognition captcha.

"; break; case 'admin/modules#description': case 'admin/modules/textimage': case 'admin/textimage': $output = t('Implements an image recognition captcha.'); break; } return $output; } function textimage_captchachallenge(&$form) { $form['captcha_response'] = array ( '#type' => 'textfield', '#title' => t('Captcha Validation'), '#default_value' => '', '#required' => TRUE, '#validate' => array('_captcha_validate' => array()), '#description' => t('Please type in the letters/numbers that are shown in the image above.'), '#prefix' => 'Captcha Image: you will need to recognize the text in it.', ); return $form; } function textimage_captchavalidate(&$captcha_word, &$correct) { $captcha_word = drupal_strtolower($captcha_word); if (($_SESSION['captcha'] != '') && $captcha_word == $_SESSION['captcha']) { $correct = true; } else { $correct = false; form_set_error('captcha_response', t('The image verification code you entered is incorrect.')); } } /** * Implementation of hook_menu(). */ function textimage_menu($may_cache) { $items = array(); $suffix = ''; if (arg(2)!=null) $suffix='/'.arg(2); $items[] = array( 'path' => '_textimage/image'.$suffix, 'title' => t('textimage'), 'callback' => '_textimage_image', 'access' => user_access('access textimages'), 'type' => MENU_CALLBACK ); return $items; } function textimage_perm() { return array('access textimages'); } function textimage_settings() { $fonts_path = variable_get("textimage_fonts_path", ""); $images_path = variable_get("textimage_images_path", ""); //check for GD if (!function_exists(imagecreate)) drupal_set_message(t('Image library not available. Textimage needs the GD library extension to be installed. Please install GD.')); //check for TTF support elseif (!function_exists(imagettftext)) drupal_set_message(t('Your image library does not seem to have TrueType font support. Textimage will work, but will use the default inbuilt font.'),'status'); //check for valid font path elseif ($fonts_path!="" && !is_dir($fonts_path)) drupal_set_message(t('The current font path is invalid. The default font will be used.')); //check for valid image path if ($images_path!="" && !is_dir($images_path)) drupal_set_message(t('The current images path is invalid. No images will be used.')); //Fonts settings $form['fonts'] = array( '#type' => 'fieldset', '#title' => t('Fonts settings'), '#collapsible' => TRUE, '#collapsed' => FALSE ); $form['fonts']['textimage_use_only_upper'] = array( '#type' => 'checkbox', '#title' => t('Use only Uppercase'), '#default_value' => variable_get('textimage_use_only_upper',0) ); $form['fonts']['textimage_fonts_path'] = array( '#type' => 'textfield', '#title' => t('TrueType Fonts Path'), '#default_value' => $fonts_path, '#size' => 30, '#maxlength' => 255, '#description' => t('Location of the directory where the Truetype (.ttf) fonts are stored. If you do not provide any fonts, the module will use the default font for text. Relative paths will be resolved relative to the Drupal installation directory.'), ); $form['fonts']['textimage_font_size'] = array( '#type' => 'textfield', '#title' => t('Font Size'), '#default_value' => variable_get('textimage_font_size',24), '#size' => 5, '#maxlength' => 2, '#description' => t('Font size of Captcha text (in pixels).'), '#validate' => array("_textimage_number_validate" => array("textimage_font_size")), ); $form['fonts']['textimage_char_spacing_max'] = array( '#type' => 'textfield', '#title' => t('Character Spacing'), '#default_value' => variable_get('textimage_char_spacing_max',10), '#size' => 5, '#maxlength' => 4, '#description' => t('Sets the kerning between letters in Captcha. Higher numbers indicate more spacing.'), '#validate' => array("_textimage_number_validate" => array("textimage_char_spacing_max")), ); $form['fonts']['textimage_char_jiggle_amount'] = array( '#type' => 'textfield', '#title' => t('Character Jiggle'), '#default_value' => variable_get('textimage_char_jiggle_amount',5), '#size' => 5, '#maxlength' => 2, '#description' => t('Sets the amount of up and down movement in the Captcha letters. Higher numbers indicate more jiggling.'), '#validate' => array("_textimage_number_validate" => array("textimage_char_jiggle_amount")), ); $form['fonts']['textimage_char_rotate_amount'] = array( '#type' => 'textfield', '#title' => t('Character Rotation'), '#default_value' => variable_get('textimage_char_rotate_amount',5), '#size' => 5, '#maxlength' => 2, '#description' => t('Sets the amount of rotation in the Captcha letters (in degrees, only works with non-default fonts).'), '#validate' => array("_textimage_number_validate" => array("textimage_char_rotate_amount")), ); $form['fonts']['textimage_char_size_amount'] = array( '#type' => 'textfield', '#title' => t('Character Size Adjustment'), '#default_value' => variable_get('textimage_char_size_amount',2), '#size' => 5, '#maxlength' => 2, '#description' => t('Sets the amount of variation in size between the different letters in the Captcha (in pixels).'), '#validate' => array("_textimage_number_validate" => array("textimage_char_size_amount")), ); //Image settings $form['images'] = array( '#type' => 'fieldset', '#title' => t('Image settings'), '#collapsible' => TRUE, '#collapsed' => FALSE ); $form['images']['textimage_images_path'] = array( '#type' => 'textfield', '#title' => t('Background Images Path'), '#default_value' => $images_path, '#size' => 30, '#maxlength' => 255, '#description' => t('Location of the directory where the background images are stored. If you do not provide a directory, solid colors will be used. Relative paths will be resolved relative to the Drupal installation directory.'), ); $form['images']['textimage_image_noise'] = array( '#type' => 'textfield', '#title' => t('Image Noise (pixels)'), '#default_value' => variable_get('textimage_image_noise',4), '#size' => 5, '#maxlength' => 4, '#description' => t('Sets the amount of noise (random pixels) in the Captcha image. Higher numbers indicate more noise.'), '#validate' => array("_textimage_number_validate" => array("textimage_image_noise")), ); $form['images']['textimage_image_lines'] = array( '#type' => 'textfield', '#title' => t('Image Noise (lines)'), '#default_value' => variable_get('textimage_image_lines',4), '#size' => 5, '#maxlength' => 4, '#description' => t('Sets the amount of noise (random lines) in the Captcha image. Higher numbers indicate more noise.'), '#validate' => array("_textimage_number_validate" => array("textimage_image_lines")), ); $form['images']['textimage_image_margin'] = array( '#type' => 'textfield', '#title' => t('Image Margin'), '#default_value' => variable_get('textimage_image_margin',10), '#size' => 5, '#maxlength' => 4, '#description' => t('Set a distance between the Captcha letters and the edges of the image.'), '#validate' => array("_textimage_number_validate" => array("textimage_image_margin")), ); $form['info'] = array( '#type' => 'fieldset', '#title' => t('Image and font information'), '#collapsible' => TRUE, '#collapsed' => FALSE ); if (isset($fonts_path)) { $imagefontinfo .= t('Number of fonts found: ').count(_textimage_font_list()); } if (isset($images_path)) { $imagefontinfo .= '
'.t('Number of background images found: ').count(_textimage_image_list()); } $gdinfo = gd_info(); $imagefontinfo .= '
'.t('GD Version: ').$gdinfo["GD Version"]; $imagefontinfo .= '
'.t(' FreeType Support: '); $imagefontinfo .= ($gdinfo["FreeType Support"]==true) ? 'True' : 'False'; $imagefontinfo .= '
'; $form['info']['captcha_info'] = array ( '#type' => 'item', '#value' => $imagefontinfo, ); return $form; } function textimage_settings_form_validate ($form_id,$form) { //check for valid font path if ($form['textimage_fonts_path'] !="" && !is_dir($form['textimage_fonts_path'])) form_set_error('textimage_fonts_path', t('The entered font path is invalid')); //check for valid image path if ($form['textimage_images_path'] !="" && !is_dir($form['textimage_images_path'])) form_set_error('textimage_images_path', t('The entered image path is invalid')); } function _textimage_number_validate ($field,$fieldName) { if (!is_numeric($field['#value'])) { form_set_error($fieldName,t("The value for")." ".t($field['#title'])." ".t("must be a number")); } } /** * Prints an image containing a textimage code. */ function _textimage_image() { //if we don't have GD2 functions, we can't generate the image if (!function_exists('imagecreatetruecolor')) return; // Set headers header('Expires: Mon, 01 Jan 1997 05:00:00 GMT'); header('Cache-Control: no-store, no-cache, must-revalidate'); header('Cache-Control: post-check=0, pre-check=0', false); header('Pragma: no-cache'); header('Content-type: image/png'); $string = _textimage_code(); // Get truetype font list $fonts = _textimage_font_list(); // Get the background images list $images = _textimage_image_list(); // Randomization amounts: $charSpacingMax = variable_get('textimage_char_spacing_max',10); // Letter spacing max (pixels) $charSpacingMin = max($charSpacingMax*.5,0); // Letter spacing minimum (pixels) $charJiggleAmount = variable_get('textimage_char_jiggle_amount',5); // Up and down randomization (pixels) $charRotateAmount = variable_get('textimage_char_rotate_amount',5); // Character rotation amount (degrees) $charSizeAmount = variable_get('textimage_char_size_amount',2); // Character size amount (pixels) $imageRotateAmount = variable_get('captcha_image_rotate_amount',12); // Image rotation amount (degrees) // Static amounts: $charInitialSize = variable_get('textimage_font_size',24); // Initial Font $imageNoise = variable_get('textimage_image_noise',4); // Amount of noise added to image $imageLines = variable_get('textimage_image_lines',4); // Amount of noise added to image $imageMargin = variable_get('textimage_image_margin',10); // Margin around image (pixels) // write text using a truetype font if (function_exists(imagettftext) && count($fonts) > 0) { // Initialize variables for the loop $characterDetails = array(); // contains the final info about each character // Build a list of character settings for the captcha string for ($i=0;$i $charSize, "angle" => $charAngle, "x" => $x, "y" => $y, "color" => $foreground, "font" => $font, "char" => $char ); // Increment the image size $imageWidth = $x + $charWidth; $imageHeight = max($imageHeight,$y+$charJiggleAmount); } // Create the image based off the string length and margin if (count($images) > 0) { // We're going to be using an image, and need a tranparent background to start with $im = _textimage_create_transparent_image($imageWidth+2*$imageMargin, $imageHeight+2*$imageMargin); $noisecolor = imagecolorallocatealpha($im, 0, 0, 0, 127); } else { // Just make a plain-jane color brackground $im = imagecreatetruecolor($imageWidth+2*$imageMargin, $imageHeight+2*$imageMargin); $background = imagecolorallocate($im, rand(180, 250), rand(180, 250), rand(180, 250)); $noisecolor = $background; imagefill($im, 0, 0, $background); } // Specify colors to be used in the image $foreground = imagecolorallocate($im, rand(0, 80), rand(0, 80), rand(0, 80)); foreach($characterDetails as $char) { // draw character imagettftext($im,$char['size'],$char['angle'],$char['x']+$imageMargin,$char['y']+$imageMargin,$foreground,$char['font'],$char['char']); } } else { // write text using a built-in font $x = 0; $y = 0; $imageWidth = 60 + drupal_strlen($string)*$charSpacingMax*.35; $imageHeight = 30 + $charJiggleAmount; // Create the image if (count($images) > 0 && function_exists(imagecolorallocatealpha)) { // We're going to be using an image, and need a tranparent background to start with $im = _textimage_create_transparent_image($imageWidth, $imageHeight); $noisecolor = imagecolorallocatealpha($im, 0, 0, 0, 127); } else { // Just make a plain-jane color brackground $im = imagecreatetruecolor($imageWidth, $imageHeight); $background = imagecolorallocate($im, rand(180, 250), rand(180, 250), rand(180, 250)); $noisecolor = $background; imagefill($im, 0, 0, $background); } // Add the text for ($i=0;$i 0) { // Prepare a larger image with a background image $im2 = _textimage_create_transparent_image($imageWidth, $imageHeight); } else { // Prepare a larger image with a solid color $im2 = imagecreatetruecolor($imageWidth, $imageHeight); imagefill($im2, 0, 0, $background); } $result = imagecopyresampled ($im2, $im, $imageMargin, $imageMargin, 0, 0, $imageWidth, $imageHeight, imagesx($im), imagesy($im)); $im = $im2; } // strikethrough imageline($im, rand(0, 120), rand(0, 120), rand(0, 120), rand(0, 120), $foreground); // Add Noise for ($x=0; $x<$imageWidth; $x++) { for ($row=0; $row<$imageNoise;$row++) { $y = rand(0,$imageHeight); imagesetpixel($im, $x, $y, $noisecolor); } } // Add Lines and Ellipses for ($x=0; $x<$imageLines;$x++) { imageline($im, rand(0, $imageWidth), rand(0, $imageHeight), rand(0, $imageWidth), rand(0, $imageHeight), $noisecolor); imageellipse($im, rand(0, $imageWidth), rand(0, $imageHeight), rand(0, $imageWidth), rand(0, $imageHeight), $noisecolor); } // Fill image with a random background image if available if (count($images) > 0) { $image = $images[rand(0,count($images)-1)]; _textimage_apply_background_image($im,$image); } //output to browser imagepng($im); imagedestroy($im); } /** * Returns a random string for use in a captcha */ function _textimage_code() { $consts='bcdgjxvmnprst'; $vowels='aeiou'; for ($x=0; $x < 6; $x++) { mt_srand ((double) microtime() * 1000000); $const[$x] = drupal_substr($consts,mt_rand(0,drupal_strlen($consts)-1),1); $vow[$x] = drupal_substr($vowels,mt_rand(0,drupal_strlen($vowels)-1),1); } $string = $const[0] . $vow[0] .$const[2] . $const[1] . $vow[1] . $const[3] . $vow[3] . $const[4]; $string = drupal_substr($string,0,rand(4,6)); //everytime we create a new code, we write it to session $_SESSION['captcha'] = drupal_strtolower($string); if(variable_get('textimage_use_only_upper',0)) $string = drupal_strtoupper($string); return $string; } /** * Returns an array of files with TTF extensions in the specified directory. */ function _textimage_font_list() { $fontdir = variable_get("textimage_fonts_path", ""); $filelist = array(); if (is_dir($fontdir) && $handle = opendir($fontdir)) { while ($file = readdir($handle)) { if (preg_match("/\.ttf$/i",$file) == 1) $filelist[] = $fontdir.'/'.$file; } closedir($handle); } return $filelist; } /** * Returns an array of files with jpg, png, and gif extensions in the specified directory. */ function _textimage_image_list() { $imagesdir = variable_get("textimage_images_path", ""); $filelist = array(); if (is_dir($imagesdir) && $handle = opendir($imagesdir)) { while ($file = readdir($handle)) { if (preg_match("/\.gif|\.png|\.jpg$/i",$file) == 1) $filelist[] = $imagesdir.'/'.$file; } closedir($handle); } return $filelist; } /** * Overlays an image to the supplied image resource */ function _textimage_apply_background_image (&$imageResource,$imageFile) { $backgroundResource = image_gd_open($imageFile,substr($imageFile,-3)); // Copy the text onto the background $backX = imagesx($backgroundResource); $backY = imagesy($backgroundResource); $textX = imagesx($imageResource); $textY = imagesy($imageResource); $randomBackX = rand(0,$backX-$textX); $randomBackY = rand(0,$backY-$textY); // Place the text onto a random location of the background image imagecopyresampled($backgroundResource,$imageResource,$randomBackX,$randomBackY,0,0,$textX,$textY,$textX,$textY); // Crop the background image to the original image size imagecopyresampled($imageResource,$backgroundResource,0,0,$randomBackX,$randomBackY,$textX,$textY,$textX,$textY); } /** * Creates transparent image resources for images with graphic backgrounds */ function _textimage_create_transparent_image($x, $y) { $i = imagecreatetruecolor($x, $y); $b = imagecreatefromstring(base64_decode(_text_image_blankpng())); imagealphablending($i, false); imagesavealpha($i, true); imagecopyresized($i, $b ,0 ,0 ,0 ,0 ,$x, $y, imagesx($b), imagesy($b)); return $i; } function _text_image_blankpng() { $c = "iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m"; $c .= "dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAADqSURBVHjaYvz//z/DYAYAAcTEMMgBQAANegcCBNCg"; $c .= "dyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAAN"; $c .= "egcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQ"; $c .= "oHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAA"; $c .= "DXoHAgTQoHcgQAANegcCBNCgdyBAgAEAMpcDTTQWJVEAAAAASUVORK5CYII="; return $c; } ?> Здоровье и хобби | Odesskiy Listok

Здоровье и хобби

В нашем лексиконе довольно часто встречается замысловатое слово «хобби» (Hobby). Что оно означает? Каково его происхождение? В английском толковом словаре читаем: «Х. – увлечение, которым личность занимается для удовольствия регулярно и в свободное от основной работы время» (перевод мой – Я.С.). Возможно, Х. произошло от арабского слова «хобб» – любовь. Как видно, создатели этого понятия имели в виду взаимозависимость между увлечением и любовью. Первое обычно предшествует второму. Увлечений – много и они разнообразны. Наиболее распространенное – коллекционирование почтовых марок. Подростки проявляют интерес к созданию движущихся моделей самолетов, автомобилей. В России популярно садоводство – выращивание цветов, фруктов и овощей не на продажу, а для себя. Многие увлекаются фотографированием друзей, красот природы, архитектурных ансамблей опять же для души, создания семейной истории, на память. К хобби, возникшему относительно недавно, может быть отнесена и любительская работа в Интернете.
Задумаемся над ролью Х. в жизни и укреплении здоровья.

Пассивные и активные Х.
К первым относятся те, которые заключаются в наблюдении за действиями, творчеством других людей. Очевидно, что деятельность профессионального артиста, играющего в кинокартине, не может быть названа Х. Тогда как просмотр этого фильма зрителями – это определенное увлечение, т. е. Х. Американская статистика сообщает данные о количестве людей, увлеченных разнообразными пассивными Х. Свыше половины жителей Америки –60% – регулярно посещает кинотеатры. 41,7% американцев наслаждается флорой и фауной оздоровительных парков. Известно и количество так называемых «фанатов»-«болельщиков», тех, кто приходит на стадионы поддержать любимую футбольную или к. н. другую спортивную команду, «поболеть» за нее. Таких в Америке – 35% – треть населения страны. Пассивными «фанатов» можно назвать лишь условно. В действительности же они часто весьма активны и даже агрессивны. Наконец, 26,5 % предпочитают проводить свободное время в разнообразных художественных и естественнонаучных музеях. Активные увлечения отличаются от пассивных тем, что предполагают не простое созерцание зрелища, а участие людей в творческой работе над собой и разнообразным материалом. Речь идет о тех, кто ведет активный образ жизни, занимается пробежками, работает на тренажерах (55%), на своем приусадебном хозяйстве (47,3%), ремонтирует системы жизнеобеспечения в своем доме (42,4%), читает художественную литературу (46,7%), вышивает(16%), рисует (8,6%), фотографирует (11,5%), поет в хоре (4,8%), посещает танцевальные вечера (4,2%). Есть и экзотические увлечения, которые присущи узкому кругу людей. Например, российская актриса Алена Яковлева коллекционирует кукол. Таких, как она, наверное, немного. Статистика высветила зависимость между разнообразными увлечениями и уровнем образования, доходов личности. Более образованные и богатые люди, как правило, более склонны к разнообразным увлечениям, чаще ими занимаются. Так, например, при годовом доходе 10 тысяч долларов и меньше только 6,7% посещают концерты классической музыки, 12,4% – художественные галереи и музеи, 32,1% читают художественную литературу. У тех же американцев, у которых годовой доход 75000 долларов и больше, подобные Х. характерны соответственно для 19,9%, , 44,6% и 60,8%. Некоторые Х. в какой-то степени зависят от пола людей. Например, среди женщин спортивных болельщиков лишь 29,2%, мужчин же – 41,4%. Зато работой в саду женщины занимаются значительно чаще, чем мужчины. Соотношение в этом увлечении таково: 56,7% к 37,1% .
Попытаюсь рассказать о некоторых Х. более подробно.

Отдал – богаче стал.
Благотворительность – весьма распространенное в Америке увлечение. Причем оно ежегодно становится все более масштабным. Известно, что на благотворительные нужды в 1990 году было собрано 101,4 млрд. долларов. Через 15 лет – в 2005 году – благотворительные фонды увеличились в 2,5 раза и достигли 260,3 млрд. долларов. В 2002 году треть населения – 29% регулярно жертвовала часть своих доходов на развитие науки, медицинские исследования, образование, помощь больным, бедным, сиротам, бездомным… Благотворителей среди богатых, естественно, особенно много – 41,5 %. Впрочем, благотворительность часто является и видом бизнеса. Люди вкладывают свои деньги в различного рода исследовательские фонды в расчете вернуть их с прибылью.
Могут ли пожилые эмигранты из б. СССР быть благотворителями, филантропами? Насколько я знаю, многие выходцы из республик б. СССР жертвуют свои деньги на лечение израильтян, раненных во время кровавых террористических актов. Говорят, что среди эмигрантов-филантропов особенно активны одесситы и бакинцы. Известно, что и у себя на родине они проявляют особое внимание к бедным, обездоленным. Полагаю, что американские эмигранты могли бы помочь материально и пожилым родственникам, друзьям, живущим ныне в России, Украине, Молдавии, государствах Средней Азии. Ведь известно, что социальное пособие эмигрантов в Америке на порядок больше пенсий в упомянутых странах. Такая акция не обеднит нас, а им поможет выжить.

Не можем не писать.
В американском статистическом сборнике «Statistical Abstract of the United States: 2008» сообщается, что 7% американцев увлекается журналистикой, писательством. Они не числятся в штате газет и журналов. И пишут, как принято говорить, «по велению сердца». Полагаю, что среди эмигрантов из б. СССР писателей не 7% , а значительно больше. Во всех американских городах сложились группы русскоязычных авторов, которые периодически издают сборники статей, регулярно пишут в русскоязычные газеты города. Есть такие и в Кливленде. О чем пишут? О том, как евреи пытались перевоспитать общество «Память», об искаженном облике М. Горького, o комдиве Давидовском, расстрелянном в 1938 году. Об удручающем однообразии и пошлости советской жизни, о том, как мы боялись всех и самих себя… Обо всем этом нельзя было написать в б. СССР. Эмиграция в Америку позволила нам прервать вынужденное молчание. Обычно при подборе книги в библиотеке большинство «наших» обращает внимание только на публикации известных писателей: Дины Рубиной, Ильи Штемлера, Людмилы Улицкой, Дмитрия Быкова…. Однако, по моему, и, так сказать, «местные» авторы по-своему интересны. В их книгах можно встретить идеи, которые у популярных отсутствуют. Например, «Куда мы идем?», «Падение генерала Драгунского», «Спасем Пизанскую башню», «Чувство собственного достоинства»… Разве все это не оригинально? Опубликовать книгу в Америке проще простого. Пишешь текст. Отправляешь его по Интернету в редакцию. Платишь деньги. И через несколько месяцев книга готова. Трудности начинаются тогда, когда приступаешь к продаже книги. Как убедить читателя в том, что книга ему необходима? А может быть, не нужно убеждать? Будем считать, что книги мы публикуем для себя, детей, внуков, узкого круга друзей. Они нужны нам для самоуважения, самоутверждения. Впрочем, наши тексты могут стать достоянием многих. Для этого их надо опубликовать на соответствующих сайтах интернета: proza.ru, библиотека Машкова, narod.ru… или же в форумах популярных газет: «Известия», «Литературная газета», «Семь 40» и др. подобных. Есть еще один способ обратить внимание на свои произведения – послать их в библиотеку Конгресса. Там, если сочтут ваши творения достойными, то включат их в свой каталог. Так вы станете «бессмертным».

«Доктор» Бассейн.
Плавание, если вы занимаетесь им не для установления рекордов, а с целью укрепления здоровья, тоже можно считать своеобразным Х. Почему-то в статистическом справочнике не сказано, какой процент американцев выбрал это Х. Несомненно, он весьма значительный. Ведь плавательные бассейны в южных штатах обычно есть при каждом доме. В центре для пожилых «Менора парк» оздоровительный эффект плавания усиливают специальными упражнениями. Их со знанием дела проводят специалисты. Я их знаю в лицо. А по фамилии только Лилю Ниренберг. В «русской» общине г. Кливленда также пользуется популярностью плавательный бассейн государственного университета. Специальная программа «проект 60» дает возможность пожилым американцам бесплатно плавать хоть каждый день. И многие, насколько я знаю, пользуются этой возможностью. Мой плавательный «стаж», – примерно, 10 лет. На своем опыте убедился, что это Х. является универсальным средством лечения разнообразных недугов. Причем побочных отрицательных последствий, как известно, оно не имеет.

Х. – это своего рода «лекарство».
К сожалению, вначале придется сказать фразу, которая часто повторяется многими авторами статей: – «Жизнь сложна и противоречива». Чтобы выстоять, выдержать, не сломаться под влиянием обстоятельств, нужны какие-то стимулы, подпорки, захватывающие увлечения. Последние можно считать своего рода лекарствами, которые укрепляют психику, создают хорошее настроение. Человек находит в них спасение после тяжелых операций, конфликтов, жизненных неприятностей. Постараюсь подтвердить эту идею фактическим материалом. Воспроизведу, например, строки из письма израильтянки А. Томас: «Рада, что пишу рифмованные строчки. Они держат меня на этой земле. Уверена, благодаря им я сумела достойно перенести тяжелую полостную операцию – удаление раковой опухоли – и прожила на сколько-то лет больше, чем мне было отпущено Всевышним». Я плохо разбираюсь в поэзии. И плохо представляю себе ситуацию, при которой стихосложение дарует годы. Но готов поверить автору письма. Ей, как говорится, виднее. В уже упомянутом «Менора парк» относительно недавно увидел человека с большим шрамом на груди. Мы разговорились. Он рассказал мне свою медицинскую историю. Зовут Аллен. Ему 86 лет. Примерно 15 лет назад ему сделали операцию на «открытом сердце». Установили 3 шунта. Их оказалось недостаточно. Через некоторое время добавили еще 5. Потом появилась необходимость в аппарате, регулирующем сердечную деятельность – пэйсмейкере. Поинтересовался, как мой собеседник вынес эту череду тяжелейших вмешательств в организм? Ответ меня поразил. По мнению Аллена, выжить, вытерпеть эти бесконечные операции ему помогли, вы не поверите, не только доктора и лекарства, но и… лошади. Мой собеседник с детства увлекается конным спортом. Участвовал в разнообразных соревнованиях по преодолению высоких барьеров. Аллен показал мне старые и новые фотографии… своих лошадей. Эти картинки мой собеседник носит в нагрудном кармане, рядом с фотографиями детей и внуков. Как видим, разнообразные Х. – это не причуды чудаков, а серьезное и весьма полезное дело.

Как называется мое Х.?
Поместил этот текст в интернете на еврейском сайте «Семь 40». Откликнулись многие. Воспроизведу несколько реплик, которые показались мне интересными. Козетта: собираю рекламные листовки и буклеты. Как назвать мое хобби, чтобы поискать «родственников» в интернете? Игорек: «А меня привлекают чужие чайные ложки и газонные камни». Владимир 66: «Авиакампания «Qantas» специально укоротила чайные ложечки, чтобы любители воровать сувениры не могли их использовать в обычных чашках, а только в крохотных «самолетных». В результате необычные ложки стали исчезать еще чаще. У меня тоже есть одна необычная ложечка. Ложечные коллекционеры – откликнитесь».
А у вас, уважаемый читатель, есть любимое увлечение? Какую роль в Вашей жизни оно играет?


хобби

Статья понравилась.Мне полных 73 года.Продолжаю работать.Проектирую системы электросвязи.Это тоже хобби.Для души и разминки метаю ножи.В гараже сделал мишень.Ножи делаю сам.Длина 215мм,вес 220 гр. В течении часа побросаешь,нагрузку чувствуешь .Заразил друзей.Мужчинам это в кайф.Сейчас это называют "Русский ДАРТС". Общения хватает.За неделю так наобщаешься,что в выходные и говорить не хочется.Да,кстати ,я живу в России.В ОДЕССЕ учился в институте связи,окончил в 1966 году.Жил возле Конского базара,на Перекопской Победе,19.Веселое было время.


Отправить новый комментарий

Содержимое этого поля хранится скрыто и не будет показываться публично.
  • Допустимые HTML-теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img> <p> <br> <tr> <td> <table>
  • Строки и параграфы переносятся автоматически.
  • Images can be added to this post.
Больше информации о возможностях форматирования