Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Как быть Немо-программистом (https://javascript.ru/forum/offtopic/32456-kak-byt-nemo-programmistom.html)

macdack 16.10.2012 21:42

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

чо надо уметь?

можно сформировать минимальный список умений, на который можно ориентировать ся

данке

Maxmaxmахimus 16.10.2012 21:52

html5
css3
ecma5
паттерны
шаблонизаторы
jQuery
ООП

macdack 16.10.2012 21:59

Цитата:

Сообщение от Maxmaxmахimus (Сообщение 210623)
html5
css3
ecma5
паттерны
шаблонизаторы
jQuery
ООП

наркоман шоле

я эти наборы букв давно знаю ))

кокретней надо ближе к телу

macdack 16.10.2012 22:00

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

ну какбе славу заиметь и понты

melky 16.10.2012 22:12

Цитата:

Сообщение от macdack
чо надо уметь? чтобы быть типа нарасхват

Цитата:

Сообщение от macdack
славу заиметь и понты

вот ты сам и ответил. пара статеек на хабрэ, пара хороших скриптов, и дело в шляпе.

стартап будет плюсом.

macdack 16.10.2012 22:17

Цитата:

Сообщение от melky (Сообщение 210638)
вот ты сам и ответил. пара статеек на хабрэ, пара хороших скриптов, и дело в шляпе.

стартап будет плюсом.

ну об этом я и спрашиваю
но хотелось бы конкретики, и параметров охуенности

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

Maxmaxmахimus 16.10.2012 22:45

Сделай 3д тетрис и аналог скайпа на html5 без использования сторонних либ // этого будет достаточно для демо

Пока не сделаешь можешь даже и не думать о серьезном web прогарммировании

macdack 16.10.2012 22:48

проги типа скайпа стимулируют развитие сетевой порнографии
это зло и уголовно наказуемо ))

macdack 16.10.2012 22:50

Maxmaxmахimus, нежнее, еще нежнее (с)

постарайтесь (небязательно сёдня) действительно донести до меня девстительно полезный свой опэт

диавол же в нуансах

dmitry111 16.10.2012 23:13

Цитата:

Сообщение от macdack (Сообщение 210626)
например что такова охуительнова надо зделать и придумать чтобы быть типа нарасхват

ну какбе славу заиметь и понты

мое мнение - язык программирования (любой не обязательно js) может освоить каждый. Это как букварь в 1-ом классе, рано или поздно дается каждому.
Но придумать и что самое сложное реализовать придуманное - вот в этом вся фишка.
Я js изучаю месяца 4-5, за это время в моей голове возникали проекты один за другим, но чем больше я начинал вникать в них, тем больше я понимал, насколько я далек от их реализации.

Если в голове нет идей, то я думаю и изучать язык ни к чему :)

nerv_ 16.10.2012 23:17

Цитата:

Сообщение от macdack
чо надо

написать функцию Class :D

Maxmaxmахimus 16.10.2012 23:17

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

(function( window, undefined ){

    function trololo (){}

    window['myModule'] = {
        ololo : trololo
    } 

})( (function(){return this})(), void 0 )


потом предложения и рассказы

Цитата:

Сообщение от nerv_
написать функцию Class

да кстати, только тогда становишься истинным гуру javascriopt когда напишешь функцию Class XD

Nekromancer 16.10.2012 23:18

Охуенно быть!

DjDiablo 16.10.2012 23:47

Peter Norvig
Учёный, и охуенный программист, который работал над качеством поиска в гугле, роботами NASA, старший учёный в SUN ну и тд, и тп.

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

Научитесь программировать за 10 лет. Читаем, и ужасаемся :)

Maxmaxmахimus 16.10.2012 23:54

Да не чтобы написать функцию Class не нужно 10 лет)

macdack 16.10.2012 23:56

я вот как бывший спец в определенной области проработав овер 10 лет могу чотота мудрова насоветать начинающему чайнику

вот и тут какбе может бывалые поблещут житейской мудростью

