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 >= 1606528633 AND uid = 0 in /home/hepa/public_html/new/includes/ on line 121.

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

За окном школьный стадион, где по утрам народ терзает себя бегом и прочей физкультурой. Младое же поколение, еще не озабоченное давлением/холестерином/артритом/одышкой, на переменах бегает за угол, посмолить сигаретки.
В очередной день, выходя из подъезда, натыкаюсь на стайку девчёнок, выбежавших курнуть на перемене. У них трагедия: на всех не хватает. Самые незакомплексованные, пустив в ход все свое мастерство обольщения, подкатывают к мужику, чистящему неподалеку машину: Мущщина :) угостите сигареткой :) :)...
Мужик грустно: Бросали бы вы курить, девочки. Вам же еще детей рожать!
Нимфы смущенно но с вызовом в ответ...: А это вас касается?
Мужик, вздыхая, вполголоса: Когда это меня коснется будет уже поздно.
и продолжает чистить машину.

Знаю этого мужика. Паталогоанатом из облбольницы.
Категорії: Анекдоты

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

Сечин перепутал суд и развелся с Улюкаевым.
Категорії: Анекдоты

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

Свидетели Иеговы в шоке: к ним в двери начали стучать юннаты с вопросами: «Не хотите ли поговорить о науке?», «открыто ли ваше сердце для квантовой физики?», «принимаете ли вы учение Исаака нашего Ньютона, принявшего удар яблоком от нашего невежества, наше непонимание, да за страхи наши?»
Категорії: Анекдоты

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

Не спрашивайте, как я оказалась в этом поезде. Это неважно, как и то, что время со вчерашнего вечера течёт для меня совсем идиотски. Важно то, что со станции "Вышний Волочек" в вагон шагнула бабка. Нет, не так: Бабка.
У неё было все, что полагается такой женщине из города с таким названием: свалявшийся мохеровый берет поверх цветастого платка, пухлые баулы и пухлый же внук, недоросль лет двенадцати, обреченно волочащийся за баулами.

Поняв, что, "согласно купленных билетов", родственница будет сидеть не рядом, внук было обрадовался. Но баушка лихо затолкала багаж на верхнюю полку - ответом на предложение помощи было суровое "Не трожь!". Оглядела вагон, выбрала жертву - ею оказался безумец, предложивший помощь с багажом - и сообщила:

- А нук, давай туда.

Жертва как-то сразу поняла, что это было не предложение, и освободила пространство. Утрамбовав внука в кресло у окна, Бабка зловеще сказала:

- Будем кушать.

Внук втянул голову в плечи. И через секунду весь вагон, а также окрестные деревни, которые "сапсан" пролетает со скоростью 200 километров в час, поняли, почему.

Бабка распахнула матерчатую сумку, выбросив в атмосферу запах Котлет. Вслед за ними появились укутанная в полотенчико эмалированная миска варёной картошки и литровая банка соленых огурцов. Конечно, нарезанный хлеб и пучок зеленого лука.
- Щас будет соль в спичечном коробке, - глядя на Бабку с суеверным ужасом, предсказал мой сосед, на вид слишком молодой и модный, чтобы помнить такие детали советских путешествий.

- Шоколадка, что не будет, - также тихо отозвалась я.

Не знаю, чем я думала, делая эту заведомо проигрышную ставку. Разумеется, соль появилась.

- Ба, я не голодный, - безнадежно сказал Внук. - Я вот пить хочу. Где моя кола?

- Компот, - отрезала Бабка. - В дорогу сварила. Нук ешь.

Внук потянулся к котлете, огреб по рукам и спустя мгновение получил ту же самую котлету с картошкой и хлебом. Тоскливо жуя, уставился в окно.

- Нук огурчика, - распорядилась Бабка. - И яйцЫ.

Мы с соседом, который, кстати, благородно разделил со мной выигранную шоколадку, вылупились на Бабку. Та осмотрела гору еды и спросила:

- А где яйцЫ?

В голосе ее слышалась даже растерянность.

