Задать вопрос
  • Почему рекомендуется использовать private а не просто ставить везде Public?

    GavriKos
    @GavriKos Куратор тега Unity
    Почему рекоменудется носить трусы? Чтобы жопа была в безопасности.

    Вот тут прибилзительно то же самое. Чтобы программисту не надо было думать как поведет себя код, если ВДРУГ кто то снаружи изменит то, что менять не надо вообще.
    Когда вы делаете переменную публичной - вы тем самым говорите "эту переменную можно менять, я все предусмотрел, все будет ок. Это интерфейс взаимодействия - пользуйтесь". Но ведь далеко не для всех переменных класса НАДО предусматривать такое - зачем же делать лишнюю работу - ставим private и все, манипулируем переменной только изнутри, ЗНАЯ все варианты ее изменения.
    Ответ написан
    7 комментариев
  • В чём смысл равного ограничения времени для разных ЯП в спортивном//олимпиадном программировании?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Смысл в том, что итак работает. Редко когда можно TLющееся решение переписать на другом языке программирования, и оно пройдет. Ибо все правильные решения различаются на десяки процентов, максимум, в разы. Неправильные же отсатют от правильных в десятки и сотни раз. По крайней мере на соревнованиях высокого уровня. А потом, ну просто лень составителям придумывать ограничения для всех языков программирования. А, поскольку оно итак работает, то никто этим не заморачивается. Многие системы тестирования даже не поддерживают разные ограничения под разные языки, и никто эту фичу не запиливает, потому что она никому и не нужна особо.
    Ответ написан
    Комментировать
  • В чём смысл равного ограничения времени для разных ЯП в спортивном//олимпиадном программировании?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В олимпиаде ЯП не очень важен. Обычно задание подгоняется под удачный выбор
    алгоритма.
    И если повезло - то и Python и С++ укладываются в нормальное
    время. А если студент использовал комбинаторный алгоритм то здесь не поможет и
    Ассемблер с GPU.
    Ответ написан
    Комментировать
  • В чём смысл равного ограничения времени для разных ЯП в спортивном//олимпиадном программировании?

    Времени и памяти даётся с большим запасом, оптимальное решение даже на самом медленном из доступных языков даже близко к выдаваемым лимитам не приблизится.
    Ответ написан
    Комментировать
  • Как добавить изображение, которое будет отображаться при публикации ссылки на сайт в Discord?

    Fragster
    @Fragster
    помогло? отметь решением!
    Нужно добавить следующие меты:
    property="og:type" content="article"
    property="og:image" content=...
    property="og:image:width" content=...
    property="og:image:height" content=...
    name="twitter:image" content=...
    name="twitter:card" content="summary_large_image"
    Ответ написан
    3 комментария
  • Как добавить изображение, которое будет отображаться при публикации ссылки на сайт в Discord?

    yarkov
    @yarkov Куратор тега JavaScript
    Помог ответ? Отметь решением.
    но оно оказалось маленьким

    А размер вы в метатегах указать не забыли?
    Ответ написан
    2 комментария
  • Как написать терминал на Assembler?

    Daemon23RUS
    @Daemon23RUS
    Секундочку, а неужели Вы еще в своей ОС не написали часть отвечающую за ввод-вывод ?
    Просто к интерпретатору команд надо подходить уже с имеющимся вводом выводом. Я так думаю, что после реализации оного, и вопросов будет меньше, а те что останутся будут более конкретны.
    Ответ написан
    Комментировать
  • Как написать терминал на Assembler?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Изучите прерывания биос.

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

    TosterModerator
    @TosterModerator Куратор тега Тостер
    Модератор Хабр Q&A
    Комментарии необходимы для того, чтобы пользователи могли уточнять недостающую информацию и выражать свое мнение о вопросах. Нередко комментарии оказываются гораздо полезнее ответов. Было бы предельно странно, если бы разработчики Q&A-сервиса дали авторам вопросов возможность блокировать комментарии.
    Ответ написан
    1 комментарий
  • Почему функция-конструктор срабатывает без `new`, хотя, согласно документации, не должна?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    У вас примеры с new и без new не эквивалентны. Вы просто посмотрите, что там на самом деле находится в получаемых переменных:

    function Foo(arg) {
        this.bar = function() {
            return arg;
        };
    
        return this.bar();
    }
    
    const notfoo = Foo('not foo');
    console.log(notfoo); // "not foo", т.е. notfoo - это не новый Foo, это строка текста.
    console.log(notfoo.bar); // undefined, что логично, у стандартной строки никакого bar нет.
    
    const foo = new Foo('foo');
    console.log(foo); // [object Object], т.е. вот это - настоящий новый Foo.
    console.log(foo.bar); // function() { ... }, и метод bar в нем есть.
    console.log(foo.bar()); // "foo"
    Ответ написан
    5 комментариев
  • Как сделать динамический тип с опциональными полями?

    Alexandroppolus
    @Alexandroppolus
    кодир
    можно через infer:

    type Schemas<P extends keyof paths> = paths[P]['post'] extends {requestBody: infer R} ? R : never;


    playground
    Ответ написан
    Комментировать
  • Как в библиотеке пометить макрос, как unstable?

    vabka
    @vabka Куратор тега Rust
    Мне кажется, прямо в названии отражать, что он unstable не обязательно, ибо стабилизация существует только в рамках стандартной библиотеки - просто дай ему другое название и закрой за feature, которую можно включить только на nightly.

    Когда фичу стабилизируют - добавишь в новой версии deprecated с указанием на старый макрос, а потом, в следующей мажорной версии, удалишь окончательно.
    Ответ написан
    1 комментарий
  • Возврат структуры со ссылкой на значение и значением?

    vabka
    @vabka Куратор тега Rust
    У тебя там self referential struct, так что придётся при помощи NonNull указателей сделать и запретить перемещение структуры при помощи PhantomPin.
    Лайфтайма наподобие 'self нету
    Ответ написан
    2 комментария
  • Вопрос с собеседования на Java Бекенд. Как гарантировать согласованность операций?

    Я не из МТС банка, но у нас в собесе тоже есть похожий вопрос, но я бы не назвал его простым, так как там дальше ещё много дополнительных вопросов и обсуждений можно невертеть.

    Основная идея заключается в том, что нужно как-то обеспечить транзакционнлсть при общении с левым сервисом.

    Самый простой и часто используемый вариант - Outbox.

    Смысл в том, что мы должны в нашей основной базе завести таблицу, в которой будет записано, что нам нужно отправить запрос в тот сервис и с какими параметрами. (Например отправить письмо по электронной почте)

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

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

    Переносить взаимодействие со сторонним сервисом в Outbox также имеет смысл из-за того что ты не можешь гарантировать его доступность и задержки - если будешь работат с ним при обработке запроса от клиента по API, то можешь просто упасть по тайм-аут.

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

    66ab5b548e5a9142225375.png

    Благодаря тому что мы записываем основные бизнес-данные и намерение сделать запрос в сторонний сервис в одной транзакции - мы гарантируем, что мы не будем отправлять запрос, если данные не записались и наоборот - если данные записались, то мы гарантируем, что попытаемся рано или поздно отправить запрос.
    Ответ написан
    3 комментария
  • Зачем передавать функцию как параметр через указатель с++?

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

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

    Или у вас вопрос, почему указатель? Ну ведь фунция - это огромный кусок кода в памяти. Логично же ее передавать как указатель, как и массивы, например. Но тут есть еще и низкоуровневая проблема - в процессоре есть защита от исполнения данных. Без дополнительных танцев с бубном, вы никак данные не выполните, даже если там записан корректный машинный код. Поэтому все функции записаны в read-only секции памяти, специально помеченной, как разрешенная к исполнению. Поэтому единственный сопособ как-то эти данные куда-то передать - это указатель туда. Сами данные-то не перемещаемые.
    Ответ написан
    1 комментарий
  • Изучение vue без хорошего знания JS?

    @SigmaMale
    Middle Frontend developer (плюс минус middle)
    Использовать vue не зная JS теоретически можно, при условии, что умеете программировать на другом языке, но Ваши возможности будут очень сильно ограничены.

    Кроме того, решение самых простых проблем и ошибок превратится для Вас в ад. Получится замкнутый круг: Вы не знаете JS потому что не любите его, а не любите потому что у Вас будет негативный опыт с ним, который возникнет из за того, что Вы не знаете JS.

    Скорее всего, Вы не любите JS из за того, что уже привыкли к логике и синтаксису Go. Человеческий мозг не очень любит оказываться в новой обстановке. Среднестатистический программист знает 3 языка программирования, если Вы планируете работать в этой области, то рано или поздно Вам придется работать с другими, не привычными технологиями. По сути, в Вашем случаи, лучший способ полюбить JS - это поработать с ним какое то время, что бы мозг привык. В прошлом я сильно не любил язык PHP, так было до тех пор, пока я не поработал с ним какое то время и не привык ко всем его странностям. Сейчас я к нему нейтрально отношусь.

    P.S.
    и на vue просто в 1 файле сделал разметку с css и используешь в других страницах, а в HTML нужно копировать html и переносить, что не особо нравится.

    Для вёрстки Вы можете начать использовать шаблонизаторы (pug) и препроцессоры (SCSS). Они решают описанную Вами проблему. Обычно для их компиляции используют gulp или webpack, но Вам как новичку я рекомендую использовать программу preposs. Хотя в целом, для маленьких тестовых проектов - это вообще не проблема.
    Ответ написан
    2 комментария
  • Почему для самого класса статическая переменная использует правильное значение, но при попытке вывести его, выдаёт 1?

    @rPman
    static int Print(){
    это ФУНКЦИЯ
    для ее вызова нужно использовать скобки
    Bacteria::Print()
    иначе ты получаешь ее адрес
    Ответ написан
    7 комментариев
  • Чем технически отличаются dev-, prod- и peer-зависимости в Node JS?

    peer-зависимости - обычно предназначены для подключения особо крупных библиотек
    Крупность тут ни при чём. Peer-зависимости нужны для реализациии чего-то типа плагинов - они позволяют этому самому плагину сказать "я работают в такой-то библиотеке такой-то версии, но сама эта библиотека в моём коде не используется". Таким образом при установке плагина проверяется, что на одном с ним уровне есть эта библиотека, но в зависимости плагина она не тянется.

    Теоретически, мы могли бы отмечать и мелкие библиотеки как peer-зависимости.
    Peer-зависимости вообще не используются в конечных приложениях, они нужны только для библиотек, которые сами будут распространяться как пакеты. А у таких библиотек не может быть много peer-зависимостей по определению.

    Ну и вообще-то не особо понятно, в чём конкретно у вас вопрос.
    Ответ написан
  • Как пересобрать массив объектов, выкинув из него лишнее?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Как-то так, если без учёта дубликатов, в один проход.
    function removeSomeShit(arr) {
      const table = {};
      const result = [];
    
      for(const current of arr) {
        const {uid, owner, createdAt} = current;
    
        const uidOvnerKey = `${uid}\0${owner}`;
        const ownerUidKey = `${owner}\0${uid}`;
    
        const matched = table[uidOvnerKey];
    
        if (matched) {
          delete table[uidOvnerKey];
          result.push(matched.createdAt > createdAt ? matched : current);
        } else {
          table[ownerUidKey] = current;
        }
      };
      
      return Object.values(table).concat(result);
    }
    Ответ написан
    1 комментарий
  • По какому принципу работает алгоритм с массивом очереди?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Много разных вариантов для структур данных. Например, кольцевой буфер. Или связный список. В этом случае можно удалять элемент с начала, не сдвигая все элементы в массиве.
    Ответ написан