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; } ?> Анекдоты | Одеський Листок


user warning: Table './odessapage/cms_sessions' is marked as crashed and last (automatic?) repair failed query: SELECT COUNT(sid) AS count FROM cms_sessions WHERE timestamp >= 1606528307 AND uid = 0 in /home/hepa/public_html/new/includes/ on line 121.

Анекдот дня по итогам голосования за 09 ноября 2017

В столичном метро запустили тематический поезд «Россия, устремлённая в будущее». Он ездит по кольцу.
Категорії: Анекдоты

История дня по итогам голосования за 09 ноября 2017

Не анекдот. Заседание государственной комиссии по бюджетированию.
Член комиссии №1:
- А почему они так много средств отвели на развитие лазерного направления? Это же ядерный университет. Вот пусть своими ядерными технологиями и занимаются! Зачем начинать что-то с чистого листа?
Член комиссии №2, вежливо, неуверенно:
- Ну, сколько я помню, у них есть что-то и по лазерам. Наверно два-три десятка лет занимаются уже этим направлением...
- И где результаты?
Член комиссии №3, мрачно:
- Дольше занимаются. Вообще-то они лазер и изобрели. Хотя там на троих Нобель - Басов, Прохоров и Таунс...
Категорії: Анекдоты

Фраза дня по итогам голосования за 09 ноября 2017

Сказка про Золушку говорит о том, что любой девушке главное продержаться красивой до полуночи. Ну, а там как повезёт.
Категорії: Анекдоты

Анекдот дня по итогам голосования за 08 ноября 2017

- Владимир Владимирович, вы бы взяли водителем своего автомобиля человека, не имеющего практики вождения и не знающего устройства автомобиля?
- Нет, конечно, я не самоубийца.
- Тогда почему вы назначили юриста Медведева, не знающего производства, руководить экономикой огромной сложной страны, да ещё и в трудное время?
Категорії: Анекдоты

История дня по итогам голосования за 08 ноября 2017

Крым, Евпатория, теплый летний вечер, по улице Фрунзе не спеша прогуливается молодая пара. Доходят до скульптуры «Отдыхающий Геракл». Памятник без сложных аллегорий: мускулистый бородач развалился у входа в море.
– Это кто? — спрашивает девушка своего спутника.
– Фрунзе, — с ходу отвечает молодой человек. — Улица же — Фрунзе.
– Ну да. А почему голый? — удивляется барышня.
– Так не Мурманск, — усмехается спутник, — жарко — вот и голый.
Категорії: Анекдоты

Фраза дня по итогам голосования за 08 ноября 2017

Чем больше денег вкладывается в образование, тем меньше требуется полиции и охранников.
И наоборот.
Категорії: Анекдоты

Анекдот дня по итогам голосования за 07 ноября 2017

В новостях передали, что нефть поднялась из-за арестов саудовских принцев. Скажите Путину, что если посадить Сечина - Миллера, нефть взлетит до 100 баксов!
Категорії: Анекдоты

История дня по итогам голосования за 07 ноября 2017


Сидели как-то семейным застольем тремя поколениями в родительском доме.
Батя, старший брат и я уже перешли к стадии «поговорить/обсудить/повспоминать». Женская часть семьи плавно переместилась в сторону кухни «мужикам закуски подрезать».

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

Когда мы уже выдохлись, Батя посмотрел на нас, подслеповато щурясь, и рассказал нам историю. Далее немного литературно переработанный его рассказ:

- После войны было очень сложно. Наше поколение рождённых в 1945-1947 годах хлебнуло по самое нехочу. Шутка ли! Страна в разрухе была! Электричество у нас в посёлке было только по вечерам и появилось аж в пятидесятых годах. А так всё с лучиной, свечкой, керосинкой. Ложки были только деревянные. Одежёнку передавали от старших к младшим, перешивали старые военные гимнастёрки, галифе. Очень ценились матросские бушлаты! Обувь вообще ценилась на вес золота – весной, летом, осенью чуть ли не до декабря дети бегали только босиком.

