Re[10]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 10.08.07 15:17
Оценка: +1
Z>>>Пример с алертом был утрирован СПЕЦИАЛЬНО!

M>>И именно поэтому он некорректен. ПОтому что это — синтетический пример, который ничего не доказывает.


M>>Я привел тебе гораздо более реальный пример, который ты благополучно проигнорировал.

M>>Тултип в 36КБ против jQuery + тултип в 29.7КБ

M>>Или тот же пример с $('a.ajax')...


M>>Эти примеры ты активно игнорируешь, хотя они показывают, что код ручками проигрывает коду, основанному на jQuery.


Z>Я не игнорирую, я сознательно отказываюсь играть по вашим правилам и доказывать что-то, впрягаясь в программирование ради доказательства.


А почему мы должны играть по твоим правилам и упираться в приведенный тобою пример. Нет уж. Ты попросил нас, мы сделали. Мы попросили тебя... И? Ни ответа ни привета. Спор ради спора.

Z>Пример с алертом некорректен в такой же степени, как и все те примитивные примеры, на базе которых показывается лже-простота пропагандистами, как и твой пример с раскраской строк, такой же не оптимальный и не требующий jQuery по большому счёту. Это и есть разговор о javascript и о программировании (который ты не увидел), разговор, на которой я настроился, а не на "про скорость разработки, зарплаты, бизнес и проч".


Блин. Что ты прикопался к этому примеру? Статья является введением в jQuery.

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


Или чукча не читатель?

Как видно из этого примера, библиотека jQuery позволяет находить простые и изящные решения для, казалось бы, сложных задач.


Или чукча опять не читатель? Чем твоя собственная библиотека хуже/лучше jQuery? Если она лучше, пожалуйста, приводи код, пиши статью. Здесь так и делают (например, SObjectizer
Автор: Евгений Охотников
Дата: 30.12.05
одного из участников). Если нечего показать, а хочется опронента неаргументировано закидать какашками, то начинай свой топик в Священных Войнах...

Еще раз повторю. jQuery — это фреймворк. Библиотека. Она включает в себя функции для легкого и быстрого манипулирования DOM'ом, AJAX'ом и т.п. По сравнению с кодом на чистом (без библиотек) JS она позволяет писать более грамотный и понятный код, облегчая жизнь программисту. Таково свойство всех фреймворков — облегчать жизнь программисту, скрывая низкоуровневую работу. Если есть проблемы с пониманием того, что такое фреймворк или библиотека — то это не ко мне, это в гугл.

Z>>> Чтобы продемонстрировать избыточность кода задаче. Очень похожие утрированные примеры (подвесить клик на якорь или добавить класс и т.п.) используются в большинстве туториалов.


Ты понимаешь, что такое туториал? Или ты хочешь, чтобы тебе в туториале сказали: вот тебе Десептикон, он работает, разбирайся сам. Цель любого туториала — дать представление о библиотеке.

Z>>> Общий посыл при этом — смотрите и учитесь, как просто и легко можно это сделать по сравнению с чистым javascript. Хотя на самом деле (вообще не понимаю, как можно об этом ещё и спорить) отдельная задача и даже несколько связанных задач решаются руками проще/оптимальнее/качественнее, чем с использованием большого избыточного (априори всегда избыточного) пакета. Тем более чужого. Тем более javascript-пакета. Тем более в исходники которого, как оказалось, никто и не смотрит.


M>>Если хочешь, я напишу статью "Advanced uses of jQuery". Хотя она никому нафиг не сдалась, потому что через два дня после работы с jQuery люди сами начинают писать код любой сложности. Да в туториалах можно найти полезную инорамцию, идущую дальше, чем простые примеры (например, My First ExtJS DataGrid).


Z>Хочу, полный разбор исходников, узкие места,


Значит ты думаешь, что статья "Advanced jQuery" будет востребована. Так сразу и скажи. А то требуешь от 10-страничного введения в библиотеку полного разбора по косточкам. Почему тебя не коробит, например, что CSS Tutorial "пропагандирует" CSS, но при этом не дает разбора всех связанных с CSS проблем?

Z>сравнение всего кода со всем кодом, а не передёргивание с вызовами.


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

Раньше вы писали так:

100 строчек кода

А с этой библиотекой вы будете писать так:
10 строчек кода


Z>Может тогда меньше по javascript тусовкам будет бродить привидений, который задают вопросы вроде, "а что это за синтаксис такой $(), а то не могу его в доках найти".


"а что это за синтаксис такой $(), а то не могу его в доках найти" — это клиника, их и доки по JS не спасут.

M>>А насчет отдельных задач...


M>>Задача 1. У меня на странице есть ссылки с классом .ajax. Необходимо сделать так, чтобы при щелчке на эти ссылки аяксом подгружалась страница, находящаяся по адресу в href соответствующей ссылки, а содержимое той страницы загружалось в элемент с id="ajax_result" (например, нечто похожее реализовано в этом тултипе и у меня на странице).


M>>Задача 2. Изменить задачу 1 так, чтобы тоже самое работало для всех ссылок в элементе с id="other":


M>>Ваш ход. Можно использовать "чистый" JS или самописные фреймворки.


Z>Хожу:


Z>
Z>f();
Z>


