• Идентифицирующая или неидентифицирующая связь?

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

    Хороший пример - сущность "элемент заказа" (OrderItem). Не может быть элемента заказа без самого заказа. Поэтому идентифицирующая связь из отношения "заказ" (Order) отлично тут подойдет. Если у заказа первичный ключ Id, то первичный ключом OrderItem будет, к примеру, такая пара: (OrderId, Number), где OrderId - внешний ключ в таблицу заказов, добавленный идентифицирующей связью, а Number - номер элемента заказа (строки в чеке, если так понятнее), позволяющий иметь несколько заказанных товаров в одном заказе.

    Неидентифицирующая связь, соответственно, НЕ добавляет колонки внешнего ключа в первичный ключ. Соответственно, значение внешнего ключа при неидентифицирующей связи может быть как NULL, так и NOT NULL.
    Ответ написан
    1 комментарий
  • Как решить эту задачу си?

    bingo347
    @bingo347
    Crazy on performance...
    Для начала нужно понимание, что памятью на стеке управляет компилятор, и для каждой функции эта память имеет фиксированный размер. А все потому, что в ассемблере, в который скомпилится наш C код нет переменных, вместо них компилятор просто проставит смещения от указателя на конец стека на старте функции. Именно по этому компилятору важно знать размеры всех сущностей на стеке.
    Изменить этот размер в рантайме нельзя, поэтому единственный способ решить эту задачу с массивом символов на стеке - выделить массив с достаточным запасом памяти, чтоб хватило и на исходную строку и на вставляемую подстроку.
    А вот память в куче динамическая. И все аллокации работают именно с ней. И главное мы ее можем выделять в рантайме по мере надобности.
    Учитывая, что массивы в C - это по сути сахар над указателями, то смело можете заявлять своему преподу, что указатель на несколько подряд идущих char в куче и массив char - это одно и то же.

    Вообще, по нормальному я бы объявил структуру вроде такой:
    typedef struct {
    	char* buffer;
    	size_t capacity;
    	size_t length;
    } string;
    и дальше бы работал с ней, заодно разбив код на небольшие функции. Но преподы программирования народ от разработки далекий, и кроме своих лабараторок в программировании не бум-бум в большинстве своем. А в комментах к вопросу было про то, что структуры нельзя...
    Поэтому решение в лоб и в стиле универских лаб:
    #include <stdio.h>
    #include <stdlib.h>
    
    int main() {
    	size_t capacity = 1 << 4; // на старте буду выделять 16 байт
    	size_t length = 0; // строка пока пустая, поэтому 0
    	char* str = malloc(capacity);
    	if (str == NULL) { // с памятью в куче может и облом быть
    		return 1; // вернем код ошибки
    	}
    	printf("Write string and press ENTER to continue:\n");
    	while(1) { // читать символы будем до скончания веков ))
    		char c = getchar();
    		if(c == 13 || c == 10) break; // ну или пока юзер не нажмет ентер
    		length++; // увеличим счетчик символов
    		if(length > capacity) { // если новый символ не влазит в выделеную память
    			capacity <<= 1; // то удвоим ее
    			char* new_str = realloc(str, capacity); // и перевыделим
    			if (new_str == NULL) { // опять чекнем, вдруг облом
    				free(str); // ресурсы надо освобождать
    				return 1; // вернем код ошибки
    			}
    			str = new_str; // в str теперь невалидный указатель, можем его заменить
    		}
    		str[length - 1] = c; // запомним считанный символ
    	}
    	// Здесь решение с вставкой подстроки
    	// с учетом того, что у нас строка str
    	// с длиной length и выделеной памятью под нее capacity
    	free(str); // ресурсы надо освобождать
    	return 0; // вернем код успешного завершения
    }
    с самой вставкой подстроки надеюсь справитесь?
    Ответ написан
    6 комментариев
  • Сколько можно поставить оперативы в ноут?

    Zoominger
    @Zoominger Куратор тега Ноутбуки
    System Integrator
    Сколько лучше поставить 4 или 8?

    8 же.

    какой можно купить дешевый комп, чтобы на нем учиться работать с linux?

    Любой комп, но не ноут. На ноутах совсем жизни в Linux нет. Поставьте лучше в виртуалке, это гораздо удобнее и проще.
    Ответ написан
    Комментировать
  • Как на vba создать и инициализировать такой обьект?

    joeberetta
    @joeberetta
    Читай: https://epdf.pub/google-for-dummies.html
    Не так сложно гуглится, ну ладно

    Вот вам инструмент (гитхаб) для работы с таким "объектом" (называется JSON).

    Вот тут также решалась проблема
    Ответ написан
    4 комментария
  • Как загрузить базу данных из файла MS Sql?

    BojackHorseman
    @BojackHorseman Куратор тега SQL
    ...в творческом отпуске...
    sqlcmd -S <server> -i C:\<your file here>.sql
    if you're using a SQL instance the syntax is:
    sqlcmd -S <server>\instance.
    а в студии открыть и выполнить.

    или restore a backup
    Ответ написан
    3 комментария
  • Почему не изменяется поле id в state react?

    hzzzzl
    @hzzzzl
    не надо писать пропсы в стейт, лучше работать сразу с этим this.props.....number там где надо

    этот компонент Worker каждый раз создается новый, или создается только один раз, и потом по обновлению url надо в нем менять контент? конструктор же только 1 раз выполняется, то есть один раз выставляется this.state.id из пропсов, а потом уже нет

    ну или так
    https://ru.reactjs.org/docs/react-component.html#c...
    Также он подходит для выполнения таких сетевых запросов, которые выполняются на основании результата сравнения текущих пропсов с предыдущими. Если пропсы не изменились, новый запрос может и не требоваться.......... итд


    ---
    там же
    https://ru.reactjs.org/docs/react-component.html#c...
    Примечание:
    Не копируйте пропсы в состояние! Это распространённая ошибка:
    ...
    Ответ написан
    1 комментарий
  • Стратегия разбиения верстки на блоки?

    @float64
    Для разбиения верстки на блоки есть специальная методология которая называется Atomic Design, вот описание основных ее компонентов: atomicdesign.bradfrost.com/chapter-2

    Если в одной картинке - то выглядит это так: 5d16e97162677234688043.png

    Для работы по методологии Atomic Design существует проект Pattern Lab: https://patternlab.io
    Это вроде как и фреймворк и набор инструментов и static site generator, короче целая экосистема для тех кто делает верстку по принципам Atomic Design.

    Принципы Atomic Design не зависят от используемого языка или фреймворка.

    Мне в этом подходе больше всего понравилась определенность, которая дает возможность сделать четкую декомпозицию работ по верстке: сколько страниц, сколько компонентов, сколько блоков, что реюзабельно а что нет, что отдельно верстаем, из каких кусочков строим UI.

    Из минусов - придется с нуля въехать в новую методологию, порог вхождения таки есть, плюс надо будет найти инструменты под те технологии на которых вы строите UI.
    Ответ написан
    Комментировать
  • Стратегия разбиения верстки на блоки?

    Hyubert
    @Hyubert
    JS
    Подскажите как вы разбиваете вашу верстку на блоки
    Вот возьмем, например, header.

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

    Предположим внутри блока есть кнопка, которая есть и в других блоках.

    Ну так и делайте ее отдельным блоком, например с классом .btn или .button и у нее будут свои модификаторы. Чаще всего у блока кнопки их много. Пример как делаю я:
    .btn {}
    /* style */
    .btn--primary {}
    .btn--secondary {}
    /* size */
    .btn--sm {}
    .btn--md {}
    .btn--xl {}
    /* special */
    .btn--link {}


    Маргины мы прописываем в стилях к этой кнопке и добавляем соответствующий модификатор?

    Нет, отступы и кастомные стили (очень специфичные) мы задаем в зависимости от родительского блока в котором находиться кнопка, в данном случае это хедер. Мы может сделать так:

    .header .btn {}
    или например такой класс сделать
    .header__btn {}

    Я предпочитаю вложенность (но не больше 1 уровня)

    А как эти кусочки потом собрать? С помощью pug includes или gulp


    Ну тут уже по разному, как вам удобней и зависит от конкретного инструмента, если говорить о pug, то я делал так
    1. объявление миксина в отдельном файле
    mixin button(caption)
      button.button&attributes(attributes)!= caption

    2. Подключал в глобальный скоуп через шаблоны (include)
    3. Пользовался миксином в любом места.

    Предположим еще в этом блоке есть меню, которое больше нигде не используется, его мы уже верстаем не отдельно, а вместе?


    Сделайте отдельным компонентом - не пожалеете. Во первых держать весь код в порядке (в одном понятном виде) удобно. Во вторых - если будет нужно расширение проекта или почти такое же меню но в другом месте, это вам пригодиться.
    Ответ написан
    7 комментариев
  • Как вернуть результат из fetch внутри функции?

    hzzzzl
    @hzzzzl
    вернуть куда?
    в стейт прописать

    .then(data => this.setState({data: data}))
    Ответ написан
    5 комментариев
  • Товарищи, как сверстать такой блок?

    RAX7
    @RAX7
    В моб. и планшетной версии кружочки меньшего диаметра

    Если у svg задать viewBox, то всё будет пропорционально масштабироваться, но на мобилках будет очень мелко. Можно на js пересчитывать размер и положение объектов в зависимости от ширины экрана.
    Ответ написан
    6 комментариев
  • Как вставлять картинку в svg path?

    RAX7
    @RAX7
    С помощью clip-path с clipPathUnits="objectBoundingBox" можно вот такое соорудить без паттернов
    Ответ написан
    5 комментариев
  • Как нарисовать такую фигуру?

    @mikeyuriev
    Выделить все три объекта, потом меню "Контур"/"Сумма". Или Ctrl++.
    Ответ написан
    1 комментарий
  • Как сверстать шестиугольники вокруг цифр?

    politon
    @politon
    HTML5,CSS3,JS,PHP,SQL,API,canvas,animation...
    Можно и так
    Ответ написан
    1 комментарий
  • Как сверстать шестиугольники вокруг цифр?

    profesor08
    @profesor08 Куратор тега CSS
    Хочешь на css, то создай 6 внутренних элементов нужной ширины и толщины, а потом transform: tanslate() rotate() расположи их.
    Либо делай на svg.
    Ответ написан
    8 комментариев
  • Как сверстать шестиугольники вокруг цифр?

    @kiberlain
    6-угольную svg-шку бэкграундом вставить в прямоугольный блок - самое логичное решение
    Ответ написан
    Комментировать
  • Съехали стили на сайте?

    @vardoLP
    Ват ю сэй эбаут май мама?!
    вот что в вашем файле стилей. В каком редакторе правили файлы? 5bc5d5f2edb0c322516446.png
    Ответ написан
    4 комментария
  • Как поднять посещаемость сайта?

    RotgarSett
    @RotgarSett
    SEO Эксперт
    Первый шаг - выявление направленности проекта:
    • коммерческий
    • информационный
    • энциклопедический
    • социальная сеть и прочее

    Далее, после того как определились с типом ресурса, выявляем важнейшие для его оптимизации факторы ранжирования. Так, например, для коммерческих проектов во главе угла стоят коммерческие факторы ранжирования, а вот для информационного проекта необходимо учитывать полноту раскрытия информации, стиль подачи и многое другое, подробнее можно почитать в этой статье на Хабре.

    Далее есть список факторов которые необходимо учитывать всем ресурсам, это технические, семантические и поведенческие факторы.

    Для начала необходимо подготовить фундамент - провести подробный анализ техническихфакторов помогут такие программы как Netpeak Spider или Screaming Frog (программ конечно многое множество, но эти используют чаще всего). Но, к сожалению, тулсами можно проверить не все и необходимо будет изучить матчасть и проверять многие технические аспекты руками.

    Затем переходим к семантике, это очень сложный вопрос который лучше будет описать в другом ответе, но, в двух словах, необходимо убедиться что у всех страниц сайта заполнены важные элементы семантики (title, h1 и прочее) и они соответствуют контенту страницы.

    После, к UX сайта, четко продумывая взаимодействие пользователя и максимальное для него удобство. Тут же сразу учтем и часть коммерческих факторов, и оформление контента и прочее что напрямую связано с поведением пользователя.

    В финале мы получим идеально внутренне оптимизированный ресурс и можно будет приступать к внешней оптимизации.

    Старайтесь делать все максимально полезным для пользователя. Органичность содержимого сайта, реальная польза входящей ссылки для пользователя на стороннем ресурсе и прочее белое SEO это то к чему надо стремиться!

    Яндекс подсказывает как развивать сайт белыми методами и чтобы он был полезен пользователю. Все материалы можно найти:
    В Блоге Вебмастеров
    На канале Академии Яндекса
    В Хелпе Яндекс Вебмастера
    Ответ написан
    1 комментарий
  • Как найти в этой строке пробелы между скобками только с помощью регулярных выражений?

    DevMan
    @DevMan Куратор тега Регулярные выражения
    Ответ написан
    Комментировать
  • Как найти в этой строке пробелы между скобками только с помощью регулярных выражений?

    slo_nik
    @slo_nik
    Добрый вечер.
    Попробуйте начать с этого примера
    Ответ написан
    Комментировать