«Одноклассники»

Сайт «Одноклассники» сменил дизайн и теперь явно рекламирует браузер Google Chrome, так как это единственный браузер, под котором эта роскошь не тормозит. Так как Chrome мне не нравится, то я выплесну его вместе с новым ребёнком Попковых.

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

JavaScript split

Азат Разетдинов подкинул хорошую ссылку на сайте XRegExp по поводу особенностей реализации метода split в JS-движках различных браузеров. Больше всего особенностей у IE, но и остальные браузеры грешны.

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

HTML5: события offline и online

На сайте JavaScript.ru появилась статья о новых событиях в JavaScript — offline и online (реализованы в Firefox 3.5 и Internet Explorer 8.0). Цитирую выводы:

Эти события никак не связаны с подключением к сети интернет и к сайту.

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

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

Firefox глючит, в отличие от IE

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

Штанга: 95,5кг

Обычно я не беру новые веса в понедельник, но тут отчего-то решил попробовать. 95,5кг четыре раза. Может быть и пять взял бы, но побоялся без страховки. Свой вес без изменений — 71.

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

GIF plain text extension

В формате GIF89 есть забавное поле — «plain text extension», заброшенное и никем не используемое. Настолько заброшенное, что для него делали специальное соответствующее поле в формате PNG, для совместимости, но потом объявили его «deprecated».

Как будет в точности выглядеть GIF с этим полем мне неизвестно, думаю, зависит от программы. По идее, оно должно выводить моноширинный семибитный (никакого Unicode) текст.

Насилу нашёл редактор, который умеет создавать GIF с таким полем, но, увы, ни один из браузеров не умеет правильно показывать содержимое такого GIF. Некоторые браузеры не умеют показывать его даже неправильно — выводят пиктограмму ошибочно загруженной картинки (например, IE, Opera 8.xx/9.xx, Safari и другие).

Понятно, что extension совершенно бесполезный, но всё-таки мне было любопытно на его посмотреть.

P.S. Для тестирования браузеров я использовал сервис BrowserShots.

Добавлено 6 октября 2009 14:40: почти все браузеры показывают изображение в котором есть ещё хоть что-то, кроме такого текста. Если же изображение содержит только текст, то многие браузеры (как сказано выше) покажут ошибку загрузки.

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

Книга: всё идёт по плану

Вчера мы с Глебом внесли последние авторские правки в свои главы, дописали последние куски, а Коля скомпилировал это в книгу версии 1.1. Далее уже будут редакторские правки. Поскольку многие задают одни и те же вопросы, то выкладываю небольшое FAQ по теме:

В: Какой будет тираж книги? О: Пока точно не известно, порядка 2000—3000 экземпляров.

В: Какое издательство выпускает книгу? О: «Открытые системы» (aka «Интуит»)

B: Когда она выйдет? О: В декабре этого года появится электронная версия книги, в феврале следующего книга будет продаваться. Текущую версию можно скачать уже сейчас.

B: Каков объём книги? О: Почти 500 тысяч знаков (вместе с пробелами), это примерно 12,5 авторских листов.

B: Сколько авторов? О: Трое: Мациевский Николай, я (Евгений Степанищев) и Глеб Кондратенко.

В: А сколько ты написал? О: По объёму знаков — чуть больше четверти книги, по количеству страниц — около 30%.

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

Волосы и ногти

Читаю «Книгу всеобщих заблуждений» Стивена Фрая. Кое-где книга слабо проработана, в каких-то местах очень специфична для Европы, а где-то сама вводит в заблуждение. Вот место, касающееся мифа о том, что у мёртвых какое-то время растут волосы и ногти:

Данным заблуждением человечество во многом обязано Эриху Марии Ремарку и его классическому роману «На Западном фронте без перемен»

Может быть человечество евросоюза и обязано этим заблуждением роману 1929 года, но я сразу вспоминаю горячо любимого в детстве Гоголя и его «Вечера на хутор близ Диканьки»:

Казалось, одни только кости поднялись высоко над землею. Борода по самые пяты; пальцы с длинными когтями вонзились в землю. Страшно протянул он руки вверх, как будто хотел достать месяца, и закричал так, как будто кто-нибудь стал пилить его желтые кости…

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

