Что с поиском «Яндекса»?

с поиском «Яндекса» происходит что-то очень неприятное. Не в первый раз вижу, что в каком-то запросе «Яндекс» запросто перестаёт учитывать какие-то слова. Свежий пример — запрос «нян кот ёлки-2», я хотел узнать откуда взялся Нянкот на тридцатьвосьмой секунде трейлера к фильму «Ёлки-2».

В результатах поиска легко увидеть, что «Яндекс» игнорирует слово «ёлки-2» в запросе. Кто-нибудь знает почему?

23 комментария

С Новым годом, что ли?

Я тут, чтобы мозг совсем не расслаблялся на праздниках, убил около часа и вручную сделал на Яваскрипте небольшое поздравление с Новым годом:

[][([]+{})[-~[]+(!![]<<!![]+!![])]+([]+{})
[-~[]]+([]+[][{}])[-~[]]+([]+!{})[!![]+!![]+
!![]]+([]+!![])[+![]]+([]+!![])[+!![]]+
([]+!![])[-[~[]+~[]]]+([]+{})[-~[]+(!![]<<!![]+
!![])]+([]+!![])[+![]]+([]+{})[-~[]]+([]+!![])
[+!![]]][([]+{})[-~[]+(!![]<<!![]+!![])]+([]+{})
[-~[]]+([]+[][{}])[-~[]]+([]+!{})[!![]+!![]+!![]]+
([]+!![])[+![]]+([]+!![])[+!![]]+([]+!![])
[-[~[]+~[]]]+([]+{})[-~[]+(!![]<<!![]+!![])]+
([]+!![])[+![]]+([]+{})[-~[]]+([]+!![])[+!![]]]
(([]+!![])[+!![]]+([]+{})[-~[]<<[-~[]+-~[]]]+
([]+!![])[-[]]+([]+[][{}])[-[]]+([]+!![])[+!![]]+
([]+[][{}])[-~[]]+([]+{})[~[]+(+!![]<<!![]+!![]+
!![])]+([]+![])[!![]+!![]+!![]]+([]+![])[!![]<<!![]+
!![]]+([]+![])[!![]+!![]]+([]+![])[-[]])()
[([{}-{}]+[])[-~[]]+([]+![])[!![]+!![]]+([]+![])
[!![]<<!![]+!![]]+([]+!![])[-~[]]+([]+!![])[+[]]](
[][([]+{})[-~[]+(!![]<<!![]+!![])]+([]+{})
[-~[]]+([]+[][{}])[-~[]]+([]+!{})[!![]+!![]+
!![]]+([]+!![])[+![]]+([]+!![])[+!![]]+
([]+!![])[-[~[]+~[]]]+([]+{})[-~[]+(!![]<<!![]+!![])]+
([]+!![])[+![]]+([]+{})[-~[]]+([]+!![])[+!![]]]
[([]+{})[-~[]+(!![]<<!![]+!![])]+([]+{})[-~[]]+
([]+[][{}])[-~[]]+([]+!{})[!![]+!![]+!![]]+
([]+!![])[+![]]+([]+!![])[+!![]]+([]+!![])
[-[~[]+~[]]]+([]+{})[-~[]+(!![]<<!![]+!![])]+
([]+!![])[+![]]+([]+{})[-~[]]+([]+!![])[+!![]]]
(([]+!![])[+!![]]+([]+{})[-~[]<<[-~[]+-~[]]]+
([]+!![])[-[]]+([]+[][{}])[-[]]+([]+!![])
[+!![]]+([]+[][{}])[-~[]]+([]+{})[~[]+(+!![]<<!![]+
!![]+!![])]+([]+![])[!![]+!![]+!![]]+([]+![])
[!![]<<!![]+!![]]+([]+![])[!![]+!![]]+([]+![])
[-[]])()[([]+![])[-~[]]+([]+!![])[+![]]+([]+{})
[-~[]]+([]+{})[!![]+!![]]](([]+![])[-~[]]+
([][([]+{})[-~[]+(!![]<<!![]+!![])]+([]+{})[-~[]]+
([]+[][{}])[-~[]]+([]+!{})[!![]+!![]+!![]]+([]+!![])
[+![]]+([]+!![])[+!![]]+([]+!![])[-[~[]+~[]]]+
([]+{})[-~[]+(!![]<<!![]+!![])]+([]+!![])[+![]]+
([]+{})[-~[]]+ ([]+!![])[+!![]]]+[])[(-~[]+[+![]])-!![]])+
([]+![])[-~[]]+
(/!/[([]+{})[-~[]+(!![]<<!![]+!![])]+([]+{})[-~[]]+([]+[][{}])
[-~[]]+([]+!{})[!![]+!![]+!![]]+([]+!![])[+![]]+([]+!![])[+!![]]+([]+!![])
[-[~[]+~[]]]+([]+{})[-~[]+(!![]<<!![]+!![])]+([]+!![])[+![]]+([]+{})
[-~[]]+([]+!![])[+!![]]]+[])[+!![]+[!![]<<!![]-~[]]]+
(/!/[([]+{})[-~[]+(!![]<<!![]+!![])]+([]+{})[-~[]]+([]+[][{}])
[-~[]]+([]+!{})[!![]+!![]+!![]]+([]+!![])[+![]]+([]+!![])[+!![]]+([]+!![])
[-[~[]+~[]]]+([]+{})[-~[]+(!![]<<!![]+!![])]+([]+!![])[+![]]+([]+{})
[-~[]]+([]+!![])[+!![]]]+[])[+!![]+[!![]<<!![]-~[]]]+
([]+[~[]/[]])[[[!![]+!![]]*[!![]+!![]]]*[!![]+!![]]]+
([]+{})[~[]+(+!![]<<!![]+!![]+!![])]+
([]+[][{}])[-~[]]+
([]+{})[-~[]<<[-~[]+-~[]]]+
([][([]+{})[-~[]+(!![]<<!![]+!![])]+([]+{})
[-~[]]+([]+[][{}])[-~[]]+([]+!{})[!![]+!![]+!![]]+([]+!![])
[+![]]+([]+!![])[+!![]]+([]+!![])[-[~[]+~[]]]+([]+{})[-~[]+
(!![]<<!![]+!![])]+([]+!![])[+![]]+([]+{})[-~[]]+([]+!![])
[+!![]]][([]+{})[-~[]+(!![]<<!![]+!![])]+([]+{})[-~[]]+
([]+[][{}])[-~[]]+([]+!{})[!![]+!![]+!![]]+([]+!![])[+![]]+
([]+!![])[+!![]]+([]+!![])[-[~[]+~[]]]+([]+{})[-~[]+
(!![]<<!![]+!![])]+([]+!![])[+![]]+([]+{})[-~[]]+([]+!![])
[+!![]]](([]+!![])[+!![]]+([]+{})[-~[]<<[-~[]+-~[]]]+
([]+!![])[-[]]+([]+[][{}])[-[]]+([]+!![])[+!![]]+([]+[][{}])
[-~[]]+([]+{})[~[]+(+!![]<<!![]+!![]+!![])]+([]+![])
[!![]+!![]+!![]]+([]+![])[!![]<<!![]+!![]]+([]+![])
[!![]+!![]]+([]+![])[-[]])()+[])[([]+![])[!![]+!![]+
!![]]+([]+![])[!![]+!![]]+([]+[][{}])[!![]+(!![]<<!![]+!![])]+
([]+{})[!![]+(!![]<<!![]+!![])]+([]+!![])[!![]+!![]+!![]]](~[]+~[])[-[]]+
([]+{})[~[]+(+!![]<<!![]+!![]+!![])]+
(~[]/[]+[])[-~[]<<-(~[]+~[]+~[])]+
([~[]<[]]+[])[-[~[]+~[]+~[]]]+
([{}-{}]+[])[-~[]]+
 ([]+!![])[+!![]]+
(/!/+[])[-~[]])