- Куда яйцЫ делись?

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

- Сварила с утра яйцЫ, пять штук, крутые. И где?

Мы тихо захихикали.

- У меня дитё голодное! - рявкнула Бабка.

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

В проходе появилась женщина с младенцем.

- Потом приходи, - отмахнулась Бабка.

- Нам надо сменить памперс! - возмутилась женщина. - Он покакал!

Бабка поднялась от баулов и, вперив в младенца ястребиный взор, проорала буквально следующее:

- Покакал - значит, жрал! А моему с голоду помирать??? ЯйцЫ-то пропали!

- Да она троллит, - восхитился мой сосед.

- Извините, - забормотала женщина с младенцем, - я не знала, что у вас тоже маленький ребёнок... Я в другой вагон пойду.
И тут "маленький ребёнок" издал звук, который издаёт 100 процентов взрослых мужиков после кружки пива.

Не в силах больше сдерживаться, мы с соседом захохотали в голос.

Появилась проводница:

- Что тут у вас происходит?

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

И тогда Внук, который явно устал чувствовать себя бессловесным рождественским гусем, восстал. Он откашлялся и светским тоном обратился к проводнице:

- Простите бабушку. Она потеряла пять своих яиц и немного нервничает.

Если Бабка что и сказала, мы этого не слышали: вагон загоготал так, что, кажется, даже метель за окном прекратилась.

Вы, наверно, думаете, что дальше было так, как у меня часто бывает: мы с Бабкой поговорили, и оказалось, что никакая она не Бабка, а вовсе солист Большого театра, тонкий, интеллигентный и местами скрипач, а я просто не сразу разглядела.


Ну мы поговорили, да. Перехватив мой взгляд, направленный на остатки пиршества, Бабка спросила:
- Что, не собрала в дорогу-то?

- Не собрала, - повинилась я.

- Ну вот и сиди теперь не жрамши, - ответила Бабка. - Овца безрукая.
Категорії: Анекдоты

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

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

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

Как повысить уровень здравоохранения в России? Да просто. Пусть выпускники Медакадемий первые три года лечат своих преподавателей.
Категорії: Анекдоты

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

Закупаемся в Ленте с женой. Дошли до помидоров, а на тех, которые нам нужны, ценников нет. Все вокруг исходили - ни продавцов, ни ценников. Я в шутку беру помидор, показываю его в камеру наблюдения и максимально четко выговариваю: "КАКАЯ ЦЕНА?".
Через пару секунд по громкой связи на весь магазин явно угарающим голосом: "119 рублей 99 копеек".
Категорії: Анекдоты

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

Если ученому зарплаты едва хватает на продукты, то чем его НИИ отличается от шарашки, где работали за еду?
Категорії: Анекдоты

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

- Сарочка, дорогая, а диалог ещё возможен или ты уже однозначно права?
Категорії: Анекдоты

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

Один английский проповедник, в двенадцатом, кажется, веке, объяснял прихожанам, что Господь, будучи не только мудрым, но и любящим, повелел рекам течь через большие города, чтобы люди могли подвозить товары на рынки при помощи лодок.
Мне кажется, что, хоть проповедник и умер, но свойственное ему представление о причинно-следственных связях до сих пор живо.
Категорії: Анекдоты

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

Лысому усы дают шанс услышать про себя не "этот лысый", а "этот усатый".
Категорії: Анекдоты

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

У Олега не было денег, и поэтому стриптизёрше в трусы он просто крикнул СПАСИБО!
Категорії: Анекдоты

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

