• Не банальный небольшой Angular проект для портфолио - идеи?

    Сделайте проект на Angular для портфолио, который генерирует \ собирает \ предлагает проекты на Angular для портфолио
    Ответ написан
    2 комментария
  • Почему практически все демо делаются не Plug and Play?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега Веб-разработка
    Решить задачу в ограниченных условиях намного проще. Упомянутые вами доработки обычно дадут 20% результата и потребуют 80% времени. Зачем авторам это время тратить, какую пользу им это принесёт?

    А вообще, на вопрос "почему какие-то люди что-то сделали так, а не иначе" могут ответить только эти самые люди. Нет какого-то кодекса кодпенера, по которому запрещено делать полноценные законченные решения. Как и нет кодекса, обязывающего их делать.
    Мы вот вам приводим гипотезы, а вы на них отвечаете "не, ну можно же было сделать". В чём смысл этого обсуждения?

    Не говоря уже о том, что утверждение про "процентов 90 из них либо вообще не применимы, либо нужно все править" явно взято с потолка (как и мои проценты, разумеется, но это хотя бы известный принцип Парето). Вы ведь не проводили исследования на эту тему? Может, это конкретные авторы, которых вы смотрели или конкретные типы задач, а остальные 90% решений как раз образцовые? Или соотношение 50/50?
    Ответ написан
    5 комментариев
  • Почему практически все демо делаются не Plug and Play?

    DevMan
    @DevMan
    да потому что это пример/proof of concept, а не законченное/готовое решение.
    кто заморачивается готовым решением, те не пользуются песочницами.
    Ответ написан
  • Как решить проблему неправильного спауна?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    не знаю что там раньше было, но сейчас по коду, каждый цикл физики (странно почему не в Update сделали)
    у вас проверяется не задело ли лучом.
    так как циклов пару десятков в секунду - ничего удивительного что срабатывает условие несколько раз почти подряд))

    может там раньше иначе устроен таймер был.
    или в настроиках проекта fixedDeltaTime зачем-то меняли на какое то довольно большое значение (что по сути не стоило делать)
    Ответ написан
    Комментировать
  • Зачем собирать проект на сервере?

    Stalker_RED
    @Stalker_RED
    У софта, библиотек, и прочих зависимостей бывают версии. Еще и у железа отличия бывают.

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

    Собрав у себя локально и перелив на сервер, у которого отличается окружение - рискуете получить кучу глюков, и чем больше оно отличается, тем сильнее рискуете.
    Ответ написан
    7 комментариев
  • Какие подводные камни есть при участии в программе поощрения авторов на Хабре?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Не будет стоить овчинка выделки, ей-Богу.

    Хабр - это не "экспертное ИТ-сообщество", как возможно думают некоторые. Это группа людей, имеющих примерно одинаковые мнения по некоторым вопросам, которая внутри своей "тусовки" поддерживает очень четкую, очень жесткую и очень строгую систему - есть некие критерии, о которых ты должен писать так, а не иначе. Если напишешь иначе - тебя сразу же всячески уничтожат в пределах всех этих "карм", "репутаций" и прочего мусора. Есть некий набор положений, типа "А хорошо, Б плохо, делать В хорошо, делать Г плохо". От них отступать нельзя.

    Как выяснить, что такое А,Б,В...? Почитайте интересующие Вас хабы, особенно топовые статьи, где много комментов - и тренд на то, что есть А,Б,В - сам собой выяснится. Если он совпадет с Вашими убеждениями - все хорошо, если нет - тут либо насиловать себя, либо забить.

    Я этот тренд раскусил не сразу но довольно быстро и самовыпилился с хабра, попросив только тостер не трогать. А с хабра, все что относилось ко мне, было выпилено.
    Ответ написан
  • Как лучше реализовать?

    kawabanga
    @kawabanga
    Вы сами озвучили недостаток.
    (и каждый вызов функции происходит insertво вторую таблицу)

    К чему он может приводить? Да много к чему. К примеру, у вас приложение, которое работает с финансами. Вы загрузили 15 элементов из 70 и произошел сбой. Куда копать? что делать?
    Решение - формировать одним запросом и сразу посылать его.

    Читайте про транзакции, оберните вашу функцию в транзакцию.
    Ответ написан
    2 комментария
  • Оценка своего уровня. Как улучшить код?

    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 комментариев
  • Какая ошибка в коде (C#)?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    А где сама переменная s?
    да!..
    .. учитывая предыдущий вопрос - а в чем собственно трудности? (см скрин)
    TUeYmph.png

    ps есть ощущение, что вы используете подход, как в п.4 (по ссылке)
    Ответ написан
    Комментировать
  • Почему не могу оставить комментарий под статьей?

    BuriK666
    @BuriK666
    Компьютерный псих
    Можно написать им на support@habr.com
    Ответ написан
    Комментировать
  • Как делаются вариативные товары?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    цена = артикул, никак иначе

    для атрибутов - faceted search
    Ответ написан
    Комментировать
  • Как проверить строку через регулярные выражению?

    lidacriss
    @lidacriss
    wtf
    Попробуйте такую регулярку
    ^$|^[а-яёА-ЯЁ\s]+$|^[а-яёА-ЯЁ\s]+(?=[,;])[,;][а-яёА-ЯЁ\s]+$

    https://regex101.com/r/zBR9Ki/1
    https://regex101.com/r/zBR9Ki/2
    Ответ написан
    2 комментария
  • Как создать онлайн калькулятор?

    @Narts
    JS и мат. вычисления не сильно дружат друг с другом
    Ответ написан
  • Как создать онлайн калькулятор?

    Shultc
    @Shultc
    RnD Developer
    PHP вам понадобиться, чтобы иметь хоть какой-то фитбек. Количество посещений, история вычислений, итд. Это всё должно через php (например) отправляться в базу данных. Без всего этого калькулятор можно сделать хоть на чистом JavaScript'е. Или можете смотреть удобные вам фреймворки, в зависимости от того, что вам нужно.
    Ответ написан
  • Когда в БД нужно делать "По умолчанию: Null", а когда "По умолчанию: НЕТ"?

    Stalker_RED
    @Stalker_RED
    Конечно, может оказаться так, что базу проектировали невнимательно, в спешке или еще как-то криво, но чаще оказывается, что этот "беспорядок" для чего-то нужен.

    Представим, что по требованиям бизнес-логики в табличке "user" поле "дата регистрации" обязательно должно быть заполнена. Если ее нет - это ошибка. Ставим not null.

    И "email" обязательный - тоже not null.

    В этой-же таблице поле "phone" необязательное - значит придется разрешить null.
    Ответ написан
    Комментировать
  • Как избавится от зависших уведомлений?

    pragmatik
    @pragmatik Куратор тега Тостер
    В большинстве случаев помогает нажатие кнопки "Прочитать всё" в правом верхнем углу страницы https://toster.ru/my/tracker
    В данном случае она не сработала, поскольку ее работа блокировалась на стороне клиента.
    Ответ написан
    Комментировать
  • Как избавится от зависших уведомлений?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Написать в поддержку Тостера.
    https://toster.ru/feedback
    Ответ написан
    Комментировать
  • Как сделать insert в базу при выполнении определенного условия?

    @kttotto
    пофиг на чем писать
    Если правильно, то никак. Это логика предметной области, бд не должна этим заниматься. Если клиент заказал бутылку воды, а через пять мин решил, что одной мало и решил заказать еще одну, то по Вашей логике, заказ не будет принят. Такие вещи решаются на уровне колцентров.
    Если же Вы хотите защититься от спама заказов, то это всеравно не решатся уровнем бд. Это настройки Ваших серверов и работников бэкенда, по ip или по логину ограничивается количество заказов в минуту.
    Ответ написан
    Комментировать
  • Как сделать insert в базу при выполнении определенного условия?

    idShura
    @idShura
    Можно делать проверку триггером перед insert
    Ответ написан
    Комментировать