Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> $script, в полку фреймворков прибыло. 
:(
    Опции темы
Zeroglif
Дата 8.10.2007, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 644
Регистрация: 22.9.2005

Репутация: 1
Всего: 66



Цитата(cruelangel @  8.10.2007,  15:20 Найти цитируемый пост)
опыт проторайпажс ико показывает, что это не вызывает проблем

Не эталон. Скорее, наоборот. А приноровившись, можно и лампочку научиться вворачивать всем телом.

Цитата(cruelangel @  8.10.2007,  15:20 Найти цитируемый пост)
что-то типа if( [1,2,3] == '1,2,3' ) ? 

И это тоже...

Цитата(cruelangel @  8.10.2007,  15:20 Найти цитируемый пост)
а из кода не очевидно что они делают

Очевидно, что делают, местами не очевидно зачем они это делают.

Цитата(cruelangel @  8.10.2007,  15:20 Найти цитируемый пост)
почисти кэш

Мне не надо чистить кэш, я скачиваю скрипты и их тестирую/смотрю в редакторе, предпоследний был скачан после твоего первого и последнего уведомления об обновлении, дальше ты молчал, а перекачивать и diff-ить сорцы после каждого твоего поста - уволь. Захочешь - скажешь, что поменял.

Цитата(cruelangel @  8.10.2007,  15:20 Найти цитируемый пост)
null - это именно отсутствие данных. также как и undefined. просто в первом случае "данные были стёрты", а во втором "данные небыли внесены"

Да, на здоровье, просто выполняя одну задачу - клонирование, ты заодно выполняешь и другую задачу, не имеющую прямого отношения к клонированию - игнор свойств, которые ты считаешь, не содержащими данных, в процессе перечисления. В javascript-е и так практически невозможно клонировать объект, а если во время этой задачи ещё и как-то модифицировать результат, то на выходе будет что угодно, но только не клон. Дальний родственник из Семипалатинска. Метод стоит переназвать $cloneAndSomethingElse...

Цитата(cruelangel @  8.10.2007,  15:20 Найти цитируемый пост)
и этот смысл - стирание данных. нет смысла "отсутствию данных" учавствовать в итерировании

Итерируют не данные, а существующие свойства (которые не закрыты от этого процесса соответствующим атрибутом), какие там у свойств значения - не имеет значения. Кроме этого, роль собственных свойств (безотносительно значений) ещё и в том, что они перекрывают/затеняют одноимённые свойства прототипа:

Код

Array.prototype[3] = '666';
var a = [0,1,2];
a[3] = null;

var b = [];
for (var i = 0, l = a.length; i < l; i++) {
    if (a[i]!= null) {
        b[b.length] = a[i];
    }
}
alert(b[3]); //-> 666
alert(a[3]); //-> null


Цитата(cruelangel @  8.10.2007,  15:20 Найти цитируемый пост)
этот код выдаёт ошибку, потому, что для правильного итерирования разреженного массива нужно делать дополнительные проверки на отсутствие значения

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

Цитата(cruelangel @  8.10.2007,  15:20 Найти цитируемый пост)
эт ты о чём

О чём угодно. Ну, представь, некую процедуру, где по определённым правилам обрабатывается массив, где важно свойство length, где важен порядок элементов. А ты туда суёшь "как-бы-клон", у которого и порядок другой (нет "пустых-на-твой-взгляд" значений), и длина другая...

PM MAIL WWW   Вверх
cruelangel
Дата 8.10.2007, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 319
Регистрация: 12.9.2007

Репутация: 1
Всего: 8



> предпоследний был скачан после твоего первого и последнего уведомления об обновлении

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


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

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


> они перекрывают/затеняют одноимённые свойства прототипа

ок, убедил. null включаем в итерирование.


> Во-первых, toString там не нужен

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


> Ну, представь, некую процедуру, где по определённым правилам обрабатывается массив, где важно свойство length

не могу себе такую представить. разве length используется ещё для чего-то кроме итерирования?


PM MAIL   Вверх
Zeroglif
Дата 8.10.2007, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 644
Регистрация: 22.9.2005

Репутация: 1
Всего: 66



Цитата(cruelangel @  8.10.2007,  16:43 Найти цитируемый пост)
твой ответ последовал через сутки

Ну, извини, не смог ежечасно сравнивать варианты скриптов (у меня уже 3 разных), в любом случае они все твои, обсуждение идёт не с потолка.  smile

Цитата(cruelangel @  8.10.2007,  16:43 Найти цитируемый пост)
автоматически получается "сжатым". 

Почему бы просто не оторвать эту задачу от клонирования и от других задач, где ты так же "сжимаешь"?

Цитата(cruelangel @  8.10.2007,  16:43 Найти цитируемый пост)
не могу себе такую представить. разве length используется ещё для чего-то кроме итерирования

Даже выше постом в моём примере length используется для создания свойств массива b, к тому же length может удалять свойства ("...the length property is changed, every property whose name is an array index whose value is not smaller than the new length is automatically deleted"), это свойство важно, на нём играют.



PM MAIL WWW   Вверх
cruelangel
Дата 8.10.2007, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 319
Регистрация: 12.9.2007

Репутация: 1
Всего: 8



> в моём примере length используется для создания свойств массива b

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


> length может удалять свойства

практика ничего подобного не подтверждает.

Это сообщение отредактировал(а) cruelangel - 8.10.2007, 19:59
PM MAIL   Вверх
cruelangel
Дата 10.10.2007, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 319
Регистрация: 12.9.2007

Репутация: 1
Всего: 8



в общем сделал клонирование массивов с сохранением ключей smile
это понадобилось для функции $combine (точнее не понадобилось, а могут возникнуть проблемы, если ей передать сжатый клон ) - что-то типа $map, но пробегает рекурсивно по всем объектам и все примитивные значения прогоняет через колбэк.
с помощью $combine, например, можно реализовать векторную арифметику:

Код
$alert( [ 1, '2', [ 3, 4, true, false, '5a' ] ].$combine( $number.$summ, [ 1, 2, 3 ] ) );


выведет:
Код
[ 2, 4, [ 6, 7, 4, 3, NaN ] ]


то есть:
Код
[ 1+1, 2+2, [ 3+3, 4+3, 1+3, 0+3, '5a'+3 ] ]


работает как с объектами, так и с массивами ( во втором параметре просто ищется поле с соответствующим ключом). вложенность не ограничена. примитивные объекты ( Number, String, Boolean ) ведут себя аналогично примитивным типам.

также появился новый модуль - $date с функцией форматирования даты/времени. пока без "человекопонятного текста" smile

Это сообщение отредактировал(а) cruelangel - 10.10.2007, 15:27
PM MAIL   Вверх
Alx
Дата 12.10.2007, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: нет
Всего: 78



вашу бы энергию, да в мирных целях..

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

не всё ли равно как там и что написано? я вот написал за посл время 2 довольно крупных проекта - smartselect и mashchat. оба они написаны совершенно по разному. один основан на Object.prototype, другой на Class.create() и Object.extend() из всем известной библиотеки. может кто-то скажет что одно правильно, может кто-то скажет, что другое. какая разница? и то и то прекрасно работает и имеет все необходимые пути для действий, возможно потребующихся в дальнейшем.

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

в итоге в голову приходит только одна пословица.. про танцора с ногами..

извиняюсь за оффтопик.


--------------------
PM MAIL WWW ICQ   Вверх
cruelangel
Дата 12.10.2007, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 319
Регистрация: 12.9.2007

Репутация: 1
Всего: 8



есть два типа людей: создатели и потребители. и они никогда друг друга не поймут smile
всё началось с того, что я задумал написать "правильный" визивиг. в то время я программировал на практически голом яваскрипте. кода было много, отлаживать было сложно, работало так себе. потом я стал присматриваться к фреймворкам, но оказалось, что они для этих целей они совсем не предназначены. вообще, у меня сложилось такое впечатление, что единственной целью их создания является возможность создания домохозяйками "прикольных эффектов" и "очередных кривых виджетов".
PM MAIL   Вверх
Alx
Дата 12.10.2007, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: нет
Всего: 78



Цитата(cruelangel @  12.10.2007,  16:15 Найти цитируемый пост)
есть два типа людей: создатели и потребители. и они никогда друг друга не поймут smile

создатель? мм) вот это круто ! smile и что же ты уже создал? просто интересно, можно в личку.

