Node.js рано или поздно убьет PHP. Слишком много преимуществ у платформы, которая универсальна. Единый синтаксис для клиентской и серверной стороны, а также для скриптов автоматизации, и даже передаваемых данных (JSON – это в общем-то обычная структуар данных JavaScript). Сдерживает этот процесс лишь большое количество накопленного для PHP кода. Ну так и у Perl’а огромное количество кода, и где теперь Perl?

Рано или поздно кто-то додумается сделать модуль для апача, и можно будет в систему написанную на PHP добавлять куски написанные на JavaScript. После чего они медленно сожрут ее изнутри.

Я не хочу сказать что Node.js так уж нравится всем и она идеальна. У ноды сть проблемы и достаточно серьезные. Но часто ноги у них растут из непонимания идеологии этой системы и как следствие – неправильного проектирования архитектуры своего приложения.

что выражение preg_match(‘/<script(\w|\W)*<\/script>/i’,$html,$matches); может убить PHP-скрипт так надежно, что он даже не успеет записать в лог - что с ним случилось?

а всего-то размер текста между открывающим и закрывающим тегами script превысил какое-то магическое значение.

я плачу и хуею… хуею и плачу…

P.S. Строго говоря, а зачем мне там круглые скобки? Подозреваю что они там не нужны совершенно, должно быть как минимум [\w\W] вместо (\w|\W)

Облажался. Сохранял данные в файлах без расширения. При этом спокойно создавал папки с тем же именем. Теперь же я могу получить список файлов, среди которых будут filename и  filename/, один из которых будет папкой, но при этом is_dir() говорит, что неа, filename/ это нифига не папка. И  filetype говорит что это просто файл. При этом, если есть только filename/, а filename нету – ну это же совсем другое дело, обе функции утверждают что все ок, это именно папка!

Я конечно могу просто проверить наличие / на конце имени файла. Но гложут меня смутные сомнения, что однажды это выйдет боком.

Мораль: расширение файла должно быть. Тогда вы никогда не узнаете об этих веселых глюках. А вообще конечно, данные надо хранить в БД, а не в файловой системе. Это гораздо удобнее.

P.S. Предчувствия меня не обманули. Удалить такую траханую папку я смог только через вебконсоль. rmdir ее не видит, выдает ошибку Cloud Storage Error: NOT FOUND

… были когда можно было написать:

if (options['error']) …

и не думать о том, есть ли в options ключ ‘error’.  Нет, ну и ладно.

Одного я не понимаю – почему у меня в свеженькой среде разработки для GAE эти славные времена еще продолжаются, а на боевом гугло-сервере – давно прошли? И как мне теперь делать рефакторинг кода, который я 2 недели спокойно отлаживал дома?

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

Взлетел, но не с первой попытки. Трахался часа три – локально все работает, после деплоя на Google App Engine вываливает ошибку, но без подробностей.

Подробности нашлись в логах, не работает элементарнейшая функция require_once. Поиск в нете выдал несколько похожих проблем на StackOverflow, но все это оказалось не то. Складывалось впечатление, что при деплое надо как-то явно указывать все php-файлы, которые нужно выгружать на сервер, но почему-то ни в одном примере этого не было (оказалось – не нужно).

Но первое впечатление – обманчиво. Ошибка была совершенно дурацкая и не там, где я ее искал. Ноги у нее растут из далеких 80ых, когда один студент, не будем показывать в него пальцем, взял исходники UNIX, выкинул все, что было для него слишком сложно, заменил символ-разделитель в файловых путях / на \ и выпустил под брендом MS-DOS.

И вот спустя 35 лет, разрабатывая на скрипты на машине с Windows я могу написать:


require_once('lib\wikisite.php');

И все будет работать. Но немедленно перестанет, как только проект переедет на машину с UNIX-подобной системой. Потому что там должно быть так:


require_once('lib/wikisite.php');

Перепутать по запарке – нефиг делать. И самое подлое – второй вариант будет работать везде, поэтому огромное количество разработчиков просто никогда не сталкиваются с подобной проблемой.

P.S. Что за хрень такая - Discuss-server? Да какая вам разница?

Просто небольшой вспомогательный сервис, чье назначение – разгрузить основной. Объем бесплатных ресурсов на GAE весьма ограничен, и хочется оттянуть момент перехода на платный сервис. Распределение большой задачи на несколько отдельных сервисов позволяет это сделать. Подробности – как-нибудь в другой раз.

Page generated Jun. 13th, 2025 12:31 pm
Powered by Dreamwidth Studios