Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Унылого треша тред (https://javascript.ru/forum/offtopic/47728-unylogo-tresha-tred.html)

l-liava-l 21.11.2013 21:15

Цитата:

ААААААААААААААААААААААААА ААААААААААА!!!!!!111111111111
РУССКАЯ ДОКУМЕНТАЦИЯ!1111111111111111111111111 11 А я английскую читал через переводчик 2 дня О_О спасибо!!!
ахах не один такой))
правда я нашел русскую еще утром

Maxmaxmaximus3 27.11.2013 01:38

Чтоб приоритетнее ng-controller или ng-repeat ?

Maxmaxmaximus3 01.12.2013 10:31

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

module = new function() {
    var modules = {};

    function getParamNames(func) {
      return func.toString().match(/\((.*?)\)/)[1].match(/[\w$]+/g) || [];
    }

    function invoke(factory) {
      var injections = getParamNames(factory).map(function(name) {
        return module(name);
      });

      return factory.apply(null, injections);
    }

    return function(name, factory) {
      if (!factory) {
        var module = modules[name];
        if (!module) throw 'модуль ' + name + ' не найден';
        return module.instance || (module.instance = invoke(module.factory));
      }
      modules[name] = {
        factory : factory,
        instance: null
      };
      return this;
    }
};


  
  module('one', function() {
    function say() { console.log('im one!') }
    return {say: say}; //импорт
  });


  module('two', function() {
    function say() { console.log('im two!') }
    return {say: say}; //импорт
  });


  module('three', function(two, one) {
    function init() {
      one.say();
      two.say();
      console.log('im three, and i init!')
    }

    return {init: init}; //импорт
  });


  module('three').init(); //запускаем шайтанмашину =)


Кто не понял, модули зависимости мы запрашиваем по именам аргументов.

kobezzza 01.12.2013 12:58

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

Maxmaxmaximus3 01.12.2013 13:16

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

Maxmaxmaximus3 03.12.2013 05:18

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

<div controller="FRP">
  <button click="a++">add</button>
  {a} + {b} = {c}
</div>


<script>
  function FRP() {
    a = 2
    b = 3
    c = (a + b)
  }
</script>


круто?

Maxmaxmaximus3 04.12.2013 21:01

Пасоны, придумал очередную нанотехнологию, сервисы могут возвращать значение АСИНХРОННО!!

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


<div controller="Ctrl">
  {prop}
</div>

<script>
  function Ctrl() {
    prop = $test() //немного уличной магии ^__^
  }


  ui.global.service('$test', function() {

    return function test() {
      //возвращаем значение ассинхронно
      setTimeout(function() { test.$async('Тадааа ^__^') }, 2000)
      return 'loading...';
    }

  });
</script>


Единственное что, значение ассинхронно можно пихнуть только если идет приравнивание, а не декларация обьекта или вызов функции =( но я работаю над этим. Но по сути, если мы используем FRP подход, то это неебический сахар, ведь там только приравнивание и идет.



Ну типа того:
<script src="http://mychamber.ru/build/ui.js"></script>


<div controller="Ctrl">
  Имя:  {form.name}<br>
  Пароль:  {form.pass}<br>
  Отложенное значение:  {form.test}
</div>


<script>
  function Ctrl($test) {
    name = 'Maxmaxmaximus'
    pass = '****'
    test = $test()

    form = ({
      name: name,
      pass: pass,
      test: test
    })
  }



  ui.global.service('$test', function() {
    return function test() {
      //возвращаем значение ассинхронно
      setTimeout(function() { test['$async']('Тадааа ^__^') }, 2000)
      return 'loading...';
    }
  });
</script>

Maxmaxmaximus3 04.12.2013 23:12

Еще одна фитча, если мы вызываем контроллер так, то "глобальные переменные" попадают в текущий scope,



Если же мы вызываем контроллер как инстанс, то все эти свойства попадают в него.



То есть так и рекомендуется описывать контроллеры, без всяких this'ов и $scope'ов.
1) Это во первых удобно, так как не нужно писать всякие this и $scope.
2) Во вторых красиво, так как идешки подсвечивают "глобальные" переменные если настроить.
3) В третьих, человек вызывающий контроллер будет сам решать куда ему засунуть свойства контроллера, в инстанс или развернуть же в текущий скоуп =)
4) Так же, к слову, у нас внутри контроллеров есть прямой доступ к внешней области видимости, но если кто хочет может обратится явно через сервис: $scope.dsffsd

Это вам не ангуляр детки.

Maxmaxmaximus3 04.12.2013 23:49

Короче если так controller="ToDo", то зисом будет скоуп, а если так controller="ToDo as todo" то зисом будет новая сущность, но скоуп все ровно будет виден внутри контроллера.

