• Можно ли заработать в мире Unix-like, unix-way?

    @LiguidCool
    И еще хотелось бы остаться на платформе до конца, а не переучиваться через 5-10 лет.

    Хехе, наивный :)
    10 лет назад скажи народу, что на JS будут сервер писать - засмеяли бы. А лет 15 назад пфф. Я уж не говорю у мобильной разработке, которая расцвела полным ходом. Да и даже веб сильно изменился.
    Как именно там зарабатывают обычные люди, разработчики

    Также как и все - работают на дядю и зарабатывают. А на чем дядя зарабатывает, на том и вы.

    На самом деле все очень по разному... Да и большое заблуждение, что Unix-way = бесплатно. Хм ... Ну например 1С для Linux - ОС бесплатная, но ПО под него нет.

    Если я лицензирую свой код GPLv2/3(и совместимыми), то как на этом зарабатывать?

    Платная поддержка по подписке. Или например сейчас можно делать для опенсурсной платформы платное облако. Хочешь - себе ставь бесплатно, хочешь плати и тебе все из коробочки всучат.

    У меня закралось подозрение, что ... "Если я лицензирую свой код GPLv2/3" - вы что, думаете вам начальник разрешит? :D Или стооооп, вы надеетесь работать на себя в карман? На Сях? Не ну удачи, она вам точно понадобится.

    PS
    На правах ИМХО.
    Ответ написан
    3 комментария
  • Какие бывают сервисы to-do листов?

    Zifix
    @Zifix
    Barbatum
    Ответ написан
    Комментировать
  • Чем сфера применения Angular JS отличается от JQuery?

    @sergeystepanov1988
    AngularJS:
    • фреймворк
    • предназначен для создания SPA (single page application)


    jQuery:
    • библиотека
    • предназначена для более удобной и кроссбраузерной работы с DOM и AJAX.

    Разницу между библиотекой и фреймворком объяснять нужно?
    Ответ написан
  • Каковы Возрастные ограничения в программировании?

    hronik87
    @hronik87
    Обитаю в 1С-Bitrix
    Раз в день стабильно появляется похожий вопрос. Мне 28, год назад ничего не знал ни о HTML, ни о CSS, ни о JavaScript, ни о PHP. Сегодня работаю в хорошей компании, верстка у меня на твердую 4, JavaScript на 3+(библиотека JQuery в основном, но могу и на чистом написать что-нибудь полезное), PHP начал осваивать месяц назад, но уже есть довольно неплохие результаты. Было ли мне сложно в самом начале? Да! Я не знал ничего об этой сфере. Спал по 4 часа в сутки прямо возле компьютера, шаблон разрывало и я начал уже вслух разговаривать с собой. У меня не стояло выбора поучить сегодня или нет. У меня стоял выбор пойти поссать и дальше учить или все же потерпеть, а потом уже сходить когда невмоготу будет. И я сейчас в той сфере которая мне нравится, я постоянно учусь и я не остановлюсь. Так что если ты уверен, что это твое, то любыми правдами и неправдами учи, старайся, вникай. И все получится)
    Ответ написан
    14 комментариев
  • Этот код является замыканием в JS?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Что это такое — «понимать замыкания?»
    Иногда говорят «Вася молодец, понимает замыкания!». Что это такое — «понимать замыкания», какой смысл обычно вкладывают в эти слова?
    «Понимать замыкания» в JavaScript означает понимать следующие вещи:
    • Все переменные и параметры функций являются свойствами объекта переменных LexicalEnvironment. Каждый запуск функции создает новый такой объект. На верхнем уровне им является «глобальный объект», в браузере — window.
    • При создании функция получает системное свойство [[Scope]], которое ссылается на LexicalEnvironment, в котором она была создана.
    • При вызове функции, куда бы её ни передали в коде — она будет искать переменные сначала у себя, а затем во внешних LexicalEnvironment с места своего «рождения».

    Отсюда.
    Ответ написан
    2 комментария
  • Как спроектировать JavaScript приложение?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Для начала разберитесь с принципами объектно-ориентированного и функционального программирования. Штуки вроде "почему высокая связанность кода это плохо, зачем нужны MVC и т.д."

    Паралельно можете поразбираться с типичными шаблонами проектирования под js: largescalejs.ru

    Ну и еще - ES2015, активное использование модулей и штук вроде jspm/webpack для сборки. По сути все проблемы в js - кривое управление зависимостями (вся соль ООП в принципе состоит в инверсии зависимостей, функциональные подходы делают все еще лучше). Сейчас ситуация с этим всем намного лучше чем была скажем еще года 4 назад.

    Опять же, когда речь идет о реально больших проектах, следует перестать писать на каждый чих свой велосипед. Нужна библиотека для организации маршрутизации - берем готовую. Нужно работать с датами - берем moment.js и т.д. Сборщики вроде того же jspm умеют выдерать из популярных библиотек то что можно (если можно так сделать, скажем с angular2 выдрать только нужные модули можно. а вот с angular1 нет).
    Ответ написан
  • Почему не все серверы пишутся на Node js?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    1. Принципиальных качественных преимуществ у node.js перед остальными языками нет, как впрочем и недостатков. Просто yet another язык со своими особенностями. Соответственно если в вопросе заменить node.js на php/ruby/python итд - ничего не изменится.
    Вопрос по сути абстрактный "почему все не перешли на язык %%%%%"

    2. Ответ на абстрактный вопрос:
    а) Потому что существует огромное количество legacy кода который нужно поддерживать. Работы по поддержке и развитию существующего кода на порядок больше чем написания с нуля нового
    б) Потому что у разработчиков есть свой стек любимых технологий, изменять который без явных экономических причин основная масса не готова
    в) Потому что умные технические менеджеры выбирают стек технологий проекта исходя из имеющихся под рукой разработчиков и легкости поиска и заменимости оных.

    UPD
    hbrmdc
    У NodeJS есть уникальные и очень весомые преимущества, которых нет ни у одного другого языка. Например то, что это JS, и, следовательно, нет необходимости разучивать лишние языки - можно весь webapp писать на js.
    Личные предпочтения обоснованные привычками - это не имеющий значения аргумент в данном вопросе.

    1) Есть отличия, да. Только не те о которых Вы пишите. То что это "JS" вообще ни на что не влияет.
    JS хорошо знают фронтендщики - а кто пустит фронтэндщика к внутренней архитектуре? Там подход совершенно другой нужен, другие навыки, другое понимание как это все работает. Просто пересадить человека с фронта на бек - нельзя.

    На самом деле основные отличия другие:
    Постоянно живущий процесс, фактическая однопоточность. В зависимости от задачи - это может быть и плюсом и минусом. Условно для какого нибудь сокет-сервера - плюс (активно используем на живых проектах). Для middleware - я бы подумал. Для нагруженного сервиса с расчетами - точно нет.

    2) Личные предпочтения обоснованные привычками это основной аргумент.
    Я вот умею в php, умею в ноду, умею в еще десяток умных слов.
    Мне нужна новая команда на новый проект.
    Я открываю hh и что я вижу: node.js 279 резюме из которых половина фронтэндщики.
    PHP - 9613 резюме. Даже если 90% разработчиков PHP на hh - уроды которых к коду нельзя подпускать на пушечный выстрел - останется все равно в 3 раза больше чем есть node.js.
    Собственно на этом выбор и закончен.

    На малопопулярных языках пишут в случаях:
    a) это мелкий сервис с неявными перспективами который можно переписать за неделю
    б) это проект "для души" разработчика.

    Получается замкнутый круг на самом деле.
    Менеджер смотрит резюме, резюме на node.js нет =>
    Менеджер не начнет проект на node.js =>
    Не возникнет вакансия на node.js =>
    Разработчик анализируя вакансии не увидит вакансий на node.js =>
    Разработчик будет учить что то другое =>
    Менеджер смотрит резюме, резюме на node.js нет...

    Переломить ситуацию могут только очень крупные игроки обладающие возможностями формирования рынка (например Apple и Swift), и то не со 100% гарантией (samsung&c и Tizen)
    Ответ написан
    13 комментариев
  • Как правильно организовать инфраструктуру продакшена и процессы разработки, тестирования и деплоя?

    saboteur_kiev
    @saboteur_kiev Куратор тега Системное администрирование
    software engineer
    Нельзя брать некую теоретическую компанию и делать теоретическую структуру продакшена.
    Надо брать конкретный продукт, конкретные требования заказчика, который платит деньги, и отталкиваться от этого.

    Можно настраивать CI, можно разводить agile процессы, но главное - выяснить требования заказчика, и подстраиваться под них.
    Ответ написан
    5 комментариев
  • Какой использовать сервис для хранения шрифтов?

    RadCor
    @RadCor
    Если мой ответ вам помог, отмечайте его решением.
    Так а почему их не заливать на сайт для которого вы приминяете эти шрифты?
    Я к примеру всегда заливаю шрифты или на сайт на котором эти шрифты применяю.
    Или на свой сайт заливаю, и с него подключаю.
    Ответ написан
    7 комментариев
  • Как в директиве получить контроллер в который она обернута?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    или если его и не нужно получать по идеологии, то почему?

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

    1) работа директивы требует того что бы она была обернута в SomeControeller на уровень выше.
    2) директива становится частью SomeControeller, или если быть точным, куска view которым управляет SomeControeller.
    3) нет смысла в директиве, так как мы не можем более реюзать ее в другом месте
    4) если директива зависит от контроллера SomeControeller, почему бы не вынести из SomeControeller то что нужно директиве в ее собственный контроллер?

    как-то так. Все взаимодействие с директивой должно происходить либо через контроллеры директив (параметр require директивы), либо через атрибуты (изолированный scope, bindToController в angular 1.4). И уж тем более странно желание подменять методы контроллера из link.

    updated

    короче суть в непонимании того что есть директива как я понимаю. Директива - самодостаточная единица (самостоятельное маленькое MVC приложение). По хорошему она может зависеть только от других директив, но ей глубоко должно быть плевать где именно и как ее используют. Она выполняет свой маленький кусочек логики. Некоторые директивы выступают в роли фасадов, инкапсулируя в себе и упрощая работу с множеством директив.

    Далее, по поводу обработчиков - яркий пример директива ng-click. Эта директива выглядит как-то так:

    function myNgClick() {
        return {
            restrict: 'A',
            scope: {
                callback: "&myNgClick"
            },
            link: function (scope, el) {
                el.bind('click', function (e) {
                    scope.$apply(function () {
                         scope.callback({$event: e});
                    });
                });
            }
        }
    }


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

    link директивы нужен ТОЛЬКО для того что бы связать DOM и логику. То есть в 99% случаев в директиве будет только link или только контроллер. Оба - это уже стремно, в этом случае лучше вынести ту логику которую хочется запихнуть в link в отдельную директиву.

    контроллер (мы сейчас отойдем чуть чуть от MVC только ради того что бы упростить все) реализует всю логику (или делегирует модели). Вся логика не относящаяся к DOM а например относящаяся к обработке данных должна быть вынесена в контроллер.

    Пара слов по поводу ng-controller. Это так же директива, которая позволяет привязать к элементу какой-то контроллер. Эта штука по сути (как и ng-include в принципе) нужна только для ускорения разработки и упрощения. В целом же приложение на angular стоит воспринимать как HMVC приложение, состоящее исключительно из деревьев директив. Первый шаг на пути к web-components (по сути ангуляровские директивы послужили неплохим глотком вдохновения).

    Как-то так.
    Ответ написан
  • Как вы строите архитектуру приложения?

    MarcusAurelius
    @MarcusAurelius
    автор Impress Application Server для Node.js
    Тут мой ответ по связанной теме: Как составить план проектирования проекта?
    А кроме того, хочу отметить, что начинать проект с дизайна (если Вы имеете в виду дизайн пользовательского интерфейса) это в большинстве случаев очень плохая практика. Проект нужно начинать с концепции, а потом переходить к информационной модели, потом к структурам данных (как в базе, так и в памяти) и уже потом только понятно, что на экране будет делаться. Исключение могут составлять игры, электронные книги, анимационные, интерактивные и подобные произведения, которые являются в большей степени произведением визуального искусства, чем программным продуктом. Из средств проектирования посмотрите разные реализации UML и RUP (Rational Unified Process), например Rational Rose. Вот, посмотрели, и понравилось - берите, а стало страшно - значит это Вам не нужно. Это для проектов крупных и очень крупных. Что точно нужно, так это уметь рисовать ER-диаграммы на бумажке карандашом, архитектуру модулей программной системы и железную инфраструктуру для развертывания. На большинство вопросов, которые Вы задаете, ответы можно дать только относительно конкретного проекта. Иногда нужны автоматизированные средства проектирования, иногда они не нужны и все можно сделать в уме и сэкономить время. Это очень зависит от задачи и опыта. Но что определенно, так не следует разводить лишней бюрократии,
    Ответ написан
    1 комментарий
  • Имеет ли смысл для каждого поддомена создавать поддомен api для rest приложений?

    Если это совсем разные API, работающие с разными данными и пишут их разные люди, то имеет смысл разделить. Иначе - нет.
    Ответ написан
    Комментировать
  • Как вынести http запрос в фабрику?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    в фабрику

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

    Но если первый вариант работает, то при вызове из фабрики,

    А вы приглядитесь, вы в методе getFiles вашего сервиса ничего не возвращаете. Надо возвращать промис.

    .factory("gistsFactory", function( $http, $q) {
    
        return {
             getFiles: function(id) {
                  return $http.get("http://тут_урл").then(function(response) {
                       return response.data;
                  }, function (reason) {
                       return $q.reject(reason);
                  });
        };
    })


    p.s. не пользуйтесь $scope-ом в контроллерах, и да, почитайте документацию.
    Ответ написан
    3 комментария
  • Как правильно кешировать в Angular?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    https://docs.angularjs.org/api/ng/service/$http#caching

    в целом же вроде как и так норм, единственное что я бы в кэш сразу промис еще положил что бы все остальные чуваки тоже дожидались а не дергали заново апишку.
    Ответ написан
    4 комментария
  • Куда съезжать с Ubuntu?

    Ernillew
    @Ernillew
    Администрирую *nix-системы с 1997 года
    > что с бубунты пора съезжать вообще на что-то более серьезное

    Этот человек — клоун начитавшийся форумов для чайников.
    Ubuntu — мэйнстримный дистрибутив. Никуда съезжать с него нет нужды.
    Ответ написан
    6 комментариев
  • Чем наследования (extends) отличается от создания новых экземпляров классов (new)?

    abs0lut
    @abs0lut
    Ваш пример не содержит кода, поэтому он не корректный.
    Что если мы напишем так:
    class Vehicle {
        public speedUp (int newSpeed) {
            speed = newSpeed;
        }
    }
    
    class Car extends Vehicle {
        private boolean opened = false;
        public void openDoor {
            opened = true;
        }
    }
    
    class Tank extends Vehicle {
        private ammo = 10;
        public void fire(Vehicle enemy) {
            ammo -= 1;
        }
    }


    Будет более явно видно, зачем нужно наследование. Теперь в классе Tank и в классе Car не нужно описывать отдельно одинаковые методы, так как они вынесены в общий суперкласс.

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

    Наследование применяют, чтобы избавиться от копирования кода. Если в двух классах есть что то общее(например, одинаковые методы), возможно, стоит сделать более общий класс, от которого наследуются два других.

    TL;DR
    В результате наследования получаем более простой и короткий код. В результате создания объектов получаем возможность оперировать данными объекта.

    p.s. почитайте книгу какую нибудь, где будут описаны простые примеры инкапсуляции, полиморфизма и наследования. Например, "Head First Java". Или можете обратиться к мини-курсу от Oracle - Oracle tutorial
    Ответ написан
    4 комментария
  • Как научиться писать такой ООП код?

    @Copperfield
    Android dude
    Мне в школе физрук говорил:"Чтобы много подтягиваться - нужно много подтягиваться".
    Ответ написан
    Комментировать
  • Курсы по Java в Санкт-Петербурге и необходимость в них?

    sim3x
    @sim3x
    Нет никакой вероятности, кроме случаев, когда тебя учат прямо в компании для самой компании.

    Узнавай в неоф группах что о них говорят те кто прошел курс

    за 3 года работы нет отзывов
    Ответ написан
    2 комментария
  • Фронтенд - каковы шансы пробиться?

    gadfi
    @gadfi
    https://gamega.org
    как же задолбали подобные вопросы !
    ребята вы к гадалкам бы походили или еще как то на кофе, или ромашку бы заюзали ... что за вопрос ─ какие шансы пробиться ? рынок есть, значит отличные от нуля, а насколько отличные зависит от вас.
    За год профессионалом не стать не стать, но джуном/мидлом в зависимости от области запросто, просто начните что то делать.
    Если вместо того чтобы работать задавать вопросы насколько реально, то вообще никак, остается тока плакаться на злодейку судьбу, географию ... масовнов и на плохую погоду, а после этого склеить ласты с голоду.

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