Запускать лучше всего в консоли браузера (в Firebug, Dragonfly и так далее). Цели сократить код у меня не было, более того, кое-где для разнообразия (буквы-то повторяются) я придумывал разные конструкции, чтобы не так скучной было. С Новым годом!

Если кого-то поразило это буйство скобочек, то намекаю ещё раз — это полноценная программа на Яваскрипте.

24 комментария

Из уважения к другим пассажирам выдерните шнур и выдавите стекло

Раковина в самолёте (104.04КиБ)

28 декабря летел из Москвы и обратил внимание, в очередной раз, на эту надпись. Я ни разу не протирал раковину полотенцем после себя, просто не понимаю зачем и причём тут уважение. Объясните пожалуйста, вероятно я делаю что-то неправильное.

16 комментариев

Почему и зачем?

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

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

«Почему» — это «по какой причине». В причинно-следственной связи вас спрашивают о причине. Что вас побудило так сделать?

«Зачем» — «с какой целью». В причинно-следственно связи спрашивают об ожидаемом следствии. Что вы хотели получить?

39 комментариев

Берегись лета, Москва!

С 1 января 2012 года в нашей стране не осталось ни одной организации, имеющей законное право тушить лесные пожары. С этой даты вступает в силу норма федерального закона от 4 мая 2011 г. № 99-ФЗ «О лицензировании отдельных видов деятельности», согласно которой в перечень видов деятельности, на которые требуются лицензии, входит деятельность по тушению лесных пожаров.