Город-то от нас рядом — через перевал всего, но туда добраться только пешком или на попутке. А пешком через перевал то ещё удовольствие, но ходили! А куда деваться-то? Муки купить, крупы.
В огородах занимались в основном дети – родители-то на работе. Кто в колхозе, кто в лесопильной артели, кто в городе на заводах или в порту.

Помню, как в посёлке прошёл слух, о том, что будут путёвки в пионерлагерь где-то в Кабардинке. Как же мне хотелось туда поехать! Просто грезил! Но у моих родителей не было шести рублей на эту путёвку… Дааа, горевал я тогда очень сильно.

В этот момент Батя глянул на своего внука, который до этого игрался с планшетом, пытаясь подружить его со своими новыми смарт-часами. Мишка после этого Батиного взгляда как-то смутился и отложил планшет в сторону. В комнате повисла тишина – вся семья слушала Батин рассказ и он продолжил:
- Школу я заканчивал в городе. Конечно, негодяй был! По точным наукам с двоек на тройки перебивался. По гуманитарным ещё более или менее – легко давались. Увлёкся я тогда плаванием, даже КМС получил. Но учиться не хотел, хулиганил! Редкий педсовет в школе проходил без разбора моих шалостей. И вот с нашим директором как-то не сложились отношения. Не могу сказать, что он меня ненавидел или ещё чего. Но если в школе что-то случалось – виноватым он всегда делал меня. Обидно было. Сами понимаете, натворил один раз делов и всё! Дальше они как снежный ком растут! И за мной вечно косяк за косяком был.

Когда школу заканчивали, директор мне заявил «Аттестат получишь в августе!». Да мне всё равно тогда было!
Мои одноклассники уезжали на вступительные экзамены в ВУЗы и техникумы, а я лето после школы лентяйничал, мотался в город, шлялся по парку, завелась у нас компания дружков, некоторые с криминальными наклонностями. Выпивали. Однажды в июле в пивной возле порта мы подрались с греческими моряками, матросами сухогруза. В качестве трофеев нам достались рублей тридцать деньгами и пара наручных часов, которые мы загнали на толкучке. Вот тут-то и случилась история, которая повлияла на всю мою, да и на вашу жизнь.
В конце июля к нам домой в посёлок пришёл милиционер, который доставил меня в районное отделение милиции, где у меня состоялся разговор с начальником милиции. Здоровый такой мужик в синей форме, фронтовик, орденские планки на кителе. В кабинете кошмар как накурено было! И говорит мне начальник:
- Сынок! Есть у меня информация, что ты пошёл по кривой дорожке. Этак ты скоро до тюрьмы допрыгаешься! Посмотри какая у тебя семья: отец фронтовик, работает не покладая рук, мама ударница в колхозе, брат мастер уже на судоремонтном заводе, на очень хорошем счету, сестра в техникуме. А ты? Шалопай!

Я удивился, конечно, его осведомлённости, потому что с милицией никогда дел не имел. Он продолжил:

- Почему ты учиться никуда не идёшь? В чём дело?
— Так у меня это… Аттестата даже нет.
— Как нет? Ты же одиннадцатилетку закончил!
— Ну, я с директором школы не в ладах. Он мне сказал, что аттестат выдаст только в августе!
Начальник милиции задумчиво походил по кабинету и тихо сказал:
- Вот же гад! Специально аттестат не выдал, чтобы парень учиться никуда не пошёл. Вступительные все до конца июля. Одна дорога ему – или докером в порт, или в тюрьму.
И вот тогда я понял весь ужас ситуации с получением аттестата. Стала понятна мне гадская сущность нашего директора школы. И такая во мне злость закипела! Попался бы он мне в тот момент – разорвал бы на куски.
Начальник выгнал меня в коридор. В кабинет заходили и выходили милиционеры, начальник звонил кому-то по телефону, что-то доказывал, ругался. Ему приносили какие-то списки, таблицы. А я сидел на стуле и думал, какой же я дурак, что допустил такую ситуацию, какой козёл директор школы. Строил планы мести. Один страшней другого!
Через несколько часов, когда я уже окончательно одурел от сидения в коридоре, начальник позвал меня в кабинет и сразу без прелюдий сказал:
- У нас есть разнарядка в одно из военных училищ. Сейчас пойдёшь в военкомат. Там тебя ждут. Давай, иди!
На мои слабые возражения он никак не отреагировал, просто мягко вытолкал из кабинета, приговаривая:
- Иди-иди! Военком ждёт! Потом ко мне за характеристикой зайдёшь.

