LINUX.ORG.RU

Готовимся к PHP6


0

0

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

  • Улучшена поддержка юникода
  • Упразднены register_globals, magic_quotes и $HTTP_*_VARS
  • Выброшена поддержка библиотек GD1 и FreeType1
  • safe_mode больше не используется
  • Добавлена поддержка 64 битной целой арифметики
  • Фигурные скобки больше не используются для доступа к строке по индексу
А также многое другое.

>>> Подробности

★★★★★

Проверено: Shaman007 ()
Ответ на: комментарий от anonymous

>Да вроде наоборот процветает и расширяется. Что не так?

Интересно на фоне конкурентов.

r ★★★★★
()
Ответ на: комментарий от anonymous

>Аргументов может быть куча - существующие нароботки,

Чего? Ты дето видел заказчика который приходит заказывать сайт с дискетой и говорит "вот тут фидбек на перле уже есть - админ когдато написал"? Смешно.

>простота поиска специалистов для поддержки,

Поддержка серьезными заказчиками заказывается у разработчика.

>не требовательность к хостингу,

Это смешно. Мы о серьезных заказчиках говорим? им 20eur/month жалко на колокейшен?

>интеграция с любой БД,

Да - тут у пыха - неоспоримое преймущество перед другими технологиями. Все остальные нервно курят в сторонке.

>скорость разработки

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

r ★★★★★
()
Ответ на: комментарий от Gadeshi

> 1. RoR мало распространен и почти не известен реальному заказчику.

Вам не повезло с заказчиками.

> 2. RoR не предоставляется хостерами даже на VIP-тарифных планах - только на выделенных серверах.

Вам не повезло с заказчиками.

> 3. На чем писать, определяет заказчик.

Вам не повезло с заказчиками.

> 4. Попробуй найти специалистов уровня Senior Developer или хотя бы Middle Developer для RoR.

Куча людей находит.

> 5. Попробуй найди QA-инженеров (а не дымных тестеров-студентов), которые будут работать с RoR (писать тест-кейсы, проводить автоматизированное тестирование).

Куча людей находит.

В общем жрите кактус и ориентируйтесь дальше на заказчиков который кроме как хостинг за 5$ не могут себе позволить.

user_undefined
()
Ответ на: комментарий от r

>Интересно на фоне конкурентов.

А вы думаете, что изпользование той или иной технологии в создании вебсайтов/сервисов само по себе даёт однозначное преимущество в конкурентной борьбе не IT-шной компании? Это глубокое заблуждение, впрочем довольно распространённое. У конкурента продажи больше, потому-что система зачвок написана на питоне а не на асп? бред.

anonymous
()
Ответ на: комментарий от r

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

Сильно сомневаюсь, что выбор технологии останется за исполнителем.

Sun-ch
()
Ответ на: комментарий от user_undefined

>В общем жрите кактус и ориентируйтесь дальше на заказчиков который кроме как хостинг за 5$ не могут себе позволить.

Х.З., что движет мыслью заказчика, но сейчас немало таких, кому ломает переплачивать $5 за хост с питоном, но которые могут выложить $500 за 5 страничек с возможностью редактирования.

...

Всё же, сегодня хостинг с Питоном - это всё ещё экзотика.

KRoN73 ★★★★★
()
Ответ на: комментарий от anonymous

>А вы думаете, что изпользование той или иной технологии в создании вебсайтов/сервисов само по себе даёт однозначное преимущество в конкурентной борьбе не IT-шной компании?

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

>У конкурента продажи больше, потому-что система зачвок написана на питоне а не на асп? бред.

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

r ★★★★★
()
Ответ на: комментарий от Sun-ch

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

Это и есть обективные требования о которых я упоминал. К стати - вполне останутся. Просто заказчик серьезно подойдет к этому и у него будет свой список чего ему надо не оканчивающийся на рюхах и кружевах. Только я не сомневаюсь что со списком который ты привел заказчик не будет искать пыхеров подешевле с хостингом за копейки. О чем я и говорю.

r ★★★★★
()

> // Evaluates to "true" if $blå equals 42 and it evaluates to 54 otherwise.

> $blå = $blå == 42 ?: 54;

а $бля пхп шарит?