Не катит. Я привел конкретный пример с использование конкретной библиотеки, который можно пощупать и протестировать в любом браузере. Твой ответ можно охарактеризовать только как "слив защитан"

Z>>>Но если количество и объём многомерных задач таковы, что мы уже подходим к раскрытию возможностей jQuery по-максимому, то фреймворк можно (заметьте, я не выступаю против, я говорю, что можно) использовать, на то он и большой пакет.


M>>Просто таки гигантский пакет. Целых 20КБ кода


Z>Во-первых 60 скопейками, а не 20, но это модная манера такая сжатый код презентовать. И 20 много, если тебе нужно только то, что укладывается в 2-4-5-10...


Опять неаргументировано. Я уже приводил достаточно сложный код и предлагал сравнить его с jQuery. Ответа я так и не дождался. Вперед. Задачи я описал. Давай, реши их в 2-10 строчек кода. Я не шучу, кстати. Я привык аргументировать свои высказывания и ожидаю от оппонента того же. Задача 1. И задача 2. Они элементарны.

Z>>>Почему так происходит? Само собой, ни один из нас не признается в своей слабой подготовке или в нехватке времени, или в нехватке браузеров, или в недостатке кросс-браузерного опыта, или в ещё в чём, не знаю


M>>Я, по-моему, уже не раз говорил, что наша задача — это не разрабатывать свой собственный javascript-фреймворк, а разрабатывать продукт.


Z>Я с кем разговариваю? Ты менеджер, владелец, программист или всё вместе? Выдави из себя javascript-программиста и поговорим. А иначе я начинаю путаться в маркетологических смыслах.


Я программист. Я знаю, что мне нужно сдать проект к сроку. Эти сроки не подразумевают под собой разработку/отладку/тестирование собственного javascript-фреймворка.

У меня есть, например, таск:

- Есть список price patterns (правила изменения цен)
— Есть список отелей
— Есть список агентств и групп агентств

Надо:
Выбрать отель/отели, агентство/агентства, start date — end date
Нажать на manual apply

Для каждого отеля выпадает список комнат в периоды, пересекающиеся с start date — end date
Для каждой отдельной комнаты я должен мочь задать один из существующих паттернов или создать на лету свой собственный паттерн в модальном диалоге


С jQuery (+ Taconite + jqModal) у меня это заняло пару дней. Плюс пару дней на тестирование. Допустим, неделя.

Если бы у меня не было jQuery? Этот таск бы растянулся на месяц. Потому что надо же еще свой фреймворк написать... Да еще оттестировать...

Хорошо. Выделю из себя только javascript-программиста. Моя реакция на jQuery? "Ура, не надо больше низкоуровневый код писать! Давай-ка я сосредоточусь на более веселых вещах. Напишу ка я себе супер-навороченную админку." jQuery — это инструмент. причем очень эффективный инструмент.

M>>Яркий пример. Wordpress с версии 2.2 используют jQuery. Почему они не написали свой собственный фреймворк? Потому что их задача — выпустить оптимальный кросс-браузерный форумный пакет, а не разрабатывать велосипеды. У них есть задачи поважнее и поинтереснее, чем бороться с браузерами и тестировать Javascript на двух десятках платформ. Им проблем с кросс-браузерным CSS хватает.


Z>Опять про бизнес, теперь Wordpress-ный.


Пойми, что разработка ПО — это всегда бизнес (за очень редким исключением).

Предположим, у меня собственная контора программистов. Выделить n килобаксов на разработку собственного js-фреймворка или лучше их сэкономить?
Предположим, я работаю на кого-то. Мне никогда в жизни не дадут тратить время на изобретение собственных велосипедов (если контора вменяемая), потому что есть такая вещь, как дедлайны и сроки. Велосипеды обычно приводят к переносу этих сроков на более позднее время и потерю клиентуры.
Предположим, у меня (изначально)некоммерческий проект типа digg. Ключевое слово — time to market. Мне надо законченный продукт выпустить как можно быстрей, потому что хорошие идеи кто-то рано или поздно реализует.

и .т.п

D>>>>А потом еще копипайстить из одного проекта в другой — если снова заходите использовать...


Z>>>Эти доводы я принимаю и не принимаю одновременно, согласитесь, что всё зависит от ситуации. Компании "A", построившей все свои проекты на базе JSLibrary №13 ваши jsQuery-наработки даром не нужны. Но, замечу, всегда будет нужен ваш опыт в отрыве от любой либы...


M>>Отучаемся говорить за всех. Мне известно много случаев, когда компания "А" с радостью переходила на грамотный фреймворк, потому что избавлялась от кучи геморроя и головной боли.


Z>Отучаемся передёргивать карты, я говорю не за всех, а о том, что всё зависит от ситуации. То есть говорю про то же, что и ты.


Вот это называется говорить за всех:

Компании "A", построившей все свои проекты на базе JSLibrary №13 ваши jsQuery-наработки даром не нужны.


Я же сказал, что мне известно много случаев, когда...

M>>Что тако псевдо-программирование?


M>>Например, taconite — это псевдо-программирование? Или, скажем, Interface. Или, скажем, Ext?


Z>Псевдопрограммирование в смысле javascript — это то, что описывает твоя статья,


Моя статья является введением в библиотеку. Что ты хотел от введения?

