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

Моими собствеными словами

Я никогда не видел своего деда.

Дед родился на Украине в 1918 году. Он был очень религиозным евреем, а Украина - это очень антисимитское место. Семья моего деда была очень бедной. Моя мама сказала, что мой дед молился во дворе по Шабатам. Это было в Диражне. У них в местечке была Синагога, и если мой дед не шел в Синагогу, то он молился во дворе. Когда мой дед ходил в школу, никто не знал, что он еврей пока он не надел Звезду Давида. Тогда все стали называть его жидом.

Никто не знал, что будет Холокост. В 1939 году, когда нацисты оккупировали Восточную Европу, жизнь стала еще хуже. Положение стало ухудшаться, ухудшаться, и моему деду ничего не оставалось, как бежать из страны. Он был уже женат к тому времени, и моя мама родилась в 1936 году. В 1938 году они попытались уехать.

Они пошли на железнодорожный вокзал, чтобы уехать из страны, со всеми бумагами. Шли очень тихо посреди ночи. Они собирались в Узбекистан, туда, где было безопасно.

Когда они пришли на платформу, показался офицер СС. Мой дед пытался обьяснить офицеру, что он был гражданином Восточной Украины и он пытался поддерживать свою страну. Офицер сказал, что он обманщик, как и все евреи. Мой дед полез в карман показать ему бумаги, а офицер подумал, что он собрается достать пистолет и застрелил моего деда прямо на платформе. Мой дед упал без сознания, но он не умер, потому что в кармане у него была голубая копилка, чтобы поддерживать будущее Государство Израиль, она была полна монет, а пуля попала в копилку. Это было большой удачей. Я не знаю, где мой дед взял копилку. Я думаю это было необычно тогда, иметь такую копилку для поддержания Израиля. Я слышал эту историю всего один раз - я думаю от моей мамы или бабушки. Только поэтому я верю, что голубая копилка принесла мне и моей семье счастье.

Моя мама часто говорила мне про жизнь в Узбекистане. Семья была всегда голодной там. Моя мама всегда ходила вокруг деревьев и, когда абрикосы падали, она их собирала, чтобы накормить семью. Она всегда ела последней.

После войны семья вернулась на Украину в г. Хмельницкий. Мой дедушка умер после войны. Он был нечаянно убит лошадью.

Моя мама решила стать медсестрой. Она вместе с ее приёмной сестрой пошла в Медицинский Университет и училась два года. Моя мама, что удивительно было для меня, почувствовала, что она еврейка один раз. Это было тогда. когда она пришла к маленькой девочке делать укол и ребенок назвал ее жидовкой. Ее родители сказали, не волнуйтесь, она не знает, что это такое.

Я родился в г. Хмельницком. Родители моей мамы оба были евреями. У моего отца мама была еврейкой, но папа не был евреем. Моя мама думала, что я должен иметь еврейский паспорт, но мой отец был не согласен. Он сказал, у него итак здесь тяжелая жизнь, потому что он еврей. Родители записали меня русским. Но это не имело значения, потому что все знали по моему лицу, что я еврей. Поговорка есть в России, что бьют не по паспорту а по лицу.

Моя бабушка умерла, когда мне было одинадцать лет. Это было тяжело для меня. Я потерял замечательного человека. Вместе с ней я так же потерял все рецепты приготовления еврейских блюд. Я помню фаршированую рыбу и кишку. Моя бабушка похоронена на еврейском кладбище.

Мы навещали её могилу накладбище, когда я был ребенком. Мои дедушка с бабушкой и родители говорили на Идиш все время. Когда моя мама хотела сказать что-нибудь плохое насчет меня, она говорила на Идиш. Мой дядя потом говорил мне, что это значит.

В городе была большая еврейская община. Мой родители праздновали Йом Кипур, Рош Хашана и Песах в нашем доме, а не в Синагоге. Мы кушали мацу на Песах, но так чтобы никто не знал. Моя мама постилась на Йом Кипур.

Моя первая школа находилась в одном квартале от нашего дома. Больше половины класса были евреями. Поже я пошел в другую школу, где среди учеников не было ни одного еврея. Меня избивали в новой школе. Я пытался жаловаться моим родителям и говорить им, что я больше не хочу ходить в школу. В школе, я чувствовал, что я был евреем, потому что все ученики меня ненавидели. Они рисовали свастику на моем пиджаке.. Моя учительница была еврейкой и пыталась защищать меня, как могла. Но, когда ее не было, мне доставалось вдвойне. Сейчас она живет в Сан Франциско. Я встретил ее в Сан Франциско в автобусе несколько лет назад. Мы начали разговаривать, и я спросил ее помнит или она учеников, которые меня ненавидели. Она ответила: “ Я надеюсь, что они сдохли”.

Мой отец был зубным техником. Он умер в 1987 году за три недели до моего восемнадцатилетия. Мой отец сказал мне накануне моего дня рождения: ”Павлик, у меня есть сюрприз для тебя”. Это была машинка для бритья. Я сохранил ее по сей день. Это память о папе, потому что я его очень любил.

