Архив автора: admin

Анекдоты разные

Анекдоты

Муж возвращается домой, жена моет пол, он ее по заднице хлопнул и говорит: 'Убери свой комбайн с дороги' она обиделась, а ночью муж к ней лезет с интимными намерениями: 'Ну, повернись ко мне, дорогая' Жена ему: 'Щас! буду я из-за одного колоска свой комбайн разворачивать, отвернись и молоти вручную!'

***********************************

Жена красуется перед зеркалом и говорит мужу:

— Я сегодня была у доктора и он сказал,

что у меня грудь как у двадцатилетней девушки …

— А, про пятидесятилетнюю жопу он ничего не говорил???

— Нет… Про тебя он не спрашивал…

************************************

Воскресенье, будучи слегка на веселе, нашел дома кулек сухофруктов. Дай, думаю, компот сварю. Сварил. Фрукты все равно никто не будет есть, решил отцедить. Поставил дуршлаг в раковину и слил жидкость. Долго стоял над раковиной в ступоре, много думал…

************************************

Молитва женщины: — Господи, дай мне мудрости, чтобы понимать мужчину, дай мне терпения, чтобы принимать его таким, какой он есть. Силы только не давай, Господи, ведь прибью его нахрен!!!

************************************

galikin. 3

Заходит маленькая скромная старушка (С)(божий одуванчик) в Манхеттенский банк и подходит к окошку и говорит: «Милочка, я хочу положить 1 миллион долларов». Ей отвечают:» По такому вопросу вам необходимо пройти к директору банка» и проводят к директору банка (Д). «Откуда у вас, бабушка, такие деньги?» спросил директор. «Понимаешь, милок, я люблю спорить на деньги вот, например могу поспорить с тобой на этот миллион, что завтра в полдень у тебя яйца станут квадратными».

(Д) — Вы же понимаете, что этого не произойдет и вы проиграете!

(С) — А ты за меня не переживай, притом куда мне столько денег?

(Д) — Ну ладно, я согласен, до завтра!

На следующий день в пол-двенадцатого к директору приходит старушка, а с ней молодой человек официального вида (в костюмчике, очках, с дипломатом).

(С) — Это мой адвокат, чтоб все было без обмана, по-честному.

Все сели и стали ждать 12 часов. Вот часы пробили 12 и директор говорит:» Ну все, бабуля, вы проиграли, ваш миллион долларов становится моим». На что старушка еу отвечает:» Вы конечно меня извините, но я должна сама убедиться в этом» и подошла к директору. Директору ничего не оставалось как встать и снять штаны. Старушка стала трогать его яйца, а в это время адвокат, который скромно сидел, начал биться головой об стену.

(Д) — Что это с ним?

(С) — А я с ним поспорила на 5 миллионов долларов, что потрогаю за яйца директора Манхеттенского Банка!

***************************************

galikin. 2

7-летний пацан подговаривает 4-летнего братишку:

— Слышь, братан, мы с тобой уже большие, пора нам начинать ругаться.

— Пора, — соглашается малыш.

— Значит, план такой, — говорит старший. — Завтра утром выходим завтракать, я говорю «бля», а ты — «на х%й». И следим за реакцией родителей.

Сказано — сделано. На следующее утро сидят на кухне, мама обращается к старшему:

— Тебе что на завтрак положить?

— Мне бы, бля, оладушки, — бойко отвечает тот.

ХРЯСЬ! — мама со всей дури отвешивает ему подзатыльник, и пацан в слезах убегает из кухни, держась за голову.

— Ну, а тебе что? — с угрозой в голосе спрашивает мама у младшего.

— Да я уж и не знаю, — робко отвечает малыш, — но только на х%й мне такие оладушки!

*************************************

Сижу на экзамене, не знаю, как решить задачу. Вылез с мобилы в асю. Какой-то незнакомый чувак от доброй души решил мне помочь. Сдаю работу. Препод ее смотрит и мне говорит: «Слушай, я ща какому-то чуваку в аське точно такую же задачу сделал»