Сейчас люди, которых я "подсадил" на jQuery проектирют сложные UI на яваскрипте и благодарят меня чуть ли не каждый день за то, что я избавил их от геморроя.

Z>это управление самодельным


Практически любой фреймворк в начале является самодельным. Ты же не боишься свой самодельный фреймворк использовать? И твои коллеги по работе не боятся использовать твой фреймворк? Чем jQuery отличается?

Z>неоптимальным


доказательства? только не на синтетических примерах типа alert() У меня есть более грамотные тесты: например, замеры скорости. Поверь, что 10-165 миллисекунд — это очень быстро.

Z>избыточным


определи избыточность.

Z>нетобойсделанным


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

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

Z>АРI от джона/пети/димы


Да от кого угодно.

Z>с отсутствующим прошлым


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

Z>и неясным будущим...


Будущее более, чем ясное: http://docs.jquery.com/JQuery_1.2_Roadmap


dmitriid.comGitHubLinkedIn
Re[16]: jQuery – Javascript нового поколения
От: AKS.  
Дата: 10.08.07 17:35
Оценка: 32 (1)
Честно говоря, надоело ждать, пока кто-нибудь исправит вот это ложное утверждение:

a — функция
b — не функция
c — не функция

Что и следовало ожидать. Почему a — функция? Читаем ECMA-262...


Почему не протестирован этот ма-а-алюсенький кусочек кода? Нет времени и денег на тесты с одним alert'ом?
Хорошо, пишу я:

var a, b, c;

a = /^\dfunction\d/;
b = new String('Wow, J(ava)Script is soooo functional...');
c = ['method', 'function', 'object'];
c.constructor = 'Lego';

// ...trust me... --John :)
function isFunction(fn) {
    return !!fn && typeof fn != "string" && !fn.nodeName && 
        fn.constructor != Array && /function/i.test( fn + "" );
};

alert([isFunction(a), isFunction(b), isFunction(c)]); // -> true, true, true!!!


Причем в случае с регвыром спецификация здесь ни при чем! Уберите символ f из рега и результат выполнения isFunction(a) будет false...
Re[13]: jQuery – Javascript нового поколения
От: rameel https://github.com/rsdn/CodeJam
Дата: 10.08.07 19:52
Оценка:
Здравствуйте, Zeroglif, Вы писали:

[[ поскипано ]]

Z>Чужую. Лучше делать своё. А там и опыт нарисуется. Боевой.


Хм, а чем твой опыт лучше, чем John Resig и комьюнити, развивающий этот проект. А, я понял, у него есть один огромный недостаток — "его делали не мы"
... << RSDN@Home 1.2.0 alpha rev. 704 >>
Re[10]: jQuery – Javascript нового поколения
От: rameel https://github.com/rsdn/CodeJam
Дата: 10.08.07 19:52
Оценка:
Здравствуйте, AKS., Вы писали:

AKS>Zeroglif предложил целую кучу различных вариантов развития этой темы в конструктивном ключе — выбирайте на свой вкус!


Цитаты можно в студию .
... << RSDN@Home 1.2.0 alpha rev. 704 >>
Re[11]: jQuery – Javascript нового поколения
От: rameel https://github.com/rsdn/CodeJam
Дата: 10.08.07 19:52
Оценка:
Здравствуйте, Mamut, Вы писали:

Я балдею, дорогая редакция. Человек — он же Zeroglif, не зарабатывающий на программировании, как сам признается топиком выше, учит программистов работать
... << RSDN@Home 1.2.0 alpha rev. 704 >>
Re[10]: jQuery – Javascript нового поколения
От: rameel https://github.com/rsdn/CodeJam
Дата: 10.08.07 19:52
Оценка:
Здравствуйте, Zeroglif, Вы писали:

Z>Хожу:


Z>f();

Вау! Крутая библиотека, круче, чем я себе представлял . Где качать и под какой лицензии? И еще:

Хочу, полный разбор исходников, узкие места, сравнение всего кода со всем кодом, а не передёргивание с вызовами. Может тогда меньше по javascript тусовкам будет бродить привидений, который задают вопросы вроде, "а что это за синтаксис такой f(), а то не могу его в доках найти".


M>>Я, по-моему, уже не раз говорил, что наша задача — это не разрабатывать свой собственный javascript-фреймворк, а разрабатывать продукт.


Z>Я с кем разговариваю? Ты менеджер, владелец, программист или всё вместе? Выдави из себя javascript-программиста и поговорим.


А смысл? От этого что, смысл вопроса изменится?

M>>Яркий пример. Wordpress с версии 2.2 используют jQuery. Почему они не написали свой собственный фреймворк? Потому что их задача — выпустить оптимальный кросс-браузерный форумный пакет, а не разрабатывать велосипеды. У них есть задачи поважнее и поинтереснее, чем бороться с браузерами и тестировать Javascript на двух десятках платформ. Им проблем с кросс-браузерным CSS хватает.


Z>Опять про бизнес, теперь Wordpress-ный.


Ага, он самый. А ты как думал?! Добро пожаловать в реальный мир.
... << RSDN@Home 1.2.0 alpha rev. 704 >>
Re[17]: jQuery – Javascript нового поколения
От: Zeroglif  
Дата: 10.08.07 20:13
Оценка:
Здравствуйте, AKS., Вы писали:

AKS>Честно говоря, надоело ждать, пока кто-нибудь исправит вот это ложное утверждение:


AKS>

AKS>a — функция
AKS>b — не функция
AKS>c — не функция

AKS>Что и следовало ожидать. Почему a — функция? Читаем ECMA-262...


AKS>Почему не протестирован этот ма-а-алюсенький кусочек кода? Нет времени и денег на тесты с одним alert'ом?


AKS, привет, спасибо за поддержку. Время — деньги.

AKS>Хорошо, пишу я:


AKS>
AKS>var a, b, c;

AKS>a = /^\dfunction\d/;
AKS>b = new String('Wow, J(ava)Script is soooo functional...');
AKS>c = ['method', 'function', 'object'];
AKS>c.constructor = 'Lego';

AKS>// ...trust me... --John :)
AKS>function isFunction(fn) {
AKS>    return !!fn && typeof fn != "string" && !fn.nodeName && 
AKS>        fn.constructor != Array && /function/i.test( fn + "" );
AKS>};

AKS>alert([isFunction(a), isFunction(b), isFunction(c)]); // -> true, true, true!!!
AKS>


AKS>Причем в случае с регвыром спецификация здесь ни при чем! Уберите символ f из рега и результат выполнения isFunction(a) будет false...


Вдвоём возможно быстрее достучимся, но похоже это тот случай, когда человек слабо представляет себе даже то, как работает любимая им функция из любимой им либы. Мне не поверил, сам не проверил и сел в лужу, выдержки из ECMAScript конечно же слегка невпопад, речь там идёт об "internal function", да и не имеет это отношение к алгоритму функции. Вообще никакого. Mamut, мои аргументы исходят от тебя самого, не жди их от меня, пиши ещё. AKS, к слову, напомню, в прошлом году здесь мы по наитию коротенько обсуждали то, что mozilla самостоятельно расширила нативный RegExp object так, что можно его вызвать /\d/('1') , но это их частное дело, согласно ES на таких объектах не должно висеть свойство [Call]], у них висит, уж очень это непростые объекты, перемудрили, отсюда и typeof /\d/ даёт function. И багом это особо не назовёшь, живёт до сих пор, подозреваю, что слишком много кода в сети завязано на таких проверках, как isFunction, и просто не стали трогать.

Несколько выдержек из ES для общего представления о том, чем по большому счёту отличается функция от не-функции (нативные объекты должны следовать этому, хостовым хорошо бы тоже, но могут врать, вроде того же alert-а в IE):

 7.8.5 Regular Expression Literals

    A regular expression literal is an input element that is converted to a RegExp object (section 15.10) when it is scanned.

8.6.2 Internal Properties and Methods

    <... из таблицы вырвал>

    [[Call]] - a list of argument values provided by the caller. Executes code associated with the object. 
    Invoked via a function call expression. Objects that implement this internal method are called functions.

11.4.3 The typeof Operator

    <...>

    5. Return a string determined by Type(Result(4)) according to the following table:
    
    <... из таблицы вырвал>
    
    Object (native and doesn't implement [[Call]]) - "object"    

15 Native ECMAScript Objects

    <... до кучи про [[Class]]>

    Unless specified otherwise, the [[Class]] property of a built-in object is "Function" if that built-in object 
    has a [[Call]] property, or "Object" if that built-in object does not have a [[Call]] property.


Ну, и дальше можно пойти непосредственно в ES15.10 поискать и не найти, положен ли таким объектам [Call]]... Повторюсь, к рассматриваемой isFunction это никаким боком не относится (но раз пошла такая пьянка), функция работает по очень простому алгоритму, который в определённых случаях просто врёт. Для jQuery и её внутренней логики такая функция может быть подходящей, но полагаться на неё отдельно для отдельных случаев я бы воздержался...
Re[12]: jQuery – Javascript нового поколения
От: Zeroglif  
Дата: 10.08.07 20:20
Оценка:
Здравствуйте, rameel, Вы писали:

R>Здравствуйте, Mamut, Вы писали:


R>Я балдею, дорогая редакция. Человек — он же Zeroglif, не зарабатывающий на программировании, как сам признается топиком выше, учит программистов работать


Ты по существу выстрели, а не мне лично в голову. Тем более, что я не человек.
Re[11]: jQuery – Javascript нового поколения
От: Zeroglif  
Дата: 10.08.07 20:26
Оценка:
Z>>Опять про бизнес, теперь Wordpress-ный.

R>Ага, он самый. А ты как думал?! Добро пожаловать в реальный мир.


Не надейся, что мой образ, который ты там себе нафантазировал имеет что-то общее с реальностью. Я не собирался обсуждать бизнес, скорость разработки и проблемы с нехваткой ресурсов (о чём здесь, кстати, честно признались, за что мой поклон этому товарищу). Неожиданно для меня разговор ушёл в другую сторону. Хотите использовать js-либы — используйте на здоровье.
Re[14]: jQuery – Javascript нового поколения
От: Zeroglif  
Дата: 10.08.07 20:30
Оценка:
Здравствуйте, rameel, Вы писали:

R>Здравствуйте, Zeroglif, Вы писали:


R>[[ поскипано ]]