P.S. Если прояндексировать интернет, то можно обнаружить, например, что Аристотель искренне считал, что волосы и ногти у мёртвых всё-таки растут, а уже в 17-м веке в Европе знали, что это не так.

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

Cherchez la femme

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

К. и Т. Енко «Частная жизнь вождей — Ленин, Сталин, Троцкий».

Какая новая (для меня) точка зрения на псевдоним Ульянова! Высказала её, оказывается, писательница Лариса Васильева, которая долгое время занималась «кремлёвскими раскопками». До этого момента я знал только две версии. Первую, про реку Лену, рассказала мне и всему классу в детстве учительница русского языка и литературы, вторую, про паспорт Николая Ленина я прочитал много позднее в «Википедии».

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

Последнее фото Ленина

Ленин (32.31КиБ)

В корейской «Википедии» нашёл последнее фото Ленина (сделано в 1924 году). Какая-то… э… смешная фотка.

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

Б if В else А

Я удивляюсь.

Есть ситуация «А», которая перешла в «Б». Я считал (и продолжаю надеяться), что это произошло по субъективной причине «В», но есть причина «Г», которая гарантированно переводит «А» в «Б». Пишу пост в блоге: «А» перешла в «Б», потому что «В». Получаю комментарии, что есть «Г» и комментарий от человека, что «В» невозможна, потому что в его опыте «А» в «Б» не перешла. Рассказываю тому про «Г», тот отвечает «ну вот, я же говорил что это не из-за „В“».

Не понимаю. Получается что? Приведённый опыт — неправда? А зачем его было приводить? Цель?

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

Штанга: 98 кг

Ура! Взял 98 кг четыре раза (какими усилиями я выжал четвёртый, знаю только я). Свой вес колеблется в пределах 70,8—71,2 кг.

P.S. Тем кто беспокоится, что свой вес у меня не растёт, но растёт поднимаемый, напишу, что мне рассказали знающие люди: хорошим результатом считается поднимать 1,5 своего веса. Я поднимаю сейчас 1,38.

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

Repcached — memcached с репликацией

Понадобилось реплицировать memcached, балансер ставить — слишком дорого для нашей задачи, в поиске нашёлся repcached, будем пробовать. Это патч для memcached 1.2.x. Асинхронная репликация multi master.

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

Инч

Я тут слегка приболел и лежал вчера вечером в кровати, так как глаза требовали немедленно погасить свет, а душа — какого-то занятия, слушал аудиокниги. Ничего не скачивал, просто пошарил по «рутубу» и нашёл несколько рассказов Роберта Шекли (а рассказы у Шекли божественны).

Что я хочу сказать. Уважаемые переводчики, пожалуйста, переводите все эту фунты, пинты, дюймы, футы и прочие мили в привычные нам единицы. Я не в состоянии сообразить насколько высок человек, если он ростом сколько-то там футов и столько-то дюймов, насколько тяжела унция я тоже не знаю. Некоторые доходят до того, что не переводят само слово дюйм («inch»), а оставляют в тексте «инч».

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

Сколько клавиш одновременно можно нажать на вашей клавиатуре?

На «Хабре» довольно унылая история вылилась в интересное обсуждение устройства клавиатур, например, интересное:

Скорее всего, это действительно был не брак данной клавиатуры, а её нормальное (т. е. соответствующее её исполнению) поведение.

Дело в том, что есть такое понятие — «rollover» (Keyboard (Control processor), Rollover) — возможность клавиатуры обрабатывать одновременное нажатие нескольких клавиш. Стандартом де-факто является отработка нажатия минимум 3 клавиш сразу. Однако на практике — 3 клавиш не любых, так как есть ещё такая проблема как «фантомное нажатие», когда к трём нажатым приплетается приблуда. Поэтому у дешёвой клавиатуры обработка некоторых троеклавиший может быть не предусмотрена либо умышленно (чтобы исключить нежелательные фантомные срабатывания), либо элементарно из-за отсутствия возможности обеспечить поддержку такой функции при данной используемой технологии.

