• Как организовать большой single page application?

    norlin
    @norlin
    iframe'ы однозначно плохой вариант – скорее всего, огребёте много неожиданных проблем + технологически это явный костыль.
    Ajax уже давно можно спокойно использовать в любых браузерах: подгружайте нужные модули, вставляйте в нужные места. Модульность внутри кода обеспечивается CommonJS (requirejs) модулями.
    Ответ написан
    1 комментарий
  • Что нужно новичку для изучения MongoDB?

    un1t
    @un1t
    1) Официальный курс, бесплатно онлайн:
    https://university.mongodb.com/courses/M101P/about

    2) Да чего там учить-то, там четыре метода всего
    https://learn.javascript.ru/websockets
    Библиотеку лучше SockJS

    3) Смотря для какой платформы, если для веб то HTML/CSS/JavaScript
    Ответ написан
    Комментировать
  • Что за загадочный шрифт?

    Machinez
    @Machinez
    Рекомендую попробовать "Fira Code"
    https://github.com/tonsky/FiraCode

    oKSDCAY.png
    Ответ написан
    Комментировать
  • Что почитать про анализ данных?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    в общем
    o_chem_govoryat_cifry-big.png
    и соседние с ней книги на Озоне, например та же BigData
    по обработке:
    978-5-97060-330-7_270_369__100.jpg978-5-97060-273-7_new_270_369__100.jpg1490916316c.jpg
    Ответ написан
    3 комментария
  • Какие есть популярные сайты по поиску книг?

    @tychininde
    LiveLib - Скачивать книги нельзя (впрочем, как и на кинопоиске фильмы), но можно смотреть отзывы, рейтинги, цитаты и т.д.
    Ответ написан
    1 комментарий
  • Как показываются проекты на собеседованиях?

    Доказывать обычно никому ничего не требуется.
    Вы должны только внятно объяснить, чем конкретно вы занимались в рамках проекта, какие у него были особенности и сложности, какие интересные решения вы там применили.
    Многие проекты даже и показать-то нельзя из-за того, что они в интранете или под NDA.
    Ответ написан
    Комментировать
  • Как узнать когда был запущен Apache?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Почитать логи?
    Посмотреть время создания pid файла?
    Ответ написан
    Комментировать
  • Как вы называете git репозитории?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    gitlab, разделение проектов на группы, все счастливы.

    Еще вариант - один репозиторий для бэкэнда и фронтэнда (почему бы и нет?)

    сами вынуждены залезать в deploy скрипты

    у вас деплой скрипты вне репозитория хранятся?
    Ответ написан
    4 комментария
  • Webpack vs Gulp, внятно и понятно. Или для чего мне еще один мощный инструмент?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    нужно ли мне использовать webpack с gulp или вовсе, только webpack


    webpack - бандлер, который собирает модули. В модули могут входить как js-ки так и css-ки, шаблоны всякие и т.д. и webpack умеет все это бандлить в один такой жирный бандл (или разделять их по умному или еще чего). И все. На этом его зона ответственности заканчивается. Но что же остается тас раннерам в таком случае?

    Да собственно для простых проектов и ничего. Для проектов посложнее - запуск тестов, различные рутинные действия... словом какие-то таски. Например gulp deploy, gulp build который после бандлинга сделает нам билд всего и все в tar.gz и еще и запустит тесты. Ну и т.д.

    Есть конечно "плагины" для webpack добавляющие функциональность таск раннеров но как по мне это уже перебор.
    Ответ написан
    1 комментарий
  • Нафига вообще и надёжна ли СХД?

    athacker
    @athacker
    СХД, как и многие другие вещи -- это дело такое... Если у вас возникает вопрос "а зачем нужны СХД", то значит, вам она точно не нужна :-)

    В чём профит СХД -- это многократно зарезервированная система. У неё от двух до N контроллеров, каждая дисковая полка подключена минимум двумя путями, каждый диск подключен двумя путями (SAS-диск, конечно же), и на дисках используются механизмы типа T10-PI, гарантирующие целостность данных. Диски имеют пропатченные прошивки, логика работы этой прошивки такова: "лучше мы ложно зафейлим диск, чем случится реальный сбой, а мы его прошлёпаем и потеряем данные".

    Также есть всякие функциональные штуки типа моментальных снапшотов, механизмов репликации (когда у вас два географически разнесённых тома имеют полностью одинаковое содержимое и синхронизируется практически в прямом эфире). СХД умеет tiered storage, когда система реализует кэш наиболее горячих данных на базе SSD-дисков или в RAM.

    Но надо понимать, что сама СХД и расходники для неё будут стоить как крыло от F-35, и СХД нужно брать ТОЛЬКО с соответствующими сервисными контрактами. Без сервисного контракта -- любой сбой будет вам обходиться в копеечку, а время ремонта может исчисляться месяцами. С другой стороны, СХД довольно надёжны, и количество сбоев у них не очень велико. С третьей стороны, вендоры очень любят брать деньги за воздух. Например, у IBM есть такая практика -- если у вас истёк сервисный контракт, а вы его не продлили, а потом у вас случился сбой и вы решили купить сервисный контракт обратно, то вам в стоимость добавят стоимость годичного сервисного контракта в виде штрафа. Т. е. если вы решите спустя N лет приобрести сервисный контракт на 2 года, то по факту заплатите как за 3 года -- "1 год условно" вам выставят в виде штрафа. Этим грешит не только IBM, но и ещё ряд вендоров.

    СХД нужна только для случаев, когда у вас критичные бизнес-процессы, и любая их остановка -- это настолько крупные потери, что стоимость этих потерь превышает стоимость СХД и сервисных контрактов на неё. В остальных случаях я бы рекомендовал самосборные хранилища и организацию процесса работы с ними так, чтобы минимизировать риски и последствия возможных сбоев.

    Для чисто файловых хранилищ подойдёт, например, Windows Storage Spaces в конфигурации с двумя серверами и одной двух-контроллерной корзинкой DAS, подключенной к обоим серверам. Это гораздо дешевле СХД, а многие вещи такая конфигурация умеет -- нет единой точки отказа, умеет RAID на дисках, умеет условно tiered storage и умеет снапшоты средствами VSS на винде.

    На фре тоже сейчас активно пилят High Availability в ctld. Полагаю, включат в 11.0, и можно будет строить отказоустойчивые iSCSI-хранилки на основе FreeBSD+ZVOL+ctld -- отличный вариант под хранение виртуалок. Причём ZFS тоже умеет снапшоты, вот если бы Veeam научился с ними работать, была б ваще чума... :-)
    Ответ написан
    6 комментариев
  • Ошибка при отправке коммита, как исправить?

    BuriK666
    @BuriK666
    Компьютерный псих
    наверное вы хотели
    git commit -a -m "Добавил файл фильтрации"
    -a, --all
    Tell the command to automatically stage files that have been modified and deleted, but new files you have not told Git about are not affected.
    -m , --message=
    Use the given as the commit message. If multiple -m options are given, their values are concatenated as separate paragraphs.
    Ответ написан
    Комментировать
  • Существует ли программируемая система мониторинга?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    zabbix? nagios? monit?
    Ответ написан
    3 комментария
  • Какие цели и задачи у Docker в production?

    DevMan
    @DevMan
    вагрант - готовая виртуалка, в которой все свалено в кучу.
    докер - контейнер изолированных приложений, что позволяет ими оперативно рулить как захочется и при этом экономить на ресурсах.
    Ответ написан
    5 комментариев
  • Объясните простыми словами как работает Redux?

    У вас есть одно большое дерево, в котором хранится все состояние (state) приложения - это хранилище (store).
    Также у вас есть набор редьюсеров (которые скомбинированы в один общий rootReducer) - это функции, который принимают текущее состояние и действие и возвращают новое состояние:
    function someReducer(state = initialState, action) {
      // обычно выглядит как switch 
      // action - простой js-объект
      //              и обязательно имеет строковое поле type
      switch(action.type) {
        // обрабатываем действие с типом SOME_ACTION_NAME
        case 'SOME_ACTION_NAME':
          // берем какие-то данные из экшена и возвращаем новое состояние
          // при этом менять sate нельзя!
          // state.someProperty = action.newStateData <--- НЕТ!
          return { ...state, action.newStateData };
        // Если мы не обрабатываем действие - просто возвращаем старое состояние
        default:
          return state;
      }
    }


    Также есть экшен креаторы (actionCreators) - это функции, которые возвращают действие. затем это действие вещается в хранилище (диспатчится). Типичный пример:
    function someActionCreator(someArg) {
      return {
        type: 'SOME_ACTION_NAME',
        newStateData: someArg + 5, // <-- разная логика
      };
    }


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

    Если мы хотим получить доступ к состоянию в экшен креаторе - воспользуемся thunkMiddleware:
    import thunkMiddleware from 'redux-thunk';
    
    function createStore(initialState) {
      const reducer = combineReducers(reducers);
      const finalCreateStore = applyMiddleware(
        thunkMiddleware // <-- добавляем middleware
      )(defaultCreateStore);
      return finalCreateStore(reducer, initialState);
    }


    Теперь мы можем делать так:
    function someActionCreator(someArg) {
      return (dispatch, getState) => { // <-- возвращаем фукнцию, а не объект!
        const someState = getState().reducerName;
        return {
          type: 'SOME_ACTION_NAME',
          newStateData: someArg + someState, 
        };
      };
    }


    В общем схема выглядит так:

    actionCreator --action--> dispatch --action--> middleware --action--> store --action--> reducer --> newState


    Затем мы берем из react-redux метод connect, который подключает Ваш умный компонент к хранилищу:
    import { connect } from 'react-redux';
    import { bindActionCreators } from 'redux';
    
    class MyComponent extends Component {
      static propTypes = {
        someProp: PropTypes.string.isRequired,
        someFunc: PropTypes.func.isRequired,
      };
    }
    
    // Тут мы берем из глобального состояния необходимую нам часть
    // В ownProps - свойства компонента. Тут могут быть например свойства от роутера
    function mapStateToProps(state, ownProps) {
      return {
        someProp: state.someReducer,
      };
    }
    
    function mapActionsToProps(dispatch) {
      return bindActionCreators ({ // <-- биндим все на disptach для удобства
        someFunc: (someArg) => someActionCreator(someArg + 1),
      }, dispatch);
    }
    
    export default connect(
      mapStateToProps,
      mapActionsToProps
    )(MyComponent);
    Ответ написан
    3 комментария
  • Объясните простыми словами как работает Redux?

    Laiff
    @Laiff
    Front-end developer
    Отличный мануал от самого Дани https://egghead.io/series/getting-started-with-redux
    Документация переведенная на русский https://github.com/rajdee/redux-in-russian там почти все есть.
    Есть еще приятная статья на хабре чисто по базовым принципам, но в некоторых местах не полная habrahabr.ru/post/269831
    Ответ написан
    3 комментария
  • Как вы освоили шаблоны проектирования?

    27cm
    @27cm
    TODO: Написать статус
    Вот вам 12 маленьких задач на 12 паттернов:
    github.com/zfcampus/zendcon-design-patterns

    1. Открываете папку с паттерном.
    2. Читаете README.md с описание задачи.
    3. Открываете exercise.php и пытаетесь решить задачу, применив соответствующий паттерн.
    4. При необходимости вспоминаете теорию: github.com/domnikl/DesignPatternsPHP
    5. Сверяетесь с решением в solution.php.
    Ответ написан
    7 комментариев
  • Go IDE

    @DieselDraft
    Atom + go-plus
    Ответ написан
    Комментировать
  • В каком возрасте вы прочитали GOF паттерны?

    newross
    @newross
    Product owner
    Дело не в возрасте, а в квалификации и опыте.
    Не имея реального опыта решения задач, для которых применяются паттерны, непонятно зачем это все нужно. И соотвественно не интересно читать и вникать. Как только соберешь грабли и начнешь искать способы их обхода - начинай читать.
    Ответ написан
    1 комментарий