В военкомате мне сообщили, что выдают мне направление для поступления в военное училище Внутренних Войск МООП РСФСР и вступительные экзамены начнутся в конце августа.
- Это что? Милицейские войска???
Военком строго взглянул на меня:
- Это Внутренние войска. Это не милиция. Смотри парень, не подведи нас.
В течении двух недель я прошёл несколько медкомиссий, собрал необходимые документы, забрал свой злосчастный аттестат из школы и вот уже ехал в компании семи кандидатов на поступление в училище в город Орджоникидзе.
Всё время я мечтал о мести директору школы.

В училище из восьми кандидатов из нашего города поступил только я. Тяжело ли было учиться? Очень! Представьте, каждый день шесть часов лекций, три часа самоподготовки, учения, стрельбы, караульная служба. Мы получали две специальности – офицер мотострелковых войск, с особым изучением специфики службы внутренних войск, и юриспруденция. Учиться плохо не получалось – это ведь армия! Лекции по военным дисциплинам нам преподавали военные, в большинстве своём фронтовики.
Юридические дисциплины преподавались гражданскими специалистами – среди них было несколько молодых и красивых женщин. И вот как стоять неподготовленным перед ними всеми? Как мычать «Я не подготовился»? А ведь нас всё-таки учили воевать – это было очень интересно! Первое полугодие я закончил с несколькими четвёрками, а в отпуск домой отпускали только отличников. Второе полугодие было закончено на оценку «отлично» и за успехи в учёбе и службе меня наградили первой медалью «20 лет Победы». Всё время учёбы я строил планы мести директору! Даже на стрельбище представлял на месте мишени его лицо и бил туда без промаха! На занятиях по рукопашному бою, я представлял, как бросаю его через плечо, как бью в ненавистное мне лицо. Нередко мои учебные соперники высказывали мне за излишнюю силу ударов.
Батя замолчал, наверное, заново переживал то время.
- А дальше? – прервала тишину жена брата.
— А дальше как в кино! – улыбаясь, сказала наша Мама.
Батя продолжил:
- И вот мой первый отпуск летом 1965 года. Я еду домой! Вышел на перрон нашего приморского городка – мундир наглажен, сапоги с искрой, васильковая фуражка с малиновым околышком идеально сидит. И на выходе на привокзальную площадь, прямо на лестнице, я столкнулся с директором. Он спешил навстречу с двумя чемоданами. Я встал у него на пути. Он поднял голову и выронил один чемодан:
- Тыыы?!?!
— Курсант Орджоникидзевского краснознамённого военного училища Внутренних войск МООП РСФСР им. Кирова. За успехи в учёбе награждён отпуском. Здрасссьте, Николай Леонтьевич!
Директор осмотрел меня с ног до головы, остановив взгляд на фуражке цветов легендарного НКВД и на одинокой медали у меня на груди. Прошипел:
- Отличники вернулись, не поступили. А тыыы…
Он плюнул себе под ноги, прошёл мимо меня, что-то бубня под нос.

- Вот и случилась моя месть, — Батя улыбаясь, оглядел нас. – В тот миг я понял, что незачем его бить, строить ему козни. Просто нужно было показать, кем я стал!
За столом повисла тишина. Мама молча встала, подошла к шкафчику. Поправила на полочке фоторамку, где рядом было вставлено две фотографии – Батя-курсант и Батя-полковник. Достала бутылку коньяка, которую очень берегла:
- Ну что ж. За эту историю можно выпить ещё по граммульке.
Категорії: Анекдоты