Цитата(cruelangel @  12.10.2007,  16:15 Найти цитируемый пост)
всё началось с того, что я задумал написать "правильный" визивиг. в то время я программировал на практически голом яваскрипте. кода было много, отлаживать было сложно, работало так себе. потом я стал присматриваться к фреймворкам, но оказалось, что они для этих целей они совсем не предназначены. вообще, у меня сложилось такое впечатление, что единственной целью их создания является возможность создания домохозяйками "прикольных эффектов" и "очередных кривых виджетов". 

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


--------------------
PM MAIL WWW ICQ   Вверх
cruelangel
Дата 12.10.2007, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 319
Регистрация: 12.9.2007

Репутация: 1
Всего: 8



> назови, хотя бы несколько функций, которых не хватало тебе для этого проекта..

кроссбраузерная работа с выделениями, работа с dom-узлами без скатывания к многословному native-javascript и изобретения велосипеда ( например - treewalker )
PM MAIL   Вверх
Alx
Дата 12.10.2007, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: нет
Всего: 78



cruelangel, мм, и что - есть успехи с реализацией 
Цитата(cruelangel @  12.10.2007,  16:38 Найти цитируемый пост)
кроссбраузерная работа с выделениями
 ?
чем не устраивает реализция работы с dom-узлами того же jquery, я не понимаю? возможностей куча. и летает так шопипец...