Z>>Чужую. Лучше делать своё. А там и опыт нарисуется. Боевой.


R>Хм, а чем твой опыт лучше, чем John Resig и комьюнити, развивающий этот проект. А, я понял, у него есть один огромный недостаток — "его делали не мы"


Должен же понимать, опыт хорош своей принадлежностью. Твой опыт у тебя выглядит органичней, чем твой же опыт, но у меня.
Re[11]: jQuery – Javascript нового поколения
От: Zeroglif  
Дата: 10.08.07 20:32
Оценка:
Здравствуйте, rameel, Вы писали:

R>Здравствуйте, AKS., Вы писали:


AKS>>Zeroglif предложил целую кучу различных вариантов развития этой темы в конструктивном ключе — выбирайте на свой вкус!


R>Цитаты можно в студию .


Не выуживай конфликты, говори по существу, мы подтянемся.
Re[12]: jQuery – Javascript нового поколения
От: vaad2  
Дата: 10.08.07 23:04
Оценка:
Не надаело лажу писать?
Самый основной вопрос при написании больших проектов — преемственность, кроссбраузерность. JQ с этим справляется. Помимо этого JQ — документирован, для него полно плагинов (которые тоже документированы), которые "джедай программизьма" наверное не смотрел. Анимация делается на ура. Вместо того чтобы обкакивать, сначало бы написал что нибудь кроме алерта, порылся в доках.
Я спокойно могу посадить новичка за уже написанную документацию, разжеванную на примерах, вместо того, чтобы самому его обучать. Опять же если руки не кривые — убери лишнее из библиотеки, благо это не прототайп, по размеру вполне компактная и читаемая.

А твой мегаджаваскрипт кроме тебя самого никто не поймет. Клепать в одиночку электронные магазины — этого, конечно, достаточно. Из-за таких перцев (которые пишут "круто") приходиться ковыряться в настоящем гуано.

Насчет миллисеккунд — это глум чтоли? Люди вы на javascript ядерные реакции рассчитываете?

Насчет статьи — автор показал что есть такая фича (ознакомил, и сделал это неплохо), хочешь узкие места — гугли, хочешь подробности — ссылки даны. Только пока ты будешь искать дыры, корявости, я буду продавать проекты.

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

И вообще это такая национальная черта — обкакать то, что самим не дано? Я что-то не в одном из постов не заметил, что были предложены альтернативы. Может покажешь свой фреймворк?
Re[18]: jQuery – Javascript нового поколения
От: AKS.  
Дата: 11.08.07 00:39
Оценка:
Здравствуйте, Zeroglif, Вы писали:

Z>...отсюда и typeof /\d/ даёт function. И багом это особо не назовёшь, живёт до сих пор, подозреваю, что слишком много кода в сети завязано на таких проверках, как isFunction, и просто не стали трогать.


Ну да — и у самого Брендана в Narcissus'е полно типа такого:

(this.scanNewlines ? /^[ \t]+/ : /^\s+/)(input);


Трогать уж точно не будут — нравятся им сокращения такие, и вообще страсть у них к shorthand'ам — вот и Джон ненарадуется нововведениям 1.8, говорит, что элегантно:

document.addEventListener("click", function() false, true);

elems.some(function(elem) elem.type == "text");
Re[13]: jQuery – Javascript нового поколения
От: AKS.  
Дата: 11.08.07 00:47
Оценка:
Здравствуйте, vaad2, Вы писали:

V>Не надаело лажу писать?


V>И вообще это такая национальная черта — обкакать то, что самим не дано?


Да зачем-же Вы так? Ведь какие-то замечания могут оказаться полезными. Вроде автор статьи меня уже разочек поблагодарил на одну малюсенькую "наводочку" — значит хоть и маленькая, но в деле сгодится, значит не зря я писал. И вообще замечания ведь всегда можно "оформить" и отрапортовать автору библиотеки jQuery — разве же это плохо? Я бы, например, был благодарен за такой "разбор полетов"...
Re[13]: jQuery – Javascript нового поколения
От: Zeroglif  
Дата: 11.08.07 04:13
Оценка: -1
Здравствуйте, vaad2, Вы писали:

V>Не надаело лажу писать?


Злобный флейм. Говори по существу.

V>Самый основной вопрос при написании больших проектов — преемственность, кроссбраузерность. JQ с этим справляется. Помимо этого JQ — документирован, для него полно плагинов (которые тоже документированы), которые "джедай программизьма" наверное не смотрел. Анимация делается на ура. Вместо того чтобы обкакивать, сначало бы написал что нибудь кроме алерта, порылся в доках.


Анимация делается на ура? Ну, что тут скажешь. Урааа! Сложно обкакивать то, где анимация. На всякий случай сообщу, что javascript, как это не покажется смешным, тоже документирован, а подробно описанный код легко читать любому js-программисту, для этого ему не нужно специально изучать JQ. Конечно, если предположить, что весь мир разом заболел jQuery, то твоя позиция про преемственность очевидна, с этим трудно не согласиться. Что касается кроссбраузерности, то это несомненный козырь любой либы, я с этим даже не спорю.

p.s. А кто это, "джедай программизьма"?