ибо скоро уже пенсия - надо дом двухэтажный пора покупать

macdack 17.10.2012 00:03

и погрется на солнышке в тропических курортах очень чота охота уже блять

Nekromancer 17.10.2012 00:13

macdack,
Чё, с 3х лет программируешь? :)

DjDiablo 17.10.2012 00:17

Боюсь бесполезно тебе советывать.
что я дал тебе, ты даже неглянул.

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

melky 17.10.2012 00:17

Цитата:

Сообщение от Maxmaxmахimus
да кстати, только тогда становишься истинным гуру javascriopt когда напишешь функцию Class XD

хз ... накорябал сегодня за 10 минут, со статическими свойствами, цепочечным наследованием, и как-то не чувствуется :)

monolithed 17.10.2012 00:19

Цитата:

Сообщение от melky
хз ... накорябал сегодня за 10 минут, со статическими свойствами, цепочечным наследованием, и как-то не чувствуется

Hаписал в ЛС :D

Nekromancer 17.10.2012 00:54

DjDiablo,
У нас на работе, к сожалению, добрая половина так думает. А потом когда смотришь в то, что он наделали, руки хочется поотрывать.

Nekromancer 17.10.2012 00:54

monolithed,
Ну а чё в ЛС? :) Я тоже хочу может.

Maxmaxmахimus 17.10.2012 01:07

Цитата:

Сообщение от melky
хз ... накорябал сегодня за 10 минут, со статическими свойствами, цепочечным наследованием, и как-то не чувствуется

покажи ка)

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

melky 17.10.2012 08:38

Цитата:

Сообщение от Maxmaxmахimus
п.с. ты видимо перед этим не думал месяц целый над удобством этого чуда как это делал я))

я решил перейти с обычных конструкторов и прототипов на более высший интерфейс для создания конструкторов, проосто потому что так красивее код смотрится :)

ну и задание того требует, чтобы код был ООП-шным.

Цитата:

Сообщение от Maxmaxmахimus
либо стырил решение у меня либо просто сам додумался до такого же и быстро )

я 2 года назад уже представлял, как она будет выглядеть :)

вдохновлялся кодом Class из мутулз.

Цитата:

Сообщение от Maxmaxmахimus
но возможно ты этого и не сделал) короче показывай давай

да ничего особенного , что ты думаешь ..

да, её надо причесать.. но она мне нужна вот чисто в текущем проекте - я хочу писать в функциональном стиле.
function Class (descriptor) {

        var constructor = descriptor.__construct__ || function () {};
        var parent = descriptor.__extends__ || {};
        var static = descriptor.__static__ || {};
        var i;

        if (typeof parent === "function") {
            parent = new parent();
        }

        constructor.prototype = Object.create(parent);
        constructor.prototype.super = parent;
        constructor.prototype.constructor = constructor;

        for (i in descriptor) if (descriptor.hasOwnProperty(i)) {
            constructor.prototype[i] = descriptor[i];
        }

        for (i in static) if (static.hasOwnProperty(i)) {
            constructor[i] = static[i];
        }

        return constructor;
    }

var Creation = new Class({
    createdBy: "God",

    // см. этот метод в каждом классе и результат
    overrideMe: function () {
        return "Hello";
    }
});

var Animal = new Class({

    __extends__: Creation,

    lives: true,

    overrideMe: function () {
        return this.super.overrideMe() + ", ";
    }
});

var Cat = new Class({

    __construct__: function (name) {
        alert("Создана кошкэ");
        this.name = name;
     },

    __extends__: Animal,

    __static__: {
        FAV_CAT_NAME: "пушок"
    },

    meow: function () {
        alert(this.name + " : мяу");
        alert("Унаследовал : " + this.createdBy);
    },

    overrideMe: function () {
        return this.super.overrideMe() + "World!";
    }
});

var cat = new Cat( Cat.FAV_CAT_NAME );

cat.meow();

alert(cat.overrideMe());

Nekromancer 17.10.2012 09:25

