Задать вопрос
  • Какие навыки наиболее востребованы на удаленке?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    делегируют, что попроще

    Это ошибочное мнение.

    какие именно навыки наиболее востребованы на удаленке

    Единственное отличие от офисной работы - самодисциплины требуется больше.
    Ответ написан
    Комментировать
  • Организация FailOver VPN?

    @dronmaxman
    VoIP Administrator
    Три варианта решения.
    1) Использовать свой DNS (можно купить отдельный домен для этого). Добавить CNAME запись с коротким сроком жизни и переписывать ее когда не работает VPN. PowerDNS умеет проверять доступность ресурса перед тем как отдать запись.
    https://doc.powerdns.com/authoritative/lua-records...
    Это сложная схема. Надо понимать как настроить свой DNS, его надо резервировать.

    2) Арендовать VPS + HAProxy. Всех клиентов заворачиваем на VPS, настраиваем HAProxy который будет проверять доступность провайдеров и переключать между ними. Соответственно весь трафик VPN будет итти через VPS.
    Схема рабочая, проверена в бою.

    3) Купить свою AS (BGP)
    Самый стабильный и правильный вариант для большой компании. Сами пользуем.
    Ответ написан
    1 комментарий
  • Как в gcc сохранять объектные файлы(в другой папке)?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как в gcc сохранять объектные файлы

    Опция -o -- путь к результату, препроцессирования/компиляции/линковки. Научи свой Makefile подставлять правильный путь в эту опцию.
    Ты скажешь "а у меня 100500 исходных файлов компилируется разом". Ответ -- а не надо так делать. Компилятор всё равно вызывается каждый раз новый. Напиши правило компилирующее один файл в нужный каталог -- и выполни его по разу для каждого исходника. Например так:
    NAME = calc
    
    SRC = main.c \
      parser.c \
      ft_lib/ft_atoi.c \
      ft_lib/ft_putchar.c \
      ft_lib/ft_putnbr.c
    
    BUILDDIR=build
    OBJ = $(addprefix $(BUILDDIR)/,$(subst /,_,$(patsubst %.c,%.o,$(SRC))))
    
    FLAGS = #-Wall -Wextra -Werror
    
    all: $(NAME)
    
    $(NAME): $(OBJ)
      gcc $(OBJ) -o $(NAME)
    
    define CC_RULE =
    $(BUILDDIR)/$(subst /,_,$(patsubst %c,%o,$(SOURCE))): $(SOURCE)
      gcc $(FLAGS) -c $< -o $@
    endef
    
    $(foreach SOURCE,$(SRC),$(eval $(call CC_RULE,$(SOURCE))))
    
    clean:
      rm -f $(OBJ)
    
    fclean:
      rm -f $(NAME)
    
    re: fclean all


    Смотри: я сделал список объектников из $(SRC), написал генератор CC_RULE, который для любого исходника генерирует правило компиляции его в объектник под $(BUILDDIR) и вызвал его для всех исходников в $(SRC).

    Это забавное развлечение, но гораздо практичнее воспользоваться существующей системой сборки: autotools/CMake/...
    Ответ написан
    4 комментария
  • OpenVPN подойдёт для массового использования?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    Ответ написан
    Комментировать
  • Что почитать по сетевому программированию?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Сетевое программирование
    Седой и строгий
    1 комментарий
  • Как защитить файл excel по mac адресу без возможности обойти макрос в openoffice и в libreoffice?

    CityCat4
    @CityCat4
    Дома с переломом ноги
    Привязка к аппаратному сертификату. Ну или хотя бы к программному сертификату. Если это конечно возможно.

    НО:

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

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

    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 комментарий