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

nerv_ 18.12.2013 22:05

Цитата:

Сообщение от Maxmaxmaximus5
Пасоны, как вам новый стиль ui?

ты уже надоел срать своим ui во всех темах

Maxmaxmaximus6 19.12.2013 03:32

Poznakomlus, наркоман, хватит через переводчик разговаривать.

Кстати пасоны, какой самый короткий и красивый способ получить глобальный обьект?

пока остановился на этом
eval("this")
но не надежно,
(function(){return this}())
куда надежнее

cyber 19.12.2013 03:44

Maxmaxmaximus6, опять ты, троллинг не защитан.
<sarcasm>Самый надежный способ, работает 100%
(function(){ "use strict"; return this}());

"use strict" - это что бы быстрей работало, не обращай внимание, оптимизация такая.</sarcasm>

Maxmaxmaximus6 19.12.2013 03:56

много миллисекунд сэкономит?

cyber, кстати я переписываю ядро ui =) теперь не будет классов будут только прототипы) будет один обьект главный модуль и у него будут ресурсы. можно создавать модули наследники которые будут наследовать ресурсы. короче крутотень такая что словами не передать. и главное и труъ и логично и можно даже код в функцию не оборачивать. круть

Maxmaxmaximus6 19.12.2013 04:08

Гениально) ведь класс нужен когда мы будем несколько однотипных обектов создавать) но млять зачем нам тут это, я там парился с наследованием parent вон в конструкторпередавал, лол ПРОТОТИПЫ!!
ТО ЧТО НУЖНО!



Цитата:

Сообщение от cyber
работает в 2 раза быстрей

чо правда? а если в функции юз стрикт а во вложенной мы хотим использовать какой нить запрещенный ивал или with? (они вообще запрещены?)

cyber 19.12.2013 04:11

Стоп, ты реально воспринял серьезно про "use strict" ?
Ты мне реально настроение поднял :lol: :lol: :lol:
при использование "use strict" по умолчанию у функций this === undefined.

Maxmaxmaximus6 19.12.2013 04:19

Цитата:

Сообщение от Poznakomlus
добавь cache

кэш чего?


если сократить код всей моей либы то это:

adddEventListener('DOMContentLoaded', function(){
    ui.init()
})

var ui = {
    /* */
}

ui.directive('name', function(){ /**/ })
ui.directive('trololo', function(){ /**/ })
ui.service('$qqff', function(){ /**/ })



охуенно?
я как бы вывернул все на изнанку

и там все на столько охуительно что не потребовалось ни чо за собой убирать
теперь даже в функцию все оборачивать не обязательно, а все ядро распихано по сервисам и директивам и прочему, при чем к этому доступ имеют и пользователи =) то есть нет больше "под капотом" и "над капотом", теперь ВСЁ над капотом)

cyber 19.12.2013 04:22

Maxmaxmaximus6, насчет переменных, если перменные только для внутреннего использование то в название добавляют $ и $$, или это только для событий? http://habrahabr.ru/post/201832/

monolithed 19.12.2013 04:23

Цитата:

Сообщение от cyber
при использование "use strict" по умолчанию у функций this === undefined.


void function () {
    'use strict';

    alert(this === 100500);
}
.call(100500);

Maxmaxmaximus6 19.12.2013 04:25

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

почему они используют баксы а не _? чтобы пользователь мог _ использовать =) очевидно же.

Цитата:

Сообщение от cyber
Стоп, ты реально воспринял серьезно про "use strict" ?

вот жуеба :lol: я повелся

monolithed, круто круто я придумал сделать)? описать все как обьект. оцени как батька.

cyber 19.12.2013 04:29

monolithed, по умолчанию я имел ввиду без вызова call, apply, bind..)

cyber 19.12.2013 04:35

Я тут grunt ковыряю, не могу понять про подключение модуля, путь к чему прописывать нужно?

grunt.loadNpmTasks('grunt-contrib-compress');


Везде путь прописан как выше, что не так?
Устанавливал так
Цитата:

npm install grunt-contrib-compress --save-dev
И не совсем пойму для нужен --save-dev (перевести могу)
Цитата:

--save-dev: Package will appear in your devDependencies

Maxmaxmaximus6 19.12.2013 04:42

ну вот мой рабочий грант.

