программирование
99 бутылок: gnuplot
46. gnuplot — программа для построение графиков, имеющая довольно развитый язык программирования. Основная особенность — отсутствие циклов, хотя доступна их эмуляция — через команду перезагрузки файла (reread).
Программа, выводящая песню о пиве (beer.gp)
# Написал Евгений Степанищев
bottles(beer) = beer == 1 ? '1 bottle' : beer ? sprintf('%d bottles', beer) : 'no bottles'
if (!exists("beer")) beer=99
print bottles(beer), " of beer on the wall, ", bottles(beer)," of beer\n",\
"Take one and pass it around,"
beer=beer-1
print bottles(beer)," of beer on the wall.\n"
if (beer>0) reread
print "No more bottles of beer on the wall, no more bottles of beer.\n", \
"Go to the store and buy some more, 99 bottles of beer on the wall."Internet Explorer 9 Platform Preview 2
Вышел Internet Explorer 9 Platform Preview 2, список изменений есть на сайте Microsoft, ACID3 проходит на 68%.
В Сети есть даже возможность полюбоваться на прогресс в тесте SunSpider.
Сколько браузеров нужно, чтобы вкрутить лампочку
Мне кажется, скоро нас ждёт браузерная олигополия. Посудите сами, хороший браузер, чем дальше, тем больше всего должен уметь. CSS1, 2, 3, HTML5, Geolocation API, различные Storage, Web Workers, Web Socket, Drag’n’Drop, SVG, XML, XSLT, WebGL и так далее и тому подобное.
Ведь правда же, вряд ли наступит момент, когда консорциум W3 вдруг скажет «мы всё придумали» и разойдётся по домам. Там финансирование, серьёзные люди, у них дети и дома в кредит. Я не знаю шутка или нет, но на сайте W3 есть документ «CSS Backgrounds and Borders Module Level 4» (от 1 апреля 2010), а ведь CSS3 ещё далёк от завершения.
Браузер уже похож на небольшую операционную систему, скоро станет похож на большую. А в мире операционных систем успешных новичков я
Десять лет назад, если тебе не нравилась такая ситуация, ты шёл и писал свой движок, теперь — плагин, да и то, VRML помер, Google бросил свой Gears, Java отступает и Флешу многие уже готовы показать где вырыта для него могила.
Если CSS4 шутка, то это блестящая самоирония W3. Что предлагает консорциум? Да, там много интересного, но вот что касается всех этих прозрачностей, тенёчков и прочей визуальщины,
Масса же нерешённых проблем, куча недописанных стандартов. Всё самое интересное в черновиках, нет, давайте забахаем очередную прозрачность. Где продолжение HTTP Basic/Digest в современных реалиях? Почему так долго тянем с Drag’n’Drop, это же разрушает опыт пользователя? Где модульность в HTML? Где sandbox, чтобы вставлять код других сайтов на свой? Форматам изображений, используемых в браузерах по 15 лет более, что ничего современнее так и нет? Нормальная реализация защиты от кражи кук? Более человеческие способы делать layout? И так далее.
Мне кажется, что производители браузеров и W3 слишком увлекаются Инновациями, а хорошо бы выделить больше сил на приведение в порядок того, что уже сделано. Я даже знаю, чем это обусловлено — чем больше добавлено в браузер Нового и Интересного, тем богаче
DevelStudio