Проблема заключается в том, что в случае отсутствия «навороченного» n-rollover’а, производители не предоставляют дополнительных сведений, выполняя при разработке клавиатуры минимальные требования (производителя ОС, например).

Забавная история — один в один как у ТС, только с клавиатурой от Logitech — описана вот здесь (англ.): http://www.tomshardware.co.uk/forum/page-50454_10_0.html, с подробными объяснениями (в т.ч. и от сотрудника Logitech).

У меня на домашнем ноуте (Fujitsu Lifebook N6420) можно зажать только две буквенные клавиши, на третью реакции уже нет, но если жать строго через одну, то предела я не обнаружил (пальцы кончились). На внешней Samsung Pleomax срабатывают четыре клавиши подряд. На Fujistu-Siemens Lifebook N6410 срабатывают аж пять клавиш. Это предел для техники, которая есть у меня в наличии в Москве.

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

Уязвимость WackoWiki

На прошлой неделе нашёл include-уязвимость в последней версии WackoWiki. Подробности раскрывать не буду, посоветую только закрыть регистрацию сторонних пользователей, плюс запретить редактирование и загрузку файлов анонимам.

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

iPhone: USB Drive

USB Drive (13.42КиБ)

Как известно пользователям iPhone, у этого телефона есть раздражающая особенность: он не умеет работать как флешка. Было бы очень удобно, чтобы его файловая система была видна как обычный диск при подключении к компьютеру. Это пока дело будущего, сейчас существует такое решение: часть памяти iPhone можно уже сейчас использовать как флешку.

Вам понадобится джейлбрейкнутый (jailbreak) телефон и программа USB Drive (доступна из Cydia-репозитории apt.dmytro.me). После запуска программа позволяет создать до восьми дисков, которые будут доступны после подключения телефона.

Режимы работы программы: «Drive+iTunes» (подключается как диск, но распознаётся iTunes, режим пока глючит в Windows, не работает PTP), «Drive Only» (работает как флешка) и «Default» (работает как обычный iPhone).

Диски создаются по пути /var/Volumes и не удаляются после деинсталляции (нужно, либо удалить их до деисталляции, либо удалить их потом вручную). Файловая система — FAT.

В будущем программа будет платной. Срок действия этой беты истекает первого ноября.

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

О велосипедах

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

Хочу заметить, что запросы, в данном случае, могут быть весьма разнообразными: простота использования, быстродействие, удобное API, наличие документации, лицензия, русификация, платформа, на которой работает продукт и так далее.

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

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

Opera 10.x и border-radius

Вадим Макеев упомянул в «Ярушке» интересное о новых версиях «Оперы»:

Opera будет поддерживать border-radius уже в 10.x версии, очень вероятно, что где-то в начале будущего года (…)

Я уже давно тестирую версию, которая работает с border-radius, border-image, box-shadow, transform… и ещё десятком вещей из черновика CSS 3, что интересно — без префиксов. Это всё будет в движке Presto 2.4, который сейчас встроен во внутренние беты с индексом 10.x.

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

На эту тему я уже, кстати, давал цитату.

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

99 бутылок: PowerShell

45. Windows Powershell. Наконец-то в Windows появился мощный, красивый язык командной строки. Язык построен на конвейерах, где по конвейеру передаётся не просто текст, а объекты. Особый интерес представляет интеграция с .NET Framework и WMI.

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

Программа, выводящая песню о пиве (beer.ps1)

# Написал Евгений Степанищев aka BOLK

function bottles([int]$beer) {
    switch ($beer) {
        0       { "no bottles" }
        1       { "1 bottle" }
        default { "$beer bottles" }
    }
}

99..1 | ForEach-Object {
    $bottles = (bottles $_) + ' of beer'

    $bottles + ' on the wall, ' + $bottles + '.'
    'Take one down and pass it around, ' + (bottles($_-1)) + " of beer on the wall.`n"
}

'No more bottles of beer on the wall, no more bottles of beer. 
Go to the store and buy some more, 99 bottles of beer on the wall.'

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

Микрософт отпущения

Из комментариев на «Хабре»:

— Ждём клон от MS и стопицот «убийц магия-мышки» ))

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

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

Странно, но как не поверни, но всё виноват Microsoft. Apple выпустила? Значит плохой Microsoft сделает клон. А, Microsoft ещё раньше сделал прототип? Тогда плохой Microsoft плохой, потому что не выпустил мышь раньше.

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

Windows Powershell

Вчера ночью смотрел на Windows Powershell. Красивый, мощный, удобный язык командной строки («песню о пиве» я уже написал). Очень понравился, изучается очень быстро, позволяет многое. Основная идея — конвееры, по которым ходят не строки (как в Linux/Unix), а объекты. То есть вы можете получить список процессов, отфильтровать их не как текстовые строки, а как набор объектов — по свойствам, дальше, ну, к пример, отсортировать по какому-то свойству и выгрузить в XML.

Очень хорошо называются командлеты, например, «Get-Process», правда, сразу понятно что делает эта команда. Причём, у команд есть алиасы, которые порадуют любителей Unix: можно написать «Get-Help Get-Process» или «man ps». Где «man» — алиас для «Get-Help», «ps» — алиас для «Get-Process».

Язык слаботипизированный, но можно и жёстко задавать тип (например, в параметрах функций), если хочется.

Кардинально решена проблема с безопасностью (язык мощный, сразу спровоцирует написание вирусов) — файлы этого языка (расширение — .ps1) не запускаются, а открываются в блокноте. Запуск команд возможен или из оболочки руками или довольно нетривиальными способами (простой юзер не справится).

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

Устал

На этой неделе новый вес брать не буду: всю первую половину проболел, вторую — не высыпаюсь, сегодня, как варёный. Куда уж там брать новый вес. Ещё работа вымотала, вроде ничего особенного, но бьюсь третью неделю над той же задачей: как не меняя код (только шаблоны) сделать ЧПУ в Testlink. Приходится много пробовать и откатываться назад, такое всегда выматывает. Ничего, победа будет за мной.

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

Сжатие исходящего трафика в браузере

Артель BrowserPlus выпустила плагин к браузеру («Опера», как обычно, не поддерживается, Linux — тоже), который позволяет использовать в браузере TAR и алгоритм сжатия LZMA.

TAR позволяет собрать несколько файлов в один, LZMA — упаковать их. Таким образом, файлы (или другие данные) на сервер можно отсылать уже упакованными. Ценно для заливки больших хорошо сжимаемых (например, текстовых) файлов.

Вообще говоря, работа с TAR и LZMA не единственное, что плагин позволяет делать, там очень много интересных возможностей, лучше посмотреть на сайте производителя. Тенденция, вообще-то, странная, на мой взгляд — выпускать разношестные плагины для браузеров (Google Gears, BrowserPlus) вместо того, чтобы пытаться договориться с W3C о внедрении каких-то возможностей в браузеры.

Я был бы рад увидеть браузерное хранилище от Google во всех браузерах, вместо зоопарка, который мы сейчас имеем, тем более, что этот зоопарк по возможностям сильно не дотягивает до того, что придумали в Google (по правде говоря, я был бы рад увидеть что-то ещё более мощное и интегрированное, чем Google Gears, но, видимо, возможности плагина просто ограничены — не всё можно реализовать как плагин).

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

Инч би бэк

Выношу в отдельный пост комментарий хорошо иллюстрирующий мою точку зрения на перевод единиц в книгах на близкую читателю систему мер:

Читаю сейчас «Террор» Дена Симмонса. Про полярников 19-го века, вмерзших в лед на три года за полярным кругом.

800 страниц дюймов, футов, пинт, галлонов, лье, миль и еще уж даже и не помню каких единиц длины, площади, массы и объема. И они там на каждой странице. Это просто разрыв мозга.

При этом, обычно, очень хочется понять:

—убегать от медведя три полных мили — это далеко или нет? —прыжок с тороса, высотой 12 футов — это опасно или нет? —по четверти пинты грога в день — это много или нет? —меньше старого фунта еды на троих — это сколько? —спать до двух склянок — это до скольки? — на пару углов левее — это куда?

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

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

Lexx