Farcaller ★★
()
Ответ на: комментарий от KRoN73

Да я это и сам вижу, вот только даже крупные, высоконагруженные сайты на пхп все равно используют минимум VDS. А уж на vsd можно и python и рельсы заюзать, в принципе так же как и lighttpd + php (fastcgi).

Сколько видел более-менее крупных заказчиков все решалось в конце-концов мной, есесно заказчик дает некоторые условия, но никак не os:XXX, framework:YYY, db:ZZZ, отступы N пробелов. Сколько видел, от _таких_ заказчиков больше проблем чем хоть какой-то прибыли. (З.Ы. просто пиар в стиле "а вот я/мы делали сайт такой-то конторе, я тоже считаю за прибыль)

user_undefined
()

Желаю РНР долгой, яркой, замечательной, мучительной смерти....

troorl ★★
()
Ответ на: комментарий от KRoN73

> Всё же, сегодня хостинг с Питоном - это всё ещё экзотика.

4.2 Даже хостинг с Django уже не экзотика, а питон на каждом шагу...

troorl ★★
()
Ответ на: комментарий от anonymous

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

Я захожу сначала на http://asp.net - мне выкидывается вьюстейт. Потом я нажимаю на http://asp.net/downloads. Вьюстейт, что он мне дал, ему не придет - придется ему снова "присваивается какой-нибудь уникальный ID посетителя и пр", и фактически это будет делаться при каждом клике. Так что на мой вопрос вы не ответили.

>В десктопе вы в обработчике нажатия кнопки можете получить заголовок кнопки, её размеры и пр., верно? Благодаря ViewState это можно сделать и в вебе.

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

Есть объект экземпляра TextFieldControl, отнаследованный от WebControl. У него есть инстанс переменные (поля), которые привязаны к этому объекту, и я с ними работаю. Если я делаю ему .width=112, то в его инстанс переменную _width запишется это значение. Затем происходит рендер страницы. Рекурсивно (в эксепшнах так и пишут - RenderRecursive, и так несколько раз в колл стеке). Сначала рендерется один контрол, потом рекурсивным вызовом рендерится другой контрол. И когда дойдет очередь до myCoolTextField.Render() то рендер соберет все поля и на выходе у него будет строка, содержащая style="width:112px"

После постбака новое введенное значение посылается мне в POST контенте, который доступен в хештаблице Request.Params[]. Соответственно asp.net проходится по нему, и значение, имеющее отношение к этому контролу забиывает в Value этого контрола. Именно поэтому привыкшие к делфеподобному методу программирования обнаружат в myCoolTextField.Value заветное значение.

anonymous
()
Ответ на: комментарий от anonymous

[ПРОДОЛЖЕНИЕ]

Зачем же нужен вьюстейт, не понятно. Но по моим наблюдениям дело обстоит так: В нашем проекте, на дотнете, была форма из 3 шагов. Каждый шаг засунут в панель, и в зависимости от активного шага, ненужные панели делаются .Visible = False, а нужная - True. Соответственно при рендере невидимые панели не создадут HTML код, однако при обращении к контролам неотрендеренной панели, после постбака, значения сохранятся. Так вот я считаю, что эти значения как раз берутся из постбака, а заодно и все другие поля неотрендеренных контролов. В подтверждение скажу, что на страницах где больше контролов, вьюстейт самый жирный. А еще не факт, что расшифровка этого вьюстейта на много быстрее обращения к файлу с сессией/строке таблицы сессий.

Обосновываю мое мнение ненужности вьюстейта при наличии AJAX: Все невидимые панели не приходят, пока пользователь их не запросит. Как только он запросил панель, она остается у него в каком-либо html элементе, со всеми значениями. Когда пользователь делает [аналог постбака в моделе без AJAX-а], то ему приходит значение другой панели, то вместо отправки данных видимых контролов и вьюстейта посылается значение видимых контролов и скрытых контролов (которые не видны ему на экране, а висят в скрытом html элементе), т.е. все проходит без вьюстейта. Также нет ненужных перезагрузок, значения полей(в виде шифрованного вьюстейта) не передаются обратно, что экономит трафик. Такая модель быстрее, но сложнее. Наверное из-за недостатка ресурсов у майкрософта, она не была реализована в asp.net, или же реализована позже(я работал только с 1.1), с пиаром и с очередным buzzyWord-ом (возможно это и был Atlas, и прочее, много они всяких слов высрали связанных с AJAX и .NET), чтобы все покупали новую студию и прочее.

> В десктопе вы в обработчике нажатия кнопки можете получить заголовок кнопки, её размеры и пр., верно? Благодаря ViewState это можно сделать и в вебе.

И давайте представим такую ситуацию. У меня текстовые поля <input type=text> могут ресайзиться хитрым скриптом. Производится постбак. Будет ли новый размер доступен по myCoolTextField.Width -- я буду шокирован если да, и даже скачаю быдлоподелку майкрософта, поставлю его под виртуальной машиной, чтобы проверить это. Но все же - это никак не будет связано с вьюстейтом. Поскольку он шифрованный - на клиенте он не меняется. Поскольку ширина не хранится в input type=hidden, то она не будет передана на сервер, следовательно надо в __doPosBack получать ее и сериализовывать куда-то, но вроде эта функция статична.

>И, согласитесь, что ни о каких 20К речь не идёт, а 200 байт - не тот размер, из-за которого стоит бучу поднимать.

Проблема в том что он растет, и даже 200 байт это не приятно. Посмотрите на замечательный сайт http://www.alistapart.com/, написанный на ruby on rails. Сравните соотношение HTML кода (того трафика что вы получаете) к наполнению страницы, и повторите это для asp.net. Отличаться будет, думаю, в десятки раз.

anonymous
()
Ответ на: комментарий от troorl

просто python практически никому не нужен, а вот с нужными библиотеками уже и найти сложней, да и в куче быдлохостингов за 5$ людей сразу блокирую "за превышение допустимых ресурсов"

Я тут столкнулся с тем что на серваке ставили perl-modules, и после этого сносили практически все файлы из пакета. питона на этом серваке не было вообще.

user_undefined
()
Ответ на: комментарий от troorl

Критики ASP.NET по поводу вьюстейта слили, я так понял?

anonymous
()
Ответ на: комментарий от troorl

>4.2 Даже хостинг с Django уже не экзотика, а питон на каждом шагу...

Дай штук пять "десятибаксовых" русских хостеров с Питоном - может и пропихну клиентам :) У меня фреймворк сейчас дошёл до стадии, когда его модель данных фактически к любому языку с reflection привязывается. Вот можно будет на Питон и начать переносить понемногу :)