*************************************

Случай в театре. Спектакль для детей. Момент, где вот-вот должен появиться главный злодей — свет выключен, оркестр настороженно так жужжит. в зале тишина. И тут такой тоненький детский голосок: «Еб твою мать! Страшно-то как!!!»

**************************************

Собрались чебурашка и гена выпить.
— Гена, я пьяный буйствую.Ты меня за это не бей.
На следещее утро просыпается чебурашка весь в синяках…
— Гена, ну я же просил!!!
— Когда ты съел всю закуску, я тебе ничего не сделал.Когда выпил всю водку, я тебе тоже ничего не сделал, но когда ты нагадил в углу, понатыкал туда спичек и сказал, что ежик будет жить с нами- я не выдержал…

**************************************

Строитель заходит в салон Бэнтли:
— Сколько стоит такая машина?
— $1 000 000.
— Ого! А если в рассрочку на год.
— $ 83 334 в месяц.
— Да уж! А если на два?
— $41 667.
— Неа… А если на три?
— $27 778. А Может вам стоит присмотреться к машинам подешевле?
— Нет. Плита упала именно на такую машину!

**************************************

Муж с женой едут на машине и ссорятся. Проезжая мимо одной деревни, видят пару свиней. Муж:- Твои родственники?…- Ага, свёкр и свекровь…

Цитаты категории «юмор»

Рейтинг: 663

99
20 марта 2011
Утро. Пытаюсь найти кота. Иду по коридору и кричу: — Ну и где ты, чуда ты мое волосатое? Получаю два ответа, хором: Муж: -Здесь я в ванной! Бреюсь! Сын: -Да в туалете я! Кот молчит…
Автор неизвестен
Опубликовал(а)  lakrista

Рейтинг: 663

84
18 января 2011
«Слишком чистая совесть тоже спать не дает. Постоянно работает, как антивирус в режиме глобального сканирования — грехи выискивает»
Автор неизвестен
Опубликовала  LARISS^A

Рейтинг: 663

141
30 ноября 2010
— Надоели эти тараканы — а ты купи мелок?- купил!!! — и как, помогает??? — помогает, захожу домой, смотрю, сидят, рисуют)
Автор неизвестен
Опубликовала  Катенька*))

Рейтинг: 660

140
08 апреля 2010
Жизнь нужно прожить так, что бы было стыдно рассказать, но чертовски приятно вспомнить
Опубликовала  Ольга1118

Рейтинг: 657

43
27 февраля 2011
Бабка, увидевшая свободное место в автобусе — самый быстрый зверь на планете!!!:)))

Рейтинг: 655

140
06 июля 2010
Если я говорю, что не брала, значит, не отдам!
Опубликовал(а)  Lexa$

Рейтинг: 651

62
19 апреля 2011

Если когда-нибудь Ваш муж упрекнет Вас в том, что Вы ВСЕГО ЛИШЬ СИДИТЕ ДОМА С РЕБЕНКОМ, а не «работаете с утра до вечера, как он» — СКАЖИТЕ ЕМУ, ЧТО:

1) на работе вам не надо следить, чтобы ваш коллега не брал в рот колесико от машинки, не залезал на стул и не рисовал на обоях.

2) Вы можете быть уверены, что коллега поест аккуратно.

А вам не придется убирать за ним суп, разлитый по полу.

Кстати, он не будет делать вам в лицо ПФФФФФ, набрав этого супа в рот.

3) если вы решите выйти вме… читать дальше →

Автор неизвестен

Рейтинг: 650

139
19 января 2011

Жена приходит утром домой пьяная в дрыбадан. Муж бегает вокруг неё, кричит: «Если бы у меня был нож, — я б тебя зарезал!… Если бы был пистолет, — застрелил бы!»… Она голову поднимает: «А ты забодай»…

Автор неизвестен
Опубликовал(а)  kissa

Рейтинг: 649

132
31 января 2011

— Привет, дорогой! Я в сауне. Здесь всё, как ты и говоришь: никаких баб, одни мужики!!!