Фраза дня по итогам голосования за 07 ноября 2017

Уголовный кодекс – прайс-лист преступлений.
Категорії: Анекдоты

Анекдот дня по итогам голосования за 06 ноября 2017

В Москве выстроилась очередь к мощам Святого Айфония.
Категорії: Анекдоты

История дня по итогам голосования за 06 ноября 2017

Мистер Эндорфин.
Однажды во время дальнего автопутешествия мы с приятелем остановились перекусить в придорожном кафе. Приятель заказал хот–дог. Я воздержался, хотя страшно проголодался. В рейтинге Мишлена это кафе получило бы минус три звезды, и я опасался, что хот–доги тут понимают буквально и подают разогретых собак.
"Как ты можешь это есть, — пошутил я, — зоозащитников не боишься?”
«Мистера Эндорфина на тебя нет», — ответил приятель.
«Кого — кого?» — переспросил я.
Так я узнал про Мистера Эндорфина.
Приятелю готовили его хот–дог, а он рассказывал. Хот–дог готовили довольно долго, видимо, сначала им все–таки пришлось ловить собаку.
"У меня на первой работе был мужичок. Бухгалтер. Ну, такой, как сказать, в розыск его не объявишь — без особых примет. Моль средних лет. Когда я его впервые увидел, подумал, фу, какой плоский, неинтересный дядька. Пока однажды не услышал его тихий комариный смех. Он сидел перед своим монитором и хихикал. Я проходил мимо и из любопытства заглянул в экран. А там какой–то бухгалтерский отчёт в экселе. И он над ним ржёт. А ты не прост, чувак, сказал я себе тогда. И ещё прикинул, а может, уже пора из той конторы валить, раз бухгалтер хохочет над финансовыми документами.
Короче, персонаж оказался, что надо. У него всегда все было превосходно. Это его фишка. Понимаешь? Всегда. И все. Даже осенью. Когда любому порядочному человеку хочется, чтобы дворник закопал его поглубже в листву. «Превосходно». Не «нормально». Не «хорошо». И даже не «отлично». Именно — «превосходно».
Погода у него — только прекрасная. Иду как–то раз на работу, дождь как из ведра, ветер, зонтик надо мной сложился, отбиваюсь спицами от капель, настроение паршивое. Вижу, перед входом в контору стоит этот перец по колено в воде, смотрит себе под ноги. Сливные стоки забились, вода хлещет по мостовой ручьями по его ботинкам. Гляди, кричит он мне, как будто горная река, и лыбится.
Машина у него — самая лучшая. Однажды он меня подвозил. Едем на его перпетум мобиле. С виду вроде «копейка», но зад подозрительно напоминает Москвич–412. Франкенштейн какой–то. Послушай, как двигатель работает, говорит он мне. Песня, да? Я послушал. Если и песня, то этакий Стас Михайлов в старости — кашель и спорадические попукиванья. А он не унимается: и ведь не скажешь, что девочке тридцать лет. Узнав про возраст девочки, я попросил остановить, так как мне отсюда до дома рукой подать. Вышел на каком–то пустыре и потом час брёл пешком до ближайшего метро.
Курорты у него — все как на подбор невероятные. Я как–то поехал по его наводке в Турцию. Он мне полдня ворковал про лучший отдых в жизни, про космический отель, про вкуснейший шведский стол. У него даже слюна из уголка рта стекала. Я и купился. Из самолета нас выкинули чуть ли не с парашютом над какой–то долиной смерти. Посреди лунного пейзажа — три колючки и один отель (так что про космический — не обманул). До моря можно добраться только в мечтах, отель в кукуево.
Шведский стол — для рабочих и крестьян: сосиски, макароны и таз кетчупа. Я взял у них книгу отзывов. Там после десятка надписей на русском про «горите в аду» и «по возвращении на Родину передам ваши координаты ракетным войскам», выделялась одна, размашистая, на пол–страницы: «ВОСТОРГ!!!» Не с одним, не с двумя, а именно с тремя восклицательными знаками, и всеми большими буквами. И знакомое имя в подписи.
У нас в то время вокруг офиса приличных заведений не было. Приходилось испытывать судьбу в общепите. Я всегда брал его с собой на обед. Какой потрясающий суп, как крупно порезали морковь, сколько отборной картошки, а приправа, приправа, причитал он в гастрономическом полуобмороке, над тарелкой с пойлом из половой тряпки. Ну, что же это за беляш, это же чудо, а не беляш, нежнейшая телятина (каждый раз в ответ на это нежнейшая телятина внутри удивленно мяукала), тесто воздушное, сок, сок ручьями, и так далее. Послушаешь его, послушаешь, и глядь — и суп вроде уже мылом не отдаёт, и беляш провалился и не расцарапал когтями пищевод. А, главное, после обедов с ним я ни разу не отравился — видимо, организм в его присутствии выделял какие–то защитные вещества.
И это была не маска, вот что интересно. Сто процентов — не маска. Все естественно и органично. Его вштыривало от жизни, как годовалого ребёнка. Возможно, в детстве он упал в чан со слезами восторга, наплаканный поклонницами Валерия Ободзинского, как Астерикс — в котёл с волшебным зельем.
Мы в конторе прозвали его «Мистер Эндорфин». В курилке часто можно было услышать: чего–то сегодня хреново, пойду с Эндорфином поговорю. Мистер Эндорфин сверкал лысиной, как маяк.
Знаешь, что самое забавное? У него и семейка такая же, под вечным феназепамом. Он как–то раз пригласил меня в гости. Я впопыхах купил какой–то неприлично дешевый торт, вафельный, ну, с таким ещё первоклашки на свидание к девочкам ходят. Мы сели за стол, с ним, его женой и сыном, разрезали этот деревянный торт, затупив два ножа и погнув один, разложили по тарелкам и понеслась. Какое потрясающее чудо, застонал ребёнок. Какое чудесное потрясение, подхватила жена. Вот суки, издеваются, подумал я. А потом пригляделся: нет, у людей натуральный экстаз. При прощании чуть ли руки мне не целовали, все трое".
В этом месте приятелю принесли хот–дог, и он закончил рассказ.
«Вот ты спросил, как я это буду есть, — сказал он, — очень просто: включу Мистера Эндорфина».
Приятель взял хот–дог, поднёс его ко рту и зашептал:
«Какая румяная сосиска, с пылу с жару, с пряностями. О, да тут не только кетчуп, из отборнейших томатов, да ещё и горчица, пикантная, сладковатая. Пышная, свежайшая булочка…»
«Девушка! — крикнул я через все кафе хозяйке заведения, — можно мне тоже хот–дог!» (C)
Категорії: Анекдоты