Вот моя реализация, использую в текущем проекте :) И с миксинами.

https://github.com/NekR/Sync/blob/master/core.js#L41

Maxmaxmахimus 17.10.2012 09:50

melky,
а у тебя статик работают так

var Cat = new Class({
    __static__: {
        FAV_CAT_NAME: "пушок"
    },
});

Cat.FAV_CAT_NAME === new Cat().FAV_CAT_NAME // true ?


Удобнее ли вот такой подход?
var Cat = new Class( function( __static__ ){

    __static__.FAV_CAT_NAME = "пушок";

} );


А так же вопрос, у тебя нет ни какой функции в описании, у тебя обьект описательный, то есть как бы нельзя делать в нем ни какие "действия" как в моей описательной функции. Например у меня в ней можно обьявлять как бы приватные вспомогательные функции которые не относятся к самому обьекту, но их используют методы этого обьекта. При том они не наследуются а наследуются только сами методы. Как это делается у тебя?


var Cat = new Class( function () {

	this.__construct__ = function () {
		this.food = [];
	};


	this.eat = function ( foodInstance ) {
		var suitabilityOfFood = _testSuitabilityOfFood( foodInstance );
		if ( !suitabilityOfFood )    return false;

		this.food.push( foodInstance );
	}

	// this вообще не используется, функция вспомогательная и не является методом объекта
	// по этому и не должна наследоваться. Начинается она с подчеркивания чтобы показать что это внутренняя функция
	// класса, то есть просто введя подчеркивание я сразу получаю в кодкомплите какие у меня вспомогательные
	// функции в этом классе есть.
	function _testSuitabilityOfFood( foodInstance ) {
		return foodInstance instanceof Food;
	}

} );



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

А у тебя бы нам пришлось относить такие вспомогательные функции либо К приватным методам, либо создавать их В САМИХ МЕТОДАХ на лету.

ну то есть так


var Cat = new Class( {
	eat:function ( foodInstance ) {
		// каждый раз создается
		function _testSuitabilityOfFood( foodInstance ) {
			return foodInstance instanceof Food;
		}

		var suitabilityOfFood = _testSuitabilityOfFood( foodInstance );
		if ( !suitabilityOfFood )    return false;

		this.food.push( foodInstance );
	}} );

melky 17.10.2012 16:52

Цитата:

Сообщение от Nekromancer
Вот моя реализация, использую в текущем проекте И с миксинами.

довольно интересно сделано :) особенно вот этот момент:

if (parent) {

          if (!(this instanceof parent)) {
            self = Object.create(parent.prototype);
          }

          parent.apply(self, arguments);
        }

        handler.apply(self, arguments);
        return self;
      };


Цитата:

Сообщение от Maxmaxmахimus
melky,
а у тебя статик работают так
var Cat = new Class({
    __static__: {
        FAV_CAT_NAME: "пушок"
    },
});

Cat.FAV_CAT_NAME === new Cat().FAV_CAT_NAME // true ?

for (i in static) if (static.hasOwnProperty(i)) {
            constructor[i] = static[i];
        }

они не наследуются.

смотри пример со статическим "вшитым" свойством :

alert( "now" in Date ); //  ну мы знаем, что это за метод такой.

var myDate = new Date(); // создадим экземпляр

alert( "now" in myDate ); // в экземпляре нету статического метода.


Цитата:

Сообщение от Maxmaxmахimus
Удобнее ли вот такой подход?

я поэтому и написал её, чтобы не писать вот так :
Cat.prototype.foo = function ...
Cat.prototype.bar = function ....


и __static__ туда же :
__static__.foo = ...
__static__.bar = ...
__static__.mar = ...


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

Цитата:

Сообщение от Maxmaxmахimus
Как это делается у тебя?

очевидно, что никак :) я ими просто не задался.

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

и я в них я не вижу смысла, т.к. я сам эти "приватные" переменные (с "_" в начале имени свойства) уж точно не запорю, а внешний код в них тоже не сможет вмешаться - все экземпляры подчиняются одному ( класс App ), который является контроллером, и управляет доступом к объектам сам.