module.exports = function(grunt) {

  grunt.initConfig({
    pkg   : grunt.file.readJSON('package.json'),
    concat: {
      options: {
        banner   : '/* <%=pkg.name%> <%=pkg.version%> ' +
                   'by Maxmaxmaximus (build  <%=grunt.template.today("yyyy.mm.dd")%>) */\n\n',
        separator: '\n\n\n'
      },
      build  : {
        src : ['src/intro.js', 'src/core/*', 'src/index.js', 'src/ui/*/*.js', 'src/outro.js'],
        dest: 'build/<%= pkg.name %>.js'
      }
    },
    uglify: {
      options: {
        banner: '/* <%=pkg.name%> min <%=pkg.version%> ' +
                'by Maxmaxmaximus (build  <%=grunt.template.today("yyyy.mm.dd")%>) */\n\n'
      },
      build  : {
        src : 'build/<%= pkg.name %>.js',
        dest: 'build/<%= pkg.name %>.min.js'
      }
    }
  });

  grunt.loadNpmTasks('grunt-contrib-concat');
  grunt.loadNpmTasks('grunt-contrib-uglify');

  grunt.registerTask('default', ['concat', 'uglify']);

};

Maxmaxmaximus6 19.12.2013 04:43

Кстати, оцените НОВЫЙ стайл ui :thanks:


var ui = window['ui'] = {

    name       : 'ui',
    children   : {},
    filters    : {},
    services   : {},
    directives : {},
    animations : {},
    controllers: {},



    init: function(element) {

        var $compile = this.service('$compile');
        var $scope = this.service('$scope');

        $compile(element)($scope);
    },



    module: function(name) {



    },



    directive: function(name, factory) {



    },



    service: function(name, factory) {
        return this.resource('services', name, factory);
    },



    filter: function(name, factory) {
        return this.resource('filters', name, factory);
    },



    animation: function(name, factory) {

        return this.resource('animations', name, factory);

    },



    controller: function(name, controller) {

        var $parseController = this.service('$parseController');

        if (controller) {
            this.controllers[name] = $parseController(controller);
            return this;
        }

        var controller = this.controllers[name];
        if (!controller) {
            controller = $parseController(window[name]);
        }

        return controller;
    },



    invoke: function(func, context, locals) {

        var self = this;

        if (!locals) {
            locals = {}
        }

        if (isArray(func)) {
            var inject = func.slice();

            func = inject.pop();
            func['$inject'] = inject;
        }

        if (!func['$inject']) {
            var params = func.toString().match(/\(([\s\S]*?)\)/)[1].match(/[\w$]+/img) || [];
            func['$inject'] = params;
        }

        locals['$module'] = this;

        var services = func['$inject'].map(function(injectName) {
            return locals[injectName] || self.service(injectName);
        });

        return func.apply(context, services);
    },



    instantiate: function(func, locals) {

        var instance = Object.create(func.prototype);
        var returns = this.invoke(func, instance, locals);

        if (isObject(returns)) {
            instance = returns;
        }

        return instance;
    },



    resource: function(type, name, factory) {

        if (factory) {
            var resource = {
                factory : factory,
                instance: null
            };

            this[type][name] = resource;
            return this;
        }

        var resource = this[type][name];
        if (!resource) return null;

        var instance = resource.instance;

        if (!instance) {
            var instance = this.invoke(resource.factory) || null;
            resource.instance = instance;
        }

        return instance;
    }

};

Maxmaxmaximus6 19.12.2013 05:01

НЕ НУ ВЫ ПОСМОТРИТЕ КАК ЭТО КРУТО А!! КОГДА ВСЕ РАСПИСЫВАЕШЬ ТАК ПРИЯТНО!111


Дзен-трансгуманист 19.12.2013 05:16

Цитата:

Сообщение от Maxmaxmaximus6
кстати я переписываю ядро

Что, прошлое ядро, о гениальности которого ты так кричал, оказалось не таким уж и гениальным? Ну надо же! :D

Maxmaxmaximus6 19.12.2013 05:30

Цитата:

Сообщение от Дзен-трансгуманист
Ну надо же!

Ну ты должен меня понимать) это у всех бывает =)

Maxmaxmaximus6 19.12.2013 06:07

И что вот на счет этого скажете? то что я тут написал не
if(module) return module

а именно вот так



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

Дзен-трансгуманист 19.12.2013 06:12

Цитата:

Сообщение от Maxmaxmaximus6
Ну ты должен меня понимать)

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

Цитата:

Сообщение от Maxmaxmaximus6
это у всех бывает =)

Переписывать ядро? У тебя это вошло в привычку, не заметил? :D

Maxmaxmaximus6 19.12.2013 06:29

как будто что-то плохое)

kobezzza 19.12.2013 09:12

Цитата:

Сообщение от cyber (Сообщение 287769)
Я тут grunt ковыряю, не могу понять про подключение модуля, путь к чему прописывать нужно?

grunt.loadNpmTasks('grunt-contrib-compress');


Везде путь прописан как выше, что не так?
Устанавливал так

И не совсем пойму для нужен --save-dev (перевести могу)