просто this.qq можно не писать так как код предварительно парсится и это все дописывается автоматически если нет локальной переменной с таким именем конечно же. все гениальное просто.

Maxmaxmaximus6 29.12.2013 04:17

Релиз ui 1.0.0
 
https://github.com/Maxmaxmaximus/ui

Половину функционала выпилил в dev ветку, которую скоро выгружу)

оцените ридми=)

cyber 29.12.2013 06:57

Цитата:

Сообщение от Maxmaxmaximus6
оцените ридми=)

:lol:

DjDiablo 29.12.2013 13:14

Оценил.
Особенно понравилось.

Цитата:

Вообще, так писать даже правильнее, чем просто Cat =) потом поймете почему.
Цитата:

Вот эти вот все атрибуты называются директивы. Они что-то делают.
Цитата:

Вот и вся суть ui - пишем директивы, пишем фигурные скобки
Цитата:

Азы вы поняли

Не одного комментария в коде нету. Настоящий мужик ! Комментарии для слабаков.

Maxmaxmaximus6 29.12.2013 16:06

Цитата:

Сообщение от DjDiablo
Не одного комментария в коде нету. Настоящий мужик !

Спасибо, мой код не нуждается в комментариях =)

Maxmaxmaximus7 11.01.2014 00:35

Пасоны, глядите я новый Class написал =)
 
Пасоны, глядите я новый Class написал =)

function Class( description ) {
    return Class.extend( description );
}


Class.extend = function( description ) {

    description.prototype = this.prototype;

    var prototype = new description;
    var constructor = prototype.constructor || function() {};

    constructor.prototype = prototype;
    constructor.extend = this.extend;

    return constructor;
};



// используем

var Animal = new Class(function() {
    this.say = function() {
        alert( this.name )
    }
});



var Cat = Animal.extend(function() {
    this.constructor = function() {
        this.name = 'Cat';
    }
})


var Rabbit = Animal.extend(function() {
    this.constructor = function() {
        this.name = 'Rabbit';
    }
})


var q = new Cat();
var w = new Rabbit();

q.say(); // Cat
w.say(); // Rabbit


щас добавлю сахар для перекрытия и обращения к полям без this


Чтобы можно было писать так

var Animal = new Class( function() {

    constructor = function() {
        name = 'Animal'
        age = 11
    }

    say = function() {
        alert( name )
    }

} );


и имелось ввиду именно обращение к this

А добавлю перекрытие чтобы к перекрытым родительским можно было обращаться как
parent.method

Vlasenko Fedor 11.01.2014 00:56

Явно здесь не был
http://www.typescriptlang.org/Playground/

Maxmaxmaximus7 11.01.2014 01:18

Poznakomlus, да да, но это препроцессор а у меня подключаешь один файлик и все работает.

Maxmaxmaximus7 11.01.2014 01:47

хм. Да, если кто нас читает то я оговорился) это транслятор.

Poznakomlus, послушай, я знаю про тайпскрипт.

Maxmaxmaximus7 11.01.2014 01:50

Чо-то мне кажется это слишком медленно, так что завязываю и снова возвращаюсь к UI.js

function Class( description ) {
    return Class.extend( description );
}


Class.extend = function( description ) {

    description = parse( description );
    description.prototype = this.prototype;

    var prototype = new description;

    if (prototype.hasOwnProperty( 'constructor' )) {
        var constructor = prototype.constructor
    }
    else {
        var constructor = function() {}
    }

    constructor.prototype = prototype;
    constructor.prototype.parent = description.prototype;
    constructor.extend = this.extend;

    return constructor;
};



function parse( description ) {

    var code = description.toString().match( /\{([\s\S]*)\}/ )[1];
    var regExp = /parent[\s]*\.[\s]*(\w+)[\s]*\((.*?)\)/img;

    code = code.replace( regExp, function( match, method, params ) {
        var callText = /\S/.test( params ) ? '.call(this,' : '.call(this';
        return 'parent.' + method + callText + params + ')';
    } );

    code = 'with(this){' + code + '}';

    return new Function( code );
}


// ИСПОЛЬЗУЕМ


Animal = Class.extend( function() {
    this.say = function() {
        alert( 'animal' )
    }
} );


Cat = Animal.extend( function() {
    this.say = function() {
        parent.say();
        alert( 'cat' );
    }
} )


new Cat().say();

melky 11.01.2014 02:22

function parse( description ) {

    var code = description.toString().match( /\{([\s\S]*)\}/ )[1];
    var regExp = /parent[\s]*\.[\s]*(\w+)[\s]*\((.*?)\)/img;

    code = code.replace( regExp, function( match, method, params ) {
        var callText = /\S/.test( params ) ? '.call(this,' : '.call(this';
        return 'parent.' + method + callText + params + ')';
    } );

    code = 'with(this){' + code + '}';

    return new Function( code );
}