Цитата:

Сообщение от Maxmaxmахimus
ну то есть так

по-моему, это называется грязным хаком :)

Dim@ 17.10.2012 17:29

macdack,
блин, ещё один Flixabi:-/

Maxmaxmахimus 17.10.2012 17:31

Цитата:

Сообщение от melky
они не наследуются.

при чем здесь наследуются или не наследуются, ты сути строчки не понял?
Cat.FAV_CAT_NAME === new Cat().FAV_CAT_NAME // true ?


статические свойства доступны только из конструктора или еще из самого инстанса?

Цитата:

Сообщение от melky
по-моему, это называется грязным хаком

да, но это не лучше чем пихать вспомогательные функции как внутренние МЕТОДЫ обьекта)) не изза того что они там наследуются или еще что-то, а просто из за того что они не являются мтеодами и трудно будет отличить есть метод а что есть вспомогательная функция и ЧАСТь другого метода...


Кстати я понимаю у нас разные цели, но для ООП чье кунфу круче твое или мое)?

мой Class или твой)?

Только обьективно сравни) а так же скорость исполнения))
То есть если не использовать навороты которые есть у меня, а использовать на обеих функциях одно и то же) то где будет удобнее и быстрее)?

melky 17.10.2012 17:43

Цитата:

Сообщение от Maxmaxmахimus
статические свойства доступны только из конструктора или еще из самого инстанса?

только из конструктора

Цитата:

Сообщение от Maxmaxmахimus
при чем здесь наследуются или не наследуются, ты сути строчки не понял?

не наследуются экземпляром, я имел в виду

Цитата:

Сообщение от Maxmaxmахimus
Кстати я понимаю у нас разные цели, но для ООП чье кунфу круче твое или мое)?

:haha: лол. тут нельзя сравнивать - у меня обёртка над прототипным программированием, у тебя имитация ООП в JS.

разные вещи.

тем более, моя написана на коленке за 10 минут, а свою ты долго писал, придумывал и фиксил :)

моя - фуфло, но мне она удобна.

Nekromancer 17.10.2012 20:49

melky,
Там по моему была какая то проблема, при наследовании и extend`ах, что попадало в рекурсию или где то там в опере отваливалось если создавать на парента, а |Object.create(Class.prototype)|. Короче решил сделать так, но в этом случае оно конечно не будет instanceof нужный если вызвать просто так:
var MyClass = Sync.inherits({parent: OtherConstructor, handler: function() {}});

var obj = MyClass();

obj instanceof MyClass; //false
obj instanceof OtherConstructor; //true

Livanderiaamarum 17.10.2012 23:50

Цитата:

Сообщение от melky
у меня обёртка над прототипным программированием, у тебя имитация ООП в JS.

вообще то у меня КАК РАЗ и обертка над прототипным наследованием) и ни какой эмитации других языков.

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

Shaci 18.10.2012 00:09

Цитата:

Сообщение от Livanderiaamarum (Сообщение 210891)
вообще то у меня КАК РАЗ и обертка над прототипным наследованием) и ни какой эмитации других языков.

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

тебя вроде забанили?

bes 18.10.2012 10:45

Цитата:

Сообщение от macdack
но хотелось бы конкретики, и параметров охуенности

dicking.style.width
dicking.style.height
dicking.style.display
dicking.style.opacity
dicking.style.background
.................................
в общем всё то же самое
PS:
чтобы быть злым, нужно быть на стороне зла
чтобы быть добрым, надо быть на стороне добра
чтобы быть охуенным, нужно быть на стороне ....

bes 18.10.2012 11:33


melky 18.10.2012 17:59

Цитата:

Сообщение от bes
dicking.style.width
dicking.style.height
dicking.style.display
dicking.style.opacity
dicking.style.background
.................................
в общем всё то же самое

var dick = self.cock;
// осторожно, для ослов этот способ не сработает!
dick.style.transform = "scale(99999999, 99999999)";


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