С лесного форума «Гринпис» в России цитата.

6 комментариев

Храм в честь Кирилла Белозерского

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

Там находится заброшенный храм Кирилла Белозерского, построенный в 1723 году к пятидесятилению Петра Первого на средства его сподвижника — Мефодия Никитича Кудрявцева, а за год до этого село посетил сам император.

Храм в хорошем состоянии, внутри частично сохранилась роспись. Из Казани для восстановления храма определили проштрафившегося священника, но он так там и не появился, за что его отстранили от должности.

Сейчас богослужение проводит священник из соседнего прихода, а внутри храма стоит импровизированный фанерный алтарь. Помещение просторное, рассчитанное на большое количество прихожан (сейчас в селе не наберётся и полусотни человек, а сто лет назад там жило почти 1300).

Зимний вид на старинную кирпичную церковь с черным куполом и крестом, покрытую снегом, на фоне голубого неба и голых деревьев.
Вид снизу на старинную кирпичную колокольню с шпилем и крестом, частично скрытую голыми ветвями деревьев на фоне светлого неба.
Фрагмент древней фрески с изображением Христа в мандорле, сильно повреждённый: осыпавшаяся штукатурка и белые пятна покрывают большую часть поверхности, фигура видна частично.
Фрагмент фрески с изображением Христа в красно-синих одеждах с распростёртыми руками на фоне трещин и осыпей штукатурки в арочном нише.
Фрагмент потрескавшейся фрески: Иисус в розовой и зелёной одежде стоит у изголовья лежащего на постели человека, протягивая к нему руку; видны следы времени и облупившаяся краска.
Фрагмент древней фрески с изображением нескольких фигур в одеждах, вероятно, святых или апостолов, с нимбами над головами; живопись сильно повреждена, покрыта трещинами и осыпями.
Потрескавшаяся фреска с изображением группы людей в плащах под деревьями, частично скрытая отслоившейся штукатуркой и белыми пятнами.
Зимний пейзаж с разрушенной кирпичной церковью и колокольней, покрытыми снегом, на фоне голых деревьев и пасмурного неба.

Урок на будущее: ехать нужно раньше, пока есть солнце, одеваться попроще и брать с собой фонарик. Возможно ещё стоит с собой брать лыжи. Если бы не добрый мужик на снегоходе, мы бы до храма не дошли (и даже с его помощью часть дороги пришлось пройти по колено в снегу).

Остальные фотографии можно посмотреть на «Яндекс.Фотках».

10 комментариев

