• Название таблицы в множественном числе или нет?

    @fynivx
    Software Engineer ( .NET )
    Стандарта нет, вопрос соглашения об именовании в отдельной команде.
    То же самое можно сказать об именовании первичных ключей. Где-то пишут просто Id, а где-то TableNameId.

    Из опыта могу сказать, что DBA чаще называют таблицы в единственном числе, а название первичного ключа начинают с имени таблицы. Девелоперы - наоборот.
    Ответ написан
    Комментировать
  • Как сформировать корректный запрос в связанную таблицу?

    @fynivx
    Software Engineer ( .NET )
    Вот так, например (это T-SQL):
    select P.*
      from Products as P
      join Attribute_values as AV
        on AV.ProductID = P.ID
       and AV.Value = 1
       and AV.AttributeID in (attr1, attr2, attr3)
     group by P.*
    having count(AV.ID) = 3


    Ну, естественно сочетание ProductID/AttributeID в Attribute_values должно быть уникальным.
    Ответ написан
    Комментировать
  • Сколько людей нужно в команде для разработки сайта?

    @fynivx
    Software Engineer ( .NET )
    Сам был в проектах (вэб), и с несколькими десятками девелоперов, и всего с двумя. Тут всё очень сильно зависит от требований.
    Мне кажется, вообще нельзя обойтись без
    1) Девелоперов
    2) Тестеров
    3) Бизнес аналитика
    4) Проджект менеджера
    Ответ написан
    Комментировать
  • Как заменить элемент при наведении?

    @fynivx
    Software Engineer ( .NET )
    Это лучше вообще не реализовывать.
    Такие вещи делаются совсем другим способом - через :hover, :hover > .item и т.д.

    На codepen есть целая куча примеров:
    codepen.io/search/pens?q=menu+css&limit=all&type=t...
    Ответ написан
    Комментировать
  • Как правильно организовать блокировку записей?

    @fynivx
    Software Engineer ( .NET )
    Для таких случаев (обновить список рекордов в зависимости от результатов другой выборки) есть транзакции и SELECT FOR UPDATE (легко гуглится).

    Только я не могу понять, зачем в этом конкретном случае это вообще надо и почему нельзя это сделать одним запросом )

    "UPDATE table SET user_id = ID_user WHERE id = ID_client AND user_id = NULL"

    Вот так например.
    Ответ написан
  • Как подключить dll к клиенту (net Remouting)?

    @fynivx
    Software Engineer ( .NET )
    Трудно сказать, что не так.
    Но в первую очередь - референситься нужно не на DLL а на сам проект, раз уж они в рамках одного солюшена.

    А вообще .NET Remoting - устаревшая технология, сейчас ее никто не использует.
    Либо Web API 2, либо, в особо специфичных случаях, WCF.

    А, да, после исправления ссылок стоит сделать rebuild solution, часто помогает избавиться от некоторых глюков вижлы )
    Ответ написан
  • Проектирование базы данных. Переписка между пользователями?

    @fynivx
    Software Engineer ( .NET )
    Нет, вспомогательная таблица тут не нужна.

    Если нужно, чтобы между юзерами могло проходить несколько разных переписок, стоит создать таблицу Conversations (id, initiator_id, date_started, etc ... ) - не для связи, а как самостоятельную сущность, а в таблицу Messages добавить три референса - sender_id, receiver_id и conversation_id.

    Но если допускается, что сообщения между двумя юзерами - всегда одна переписка, то достаточно просто в Messages добавить sender_id и receiver_id. Это однозначно свяжет каждое сообщение с двумя юзерами.

    А вот если нужна переписка сразу между несколькими юзерами, тогда уже нужна вспомогательная таблица ConversationMembers (user_id, conversation_id), а из Messages нужно убрать receiver_id - сообщение и так будет связано с перепиской, и все ConversationMember'ы смогут его получить.
    Ответ написан
  • Нужно ли для адаптивной верстки использовать dpi в медиа запросе?

    @fynivx
    Software Engineer ( .NET )
    px в css - это, в общем случае, не пиксель на экране.
    Это просто примерно 1/96 дюйма. На обычных экранах это 1 пиксель, на ретина - это даже не целое их число ) (система по умолчанию чаще всего масштабирует разметку под себя).
    На экранах с разрешением меньше стандартного (старые мониторы, телевизоры, мониторы с большой диагональю) пиксель может занимать больше 1/96 дюйма.

    Так что, да, dpi проверять имеет смысл.
    Но я бы стал (честно говоря, я бы вообще не стал) проверять только на то, больше ли оно чем 190 точек на дюйм.
    Этого должно быть более чем достаточно.
    Ответ написан
  • Как отменить :active состояние для родительского пункта меню при клике на дочерний?

    @fynivx
    Software Engineer ( .NET )
    В CSS нет селекторов для указания стиля контейнера относительно контента.
    Боюсь, придется выносить дочерний список из родителя в какой-то общий контейнер.
    Вот так, например:
    <div class = "menu-item-container">
        <div class = "menu-item"> Parent </div>
        <div class = "menu">
            <div class = "menu-item-container">
                <div class = "menu-item"> Child 1 </div>
            </div>
            <div class = "menu-item-container">
                <div class = "menu-item"> Child 2 </div>
            </div>
        </div>
    </div>


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

    А вообще это не будет смотреться так уродливо, если контейнер обозвать menu-item, а сам menu-item - menu-item-text или типа того )
    Можно еще немного оптимизировать и вообще не делать класс для последнего.
    Ответ написан
    Комментировать
  • Почему Windows 8/8.1 не видит планку памяти?

    @fynivx
    Software Engineer ( .NET )

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

    Ответ написан
    Комментировать