Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Смишных картинок тред (https://javascript.ru/forum/offtopic/35821-smishnykh-kartinok-tred.html)

Maxmaxmaximus3 06.12.2013 14:29

Maxmaxmaximus3, ну хорошо, ты видимо тупой и я поясню:
Если у нас есть директива date и она применяется к инпатам и рисует выбиралку времени, а потом добавили атрибут date, которые уже сам рисует выбиралку времени, то если определена директива date то при парсинге она нарисует нашу кастомную выбиралку времени а атрибут этот удалит, чтобы не рисовалось 2 выбиралки времени.

Окей, допустим не было атрибута class, человек создал кастомный атрибут class который чо то там делает, потом ввели атрибут class и он резко перестает работать, потому что парсер его уаляет из разметки так как он кастомный, в чем суть? а в том-то и суть, что человек использовал атрибут тогда когда нативного class еще не было и он ожидает поведение именно кастомного class, так что все будет работать так как он задумал. если же он программирует, и видит что есть директива которая использует атрибут который ему нужен он просто переименует эту директиву. Он будет знать то-что ОООПА, у нас имя class уже забито кастомной директивой, ну ка где там она? отключу ка я её или переименую.

И еще можно сделать так что если человек хочет использовать нативный class то он напишет nt-class и все, парсер переименует его в просто class. то есть ЛОГИЧНО использовать префиксы, в том что используется реже.

п.с.
хотя знаешь, уберу ка я это, я считаю это тупостью, надо упрощать а не усложнять.

Tim 06.12.2013 14:35

Цитата:

Сообщение от Maxmaxmaximus3
Мне кажется, или не Я еблан, а ты просто тупой, и думаешь что я еблан?

По тому что к тебе подходят все остальные близкие по значению слова.

Синонимы еб-ла́н
1. ничтожество
2. баклан, болван, дурак, тупица, кретин, мудак, мудила


Зачем я это делаю? Неужели я правда желаю тебе зла?

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

Это последний раз я за тебя гуглю, надоело

Maxmaxmaximus3 06.12.2013 14:49

Tim, ну так чо, клоун, ты получил ответы на свои вопросы? (на 40 странице)

А на это есть что противопоставить ангуляру?


Цитата:

к слову, сравните старый IU




с новым

Мы можем создать ячейки, которые будут пересчитывать свое значение при обращении к ним ячейки пишутся в скобочках, а то что обьявленно без var попадает в скоуп ^__^ , а так же сервисы подключаются автоматически если их имя написать. например сервис $hash() возвращает текущий хэш, а если передать туда строку то сравнивает её с текущим хэшэм ^__^

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



НО МЫ ПОШЛИ ДАЛЬШЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕ ЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕ ЕЕЕЕЕ:


ахахах дададдада оно работает =)

если в сервисе описать функцию $async то при присваиваниях сервиса будет вызываться эта функция и в неё будет передаваться каллбак, вызвав который и передав туда первым аргументом какое-то значение, оно установится в то во что мы присваивали сервис =) ассинхронка=)

то есть если мы сделаем так, то в свойстве hash всегда будет содержаться актуальный хэш (если конечно наш сервис это поддерживает)

НУ КАК ВАМ)??? РАСТЕМ ДЕТКА ^__^ это я еще далеко не все фитчи рассказал

Maxmaxmaximus3 06.12.2013 16:07

А знаете чо самое очешуенное ребят =)
это



РАБОТАЕТ) то есть мы можем написать сервис $api для общения с сайтом, и сделать его ассинхронным, сделать его на сокетах, хуёкетах, переодически запросы отправлять) не важно, суть в том что в нем мы можем сделать ассинхронный метод который будет пихать значение в messages и обновлять перерисовку =)

Я ГЕНИЙ СУКА1111


А вот как выглядит сервис $api


Maxmaxmaximus3 06.12.2013 16:28

пруф
<script src="//mychamber.ru/build/ui.js"></script>

