• Можно ли (используют ли) один и тот же код (к примеру Angular или Vue) как для Веб, так и для Мобильных приложений?

    vitali1995
    @vitali1995
    Вам нужно использовать что-то вроде Cordova или Ionic. Они используют фронтенд вашего веб-приложения и позволяют встраивать нативные возможности, делая их мобильным гибридным приложением. В нужных местах кода делается проверка, на какой платформе приложение выполняется (браузер или кордова) и исполняется платформо-зависимый код - таким образом вы пишете один код для разных окружений. Для настольных приложений есть похожие аналоги, например Electron или NW.js
    Ответ написан
    Комментировать
  • Как написать алгоритм поиска соседних элементов?

    @maxfox
    Если хранить координаты в отсортированном массиве (X и Y отдельно), то проверять нужно будет только ближайших соседей, до тех пор, пока разница координат не превысит вашего минимального расстояния. Такая оптимизация тем эффективнее, чем меньше данное расстояние относительно размеров поля. Плюс кэшировать результаты сравнений, чтобы не проверять уже проверенные пары. Далее можно убивать кэш не каждый кадр, можно в четных кадрах искать вверх по массиву, а в нечетных - вниз и т.п. Но это уже по факту, если потребуется.
    Ответ написан
    8 комментариев
  • Как правильно отправлять HTTP запросы в цикле?

    artmadiar
    @artmadiar
    Node.js developer
    Посоветовал бы такую конструкцию:
    // выполнить все запросы разом
    Promise.all(servers.map(server=>fetchWrapper(server)))
    // дождаться выполнения всех
    .then((results) => {
    ...
    })
    // минус в том, что если хоть один руганется, то слетит всё. Но как я понял, 404 или 500 это не ошибка
    .catch(err => console.error(err))
    Ответ написан
    Комментировать
  • NodeJS собрать в один файл?

    zo0m
    @zo0m
    full stack developer
    Поглядите webpack, получите на выходе JS файл
    Ответ написан
    1 комментарий
  • Создать объект на основе массива?

    dummyman
    @dummyman
    диссидент-схизматик
    Конечно, можно написать оптимальнее.
    Есть одно негласное правило JS:
    Определяй структуру объекта в конструкторе и никогда не меняй после!

    Еще хуже добавлять объекту свойства в цикле.

    Так будет точно правильнее
    function AObj(arr){
        arr.forEach( v => Object.assign(this, { [v]: objVal } ) );
    }
    var aObj = new AObj([1,2,3]);
    Ответ написан
    7 комментариев
  • Возможно ли Angular 2 использовать со сторонним кодом?

    ozknemoy
    @ozknemoy
    яваскриптист
    лучшее решение это адаптер к ангулару. для threejs например этот https://github.com/amcdnl/ng2-three-demo
    у бутстрапа есть моменты когда его обычная реализация перестает работать под ангуларом. например табы и модалки
    Ответ написан
    Комментировать
  • Как скомпилировать html,js,css в формат apk?

    dkrylov
    @dkrylov
    Есть онлайн сервис. Пробовал компилировать сам, получается отлично ;)

    PhoneGap
    Ответ написан
    Комментировать
  • Angular.js vs React.js в MEAN-стеке с прицелом на оффер?

    В голове полная каша. Примерно 70% указанных выше пунктов неточны или совсем не верны. Стоит взять любой фреймворк(например angular 1.x, как самый простой и быстрый для изучения) и сделать небольшой spa(можно прям из туториала angular-phonegap). Затем к этому туториалу добавьте бэкэнд в виде экспресса. Большая часть вопросов отпадет сама собой. Что касается изучения уже актуальных фреймворков, несмотря на огромную разницу в реализации общие подходы у ng2/react похожи (components, unidirectional data flow, ...) если понимать сами подходы - изучение основ конкретной реализации не должны занять больше недели. Намного больше времени уходит на изучение экосистемы(flow/typescript/webpack и т.д.)
    Ответ написан
    8 комментариев
  • Что такое Redux простыми словами?

    Лучшее объяснение Redux что я видел.
    getinstance.info/articles/react/learning-react-redux
    ba494148d28e422b4c7bd269de5bed09.png
    Ответ написан
    Комментировать
  • На чем писать интернет-магазин PHP или NodeJS или...?

    @BorisKorobkov Куратор тега PHP
    Web developer
    50 тыс. товаров - это мелкий магазин. Пишите на том ЯП, который лучше знаете.
    Или возьмите любой готовый интернет-магазин.
    Ответ написан
    Комментировать
  • Пример архитектуры большого сайта-SPA?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Не совсем по теме..

    Супер "полноценных" нет, но где-то тут же на тостере уже всплывала подобная тема. Из давнего (уже) помню soundcloud клиент - статья, github.

    Выложить в open-source рабочее бизнес-приложение - практически невозможно.
    Выложить какую-то его часть, которая сделана хорошо - уже реальнее, по такому типу можно смотреть на хорошие библиотеки (типа react-virtualized). Но опять же, там "архитектуры" по вашему вопросу нет.
    Выложить в общий доступ хороший "учебный" проект - самое реальное. Поэтому может найдется где хорошее платное учебное приложение? А может и бесплатное...

    p.s. все же упирается в деньги/время. Если даже бизнес скажет - "выкладывай куда хочешь", то выложите ли вы свою поделку? Вряд ли, так как написано оно было в стиле "пожалуйста, выкати фичу побыстрее, если потом будет время - порефакторишь". Поэтому просто предлагаю писать по мере своих возможностей, а учиться продолжать там же где и раньше, так как полноценное крепкое приложение в опен-сорсе, это почти миф.
    Ответ написан
    Комментировать
  • Как обеспечивается согласованность данных между процессами в кластере Node.js?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    В кластерном Node.js вместо разделяемой памяти используется подход разделяемого хранилища данных.
    Обычно эту роль выполняет Redis-кластер поскольку в нем есть механизмы уведомлений (подписок) и возможность асинхронного оповещения узлов кластера.
    Такие вещи, как сессии и данные специфичные для клиента (кэши пользователя) хранятся вне Node.Js процесса, например в том же Redis. Это увеличивает инфраструктурные издержки, но позволяет производить бесшовные рестарты и пережить внезапные остановки машин в кластере.

    Стандартной практикой является применение балансировщика, например того же nginx, включенного как reverse-proxy. Если вам не очень хочется разбираться с сессиями, используйте ip_hash, это снимет головную боль.

    По поводу конкретных вопросов.

    традиционные подходы при разработке ПО для кластера Node.js

    Традиционный кластер представляет собой множество машин, на который запущено множество процессов через https://nodejs.org/api/cluster.html
    Разумеется вместо разделямой памяти вы получаете разделямый сервис. Например с кэшем работаете как с базой и т.д. Почитайте о том, как работает горизонтальное масштабирование.

    Что я должен учитывать разрабатывая бекэнд-приложение для кластера Node.js?

    Учитывайте факт того, что это новая для вас область знаний. Вдобавок очень популярная и очень перегретая мнениями. Рассматривайте Node.js как некий клей между сервисами и другими решениями. Например ресайз картинок лучше делать на C++, поэтому расходы на создание процесса ресайзинга меньше расходов на ресайз реализованный на Node.js.

    Как новый секретный код должен попасть ко всем остальным процессам?

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

    100 позиций этот процесс отдал пользователю в качестве первой страницы ответа, остальные позиции он закешировал

    Смотрите про балансировщик и ip_hash. Но в целом подход довольно плохой. Запрашивайте только нужные 100 товаров. Если вытаскивание данных из базы является проблемой, меняйте базу или ее структуру. Масштабируйте хранилище. В крайнем случае используйте разделяемый кэш (Redis, memcached).

    Кроме того, являются ли мои примеры корректными, практикуется ли описанное кеширование данных в бекэнд-приложениях на Node.js?

    Считается плохой практикой. Кэширование конфигурации или данных используемых повсеместно (например локализация) - норма. Кэширование пользовательских данных легко приводит к утечкам, т.к. вы никогда не знаете, сколько пользователей может обратиться к вашему ресурсу в указанный период времени.
    Ответ написан
    2 комментария
  • Как организовать кэширование API запросов в Angular 2?

    ozknemoy
    @ozknemoy
    яваскриптист
    вот метод из сервиса. key под каждый url свой. есть еще способ как в репо angular-universal. там мудренее но зато можно не повторять запросы которые делал сервер node

    getUsersActivity(forceRefresh?:boolean) {
    return this.getWithCache (
    'user-activity',
    'usersActivity$', forceRefresh)
    };

    getWithCache(url, key, forceRefresh?:boolean):any {
         
           if (!this[key]) {
                this[key] = new ReplaySubject(1)
            }
    
            // If the Subject was NOT subscribed before OR if forceRefresh is requested
            if (!this[key].observers.length || forceRefresh) {
                this.get(url).subscribe(
                    (data) => this[key].next(data),
                    (error) => {
                        this[key].error(error);
                        // Recreate the Observable as after Error we cannot emit data anymore
                        this[key] = new ReplaySubject(1);
                    }
                );
            }
    
            return this[key];
        }
    Ответ написан
    4 комментария
  • Какая правильная организация react-redux приложения?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Не понял о каком наследовании идет речь, а так же последние абзацы, остальное кажется достаточно понятным, поехали.

    Есть меню(не навигация, а просто набор плюшек, к примеру добавить заметку) и сама область где отображается эта заметка.

    Почему этот "набор плюшек" не завязать на "навигации" ?
    То есть "добавить заметку" -> /add, редактировать -> /edit/:id .. ? В любом случае, вы сами пишите о 2х областях, которые есть на всех страницах, значит у вас должен быть родительский компонент, в котором рендерится "шапка (меню это или нет, не важно) + рабочая область"

    Получается, если вы все же за идею с роутером, то примерный код будет таким:
    App.js
    ...
    <HeaderContainer /> // (или тупой <Header />)
    { this.props.children }
    ...


    Внутри children, само собой разумеется - то, что возвращает ваш роутинг, значит, код роутера примерно такой:
    ...
    <Route path='/add' component={AddContainer} />
    <Route path='/edit/:id' component={EditContainer} />
    ...


    Когда я говорю "контейнер", значит я подразумеваю (как и все остальные), что это компонент, который присоединен к redux ( то есть
    connect(mapStateToProps,mapDispatchToProps)(имя_компонента)
    ).

    Таким образом, мы уже решили вашу задачу про: Меню при вызове запускает компонент конкретной задачи. тот отправляет результат на рабочий стол и там оно хранится , так как у нас в меню все сделано с помощью Link из react-router'a, и наша рабочая область изменяется вместе с URL-адресом браузера. Если есть необходимость, все клики по меню "прогонять" через ActionCreators (AC) выполняя какие-то дополнительные действия, или просто "для порядка" - то вы можете использовать внутри ваших AC push из react-router-redux, выглядит это обычно так:
    dispatch(push('/newUrl'))

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

    ---
    И еще. думаю вынести все данные(пункты меню к примеру) в отдельный файл(этакий недосервер)
    Где с ним лучше общаться? использую react-redux

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

    Как уже сказано, в конце не пойму о чем вы пишите... Структура "ответа с сервера" ? или о чем речь? Зачем вам компонент, который будет приводить структуру в нужный вид? и тд.

    ---
    Напоследок:

    Да и мне примеры вовсе не нужны. хочу для начала своих шишек набить.
    НО точно не хочу пару месяцев пилить проект(бесконечно усложняющаяся toDo) а потом понять что привык делать так как не надо.

    Никакого привыкания "делать, как не надо" - не бывает. Вы сначала делаете так, как считаете наилучше возможным, в процессе, что-то подпиливая, потом приходит озарение/совет - вы понимаете, что так будет лучше и делаете дальше. Если программист знает как "сделать лучше", но при этом делает "как привык" то грошь ему цена.
    Ответ написан
    8 комментариев
  • Удаленная работа фултайм для джуниора, правда или вымысел?

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

    В прошлом сам хотел работать только на удаленке. Это же круто - солидная зарплата, особенно если живешь в депрессивном регионе, никаких тебе издержек в виде поездок туда-сюда. Но в процессе всплыло множество подводных камней, что помешало мне закрепиться на удаленной работе. В итоге пошел работать в офис с надеждой когда-нибудь снова вернуться на удаленку)
    Ответ написан
    Комментировать
  • Удаленная работа фултайм для джуниора, правда или вымысел?

    iiiBird
    @iiiBird
    Пока ты спишь - твой конкурент совершенствуется
    договаривайся на то чтобы поработать почасово. в свободное от нынешней работы время. к примеру на 2 недели. чтобы понять все ли устраивает и работодателя и тебя. нормальные работодатели спокойно на такое идут. потому что им самим это нужно тоже. ну и вот так работаешь после своей нынешней работы пару недель, если все нравится - увольняешься и устраиваешься.
    Ответ написан
    Комментировать
  • Где правильно держать логику приложения node.js?

    @vshvydky
    function(req, res, next) {
      res.render('index', { title: 'Express' });
    }

    выносишь это в контроллер
    ./controllers/controllerName.js:
    module.exports.routeName = function(req, res, next) {
      res.render('index', { title: 'Express' });
    };

    В апп подключаешь:
    const controllerName = require('./controllers/controllerName.js');
    router.get('/', controllerName.routeName);
    Ответ написан
    Комментировать
  • Как в Express работает маршрутизация?

    Вы ведь можете вынести это в отдельную функцию, и делать что-то вроде:

    function crud(app, path, controller) {
        app.get(path, controller.get);
        app.post(path, controller.post);
        app.delete(`${path}/:id`, controller.delete);
        app.put(`${path}/:id`, controller.put);    
    }
    
    class NotesController {
        get(req, res) {
            db.listNotes().then(data => res.send(data));
        }
    
        post(req, res) {
            db.createNote(req.body).then(data => res.send(data));
        }
    
        delete(req, res) {
            db.deleteNote(req.params.id).then(data => res.send(data));
        }
    
        put(req, res) {
            db.updateNote(req.params.id).then(data => res.send(data));
        }
    }
    
    crud(app, '/notes', new NotesController);
    crud(app, '/users', new UsersController);
    Ответ написан
    Комментировать
  • Как выделить средний div?

    Если их всегда будет 3, то есть селектор :nth-child(number)
    Это задается к родителю, и этот селектор выберет дочерний див с номером указаным в скобках.
    Ответ написан
    Комментировать