Автор неизвестен

Рейтинг: 648

137
23 декабря 2010
Парочка идет по улице. Парень провожает взглядом красивую блондинку. Девушка ловит его взгляд и спрашивает: — Ну и стоила она тех пиздюлей, которые ты сейчас получишь!
Автор неизвестен
Опубликовала  Anuta =)

Рейтинг: 647

147
26 января 2011
Муж с женой едут на машине и ссорятся. Проезжая мимо одной деревни, видят пару свиней. Муж:- Твои родственники?…- Ага, свёкр и свекровь…

Лишний вес из за финансовых неурядиц

Если нездоровая экономия заставляет тебя периодически питаться парочкой лишних кексиков, жирной пастой и другими богатыми калориями углеводами – расслабься: ты такая не одна. Специалисты говорят, что экономическая ситуация оказывает сильное влияние на набор веса и плохие привычки в еде. Если за последний год ты побаивалась подходить к весам из-за страха увидеть последствия своих “вкусный утешений”, то ниже читай о том, как можно кушать с пользой и для здоровья и для кошелька, а также разрушить нездоровый стрессовый режим питания. Питание бьет по бюджету? Нестабильная экономическая ситуация часто выливается не только в высокий уровень стресса. Часто люди вынуждены урезать расходы – и пищевая смета страдает часто в первую очередь. Ведь свежие фрукты и овощи, а также нежирные белки, часто довольно дорого стоят, поэтому от них отказываются первыми. На замену им приходят более дешевые продукты, типа мучного и крахмала в виде, например, макарон. Нестабильная экономика порождает зависимость от углеводов Стресс и богатый углеводами рацион из “вкусных утешений” выливается в замкнутый круг, который ведет к набору веса. К тому же, стресс вызывает падение уровня сахара в крови, что в свою очередь вызывает постоянное чувство голода и тягу к простым углеводам. В период нестабильной экономики наблюдается увеличение потребления углеводов, в особенности сахаросодержащих закусок. Такая ситуация становится причиной обострения углеводо-зависимости потому, что люди используют углеводы как средство борьбы со стрессом. К сожалению, такой углеводный замкнутый круг почти всегда ведет к ожирению. Советы: как избавиться от вредных привычек в питании Недорогие перекусы могут принести облегчение стрессовой ситуации на короткое время, но набор веса, повышенный риск сердечнососудистых заболеваний и диабетов, перепады настроения станут составляющей нового стресса в будущем. Избавиться от привычки утешаться едой будет нелегко, но дальнейшее здоровье стоит твоих усилий. Не переходи резко от утешительного фаст-фуда к причудливым диетам. Делай выбор в пользу сбалансированного рациона. Все диеты основываются на ограничении одного из макронутриентов – жиров, белков или углеводов. Если твоя диета не содержит жиров, ты постоянно будешь голодной и склонной к внезапным пирушкам. Диета с низким содержанием белка также принесет постоянное ощущение голода. Чтобы избавиться от вредных привычек в области пищи, нужно изменить биохимию твоего организма, что, в свою очередь, будет активно способствовать изменению морального состояния. К примеру, рыбий жир – пища для мозга. Эта добавка принесет ощущение стабильности, и потребность в калорийной пище отпадет. Не стоит забывать и о других витаминах. Записывай все, что ешь. Тем, кто ведет такой дневник, намного проще воздержаться от соблазна что-то съесть, так как они знают, что каждое отклонение от диеты будет зафиксировано. Более того, исследования показали, что единственный надежный гарант потери веса – это такой дневник питания. Кроме того – этот способ абсолютно бесплатный! Позволь себе два «мошеннических» обеда в месяц. В это время ты можешь есть все, чего тебе хочется больше всего. Осознавая, что один или пару раз можно дать себе волю, будет проще придерживаться диеты. Постоянно преследующее тебя чувство нехватки чего-либо только даст лишний повод вернуться к замкнутому кругу набора веса с углеводными “утешителями”. Кушай регулярно, чтобы поддерживать уровень сахара в крови. Единственный источник энергии для мозга и нервной системы – это сахар, и именно от его уровня зависит чувство удовлетворения жизнью. Пропуск приемов пищи, напротив, заставляет мозг работать натощак, что становится причиной неконтролируемой тяги к нездоровой пище, уже не говоря о внезапных перепадах настроения. Поставь себе задачей каждые 3-4 часа снабжать организм сбалансированной пищей. Балансируй свои приемы пищи. Твой уровень инсулина влияет на подход к пище. Когда уровень стабилен, ты довольна жизнью, счастлива и энергична. Когда же инсулин колеблется – например, когда ты питаешься высокоуглеводной бедной пищей – мучает постоянный голод, настроение нестабильное, усталость, и это, в свою очередь, склоняет тебя к еще более бедной питательными веществами пище. Сбалансированная пища – единственный способ разорвать этот замкнутый круг. Чтобы контролировать уровень инсулина (а также и вес), просто раздели свою тарелку на три равных части. Одна
часть – это нежирная белковая пища в таком количестве, чтобы умещалась на твоей ладони (примерно 90-120 грамм). Две трети отдели под некрахмалистые овощи и фрукты в любом количестве. И наконец добавь капельку оливкового масла. Такая пища не просто полезна – она стабилизирует уровень сахара, помогает держать мысли в порядке и бороться с какими-то финансовыми затруднениями станет легче. На кухне держи только полезные продукты. Если на кухне у тебя есть фаст-фуд — то он все время будет тебя соблазнять.