V>Я спокойно могу посадить новичка за уже написанную документацию, разжеванную на примерах, вместо того, чтобы самому его обучать. Опять же если руки не кривые — убери лишнее из библиотеки, благо это не прототайп, по размеру вполне компактная и читаемая.


Вместо того, чтобы обучать новичков на тех самых примитивных примерах, набери на работу спецов.

V>А твой мегаджаваскрипт кроме тебя самого никто не поймет. Клепать в одиночку электронные магазины — этого, конечно, достаточно. Из-за таких перцев (которые пишут "круто") приходиться ковыряться в настоящем гуано.


Злобный флейм 2.

V>Насчет миллисекунд — это глум чтоли? Люди вы на javascript ядерные реакции рассчитываете?


Javascript пока ещё был, есть и некоторое время будет языком, где миллисекунды играют роль, это связано с особенностью языка, как такового и особенностями отдельных интерпретаторов, если тебе это неизвестно, то для начала сходи на тот же слик и посмотри, как твои любимые библиотеки акцентируют своё внимание на скоростях. Потом просто почитай что-нибудь про оптимизацию и т.п. То же самое делает любой нормальный javascript-программист, бережёт чужие секунды. Но так как ты этого до сих пор не знаешь, то остаётся только надеяться на jQuery, это тебе строго показано к применению.

V>Насчет статьи — автор показал что есть такая фича (ознакомил, и сделал это неплохо), хочешь узкие места — гугли, хочешь подробности — ссылки даны. Только пока ты будешь искать дыры, корявости, я буду продавать проекты.


Статья как статья. Я вообще с удовольствием наблюдаю в этой ветке ваш позитивный настрой на бизнес. Могу только пожелать вам побольше проектов. Расстраивает только то, как вы безосновательно подозреваете всех, кто не с либами (не с вами) в... дырах, корявостях, портянках кода, тоннах кода и т.п. Господа продавцы, не судите по себе.

V>Моя цель работы — прибыль, а в чем твоя цель, потащиться от красивости кода? Могу поспорить что через пару лет код написанный тобой не будет считаться крутым.


"Протащиться от красивости кода"??? Ну, как с вами разговаривать... Да, моя цель — протащиться, успокойся только. Где-то близко к "Злобному флейму 3".

V>И вообще это такая национальная черта — обкакать то, что самим не дано? Я что-то не в одном из постов не заметил, что были предложены альтернативы. Может покажешь свой фреймворк?


А если не покажу, то ты меня, в натуре, не зауважаешь? LOL Лучше я останусь для тебя таким же пустым местом, как и ты для меня.
Re[17]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 12.08.07 07:46
Оценка:
AKS>Причем в случае с регвыром спецификация здесь ни при чем! Уберите символ f из рега и результат выполнения isFunction(a) будет false...

Спасибо. Отправлю багрепорт.

Какие еще замечания будут по другим функциям?


dmitriid.comGitHubLinkedIn
Re[17]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 12.08.07 08:02
Оценка:
AKS>

AKS>a — функция
AKS>b — не функция
AKS>c — не функция

AKS>Что и следовало ожидать. Почему a — функция? Читаем ECMA-262...


AKS>Почему не протестирован этот ма-а-алюсенький кусочек кода? Нет времени и денег на тесты с одним alert'ом?


Протестировал в Firefox 2.0 под линуксом. Получил описанные мною результаты. В Опере и ИЕ тестировать было лень Под виндой получил описанные ниже результаты.


AKS>
AKS>alert([isFunction(a), isFunction(b), isFunction(c)]); // -> true, true, true!!!
AKS>


AKS>Причем в случае с регвыром спецификация здесь ни при чем! Уберите символ f из рега и результат выполнения isFunction(a) будет false...


Вывод? Ничего не стоит написать багрепорт http://dev.jquery.com/ticket/1480

Какие еще есть предложения по другим функциям?


dmitriid.comGitHubLinkedIn
Re[10]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 12.08.07 09:10
Оценка:
AKS>Что-то как-то не получается побеседовать. Вы, чуть что, сразу оправдываться: "Мне с jQuery хорошо, никогда раньше так не жил". Может хватит — ведь никто не собирается отнимать у Вас эту "игрушку". Более того, прочитав о ваших программерах, работающих с "черепашьей" скоростью (по две недели, да еще и оставляют Вас потом один-на-один с JavaScript, когда Вы их увольняете), я даже пустил скупую мужскую слезу из сочувствия, и решил — Вам jQuery сам бог послал!


Предположим, у меня есть программист Вася со своим "типа-фреймворком" (терминология не моя)
Еще у меня есть программист Петя со своим "типа-фреймворком"
И еще у меня есть программист Сережа тоже со своим "типа-фреймворком"

Эти фреймворки повторяют функциональность друг друга на 80-90-100%, но различаются в ключевых моментах.

У Васи методы, работающие с Ajax'ом, позволяют передавать callback-функции, но не генерируют никакх событий типа onAjaxStart, onAjaxEnd
У Пети такие события генерируются, но методы не принимают callback-функции.
А у Сережи есть и то и другое, но в порядке и количестве параметров, передаваемых в эти методы, не разобрался до конца сам Сережа.

А потом мы на работу берем программиста Женю, у которого тоже есть свой "типа-фреймворк", который повторяет функциональность других на 80-100%, но отличается от них в ключевых моментах.