Печальные последствия попытки жульничества на экзаменах на звание врача США.
Короткая предыстория: речь пойдёт о сдаче экзаменов на врача для иностранцев, после успешной сдачи которых врач может подавать документы в интернатуру или резидентуру, для последующей практической тренировки по специальности.
Первый этап бумажный, надо послать в центр для аккредитации свой диплом, они там проверяют твою школу на расписание предметов, сколько часов ты изучал то да сё, репутация школы, соответствие её мировым стандартам медицинского образования...
Получив подтверждение диплома, можно подавать на экзамен, платить деньгу, немалую и раз в 6 месяцев в один день в сотнях центрах США и всего мира пытаться его сдать.
Да-да, вы не ослышались, всего мира, центры были и в Польше и в Финляндии и Филиппинах и бог его знает где ещё.
Вопросов много, 500 с лишним, всё строго: вопросы для всех центров одинаковые, под замком до дня экзамена, выдаются на руки в 9 часов утра местного времени, по проходам ходят прокторы, «прыжок на месте, конвой стреляет без предупреждения», головы не повернуть, в туалет - сдав работу и под конвоем, никаких телефонов или калькуляторов, словом - строго, не забалуешь, списывание и жульничество казались невозможными... казались.
Но «ставка больше чем жизнь», экзамен очень трудный, сдают его далеко не все - вот и решила группа врачей из одной страны схитрить.
Сразу оговорюсь - не из СССР, у нас не было ни опыта ни денег такое организовать, мы сдавали тяжело, кровью и потом, расскажу при случае.
А вот из какой страны конкретно - не помню, забыл, дело было четверть века назад с гаком. Итак, история.
Пользуясь разницей по времени начала экзамена, жулики наняли коллег в стране, где экзамены начинались за 10 часов до начала экзаменов в США, те пошли на экзамен не за сдачей, а тупо запомнить вопросы с целью переслать их коллегам за океан.
У тех было несколько часов наедине с книгами ответить правильно, каждый отвечал за 25-30 вопросов с каждой стороны океана, потом ребята в США обменялись ответами, постарались хорошо запомнить ответы и поутру пошли на экзамен, отстрелялись очень удачно, по их мнению.
Ан, нет... не тут-то было, на каждую хитрую жопу... вы наверно слышали, есть свой шурупчик с неприятной нарезкой.
Всю их группу вычислила программа статистического анализа - уж больно их ответы были похожи, как правильные так и неправильные.
Позвольте, а как там неправильным быть, если ребята отвечали по учебникам, вместе консультируясь чтобы прийти к консенсусу правильности ответа?
Вот это их и сгубило, единомыслие.
Оказывается, пару-тройку дюжин вопросов именно для этого и давали:
у них либо не было правильного ответа вообще (trick question) либо было два и более правильных ответа.
Таким образом, стандартизация ответов на такие вопросы вызывала немедленное подозрение...
А дальше всё было делом техники, федеральные службы быстро пришли к заключению, что жулики из одной страны, числом около 20, по одинаковым ответам.
И приблизительно столько же врачей в центре на родине, не сдавших, более того, даже не закончивших экзамен, не за сдачей они пришли - за запоминанием вопросов.
Всё закончилось печально и предельно жёстко: результаты аннулировали, аккредитацию отменили, внесли в чёрные списки без права сдачи, пожизненно.
Всё, собирай чемоданы и возвращайся, не солоно хлебавши, печаль...
«Меня же посадят!
А ты не воруй!”
Категорії: Анекдоты

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

Это как же нужно не любить свою страну, чтобы верить чиновникам?
Категорії: Анекдоты

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

СССР. Диктант в школе. Учительница читает:
- Вороне где-то бог послал кусочек сыра...
Пауза. Все ученики пишут.
- Вовочка, ты что руку тянешь?
- Мариванна, а вы говорили, что бога нет.
- Сыра тоже нет. Что же теперь - и диктант не писать?
Категорії: Анекдоты

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

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

Результат не заставил себя ждать, "двоечник" прибежал ко мне в кабинет с требованиями, дескать, у него и у его товарища одинаковые ответы, и он не понимает, почему он получил два, а его товарищ четыре.

Я сделал вид, что удивился, и попросил, чтобы они оба ко мне зашли для проверки. И ведь хватило же им ума, зашли. Я же, типа, экзамены перепроверил, поблагодарил обоих за честность, и "четверышнику" оценку тоже на двойку переправил.

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

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

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

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