KRoN73 ★★★★★
()
Ответ на: комментарий от anonymous

Не анонимус но скажу - viewstate можно без проблем отключить (кстати 99% нормальных сайтов под asp.net не используют ни WebForms ни ViewState). Да и на python (IronPython) в asp.net можно писать, просто куча народу готовы накидать в студии страничку и вообще не задумываться как оно там в реальности будет работать.

user_undefined
()
Ответ на: комментарий от KRoN73

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

user_undefined
()
Ответ на: комментарий от Ky6uk-Py6uk

>P.S. не надо мне показывать ссылку на Javascript 1.5 Reference,

В таком случае прочитай пункт 6. Регексп $ это конец строки, значит в браузере где split работает только с регекспом ( а "классический" split работает только с регекспом ), а значит ничего бы не заменилось. Но почему-то на многих сайтах люди не думают о том чтобы в реплейсе вместо . ставить \. и вместо $ писать \$.

>сайте Мозиллы (это что - эталон ?).

Это единственный вменяемый сайт с документацией по javascript. На msdn по js найти ничего не возможно, постоянно коллизия с CLR функциями, а mdc функция - всегда дает вменяемую документацию с нормальным дизайном.

>Во всех остальных references и книгах по Js везде указано, что первый параметр для replace - регексп,

Покажи хоть одно где сказано что это только регексп?

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

anonymous
()

они уже сделали поддержку threads? унифицированные драйвера БД? глобальные на весь сервер классы и переменные? не слышу? нет? тогда зачем они до сих пор живы?

gigabito
()
Ответ на: комментарий от anonymous

Внимательно читаем спеки - http://www.ecma-international.org/publications/standards/Ecma-262.htm :


