• Что и как присваивает номера vlan для подсетей?

    Это значит, что в стандарте VLAN не описан как широковещательный домен, т. е. если бы так было написано, то режим изоляции портов просто противоречил бы этому и это было поведение, которое не соответствует стандарту.
    Т. е. если бы у тебя два порта доступа входили в один VLAN и между ними была настроена изоляция, то по старому определению VLAN'а широковещательный пакет из одного должен был быть виден во втором, что противоречит изоляции.
    Поэтому определение VLAN'а изменили, чтобы и такое поведение захватить.
    Написано
  • Что и как присваивает номера vlan для подсетей?

    Akina, я как раз и написал, что это стандартное поведение, просто это частая ошибка, когда путают ёмкость таблицы VLAN'ов и их идентификаторы.
    А изоляция портов уже больше опирается на то. что по сути VLAN описывается в стандарте как набор направленных деревьев распространения кадров.
    Написано
  • Что и как присваивает номера vlan для подсетей?

    Ещё по 802.1q устройства, которые поддерживают менее максимального количества VLANов, вполне стандартные, например свитч может поддерживать настройку всего 128 VLAN'ов максимум, при условии, что каждый из них может иметь VID в диапазоне 1…4094.
    Написано
  • Что и как присваивает номера vlan для подсетей?

    VLAN по сути это широковещательный домен, который очень хорошо совпадает с IP-подсетью в контексте администрирования: у клиентских устройств скорее всего единые права доступа, поэтому в голове модель сети проще и меньше вероятность ошибок допустить.
    Написано
  • Как в C# проекте импортировать стороннюю c++ библиотеку?

    Для винды вариант с C++/CLI самый оптимальный, если есть опыт работы с ним.

    Есть ещё два варианта:
    1) обернуть библиотеку в COM;
    2) обернуть библиотеку в отдельный процесс и общаться с ней по ZeroMQ, например; дополнительно полезно, если её код не самый безопасный и она любит падать.
    Написано
  • Как восстановить потерянный коммит в bitbucket?

    Антон Шелестов, насколько я понял, локальная копия репозитория у тебя есть?
    Если так, то проще всего сделать так:
    выкачать локально последние изменения
    git fetch <ID последнего рабочего коммита>
    создать ветку для неё
    git branch last_work <ID последнего рабочего коммита>
    запушить её обратно в репозиторий
    git push origin last_work
  • Разница между @~ и @^?

    Сергей Кузнецов,
    Я имел в виду что ^[n] эквивалентно ~[n]

    Это не так,
    ^[n] — это n-й прямой/непосредственный родитель коммита, нужен для того, чтобы правильно выбирать куда идти дальше у коммитов-слияний;
    ~[n] — это n-й предок коммита, если двигаться только по первому родителю в каждом предке;
    Если взять диаграмму из справки:
    G   H   I   J
     \ /     \ /
      D   E   F
       \  |  / \
        \ | /   |
         \|/    |
          B     C
           \   /
            \ /
             A

    То к F можно попасть двумя путями от A:
    • A^1^3 или A~^3
    • A^2~
  • Как перебазировать разросшуюся ветку в git?

    Да, здесь эта опция лишняя, привык просто её указывать, когда приходится вручную граф коммитов собирать.
  • Какой смысл писать комментарий к коммиту?

    TCloud,
    Как часто ты ищешь что-то, что было реализованно год назад?

    При каждом изменении старого кода:
    На таких проектах возникают вопросы типа "Почему это сделано? Почему это сделано так? Какие ещё изменения делались и где?". В идеальном мире на все эти вопросы отвечает документация, а в жизни приходится изучать контекст кода, чтобы при изменении не поломать неявно заданных тогда предположений, на которые 100% завязаны какие-то пользователи и процессы.
    Идентификатор задачи полезен, чтобы найти задачу, посмотреть какие цели тогда ставились. Но чем старше код, тем больше шансы, что произошёл рассинхрон: сменилась, например, неоднократно система планирования/багтрекер, и привязки потерялись. Я лично видел задачи, где после конверсии у старых задач терялись ссылки и приложенные файлы, в которых были постановки задач.
    А комментарии живут столько же, сколько и изменения.
  • Удобные ежемесячные git commit отчеты?

    celovec, я в похожей ситуации использовал ToDoList -- у него есть опция включать счётчик времени работы по пункту.
    Потом просто прогонял логи через скрипт, получал .csv-файл и строил по ней табличку в Excel'е.
    В вашем случае можно просто завести пять пунктов и просто там отмечать время. Рекомендую туда же добавить пункты совещаний и созвонов.
    Логи коммитов никакому начальству на самом деле не нужны (бывают исключения, но они обычно сами могут посмотреть/поручить кому-нибудь), им нужен отчёт, что ты работал и результат.
  • Чем плох md5(md5($pass)) для пароля?

    accountnujen,
    Много у нас радужных таблиц, который md5(md5())? а md5(md5(md5()))?

    Каждая (которая для md5). Это как раз базис сжатия радужных таблиц.
    Если известный пароль попал в радужную таблицу, то там есть и md5(…много раз… md5()…)))
  • Как добавить чужую ветку в проекте?

    Команду, в принципе, можно сократить до git checkout develop — она автоматически создаст локальную ветку develop, привяжет её к последнему коммиту из origin/develop и создаст связь между ними.
  • Как на мастер залить контент другой ветки, избежав всех конфликтов?

    Рекомендую почитать серию статей от Реймонда Чена (The Old New Thing) про гит.
    Там такие подходы очень хорошо разобраны.
    Вот, вроде первая: Mundane git commit-tree tricks, Part 1: Building a....
  • Можно ли выполнить make библиотеки в 32bit?

    al_sh, 32х битные и 64х битные это разные платформы: как минимум у них разный набор инструкций, разный набор подключаемых библиотек.
    Из вопроса не совсем ясно с какой целью осуществляется компиляция в 32 бита и где конечное ПО будет использоваться.
  • Как улучшить код на Си(сделать "красивше")?

    Причесал ещё немного:
    • убрал лишнее сравнение
    • добавил пропущенную проверку вызова библиотечной функции
    • убрал явное ограничение на длину считываемой строки
    • упростил логику управления выделенными ресурсами
    #include <stdio.h>
    #include <string.h>
    #include <malloc.h>
    
    #define FAIL(msg)    \
    do                   \
    {                    \
        perror(msg);     \
        goto cleanup;    \
    } while (0)
    
    static const char* choose(const char* left, const char* right)
    {
    	const size_t len_left = strlen(left);
    	const size_t len_right = strlen(right);
    	if (len_left > len_right)
    		return left;
    	if (len_right > len_left)
    		return right;
    	if (strcmp(left, right) < 0)
    		return right;
    	return left;
    }
    
    static const char* get_max(const char* n1, const char* n2, const char* n3)
    {
    	return
    	    choose(
    	        n1,
    	        choose(n2, n3));
    }
    
    int main()
    {
    	FILE* in = NULL;
    	FILE* out = NULL;
    	char* n1 = NULL;
    	char* n2 = NULL;
    	char* n3 = NULL;
    	const char* max_num = NULL;
    
    	in = fopen("input.txt", "r");
    	if (!in)
    		FAIL("Cannot open file 'input.txt'");
    
    	if (3 != fscanf(in, "%m[0-9] %m[0-9] %m[0-9]", &n1, &n2, &n3))
    		FAIL("Wrong input format");
    
    	max_num = get_max(n1, n2, n3);
    
    	out = fopen("output.txt", "w");
    	if (!out)
    		FAIL("Cannot open file 'output.txt'");
    
    	if (fprintf(out, "%s\n", max_num) < 0)
    		FAIL("Output to 'output.txt' fail");
    
    	fclose(in);
    	fclose(out);
    	free(n1);
    	free(n2);
    	free(n3);
    	return 0;
    
    cleanup:
    	if (in)
    		fclose(in);
    	if (out)
    		fclose(out);
    	if (n1)
    		free(n1);
    	if (n2)
    		free(n2);
    	if (n3)
    		free(n3);
    	return 1;
    }
  • Обработчик событий с мышки торзмозит отрисовку в pyqtgraph графиков с большим кол-вом точек (500К) - решение?

    Ну, выбор алгоритма фильтрации это деликатное дело. Главное в моём ответе — это вообще использование своей фильтрации, как показал наш опыт, не сразу до этого догадываешься, особенно, если полагаешься на готовый компонент построения графиков.