|
|
|
Замыкания, добро или зло?
|
|||
|---|---|---|---|
|
#18+
Привет всем. Написал небольшой js-фреймворк для себя. Все хорошо, только есть одна беда - где-то что-то плодится. И если на объем приросшей за 1 час памяти (~20МБ) можно как-бы не обращать внимания, то на отклик браузера невозможно. Тормоза по реакции, например, на клик достигает 1-2х секунд! FireBug ничего криминального не показывает - новых объектов не вижу (или не знаю как смотреть?). Поставил (теперь уже снес) примочку к ФФ по утечке памяти - ни гу-гу. Вопрос: кто подскажет методику отлова данной бяки? Перевернув мир - оглянись, может перевернулся ты сам?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2009, 13:56 |
|
||
|
Замыкания, добро или зло?
|
|||
|---|---|---|---|
|
#18+
Да не собираюсь я это продавать. Сказано - для себя. Не будешь ведь возражать против такого стиля: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. Все ясно и прозрачно. Нет хардкода и когда туча рутинных объектов с операциями событие-> запрос->получение данных->отображение, такая схема экономит массу всемени и легко искать и модифицировать: написал новый view и просто переподписал. Или контроллер со сложной обработкой - меняй сколько хочешь, можно даже динамически. Так вот tick, refresh и ряд других "встроенных" функций/методов и составляют фреймворк. Главное, что они связаны механизмом publish/subscribe. А подвигла на это жизнь - приложение пишу для внутренней сети и заранее ниезвестно сто потребуется. Потому нужно заложить мксимальную "модифицируемость". Впрочем, я изобретал лишь гибридный велоспед - нечто среднее между MVP и Observer. Перевернув мир - оглянись, может перевернулся ты сам?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2009, 18:21 |
|
||
|
Замыкания, добро или зло?
|
|||
|---|---|---|---|
|
#18+
Очередное MVC? Нет, я просто о том зачем? Особенно, если "длясебя"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2009, 18:36 |
|
||
|
Замыкания, добро или зло?
|
|||
|---|---|---|---|
|
#18+
А то я не прошерстил инет на предмет MVC! Но все что я смотрел, было либо прямым переносом классических схем, применимых к десктоп приложениям (а веб - он мало-мало отличается :) ), либо наглухо завязанными на к-либо среду разработки или язык (asp/jsp/php/etc...). Либо было сделано так, что мне было неудобно (логически) работать. Говорю же - не от хорошей жизни. Хотел было на MS AJAX в чистом виде (просто выдрать .js файлы) без MVC проекта, так к тому времени поддержка шаблонов была еще не на высоте, да и подгружать их из отдельного файла, по-моему, до сих пор невозможно. jQuery так же по каким-то причинам не подошел. Может не догнал чего: класс Event в документации как-то через ж. описан. Не знаю - может если кого заинтересует это, так общими усилиями довести до некоей кондиции. Я подозреваю, что в ядре закралась ошибка, и там плодятся замыкания. Уже не первый день просматриваю код, но логически не вижу где бы это могло быть. Проверил пару мест - не оно. Вот и спрашиваю, кто плотно с js работал, может методики какие есть? Перевернув мир - оглянись, может перевернулся ты сам?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2009, 19:02 |
|
||
|
Замыкания, добро или зло?
|
|||
|---|---|---|---|
|
#18+
Насчет замыканий известно, что они могут создавать круговые ссылки Код: plaintext 1. 2. 3. 4. 5. 6. здесь, с одной стороны, локальный объект p ссылается на функцию-замыкание, с другой - замыкание ссылается на p (ссылается самым настоящим образом). Если сборщик мусора не умеет четко и стабильно разруливать такие ссылки (увы, такое бывает) - объект не будет уничтожен. Потому есть необходимость такие ссылки разрывать, на всякий случай. В ExtJS вроде даже есть у объектов функция destroy, там ссылки обнуляются, и ее надо вызывать вручную. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2009, 20:03 |
|
||
|
Замыкания, добро или зло?
|
|||
|---|---|---|---|
|
#18+
Такое може быть - у меня при подписке дается обратная ссылка на event. Буду дальше разбираться. Спасибо всем. Перевернув мир - оглянись, может перевернулся ты сам?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2009, 10:37 |
|
||
|
Замыкания, добро или зло?
|
|||
|---|---|---|---|
|
#18+
Замыкания - добро, т.к. они являются одной из самых важных основ языка. Ессесно нужно уметь ими пользоваться. Те, кто не знают, что такое замыкание, собеседование у меня не проходят сразу, а этот вопрос я задаю в первую минуту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2009, 13:28 |
|
||
|
Замыкания, добро или зло?
|
|||
|---|---|---|---|
|
#18+
зыЗамыкания - добро, т.к. они являются одной из самых важных основ языка. Ессесно нужно уметь ими пользоваться. Те, кто не знают, что такое замыкание, собеседование у меня не проходят сразу, а этот вопрос я задаю в первую минуту. Вы крайне категоричный! Вопрос стоит в другой плоскости - при наличии в браузерах проблем с garbage и отсутствием сколь-либо юзабельного ПО для тестирования и отлова утечек - пока-что зло. Замыкания могут появиться "случайно". Поскольку JS является в полной мере ООЯП, то к нему предъявляются требовния по реализании ООП. Отсюда и появляются "нахлесты". Тот же jQuery достаточно долго имел проблемы (может и сейчас?) с мемори лик. А насчет того, знает сотрудник или не знает что такое замыкания - вопрос контекстный. Видел многих ребят, которые в одних вопросах обладали поверхностными зананиями, но в других были докой. Если зарывался по-уши в проблему, так, значит, профи :) Как-то был выбор между махровым и опытным программером и "желторотиком", и я выбрал последнего, потому что увидел - человек хочет изучать и "расти". Через год он догнал опытных, но уже усталых "мэтров", к тому же с "замыканиями", от сознания собственной крутизны. :). Так что я ничего не потерял, и фонд з/п немного с'экономил :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2009, 18:41 |
|
||
|
Замыкания, добро или зло?
|
|||
|---|---|---|---|
|
#18+
а сколько потерял за год, не считал? а ещё через год этот твой желторотик подумает, что он совсем крутой и уйдет в другое место. У меня сейчас нет времени учить, мне нужно чтобы знали. Замыкания это не единственный аргумент конечно, меня интересуют все важные основы. Если человек работал только с jQuery, то он мне не подходит, такие люди как правило не представляют что такое JS вообще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2009, 19:43 |
|
||
|
Замыкания, добро или зло?
|
|||
|---|---|---|---|
|
#18+
кстати насчет выбора - я бы подождал третьего :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2009, 19:44 |
|
||
|
Замыкания, добро или зло?
|
|||
|---|---|---|---|
|
#18+
зы...а ещё через год этот твой желторотик подумает, что он совсем крутой и уйдет в другое место... +1 Пять баллов! За фразу. Замыкание - совершенно необходимо в некоторых случаях, например компоненты для аспнет писать, чтобы не мешали друг другу на странице, или библиотеки. В случае, когда надо подхачить страничку - нет, не надо (как раз такое чаще всего встречается). Меня другое смущает - mvc на клиенте (на яваскрипте) - бред. Впрочем, на чём угодно - тоже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2009, 21:35 |
|
||
|
Замыкания, добро или зло?
|
|||
|---|---|---|---|
|
#18+
зы, Рано или поздно все уходят. Ваши категоричные высказывания, "тыканье" и стиль ответов выдают в Вас человека раздражительного либо хамоватого. Часто и то и другое. Увы, плохие качества для руководителя любого ранга. Я бы мог продолжить вашу препарацию (увлекаюсь психологией) и чувствую широкое поле для исследования, но это уже совсем не по теме, да и ни к чему. А человека можно удержать разными способами. И тот кто думает, что только "бабло рулит" - тот глубоко заблуждается. Если Вы занимаете должность связанную с работой с кадрами, то должны знать, что набрав в команду первоклассных игроков, Вы не добьетесь хорошего результата - должны быть лидеры и "рабочие лошадки". Т.е. сбалансированный коллектив. А так будет "борьба за власть" и сплошное подсиживание. Это Ваш идеал? 2 ShSerge: "+1 Пять баллов! За фразу." 1) Как понимать эту арифметику? :) 2) +5 Вам - в самую точку. Только фраза. Ценность нулевая. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2009, 23:01 |
|
||
|
Замыкания, добро или зло?
|
|||
|---|---|---|---|
|
#18+
ShSergeМеня другое смущает - mvc на клиенте (на яваскрипте) - бред. Впрочем, на чём угодно - тоже. Ну отчего-же. Я сейчас стараюсь, по-возможности, проектировать кроссплатфрменные веб-приложения. И семейство паттернов MVC очень даже помогает: 1) Удобно работать командой: дизайнер/view-maker, программист на клиенте, программист на сервере (как правило - базы данных). Никто никому не мешает. 2) В крупных проектах параллельно несколько человек могут работать (при соблюдении дополнительных архитектурных моментов). 3) Можно даже настольные SPI-приложения писать - статичные html-файлы, которые вызывают сервисы из инета. 4) Кроссплатформенность. Мало? Противопоказания, доктор? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2009, 23:41 |
|
||
|
Замыкания, добро или зло?
|
|||
|---|---|---|---|
|
#18+
iConstМало? Противопоказания, док тор? Если добавили, а ещё лучше - убрали из таблички в БД одно единственное поле, сколько человек должно быть задействовано, чтобы подправить приложение, если учесть, что каждый занимается своим слоем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2009, 23:50 |
|
||
|
Замыкания, добро или зло?
|
|||
|---|---|---|---|
|
#18+
Серж, не согласен с тобой ... пока не столкнулся с MVC, был далек от оценки преимуществ. Однако не так давно "нацепил" шаблон на онлайн-флеш-приложение (все те же игры в казино) и теперь даже не представляю, как можно было это по-другому реализовать ... Хотя когда дело касается js, сложно представить применение к нему шаблонов :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2009, 01:55 |
|
||
|
Замыкания, добро или зло?
|
|||
|---|---|---|---|
|
#18+
Тоже как-то для одного тяжелого и богатого функционалам корпоративного проекта хотел написать лёгкий фрймворк для удобства. начал писать, но в процессе всего этого заметил что всё что я пишу и всё то, что надо написать, давно есть в любимом jQuery =) плюнул и стал его использовать, хоть он и не легкий по размерам. а вообще, написание фреймворка даёт не плохую практику, так как ты вспоминаешь функции, методы, etc, которые тебе в повседневном не понадобятся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2009, 05:52 |
|
||
|
Замыкания, добро или зло?
|
|||
|---|---|---|---|
|
#18+
зы, сделали начальнегом - поздравляю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2009, 14:07 |
|
||
|
Замыкания, добро или зло?
|
|||
|---|---|---|---|
|
#18+
Зы , а ты начальнег? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2009, 14:20 |
|
||
|
Замыкания, добро или зло?
|
|||
|---|---|---|---|
|
#18+
iConst Я бы мог продолжить вашу препарацию (увлекаюсь психологией) и чувствую широкое поле для исследования, но это уже совсем не по теме, да и ни к чему. ещё один психолог по интернету? :) нет уж, уволь, таких докторов не надо занимайся лучше программированием, или поучись не притягивать ложные факты к беседе. авторА человека можно удержать разными способами. И тот кто думает, что только "бабло рулит" - тот глубоко заблуждается. я так не думаю, или ты к кому-то другому обращался? да, человека можно удержать, например, дав ему интересную работу (если он не из тех для кого бабло рулит), но интересная работа будет у тебя не всегда. авторто должны знать спасибо, знаю, но речь шла совсем не об этом. изначально вопрос стоял как? Кого взять на вакантную должность программиста клиентской части - человека со знаниями или новичка с потенциалом? Все зависит от конкретной ситуации. Кому надо получить результат сейчас - возьмет опытного, кто не прочь год потерять, потом за 5 месяцев долететь - возьмет новичка. В чем спор-то? Ты потерял год, поздравляю, к чему навязывать свой выбор другим? -------------------asdjl сделали начальнегом - поздравляю я тебя не знаю, но спасибо, хотя ты конечно "немного" запоздал. IDVsbruck , интересный вопрос. Скрипт он в некотором смысле относится целиком и полностью ко view, позволяет создать просто богатое представление данных. Не видел ещё чтобы кто-то пытался сделать схему MVC + MVC, где первый - MVC на сервере, второй - MVC для серверного View. Немного странновато, не кажется? С другой стороны если писать rich client то сервер уже перестает играть такую важную роль и mvc для него может быть избыточен (например, сервер уже не принимает решение о переходах между вью). Если рассматривать ExtJS, например, на твой взгляд он дает возможность полноценного MVC, или нет? Там какбэ есть модель, есть вьюшки, структура и стиль библиотеки не дает тебе ляпнуть лишнего, правда контроллер надо написать самому :) Как выглядит полноценный MVC на клиенте? Не будет ли это слишком большим оверхедом в программировании (ведь mvc тянет за собой сложную разделенную структуру)? Когда имеешь дело с таким гибким языком, как js, главное вовремя себя остановить и не вляпаться в кашу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2009, 14:39 |
|
||
|
Замыкания, добро или зло?
|
|||
|---|---|---|---|
|
#18+
ShSerge Зы , а ты начальнег? да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2009, 14:40 |
|
||
|
Замыкания, добро или зло?
|
|||
|---|---|---|---|
|
#18+
ShSergeЕсли добавили, а ещё лучше - убрали из таблички в БД одно единственное поле, сколько человек должно быть задействовано, чтобы подправить приложение, если учесть, что каждый занимается своим слоем? - Все та же команда. Только в сложных проектах выгода превосходит такие накладные расходы. Никогда не видел хорошего дизайнера и одновременно хорошего архитектора БД. Да и писать на клиенте не такое простое занятие. Кстати, упустил одно из важнейших свойств MVC - то, что компоненты достаточно хорошо тестируются по отдельности. Потому в хорошо документированном проекте один из команды может досрочно выполнить свою часть работы и курить... Но говорить об MVC - это значит говорить достаточно абстрактно. В чистом виде MVC это скорее академическая модель. Реалии немного другие - например MVP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2009, 02:39 |
|
||
|
Замыкания, добро или зло?
|
|||
|---|---|---|---|
|
#18+
iConstНикогда не видел хорошего дизайнера и одновременно хорошего архитектора БД. Трудно не согласиться. Хотя, вообще-то, архитектор БД - тот же дизайнер, "вид сбоку". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2009, 09:36 |
|
||
|
Замыкания, добро или зло?
|
|||
|---|---|---|---|
|
#18+
Функция должна помещаться целиком на экране. Использовать только входные параметры (функциональное программирование). Малая вложенность лучше. Функции внутри функций увеличивают размер оной. Использование свободных переменных противоречит функциональному подходу. Вложенность увеличивается. Надо знать замыкание чтобы понимать что это зло. И как его исправлять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2015, 14:30 |
|
||
|
|

start [/forum/topic.php?fid=22&msg=36210274&tid=1446077]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
149ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 458ms |

| 0 / 0 |