15.5.4.11 String.prototype.replace (searchValue, replaceValue)
          Let string denote the result of converting the this value to a string.
          If searchValue is a regular expression (an object whose [[Class]] property is "RegExp"), do the
          following: If searchValue.global is false, then search string for the first match of the regular
          expression searchValue. If searchValue.global is true, then search string for all matches of the
          regular    expression    searchValue.     Do     the    search     in  the same  manner     as    in
          String.prototype.match, including the update of searchValue.lastIndex. Let m be the
          number of left capturing parentheses in searchValue (NCapturingParens as specified in 15.10.2.1).

user_undefined
()
Ответ на: комментарий от r

Что сударь предлагает взамен? А знает ли сударь соотношение цен на разработчиков на PHP, Perl, JSP, Python? А знает ли сударь объемы предложения на рынке труда? А знает ли сударь соотношение по производительности разработчиков на разных языках? Ну и наконец может быть сударь знает сколько времени нужно чтобы вырастить минимально приемлемого разработчика и хорошего разработчика на PHP и на Perl?

eXOR ★★★★★
()

Из языка вырезали все что сделало его популярным :). Осталось еще строгую типизацию сделать...

eXOR ★★★★★
()
Ответ на: комментарий от anonymous

Сделайте EnableViewState = false, если вам не надо иметь доступа к его полям.

В задаче с панелями вопрос: как определить, какая панель видима в текущий момент? Где надо хранить переменную со значением "текущая видима я панель"? Только не говорите, что в сессии. Для этого и надо использовать вьюстейт. Или где хранить ID документа, который мы в данный момент редактируем?

Конечно же, изменения, сделанные на стороне клиента, во вьюстейт не попадают.

Надо понимать, что что объект WebPage создаётся новый для каждого постбека. Т.е. реально работа идёт в stateless режиме. Для имитации состояния используются сессии и ViewState. Т.е. страница в процессе рендеринга сохраняет состояние, а при повторном запросе новый объект это состояние считывает и как бы продолжает работу, после отработки сохраняет новое состояния и т.д. Какие значения входят в "состояние страницы", и где какие из них хранить(во вьюстейте или в сессии) решает программист. Вот и всё.

Про 1.1 сейчас вообще обсуждать глухо, это безнадёжный obsolete. То, что называлось Atlas, сейчас доработано, вылизано, называется MS AJAX и является частью .ASP.NET 2

anonymous
()
Ответ на: комментарий от anonizmus

>лажен кто верует. Сейчас вот предстоит гемор по переводу быдлоподелий
>написанных на пыхе4 на пых5, сами знаете почему, а масса кода которую

Что то мне подсказывает что такой гемор был и при переходе с perl4->perl5. И будет для perl5-perl6. Да и для .NETтовых фреймворков
просто неповерю в его охрененную снизу вверх совместимость. Тут же на
лоре постоянно кто-то плакался. Как и про Яву ( не на уровне
ява-машины естественно)

>породила связка быдлокодеров/пыхпых очень сильно избыточна и не ужна,
>нормальных поделий очень мало (и полагаю их сильно меньше будет,
> т/е в

Такое же обвинение вендузятники постоянно пускают в сторону Линукс и
FOSS. Линукс не нужен ? Это просто свойство модели - раз есть толпа
программистов, есть и толпа быдлоподелий.

>плане роста пик был пройден и с него сваливают). Давайте просто
>похороним его, как ошибку эволюции, и водрузим монумент (это для того
>что бы не забывать как НЕ НАДО делать). Будет правильнее, имхо.

Я не уверен что его получится похоронить - именно вследствие своей
природы, и постоянных изменений : он живучий. Мутирует и
приспосабливается.


Вот лично мне из языков нравится питон(руби не знаю ). Но вот как CMS - Drupal(php). В том числе за огромный массив GPL-модулей.


kernel ★★☆
()
Ответ на: комментарий от user_undefined

>Внимательно читаем спеки - http://www.ecma-international.org/publications/standards/Ecma-262.htm :

Как вы унылы.. Внимательно дочитываем спеки до конца. Вслед за тем что вы накопировали идет:

If searchValue is not a regular expression, let searchString be ToString( searchValue) and search string for the first occurrence of searchString. Let m be 0