:D

Maxmaxmaximus7 11.01.2014 05:39

melky, чит =)

Maxmaxmaximus7 11.01.2014 05:45

пофиксил, ускорил скорость работы) добавил поддержку статических, приватных и даже публичных свойств =)

function Class( description ) {

    return Class.extend( description );

}



Class.prototype['constructor'] = function() {};



Class['extend'] = function( description ) {

    description = parse( description );
    description.prototype = this.prototype;

    var prototype = new description( description.prototype, constructor );
    var _constructor = prototype['constructor'];


    function constructor() {
        return _constructor.apply( this, arguments );
    }

    constructor.prototype = prototype;
    constructor['extend'] = this['extend'];

    return constructor;
};



function parse( description ) {

    var code = description.toString().match( /\{([\s\S]*)\}$/ )[1];

    code = parentSupport( code );
    code = privateSupport( code );
    code = publicSupport( code );

    return new Function( 'parent,static', code );
}



function parentSupport( code ) {

    var regExp = /\bparent\b\s*\.\s*(\w+)\s*\((.*?)\)/img;

    code = code.replace( regExp, function( match, method, params ) {
        var separator = /\S/.test( params ) ? ',' : '';
        return 'parent.' + method + '.call(this' + separator + params + ')';
    } );

    return code;
}



function privateSupport( code ) {

    var fix = '___';
    var regExp = /\bprivate\b.([\w_]+)/img;

    code = code.replace( regExp, function( match, prop ) {
        return 'this.' + fix + prop + fix;
    } );

    return code;
}



function publicSupport( code ) {

    var regExp = /\bpublic\b.([\w_]+)/img;

    code = code.replace( regExp, function( match, prop ) {
        return 'this.' + prop;
    } );

    return code;
}

//########################################################  static

var Cat = new Class( function() {

    this.constructor = function() {
        static.cnt++
    }

    static.cnt = 0

} )

new Cat();
new Cat();
new Cat();

alert( Cat.cnt ) // 3

//########################################################  private

var Cat = new Class( function() {

    public.name = 'Cat'
    private.age = 11;

} );

var q = new Cat();

alert( q.name ); // Cat
alert( q.age ); // undefined

Maxmaxmaximus7 11.01.2014 06:54

если кто не понял, это все шутка :yes: потому как пилить норм парсер мне влом) мне ни разу не встречалась необходимость в наслеовании классов если честно за всю жизнь. Ну ни разу вот, например ни разу не приходилось наследовать что-то от евент эмиттера, я все делаю проще просто. Если появляется необходимость в наследовании, значит - сделал сложно, и я переделываю.

Maxmaxmaximus7 11.01.2014 07:20

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

melky 11.01.2014 16:14

Цитата:

Сообщение от Maxmaxmaximus7 (Сообщение 291591)
Если появляется необходимость в наследовании, значит - сделал сложно, и я переделываю.

ржунимагу :lol: а как же абстракции?

Maxmaxmaximus7 11.01.2014 16:41

Ты про абстрактные классы или чо)?

Maxmaxmaximus7 16.01.2014 07:01

Дайте мне движение сделать!
 
И всем типа похуй что причина соперничества людей - дефицит благ, таких например как возможность не работать а результат работы получать, и этот дефицит устраняется автоматизацией скучных и рутиных работ на которых люди не хотят работать, ливтеров заменили автоматическими лифтами, ткачих заменили ткатскими станками, гаишников и водителей заменят автопилотами, а быдло лишь возится в своих социальный проблемах не видя всей картины в целом. ВСЕ НАШИ ПРОБЛЕМЫ ТЕХНИЧЕСКИЕ, А НЕ ПОЛИТИЧЕСКИЕ! То есть сам факт СОПЕРНИЧЕСТВА ЛЮДЕЙ УЖЕ есть факт проблемы. И проблема явно не в том как более эффективно соперничать с другими людьми. А проблема в дефиците благ. Вы же, делаете революции хуюции и прочее, совершенно не видя причин. Вы же тупо соперничаете, даже не пытаясь устранить причину соперничества, относясь к соперничеству и дефициту благ, как к чему-то незыблимому.

Люди делятся на группировки называемые странами, на племена, соперничают за ресурсы, и прочее.. И только горстка ученых развивает технологии чтобы устранить этот дефицит и действительно РЕШИТЬ ПРОБЛЕМЫ.