Ухерачиватель ссылок

Я уже высказывался против укорачивателей ссылок. А теперь свежий образчик маразма: вставляю в твит ссылку «http://jplayer.org», Твиттер говорит мне «внимание ссылка будет сокращена» и преобразует мою и без этого короткую ссылку вот в такое безобразие: «http://t.co/TAfKdKrX».

Твиттер, зачем ты сделал мою ссылку на два символа длиннее и в бесконечность раз непонятнее?

In [2]: len('http://t.co/TAfKdKrX')
Out[2]: 20

In [3]: len('http://jplayer.org')
Out[3]: 18

32 комментария

Казюк-грободёр

ГРОБОДЁРЫ. Колл. Прозвище жителей Казанской губернии. Так обзывают уржумские крестьяне жителей Казанской губернии за то, что они, по их мнению, берут всё дорого (Вят.)

КАЗЮ́К, -а. м. (…) Казан. Шутл. Прозвище жителей Казани (1911)

Цитата из «Большого словаря русских прозвищ». Х. Вальтер, Валерий Михайлович Мокиенко.

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

К ✈ М ✈ К → М → К ✈ М ✈ К 

Эта шифровка наверху означает, что я в субботу и воскресенье (14 и 15 числа) буду в Майкопе, это Адыгея.

Лечу из Казани в Москву, оттуда в Краснодар, оттуда еду в Майкоп, потом в обратном порядке.

14 комментариев

CSS hack: firefox 3.5+

Для «Файерфокса» есть простой, не то чтобы даже CSS-хак, а просто метод «обнулить» свойство специальным значением, если именно для этого браузера это и требуется. В CSS3 для этого придумано значение «initial», которое «Файерфокс» поддерживает должным образом с версии 3.5 (для некоторых свойств это значение поддерживается аж с первой версии). Значение поддерживается с префиксом, что и позволяет его использовать как своеобразный CSS-хак:

body {
    background-color: red;
    background-color: -moz-initial; /* для FF — значение свойства по-умолчанию */
}

.blk {
    display: none; /* для всех браузеров блок скрыт, */
    display: -moz-initial; /* кроме FF */
}

Браузеры на основе «Вебкит» так же поддерживают это значение (со 125 сборки), правда безо всякого префикса.

2 комментария

Как говорят в Адыгее

Гощу у родственников, они живут в Ханском, это недалеко от Майкопа (Адыгея).

Интересен местный говор, наверное он более ростовский, чем адыгейский, не знаю. Сразу слышишь две вещи. Первое — вместо русского твёрдого «г», употребляют украинское, мягкое, второе — ударения иногда ставят очень необычно, например «по́минки».

Остальное постепенно всплывает в разговоре: «что я тебе хочу сказать за…», «гля» (от «глянь») и т. п.

В Адыгее тепло по нашим меркам. Сейчас середина января, вчера шёл дождь, плюс шесть температура, слякоть, сегодня лежит небольшой снег, но температура всё равно плюсовая. Но в феврале бывают и сильные заморозки, почти до тридцати. Летом — парилка, примерно 45 градусов тепла.

Рассказали, что в Адыгее очень низкие зарплаты, вроде как по статистике самые низкие по стране. Несколько тысяч рублей считается уже нормальной зарплатой. Высокий уровень безработицы, работу сложно найти.

12 комментариев

Персональный лайфхак против «болтанки» в самолёте

Я, вот, не боюсь летать на самолёте. Напротив, мне нравится встречать рассвет над облаками, смотреть как самолёт отрывается от взлётной полосы, как маневрирует, как прорывается сквозь облака, правда остальное время просто скучно. Но когда начинается «болтанка» иногда бывает страшновато, как и многим наверное.

Иногда трясёт так, что даже стюардессы бледнеют, как-то наблюдал это уникальное явление.

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

А как вы себя успокаиваете в этом случае? Или вас это просто не беспокоит?

30 комментариев

Голубые ещё и твиттили

Голубые иконки (37.80КиБ)

