• Spotlight на маке перестал искать по программам и контенту в доках. Что делать?

    @a091862
    Мне помогло это:
    * В командной строке вводим команду:
sudo mdutil -i on /
    По сути это такая же переиндексация, но чем то отличается т.к стандартный метод переиндексации мне не помог
    Ответ написан
    Комментировать
  • Как поределить что блок заехал за край окна браузера и в какую сторону?

    @GitJedi
    Front-end developer, mentor
    Обычно, элементы вылазят только справа. Прокрути горизонтальный скролбар до упора вправо, выбери стрелку выбора элемента ctrl+shift+c (Chrome) и веди по правому краю по белому полю. Твой хулиган покажется. Если не помогает, отрывай вкладку с Элементами и удаляй их по очереди, смотри когда пропадет скролл. там уже визуально поймешь
    Ответ написан
    Комментировать
  • Как объединить 2 массива в один?

    hzzzzl
    @hzzzzl
    arrB.map(cl => {
    	const reports = cl.reports.filter(r => r.date === '2019-09-05')
    	return reports.length 
    		? {client: cl.client, reports: { date: reports[0].date, id: reports[0].id } }
    		: {client: cl.client, reports: null}
    })
    Ответ написан
    1 комментарий
  • Как из массива извлечь данные по месяцам, добавив заглушки для отсутствующих месяцев?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const newArr = arr.reduce((acc, n) => (
      acc[n.month - 1] = n.sum,
      acc
    ), Array(12).fill(''));

    или

    const newArr = Array.from({ length: 12 }, function(_, i) {
      return this[-~i] || '';
    }, Object.fromEntries(arr.map(n => [ n.month, n.sum ])));

    или

    const newArr = [];
    for (let i = 0, j = 0; i < 12; i++) {
      newArr.push((arr[j] || {}).month === i + 1 ? arr[j++].sum : '');
    }
    Ответ написан
    Комментировать
  • Как из массива извлечь данные по месяцам, добавив заглушки для отсутствующих месяцев?

    hzzzzl
    @hzzzzl
    // data = массив такого вида
    Array(12).fill().map((item, index) => {
    	const month = data.find(m => m.month === index + 1)
    	return month ? month.sum : ''
    })


    ну или как-то по старинке

    // data = массив такого вида
    result = Array(12).fill('')
    
    for(let i = 0; i < data.length; i++) {
    	result[data[i].month - 1] = data[i].sum
    }
    Ответ написан
    1 комментарий
  • Настройка Sequelize. Какое количество соединений?

    Melkij
    @Melkij
    PostgreSQL DBA
    Настраиваете мониторинг, запускаете проект. Правите настройки или сам проект по ситуации.
    Знаю системы где пяти коннектов базы хватает на сотни транзакций в секунду. Знаю системы где полсотни коннектов постоянно заняты непойми чем.
    Ответ написан
    Комментировать
  • Настройка Sequelize. Какое количество соединений?

    @Azperin
    Дилетант
    "Активные пользователи" это слишком обобщенное название, что конкретно то на этом сервисе ? Чат, статический сайт, биржа валют, реалтайм аукцион ?
    Могу предложить такой ответ
    pool.max = 1;
    while(notGoodEnough) {
     pool.max++;
    }

    Вобщем, на такое мизерное количество юзеров хватит и 1 соединения без пула.
    Ответ написан
    Комментировать
  • Как отсортировать массив адресов по возрастанию квартиры?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const sorted = (arr, key) => arr
      .map(n => [ n, key(n) ])
      .sort((a, b) => a[1] - b[1])
      .map(n => n[0]);
    
    
    // если элементы с отсутствующим номером квартиры должны оказаться
    // в начале, а не в конце, то вместо Infinity надо поставить 0
    const sortedArr = sorted(arr, n => +(n.address.match(/кв.\s*(\d+)/) || [ Infinity ]).pop());
    Ответ написан
    Комментировать
  • Как правильно изменить объект?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Object.values(tasks.reduce((acc, { user: { id, name }, ...n }) => {
      (acc[id] = acc[id] || { user: { id, name, tasks: [] } }).user.tasks.push(n);
      return acc;
    }, {}))
    Ответ написан
    3 комментария
  • Как увеличить количество Socket.IO подключений?

    Sanasol
    @Sanasol
    нельзя просто так взять и загуглить ошибку
    При большем объеме нода падает...


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

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    1. Используйте const вместо let для определения переменных которые не переопределяются в коде. Это помогает снизить когнитивную нагрузку с человека читающего код и негласный стандарт в React разработке.

    2. Такие вещи как globalStyles и конфигурацию store лучше вынести в отдельные файлы. Они могут со временем хорошо разрастись.
    По поводу globalStyles, вы вообще можете вынести их в отдельный css файл.

    3. Вместо:
    {
      isModal
      ? <Route path="/auth" component={AuthPopup} />
      : null
    }

    лучше:
    {isModal && <Route path="/auth" component={AuthPopup} />}


    4. Вместо:
    function mapDispatchToProps(dispatch) {
        return {
            autoLogin: () => dispatch(autoLogin()),
            getBrowser: () => dispatch(getBrowser()),
            getMedia: () => dispatch(getMedia())
        }
    }


    лучше:
    const mapDispatchToProps = {
      autoLogin,
      getBrowser,
      getMedia,
    };


    5. Точки с запятыми в конце то есть, то нет. Определитесь и приведите код к одному виду.

    6.
    & label {}
    & input {}
    & span {}

    Это не очень хороший подход. Во-первых ваши стили не изолированные, что может приводить к неожиданным результатам. Во-вторых у вас очень много дублирования стилей. Определите Input и Label как базовые компоненты и используйте в разных местах, то же с остальным если есть.

    7. Почему папка со страницами называется Containers? Дань бойлерплейтам?

    8. Использование trailing comma является хорошей практикой.

    9.
    import {combineReducers} from 'redux';
    import photoReducer from './photoReducer';
    import authReducer from './authReducer';
    import globalReducer from './globalReducer';
    
    export default combineReducers({
        photoReducer, authReducer, globalReducer
    })


    Все таки приятней работать с хранилищем в котором ключи не имеют в названии слова reducer:
    import {combineReducers} from 'redux';
    import photo from './photoReducer';
    import auth from './authReducer';
    import global from './globalReducer';
    
    export default combineReducers({
      photo, 
      auth,
      global,
    });


    10. Забудьте вообще, что в языке есть возможность использовать вложенный тернарный оператор:
    return e === 'invalid-email' ? 'Неверно указан e-mail'
        : e === 'user-not-found' ? 'Указанный e-mail на найден'
        : e === 'wrong-password' ? 'Неверный пароль'
        : e === 'email-already-in-use' ? 'Указанный e-mail уже используется'
        : e === 'network-request-failed' ? 'Нет подключения к интернету'
        : e === 'operation-not-allowed' ? 'Произошла ошибка, попробуйте снова'
        : e === 'popup-closed-by-user' ? 'Окно авторизации закрыто пользователем'
        : e === 'account-exists-with-different-credential' ? 'Аккаунт уже существует с другими данными, используйте другой способ авторизации'
        : e

    Это одна из самых худших практик в JavaScript разработке. Тут лучше подойдет конструкция switch case

    11. Константы actionTypes лучше вынести в папку constants и разложить по разным файлам, иначе со временем у вас там будет свалка.

    12. Вместо:
    import {SET_ACTIVE, CHANGE_VALUE, SET_DEFAULT, UPLOAD, UPDATE_IMAGE, SET_IMAGE_ERROR, SET_LIKE, SET_COMMENT, ADD_ARTICLE_SUCCESS, FETCH_ARTICLES_START, FETCH_ARTICLES_SUCCESS, FETCH_ARTICLES_ERROR} from '../actions/actionTypes';

    Лучше:
    import {
      SET_ACTIVE,
      CHANGE_VALUE,
      SET_DEFAULT, UPLOAD,  
      UPDATE_IMAGE,
      SET_IMAGE_ERROR,
      SET_LIKE,
      SET_COMMENT,
      ADD_ARTICLE_SUCCESS,
      FETCH_ARTICLES_START,
      FETCH_ARTICLES_SUCCESS,
      FETCH_ARTICLES_ERROR,
    } from '../actions/actionTypes';


    13. Попробуйте внедрить библиотеку reselect. И для получения значения из store вместо записи вида:
    function mapStateToProps(state) {
        return {
            browser: state.globalReducer.browser
        }
    }


    использовать селектор:
    const mapStateToProps = state => ({
      browser: browserSelector(state),
    });
    Ответ написан
    12 комментариев
  • Как правильно поступать в таком случае?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Условие при выборке из БД нужно поставить. (если...., то..., иначе...)
    Проверять разницу временных меток (задачи и текущего).
    Ответ написан
    Комментировать
  • Как получить значения из массива, которые содержат часть строки?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Можно использовать метод массива filter()

    const filteredArray = array.filter( el => el.id.substring(0,3) === '051' )
    Ответ написан
    1 комментарий
  • Как объединить 2 массива в один?

    BuriK666
    @BuriK666
    Компьютерный псих
    dates.map((date, i) => {
      return [date, sum[i]]
    })
    Ответ написан
    1 комментарий
  • Как изменить значение массива в объекте?

    @mShpakov
    let newArr = clients.map((currentValue) => {
    currentValue.weekDay = currentValue.weekDay.toLowerCase();
              return currentValue;
            })

    Если правильно понял вас.
    Ответ написан
    1 комментарий