Что будем использовать? Кто весь этот зоопарк будет стандартизировать и документировать?

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

В баг трекере вовсю используется яваскрипт — аякс, раскрывающиеся формочки и т.п. Пользоваться очень удобно. За одним но. Формы добавления тикетов/багов иногда подглюкивают в Опере. Иногда работает все нормально, а иногда — бац! и перестает форма открываться. Или отправляться.

Этот баг не закрывали полтора года по одной простой причине. Времени на поиск этого бага нет и не предвидится. Клиенты Оперой не пользуются, а в офисе можно привыкнуть ради багтрекера держать открытым, скажем, ФФ.

Недавно было специально выделено время на очистку кода этого самого багтрекера. Не мудрствуя лукаво весь яваскрипт перевели на jQuery. Тот же код (по логике) неожиданно стал работаь во всех браузерах, заявленных на сайте jQuery Фирма сэкономила время на тестах, программисты сэкономили нервы. Все довольны

AKS>Zeroglif предложил целую кучу различных вариантов развития этой темы в конструктивном ключе — выбирайте на свой вкус!


Не вижу. Последний конструктив бы в http://rsdn.ru/forum/message/2616848.1.aspx
Автор: Zeroglif
Дата: 10.08.07
и в http://rsdn.ru/forum/message/2617158.1.aspx
Автор: AKS.
Дата: 10.08.07
. Все остальное сводилось к "а ведь ручками в 10-30 строчек кода легче было" без единого аргумента

AKS>Кстати, насчет тултипа — чем плоха, к примеру Соуденовско-Шуркаевская классика? Почему люди изобретают "тяжеленный велосипед с рамой от jQuery"?


Глядя наискосок вижу в этом тултипе сразу минимум одну проблему:
Array.prototype.in_array = ...


Встроенные объекты не рекомендуется расширять, потому что нарушается работа с этими элементами (например, JavaScript “Associative Arrays” Considered Harmful)

Вторая проблема. Обожаю, когда экономят два-три байта и называют это оптимизацией. Названия функций t, c, g, m просто таки говорят сами за себя.

Работа с document.all, причем весьма неэффективная. Тупо пробегается по всем DOM-элементам

В общем, неважно. На простеньком документе:
<div title="test tooltip">test tooltip</div>
<!--и еще 34 таких же дива, всего 35 штук-->

этот скрипт выдал мне 31.25 миллисекунд, 287 вызовов

То же самое с jQuery дало мне 62.5 миллисекунд, 1064 вызовов.

Если мне надо будет использовать _только_ тултип на странице, я, быть может, возьму предложенный скрипт. Если мне понадобится хоть какая-то еще дополнительная функциональность, я возьму jQuery


dmitriid.comGitHubLinkedIn
Re[11]: jQuery – Javascript нового поколения
От: Zeroglif  
Дата: 12.08.07 11:37
Оценка:
M>Недавно было специально выделено время на очистку кода этого самого багтрекера. Не мудрствуя лукаво весь яваскрипт перевели на jQuery. Тот же код (по логике) неожиданно стал работаь во всех браузерах, заявленных на сайте jQuery Фирма сэкономила время на тестах, программисты сэкономили нервы. Все довольны

A если бы "неожиданно" не стал работать? Сколько лет вы бы ещё дожидались чужого дядю, который вам скрипт к опере привяжет? Я на самом деле рад, что jQuery вам там помог, раздражает то, что это объясняется невероятными способностями jQuery чудесного свойства, пусть бы они там и были. Я это вижу по-другому. Сначала вы набираете себе проектов по горло, затем разводите там свои зоопарки, с которыми не можете совладать, потом единый подход вырабатывать не хотите, к тому же ещё ошибки долго-долго поймать не получается... и в таком вот загнанном вспененном состоянии как-то само собой сразу тянет поэкономить время/деньги/нервы и тому подобное. В этом нет ничего плохого, вам было худо, вам дали таблетку, и вас отпустило. Только не надо всех поголовно считать больными и совать им в рот лекарство. Если кому-то вообще не нужна таблетка jQuery или она им нужна исключительно в наиболее тяжёлых случаях, то это и есть адекватный/оптимальный/точечный подход за который я и выступаю, в этом стиле и сам язык спроектирован. Если можешь, то сделай сам. А не можешь, то остаётся только верить в: "бросайте писать свой уродский "чистый javascript", идите в нашу церковь "другого чистого javascript-a", тут тепло и сухо" (цитата вымышлена).

AKS>>Zeroglif предложил целую кучу различных вариантов развития этой темы в конструктивном ключе — выбирайте на свой вкус!


M>Не вижу. Последний конструктив бы в http://rsdn.ru/forum/message/2616848.1.aspx
Автор: Zeroglif
Дата: 10.08.07
и в http://rsdn.ru/forum/message/2617158.1.aspx
Автор: AKS.
Дата: 10.08.07
. Все остальное сводилось к "а ведь ручками в 10-30 строчек кода легче было" без единого аргумента