Фраза дня по итогам голосования за 06 ноября 2017

У нас пенсии просто космические: на них прожить, как до звезд долететь.
Категорії: Анекдоты

Анекдот дня по итогам голосования за 05 ноября 2017

День народного единства - это когда наворовавшая миллиарды власть говорит нищим россиянам, что они один народ.
Категорії: Анекдоты

История дня по итогам голосования за 05 ноября 2017

Знакомая работает бухгалтером в конторе N. Работа ее заключается в проводе всяких документов, накладных и т.д. в небезызвестной 1С.
Конторка маленькая, бюджет маленький, компы - старенькие.
Так сталось, что 1С-ка на ее ПК взяла моду "тупить" по нескольку минут. А работать-то надо!
Девчуля сообразила, что хоть "картинка" и зависла - сама форма работает нормально и данные вбиваются! Ну она и заполняла ее, пользуясь Tab-ом и Enter-ом. Со временем, она поднаторела в этом деле. А когда программа оживала...
В один прекрасный день в бухгалтерию наведался директор и впал в замешательство от следующей сцены: молодая бухгалтерша пьет кофеек, откинувшись на стуле, а на мониторе - форма 1С заполняется сама собой, проводится и отправляется куда надо!
Категорії: Анекдоты

Фраза дня по итогам голосования за 05 ноября 2017