Python 3: Импорт и юникод

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

Русские идентификаторы

Чуть меньше бросается в глаза тот факт, что идентификаторы тоже стали юникодными. Уважаемые читатели, если вы используете третий питон и недостаточно хорошо владеете английским — пишите по русски. Это выглядит гораздо лучше, чем убогое средство под названием «транслитерация». Оцените сами:

def функция(агрумент):
коэффициент = 5
return агрумент * коэффициент

Это на самом деле здорово!

Еще один не вполне очевидный момент: имена модулей тоже могут быть в юникоде:

from . import вспомогательный_модуль

Тоже выглядит неплохо, верно? Есть только одна небольшая проблема: это не всегда работает. Вернее, на Windows возможны неприятности. И не нужно заявлять, что вопросы, касающиеся самой популярной на сегодняшний день операционной системы — никого не волнуют. Подавляющее большинство разработчиков самого Питона Windows не используют — и тем не менее Питон обязан на ней работать, и работать хорошо.

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

Юникод в C API

В Python 2 немалая часть Python C API принимала char * там, где требовалась строка. Поскольку str и был последовательностью байт — сложностей не возникало.

При переносе кода на Python 3 нужно было с этим что-то делать: strстал юникодным типом, последовательностью символов.

Но в С нет удобного типа для unicode! Вернее, существует стандартный тип wchar_t, который обременен множеством проблем. Главные из них: в разных реализациях этот тип имеет различный размер: 16 бит для UCS-2 и 32 бита для UCS-4. К тому же Windows (о, снова она) не поддерживает UCS-2 в полной мере (UCS-4 не поддерживает совсем).

Хуже всего то, что на некоторых платформах этот wchar_t попросту не определен.

Таким образом, использовать wchar_t в Python C API нельзя.

Сам Питон вводит тип Py_UNICODE для этих целей. Но и тут не все гладко. Этот тип не входит в Limited API (PEP 384).

Кроме того, разработчики не хотели радикально заменить все char * на что-то другое.

Есть еще и вопрос практического удобства: ведь очень здорово писать

ret = PyObject_GetAttrString(obj, "attribute");

Для wchar_t все гораздо сложнее, далеко не все компиляторы поддерживают строковые юникодные константы.

В свете вышеописанных причин Python C API продолжает использовать char *, считая, что эти строки имеют кодировку UTF-8 если явно не указано иное. Т.е. прототипы функций C API выглядят как:

PyObject *
PyImport_ImportModuleLevel(char *name, PyObject *globals,
PyObject *locals, PyObject *fromlist,
int level);

Это — импорт модуля с именем name, которое передается как UTF-8строка, аналог питоновской функции __import__.

И эта функция — лишь верхушка используемого механизма. В процессе импорта вызываются довольно много внутренних закрытых функций — и везде используются переменные вроде char *name в качестве имен модулей. В кодировке UTF-8, еще раз напомню.

А ведь имя модуля транслируется в путь к файлу! А кодировака файловой системы может отличаться от UTF-8. Счастливые пользователи Linux давно об этом забыли — в подавляющем большинстве систем по умолчанию как кодировка пользователя (переменная окружения LANG) так и файловой системы установлены в UTF-8 и проблем нет совсем. Но в общем случае это не всегда так.

Кодировки по умолчанию

Чуть-чуть о кодировках. Для определения используемых по умолчанию кодировок в питоне существуют три функции: sys.getdefaultencoding, sys.getfilesystemencoding и locale.getpreferredencoding.

  • sys.getdefaultencoding() — кодировка по умолчанию, используемая в питоновских исходниках. Для третьего питона всегда равна UTF-8. Это — та самая кодировка, которую можно перекрыть написав в начале файла

    # -*- encoding: utf-8 -*-
  • sys.getfilesystemencoding() — кодировка файловой системы. Например, для

    f = open('path/to/file', 'r')

    значение 'path/to/file' имеет тип str (юникод). Лежащая в основе функция из clib имеет прототип

    int open(const char *pathname, int flags, mode_t mode);

    Значит, 'path/to/file' должен быть преобразован в char *используя к
    одировку sys.getfilesystemencoding(). Конечно, в Python C API есть специальные функции для этого.

  • locale.getpreferredencoding() — предпочтительная для пользователя кодировка. Она устанавливается в региональных настройках и к файловой системе прямого отношения не имеет.

Теперь снова вспомним нашу горячо любимую Windows.

locale.getpreferredencoding() возвращает 'cp1251' — Windows настроена на русский язык. Кодировка для консоли (sys.stdout.encoding) другая, это 'cp866' — что добавляет сумбура в и без того запутанную проблему. Ну да ладно, не будем отвлекаться.

sys.getfilesystemencoding() возвращает 'mbcs'. И вот здесь начинаются основные чудеса. Обратите внимание, mbcs — это не cp1251. Равно как и не cp1252 или какая другая кодировка. mbcs — это нечто совершенно особенное!

Multibyte character set (кодировка MBCS)

При преобразовании mbcs -> unicode используется кодировка из locale.getpreferredencoding(), преобразование однозначное и проблем не вызывает.

Для обратного преобразования unicode -> mbcs тоже используется locale.getpreferredencoding() (cp1251 в нашем случае). Но cp1251 не может описать любой юникодный символ. А mbcs — хитрый и коварный. Если для символа не существует точного преобразования — используется ближайший похожий по начертанию.

Это непросто понять без примера. Давайте возьмем французское слово comédie и попробуем преобразовать его в mbcs, имея руский язык cp1251 в настройках по умолчанию.

Возьмем Python 3.1:

>>> b = b'comxc3xa9die'
>>> s = b.decode('utf8')
>>> s.encode('mbcs')
b'comedie'

Посмотрите, какая прелесть! Для символа é в русской раскладке cp1251 нет подходящего аналога. Но ведь английская буква e так похожа: нужно лишь убрать умляут (англ. umlaut, французы зовут этот знак accent aigu). Так и получили преобразование comédie -> comedie без единой ошибки.

А теперь представьте, что это — имя файла. Результат будет следующим: файл на диске есть, и так как в Windows файловая система юникодная, имя файла будет записано правильно, по французски. Но преобразование unicode -> mbcs даст несколько другое имя, которого на диске нет.

В результате получается изумительная по своей красоте ситуация:

f = open('comédie', 'r')

