Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Элитного кода тред (https://javascript.ru/forum/offtopic/57197-ehlitnogo-koda-tred.html)

tysonfury2015 23.07.2015 20:28

kobezzza,
Кстати, ты говоришь, это не миксины, но че то сомнительно.
class CatDog extends pluralParent(Cat, Dog) {}

Я честно говоря, не понял до конца, но это выглядит так, как будто он смешивает все хрень в прототипе объекта CatDog. если это так, это тоже частный случай, и это не годится, ибо, он не сможет потом убрать из прототипа отдельно Cat или Dog, либо заменить чем либо.

kobezzza 23.07.2015 20:33

Цитата:

Я зашел. Я плохо разбираюсь в синтаксисе, то что там выбросил транслятор -- это вообще мрак, там запаришься разбираться.
Кто то по дешёвому сливается :D

Цитата:

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

Цитата:

То что написал предыдущий оратор, это в любом случае не то.
Аргументов не ждать?) Объясню для имбицилов, в том примере реализовано полноценное делегируемое множественное наследование на прототипах, весь prototype chain объектов сохраняется, память лишняя не тратится, конфликты решаются, а при желании можно реализовать любую другую схему, хоть на сообщениях. И самое главное, всё это встроено в нативный синтаксис классов, поэтому ничего даже учить не надо.

ЗЫ: ты малолетний бездарь с завышенным ЧСВ, на мнение которого абсолютно ВСЕМ насрать, у тебя нет ни проектов, ничего вообще, кроме своих фантазий и желчи, который ты тут всех поливаешь.

kobezzza 23.07.2015 20:33

Цитата:

Я честно говоря, не понял до конца, но это выглядит так, как будто он смешивает все хрень в прототипе объекта CatDog. если это так, это тоже частный случай, и это не годится, ибо, он не сможет потом убрать из прототипа отдельно Cat или Dog, либо заменить чем либо.
В этом и проблема, что ты не понимаешь, но катишь балон. Никаких миксинов там нет. Логика такая:

При поиске свойства в объекте оно ищется в своём proto chain, если его там нет, то ищется в proto chain первого дополнительного родителя, если и там нет, то второго и т.д. Никаких миксинов, полная поддержка рантайм и нативно для JS.

Цитата:

он не сможет потом убрать из прототипа отдельно Cat или Dog, либо заменить чем либо.
Да легко, хоть пачками удаляй/добавляй прототипы, там всё будет работать.

tysonfury2015 23.07.2015 20:36

Цитата:

Сообщение от kobezzza
Никаких миксинов там нет.

Покажи как выкинуть из CatDog, скажем Cat

kobezzza 23.07.2015 20:40

Цитата:

Сообщение от tysonfury2015 (Сообщение 381256)
Покажи как выкинуть из CatDog, скажем Cat

function pluralParent(...parents) {


Ставим свойство parents, как свойство созданного объекта, и потом просто добавляем/удаляем свойства из него и всё. Поиск свойств делает прокси, даже человеку, который вчера узнал JS будет всё очевидно.

tysonfury2015 23.07.2015 20:45

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

kobezzza 23.07.2015 20:47

А теперь твой ход, ты говорил, что рекурсия для мудаков и всё надо делать на циклах, поэтому давай запускаемой код функции, которая делает рекурсивный миксин объекта с произвольной глубиной и структурой произвольным количеством других объектов, короче аналог jQuery.extend или Collection.extend, но на одних циклах. Или ты заранее сливаешься?

tysonfury2015 23.07.2015 20:50

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

kobezzza 23.07.2015 20:51

Цитата:

Сообщение от tysonfury2015 (Сообщение 381263)
kobezzza,
Я сначала с кодом разберусь, потом сделаю твою фигню. Во первых, я не уверен, что там все чисто, а во вторых, сомневаюсь, что это достаточно полная реализация.

Такое ты говорил уже год назад, значит будет слив :yes:

cyber 23.07.2015 20:56

kobezzza, это че максимус?)

Safort 23.07.2015 20:59

cyber,
не, это foo)
Хотя я не уверен, что это не одно и тоже))

kobezzza 23.07.2015 21:00

Цитата:

Сообщение от Safort (Сообщение 381266)
cyber,
не, это foo)
Хотя я не уверен, что это не одно и тоже))

Да не, Максимус хотя бы шарил в теме, а тут вообще тяжелый случай:)

cyber 23.07.2015 21:04

kobezzza, я то подумал что максимус опустился до уровня овоща)

trikadin 23.07.2015 21:08

tysonfury2015, для мотивации: если завтра ты не напишешь здесь ничего толкового -- уйдёшь в бан, чтобы время подучиться было :)

А то что-то ты скучный оказался :С