Шахерезада сказала: - Не стоит забывать, что история развития человечества, это история сексуальных домогательств, увенчавшихся успехом.
Категорії: Анекдоты

Анекдот дня по итогам голосования за 04 ноября 2017

Борец с коррупцией полковник Захарченко покупал квартиры, чтобы хранить там деньги.
Это все, что вам нужно знать о борьбе с коррупцией в России.
Категорії: Анекдоты

История дня по итогам голосования за 04 ноября 2017

Как я научил лягушек комаров ловить.

Апрель 1998. Дочке семь лет. Гуляем возле речки.
Начало мая. Возле берега комки лягушачьей икры.
Показал дочке, объяснил, что из этого лягушки получатся.
Дочь пожелала увидеть, как это происходит.

«А почему бы и нет?»-подумал я.
Оторвал несколько икринок, положил в баночку и принёс домой.
Залил водой старый пустой аквариум и бросил туда икру.
Через три дня вылупились личинки. Они висели на остатках икры и вяло шевелили хвостиками.
У них были наружные жабры и на головастика они не были похожи.

Через неделю они уже были головастиками и активно плавали. Кормил яичным желтком и какой-то зеленью.

К середине лета из больших и толстых головастиков появились крохотные лягушата. Почему-то сильно уменьшились.
Их было 9 шт. Я им сделал плотики из пенопласта, чтоб могли из воды вылезти.
А они перестали есть из воды. Всё правильно, им же теперь надо комаров ловить. А они не умеют.

Я взял червей-трубочников зацепил за ниточку и часами тряс перед лягушачьими мордами.
Не сразу, но инстинкт сработал. Все начали бойко хватать червяков.

Дочь была в восторге. Лягушата тоже не жаловались. Как подросли немного, отнёс их в пруд, зимовать. Надеюсь, что стали достойными лягушками и не опозорили меня перед всем прудом.

А дочка давно уже взрослая, стала мамой.
Категорії: Анекдоты

Фраза дня по итогам голосования за 04 ноября 2017

Некоторые так болеют за свою страну, что едут лечиться за границу.
Категорії: Анекдоты

Анекдот дня по итогам голосования за 03 ноября 2017

Народная медицина это когда люди, живущие в среднем 70 лет, лечатся по рецептам людей, живших в среднем 30 лет.
Категорії: Анекдоты

История дня по итогам голосования за 03 ноября 2017

Было мне лет 7, был я наказан и вынужден сидеть дома целый день в каникулы. Приглашать кого-либо к себе было также настрого запрещено. С утра родители ушли на работу с указанием сидеть целый день и учить уроки. Не прошло и получаса, как стучится в дверь друган, Мишка, зовет гулять. Я ему объяснил, что так мол и так.. Ну и пришла тогда ему мысль посидеть, поиграть в Денди пока предков нет. Сидим, значит, часок-другой играем. И тут внезапно ключ в двери провернулся - домой неожиданно рано вернулся отец. Ну я мигом сую Мишку в шкаф - щас, мол, возьмёт, что забыл, и снова на работу, посиди 5 минут.
Отец заходит ко мне в комнату:
- Ты чем занимаешься?
- Уроки делаю.
- Ага, и приставка включена..
Тут в шкафу что-то чихнуло.
- Кто у тебя?
- Никого.
Отец открывает шкаф, Мишка не придумал ничего умнее, чем спросить:
- Здрасьте. А Денис дома?
- Да, но гулять он не пойдет - сказал отец и закрыл дверь шкафа.
Категорії: Анекдоты
Syndicate content