Что мне очень не нравится в «Айпаде» — это обилие в основных приложениях иконок неразличимых краем глаза. Мне сложно, не фокусируя на них взгляд, различить куда ткнуть. На скриншоте «Эпп стор», «Почта», «Сафари» и «Твиттер» на почти одинаковых плашках с преимущественно белыми элементами внутри. Рассеянным взглядом мне сложно уловить значимую форму на таких иконках.

Контуры (4.41КиБ)

Думаю, этому три причины: голубой цвет (человеческий глаз вообще хуже всего воспринимает именно синий спектр), одинаковые очертания (иконка и подложка воспринимаются как единое целое) и практически идентичная цветовая гамма. Несфокусированный взгляд ловит только края и какую-то мешанину основных цветов, без деталей, я размазал изображение для иллюстрации.

В этой связи мне подумалось, что если на «Айфоне» стандарт иконки «плашка со скруглёнными краями, на ней, в центре суть приложения» не мешал — там весь экран сразу охватывался сфокусированным взглядом, то в «Айпаде» это может и не работать, площадь больше, приходится шарить глазами и тут подошли бы больше иконки без плашек, c очертаниями, как это сделано во «взрослых» операционных системах.

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

11 комментариев

О закладках в БИОСе

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

8 комментариев

Ещё про названия на русском языке

Я уже как-то писал про своё отношение к названиям на русском языке, того, что в настоящее время по недоразумению пишется по-английски.

У меня ещё один аргумент появился.

Прочитайте вот эту аббревиатуру: НТС. Если вы прочитали её как «ЭйчТиСи», вы сделали ошибку, потому что я написал «ЭнТэЭс», это аббривеатура компании «НефтеТрансСервис».

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

58 комментариев

КГУ

Я помню, что когда учился в КГУ, в Казанском Государственном Университете (сейчас он называется КФУ), мы шутливо расшифровывали его как «Как будто Где-то Учился».

Я ещё знаю расшифровки ВУЗов «Могила Вырытая Трудами Учёных» (МВТУ), «Хер Где Такое Увидишь» (ХГТУ), «Моя Тут Учёба — Совершеннейший Идиотизм» (МТУСИ), «Много Алкоголиков, Мало Инженеров» (МАМИ), «Место Исторического Развития Эпидемии Алкоголизма» (МИРЭА).

У аббревиатуры вашего ВУЗа была альтернативная расшифровка?

30 комментариев

Лондонские сендвичи

Лондонские сендвичи (64.99КиБ)

Справа — фотография логотипа лондонского метро, сделанная Ильёй в Лондоне, в мае. Слева — логотип какой-то сендвичной, на улице Университетской, в Казани. Сегодня успел заснять из окна автомобиля сотовым телефоном.

7 комментариев

Всякая мелочь одним постом-8

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

В ЖЖ есть такой человек — Борис Борисович из Риги. Борис Борисович рисует рвущие шаблон рисунки, к сожалению, группировать по темам он их начал совсем недавно, так что ссылка, которую я дал, ведёт только на последние, остальные придётся искать по всему журналу. Некоторое количество его рисунков собрана в различных картинкопомойках и блевничках, обычно с заголовком «рисунки наркоманов», там их можно посмотреть много сразу.

Почему-то для многих трудная тема — использование «float» в CSS хорошо рассмотрена в статье «Float’омагия: пробуем не „плавать“ в спецификации, чтобы не утонуть в потоке» на «Хабре».

Некто Номина Обскура написал реальную (хочется верить) историю о том как звонок в горячую линию ФМС помог улучшить на 15 минут работу одного из учреждений. Кстати говоря, я как-то несколько лет назад звонил в горячую линию «Сбербанка», обслуживание в одном из отделений тоже улучишилось.

В Вильнюсе живёт Донатас Дубаускас (так же известный как Спящий Бык), местная достопримечательность. Донатас интересуется жизнью индейцев пауни и изготавливает вручную на продажу уникальные вещи, все в единственном экземпляре — индейские одежду, обувь, сумки, кошельки и т. п.

