• Для чего внутри связного списка нужен массив?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    В тексте задания уже есть ответ на ваш вопрос:
    To better utilize memory, the list should include an array T=8 of structures representing a block


    Для экономии памяти. Такие гибридные структуры обладают характеристиками средними между списком и массивом. В список можно быстро вставлять и удалять из него элементы. В массивах можно быстро искать k-ый элемент и он занимает меньше памяти (не нужны указатели).

    Ваша структура позволяет добавлять и удалять элементы быстрее чем в массиве, но при этом занимает меньше памяти чем просто список, хоть и добавление и удаление элементов там медленнее, чем в списке.
    Ответ написан
    Комментировать
  • Зачем продают OEM-процессоры и рискованно ли покупать их?

    vabka
    @vabka
    Токсичный шарпист
    Зачем продают OEM-процессоры и рискованно ли покупать их?

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

    Например DNS может себе купить оптом много этих процессоров для собственных сборок, а излишек продать в розницу с небольшим дисконтом, по сравнению с BOX. При этом гарантия продавца будет по сути такая же.

    И нет, риски крайне малы (не больше, чем при покупке боксовых), если покупать у нормального продавца.

    Боксовый кулер мне не нужен

    А его сейчас в BOX и не кладут практически :)

    родная гарантия тоже особо не нужна

    У OEM процессоров гарантия ровно такая же, как и у BOX.

    Из-за чего они появляются и могут ли они быть хуже, чем боксовые?

    Появляются, повторюсь, из-за того что на них есть спрос среди сборщиков. Нет, они ничем не хуже боксовых.
    Intel изначально их и продаёт в крупных лотках. При покупке в магазине тебе даже могут иногда продать процессор с отломленным куском этого лотка, чтобы было удобнее нести)

    На фото лотки от райзена, но для интела примерно что-то похожее.
    119787-amd-ryzen-cpu-pictured-2.jpg
    Ответ написан
    9 комментариев
  • Есть ли смысл делать анимацию без JS?

    neuotq
    @neuotq
    Прокрастинация
    Анимация = анимации рознь.

    Конкретный ответ со списком вы тут не увидите, это будет большая статья, со множественными "а вот тут", "но здесь" просто потому что многое зависит от контекста, задач, планирование.
    Главные рекомендации это не делать на js то, что отлично реализуется с помощью css. Этим к сожалению часто болеют многие фронтендеры, особенно из тех кто принципиально не любит вёрстку. Банальные примеры некоторые виды трансформаций объектов при булевых сменах какого параметра(условно навел/убрал наведения, вкл-выкл и тп).

    Но нужно иметь ввиду, что там где у вас выходит сложная логика, разные усложнённые сценарии, динамические параметры запуска и тп и тд. Без js естественно никуда.

    Поэтому просто зная возможности css, имея здравый смысл, вы будете видеть и знать где что использовать.
    К счастью css тоже в последнее время активно развивается давай нам всё больше возможностей.
    Поэтому - простая штука, что-то типа одноразовых анимации, простого повторения, туда сюда - подумать про css.
    Если к этому добавляются всякие реакции на сложные тайминги, старт-пауза перемотать остановить на промежутке и тп - js.
    Ну и безусловно разные сложные, многоходовки с завязкой друг на друга - однозначно js.

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

    @rPman
    Смотрим исходники (как же там неудобно искать, проще было склонировать и найти в файлах)

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

    Описание аргументов ,... это variadic т.е. можно несколько аргументов писать в вызове макроса, они все передадутся как есть (есть разные способы их развертывания)

    Вот к примеру твой пример развернется в
    static vnet_feature_arc_registration_t vnet_feat_arc_ip4_unicast;
    static void __vnet_add_feature_arc_registration_ip4_unicast (void)
      __attribute__((__constructor__)) ;
    static void __vnet_add_feature_arc_registration_ip4_unicast (void)
    {
      vnet_feature_main_t * fm = &feature_main;
      vnet_feat_arc_ip4_unicast.next = fm->next_arc;
      fm->next_arc = & vnet_feat_arc_ip4_unicast;
    }
    static void __vnet_rm_feature_arc_registration_ip4_unicast (void)
      __attribute__((__destructor__)) ;
    static void __vnet_rm_feature_arc_registration_ip4_unicast (void)
    {
      vnet_feature_main_t * fm = &feature_main;
      vnet_feature_arc_registration_t *r = &vnet_feat_arc_ip4_unicast;
      VLIB_REMOVE_FROM_LINKED_LIST (fm->next_arc, r, next);
    }
    static vnet_feature_arc_registration_t vnet_feat_arc_ip4_unicast

    Заметь что последняя строчка не завершена, нет ";", значит если после вызова этого макроса поставить = ... то пойдет определение значения переменной vnet_feat_arc_ip4_unicast
    а запись через { .имя_поля=значение,...} это удобный способ инициализировать структуры
    Ответ написан
    1 комментарий
  • Как узнать, какой тип у элементов?

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

    Fragster
    @Fragster
    помогло? отметь решением!
    Это фича (и не только postgres). Поступить - поменять индекс, сделав его не UNIQUE, а UNIQUE NULLS NOT DISTINCT
    (и да, эта фича доступна только в постгре 15. для более ранних версий нужно хранить в этом поле не NULL, а, например, 0 (но тут есть свои нюансы с foreign keys))
    Ответ написан
    4 комментария
  • Тег < p > и < span >. Есть разница?

    vabka
    @vabka
    Токсичный шарпист
    Разница в том, что span не несёт никакого семантического смысла, а p несёт и является параграфом.
    Ответ написан
    5 комментариев
  • Чем отличается наследование в ооп от протипированного наследования?

    Stalker_RED
    @Stalker_RED
    Вопрос некорректный, различий не может быть, так как прототипы - разновидность ООП.

    Отличие с классами есть:
    Прототипное программирование # Сравнение с класс-о...
    В языках, основанных на понятии «класс», все объекты разделены на два основных типа — классы и экземпляры. Класс определяет структуру и функциональность (поведение), одинаковую для всех экземпляров данного класса. Экземпляр является носителем данных — то есть обладает состоянием, меняющимся в соответствии с поведением, заданным классом.

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

    Хотя подавляющее большинство прототип-ориентированных систем основаны на интерпретируемых языках с динамической типизацией, технически возможно добавить прототипирование и в языки со статической проверкой типов. Язык Omega является одним из примеров такой системы.
    Ответ написан
    1 комментарий
  • Почему переменная list не перезаписывается каждую итерацию цикла?

    Stalker_RED
    @Stalker_RED
    А почему вы решили, что она не перезаписывается? Вот добавил одну строчку логирования, и видно как она перезаписывается
    function ListNode(val, next) {
      this.val = (val === undefined ? 0 : val)
      this.next = (next === undefined ? null : next)
    }
    
    let list;
    for(let c=1; c<=5; c++){
      list=new ListNode(c, list); //Я не могу понять, как работает эта строка.
      console.log('val=', list.val, 'next=', list.next); // <---------- вот эту
    }
    console.log(list);


    val= 1 next= null
    val= 2 next= ListNode {val: 1, next: null}
    val= 3 next= ListNode {val: 2, next: ListNode}
    val= 4 next= ListNode {val: 3, next: ListNode}
    val= 5 next= ListNode {val: 4, next: ListNode}
    ListNode {val: 5, next: ListNode}
    Ответ написан
    2 комментария
  • Как извлечь элементы многобайтового массива как единое число?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Лучше так делать не надо. Это UB - нарушение всяких strict aliasing, выравниваия и вообще от порядка байт в машине зависит. Лучше руками собрать ULL по частям, вроде
    for (int i = 0; i < 8; ++i) result |= byte_array[i+1] << (8ULL*i);
    или
    for (int i = 0; i < 8; ++i) result |= byte_array[i+1] << (8ULL*(7-i));


    На худой конец, если очень узкое место, надо делать memcpy из массива в &result.
    Ответ написан
    Комментировать
  • Как из контейнера подключаться к базе данных?

    karabanov
    @karabanov Куратор тега Ubuntu
    Системный администратор
    Можешь файл с базой хранить на хостовой машине и монтировать его в контейнер.
    Ответ написан
    3 комментария
  • Почему вызывается исключение при считывании информации из файла?

    У вас переменная size в main не инициализирована. В ней находится мусор. А вы создаете массивы размера size.
    Ответ написан
    3 комментария
  • Функция, удваивающая числовые свойства объекта. Зачем return?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Так это вопрос к вам, зачем вы поставили return.
    Подозреваю из-за того, что console.log выводила undefined. Так она и должна была его выводить. По условию возвращать ничего не надо, а результат ничего не возвращающей функции как раз undefined.
    --  return obj
    --console.log( multiplyNumeric(menu) );
    ++multiplyNumeric(menu);
    ++console.log(menu);
    Ответ написан
    Комментировать
  • Как перенести текст статьи из .txt в html?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Т.к. нет примера txt файла, и это нужно угадать, то предположу, что параграфы в txt разбиваются пустой строкой.
    Т.к. указан тег js, и нет указания, где именно задачу необходимо выполнить (на бэке или фронте), то напишу решение для фронта:
    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <title>Пример чтения и вывода текстового файла в HTML</title>
      </head>
      <body>
        <div id="content"></div>
    
        <script>
          fetch('example.txt')
            .then(response => response.text())
            .then(text => {
              const paragraphs = text.split('\n\n');
              const contentElement = document.getElementById('content');
    
              paragraphs.forEach(paragraph => {
                const p = document.createElement('p');
                p.textContent = paragraph;
                contentElement.appendChild(p);
              });
            });
        </script>
      </body>
    </html>
    Ответ написан
    2 комментария
  • Программирования учат или применяют?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Решил прокомментировать, с точки зрения своего опыта (я в отрасли уже более 22-и лет). Знание без понимания - это как раз то, чем страдают почти все выпускники курсов и немало выпускников ВУЗов. Обучение - это не копирование знаний в память, как на флешку - это наращивание новых связей в мозге и перестраивание существующих. Поэтому это долгий процесс, требующий многократного применения знаний. Однако, практика без теории - это тоже плохая идея, так как несистемное обучение создаст в голове хаос и замедлит профессиональное развитие. Пользуйтесь поиском, этот вопрос задавали здесь уже много раз, рецепт эффективного обучения можно найти среди ответов.
    Ответ написан
    1 комментарий
  • Программирования учат или применяют?

    Программирование это по сути просто подробное описание процесса или объекта (в случае с html, например), на каком-то языке.

    Можно ли хорошо владеть языком не зная теории? В принципе - да. Говорите же вы на русском и понимаете его не зная например всех его падежей.

    Можно ли владеть языком на самом высочайшем уровне? Легко. Гомер или Шекспир не дадут соврать. Но Гомеров и Шекспиров в истории человечества было ровно по одному. Да я тягались они со своими современниками так же ничего не знавшими о теории языков на которых они писали. Может ли современный писатель или поэт стать классиком не будучи знакомым с теорией языка? Может. Но без теории написания текстов - вряд ли. Вам будет сложно написать интересную книжку или сценарий фильма, не будучи знакомым хотя бы с "Морфологией волшебной сказки" Проппа.

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

    Вот и думайте что для этого надо - владение языком, которому невозможно научиться без постоянной практики, способность ясно мыслить, знакомство с разными приемами выражения определенных типовых мыслей. Вот всему этому вам надо научиться. Будете ли вы учиться этому как родному языку - долгие годы впитывая правила языка как нэтив или вызубрите правила, а затем начнете практиковаться - выбор за вами. Можно и так и так. Первый способ дольше. Второй не гарантирует результат.
    Ответ написан
    1 комментарий
  • Программирования учат или применяют?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    Ну серьезно. Зачем вы ходили в школу?
    Неужели в школе не было некоторого количества предметов, чтобы понять как что учится?

    Получилось ли выучить иностранный язык, просто зазубрив слова? Или выяснилось что и слова надо запомнить и практиковаться много раз, чтобы как-то начало получаться?

    Алгебру - достаточно ли просто зазубрить что такое + - * / %, чтобы решать все задачи, или приходится на практике решать кучу задач, чтобы научиться это делать быстро?

    Программирование НИЧЕМ не отливается от любых других направлений. Нужно и зубрить теорию и заниматься практикой, нельзя делать что-то одно. И высчитывать процент - это зачем? каждый человек немного уникален, у каждого процент будет свой.
    Ответ написан
  • Программирования учат или применяют?

    Newto
    @Newto
    Добрый день. Я перечитал все ответы выше, а так же комментарии к ним. Решил прокомментировать, с точки зрения своего опыта(я занимаюсь разработкой уже более 15-ти лет). Для удобства чтения я буду писать по пунктам.

    1) Зубрёжка. Каждого из нас, кто ходил в школу, заставляли зубрить таблицу умножения. И, в конце-концов, это помогало в последующем обучении математики, не правда ли? В программировании есть такие же вещи, которые называются "стандарты". Вот эти стандарты и нужно, для начала, зазубрить. А позже и вникнуть, зачем они придуманы.

    2) Методика "объяснение и практика". Вы пишете, что "при таком способе мне приходится одно и тоже глазами несколько раз пробегать чтобы запомнить". Это, с моей точки зрения, в корне не верно. Ибо то, что вам объясняют, не нужно "пробегать глазами" несколько раз, что бы запомнить. Это вообще не нужно запоминать если это не те самые "стандарты"; это нужно осмыслить и понять. После того, как к вам придёт понимание как это работает, зачем и почему это надо -- вы сможете это использовать, осмысленно, в собственном коде.

    3) Платные курсы. Курсы ныне очень разные. Кто-то просто, простите, гребёт бабло на этом всём. А кто-то преподаёт с душой, хорошо и понятно рассказывая. Поэтому платный курс -- это хорошо, но только тогда, простите за тавтологию, когда это хороший курс. Читайте отзывы о курсе, советуйтесь с теми кто его уже прошёл(в идеале) и тогда уже решайте, тот ли этот курс, что даст вам необходимые знания.

    4) ВУЗ. Более 10-ти лет назад, у меня в подчинении, в вебстудии, работал PHP джун. Он доучивался в МГТУ имени Баумана. И он не знал ничего. Совсем. Мне приходилось объяснять ему простейшие вещи, типа что значит иструкция "$a += $b;". Сам же я учился в ВУЗе малоизвестном, на факультете "прикладная информатика в экономике" и наш преподаватель информатики, на первом курсе, на вопрос что значит в коде программы на языке C++ инструкция "с++" ответил, что это "так язык называется". Однако, вскоре ко мне начали ходить сокурсники, с просьбами "а напиши программку". И происходило это потому что я сам загорелся программированием, купил книжки, установил всё что нужно было установить на компьютер и начал "творить волшебство", как это мне тогда виделось, с горящими глазами. Короче говоря не нас учат ВУЗы, а мы учимся в ВУЗах или учимся без них. Тут уж как пойдёт.

    5) Ну и последний, самый важный, с моей точки зрения, пункт. Это Интерес. Если вам интересно программирование, вам нравится разбираться, что-то делать самостоятельно, а не только тогда когда кто-то поставил задачу, то у вас все получится. И как именно это всё учить у вас вопроса, в конце концов, не возникнет. Разбирайтесь, ковыряйте, вникайте и всё будет. Единственное что -- очень желательно, что бы перед вашими глазами были хорошие примеры. Потому что я, в свое время, тоже разбирался, учился и вникал, "гладили по голове", как писали выше в комментариях к одному из ответов, меня уже мои наниматели, потому что я все делал быстро и без ошибок, т.е. работало все так, как было нужно клиентам веб-студии, собеседование в которую я тогда прошел без каких-то проблем. Но вот мой код тогда был, откровенно говоря, тем, что сейчас называется "говнокодом". Потому что некому было мне показать как писать есть хорошо, а как есть плохо.

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

    neuotq
    @neuotq
    Прокрастинация
    Через import в nodejs реализуется относительно новый принцип модулей(для nodejs) - ECMAScript. Указывать расширение файла при этом обязательно.
    Ответ написан
    Комментировать
  • Как закрыть доступ к сайту?

    Adamos
    @Adamos
    Чем гадать по велосипеду, проще определить, на каком сервере он ездит.
    И ok, google, "maintenance mode + apache/nginx"
    Ответ написан
    Комментировать