Задать вопрос
  • Как игровые движки понимают инородные языки?

    Vindicar
    @Vindicar
    RTFM!
    1. Встраивают интерпретатор нужного языка, при необходимости урезают стандартную библиотеку (чтобы не давать коду плагинов лишних возможностей) и подсовывают туда средства общения с хост-программой.
    2. Если нет нужды изолировать плагин от остальной программы, то полагаю что да, накладные расходы на поддержку плагинов уменьшатся в случае, когда плагин написан на том же языке, что и программа. В противном случае организация "песочницы" может занять столько же усилий, сколько встраивание интерпретатора.
    3. Лучше, если язык плагина является или интерпретируемым (как Lua или JS), или компилируется в байткод (как Python/Java/C#). Также желательно, чтобы язык плагина имел средства интроспекции.
    Ответ написан
    Комментировать
  • Можно смотреть фильм на ноутбуке без ОС?

    SagePtr
    @SagePtr
    Еда - это святое
    Да, LiveUSB любого линукса или WinPE
    Ответ написан
    Комментировать
  • IP для VLAN - почему два?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Вот какая связь между VLAN и адресом внутреннего интерфейса коммутатора? Никакой, от слова вообще. Данный адрес - именно адрес внутреннего интерфейса коммутатора. Запись просто утверждает, что внутренний интерфейс коммутатора доступен по указанному адресу в указанном VLAN. Т.е. если, находясь в данном VLAN, узел обратится по данному адресу - то он будет обращаться к коммутатору. Ну захотелось человеку, который настраивал сетку, присвоить коммутаторам адреса из разных подсетей, но в одном VLAN - имеет право. Неясно, правда, какой с того профит, но проблем с этого уж точно никаких. У меня в сети, например, для коммутаторов выделены аж три разные подсети в трёх разных management VLAN, различающихся по назначению, и некоторые из коммутаторов имеют адреса в двух, а магистральные даже во всех трёх, VLAN.

    Я понимаю, если бы что-то бы интерферировало - скажем, один и тот же адрес, или один адрес был бродкастом подсети второго адреса. Тогда бы был предмет для беспокойства.

    Если с такой настройки корячит - ну перенастрой.
    Ответ написан
    2 комментария
  • Почему программа загружается в разных областях памяти?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Почему программа каждый раз занимает различные области памяти?

    Потому что современные ОС делают это намеренно, чтобы затруднить эксплуатацию уязвимостей в ПО. Это называется ASLR: address space layout randomization. Обычно есть способ отключить ASLR глобально либо для отлаживаемых программ, чтобы добиться воспроизводимости результатов.
    Так, например, в linux это делается глобально с помощью файла /proc/sys/kernel/randomize_va_space либо командой setarch -R для одного конкретного процесса. Отладчик gdb по умолчанию отключает ASLR для отлаживаемых программ.
    Ответ написан
    3 комментария
  • Допускается ли в коде смешивать парадигмы программирования?

    mayton2019
    @mayton2019
    Bigdata Engineer
    - ООП
    - Функциональное
    - Процедурное
    - Структурное

    Это во первых - устаревшие понятия. Все из 20-го века. Сегодня они почти не актуальны.

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

    В современном программировании практикуется конвенция которая принята в команде. Вот придете на проект и вам покажут как пишушт все. И будете так писать. Никто не будет упарываться по поводу трушности ООП или еще чего-то. А в техническом задании от бизнеса вообще ничего не будет на тему стиля кодирования. Там будут описаны просто требования по бизнес-кейсам.
    Ответ написан
    8 комментариев
  • Что находится по этому адресу в памяти?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Почему дефолтные значения выглядят так (первые два скришота)

    Потому что это адреса. 8 байт адреса, на втором скрине первый -- 0x12df11a80, второй -- 0x12df11a60
    Ответ написан
    2 комментария
  • Какие почтовые сервера и почтовые сервисы позволяют организовать почту со своим доменом на кирилице?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Вам стоит прочитать по Punycode, в котором "живут" все кирилические (все национальные) имена доменов.
    После этого вы поймёте, что АБСОЛЮТНО ВСЕ почтовые сервера и сервисы работают с национальными именами доменов прозрачно, потому что они - в Punycode.

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

    batyrmastyr
    @batyrmastyr
    1) > чтобы хранить весь массив данных в виде json
    JSON уже давно можно хранить в самом MySQL, если вам нужно произвольное число параметров, но значения их скалярные. Для индексации - виртуальные колонки и индексы по ним.
    Если хочется найти искать «1» в массиве [1, 2,5], то вам в PostgreSQL.
    2) «Полнотекстовый поиск» — что вы от него хотите? Если вам нужно точное совпадение, только быстрее, то берите что угодно.
    Если вам нужен учёт словоформ, то он есть как минимум в Монге, Эластик, Постгрес, Сфинкс/Мантикора.
    Если вы хотите больше контроля (поиск с учётом особенностей > 1 языка, тюнинг морфологии, какое-то ранжирование), то выкидываем Монгу (нет тюнинга морфологии и ранжирования, а на каждый язык нужно вешать отдельный индекс).
    Если вы и ранжирование хотите тюнить (вплоть до простенького машинного обучения) и вообще максимальную скорость поиска, то вас спасёт только Мантикора/Сфинкс, всё остальные грустно глотают пыль.

    Но золотая середина - Постгрес. На него довольно легко перекатиться и он избавляет от необходимости разводить NoSQL зоопарк.
    P.S. И забудьте про монгу, Постгрес лучше неё почти по всем параметрам.
    Ответ написан
    Комментировать
  • C - как сделать замену подстроки в строке (руками)?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    А что делает startsof()?

    Даже если принять, что оно действительно ищет вхождение второй строки в первой - у вас там в каждой второй строчке ошибка.

    malloc(string_size + sub_size - to_size);

    Объясните мне, как вы получили вот это значение длины?

    А дальше копирование у вас неправильно. Чтобы заменить строку-вхождение вам надо в ответ скопировать начало str1 до вхождения, потом скопировать to, потом скопироваать конец строки str1, после вхождения. Это должны быть три параллельных цикла. У вас в одной ветке их 2 (один в функцию бесполезную спрятан), в другой - только 1.
    Ответ написан
    Комментировать
  • Как сделать чтобы только один из установленных браузеров ходил через vpn?

    Adler_lug
    @Adler_lug
    Сделайте прокси сервер доступный по ВПН и просто в браузере пропишите прокси. В FF это есть с коробки, для Chrome и клонов поддержка индивидуальных прокси расширениями ставится (их там полно разных).
    Ответ написан
    2 комментария
  • Объясните пожалуйста, как правильно использовать rebase ВМЕСТО merge?

    Lynn
    @Lynn
    nginx, js, css
    Совет про rebase вместо merge как раз для случая

    git rebase develop

    чтобы на origin потом никто не умер при мерже

    Т.е. вы его уже используете.

    Финальный merge вашей фичи в develop конечно никуда не денется.
    Ответ написан
    2 комментария
  • C# или C++ как первый язык?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    C# - это как если бы ты скупал золотые драгоценности, переплавлял их, и делал бы из них золотые слитки.
    C++ - это как если бы ты добывал руду в шахте, проходил бы сам разные стадии очистки, параллельно бы промывал речной песок, и в итоге получал бы всё те же золотые слитки.

    Что лучше новичку? Нельзя ответить однозначно. В первом случае ты по началу не только не будешь знать, сколько в твоём сплаве меди, но и вообще не будешь знать о ней, полагая, что золото есть золото. Конечно, со временем ты во всё вникнешь, но это будет потом. Для самозащиты тебе дадут пистолет с резиновыми пулями и слезоточивый газ.

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

    Искатель ли ты приключений, или ищешь лёгкой наживы - решать тебе. Оба варианта имеют свои плюсы и минусы.
    Ответ написан
    3 комментария
  • Устройству присваивается ip адрес из другой подсети. Как исправить?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Возможно, в сети есть второй DHCP.
    Ответ написан
    2 комментария
  • Как подключить порты USB Windows 7 x64?

    @Drno
    Судя по всему в БИОС клава\мышь работают? Тогда проблема в драйверах
    Попробовать как советую безопасный режим(с поддержкой сети)
    Там должно заработать в режиме совместимости. уже оттуда поставить драйвера на мат плату
    Либо настроить любую удаленку, запуститься в обычном режиме, зайти через удаленку и поставить драйвера)
    Ответ написан
    Комментировать
  • Фабричный метод. Как создать рефлексивно по имени поля класс, наследуемый от абстрактного?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    В С++ рефлексии нет. Только ручками. Где-то придется писать список всех классов и по всем им пробегаться и сравнивать строку. Ну или map какой-то создать. В качестве ключа вставлять команду, в качестве значения - функцию создающую объект конкретного класса.

    Как вариант, можно как-то упростить себе работу с помощью шаблонной магии. Шаблон будет принимать список всех классов, сравнивать первый с заданной командой и или рекурсивно вызваться дальше или создавать объект текущего класса.

    Пример можно посмотреть вот тут. Там CreateEncoderInternal делает практически то, что вам надо. Только там не константное поле command проверяется, а проверяется, что заданный формат есть в статическом списке в текущем классе.

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

    @pfg21
    ex-турист
    cd ..
    Ответ написан
    Комментировать
  • Зачем нужен отдельный синтаксис для препроцессора?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Зачем нужен отдельный синтаксис для препроцессора

    Затем, что препроцессор -- это отдельная программа с отдельным языком? Внутри препроцессируемого файла может быть что угодно, не обязательно код на С или С++. Так, например, linux препроцессирует скрипты линковщика перед тем как использовать их. И исходники написанные на ассемблере, хотя у ассемблера есть собственные макросы, директивы для включения файлов и условной компиляции.
    Ответ написан
    4 комментария
  • Почему возникает ошибка?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Почему возникает ошибка?

    Потому что это не С++ код. Designated initializers есть в C начиная с C99 и в C++ есть начиная с C++20, но в С++ версии полно дополнительных ограничений.
    Ответ написан
    Комментировать
  • Как считать данные с COM порта в C++?

    @predbannikov_yurij
    Boost asio ещё не упомянули
    Ответ написан
    Комментировать
  • Какой стэк использовать для быстрого доступа данных?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Для "доступа" использовать ту реляционную БД, которая имеется в наличии. При появлении проблем с производительностью - диагностировать их, и с конкретными вопросами приходить на Хабр.
    Для поиска - "быстрого", "по параметрам", полнотекстового - использовать предназначенный для этого движок, например Эластик. При появлении проблем с производительностью - диагностировать их, и с конкретными вопросами приходить на Хабр.

    spoiler
    Сам по себе ход мысли в вопросе очень характерный.
    Звучит примерно так: "Купил машину, что-то плохо тянуть стала. Думаю докупить упряжку лошадей, чтобы запрягать спереди. Лошадиные силы ведь прибавятся! Посматриваю ещё на воздушных змеев, лыжи, и дополнительный омыватель". То есть вместо простых и очевидных действий по диагностике, формулированию конкретных проблем, и последующему ремонту машины мы фантазируем себе набор каких-то бессмысленных и хаотичных телодвижений. Которые мало того что вообще никак не помогут, но скорее всего ухудшат ситуацию.

    И, разумеется, не приводим ни одной цифры, ни одного конкретного примера. Ни даже примерной нагрузки на систему - хоть в попугаях/посетителях. Ни загрузки процессора на серверах. Ни причин, по которым пришлось делать мастер-слейв. Ни текущей статистики по Mysql. Одни оценочные суждения, " А здоровье мое не очень. То лапы ломит, то хвост отваливается." Общие причитания про повышение нагрузки, "на запись и чтение". При том что запись уже больше не упоминается нигде, и непонятно - есть какие-то проблемы с ней, или нет. Да и с MySQL в целом.

    В итоге из всех невнятных жалоб становится понятно, что с самой БД, судя по всему, проблем нет. А есть только один участок, к которому есть вопросы - поиск. Есть идея реализовать его через Эластик, но есть сомнения. При том что Озон там, МВидео и прочих мастодонтов Эластик устраивает, а вот нашему магазинчику с 300К записей он не угодил. Сразу вспоминается анекдот про нового русского и 600-й мерс с засорившейся пепельницей. Не тянет Эластик? Будем менять на Монгу!

    Я думаю, что в таких ситуациях в первую очередь надо установить в систему здравый смысл. Перестать метаться с безумными фантазиями, а подойти к вопросу логически: есть вопросы к поиску? Значит надо поставить поисковый движок. поисковый движок - это в 99% случаев - Эластик. К нему есть вопросы? Отлично. Максимально подробно формулируем эти вопросы - не забывая привести индексы, конфиги, запросы - и задаём конкретный вопрос по оптимизации работы Эластика.

    А сейчас проблема "может мне монгу воткнуть?" проходит исключительно по разряду "Когда коту делать нечего, он гигиеной занимается".


    P.S. Не удивлюсь, если в итоге выяснится, что вся проблема сводится к истории, которая случилась в одном маленьком интернет-магазинчике: там тоже купили аж 3 сервера по 256Г мозгов в каждом, мастер-слейв, все дела... И не поменяли дефолтное значение innodb_buffer_pool_size в 128М. И что характерно, этот "кластер" даже тащил какое-то время, пока не случилась 10х нагрузка.
    Ответ написан
    2 комментария