будет говорить, что файла нет — а на самом деле вот же он, красавец!

Справедливости ради нужно упомянуть, что в Python 3.2 поведение mbcsнемного поменялось, и 'comédie'.encode('mbcs') вызовет UnicodeEncodeError. Дело в том, что mbcs стал использовать режим strict по умолчанию. Чтобы повторить функциональность 3.1 следует указывать режим replace: 'comédie'.encode('mbcs', 'replace')

Юникодная файловая система

С mbcs мы разобрались и выяснили, что для работы с файловой системой эта кодировка в общем случае непригодна. Т.е. если я буду использовать русские имена файлов на русской Windows — всё будет хорошо. Но открыть этот файл у американца или голландца не выйдет. Что же делать?

В Windows помимо open есть еще и функция

FILE *_wfopen(const wchar_t *filename, const wchar_t *mode);

которая принимает wchar_t * и позволяет использовать оригинальное юникодное имя файла без всяких преобразований. Существует целый набор, начинающийся с _w — на все случаи жизни.

Значит, нужно делать следующее: для Windows использовать юникодные версии функций работы с файлами, а для всех остальных операционных систем применять .encode(sys.getfilesystemencoding()).

Реализация модуля io начиная с версии 3.1 так и поступает.

И снова импорт русских названий

Всё отлично за одним маленьким исключением — механизм импорта не использует io! Исторически сложилось так, что имя импортируемого модуля довольно быстро преобразовывается в sys.getfilesystemencoding() (с возможными ошибками и потерями, о которых я писал выше) и в таком виде пронизывает весь очень непростой и громоздкий код, чтобы попасть в функции стандартной библиотеки C.

Добавьте к этому довольно большой объем платформозависимого кода (на Маке все работает совсем не так, как на Linux) и проблему обратной совместимости (даже после объявления части API устаревшей она должна поддерживаться как минимум в двух следующих выпусках) — и вы сможете представить сложность и объемность задачи.

Так вот, после трехлетнего труда (с небольшими перерывами, естественно — это же добровольный некоммерческий Open Source) Victor Stinner завершил требуемое нелегкое преобразование. Дов
ольно незаметный, но очень важный шаг!

Файловые пути стали храниться в PyObject* (на самом деле это, конечно, strPyUnicodeObject), работающая с ними часть C APIимеет суффикс Object. Например:

PyObject *
PyImport_ImportModuleLevelObject(PyObject *name, PyObject *globals,
PyObject *locals, PyObject *fromlist,
int level);

Сравните с PyImport_ImportModuleLevel. Все функции из старого APIстали тонкими обертками над новыми вариантами. Так, PyImport_ImportModuleLevel создает PyObject из name и вызывает PyImport_ImportModuleLevelObject.

Эти старые функции оставлены для сохранения обратной совместимости, сам Питон их уже не использует.

Если быть честным, именно Windows поддержка чуть-чуть не готова — но до выхода Python 3.3 еще очень много времени. Достаточно, чтобы закончить работу и навести полный порядок.

Заключение

Я написал этот довольно длинный текст преследуя несколько целей:

  • Пожалуй, главная из них — показать, насколько порой незначительные внешне изменения способны перевернуть внутреннюю реализацию, и как нелегко их проделать не сломав того, что уже отлично работает пятнадцать лет.

  • Вторая — продемонстрировать, как работают кодировки применительно к файловой системе.

  • Третья — напомнить, что можно использовать русские буквы в идентификаторах. Комментарии излишни.

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

Автор: Andrew Svetlov

Ожерелье своими руками

Живые украшения

А вы задумывались когда-либо, что растения и цветы можно не только растить на даче, дома в горшочках, но и носить на себе, тем самым украшая не место, а самого себя? Живые украшения от дизайнера Полы Хайеса – вот то, что заставит вас об этом задуматься не на шутку и даже возжелать именно такую фенечку.

Живые украшения

Живые украшения

Читать

Где именно купить продление для антивируса: ищем магазин лицензий

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

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