<ul controller="Chat">
  {messages}
</ul>

<script>
  function Chat() {
    messages = $api()
  }

  ui.service('$api', function() {
    return function api() {
      var i = 0, $async = api['$async'];
      setInterval(function() { $async(i++) }, 1000)
    }
  })
</script>

Tim 06.12.2013 16:30

Цитата:

Сообщение от Maxmaxmaximus3
РАБОТАЕТ) то есть мы можем написать сервис $api для общения с сайтом, и сделать его ассинхронным, сделать его на сокетах, хуёкетах, переодически запросы отправлять) не важно, суть в том что в нем мы можем сделать ассинхронный метод который будет пихать значение в messages и обновлять перерисовку =)

Ты на малолеток передрочил? Что тут нового? Сокеты-хуёкеты или асинхронный метод?

kobezzza 06.12.2013 16:31

Я вижу в твоём коде критическую ошибку, угадай где.

function Chat() {
    messages = $api()
}

ui.service('$api', function() {
    return function api() {
      var i = 0, $async = api['$async'];
      setInterval(function() { $async(i++) }, 1000)
    }
})


PS: я не шучу :)

Maxmaxmaximus3 06.12.2013 16:33

Цитата:

Сообщение от kobezzza
Я вижу в твоём коде критическую ошибку, угадай где.

с коде примеров или именно в коде ui?

Цитата:

Сообщение от Tim
Что тут нового?

сахар и FRP, покажи ка мне как бы ты такое на ангуляр сделал, ну ка)) умник

kobezzza 06.12.2013 16:33

Цитата:

Сообщение от Maxmaxmaximus3 (Сообщение 284990)
с коде примеров или именно в коде ui?

В примере, хотя это это ошибка самого фреймворка.

Maxmaxmaximus3 06.12.2013 16:39

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

и если мы вызываем контроллер так controller="Chat" то this'ом будет $scope, если так controller="Chat as chat" то this'ом будет инстанс chat который попадет в $scope под именем chat ^_^ где же тут ошибка? это фитча. Очередная между прочим.

<script src="//mychamber.ru/build/ui.js"></script>

<ul controller="Chat"> {qq} </ul>

<script>
function Chat() {
    alert('я сработал')
    qq = 11
}

setTimeout(function(){ alert(window.qq) }, 2000) //проверяем
</script>

kobezzza 06.12.2013 16:41

Я не про это, думай дальше :)

Maxmaxmaximus3 06.12.2013 16:46

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

kobezzza 06.12.2013 16:51

Ну ок. У тебя не предусмотрено асинхронное АПИ, т.е. в твоём примере идёт голый вызов setInterval и в случае если виджет будет удалён, то он не сможет быть удалён сборщиком мусора + скорее всего посыпятся баги.
Все асинхронные вызовы вроде setInterval, setTimeout, AJAX, различные внешние события обязаны быть обработаны деструктором виджета.

Maxmaxmaximus3 06.12.2013 16:52

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


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

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

kobezzza 06.12.2013 16:53

Цитата:

Сообщение от Maxmaxmaximus3 (Сообщение 285003)
kobezzza, ты шутишь? я для примера это сделал, для всякого подобного будут сервисы запилины, я просто для примера показал, я думал это очеивдно) а так да, за наводку спасибо но я знаю уже.

Фреймворк обязан реализовывать АПИ очередей асинхронных вызовов. Если ты этого не понимаешь, то это плохо:) Т.к. всякий раз когда тебе приходится руками прописывать очищение памяти - это возможная потенциальная ошибка.

Maxmaxmaximus3 06.12.2013 16:55

Цитата:

Сообщение от kobezzza
Все асинхронные вызовы вроде setInterval, setTimeout, AJAX, различные внешние события обязаны быть обработаны деструктором виджета.

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

Цитата:

Сообщение от kobezzza
Фреймворк обязан реализовывать АПИ очередей асинхронных вызовов.