Если под конструктивом подразумевается то, что я буду тешить тебя кодом на каждый чих, то во-первых строках моего письма в этом было отказано. Да и потом смотри, я говорил о том, что не javascript плох и сложен, а где-то на уровне программистов проблема, в которой не каждый и признается. И опа, мои слова подтвердил один из собеседников (мало времени, много проектов и т.п.), спасибо ему за это. Я говорил, что чужую библиотеку нужно знать очень хорошо, иначе можно напороться, потому что это javascript, и опа, ты же сам это и подтвердил, показав своё незнание всего одной простейшей функции из либы, и объясняя мой пример цитатами из ECMAScript, да ещё и не к месту. Какие аргументы. Они сами собой рисуются, я не виноват.

AKS>>Кстати, насчет тултипа — чем плоха, к примеру Соуденовско-Шуркаевская классика? Почему люди изобретают "тяжеленный велосипед с рамой от jQuery"?


M>Глядя наискосок вижу в этом тултипе сразу минимум одну проблему:

M>
M>Array.prototype.in_array = ...
M>


M>Встроенные объекты не рекомендуется расширять, потому что нарушается работа с этими элементами (например, JavaScript “Associative Arrays” Considered Harmful)


Полностью с тобой согласен. Не с тем, что прототип нельзя расширять, наоборот, можно, для этого делегирование и вшито в javascript, чтоб нам было удобно, а согласен с тем, что даже "наискосок" сразу находятся проблемки. Где угодно. И в тултипе этом, и в jQuery, и тем более в плагинах к ней и т.д. и т.п. Любая либа, как и любой код на javascript местами "fragile", ты же сам это подтверждаешь.

M>Вторая проблема. Обожаю, когда экономят два-три байта и называют это оптимизацией. Названия функций t, c, g, m просто таки говорят сами за себя.


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

M>Работа с document.all, причем весьма неэффективная. Тупо пробегается по всем DOM-элементам


Вне всякого сомнения.

M>В общем, неважно. На простеньком документе:

M>
M><div title="test tooltip">test tooltip</div>
M><!--и еще 34 таких же дива, всего 35 штук-->
M>

M>этот скрипт выдал мне 31.25 миллисекунд, 287 вызовов

M>То же самое с jQuery дало мне 62.5 миллисекунд, 1064 вызовов.

M>Если мне надо будет использовать _только_ тултип на странице, я, быть может, возьму предложенный скрипт. Если мне понадобится хоть какая-то еще дополнительная функциональность, я возьму jQuery

Согласен, но я бы сказал так:

если я могу написать такого рода модуль — напишу сам, если не умею писать — выберу себе чужой модуль, если мне нужно много-много функциональности — напишу сам, если не умею или меня загрузили по уши — возьму чужую либу. А если бы меня после этого попросили написать что-нибудь хорошее о jQuery, то, если я её взял от неумения — ничего бы не писал, стыдно, если я её взял, потому что меня загрузили по уши — тоже ничего бы не писал, нет времени на это , но если бы ход времени замедлился, то я бы написал о jQuery много хорошего, но точно не стал бы её противопоставлять javascript, как таковому, стыдно, а просто рекомендовал бы её по причине удобства тем, кому как и мне не дали времени, чтобы сделать нужную работу самому...

p.s. И кстати, вся эта ветка (за исключением моих тупейших постов, конечно) лично для меня необычайно конструктивна, я в некоторой степени скорректировал свою позицию в отношении javascript вообще и либ, в частности, это интересно.
Re[18]: jQuery – Javascript нового поколения
От: Zeroglif  
Дата: 12.08.07 11:59
Оценка:
Здравствуйте, Mamut, Вы писали:

AKS>>

AKS>>a — функция
AKS>>b — не функция
AKS>>c — не функция

AKS>>Что и следовало ожидать. Почему a — функция? Читаем ECMA-262...


AKS>>Почему не протестирован этот ма-а-алюсенький кусочек кода? Нет времени и денег на тесты с одним alert'ом?


M>Протестировал в Firefox 2.0 под линуксом. Получил описанные мною результаты.


И там же в линухе нашёл этому точное объяснение в линуховском ECMASript. Ладно, проехали, не протестировал и бог с ним.

AKS>>
AKS>>alert([isFunction(a), isFunction(b), isFunction(c)]); // -> true, true, true!!!
AKS>>


AKS>>Причем в случае с регвыром спецификация здесь ни при чем! Уберите символ f из рега и результат выполнения isFunction(a) будет false...


M>Вывод? Ничего не стоит написать багрепорт http://dev.jquery.com/ticket/1480


Это не баг, это алгоритм такой, не сможет там Джон объять необъятное, как бы он не хотел, поэтому безоглядное использование функций не в русле общей работы в jQuery, а для себя отдельно требует их (функций) изучения, чтобы не напороться. Что и требовалось доказать. Если уж и отправлять туда что-то, то вопрос, почему изначально в этой функции не стоит проверка typeof, это весомая проверка для начала, а дальше уже по обстоятельствам...

M>Какие еще есть предложения по другим функциям?


У меня нет, jQuery закрыл, а вот AKS исследовать любит (подначиваю), делает это здорово, может чего и найдёт.

И у тебя ещё был вопрос про работу с классами, почему это кажется мне не оптимальным, достаточно представить себе частую ситуацию, где класс добавляется туда, где его раньше не было, просто посмотри, как несуществующий класс (значение), из типа в тип перелетая, шастает по разным функциям. Дело не во времени, а в алгоритме.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.