Германия готовится запретить перекуры на работе. Основной аргумент следующий: курильщики «получают возможность сделать дополнительный перерыв, а значит, подвергают дискриминации некурящих сотрудников… страдают работодатели, вынужденные оплачивать эти пробежки до „специально отведенного места“».

15 комментариев

«Альфа-банк» через восемь лет

20-й год? (49.16КиБ)

Я уже жаловался на ужасный интернет-клиент «Альфа-банка», но в прошлый раз то, что он показывает поддавалось хоть какой-то логике.

Сегодня я заметил, что у меня в некоторых платежах встречается тринадцатый и даже двадцатый год. Что бы это значило?

18 комментариев

Почерк

Я сегодня как-то умудрился заболеть «на ровном месте», за последние полгода я ночевал в холодных помещениях, ходил с промокшими ногами и мокрой головой по морозу, а тут за ночь дома, в тёплой кровати, с закрытыми форточками умудрился простудить горло.

Поэтому лежу в постели, смотрю фильмы и ем всякое полезное и противное.

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

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

Это не хорошо и не плохо, просто как факт.

3 комментария

Ёлки…

Смотрели «Ёлки-2»? Там есть момент, когда пассажирский самолёт с отказавшими двигателями садится на всеми забытую полосу, которую, однако, поддерживает в «боеспособном» состоянии её смотритель, не теряя веры, что она когда-нибудь пригодится.

Сегодня наткнулся на замечательный сайт «ТУГЕЗА», а там — на следующее описание:

Сергей Сотников — начальник вертолётной площадки в селе Ижма. Еще двенадцать лет назад эта площадка была пусть небольшим, но аэродромом. Но, как это часто бывает, бюджет урезали, взлётно-посадочную полосу закрыли и самолёты летать перестали.

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

В сентябре 2010 у Ту-154, летевшего из Якутии в Москву, отказали двигатели, и пилотам пришлось сажать самолёт с 72 пассажирами посреди тайги. Им повезло: на глаза попалась та самая списанная взлётно-посадочная полоса, за которой присматривал Сергей. Самолёт сел, все пассажиры остались целы.

История-то оказалось невыдуманной.

12 комментариев

Стеганография и пробел нулевой длины

Болею, не спится мне. Вспомнил старую свою идею.

В Юникоде есть такой символ замечательный — пробел нулевой длины (код 0x200B), на печать не выводится, понимается всеми современными браузерами и большинством редакторов. Интервала между буквами, как следует из названия, не даёт.

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

Например. Дан текст: «Болк», в нём надо скрыть короткий текст: «yes». Я взял английские символы, чтобы не заморачиватсья с кодировкой.

Коды символов «yes» — 121, 101, 115. Значит текст приобретает следующий вид:

[121 символ пробела нулевой длины]Б[101 символ пробела нулевой длины]о[115 символов пробела нулевой длины]лк

Можно, кстати, вычитать из кода символа 31, если мы не планируем использовать символы перевода строки и табуляции в скрываемом тексте. Небольшой код на Пайтоне, приведённый ниже, иллюстрирует идею.

​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​#​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ ​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​E​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​x​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​a​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​m​p​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​l​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​e​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ ​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​b​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​y​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ ​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​E​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​v​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​g​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​e​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​n​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​y Stepanischev
from itertools import groupby, izip_longest
import sys
import codecs

sys.stdin = codecs.getreader('utf-8')(sys.stdin)
sys.stdout = codecs.getwriter('utf-8')(sys.stdout)

toenc = 'Evgeny Stepanischev'
input = sys.stdin.read()

def decode(input):
    return ''.join(chr(31+len(list(x[1])))
            for x in groupby(input, lambda x: x == u"\u200b") if x[0])

def encode(input):
    if len(input) < len(toenc):
        raise ValueError()

    return ''.join(x[0] + x[1]
            for x in izip_longest((u"\u200b" * (ord(x)-31)
            for x in toenc), input, fillvalue=''))