Добавлено через 5 минут и 4 секунды
просто пока в твоей либе я вижу только либо "по-другому прикрученные педали", либо какие-то совсем дикие 3 колеса..
функция date была бы полезна, если реализовать её как в PHP и в форме addon`а к jquery, а лучше - к prototype.


--------------------
PM MAIL WWW ICQ   Вверх
cruelangel
Дата 12.10.2007, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 319
Регистрация: 12.9.2007

Репутация: 1
Всего: 8



> мм, и что - есть успехи с реализацией кроссбраузерная работа с выделениями?

есть небольшие. всё же лучше, чем ничего...


> чем не устраивает реализция работы с dom-узлами того же jquery, я не понимаю?

наверное тем, что там её нет. smile jquery умеет работать только с dom-элементами. для примера, скорми ей такой xpath путь //text() и посмотри, что она вернёт.


> функция date была бы полезна, если реализовать её как в PHP

это ужасная реализация. хотя, конечно, локали - вещь архинужная.
PM MAIL   Вверх
AKS
Дата 12.10.2007, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 20.9.2006

Репутация: 2
Всего: 52



Цитата(Alx @  12.10.2007,  15:48 Найти цитируемый пост)
наблюдая за тем, сколько вы обсуждаете и перемалываете теорию, мне даже становится немного жаль вас

Напрасны ваши сантименты. ;)

Цитата(Alx @  12.10.2007,  15:48 Найти цитируемый пост)
потому что я не понимаю, как возможно ... успевать принимать участие... реальных проектах и получать удовольствие... от написания востребованных продуктов..

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

Цитата(Alx @  12.10.2007,  15:48 Найти цитируемый пост)
я вот написал за посл время 2 довольно крупных проекта - smartselect и mashchat. 

Поздравляю!

Цитата(Alx @  12.10.2007,  15:48 Найти цитируемый пост)
так зачем изобретать в миллионный раз очередной велосипед

Стандартный вопрос тех, кто использует сторонние разработки. Однако порой звучит довольно нелепо. Вот Вы, например, в самом деле считаете свои вышеупомянутые произведения уникальными?

Цитата(Alx @  12.10.2007,  15:48 Найти цитируемый пост)
тратя на изучение предыдущих (велосипедов) тонну времени

???

PM MAIL   Вверх
Alx
Дата 12.10.2007, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: нет
Всего: 78



AKS, я уверен, что вы прекрасно понимаете, что приводя в пример 2 этих проекта я не ставил целью похвалиться или ещё что-то. мне это совершенно ни к чему. я просто хотел наглядно показать, как оба способа работы с объектами совершенно спокойно имеют место быть и работают, выполняя свое самое главное предназначение.
просто я как не зайду на форум - всё время все с умным видом рассуждают о том, что хорошо, а что плохо. однако ни к какому материальному применению все эти рассуждения, похоже, не приводят..
я в общем-то ничего не имею против этого, и совершенно не предполагал никакой конфликт, но мне иногда правда непонятно, зачем же столько времени уделять теории, когда на практику совсем не остается времени..
об изобретении велосипедов.. во-первых, одно дело - программный продукт. то о чем я говорил. программные продукты разрабатываются для кого-то конкретно, обычно заточены под требования конечного пользователя. совсем другое дело - такие вещи, как фреймворки  и т.п.
когда фреймворк уже разработан, и им пользуются миллионы людей по всей планете, лично мне кажется, не совсем рационально говорить о том, что он - отстой и разрабатывать свой, позиционируя его как аналог и замену существующему..
в обеих библиотеках есть возможности для их расширения и вообще участия в процессе разработки и отладки..
кстати, что касается тулкита smartselect - да, он уникален. откушу себе голову, если найдете достойного конкурента. чат - просто один из последних заказов. обыкновенный в общем-то чат. в данном случае дело совсем не в них. повторюсь, это был просто пример равносильности двух подходов.

cruelangel, вот это совсем другое дело. с удовольствием поддерживаю реализацию полной кроссбраузерной поддержки xpath!

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


--------------------
PM MAIL WWW ICQ   Вверх
cruelangel
Дата 14.10.2007, 01:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 319
Регистрация: 12.9.2007

Репутация: 1
Всего: 8



добавил работу с текстовыми диапазонами и выделением

Код
document.$observe( 'mouseup', function( ){ // on every mouseup
        var r1= $( 'foo' ).$range(); // create range for element
        var r2= $selection().$range(); // create range for selection
        $alert( r2.$contains( r1 ) ); // true if element completely selected
        $alert( r2.$concerns( r1 ) ); // true if element partial selected
        $alert( r2 ); // output selected html-fragment source
})


если $concerns и $contains окажется мало - всегда можно воспользоваться методом $compare. примеры его использования можно найти в коде.
новые диапазоны создаются с помощью функции $range().
выделение также поддерживает сохранение себя в ДОМ и восстановление по меткам. правда я эти функции ещё не тестировал на этом фреймворке...

ха-ха, общий непакованный объём уже под 25 кило и содержит 1200 строчек кода smile конец близок...

Это сообщение отредактировал(а) cruelangel - 14.10.2007, 01:25
PM MAIL   Вверх
02077461
Дата 3.1.2008, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 13.7.2005

Репутация: нет
Всего: 0



Цитата(cruelangel @  8.10.2007,  12:32 Найти цитируемый пост)
> экстенсивно расширяешь нативные прототипы, что уже настораживает

что в этом плохого?

Вот тебе простейший пример, который начисто убил 40 минут моего времяни: 

Написал объект, который нес в себе массив, который в последствие посылался на сервер. Написан был год назад и работал как надо. Вот каково же было мое удивление, когда на сервер начала слаться в дополнение к нужной информации избыточная -- содержимое ф-ии. А дело было в следующем: нашел простой календарик (а-ля стаб) и использовал его. А в его коде через Array.prototype добавлялась ф-ия (имя не запомнил, т.к. потер сразу когда разобрался). Массив я пробегал через for (p in this.params), потому как имена ключей были именами переменных. И вот мне выдавалась лишняя пара: имя функции -> ее содержимое. 

Конечно, коды разные нужны, коды разные важны. Но у себя мы пришли к выводу, что использование внешних либ хорошо если речь идет только о визуализации (а-ля мутул и пр.). В остальном легче потратить время на написание НЕУНИВЕРСАЛЬНОГО, но заточенного под нашу задачу подхода. 

Это сообщение отредактировал(а) 02077461 - 3.1.2008, 19:48
PM   Вверх
Страницы: (4) Все 1 2 [3] 4 
Ответ в темуСоздание новой темы Создание опроса
Здесь публикуют скрипты, которые уже проверены в обсуждениях других тем (при этом полезно поставить ссылки на все смежные обсуждения) или переносятся кем-либо из модераторов по просьбе участников, если видно, что в результате обсуждения темы был написан полезный или интересный скрипт. Третий возможный вариант - участник форума публикует скрипт, заведомо известный как полезный и эффективный, для, возможно, небольшой доработки и обсуждения.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Наши скрипты | Следующая тема »


 




[ Время генерации скрипта: 0.0695 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.