Это PHP DevelStudio, среда для разработки графических утилит на PHP, сделанная действительно под влиянием Delphi. Визуальное программирование — натаскиваем компонентов, расставляем кнопки, диалоги, окошки, пишем обработчики кликов, нажатий и прочего, компилируем, готов
Пару дней поковырялся, забавно. Никакой мистики, старый как мир принцип — интерпретатор, библиотеки и прочее складывается в один файл. Отсюда и основной недостаток — даже сжатый UPX’ом (среда сама умеет им сжимать) запускаемый файл примера, который
Тем не менее, авторы сделали гигантскую работу (кстати, DevelStudio написана на PHP) и программировать действительно удобно и просто.
На сайте программы есть справка и видеоуроки (кстати, рекомендую посмотреть видеоуроки, основы воспринимаются очень быстро).
Добавлено на следующий день. Тут в комментариях вспомнили Delphi for PHP
MHTML/Data URI и Windows Vista+IE7
В копилку ссылок. Пару лет назад я нашёл способ совместить data URI и MHTML в одном документе, с тех пор этот способ широко используется, но в интернете иногда появлялись сообщения, что в Internet Explorer 7 в Windows Vista есть
На «Хабре» подсказали исправление этой проблемы (на блоге китайского товарища), насколько я понял этот мунспик в переложении
Точнее — не забывать в конце документа выставлять закрывающий boundary (страница семь RFC 2557).
Так ли безопасен Safari
В Ванкувере на встрече хакеров (…) демонстрировалась масса способов хакнуть Mac через Safari — там штук 20 эксплойтов было уже заготовленных — известный специалист по безопасности Чарли Миллер намекнул, что он сам использует браузер Opera, но и то, только потому что он (кроме России) пока не так популярен, как остальные и особо за него никто еще не брался.
Цитата с «Кулера». В очередной раз убеждаюсь, что всё дырявое, просто в непопулярном дырки никто не ищет.
Невнятный exception у xml.sax
import xml.sax as sax
sax.parseString(u'<r/>', sax.ContentHandler())Вот этот код выдаёт совершенно невразумительный exception: «xml.sax._exceptions.SAXParseException:
IE9 в режиме IE7
IE9 в режиме IE7 можно будет отследить
WebKit иногда не передаёт Referer
Так вот, оба браузера построены на библиотеке Webkit и оба грешат тем, что не передают HTTP_REFERER.
На самом деле передают, но не всегда, что еще больше запутывает ситуацию. Если человек просто нажмет на ссылку, то реферер будет передан серверу, если откроет новое окно или вкладку «альтернативным» нажатием (на Маке это
cmd-click или нажатие средней кнопки), то тоже передастся, а вот если нажать правой кнопкой(или ctrl-click), то нет.
Причём, пятый Хром ведёт себя так же. Ненависть. Багу уже несколько лет, разработчикам он известен, но они его не исправляют.
SVG и браузеры

Это таблица показывает насколько успешно проходят разные браузеры тесты SVG с сайта W3C (таблица с сайта CodedRead). В таблице, на мой взгляд, примечателен уровень поддержки SVG браузером IE 9 preview. Несмотря на уверения Microsoft о 100% уровне поддержки SVG, видно, что до идеала ещё делековато.
Я, правда, не понимаю что происходит и где правда. С одной стороны, таблица как бы говорит нам, с другой, на сайте IE9 написано следующее:
I want to thank the members in the W3C working groups that helped us develop these tests, the community members for providing valuable feedback on the tests, as well as the engineers on the IE team that made these possible
То есть тесты придуманы не самим Майкрософтом и наверняка в W3C их видели и одобрили. Где правда?
IE 9 TP
Ну что, дождались! Можно скачать Preview Internet Explorer 9 и посмотреть что получилось у Microsoft (потребуется Vista SP2 или Windows 7).
Получился, кстати говоря, очень неплохой браузер: 55% ACID3, проходит все 578 тестов селекторов CSS3, тест SunSpider на уровне FireFox 3.7a2, поддержка SVG 1.1 2nd edition и прочее.
Некоторые вещи поддерживаются лучше, чем в остальных браузерах (например, тот же SVG или селекторы CSS3).
Впечатляет. Не забудьте, что это только preview. Кстати,
Зависание _mysql (mysqldb)
Судя по strace, модуль
Добавлено чуть позже: да что ж такое! Опять висит. И с указанием кодировки — тоже. В интернете ничего нет, что же я не так делаю?
Через _mysql — висит, через MySQLdb — тоже, через execute — висит, через курсор — тоже. Что ж это
Добавлено ещё позже: вот весь код:
import MySQLdb as mysql
db = mysql.connect(\
host = 'localhost',
user = 'log',
passwd = 'xxx',
db = 'log',
use_unicode = True,
charset='utf8'
)
c = db.cursor()
c.execute("SELECT * FROM wp_4_posts")Вот так уже висит. Не знаю что с этим делать, пойду домой.
Mongo vs. MySQL