--save-dev означает подятигивать npm также зависимости из devDependecies.

Путь нужно прописывать к node пакету-таска, т.е. как правило нужно написать, только имя таска и поиск будет искаться по node_modules.
Создай package.json и опиши там нужные зависисимости, вроде:
{
  "name": "myproject",
  "dependencies": {
    "grunt-cli": ">=0.1",
    "grunt": ">=0.4",
    "grunt-csso": ">=0.5"
  }
}


после в этой папке, где создал файл, сделай npm i, затем создай Gruntfile.js и всё

PS: http://habrahabr.ru/post/133363/

Maxmaxmaximus6 19.12.2013 12:33

Вот короче готовое ядро, оцените код? Лучше стало?

var ui = window['ui'] = {

    name       : 'ui',
    children   : {},
    filters    : {},
    services   : {},
    directives : {},
    animations : {},
    controllers: {},



    init: function(element) {

        var $compile = this.service('$compile');
        var $scope = this.service('$scope');

        $compile(element)($scope);
    },



    module: function(name) {

        var children = this.children;
        var module = children[name];

        if (!module) {
            module = Object.create(this);

            module.name = name;
            module.children = {};
            module.filters = Object.create(this.filters);
            module.services = Object.create(this.services);
            module.animations = Object.create(this.animations);
            module.directives = Object.create(this.directives);
            module.controllers = Object.create(this.controllers);

            children[name] = module;
        }

        return module;
    },



    directive: function(name, factory) {

        if (factory) {
            return this.resource('directives', name, factory);
        }

        var directives = this['directives'];
        var resource = directives[name];

        if (!resource) {
            return null;
        }

        var instance = resource.instance;

        if (!instance) {
            factory = resource.factory;
            instance = this.invoke(factory);

            if (isFunction(instance)) {
                instance = {
                    link: instance
                };
            }

            if (!instance.name) {
                instance.name = name;
            }

            if (!instance.priority) {
                instance.priority = 0;
            }

            if (!instance.restrict) {
                instance.restrict = 'A';
            }

            resource.instance = instance;
        }

        return instance;
    },



    service: function(name, factory) {

        return this.resource('services', name, factory);
    },



    filter: function(name, factory) {

        return this.resource('filters', name, factory);
    },



    animation: function(name, factory) {

        return this.resource('animations', name, factory);
    },



    controller: function(name, controller) {

        var controllers = this.controllers;
        var $parseController = this.service('$parseController');

        if (controller) {
            controllers[name] = $parseController(controller);
            return this;
        }

        controller = controllers[name];

        if (!controller) {
            controller = $parseController(window[name]);
        }

        return controller;
    },



    invoke: function(func, context, locals) {

        if (!locals) {
            locals = {}
        }

        if (isArray(func)) {
            var inject = func.slice();

            func = inject.pop();
            func['$inject'] = inject;
        }

        if (!func['$inject']) {
            var params = func.toString().match(/\(([\s\S]*?)\)/)[1].match(/[\w$]+/img);
            func['$inject'] = params || [];
        }

        locals['$module'] = this;

        var services = func['$inject'].map(function(injectName) {

            return locals[injectName] || this.service(injectName);

        }.bind(this));

        return func.apply(context, services);
    },



    instantiate: function(func, locals) {

        var instance = Object.create(func.prototype);
        var returns = this.invoke(func, instance, locals);

        if (isObject(returns)) {
            instance = returns;
        }

        return instance;
    },



    resource: function(type, name, factory) {

        if (factory) {
            var resource = {
                factory : factory,
                instance: null
            };

            this[type][name] = resource;
            return this;
        }

        resource = this[type][name];

        if (!resource) {
            return null;
        }

        var instance = resource.instance;

        if (!instance) {
            factory = resource.factory;
            instance = this.invoke(factory);
            resource.instance = instance;
        }

        return instance;
    }

};

nerv_ 19.12.2013 13:20

<iframe width="420" height="315" src="//www.youtube.com/embed/l9wOxpiwu7Q" frameborder="0" allowfullscreen></iframe>

Maxmaxmaximus6 19.12.2013 14:42

nerv_, ну чо с кодом то? норм стайл?

Tim 19.12.2013 15:44

Maxmaxmaximus6,
это ни кому не интересно

cyber 19.12.2013 18:31

kobezzza, спс работает.

Цитата:

Сообщение от kobezzza
--save-dev означает подятигивать npm также зависимости из devDependecies

Спс, я чет с тупил, я думал что это какой то список npm, а потом вспомнил что это в package.json проекта

nerv_ 19.12.2013 18:48

Цитата:

Сообщение от Maxmaxmaximus6
ну чо с кодом то? норм стайл?