Гори в аду, попсовый доктор Хаус! Осуществляю мечту детства — смотрю полностью «Lexx». Уже посмотрел 13 серий, сериал такой же сумасшедший, каким я его помню с детства.

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

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

«Консультант» и IE

Вчера на «Хабре» люди в очередной раз подняли тему сайта «Консультанта» и Internet Explorer — первый, своей интересной частью, работает только на втором. Как я и ожидал, код завязан на особенности Internet Explorer, браузер богатый на возможности, на сайте использовано их немало. Впрочем, всё, если вдуматься, переводится и на более стандартные рельсы.

У меня давно руки чесались разобраться поподробнее как устроены userjs в «Опере» и посмотреть на отличия реализации XSLT-процессинга в IE и остальных браузерах. Userjs в «Опере» устроены исключительно удобно (даже предусмотрели патчи к выполняемому коду), а с XSLT в IE нестандартно, зато много проще.

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

Текст userjs помещаю под кат.

// ==Userscript==
// @name         Make Consultant base works
// @namespace    /
// @description  Make Consultant base works in non-IE browsers.
// @include      http://base.consultant.ru/*
// @version      1.0
// @licence      MIT
// ==/UserScript==

(function(){

    /* TODO
       saveCard — это behavior userData, сделать эмуляцию
       VBArray  — одна из переменных использует этот специфический массив
       isBaseVisible, ForEachRow — убрать заглушку, сделать нормальную функцию
       showModalDialog — дописать с передачей параметров (например, через window.name)
    */


    document.addEventListener('load', function (e) {
        showModalDialog = window.open;

        return true;
    }, false);

    DOMParser.prototype.loadXML = function (text) {
        return this.parseFromString(text,"text/xml")
    }

    opera.addEventListener('BeforeScript', 
        function(e){
                if (e.element.getAttribute('for')) {
                    var script = e.element.text
                    var id     = e.element.getAttribute('for')
                    var ev     = e.element.getAttribute('event')

                    e.element.text = ''
                    document.addEventListener('load', new Function('',                     
                        'document.getElementById("' + id +
                        '").attachEvent("' + ev +
                        '", function () {'+ script + '})'
                    ))
                }

                var repl = {
                    'document\\.body\\.attachEvent'   : 'document.attachEvent',
                    'document\\.all\\.fieldsXML\\.XMLDocument\\.transformNode': 'document.transformNode',
                    'document\\.all'                  : 'document.getElementsByTagName("*")',
                    'document\\.frames\\('            : 'document.getElementsByTagName("iframe").item(',
                    '\\.XMLDocument\\.text'           : '.textContent',
                    'document\\.body'                 : 'document.documentElement',
                    '\\.parentElement'                : '.parentNode',
                    '\\.XMLDocument\\.documentElement': '',
                    '\\.XMLDocument'                  : '',
                    'basesRow\\.all\\.basesTable'     : 'document.getElementById("basesTable")',
                    '\\.all\\.tags\\('                : '.getElementsByTagName(',
                    '\\.all\\.([^\\.;\\s]+)'          : '.getElementById("$1")',
                    '\\.all\\('                       : '.getElementById(',
                    '\\w+\\.getElementById'           : 'document.getElementById',
                    'p\\.type\\.'                     : 'p.getAttribute("type").',
                    '\\.isEnabled\\s*=([^;]+)'        : '.setAttribute("isEnabled", $1)',
                    '\\.isEnabled'                    : '.getAttribute("isEnabled")',
                    '(\\w+)\\.loadXML'                : '$1=$1.loadXML',
                }

                for (var re in repl) {
                    e.element.text = e.element.text.replace(new RegExp(re, 'g'), repl[re])
                }
            }
        ,false);

    opera.defineMagicFunction('writeInsertion', function () {});

    opera.defineMagicFunction('getBasesTable', function (a, b, tDivRow) {

        var basesRow = tDivRow && tDivRow.id ? document.getElementById("bases_" + tDivRow.id) : null;
        return basesRow == null ? null : document.getElementById('basesTable');
    })

    opera.defineMagicFunction('forEachRow', function (a, b) { return true })

    opera.defineMagicFunction('createXMLStylesheet', function (a, b, url) {
        var r = new XMLHttpRequest()
        r.open('GET', url, false)
        r.send(null)

        if (r.status == 200) {
            var xml = new DOMParser()

            return xml.parseFromString(r.responseText, "text/xml")
        }

        return null
    })

    opera.defineMagicFunction('isBaseVisible', function (a, b, code) {
        return true
    })

    HTMLElement.prototype.transformNode = XMLDocument.prototype.transformNode = function (style) {
        var xsltProcessor=new XSLTProcessor();
        xsltProcessor.importStylesheet(style);

        if (typeof this == 'HTMLElement') {
            var resultDocument = (new DOMParser()).parseFromString(this.innerHTML, 'text/xml');
        } else {
            var resultDocument = xsltProcessor.transformToDocument(this);
        }
          
        var xmls = new XMLSerializer();  
        return xmls.serializeToString(resultDocument);
    }

    HTMLHtmlElement.prototype.selectSingleNode = HTMLInputElement.prototype.selectSingleNode = function (path) {
        var xpe = new XPathEvaluator();
        var nsResolver = xpe.createNSResolver(this.ownerDocument == null ? this.documentElement : this.ownerDocument.documentElement);
        var results = xpe.evaluate(path,this,nsResolver,XPathResult.FIRST_ORDERED_NODE_TYPE, null);
        return results.singleNodeValue;
    }

    ActiveXObject = function (str) {
        return new ({
            'Microsoft.XMLDOM':  DOMParser,
            'Microsoft.XMLHTTP': XMLHttpRequest,
            'Scripting.Dictionary': Array,
        })[str]
    }

})()