print(encode(input) if input.find(u"\u200b") == -1 else decode(input))

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

В принципе, этот подход можно применять в вебе для маркировки своих текстов — браузеры, кроме вымирающих, нормально относятся к этому символу и отображают его адекватно.

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

14 комментариев

Некоторые проблемы SQLite

Товарищ Адепт пишет в ЖЖ про проблемы SQLite. Если вкратце, то выявлены минимум две проблемы.

SQLite при снятии дампа «CREATE VIEW» выписываются в порядке создания. Если у нас две вьшки, «A» и «Б», созданные в порядке перечисления и мы пересоздаём вьюху «А» с использованием «Б», то при заливке дампа будет ошибка — в дампе-то первым будет создание вьюшки «А», которая попытается использовать несуществующую вью «Б».

Если создана вью, в конце которой комментарий стоит, то и в дампе будет комментарий в конце строки создания, экранирующий конечную точку с запятой.

create view commented_view
  as select something
       from some_table -- pretty useless view;
create view another_view as…

5 комментариев

Ерунда на itertools и генераторах

Я люблю itertools и генераторы в Пайтоне, но как-то по работе пока не удаётся их применить, поэтому, чтобы не завять, приходится время от времени писать всякую ерунду.

Прочитал тут на «Хабре», что дробь 1/998001 даёт последовательность из чисел от нуля до 997. Вот я и написал код с использованием генераторов и itertools, который берёт эту дробь и выводит из неё все числа последовательно, пока не попадутся числа с разницей не равной единице.

from decimal import Decimal, getcontext
from itertools import groupby, islice, izip, takewhile, chain, imap

getcontext().prec = 3000

n = (
    groupby(
        enumerate(
            islice(str(1 / Decimal(998001)), 2, None)
        ),
        lambda n: n[0] // 3)
    )

n = (int(''.join(n[1] for n in n[1])) for n in n)

n = chain(*takewhile(lambda n: n[1] - n[0] == 1, izip(n, n)))

print ', '.join(imap(str, n))

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

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

from decimal import Decimal, getcontext

getcontext().prec = 3000

number, prev, out = str(1 / Decimal(998001)), -1, []

for i in xrange(2, len(number), 3):
    curr = int(number[i:i+3])

    if curr - prev != 1: break

    prev = curr
    out.append(str(curr))

print ', '.join(out)

17 комментариев

ChinesePython

А вы знали, что существует ChinesePython? Выглядит как настоящий, но не радует.

Язык полностью переведён на китайский, включая ключевые слова, встроенные типы и так далее, код основан на Пайтоне 2.1.3. Вот пример того как смотрится программа на этом языке:

載入 系統
文件名 = 系統.參數[1:]

定義 修正行尾(文件):
    內文 = 打開(文件名).讀入()
    內文 = 內文.替換('\n\r','\n')
    傳回 內文

取 文件 自 文件名:
    寫 修正行尾(文件)

«載入 系統» — это «import sys». Эта же программа на традиционном Пайтоне выглядит вот так:

import sys
filenames = sys.argv[1:]

def fixline(filename):
    text = open(filename).read()
    text = text.replace('\n\r','\n')
    return text

for file in filenames:
    print fixline(file)

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

22 комментария

«Сосчитал количество ног и поделил на четыре»

«Вижу тут не более тысячи человек» — читаю в комментариях к фотографии митинга в Екатеринбурге. Что меня удивляет, у меня нет такого навыка, я не вижу там тысячи, не вижу там любое другое число, точно могу сказать только, что людей там явно больше десятка, это всё. Вы когда все научились тысячами народ по фотографиям мерить? Откуда у вас такой опыт или, может, курсы какие есть на этот случай?

Бородатый анекдот в тему:

Едут два англичанина в поезде. Поезд проезжает мимо пасущегося стада коров. Один из англичанин говорит: — Пятьдесят восемь голов в стаде… — Как вы узнали? — Очень просто — сосчитал количество ног и разделил на четыре…

17 комментариев

← сюда туда →