Tim ответил:
Цитата:

Сообщение от Tim (Сообщение 287829)


cyber 19.12.2013 19:29

kobezzza, еще вопрос,

//Эти задания будут выполнятся сразу же когда вы в консоли напечатание grunt, и нажмете Enter
  grunt.registerTask('default', ['jshint', 'concat']);

т.е пока я не запущу грант из консоли нечего собиреться (просто в консоли винды не видит grunt)?
Я просто не могу понять, я не правильно настройки передал или просто проект не собирается.

kobezzza 19.12.2013 20:13

Цитата:

Сообщение от cyber (Сообщение 287866)
kobezzza, еще вопрос,

//Эти задания будут выполнятся сразу же когда вы в консоли напечатание grunt, и нажмете Enter
  grunt.registerTask('default', ['jshint', 'concat']);

т.е пока я не запущу грант из консоли нечего собиреться (просто в консоли винды не видит grunt)?
Я просто не могу понять, я не правильно настройки передал или просто проект не собирается.

Можно запускать из ноды, можно из консоли. В винде всё работает (у меня винда), мб ты просто забыл глобально поставить Grunt?
npm i -g grunt


ЗЫ: кстати, я в винде в качестве консольки юзаю git bash (http://git-scm.com/)

cyber 19.12.2013 20:32

Цитата:

Сообщение от kobezzza
мб ты просто забыл глобально поставить Grunt

Нет, и про то что на этом куске операционки винде нужно добавлять в PATH знаю, только батник гранта выдает ошибку. файл grunt.cmd находиться в C:\Users\CyBer\AppData\Roaming\npm\ . Ошибка
Цитата:

Если вы видите это сообщение, либо Gruntfile не найдет или grunt не был установлен локально в ваш проект. Большее информации на сайте гранта.
Цитата:

Сообщение от kobezzza
ЗЫ: кстати, я в винде в качестве консольки юзаю git bash (http://git-scm.com/)

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

cyber 19.12.2013 20:39

kobezzza, а для него есть оболочка как в убунте?

kobezzza 19.12.2013 20:42

Цитата:

Сообщение от cyber (Сообщение 287877)
Нет, и про то что на этом куске операционки винде нужно добавлять в PATH знаю, только батник гранта выдает ошибку. файл grunt.cmd находиться в C:\Users\CyBer\AppData\Roaming\npm\ . Ошибка

Да ну вряд ли в винде дело, у меня же всё ок.

Цитата:

Сообщение от cyber (Сообщение 287877)
Спасибо, щас посмотрю , то виндовая консоль вызывает желание убивать.

В винде есть ещё powershell, он получше cmd.exe:)

kobezzza 19.12.2013 20:43

Цитата:

Сообщение от cyber (Сообщение 287878)
kobezzza, а для него есть оболочка как в убунте?

Ты ща про что говоришь?

cyber 19.12.2013 20:45

Цитата:

Сообщение от kobezzza
Ты ща про что говоришь?

про внешний вид)
Цитата:

Сообщение от kobezzza
Да ну вряд ли в винде дело, у меня же всё ок.

на linux стало все ок, только проблема в том что мне нужно это на винде...
Цитата:

Сообщение от kobezzza
В винде есть ещё powershell, он получше cmd.exe

Посмотрим)

cyber 19.12.2013 20:45

Цитата:

Сообщение от kobezzza
Да ну вряд ли в винде дело, у меня же всё ок.

а что тогда?((

kobezzza 19.12.2013 20:46

Цитата:

Сообщение от cyber (Сообщение 287882)
про внешний вид)

Про внешний вид кого?)

cyber 19.12.2013 20:48

Цитата:

Сообщение от kobezzza
Про внешний вид кого?)

Консоли, сделать что бы выглядила как терминал

kobezzza 19.12.2013 20:49

Цитата:

Сообщение от cyber (Сообщение 287883)
а что тогда?((

Поставь git bash и попробуй из него запустить. Скорее всего ты просто где-то ошибся, но чем чёрт не шутит.

kobezzza 19.12.2013 20:50

Цитата:

Сообщение от cyber (Сообщение 287885)
Консоли, сделать что бы выглядила как терминал

Пффф:) Какая разница как она выглядит, да и внешний вид настраивается. Главное что в git bash - bash, а всё остальное вторично.

***

Стоп, а как ты до этого запускал? батник что ли какой то хотел завести?

cyber 19.12.2013 20:52

Цитата:

Сообщение от kobezzza
Поставь git bash и попробуй из него запустить. Скорее всего ты просто где-то ошибся, но чем чёрт не шутит.

переустановил из git'a, всеравно пишет что такой команды нет


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