Erolast 24.07.2015 09:14

Цитата:

Сообщение от kobezzza (Сообщение 381241)
Ты молодец

Вах, спасибо.

Цитата:

Сообщение от tysonfury2015 (Сообщение 381251)
Я плохо разбираюсь в синтаксисе, то что там выбросил транслятор -- это вообще мрак, там запаришься разбираться. Поэтому, я еще раз говорю, давай обычную версию, без этого говна. Иначе это выглядит так, как будто ты зассал, и надеешься на то, что я твой код не смогу разобрать и проверить.

Лол, а кто-то там еще вопил, что лучше нас всех знает JS :D
Я написал полностью работоспособный код, полностью решающий твою задачу (в babel repl можешь проверить), на полностью валидном и современном JS. Если ты не можешь его понять, то это лично твои проблемы, иди кури мануалы.

Вообще непонятно, как ты без знания языка собрался тут с нами спорить.

Цитата:

Сообщение от kobezzza (Сообщение 381258)
function pluralParent(...parents) {


Ставим свойство parents, как свойство созданного объекта, и потом просто добавляем/удаляем свойства из него и всё. Поиск свойств делает прокси, даже человеку, который вчера узнал JS будет всё очевидно.

Аха, только, наверное, лучше скрывать parents за символ, экспортируемый гипотетической либой.

Либо, как вариант, можно стащить из бабеля функцию установки наследования и использовать её в рантайме:
function changeParent(subClass, superClass) { 
    if (typeof superClass !== "function" && superClass !== null) { 
        throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); 
    }
    
    subClass.prototype = Object.create(superClass && superClass.prototype, { 
        constructor: { 
            value: subClass, 
            enumerable: false, 
            writable: true, 
            configurable: true 
        } 
    });
    
    if (superClass) {
        subClass.__proto__ = superClass;
    }
}

class CatDog extends pluralParent(Cat, Dog) {};
changeParent(catDog, Cat); //Теперь catDog - это просто кот.
changeParent(catDog, null); //А теперь - ничто.
changeParent(catDog, pluralParent(Cat, Dog)); //Возвращаем справедливость.

devote 24.07.2015 10:03

Цитата:

Сообщение от cyber
Пошел куплю поп-корн)



Цитата:

Сообщение от cyber
kobezzza, это че максимус?)

похож, но максимус и то вроде уже поумнел... не такой пылкий стал

devote 24.07.2015 10:05

Цитата:

Сообщение от trikadin
А то что-то ты скучный оказался :С

да не, норм... пусть хоть немного форум проснется.. а то максимус поумнел, а замену не предоставил. Теперь она есть =)

trikadin 24.07.2015 11:49

Цитата:

Сообщение от devote
да не, норм... пусть хоть немного форум проснется.. а то максимус поумнел, а замену не предоставил. Теперь она есть =)

Так это ж Foo. Он здесь уже не первый (и не последний, думаю) раз.

Этот аккаунт даже не в первой двадцатке созданных, полагаю.

EmperioAf 24.07.2015 15:46

Цитата:

Сообщение от trikadin
Этот аккаунт даже не в первой двадцатке созданных, полагаю.

разве тут модераторы не всевластны?
на астрофоруме например модераторы очень быстро определяют тот же тролль вернулся на форум или новый пришёл.

Aetae 24.07.2015 15:51

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

devote 24.07.2015 15:57

Цитата:

Сообщение от Aetae
тут принято сначала насладиться выступлением клоуна

прям в точку (можно сказать, даем шанс исправится)

l-liava-l 24.07.2015 17:32

Цитата:

иди кури мануалы.
Я поражаюсь Илье, он либо робот, либо клонировал себя.

рони 24.07.2015 18:11

а у Gozar бан когда закончится?

devote 24.07.2015 18:36

рони,
я его в банах не нашел. Он не забанен.

EmperioAf 24.07.2015 18:37

Цитата:

Сообщение от l-liava-l
Я поражаюсь Илье, он либо робот, либо клонировал себя.

я думаю, что Илья знает, что его learn.javascript.ru считается лучшим ресурсом рунета по джаваскрипту. А это должно быть сильная мотивация

EmperioAf 24.07.2015 18:43

Цитата:

Сообщение от рони (Сообщение 381381)
а у Gozar бан когда закончится?

мне кажется он на пенсию ушёл, а не в бан

trikadin 24.07.2015 18:46

Цитата:

Сообщение от рони
а у Gozar бан когда закончится?

Гозар, по его словам, ушёл с форума. Бан у него на неделю был, но он обиделся и свалил.

Rise 24.07.2015 20:02

Цитата:

Сообщение от Erolast (Сообщение 381315)
иди кури мануалы

Цитата:

Сообщение от l-liava-l (Сообщение 381379)
Я поражаюсь Илье, он либо робот, либо клонировал себя.

Цитата:

Сообщение от EmperioAf (Сообщение 381384)
я думаю, что Илья знает, что его learn.javascript.ru считается лучшим ресурсом рунета по джаваскрипту. А это должно быть сильная мотивация

Хорошо бы еще сделать на главной Учебник выделение новых разделов (маркером new например) в течении какого-то периода с момента публикации. Типа такого: Современные возможности ES-2015 NEW

kobezzza 24.07.2015 20:18

Цитата:

Сообщение от Rise (Сообщение 381391)
Хорошо бы еще сделать на главной Учебник выделение новых разделов (маркером new например) в течении какого-то периода с момента публикации. Типа такого: Современные возможности ES-2015 NEW

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

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

nerv_ 24.07.2015 21:25

Цитата:

Сообщение от trikadin
Гозар, по его словам, ушёл с форума. Бан у него на неделю был, но он обиделся и свалил.

словом, психанул :)

Safort 24.07.2015 21:53

Цитата:

Сообщение от l-liava-l (Сообщение 381379)
Я поражаюсь Илье, он либо робот, либо клонировал себя.

Он робот, клонировавший себя.

trikadin 24.07.2015 21:58

Цитата:

Сообщение от Safort
Он робот, клонировавший себя.

Или клон, роботизировавший себя :blink:

EmperioAf 24.07.2015 21:59

а виновника торжества уже забанили?
И где можно посмотреть список банов?

devote 24.07.2015 22:13

Цитата:

Сообщение от EmperioAf
И где можно посмотреть список банов?

это доступно только модераторам и администратору

Deff 24.07.2015 22:32

Как-то Вы не тем заняты, вот затравка:
Cокращение больших идентичных кусков на странице(актуально для моего сервиса с кучей форумов и кучей идентичных страниц.
<!--Подгрузка с кешированним на клиенте редко меняемых секций HTML кода на странице -->
<script type="text/javascript">(function(){var a="FORUM:form#post",lnk="/files/content_form_post/1437607164.txt",
b='<!--|·|-->',html,c='/',reg=eval(c+b+c+'g'),b=b.split('|'),storag=window.localStorage; var d=+new Date();
if(storag)html=storag[a];if(html){c=html.substr(0,100).split(reg);if(c=(c[1]==lnk)){document.write(html);return;}} 
if(!html||!c){c=c?'':'?'+d;html = $.ajax({url:lnk+c, async: false, cache:!c}).responseText; document.write(html);
if(!storag)return; storag[a]=b[0]+ lnk + b[1] + d + b[2]+html}}());
</script>

Нужный кусок кода страницы засовываем в файл /files/content_form_post/1437607164.txt , в даннном случае у меня форма ответа со всякими BB-наворотами, весом под 100кб. Скрипт ставим в то место страницы, где должен появиться контент. Получилась экономия трафика около 10% на страницу в топике с сообщениями и формой, коих основная масса /80% под юзером/, все скрипты и стили (если есть в виде загружаемых файлов) - разворачиваем в полный код, когда суём в файл подгрузки.
var a="FORUM:form#post" - своё новое значение переменной для загрузки иной секции(отличной от текущей).

cyber 24.07.2015 22:42

kobezzza, чет я не пойму как подключить хтмл в js, через webpack, через что я не тупоб в доке)

cyber 24.07.2015 23:14

Пытался что то такое сделать

module.exports = function ( app ) {
    app.derictive ( "ngDynamicSelect", function ( ) {
        return {
            restrict: "A",
            template: require( "../templates/list.html" ),
            scope: {
                ngDynamicLest: "="
            }
        }

    } )
};

gulpfile

var gulp = require('gulp'),
    webpack = require ( "webpack" );

gulp.task("webpack", function(callback) {
    webpack({
        entry: [ "src/directives/dynamic-select" ],
        output: {
            filename: "dist/ngDynamicSelect.js"
        }
    }, function(err, stats) {
            console.log( err);
        callback();
    });
})

gulp.task('default', [ "webpack" ] );

kobezzza 25.07.2015 11:44

Цитата:

Сообщение от cyber (Сообщение 381403)
kobezzza, чет я не пойму как подключить хтмл в js, через webpack, через что я не тупоб в доке)

Тебе нужно задать скрипт лоадер для этого, а именно https://github.com/webpack/raw-loader

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

nerv_ 25.07.2015 15:17

Цитата:

Сообщение от cyber
Пытался что то такое сделать

http://javascript.ru/forum/offtopic/...tml#post381296

cyber 25.07.2015 15:35

kobezzza, спасибо)
nerv_, окай)


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