НО МЫ ТО С ВАМИ НЕ ТАКИЕ!!! МЫ БУДЕМ ПИЗДИЦА ДРУГ С ДРУГОМ ЗА БАНАНЫ ЗА МЕСТО ТОГО ЧТОБЫ УВЕЛИЧИТЬ УРАЖАЙНОСТЬ! И КУКАРЕКАТЬ "ВОТ ПЛОХОЙ ЧЕЛОВЕК! БОЛЬШЕ БАНАНОВ ЧЕМ Я ЗАБРАЛ!!! РЕВОЛЮЦИЯ!!!" !

Вы наверное еще и думаете что МЕНТЫ ПЛОХИЕ раз НЕ СДЕРЖИВАЮТ ЖАДНОСТЬ ВОЗНИКАЮЩУЮ В УСЛОВИЯХ ДЕФИЦИТА... Игнорируя тот факт что проблема все таки в дефиците, а не в сдерживании жадности.

СТР0ОNЕ Р0БОТОВ8 б9ЛТtь!1!


nice_try 16.01.2014 10:58

человек = животное, замени слово человек в своем тексте на животное и ты поймешь абсурдность своих суждений

Maxmaxmaximus7 16.01.2014 10:59

человек - животное, абсурдности в суждениях не заметил. что я делаю не так?

nice_try 16.01.2014 11:01

Цитата:

Сообщение от Maxmaxmaximus7 (Сообщение 292402)
что я делаю не так?

живешь

Maxmaxmaximus7 16.01.2014 11:14

:yes:

melky 16.01.2014 12:00

у тебя есть интернет, но нет еды? скачай

kobezzza 16.01.2014 13:15

Maxmaxmaximus7, разрешаю начать строительство роботов. Можешь начать с робота "функция Class".

Gozar 16.01.2014 17:03

Maxmaxmaximus7,
Что делать в случае зависти?

У Маши 2 робота новой модели, а у Даши 1 старой. Даша ненавидит Машу!

Сомневаюсь, что на планете хватит ресурсов, чтобы обеспечить всех желающих новыми роботами одновременно. Будут драки за роботов, хвастовство новым роботом Mexus 99 ...

Maxmaxmaximus7 16.01.2014 20:06

Цитата:

Сообщение от Gozar
Что делать в случае зависти?

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

а во вторых зависти на материальные блага уж точно не будет, так как они не буду в дефиците.

1) ты не знаешь сколько на планете ресурсов и какая носимая мощность земли (сколько она в состоянии выдержить население людей в комфорте)

2) останется единственная проблемА, это типа нечайно толкнул девочку а она упала глазом на карандаш и ослепла, и ейё отец захотел тебе смтить. или измены например. правда мне кажется что люди в том обществе все таки разработают такие технологии которые обманут смерть, смогут сделать протезы глаз.. ок. но вот что делать с изменами? мне кажется либо моногамия исчезнет либо.. я хуйц знат, но в любом случае то общество будет горааазло лучше нашего. роботы не решают ВСЕХ проблем человечества) но блять 99 из них они уж точно решают.


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

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

nerv_ 16.01.2014 20:10

чукча не читатель, чукча писатель

kobezzza 16.01.2014 21:08

Maxmaxmaximus7, болтовня ничего не стоит, покажи мне робота, которого ты построил

Maxmaxmaximus7 16.01.2014 21:15

чукча с просони)

Цитата:

Сообщение от kobezzza
покажи мне робота, которого ты построил

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

kobezzza 16.01.2014 21:19

Цитата:

Сообщение от Maxmaxmaximus7 (Сообщение 292517)
сначала ты своего, я вот строю робота ui который поможет автоматизировать создание сайта/ так же я сепйчас занимаюсь устройством своей личной жизни чтобы выживать в этой системе и планирую заниматься этим до 25 лет. далее я начну работать на общество. а теперь покажи ты своего робота

это самый дешёвый слив который я только видел:D

Ну на "роботов", коли ты их так называешь

https://github.com/kobezzza

ЗЫ: ты же говорил что у тебя 9-ти летняя девушка, чем не личная жизнь?

Maxmaxmaximus7 16.01.2014 21:48

Цитата:

Сообщение от kobezzza
это самый дешёвый слив который я только видел

не понял

Цитата:

Сообщение от kobezzza
ЗЫ: ты же говорил что у тебя 9-ти летняя девушка, чем не личная жизнь?

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

kobezzza 16.01.2014 21:54

Цитата:

Сообщение от Maxmaxmaximus7 (Сообщение 292523)
не понял

Поясню: как твой UI (который ты уже второй год только обещаешь) поможет избежать дефицита благ?

Цитата:

Сообщение от Maxmaxmaximus7 (Сообщение 292523)
ты либо толстишь либо реально дурачок который думает то личная жизнь это половые отношения.

Ты писал что любишь её. Если любовь к партнёру и половые отношения с ним - это не личная жизнь, то что же по твоему?


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