anonymous
()
Ответ на: комментарий от anonymous

>В задаче с панелями вопрос: как определить, какая панель видима в текущий момент?

Во вьюстейте, как поле контрола TabControl (который эмулирует табы и переключает в зависимости от них панели).

Вот я и говорю что он не нужен, потому что отлично заменяется AJAX-ом. Более того - можно это было сделать автоматически, чтобы все было AJAX-ом. Именно эмулировать поведение десктопного приложения, а все сигналы посылать через AJAX запросы,

Я согласен что вьюстейт нужен если это сделано не без AJAX. Смысл в том что можно было сделать тот же функционал, с той же простотой разработки, но по AJAX. Майкрософтом это сделано не было (в 1.1). Когда это будет сделано то вьюстейт не нужен будет, останется depricated для совместимости.

>Какие значения входят в "состояние страницы", и где какие из них хранить(во вьюстейте или в сессии) решает программист.

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

>Про 1.1 сейчас вообще обсуждать глухо, это безнадёжный obsolete. То, что называлось Atlas, сейчас доработано, вылизано, называется MS AJAX и является частью .ASP.NET 2

Спасибо, буду знать.

anonymous
()
Ответ на: комментарий от user_undefined

> просто python практически никому не нужен

4.2

troorl ★★
()
Ответ на: комментарий от anonymous

>Офтоп: апач уже умеет держать сразу несколько версий PHP? Помнится была большая трабла подключить PHP4 и PHP5 одновременно.

Да хоть 10 версий +))). Для апача нет различий в версиях php

#!/usr/bin/php3

#!/usr/bin/php10


ну или
#!/usr/bin/php.sh --version 5.0.2

+)

Различия есть для mod php. Т.е. можно держать несколько различных mod php (для каждого php) и для каждого сайта указывать какой версии modphp использовать .

vtVitus ★★★★★
()
Ответ на: комментарий от eXOR

>А знает ли сударь соотношение цен на разработчиков на PHP, Perl, JSP, Python?

При чем тут это? Я просто говорю что упомянутый "серьезный заказчик" не приходит с "хочу сайт на пыхе". В большинстве случаев ему предлагают. Предложения по цене идут так (от дешевых -> к дорогим): php->perl/python/ruby->Java/.NET. "Обычный" заказчик выбирает ценовой диапазон и получает предложение. Обычно на пыхе. Серьезный подходит к делу основательно и получает предложение обычно на java/.net. Perl?/Python/Ruby сейчас обуреваемы желанием перелезть из ниши пыховых проектов в нижу жабскодотнетовских. По успешности (дальше - успешнее) perl->ruby->python. Первый в рыночной нише возле пыха, последний ближе к жабе. Руби посередине.

r ★★★★★
()
Ответ на: комментарий от KRoN73

> Дай штук пять "десятибаксовых" русских хостеров с Питоном - может и пропихну клиентам :)

Есть даже халявные хостинги с питоном. Национальностью не интересовался, но вроде славянский, сойдёт? http://ho.com.ua/ . Есть также неплохой http://www.1gb.ua . А http://tophost.com.ua/ и вовсе с поддержкой джанги и рельсов. Уверен, у вас тоже есть такие хостинги...

troorl ★★
()

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

anonymous
()
Ответ на: комментарий от kernel

>Что то мне подсказывает что такой гемор был и при переходе с perl4->perl5

Что-то мне подсказывает, что релиз perl-5 был в 1994 году. Официальный релиз апача был годом позже.

Sun-ch
()
Ответ на: комментарий от kernel

2 kernel * (*) (12.12.2007 17:39:11)

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

anonymous
()
Ответ на: комментарий от user_undefined

>> В общем жрите кактус и ориентируйтесь дальше на заказчиков который кроме как хостинг за 5$ не могут себе позволить.

Дорогой мой юный (судя по высказываниям) человечек! Если УкрНет и Крайслер Истерн Юроп - это клиенты за 5 баксов, то кактус жрете вы.

В газификации луж помогает.

Gadeshi
()
Ответ на: комментарий от anonymous

> .NETтовские фрейморки не так страшны - когда перелазили с 1.1 на 2.0 то то все прекрасно пересобралось, за исключением тем мест в коде, которые использовали какие-нить недокументированные возможности (а это как погляжу во всех языках так поступают тру-программеры)