После школы и армии, я решил стать профессиональным музыкантом. Я подал заявление в Музыкальную Школу и у них был тест для всех. Я уже был профессиональным барабанщиком в армии, но я хотел идти выше. Когда директор послушал мой голос, ему, вроде бы, понравилось. Когда я пришел за результатом, я был удивлен, что меня поставили на лист ожидания. Я пытался на следующий год и это было ещё хуже. Они отказали мне. Директор сказал, что хочет увидеть мой паспорт. Он посмотрел в мой паспорт и потом на меня, потом закрыл его и сказал, что он мне не верит. Двери этой школы закрыты для меня. Я должен ехать куда нибудь подальше - имелось в виду Израиль или Соединенные Штаты. Моя жизнь была ужасной, я очень хотел стать профессиональным музыкантом. После, я встретил человека, который помог мне поступить в другую Музыкальную Школу и я стал профессиональным барабанщиком.

В Хмельницком не было ни одной Синагоги. Единственную Синагогу превратили в спортивный клуб или магазин. До того как я уехал с Украины в Америку в 1992 году, там открыли маленькую Синагогу. Все кто мог уехать - уехали в Израиль или Соединенные Штаты.

Мой дядя был одним из первых, кто уехал в Штаты из Союза. Он был в лагере в Италии. Там было два агенства: первое для Америки и второе - для Израиля. Он выбрал агенство для Америки, потому что его сын уже был там. Моя мама с моим братом приехали в Америку в 1988 году с визитом и решили остаться. Сейчас большинство моих родственников проживает в Сан Франциско. Некоторые живут в Нью Йорке, Техасе и Израиле. Никто не остался на Украине.

Когда я приехал в Америку, я захотел быть больше религиозным евреем. Друг привел меня и мою маму в Синагогу Бинэй Эмунах, она была моей первой Синагогой и мне понравилось. Мой первый праздник был Ту Бишват. После Ту Бишвата, я думал, я буду приходить часто. Я не знал, что ожидает меня на службах. Мне понравился Кантор, Рабай и все люди.

Я стал очень религиозным евреем, когда я приехал в Америку. Я захотел узнать кто я. Я ничего не знал о моей религии и традициях. У меня была Бар-Мицва два года назад. У меня заняло пять месяцев, чтобы научиться читать на Иврите. И сейчас, я занимаюсь Ивритом самостоятельно и беру классы по изучению Иврита. Я выучил грамматику и разговорную речь и могу писать на Иврите. Моя учительница говорит, что у меня уже средний уровень. Иврит очень красивый язык.
Я горжусь что я еврей. Я горжусь тем, что я люблю Израиль, и горжусь тем, что я сын своего многострадального народа, который живет на обетованной земле. Потому что я музыкант, у меня есть музыкальный слух и это мне помогло быстро выучить Иврит.

Я получил свою голубую коробочку около пяти лет тому назад. Я получил ее от Илзы Лоуйи. И я не знал, что это такое. Я думал, что это была всего лищь копилка, чтобы собирать деньги. Илза сказала мне, что я должен кидать туда монеты и, когда она заполнится монетами, я должен позвонить по телефону, указаном на коробочке. Я позвонил в Еврейский Национальный Фонд. Оказалось, что их офис был в Сан-Франциско. Мой друг Дарон, который ¬работал тогда в Еврейском Национальном Фонде, мне позвонил и мы договорились встретиться.

Была плохая погода, и я отдал ему копилку и попросил его отвезти меня в район Сансет. В копилке было почти 81.00 доллар. Это были большие деньги для меня. Я всегда имею эту копилку. У меня уходит около трех месяцев, чтобы ее эаполнить.

Несколько лет назад, я встретил приятную мексиканскую женщину и женился. Я буду продолжать поддерживать Израиль пока я жив, но не через Еврейский Национальный Фонд, а через Израильскую компанию Скорой Помощи при Федерации Еврейских Общин Сан-Франциско. Я думаю, это важно поддерживать Израиль, быть хорошим семьянином, поддерживать Америку, праздновать все американские и еврейские праздники, быть Бар Мицва,и праздновать День Независимости Израиля - это все важно для меня не меньше чем кусок свежего хлеба и глоток свежего воздуха. Я волнуюсь насчет моих друзей в Израиле. Я не слышал о них шесть месяцев.

Я так же принадлежу к обществу “Друзья Израиля” в Северной Калифорнии. Это часть русско-язычной еврейской общины Сан Франциско. Мы поддерживаем девятьсот семей в Израиле. Я делаю много работы для этой общины и они очень благодарны. Я единственный, кто говорит по английски. Я пытаюсь вмешать свою синагогу в эту общину. Мы пытаемся работать с американцами. Я так же принадлежу к обществу “Голос за Израиль”. Мы поддерживаем Израиль. И я так же работаю волонтером в Еврейском Доме престарелых, помогая жильцам праздновать Онег Шабат, подавая им кофе, печенье и закуски, и помогая им праздновать еврейские праздники. Я верю в мицву. Я так же волонтёрю в Еврейском Еженедельнике Северной Калифорний. Мое заглавие, которое печатает эта газета это за Израиль.

У меня есть две голубые копилки в доме. Я поддерживаю Израиль, я поддерживаю Америку. Мое мнение - Израиль имеет право на существование и право бороться против террора. Мы молим Бога дать мир и благо государству Израиль.

Живя в таком красивом городе как Сан Франциско, я больше не боюсь быть евреем.

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img> <p> <br> <tr> <td> <table>
  • Lines and paragraphs break automatically.
  • Images can be added to this post.
More information about formatting options