немного не понял, можешь обьяснить?

kobezzza 06.12.2013 17:00

Цитата:

Сообщение от Maxmaxmaximus3 (Сообщение 285008)
немного не понял, можешь обьяснить?

У меня например все виджеты наследуются от класса Defer, который реализует АПИ: this.setTimeout, this.setInterval, this.setImmediate, this.ajax, this.proxy, this.setQueue и т.д. т.е. используя это АПИ вместо голых вызовов мы полностью устраняем проблему возможных утечек памяти и багов, т.к. сами виджеты знают об этих обработчиках и отменяют их выполнение и чистят память автоматически в деструкторе.

Представь ситуацию: у тя есть блок, он дёргает аяксом данные, запрос бежит, а в этот момент юзер к примеру переходит на другую страницу (а у нас сингл пейдж апликейшн), т.е. блок был удалён, но его запрос никто не отменил и более того, когда сервер ответит он будет вызывать обработчики внутри мёртвого блока. Тоже самое со всеми остальными асинхронными вызовами и событиями, вроде image.onload.

Maxmaxmaximus3 06.12.2013 17:05

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

nerv_ 06.12.2013 19:02

Цитата:

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

я по событию "смена_маршрута" очищял

kobezzza 06.12.2013 19:07

Цитата:

Сообщение от nerv_ (Сообщение 285025)
я по событию "смена_маршрута" очищял

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

Gozar 06.12.2013 19:30

kobezzza,
+1

Даже добавить нечего, все лаконично и доходчиво. Но напишу, раз чукча писатель ))

DjDiablo 06.12.2013 20:16


DjDiablo 06.12.2013 20:48

Цитата:

Сообщение от kobezzza (Сообщение 285009)
У меня например все виджеты наследуются от класса Defer, который реализует АПИ: this.setTimeout, this.setInterval, this.setImmediate, this.ajax, this.proxy, this.setQueue и т.д. т.е. используя это АПИ вместо голых вызовов мы полностью устраняем проблему возможных утечек памяти и багов, т.к. сами виджеты знают об этих обработчиках и отменяют их выполнение и чистят память автоматически в деструкторе.

Плюсую. ( точнее плюсанул бы если бы мог :) )
Аналогично юзаю деструкторы. Только у меня виджет еще может иметь дочерние виджеты.

что то вроде.
panel=new Panel({
    title:'hello world 1'
});

panel2=new Panel({
    title:'hello world 2'
});


input=new Input({
     model:exampleModel,
     field:'name'
})

panel1.add(panel2)
panel2.add(input);


У каждого виджета есть свойсво childrens в которой метод add может добавлять другие виджеты. Если panel1 будет удален, то деструктор panel1 в цикле вызовет деструктор для каждого виджета в childrens. Тобиш сначало сработает деструктор для panel1 который вызовет деструктор для panel2, а деструктор panel2 вызовет деструктор для input.

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

Вообще я считаю что виджет в фреймворке должен создаваться двумя путями, через new widgetname(); и декларативно, поскольку в разных ситуациях виджеты удобно создавать по разному. Если вы создаете систему виджетов ктоорую можно использовать и декларативно и императивно то удобнее с начало реализовать императивное создание виджетов а декларативное создание реализовывать как надстройку над императивным. Если в случае чисто декларативных виджетов иерархия виджетов особо не нужна и достаточно вызвать деструктор для всех виджетов внутри какого либо dom элемента, то в случае двойного подхода нужно учитывать иерархию. Дополнительным бонусом при учете иерархии становится предельно удобное обращение к родителям и детям (просто по свойствам childrens и parent).

Maxmaxmaximus3 06.12.2013 20:51

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

спасибо КобИИИИИза

А кто вообще ангуляр не юзал?

kobezzza 06.12.2013 21:13

DjDiablo, у мя тоже самое :)


Цитата:

А кто вообще ангуляр не юзал?
Я только баловался с ним, в реальном проекте не юзал.