Кстати, «Опере» нужно не забыть сказать, чтобы она маскировалась под Internet Explorer (правая клавиша мыши, «Настройки сайта», закладка «Сеть»).

Обращаюсь к тем, кто читает RSS и трансляцию, текст userjs по ссылке на исходный пост.

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

iPhone и снимки с GPS

iPhone, который, не спрашивая, записывает в снимок информацию с GPS, чувствую, доставит ещё немало лулзов в интернетах. Одна тётечка, сфоткавшись обнажённой, уже спалилась — координаты есть, дом на Google Maps видно, тем более, что он частный. И это только начало.

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

Подводная река

Подводная река (39.98КиБ)

Красиво — фотография Анатолия Белощина, сделана под водой, в Мексике, на глубине 28 метров, «река», над которой видно дайвера — это течёт сероводород (обязательно посмотрите оригинал).

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

Когда летим?

Transaero (30.13КиБ)

Экран выбора дня вылета и класса обслуживания сайта авиакомпании «Трансаэро», угадаете с первого раза в какой день вылет? Вы уверены?

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

Batch-запуск

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

Я пользовался для этой цели Windows Script Host, описывал что нужно жать на языке JScript. Вот, например, обрабатываются 492 изображения программой «A Smaller GIF 1.22»:

with (WScript.CreateObject("WScript.Shell")) {
    AppActivate("A Smaller GIF 1.22")

    for (var command, j = 0; j<492; j++) {
        WScript.sleep(100)

        for (command = '^O+{TAB}{DOWN}{UP}', i = 0; i<j; i++) {
            command += '{DOWN}'
        }

        SendKeys(command+'{ENTER}^S')
        WScript.sleep(100)
        SendKeys('{ENTER}')
    }
}

Всё понятно, по-моему, почти по-английски написано. О том как отсылать приложению специфические комбинации (например, Ctrl+Alt+Backspace) можно прочитать в на сайте MSDN.

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

Какой Минск

Смотрел билеты в Минск на 27-е ноября на сайте авиакомпании «ЮТэйр». И давно его нет?

Минск? Нет такого? (13.25КиБ)

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

Штанга: стоп, машина

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

Сегодня три раза за день играл в «лесенку», последний раз выглядит вот так (с минимальными паузами): 68×6, 98×2, 88×2, 78×2, 68x6, 68×6, удерживание 68 кг — 40 секунд, удерживание 68 кг — 40 секунд, 68×6, 68×6.

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

← сюда туда →