Как посмотрю, это отличительная особенность .NET - недокументированные возможности. Что-то в Python я таких возможностей не встречал, всё по документации...

troorl ★★
()
Ответ на: комментарий от anonymous

>>Интересно на фоне конкурентов.

>>А вы думаете, что изпользование той или иной технологии в создании вебсайтов/сервисов само по себе даёт однозначное преимущество в конкурентной борьбе не IT-шной компании? Это глубокое заблуждение, впрочем довольно распространённое. У конкурента продажи больше, потому-что система зачвок написана на питоне а не на асп? бред.
anonymous (*) (12.12.2007 16:52:20)

Респект анонимусу. Рулит не столько технология сама по себе, сколько профессионализм разработчиков, компетентный проджект-менеджмент и отлаженная система работы с заказчиками.
Именно это обеспечивает успех конторы, а если этих трех факторов нет, то хоть используй жабу, хоть питон, хоть пыхпых, хоть дот.нет - контора рухнет (уже поработал в такой в свое время - вовремя свалил).

Gadeshi
()
Ответ на: комментарий от Gadeshi

> 1. RoR мало распространен и почти не известен реальному заказчику.
близко к истине, но ситуация меняется.

> 2. RoR не предоставляется хостерами даже на VIP-тарифных планах -
только на выделенных серверах.
для мелких проектов: vds и vps сейчас стоят сравнимо с shared hosting, так что смысла обсуждать это я не вижу.
для крупных проектов в любом случае придётся покупать нормальный dedicated.

> 3. На чем писать, определяет заказчик.
это рабовладелец, а не заказчик. К слову, заказчик оценивает технические риски исходя из репутации подрядчика, не так ли?

> 4. Попробуй найти специалистов уровня Senior Developer или хотя бы
Middle Developer для RoR.
их есть у меня. меряю пока в штуках, а не в десятках, но тем не менее.

> 5. Попробуй найди QA-инженеров (а не дымных тестеров-студентов),
которые будут работать с RoR (писать тест-кейсы, проводить
автоматизированное тестирование).
выращиваем своих потихоньку.

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

wt
()
Ответ на: комментарий от anonymous

это мой последний ответ тебе, как анонимусу.

>> P.S. не надо мне показывать ссылку на Javascript 1.5 Reference,

> В таком случае прочитай пункт 6. Регексп $ это конец строки, значит в браузере где split работает только с регекспом ( а "классический" split работает только с регекспом ), а значит ничего бы не заменилось. Но почему-то на многих сайтах люди не думают о том чтобы в реплейсе вместо . ставить \. и вместо $ писать \$.

>> Во всех остальных references и книгах по Js везде указано, что первый параметр для replace - регексп,

> Покажи хоть одно где сказано что это только регексп?

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

Какая аргументация нужна ? то, что ты написал вначале как пример кода, напомню: .replace("$",":",'g'). ) - это вообще не работает в Javascript, поэтому я и переспросил о каком же мы языке говорим.

Далее, в случае Javascript, split как раз изначально поддерживает "официально" два варианта - с регекспами и без. В ОТЛИЧИИ от replace. Открываем практически любую серьезную книгу по Javascript. У меня их несколько, в бумажном виде, некоторым уже по 7 лет. И вот к примеру ссылка на Javascript Reference: The Definitive Guide (О'Реили): http://victor.transformadora.com/Oreilly/webprog/jscript/ch23_01.htm#ch23-860... и находим описание функций String.replace и split по сравнению с этим, ссылка на Мозилловскую "интерпретацию" выглядит просто смешно.

Я надеюсь аргументация понравилась ? Тогда жду аргументацию с вашей стороны.

Ky6uk-Py6uk
()
Ответ на: комментарий от Sun-ch

> Что-то мне подсказывает, что релиз perl-5 был в 1994 году. Официальный
> релиз апача был годом позже.

Вы наверное не знаете про эпопею с perl6 и parrot ;) Это же долгострой века :)

Наверное когда perl6 придумывали к 2007 расчитывали уже сидеть
на perl7 :). То что так не получилось - что-ж бывает. Кроме того изменения имеют привычку выходить на насыщение.