В СССР опера "Иисус Христос Суперзвезда" была запрещена как религиозная пропаганда, в России - как богохульная.
Категорії: Анекдоты

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

Недавно понадобилась мне на даче паяльная лампа. Еле нашел, не пользовался, наверное, больше двадцати лет. Помыл, почистил, запустил. Когда лампа прогрелась и вышла на штатный режим (прозрачно-синее пламя, характерный звук, как от маленького реактивного двигателя), на шум подтянулся старший сын двадцати трех лет. Несколько минут смотрел, как завороженный на пламя, потом говорит:
- Что-то у меня этот звук вызывает какие-то тревожные ощущения, ноет от чего-то в груди и аж озноб с мурашками по всему телу…
Во как! Сразу вспомнилась история из былинных уже времен, когда жена была сынулей еще беременная.
Итак, 1994 год, крупный сибирский город практически на границе с северным Казахстаном. Примерно середина ноября. Жена уже хорошо беременная первенцем (срок около восьми месяцев) – закапризничала: К маме хочу! Ну к маме, так к маме, мама-то почти рядом живет, всего 600 км, в Акмолинской области Казахстана (бывшая Целиноградская). На поезде вообще не вариант, почти сутки в дороге (поезд до Кокчетава, потом автобус), самолеты не летают (уже не помню почему), но у меня 3-х летняя 99-я (ВАЗ-21099), в хорошем состоянии – решили поедем на машине. Есть небольшой бизнес, но партнер вменяемый (Дима – привет!), так что могу себе позволить отлучиться на 4-5 дней.
Краткое отступление: Северный Казахстан в то время - очень и очень неприятное место для жизни. Нет бензина и солярки, вообще нет, от слова совсем, все заправки закрыты, веерные отключения электроэнергии (свет дают всего на несколько часов в день). Массовый исход местного населения, например, этнических немцев в Германию - уезжают целыми деревнями. Потом где-то прочитал, что выехало их тогда в Германию из северного Казахстана около одного миллиона человек. Разрушены все экономические связи, инфляция, но зарплаты и пенсии не платят, зато процветает бартер и натуральный обмен. Короче, полная разруха, наложенная на огромные расстояния между городами, деревнями и поселками (50 км – норма), степь и зимние страшные бураны, иногда продолжительностью по несколько недель. Когда при минус 10-15 градусах дует сильнейший ветер со снегом, видимость 20-50 метров, в лучшем случае, и напрочь заметает все дороги. Я лично видел участок в несколько километров, где при расчистке дороги К-700 (большой мощный трактор) специальным грейдером с выбросом снега, просто копал канаву с высотой стенки около 4-х метров (!), делая каждые 500 метров «карман» для разъезда встречного транспорта. Был в то время даже случай, когда рейсовый автобус замело и замерзли все пассажиры, не говоря уже об многочисленных происшествиях с трагическим концом с единичными автомобилями.
Но мы едем! В машине уверен, перебрана ласточка своими руками почти полностью. В последнем российском поселке на границе заливаю полный бак бензина и две канистры в багажнике (20 и 30 литров). А также, с собой полный набор инструментов (только кувалды и наковальни не было))) и запчасти на все случаи жизни. Как-то: ремень генератора, ремень ГРМ, коммутатор, катушка, датчик Холла, крышка трамблера, высоковольтные провода, свечи, передний кронштейн (краб), патрубки, предохранители, бензонасос и т.п. Естественно: масло, тосол, тормозная жидкость и обязательно паяльная лампа. Может забыл уже чего за давностью лет, но любой мелкосрочный ремонт на дороге сделал бы без особых проблем. Надежностью те машины, мягко сказать, не отличались, поэтому это было очень и очень даже актуально.
Выехали уже поздно вечером, дорога сухая, подморозило, где-то минус 12-14 градусов, небо чистое, снега на полях почти нет, транспорта за границей тоже, раз в 15-20 минут проходит встречка, а попутных машин вообще ни одной. Держу скорость 80-90 (дорога не очень), планирую часов за десять доехать до места, жена дремлет. Отъехали примерно 150 км от границы, вдруг машина глохнет на ходу, шепотом ругаюсь и открыв капот, выскакиваю из машины. Так, бензин в карбюраторе есть, что с искрой? Прошу жену крутнуть стартером. Искры нет, ни на свечных проводах, ни на проводе с катушки. БЛИН!!! Неужели ремень ГРМ (газораспределительный механизм)? Да я его три недели назад в гараже, только поменял на новый. Сдергиваю пластиковый кожух – точно ремень. Все было бы не так страшно, двигатель объемом 1500 при обрыве ремня, клапана не заминает (в отличии от 1300), меняй ремень и дальше, только вот возни с ним много, я в гараже (светло, тепло) тогда больше 3-х часов поковырялся. Сгоряча выскочил в одном свитере, уже замерз. Что делать!? Вокруг степь, машин нет, ни огонька вокруг, только звезды светят, небосвод весь усыпан, как алмазной пылью с вкраплением крупных сверкающих бриллиантов, такого в городе никогда не увидишь. Как там у Высоцкого: «Кругом 500…». Тут 50, но от этого не легче, дует по степи, ровной как стол, неслабый такой ветерок, вместе с морозцем, на улице, мало сказать, весьма некомфортно. Оделись, сели в машину, тоже быстро остывает, прокрутил в голове все свои действия. Рассиживаться некогда и ждать кого-либо тоже. Мобильников тогда, напомню, еще не было, как и эвакуаторов. Вышел, достал старый рабочий бушлат из багажника, запустил паяльную лампу, ослабил крепления генератора, поддомкратил и снял переднее левое колесо. Скинул ремень генератора, посадил жену за руль, включив предварительно передачу, сказал нажать на тормоз и держать. Открутил храповик и шкив на коленвале (ключ на 32, если что…). Ослабил прижимной ролик, снял нижнюю крышку, теперь метки на шестернях коленвала и распредвала выставить, ошибаться нельзя. Надел ремень, накинул шкив и храповик и прокрутил монтировкой двигатель несколько оборотов, проверил метки. Есть! Попал точно, теперь все собрать. Я сейчас это коротко рассказываю, но короткое слово «снял», «надел», «поставил» и т.п. - подразумевает множество действий, не всегда удобных и простых, и руки очень быстро «засыхали», хоть и в тряпочных перчатках, но их «крючило», переставали они держать стальной инструмент, грел по-быстрому у паяльной лампы (больно, когда отходят, но что делать?). Жена тоже замерзла в машине, сидеть еще холодней, встала приплясывая у «огонька», губы дрожат, то ли от холода, толи от волнения. Всё собрал, кожух не стал одевать, и не ставя колесо, завел – УРА! Работает! Наверное, установил рекорд, достойный книги рекордов Гиннесса, по замене ремня ГРМ в полевых условиях. Уложился в минут 20-25. Я сидел в заведенной машине и медленно отходил от холода и напряжения, а жена рядом беззвучно плакала, наверное от облегчения.
- Может домой поедем? – спросил я, гладя ее по плечу. Она только коротко кивнула. Ну да, такой намек свыше, что не стоит точно дальше судьбу испытывать. Поставил я колесо, развернулся и двинулся в сторону дома (добрались уже без приключений). Утром жена позвонила матери, а та уже извелась вся, у них буран начался. Вот и думай, чего это новый ремень порвался, может заводской брак, а может и ангел-хранитель постарался. Через примерно месяц, почти в положенный срок, родился сын и история эта как-то позабылась с годами. А тут вдруг такая реакция на звук паяльной лампы у него неожиданно проявилась.
- Ну вы и придурки… были… – только и произнес сын, выслушав мою историю.
Ну да, согласен теперь полностью. Эх молодость, молодость…
Категорії: Анекдоты

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

Чтобы собраться с мыслями, надо, чтобы их было не меньше двух
Категорії: Анекдоты
Syndicate content