Задать вопрос
  • Как хранить характеристики товаров в БД и делать поиск по ним?

    @dimoff66
    Кратко о себе: Я есть
    Характеристики относятся к товарам? То есть у одного товара только один набор характеристик или один товар может приходить и продаваться с разными наборами характеристик, например кроссовки адидас, цвет: Белый, размер: 37 и кроссовки адидас, цвет: Синий, размер: 39. Если второй, более сложный случай, то делаем следующие таблицы

    1) Таблица Properties (id, name, valueType) - здесь просто храним список возможных свойств
    2) Таблица PropertyValues (id, propertyId, value) - здесь храним возможные варианты значений для свойств, у которых не простой тип, то есть не строка, не число, не булево, не дата
    3) CharacteristicsSet (id, productId, name) - здесь будет храниться набор свойств для конкретной позиции товара на складе, name будет составляться автоматически как строка из свойств и их значений, указанных для позиции товара
    4) CharacteristicsValues (chartacteristicSetId, propertyId, valueType, value) - здесь будут храниться значения свойств для конкретной характеристики.

    Например нам пришли партии кроссовок со свойствами цвет: белый, размер: 37й и цвет: синий, размер: 39й. (например 100 и 50 штук соответственно)

    Тогда наши таблицы будут выглядеть следующим образом:

    Properties:
    id: 1, property: 'Цвет', valueType: 'set'
    id: 2, property: 'Размер', valueType: 'number'

    PropertyValues:
    id: 1, propertyId: 1, value: 'Белый'
    id: 2, propertyId: 1, value: 'Красный'
    id: 3, propertyId: 1, value: 'Синий'

    CharacteristicsSet:
    id: 1, productId: 777, name: 'Цвет: белый, размер: 37'
    id: 2, productId: 777, name: 'Цвет: синий, размер: 39'

    CharacteristicsValues
    chartacteristicSetId: 1, propertyId: 1, valueType: set, value: 1(ссылка на белый цвет)
    chartacteristicSetId: 1, propertyId: 2, valueType: number, value: 37
    chartacteristicSetId: 2, propertyId: 1, valueType: set, value: 2(ссылка на синий цвет)
    chartacteristicSetId: 2, propertyId: 2, valueType: number, value: 39

    Ну и в таблице склада можно будет хранить записи в виде:
    productId: 777, characteristicsSetId: 1, quantity: 100
    productId: 777, characteristicsSetId: 2, quantity: 50

    Если же различный набор свойств для одного товара нам не нужен, то все то же самое, но обходимся без таблицы CharacteristicsSet: а в CharacteristicsValues ссылаемся на сам товар. Соответственно весь поиск будет проходить по одной таблице CharacteristicsValues с индексированными полями. Например чтобы найти любые товары с цветом Белый, мы делаем поиск

    select * from CharacteristicsValues where propertyId = 1 and value = 1


    ну и с соответствующим соединениям по таблицам характеристик и(или) товаров
    Ответ написан
    Комментировать
  • Как реализовать "защиту" авторизации по номеру телефона?

    Vamp
    @Vamp
    1. Проверьте синтаксическую корректность номера телефона. Все мобильные номера в РФ начинаются на +79 и имеют длину ровно 11 цифр. Проверку можно даже добавить в веб форму на уровне js. Это нельзя назвать защитой от хулиганов, но она отсеет реальные ошибки и опечатки, облегчив жизнь обычным пользователям.

    2. Пробейте номер по базе россвязи (файл DEF-9xx). Так вы определите номера, на которые 100% не будет доставки. В отличии от проверки синтаксиса, не выдавайте пользователю ответ о некорректном номере. На все номера отвечайте "Одноразовый код отправлен, введите его сюда", но на невалидные номера не отправляйте сообщение.

    3. Добавьте ограничение на количество отправляемых форм в минуту с одного IP и количество отправляемых сообщений на один и тот же номер (независимо от IP).

    4. Оцените сколько может быть отправок форм в день и поставьте общий лимит на все отправки смс за день. Это единственный реальный способ контролировать атаку на сливание бюджета. Да, реальные пользователи пострадают при достижении лимита, но вы не должны доводить до него - настройте мониторинг количества отправляемых смс и алертинг при достижении порога в 90% от лимита, чтобы у вас было время среагировать на атаку и отбить её до полного исчерпания лимита. Либо если это всплеск реальных пользователей (например, неожиданно удачная реакция на рекламу), то у вас будет время скорректировать лимит. Можно рассчитывать лимит как 2 * среднее количество отправок смс за последние Х дней, чтобы не приходилось править его вручную по мере естественного роста посещаемости. Формулу и процент для алертинга, разумеется, подберёте под свои требования. Но можете взять и мои за основу.

    Отдельно хочу рассказать про так называемые прямые мобильные номера. Они выглядят как городские (например, +7495), но в реальности являются мобильными и могут принимать смски. Проверка в пункте 1 не пропускает такие номера и нет никакого способа проверить без отправки смс является ли отдельно взятый городской номер прямым мобильным. Прямых номеров мало по сравнению с настоящими мобильными или настоящими городскими. К тому же у каждого прямого номера есть мобильный аналог, начинающийся на +79, которым пользователь может воспользоваться для регистрации. Поэтому предлагаю просто забить на прямые номера, а в случае жалоб на невозможность регистрации с прямым номером, рассказывать про существование мобильного аналога, который может быть прописан где-то в договоре с оператором на оказание услуг связи или узнать в техподдержке оператора и с которым можно спокойно зарегистрироваться.

    Обязательное требование email'а не усилит схему защиты, так как не проблема наштамповать реальных адресов со скриптом, автоматически прокликивающим подтверждающие ссылки во входящих письмах.

    Альтернативным вариантом является аренда входящего номера. В этом случае не вы отправляете сообщения пользователям, а они вам. Обычно за входящий номер берут фиксированную плату в месяц независимо от количества смс, так что не придётся в принципе волноваться за бюджет. Но тогда у вас будут в пролёте пользователи с отключенной услугой отправки смс. А таких немало, могу сказать. Благодаря интернет-мессенджерам.
    Ответ написан
    2 комментария
  • Как часто взаимодействовать с заказчиком в UX/UI?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Работать надо в том темпе и виде в каком будет достаточно удобно обеим сторонам. Все другие варианты болезненны
    Ответ написан
    Комментировать
  • Какой язык программирование yчить новичкy?

    approximate_solution
    @approximate_solution
    JS Developer. Angular\React\Vue\Ember
    Мой вопрос в том какой язык программирование yчить для понимания что такое программирования

    Любой, что бы понять что такое программирование - можно просто прочитать википедию, если вы хотите хардкора и +\- отсутствия конкуренции в будущем уже на позиции мидл - C, C++. Если хотите быстро войти на рынок труда в будущем - Python, JS, PHP.

    Сегодня я yвидел в одном паблике спор на счет языков программирования, какой yчить новичкy, но в основном там был спор двyх программистов. Один говорил что для новичка надо yчить python, а дрyгой что си.

    Это сразу показывают что люди деграданты. Язык программирования - это инструмент, а не истина в первой инстанции по уровню крутости человека. Поэтому старперам которые Вам скажут что Вы не тру, если учите первым языком Питон, а не C++ - - можно сразу их лесом слать.

    Я на 40-60 процентов знаю python, но изyчая темy алгоритмов и стрyктyр данных, дискретной математики и так далее мне кажется что я идy кyда то не тyда, хотелось бы yслышать мнение людей которой в этой теме давно, с чего они начинали, что бы посоветовали, какие языки и так далее.

    Зачем изучать язык ради изучения языка? Вы хоть один проект сделали на python, который не стыдно будет показать на github?

    Не забивайте себе голову компостом, найдите сферу которая Вам нравится - и у Вас сразу отпадет надобность выбирать язык.
    Ответ написан
    1 комментарий
  • Кто отвечает за поиск проектов в it фирме?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Менеджер по продажам IT-услуг.
    Ответ написан
    4 комментария
  • HTML + CSS - законченный сайт?

    ArsenyMatytsyn
    @ArsenyMatytsyn Куратор тега CSS
    Руководитель frontend направления, предприниматель
    Если тебе не нужен интерактив и сайт несет исключительно информационную нагрузку, работает потому что он просто работает → да. Абсолютно нет смысла напихивать в проект то, чего там быть не должно.

    Более того, возьми на заметку генераторы статических сайтов типа Jekyll. На них такое удобно собирать.

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

    @dmshar
    Очень интересный кейс. И не простой.
    Но, во-первых, что-то у вас не так в организации проекта, если любой может лЁгко снести свой код за два дня до дедлайна. А где копии, а где контроль удаления?
    Есть над чем поработать даже без относительно к ситуации, которую мы рассматриваем.

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

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

    Пока писал - понял, что на самом деле тут таки таки два разных решения.

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

    Второе - "удалил код". После такого - решение однозначно. Прощание без финансовой компенсации, без сожаления и без "простите меня пожалуйста".

    Ну вот как-то так.
    Удачи вам в решении проблемы.
    Ответ написан
    1 комментарий
  • В чём отличие методологии от парадигмы?

    Maksclub
    @Maksclub
    maksfedorov.ru
    абстрактные термины тянут абстрактные определения в угоду контекстов и ситуации

    парадигма = уклад
    методология = способ

    и живите счастливо
    Ответ написан
    1 комментарий
  • Определение номера сотового телефона посетителя сайта, легально ли, не вызывает ли это негатив?

    @Drno
    Чтоб такие маркетологи и сборщики в аду сгорели, твари...
    ВОт тебе оценка Итшника, как обычного пользователя
    Благо есть браузеры на тел, блокирующие эту херню
    Ответ написан
    Комментировать
  • Какие шансы устроиться программистом 1С в Москве?

    @Dementor
    программист, архитектор, аналитик
    Программисты 1С - это не американские актеры, которые со всех штатов едут в Голливуд в надежде, что их заметят и дадут работу! У нас намного больше возможностей.

    Работаете во франче? Отлично, как минимум во франч вас уже возьмут.

    Не знаю как в Москве, но в Киеве есть штатные ставки на заводах, где можно печатную форму дня два пилить, а остальное время общаться с пользователями, которые что-то не то нажали - работа "не бей лежачего", а платят как за настоящего разработчика. Верно заметил Saboteur - всегда будут те, кого вы будут поражать ваши познания не зависимо от их объема.

    Но я рекомендую обратить внимание на фриланс. Обычно постоянные клиенты франчей начинают предлагать подработку напрямую за наличку, которая меньше чем они платят франчу, но больше чем 30%, которыми франч делится с сотрудниками. Или можно брать подработки в интернете. В какой-то момент мои вечерние "шабашки" (по всему СНГ) стали приносить больше денег чем работа во франче и я полностью ушел на самозанятость. А уже на фрилансе не имеет значения - ты за Уралом, в Москве, на Бали или в открытом космосе - главное иметь стабильный интернет. Сейчас во время всеобщего карантина тема работы через интернет только сильнее развивается.
    Ответ написан
    Комментировать
  • Какие шансы устроиться программистом 1С в Москве?

    Zoominger
    @Zoominger
    System Integrator
    смотря на 6-ти значные цифры в вакансиях на хх.ру:)

    Распространённая ошибка среди:
    Мне 20 лет,


    По теме - на такую з/п шансов 0. Начинайте с джуна с соответствующей зарплатой. 1С, кстати, хорошая сфера.
    Ответ написан
    Комментировать
  • Почему при открытии файлов Excel открывается пустая книга?

    uraaa
    @uraaa Автор вопроса
    Web-разработчик, системный администратор
    Нашел решение: мешала надстройка MySQL.
    Файл - Параметры - Надстройки - в группе активных надстроек выбрать MySQL for Excel - внизу, там где Управление, выбрать Надстройки COM, нажать Перейти - Выделить MySQL for Excel и нажать Удалить
    Ответ написан
    2 комментария
  • Что такое SOLID и как его можно использовать в веб-разработке?

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

    Посмотреть детальнее, что за правила и как их выполнять можно в таком большом количестве мест в интернете что перепечатывание сюда будет порицаемо в любом приличном обществе.

    Один момент - не все принципы одинаково полезны и применимы в веб-разработке, но знать и понимать их все в любом случае на пользу.
    Ответ написан
    4 комментария
  • VR на Linux бывает?

    Zoominger
    @Zoominger
    System Integrator
    Бывает, только не работает.
    Увы.
    Ответ написан
    4 комментария
  • Разработка web-сайта для компании. Что выбрать?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Берите 1С.
    Второй вариант SharePoint
    Третье это самописная фигня которую предлагали выше.
    Ответ написан
    Комментировать
  • Как начать работать без "фонового шума"?

    delphinpro
    @delphinpro
    frontend developer
    Выдумали себе проблему. Если вы хотите избавиться от фонового шума, — вы от него избавляетесь. Если избавиться не получается, — значит вы не хотите от него избавляться. Всё остальное — это отмазки перед самим собой.
    Ответ написан
    9 комментариев
  • Можно ли быть подростку фрилансером?

    opium
    @opium
    Просто люблю качественно работать
    У нас свободная страна можно быть хоть геем хоть фрилансеров
    Ответ написан
    1 комментарий
  • Как стать олимпиадником с нуля?

    twobomb
    @twobomb
    Решать, решать и еще раз решать. Нужно начинать с простых задача, не нужно лезть в уровень задач университетских олимпиадников. Поищи задачи какого нибудь первого тура школьной олимпиады, где самое сложное будет "напишите программу для расчета факториала". Важный момент, нужно догонять самому. Не нужно лезть в интернет и искать готовый алгоритм и пытаться разбирать его, сначала напиши свой, какой бы то ни было алгоритм, чтобы он работал, а потом уже можешь ознакомится как это делают другие. Хотя наверное всетаки, рекомендую начать еще с дискретной математики, очень важная штука, чтобы понимать всякие там графы и другие структуры, перестановки и прочее.
    Ответ написан
    8 комментариев