Позднее Ctrl + ↑

Видео по вторникам: песочные часы Марка Ньюсона

Какие офигенные! Очень надо:

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

Эмёрдж 1.3.1

Вышел Эмёрдж 1.3.1, где исправлены пара багов. Один касался анимации спиннера, другой — ошибок в консоли из-за ЦСС-изображений. Если вас не беспокоят эти проблемы, обновляться не обязательно.

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

Вопрос про фоновую работу ПХП

Эгея написана на ПХП как обычное веб-приложение, отвечающее на запросы браузера к серверу. Браузер просит страницу — Эгея её генерирует и отдаёт.

Часть работы, которую делает Эгея — медленная по своей природе, например создание бекапа или индексация большого блога для поиска. Но Эгея отдаёт страницы быстро.

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

Асинхронное выполнение на ПХП

К сожалению, с этим методом возникла проблема, когда я стал поддерживать ХТТПС. Если просто отправлять запрос и сразу закрывать соединение, как я всегда делал, не происходит вообще ничего — с точки зрения сервера всё выглядит так, как будто к нему и не обращались. Если же попробовать прочитать ответ, то приходит 400 Bad Request, потому что я как бы пытаюсь говорить с ХТТПС-сервером на простом ХТТП. К сожалению, мне почему-то так и не удалось отправить самому себе запрос по ХТТПС с помощью функции fsockopen () и её родственников, хотя я вроде бы исчитал документацию со всех сторон.

Вместо запроса к себе можно использовать register_shutdown_function (). Но я когда-то пользовался ей, и у меня осталось ощущение ненадёжности — кажется, она выполнялась не всегда, и там были какие-то особенности внутри странные, например, что все пути к файлам должны быть указаны абсолютно. Короче, чтобы ей воспользоваться, нужно переструктурировать код. Женя Степанищев ещё рассказал про fastcgi_finish_request () — похожий вариант.

Эти схемы мне не нравятся непрозрачностью: часть скрипта будет выполняться в каком-то мире, который не виден никому. В варианте с запросом к себе мне ничто не мешает зайти браузером по моему служебному урлу и посмотреть, что происходит. А тут придётся что-то специальное изобретать для отладки. Кроме того, запрос к себе, разумеется, запускает новую копию ПХП, в которой заново начинается отсчёт времени. Выполняя такой запрос, я могу теоретически захотеть сделать что-то ещё так же, и инициировать запрос третьго уровня. И все эти запросы — одинаковой природы, просто заход по урлу. Мне нравится эта однородность.

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

Ну и пока умники в твиттере не начали писать «расскажите кто-нибудь Бирману про крон», объясню, что моя задача — сделать максимально автономное решение, не требующее от пользователя никакой специальной настройки сервера. Закачал на сервер папку — всё работает. Если вы матёрый программист в свитере, вам такое не понять.

Короче, в идеале я бы хотел заставить работать свою исходную конфигурацию. Для этого мне нужно научиться делать запрос к себе по ХТТПС. Причём мне нужно просто «потрогать» нужный урл и отвалиться — мне не нужно по нему передавать никаких данных, не нужно читать ответ. Как это сделать?

Ну и если вы знаете какой-то ещё способ добиться нужного результата, лишённый всех описанных недостатков, тоже расскажите.

Найки, Адоби и Тафти

Название компании Nike читается «Найки». По-русски Найк называет себя Найком, а не «Найки», потому что так удобнее: Найк понятно как склонять. Молодцы! Не то, что Микросо́фт, который зачем-то насилует русский язык и называет себя «Ма́йкрософтом».

Название компании Adobe читается «Эдоуби». Не знаю ничего о том, как они себя называют по-русски, но от людей регулярно слышу что-то вроде «Эдоуб». Меня не смущают варианты «Адоб», «Адобе», «Адоби», но «Эдоуб» — это как «Эйпл», так говорить нельзя.

Фамилия профессора Tufte читается «Тафти». Тут, слава богу, все говорят правильно — видимо, потому, что слышат это слово раньше, чем видят.

Но заметка не об этом. Дело в том, что я откуда-то взял, что название компании Bose (колонки там всякие) тоже из этой серии и читается «Боузи». И даже сказал об этом нескольким человекам. Но это не соответствует действительности: я посмотрел несколько источников, и везде сказано, что это «Боуз». Так что прошу прощения у всех, кого ввёл в заблуждение.

Добавлено в сентябре 2017-го. А, ещё Moscone.

Классический Мак в браузере

Хотите потыкать в настоящий чёрно-белый Мак в браузере?

Архив.орг теперь даёт это сделать. По ссылке — музей эмуляторов разных классических программ, включающий, например, Мак ОС 6.0.8. Причём это не то, что там кто-то нарисовал 10 экранов и даёт вам между ними переключаться — нет, это прям настоящая операционная система в браузере (до чего техника дошла!).

Сначала сам эмулятор грузится несколько минут. Потом грузится Мак:

Классический Мак в браузере

Добро пожаловать:

Классический Мак в браузере

Рабочий стол!

Классический Мак в браузере

Разрешение экрана — 512 × 342. Скриншоты почему-то мыльные получаются — ну фиг знает.

Можно зайти в яблоко и открыть Эбаут:

Классический Мак в браузере

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

Моя любимая деталь — это то, что когда кликаешь в кнопку закрытия окна, вокруг места клика рисуются такие штришочки, как в комиксах вокруг чего-то, что движется:

Классический Мак в браузере

Я это слизал для иллюстрации на 180-м развороте интерфейсной книги:

Пока кликал, вообще какой-то инсталлятор запустил:

Классический Мак в браузере

Ну, дальше сами.

Эгея v3109

Вышла новая сборка Эгеи, v3109.

В ней исправлен баг, который был случайно введён в сборке v3107 на днях. Из-за него редактор мог повесить браузер. С v3107 надо обновиться обязательно, с v3101 — если вас беспокоит баг с незагружаемостью картинок.

После выхода новой версии всегда есть небольшая турбулентность, пардон.

Эгея v3107

Вышла новая сборка Эгеи, v3107.

Из заметного с момента релиза 2.6 — исправлен баг, из-за которого картинки могли не загружаться у тех, у кого в урлах используется ?go=. Пока все те, кто поймал этот баг, в итоге перешли на чистые урлы, чем и исправили баг, и получили чистые урлы. Так что от бага они только выиграли.

О том, как сделать чистые урлы, написано в документации («Движок использует в урлах конструкцию ?go=, а я хочу чистые урлы без неё»). Эгея автоматически использует чистые урлы, когда уверена, что они у вас заработают, но она не всегда может быть уверена, поэтому иногда нужны такие пляски с бубном.

Но баг всё же стоило исправить, потому что на чистые урлы могут перейти не все.

Ранее Ctrl + ↓