Сравнение скорости MongoDB и MySQL на вставку и чтение. Как видно из данных, MongoDB
Конечно, это достаточно сферические тесты, но голые чтение/запись тоже интересны.
На графу «Mongo cursor (WRONG)» внимания не обращайте, это ошибочные данные.
PyPy 1.2
Вышел PyPy 1.2, это интерпретатор Пайтона, написанный на Пайтоне. Из интересного: появился
Django выполняется под ним быстрее в 2,86 раз быстрее, чем под CPython. Смущает только:
PyPy does not support the CPython C API, which means that third party libraries for python, written in C, will not work.
Придётся использовать биндинги, написанные на чистом Python, для MySQL, например, такой есть.
Производительность «Оперы» 10.50
Решил посмотреть производительность финальной версии новой «Оперы», по сравнению с последними альфами и бетами других браузеров. На момент выхода финальной версии 10.50 это был самый производительный браузер. Поменялась ли ситуация?
Тест «V8» не показал ничего неожиданного: этот тест придуман «Гуглом» оптимизирован под браузер «Хромиум». Но я всё равно сожалею, «Опера» ничего не сделала, чтобы догнать «Хромиум» в этом тесте.

Тест «Sunspider» (версии 0.9) показал, что последние версии «Хромиума» уже потихоньку сдвигают «Оперу» с престола. В этом тесте, в отличие от остальных, чем меньше показатель, тем лучше.

Увы, тест «Peacekeeper показывает то же самое: „Хромиум“ сдаваться не собираться и наращивает производительность семимильными шагами.

FireFox сейчас аутсайдер и в гонке не участвует.
IE6- и фон полупрозрачного PNG

Тема Internet Explorer и PNG
Касается он отображения полупрозрачных PNG в Internet Explorer 6 и ниже. Как известно, без ухищрений, у PNG полупрозрачность в указанных версиях не появится, вместо этого IE покажет серый фон.
Оказывается, есть способ заменить этот цвет на любой другой. Например, на белый. Это можно сделать, например, утилитой TweakPNG:
- открываем PNG в TweakPNG
- в меню «Insert» выбираем «bkGD
(Background-color)» - выделяем свежесозданную строку «bkGD»
- клик правой клавишей → «Edit chunk…», меняем цвет, к примеру, на белый
- сохраняем файл
Кстати, многие инструменты оптимизации PNG удаляют параметр «bkGD».
Отличный способ сделать graceful degradation.
Microsoft покажет IE9 в марте
В середине следующего месяца, в марте, на Mix 2010, Microsoft покажет
Проблема в IE: «//» в link на CSS

Стив Саудерз из «Гугла» нашёл препеприятнейшую проблему в IE7 и 8. При указании подключении к странице CSS через тег LINK, если не использовать протокол, а указывать только хост, эти два браузера
Небольшой поясняющий пример, чтобы было понятно о чём идёт речь:
<link type="text/css" rel="stylesheet" href="//www.test/t/yack.css" />Я проверил по логам, всё действительно так. Причём, если подключить внешний CSS через @import, то всё нормально — файл загружается один раз.
JavaScript V8 и nginx
Игорь Сысоев написал интересную статью «Почему Google V8 пока не подходит для встраивания в сервера», краткая выжимка:
Поскольку V8 разрабатывается в первую очередь для Chrome, то это наложило на него существенный отпечаток и, перефразируя высказывание Генри Форда о цвете машины, можно сказать, что V8 будет хорошо работать в любой программе, при условии, что эта программа называется Chrome. (…) Подытоживая вышеописанное, можно сказать, что на данный момент (версия 2.0.6.4, февраль 2010 года) V8 не подходит для серьёзного встраивания в сервера.
Как узнать в каком месте зависла программа на PHP?
PHP 5.3.1
Способ проще некуда: ставим модуль PHP xdebug, прописываем его в php.ini (не забываем, что в PHP 5.3 всегда используется «zend_extension»), а в исследуемой программе указываем:
xdebug_start_trace('/какой/то/путь/имя-лога', XDEBUG_TRACE_APPEND);После зависания идём в указанную папку и смотрим в лог, последняя строка в нём и есть источник зависания.