Задать вопрос
  • Апгрейда разраба с помощью нейросетки, с чего начать в 2025 году?

    Kentavr16
    @Kentavr16
    long cold winter
    Дополню ответы и комменты к ним.

    В вопросе правильно указано различие между скоростью и качеством работы программиста. По состоянию на сейчас разумнее всего рассматривать нейронки как коллегу , который супербыстро гуглит. Соответственно прокачка скорости работы - практически моментальная (при условии платного решения, присоединяюсь к ответу fkk и также рекомендую сонет интегрированый в IDE) Для меня прирост именно скорости написания составил минимум процентов 30 - почти полностью удалось делегировать написание тестов (особенно полезно), первичный рефакторинг/мелкое разбиение кода и тд.

    По улучшению качества работы все более размыто. ИИ отлично показывает себя как тренер для уровня интерна. при этом чем выше уровень, тем бесполезнее ИИ. Тут я на 90 процентов уверен что начиная с уровня мидл+ роль ИИ в обучении сводится у роли навороченной песочницы. Растить спеца ИМХО придется через практический опыт и толстые книги.

    П.С. - не ведитесь на маркетинг вокруг ИИ. Я считаю что у нейронок огромный потенциал, но судя по всему они еще минимум лет 5-7 будут вторичны. Это не программист и не учитель. Это крутое автодополнение которое помогает мясной прокладке между стулом и монитором.
    Ответ написан
    Комментировать
  • Как искать работу DevOps c резюме frontend?

    Maksim_64
    @Maksim_64
    ML Engineer
    1. В оглавлении резюме пишешь DevOps

    2. Перечисляешь навыки (включая DevOps стек)

    3. Перечисляешь компании где занимался frontend-разработкой.

    На первичном собесе с эйчаром, говоришь занимался фронтом, но в какой то момент в компании переключился на DevOps, затем проходишь/не проходишь технический собес.
    Ответ написан
    Комментировать
  • Где найти исходники стандартной библиотеки JavaScript?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    Ну есть же поиск — там всё легко находится. Да, размазано по куче файлов — ну а иначе никак. Вот например: https://github.com/v8/v8/tree/main/src/builtins
    Ответ написан
    1 комментарий
  • Почему при обновлении rustup не обновляются rustc и cargo?

    vabka
    @vabka Куратор тега Rust
    потому что rustup - это инструмент для установки и обновления тулчейна. (о чём и написано белым по чёрному на вашем скриншоте)

    cargo и rustc входят в тулчейн.

    Чтобы обновить cargo и rustc нужно вызвать команду rustup update stable
    Если вы ранее ставили rustc самостоятельно и без использования rustup, то тогда его нужно удалить и установить заново уже с использованием rustup
    Ответ написан
    Комментировать
  • Стоит ли бежать со стартапа?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Для начала всегда имеет смысл попробовать построить диалог с работодателем. Рисуете понятную схему того, за что вы отвечаете и того, какие бизнес-процессы сломаются/остановятся при вашем уходе, возможные убытки компании (по возможности), а так же среднерыночный уровень ЗП на объём вашей работы и уровень знаний. А ещё лучше, если сначала пройдёте несколько собеседований и у вас уже на руках будет предложение от другой компании. Или даже несколько предложений. Пишите заявление на увольнение и идёте к генеральному/собственникам (или ко всем сразу) и дальше два варианта: либо вам поднимают оплату вашего труда, либо подписывают заявление и сами разгребают дальнейший бардак. Решение экономических проблем компании - обязанность руководства компании и финансового отдела. И вот если не захотят поднимать - то да, стоит уходить, ибо они так и дальше будут кормить завтраками.
    Ответ написан
    1 комментарий
  • Стоит ли бежать со стартапа?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Не надо ничего гадать и спрашивать, резюме на hh и вперёд по десяткам вакансий, только после этого вы поймёте свою стоимость на рынке. Затем, сообщаете своему работодателю о конкретных офферах от других потенциальных работодателей, и т.к. вы "болеете" за текущий проект и команду, то готовы остаться на прежнем месте за "аналогичную/-X%" зарплату.
    Ответ написан
    Комментировать
  • Стоит ли бежать со стартапа?

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

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    (лево ИЛИ право) ИЛИ (верх ИЛИ низ)

    // Левое ИЛИ правое значение.
    type OffsetHorizontal =
      | { left: number; right?: never; }
      | { right: number; left?: never; }
    
    // Верхнее ИЛИ нижнее значение.
    type OffsetVertical =
      | { top: number; bottom?: never; }
      | { bottom: number; top?: never; }
    
    // Горизонтальные значения, с запретом использования с вертикальными.
    type OffsetHorizontalOnly = OffsetHorizontal & {
      top?: never;
      bottom?: never;
    }
    
    // Вертикальные значения, с запретом использования с горизонтальными.
    type OffsetVerticalOnly = OffsetVertical & {
      left?: never;
      right?: never;
    }
    
    // OffsetHorizontalOnly ИЛИ OffsetVerticalOnly.
    type Offset = OffsetHorizontalOnly | OffsetVerticalOnly;
      
    // Верно:
    // { left: 100 }
    // { right: 100 }
    // { top: 100 }
    // { bottom: 100 }
    
    // Неверно:
    // { left: 100, right: 100 }
    // { top: 100, bottom: 100 }
    // { left: 100, top: 100 }
    // { right: 100, top: 100 }
    // { left: 100, bottom: 100 }
    // { right: 100, bottom: 100 }

    Если понадобиться вариант с И/ИЛИ между осями, то можно так реализовать:
    // Левое ИЛИ правое значение.
    type OffsetHorizontal =
      | { left: number; right?: never; }
      | { right: number; left?: never; }
    
    // Верхнее ИЛИ нижнее значение.
    type OffsetVertical =
      | { top: number; bottom?: never; }
      | { bottom: number; top?: never; }
      
    // OffsetHorizontal И/ИЛИ OffsetHorizontal.  
    type Offset =  
      | OffsetHorizontal  
      | OffsetVertical  
      | (OffsetHorizontal & OffsetVertical);
      
    // Верно:
    // { left: 100 }
    // { right: 100 }
    // { top: 100 }
    // { bottom: 100 }
    // { left: 100, top: 100 }
    // { right: 100, top: 100 }
    // { left: 100, bottom: 100 }
    // { right: 100, bottom: 100 }
    
    // Неверно:
    // { left: 100, right: 100 }
    // { top: 100, bottom: 100 }
    Ответ написан
    1 комментарий
  • Можно ли заменить кликанье мышью по веб-интерфейсу cli-командой?

    @rPman
    Тут уже ответили, предлагают провести реверсинженеринг кода с целью симулировать запросы вне браузера. Это будет просто если разработчик веб приложения не потратил усилия для защиты от этого (зачастую в запрос включаются поля, значения которых формируются не простым кодом на javascript, и сложность повторения которого вне браузера обычно основа защиты).

    Если же выявить по простому такой запрос не просто, то можно просто симулировать нажатия на кнопки на javascript прямо в браузере, инжектнув свой код с помощью, на выбор, расширения (tempermonkey/greasemonkey) или вставив свой код прямо в консоль разработчика (это работает только для single page application, иначе при обновлении страницы придется повторять) или используя средства автоматизации самого браузера (на его основе сделан selenium, его и использовать, это когда твой код запускает браузер и в нем выполняет действия). Я рекомендую tempermonkey.

    Обычно достаточно узнать css селектор требуемого элемента (например в консоли разработчика, в инспекторе, правая кнопка на нужном элементе, копировать как css-selector) и выполнить что то типа $('css-selector').click(). Чуть сложнее в этом случае реализовать взаимодействие своего кода вне браузера с кодом внутри браузера, самое простое - поднять свой веб сервер (он тоже должен быть https, если целевое веб приложение его использует либо настроить браузер на обход запрета смешивания http и https контента, не делайте так для рабочего браузера, это не безопасно, но для использования только одного веб приложения это безопасно), к которому из javascript можно делать запросы на получение команд и отправку результата (если это сбор данных).
    Ответ написан
    Комментировать
  • Можно ли заменить кликанье мышью по веб-интерфейсу cli-командой?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Смотрите в консоли браузера, что передаётся со страницы в устройство. Потом делайте аналогичные запросы, например, через curl.
    Ответ написан
    2 комментария
  • Почему я могу изменять состояние объекта хранящийся в const std::unique_ptr и const std::shared_ptr?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Можно сделать указатель на const. Вот этот ваш const, он относится к самому указателю, его нельзя менять (в смысле, на другой адрес). Но после разыменовывания получается не константная ссылка. Вот оно в документации:
    typename std::add_lvalue_reference<T>::type operator*() const


    Там нет никакого const в типе возвращаемого значения, несмотря на то, что оператор можно вызывать у константных экземпляров класса. Зачем конкретно так сделано, я не знаю. Наверно, тут копируется поведение обычных указателей: там тоже можно иметь неизменный указатель на изменяемую область памяти.

    Так что если вы хотите запретить менять объект, то можно сделать так:
    void foo(const std::unique_ptr<const int>& ptr) {
        if (ptr) {
            *ptr += 5; // Ошибка компиляции.
            std::cout << *ptr;
        }
    }
    
    int main() {
        std::unique_ptr<const int> ptr = std::make_unique<const int>(5);
        foo(ptr);
    }


    Правда, придется писать много лишнего кода, если будете передавать неконстантный объект внутрь функции, которая хочет ссылку на константный.

    Но вообще, обычно нет смысла передавать unique_ptr по ссылке. Можно передать по ссылке сам объект, все равно владение в функцию не передается же. И уже там можно навешивать const, если надо. Или, если передавать просто unique_ptr, без ссылки, то даже лишнего кода не надо для обработки const:
    void foo(const std::unique_ptr<const int> ptr) {
    }
    
    int main() {
        std::unique_ptr<int> ptr = std::make_unique<int>(5);
        foo(std::move(ptr));
    }
    Ответ написан
    3 комментария
  • Может ли один и тот же сайт принадлежать разным владельцам?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Это называется dns spoofing. Если вы заставите комп жертвы делать запросы к вашему DNS-серверу или сможете взломать используемый жертвой DNS-сервер, то можете подменить web-сервер, откликающийся на некоторой имя. Но как подметил Alexey Dmitriev, большинство сайтов сейчас используют https и браузер жертвы начнёт предупреждать о недействительном сертификате.
    Ответ написан
    Комментировать
  • Как сделать доставку изменений на сервер?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    То, что вам нужно называется "Система доставки и развёртывания" или "CI/CD". Работает следующим образом:
    1. На Git сервере создаётся репозиторий - Github, GitLab и прочие сервисы (есть простые и лёгкие варианты для хостинга на своём сервере)
    2. На сервере в разделе CI/CD настраиваете пайплайн на пуш или пулл-реквест в репозиторий: обычно это запуск скрипта или нескольких в докере
    3. При наступлении данного события сервер запускает пайплайн

    Обычно пайплайн состоит из нескольких шагов:
    1. Сборка
    2. Тестирование
    3. Доставка
    4. Развёртывание

    В зависимости от особенностей проекта число шагов может меняться. Для доставки и развёртывания есть два стандартных метода:
    • CI/CD агент на сервере, который выполняет нужные скрипты в контексте оболочки сервера
    • Скрипт, который подключается к целевому серверу по SSH и через него же передаёт нужные файлы (артефакты - в контексте CI/CD процессов).
    Ответ написан
    Комментировать
  • Как на VPS сервере нажать чтобы файл сохранился?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    открыл файл

    Чем открывали? nano (nano /path/to/file)? Если да, то внизу nano имеются подсказки по горячим клавишам:
    - ctrl + o - сохранить, редактор спросит имя файла для записи, если нужно просто сохранить - ничего не меняем и жмем enter.
    - ctrl + x - выйти из редактора, если имеются не сохраненные данные, то редактор так же предложит их сохранить.
    Если это был vim, то так:
    1. Нажмите клавишу esc один или два раза.
    2. Наберите :wq (записать и выйти).
    Подключался через mobaxterm

    Слева в mobaxterm есть sftp (файловый менеджер). Вы можете найти нужный файл там, кликнуть по нему правой кнопкой мыши и выбрать "Open with default text editor". Файл откроется в вашем редакторе по умолчанию в той операционке, с которой подключаетесь. При сохранение такого файла - mobaxterm автоматически загрузит его обратно на сервер.
    Ответ написан
    2 комментария
  • Как на VPS сервере нажать чтобы файл сохранился?

    @pfg21
    ex-турист
    гугли "как выйти из vi" :)
    Ответ написан
    Комментировать
  • Почему в коде assembler выдает бесконечный цикл?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Инструкция syscall изменяет регистры RCX и R11. В регистр RCX сохраняется предыдущее значение регистра RIP, в регистр R11 - предыдущее значени RFLAGS. Регистр флагов RFLAGS изменяется в соответствии с системным вызовом. Если RCX и R11 используются в коде, то их следует сохранить перед вызовом syscall.
    Ответ написан
    2 комментария
  • Прозрачный DIV перекрывает элемент под ним?

    Fragster
    @Fragster
    помогло? отметь решением!
    Надо установить ему https://developer.mozilla.org/en-US/docs/Web/CSS/p... none, а активным элементам на нем - в auto
    Ответ написан
    1 комментарий
  • Какой сетевой протокол выбрать для умного дома?

    Francyz
    @Francyz
    Photographer & SysAdmin
    Как вы можете знать какой протокол будет актуальным через 15-20 лет? Тут Ванги не обитают.
    Есть ZigBee, есть более новее Matter. Будут они актуальны в через 15 ни вы ни кто либо еще знать не могут. Берите то, что актуально сейчас и пользуйтесь. Не нравится ZigBee, Matter в руки. Везде будут плюсы и минусы.
    Ответ написан
    4 комментария
  • Почему ноутбук не запускается с оперативной памятью?

    @99insania99
    Заказал плату на али

    А что же могло пойти не так? Даже догадок нет!
    Иди в магазин и покупай какой-нибудь crutial или adata или samsung. Обычно они с завода стоят. А лучше всего сходить до любого сервиса и попросить у ребят оперативки на поподкидывать и посмотреть, с каким объемом и производителем заведется.
    Ответ написан
    4 комментария
  • Почему длина long int 4 байта?

    @res2001
    Developer, ex-admin
    В Си так же как и в плюсах размер целочисленных типов не фиксирован, есть только ограничения, что
    sizeof(int) >= sizeof(short) >= sizeof(char) и т.п.

    Если для большинства типов, все таки размеры более-менее устоявшиеся для широкоиспользуемых архитектур и компиляторов, то в случае с long int все сложнее и действительно зависит от ABI. Т.е. даже на одной платформе но на разных компиляторах размер может быть разным. Например, сравните размеры типов в микрософтовском компиляторе и в mingw64 под 64 битной виндой на одном и том же компе.
    Кстати, не забудьте, что есть еще long long int.
    Чтоб не зависеть от подобных вещей рекомендую использовать типы с фиксированной длиной int32/int64 и т.п., которые объявлены в stdint.h

    Размеры типов с плавающей точкой float/double как раз стандартизованы, но не стандартами Си/С++, а стандартом IEEE754.
    Размер указателей - зависит от архитектуры. На 32 битных процессорах обычно это 4 байта, на 64 битных процессорах - 8.
    Ответ написан
    Комментировать