• Как разобраться в конструкторах класса и инициализации переменных в ней, в чем различие?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Есть ли какая-то разница?

    Разница в том, что инициализация bool full = false; выполняется для любого конструктора, у которого поле full не перечислено в списке инициализации.
    Конечное состояние конструируемого объекта одинаково в обоих случаях.

    И почему так конструктор не работает:

    Потому что у класса Token отсутствует конструктор по умолчанию.
    Ответ написан
    5 комментариев
  • Как ограничить траффик без sudo?

    @pfg21
    ex-турист
    шейпинг канала это не юзверский уровень.
    пиши скрипт на изменения параметров шейпинга и пиши для ентого скрипта разрешение запускать его от рута в /etc/sudoers.d
    или вешай suid бит на исполняемый файл
    Ответ написан
    Комментировать
  • Как ускорить этот код(клеточный автомат)?

    @MarkusD Куратор тега C++
    все время мелю чепуху :)
    В общем смысле, как я вижу по твоему коду, ты вляпался в True Sharing, попутно обмазавшись Cache Misses и окончательно убив свою производительность с помощью неоправданно огромного размера клеток.

    8Б на клетку, состояние которой может поместиться в 1Б, это действительно огромный размер.
    enum CellState : uint8_t уменьшит размер состояния с 4Б до 1Б. А еще этот тип стоит переименовать, т.к. это не CellState, а что-то относящееся к поведению клетки. А вот CellState будет выглядеть так:
    // Renamed from `CellState`.
    enum CellBehavior : uint8_t
    {
        Empty,
        Alive,
    };
    
    struct CellState final
    {
    	CellBehavior	current_behavior : 4;
    	CellBehavior	next_behavior : 4;
    };

    Это позволяет уменьшить размер клетки до 1 байта.

    Данные оперативной памяти процессор подтягивает к себе во внутренний кэш. Кэшей у процессора много и все они связаны. Кэш процессора поделен на линии, работа с которыми синхронизируется между ядрами процессора. Вот именно тут появляется два термина: False cacheline sharing и True cacheline sharing. Если "False", то обрабатываемые разными ядрами данные разделены в разные кэш-линии. Когда "True" - требуемые разным ядрам данные находятся в одной кэш-линии и привет синхронизация. А это ой как медленно.

    В каждом процессоре сегодня сидит гадалка, которая предсказывает какие тебе надо подтянуть данные из RAM в CPU Cache. Выборка из RAM - это довольно долгая процедура, поэтому нужна гадалка чтобы предсказать что судьбой твоего алгоритма предначертано выбрать на следующем этапе. Бывает что гадалка ошибается и тогда твой лагоритм встает в синхронизацию до завершения нужной выборки из памяти. А это - еще медленнее чем синхронизация по кэш-линиям. Это называется промахом по кэшу - cache miss.
    К счастью, это не гадалка виновата в своей ошибке, а ты просто неправильно написал лагоритм. Вот чтобы из лагоритма сделать алгоритм, следует озаботиться чтобы он был более лоялен к гадалке и кэшу процессора.

    Докину еще немного полезной информации.
    Сходи к Адаму Мартину и к Unity, посмотри на парадигму ES/ESP/ECS. Изучи DOD. Попробуй реорганизацию из твоего текущего потока сущностей с полями в потоки полей сущностей. Переделай батчинг обработки клеток так, чтобы данные не синхронизировались между ядрами процессора.
    Возможно тебе еще поможет понимание подхода Out of line, т.к. там хорошо объясняется почему очень большие объекты при их поточной обработке - это не очень дружественно кэшу процессора.
    Еще сюда можно добавить информацию о автоматической векторизации. Это позволит задействовать SIMD инструкции для твоего кода. DOD очень элегантно ложится для обработки твоих клеток SIMD командами.

    Я тут крайне сумбурно накидал, только чтобы дать тебе направления. Кое-чего я даже не написал, но ты обязательно зацепишь все неописанное когда будешь изучать то, что я описал. Думаю, ты уже видишь, в какой объем выльется весь этот материал, если писать его в удобном понятном формате и раскрывая каждую тему.
    Ответ написан
    Комментировать
  • Несколько ОС на одном ПК?

    mindtester
    @mindtester Куратор тега Windows
    http://iczin.su/hexagram_48
    Допустим у меня Windows и мне нужен Linux, который стоит физически. Я запускаю его в виртуалке.
    - все "настольные" гипервизоры умеют это. при условии что операционка стоит на отдельном физическом диске. дальше дело техники
    - второй вариант - загрузка с VHD. сложнее и хуже с производительностью (или надо проверять). и BCD, и GRUB могут с этим справиться. но гуглить придется. хотя если винда основной системой - EasyBCD будет самым коротким путем к успеху
    Так же и с MacOS
    а тут все может быть сложнее:
    - на физике у вас Clever? тогда в вирте будут проблемы, и наоборот
    - Hyper-V не поднимет ни при каких условиях
    - VirtualBox, но нет в природе гостевых тулов (не будет звука, косяки с разрешением экрана, и нет проброса клибоарда)
    - VMWare, все классно (с патчером), но см пункт про Clever

    проще всех перевертышем работает Linux
    Windows - да, но будет слетать активация
    osX - ну в общем или Clever, или оригинал под падченной VMWare, но сомневаюсь что одновременно

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

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    orig
    Ответ написан
    Комментировать
  • Хотел улучшить качество подключения интернета через команды bat файла, стало только хуже, как отменить?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    Не знаю при чем тут message queueing (первая строка)
    но остальное по идее может быть приведено в дефолтное состояние двумя командами:
    netsh int tcp reset
    netsh int ip reset
    Повторю: дефолтное для системы. Это не приведет состояние tcp и ip стека к тому виду которое было до внесения правок.Для пущего эффекта лучше после этого перезагрузиться

    набор команд
    ipconfig /release
    ipconfig /renew
    ipconfig /flushdns
    необходим для обновления сетевых настроек, очистки локального ДНС кеша и никак не должен влиять на качество работы вашего WiFi

    P.S. Надеюсь, вы сделаете выводы, что без понимания, что именно делают команды, запускать всякие батнички из "этих ваших интернетов", обещающие оптимизировать систему, не только глупо но и опасно
    Ответ написан
    6 комментариев
  • Доступ к приватным полям через арифметику указателей?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Можете, пожалуйста, объяснить как точно все это устроено в памяти?

    Обычно это устроено так, что поля идут одно за другим в памяти. Но кроме размера у полей есть выравнивание. Например, uint32_t выравнивается на 4 байта, а uint64_t -- на 8. Поэтому между идущими подряд полями разного типа могут быть дырки.
    В приведённом примере double -- поле с наибольшим выравниванием, выравнивание объекта будет на 8, поле c будет по смещению 0 в объекте, поле d -- по смещению 8, а поле i -- по смещению 16. Если иметь это в виду, то игры с указателями приобретают смысл.

    Текст задания: все поля этого класса закрытые, ваша задача реализовать несколько функций, которые дают полный доступ к этим полям (см. шаблон кода), несмотря на то, что они закрытые.

    Пожалуйста, никогда так не делай.
    Ответ написан
    Комментировать
  • Как заполнить недостающие элементы словаря?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    1 - думаю тег Unity тут лишний ))
    2 -
    3. Если несколько неизвестных элементов стоят в ряд, то значение float первого из таких элементов является средним арифметическим первого известного элемента перед этим рядом и первого известного элемента после этого ряда.
    ну тут что то из ряда выпадает.. почему не построить дискретный ряд средних между начальным и конечным? .. но это тоже мысли в слух. если у вас условия заданы извне или вы жестко настаиваете что так и только так дело то хозяйское
    3 - все три (ваших. по тексту вопроса) пункта, весьма просты. вопрос(ы) только в том:
    - когда вы обнаруживаете нехватку значений?
    - когда коррекцию надо выполнять?
    - .. как то сведите эти события к решению ;)))
    4 - а вот тут, единственный момент, который, на мой взгляд, вам важнее всего усвоить в контексте вопроса
    - ключ в c# dictionary уникален
    - вы ограничиваете значения диапазоном [0-360] (кстати, почему не [0-359] или [1-360]? ну как хотите)
    - вам точно проще использовать массив float[360]. не благодарите вру, люблю отметки. и этот пункт, на данный момент, самый ценный для вас ;))

    ps что то подумалось.. вам наверное надо как то отличить значения, которые еще ни когда не инициализировались?.. возможно подойдет float?[360] (Nullable) это хороший способ отличить значение, которое еще не принимало численную величину, не создавая при этом каких других заумных абстракций..
    .. и даже обозначить случай, когда ранее определенной величине, надо присвоить значение, которое четко говорит а теперь мы опять не знаем числа, и настаиваем на неопределенности значения
    Ответ написан
    Комментировать
  • Где хранится код блокнота в Windows 10?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Скачайте IDA она вам даст весь код блокнота в очень понятном виде, издеваюсь.
    код блокнота хранится в репозитории https://github.com/microsoft/notepad

    Впрочем я был не далек от истины
    https://github.com/microsoft/XmlNotepad
    Ответ написан
  • Как убрать тире в текстовом документе?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    Для того чтобы дать что-то для сравнения к ответу res2001: Сами решайте где сложнее а где проще
    Posh
    (get-content old.txt -raw) -replace "-","" | set-content new.txt

    встраиваем в cmd:
    powershell.exe "(get-content old.txt -raw) -replace '-','' | set-content new.txt"
    Ответ написан
    3 комментария
  • Как ЭВМ понимает язык компилятора?

    zagayevskiy
    @zagayevskiy
    Android developer at Yandex
    См. "раскрутка компилятора". Кратко, первый компилятор пишется для минимального подмножества языка на другом языке(или в самом начале веков - на ассемблере, в машкодах), затем на этом подмножестве пишется компилятор, который может компилировать это подмножество, и затем фичи языка наращиваются итеративно. Этакий догфуддинг.
    Ответ написан
    Комментировать
  • Как переместить файлы по папкам по четности/нечетности имени?

    wisgest
    @wisgest
    Не ИТ-специалист
    Может, как-то так:
    for /l %%d in (0 2 8) do move *%%d.txt a\
    for /l %%d in (1 2 9) do move *%%d.txt b\
    Ответ написан
    1 комментарий
  • Как установить ОС используя внешний монитор?

    eapeap
    @eapeap
    Сисадмин, Беларусь
    Можно вынуть HDD (SSD?), поставить ОС на другом компе, и всунуть в ноут снова. Подхватится - вам повезло, заработает и внешняя клава, и внешний монитор.
    P.S. Если пойдете этим путем, спросите у Инета про "Перенос ОС на другую материнскую плату"
    Ответ написан
    1 комментарий
  • Как увеличить пропускную способность ssd?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    но 12 мегабайт в секунду это и есть скорость вашего интернета - 100 мегаБит

    100//8 = 12

    с ССД все в порядке, тем более с Интелом
    Ответ написан
    1 комментарий
  • Как настроить несколько сетей на одной карте?

    martin74ua
    @martin74ua Куратор тега Компьютерные сети
    Linux administrator
    Я бы еще предложил https://linkmeup.ru/sdsm/ почитать.... Потому что вланы там где то рядом вполне могут быть...
    Ответ написан
    Комментировать
  • Мосты ломают ПК?

    Radjah
    @Radjah
    Тут скорее всего железо. Или сбоит память, или на материнке высохли конденсаторы.
    Ответ написан
    1 комментарий
  • Самый простой и быстрый способ отправить webhook из cmd?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    в 90% более-менее современных версиях Windows есть powershell
    в скрипте пишете
    powershell.exe "invoke-webrequest 'https://url' - usebasicparsing"
    Для указания хидеров или данных которые будете передавать - читайте хелп по коммандлету
    Сразу предупреждаю (вы не указали версию ОС) :
    1. при первом старте может появиться окно IE с инициализацией профиля (в старых версиях posh)
    2. https может не сработать если не укажете конкретную реализацию TLS которую использовать. Или вообще не сработать если, например, вас .net 3.5 в системе а целевой сайт использует минимальную версию tls 1.2

    Встроенным методом - только powershell. Но вы имеете шанс столкнуться с чудесами, я вас предупредил.
    Альтернативно - просто скачайте curl
    Ответ написан
    4 комментария
  • Как получить доступ к корп сети с пк через vpn клиент который установлен на vpn сервере?

    @Drno
    Так разрешить обмен траффиком в впн сервере, между клиентами.
    Ну или роутинг на впн серваке настроить.
    К примеру на определенные порты

    Это делается в опенвпн маршрутами, которые вписываются в конфиг клиента.
    Логика такая
    Дописывается маршрут в конфиг, вида сеть 192.168.10.0/24 (рабочая к примеру) искать через такой то шлюз (в этом примере шлюз это адрес впн сервера, внутренний)
    Ответ написан
    2 комментария
  • Повреждение стека вокруг переменной - как побороть?

    gbg
    @gbg Куратор тега C++
    Любые ответы на любые вопросы
    Используйте вендовые типы и вендовый прототип для функции, которую тащите из DLL.
    typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);
    BOOL isWow64 = FALSE;
    Ответ написан
    2 комментария