Maxmaxmaximus3 06.12.2013 21:14

kobezzza, такое чувство что ты не юзаешь ангуляр и не юзал. Я прав?

kobezzza 06.12.2013 21:14

Цитата:

Сообщение от Maxmaxmaximus3 (Сообщение 285052)
kobezzza, такое чувство что ты не юзаешь ангуляр.

Правильно, потому что я юзаю БЭМ:)

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

Maxmaxmaximus3 06.12.2013 21:34

Ты можешь реализовать БЭМ и на ангуляре =) я не совсем понимаю это противопоставление, БЭМ это верстка и разметка, ангуляр это связь интерфейса и логики. Где противопоставление то?

kobezzza 06.12.2013 21:41

Цитата:

Сообщение от Maxmaxmaximus3 (Сообщение 285054)
Ты можешь реализовать БЭМ и на ангуляре =) я не совсем понимаю это противопоставление, БЭМ это верстка и разметка, ангуляр это связь интерфейса и логики. Где противопоставление то?

Ну БЭМ - это не только вёрстка и разметка, и там оч много вещей не совместимых по идеологии с Ангуляром. То, что ты имеешь ввиду под БЭМ - это на самом деле АНБ (Абсолютно Независимые Блоки): эти термины постоянно путают :) В общем могу сказать что для моего проекта, над которым я сейчас работаю - это оптимальный вариант, технический нюанс.

Maxmaxmaximus3 06.12.2013 21:45

kobezzza, покажи хоть один свой сайт, желательно один из лучших)
я просто ни одного сайта еще не сделал, и работаю развозчиком обогревателей, мне хочется посмотреть на что ровняться =)

kobezzza 06.12.2013 21:56

Цитата:

Сообщение от Maxmaxmaximus3 (Сообщение 285057)
kobezzza, покажи хоть один свой сайт, желательно один из лучших)
я просто ни одного сайта еще не сделал, и работаю развозчиком обогревателей, мне хочется посмотреть на что ровняться =)

Я не делаю сайты. Я именно программист, а не "дизайнер, юзабилист, фрилансер" и т.д. Хотя последнее время мне ещё приходится быть менеджером (что меня бесит).

Показать проект над котором сейчас работаю пока не могу (думаю смогу месяцев через 6 наверное и разумеется на этом ресурсе я проведу мини презентацию:) ).

Ну а так: Яндекс.Метрика, где я раньше работал.

DjDiablo 06.12.2013 22:01

Цитата:

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

Хм, я думал ты обогревателем работаешь. Сядешь в углу и потеешь пока в комнате тепло не станет.

Maxmaxmaximus3 06.12.2013 22:03

DjDiablo, шутка самосмейка)?

Shaci 06.12.2013 22:18

Цитата:

Сообщение от kobezzza
Я не делаю сайты.

а программист разве не делает сайты? (имеется ввиду не настройка готовой cms, а например разработка какого-то её модуля, ну и затем настройка)), это как пример)

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

Maxmaxmaximus3 06.12.2013 22:20

короче понятно я тоже сайты не делаю я пишу разные яваскрипты) лол

DjDiablo 06.12.2013 22:24

Цитата:

Сообщение от Shaci (Сообщение 285063)
а программист разве не делает сайты? (имеется ввиду не настройка готовой cms, а например разработка какого-то её модуля, ну и затем настройка)), это как пример)

Не думаю что яндекс метрика основана на какой то CMS, и точно не модуль для джумлы :)

Maxmaxmaximus3 06.12.2013 22:34

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

А то у всех проект проект, все миллиардеры) А ка до дела дошло все сразу на очко) все стесняются сайты показать.

Maxmaxmaximus3 07.12.2013 00:10

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

Maxmaxmaximus3 07.12.2013 00:22

ахахахахаха

cyber 07.12.2013 00:23

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


Часовой пояс GMT +3, время: 06:03.