kernel ★★☆
()
Ответ на: комментарий от vtVitus

>Т.е. можно держать несколько различных mod php (для каждого php) и для каждого сайта указывать какой версии modphp использовать .

Можно и в рамках одного сайта для разных расширений :)

KRoN73 ★★★★★
()
Ответ на: комментарий от Ky6uk-Py6uk

Function    Own Time
r3         822.306ms
r2         294.774ms
r1         277.739ms

	<script type="text/javascript" charset="utf-8">
		var str = "$a$b$c$d$a$b$c$d$a$b$c$d$a$b$c$d$a$b$c$d$a$b$c$d$a$b$c$d";
		
		function r1(str){
			for(var i = 0;i<10000;i++){
				str.replace(/\$/g,":");
			}
		}
		function r2(str){
			for(var i = 0;i<10000;i++){
				str.replace("$",":",'g');
			}
		}
		function r3(str){
			for(var i = 0;i<10000;i++){
				str.split("$").join(":");
			}
		}

	</script>

anonymous
()
Ответ на: комментарий от anonymous

>.NETтовские фрейморки не так страшны - когда перелазили с 1.1 на 2.0 то
> то все прекрасно пересобралось

Хорошо что у кого-то есть в жизни счастье :)

>за исключением тем мест в коде, которые использовали какие-нить
>недокументированные возможности

Угу. Это собственно от того, ИМХО, что программеры частенько язык учат не по книжкам а на опыте и примерах.

Нету короче технологий типа "серебряная пуля" :)

kernel ★★☆
()
Ответ на: комментарий от anonymous

>Function    Own Time

В PHP (правда, на в 100 раз бОльшем числе циклов):

preg_replace: time=1.70379900932
str_replace : time=1.17648410797
join/split  : time=2.2755420208

В Питоне почему-то регексп и даже join/split вышел тормознее:

sub       : time=17.400000
replace   : time=1.120000
join/split: time=4.390000

Сорцы:

#!/bin/python 

import re, time

str = "$a$b$c$d$a$b$c$d$a$b$c$d$a$b$c$d$a$b$c$d$a$b$c$d$a$b$c$d";

def r1(str):
    for i in xrange(1000000):
        re.sub(r'\$', ':', str)

def r2(str):
    for i in xrange(1000000):
        str.replace('$', ':')

def r3(str):
    for i in xrange(1000000):
        ":".join(str.split('$'))


start = False

def timing(str):
    global start

    if(start):
        print "%s: time=%f" % (str, time.clock() - start)

    start = time.clock()

timing("")

r1(str)
timing("sub       ")

r2(str)
timing("replace   ")

r3(str)
timing("join/split")

и 

<?php

$str = "$a$b$c$d$a$b$c$d$a$b$c$d$a$b$c$d$a$b$c$d$a$b$c$d$a$b$c$d";

function r1($str)
{
    for($i = 0; $i<1000000; $i++)
        preg_replace('/\$/', ':', $str);
}

function r2($str)
{
    for($i = 0; $i<1000000; $i++)
        str_replace('$', ':', $str);
}

function r3($str)
{
    for($i = 0; $i<1000000; $i++)
        join(':', split('\$', $str));
}

function timing($str="")
{
    static $start = NULL;

    if($start)
        echo "$str: time=".(microtime(true) - $start)."\n";

    $start = microtime(true);
}

timing();
r1($str); timing("preg_replace");
r2($str); timing("str_replace ");
r3($str); timing("join/split  ");

KRoN73 ★★★★★
()
Ответ на: комментарий от anonymous

>Обоснования?

Количество библиотек и высокоуровневых фреймворков, и наличие результатов работы этих фреймворков. То что руби конкретно отстает от питона оспаривать никто не будет по этому параметру?

r ★★★★★
()
Ответ на: комментарий от KRoN73

Тьфу, мерзкий копипаст :)

Вот так на PHP:
preg_replace: time=6.78807497025
str_replace : time=3.41986298561
join/split  : time=24.8173749447

Строку вначале нужно в одиночные кавычки, а в CLI включать E_NOTICE...

KRoN73 ★★★★★
()
Ответ на: комментарий от Gadeshi

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

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

r ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.