Задать вопрос
  • Как с помощью смартфона проверить ширину лазерного реза?

    GavriKos
    @GavriKos
    С такой точностью не каждая линейка справится. Смартфон с его погрешностями и переменной средой с тонной преобразований и подавно.

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

    ValdikSS
    @ValdikSS
    Самый простой вариант — отправить любой мусор первым UDP-пакетом, а затем устанавливать соединение.

    1. В конфигурационном файле клиента задать статичный ListenPort, например, ListenPort = 56789
    2. Выполнить
    sudo nping --udp --count 1 --data-length 16 --source-port 56789 --dest-port DEST_PORT DEST_IP

    3. Подключаться.

    https://ntc.party/t/wireguard/4968/6
    Ответ написан
    5 комментариев
  • Замыкания не существует?

    Замыкания есть.
    Только в спецификации это называется "Lexical Environment" (п 8.1)
    https://262.ecma-international.org/10.0/#sec-lexic...
    Вот ещё с MDN:
    https://developer.mozilla.org/en-US/docs/Web/JavaS...
    Ответ написан
    Комментировать
  • Как можно отрефакторить эти циклы?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Я так понял, вы там перебираете 8 соседей клетки на замкнутом поле (после последней строки идет первая, перед певрой идет последняя и так же для столбцов). Вам поможет опреация взятия остатка от деления (она же деление по модулю).

    Можно так:
    for (int dx = -1; dx <= 1; ++dx) {
      for (int dy = -1; dy <= 1; ++dy) {
        if (dx == 0 && dy == 0) continue;
        int nx = (i + dx + height) % height;
        int ny = (j + dy + SIZE) % SIZE;
        neighbours += proc_states[iter][nx * SIZE + ny];
      }  
    }


    Или можно завести
    const int dx[8] = {0, 1, 1, 1, 0, -1, -1, -1};
    const int dy[8] = { 1, 1, 0, -1, -1, -1, 0, 1};
    ...
    for (int k = 0; k < 8; ++k) {
      int nx = i + dx[k];
      int ny = j + dy[k];
      ...
    }


    Можно не заводить временные переменные и ужать код до двух строк.

    В конструкции (i + dx + SIZE) % SIZE есть лишний +SIZE, ибо -1 % SIZE == -1 и чтобы для 0 предыдущее значение было SIZE-1 надо прибавить лишний SIZE под модулем.
    Ответ написан
    Комментировать
  • Какую легковесную IDE выбрать для C++?

    Я бы попробовал VS Code.
    Он, конечно, жрёт сильно больше ресурсов, чем ST, но в нём работать будет гораздо комфортнее.
    + Остаётся ощущение легковесной среды, почти как от ST.
    Ответ написан
    2 комментария
  • Какую легковесную IDE выбрать для C++?

    Wohlstand
    @Wohlstand
    Инженер-программист С++
    Я сам для себя использую Qt Creator. По мне очень удобная и шустрая среда. Однако, хочу предупредить: в последних версиях присутствует модуль clangd (модель кода CLang): штука очень полезная, позволяющая находить различные косяки на лету без необходимости собирать проект, однако, она жрёт оперативку очень знатно. Поэтому, если машина слабая, то лучше отключить эту штуку. Мне лично среда ОЧЕНЬ нравится не только за её легковесность, но и за встроенный функционал по рефактрорингу (умному переименованию элементов кода, например, быстрому созданию тел функций и методов из прототипов сразу в нужном месте, и т.п.). Сравнивал я с Clion: последняя удобная по части быстрых подсказок и некоторой автоматизации по исправлению косяков, но по большей части менее удобная и невероятно тяжеловесная (да "здравствует" Java).
    Ответ написан
    Комментировать
  • Почему не возникает ошибка при вводе слова больше длины чем выделена память?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    должна возникнуть ошибка, но по факту её не возникает.

    А ты собери свою программу с санитайзером памяти (-fsanitize=address) и будет тебе ошибка.
    Обращение к памяти за пределами выделенных массивов -- это UB, отсутствие видимого эффекта -- допустимый вариант поведения при UB.
    Ответ написан
    Комментировать
  • Может ли быть MVC Без views?

    View - это не всегда то, что видит пользователь.
    Под View также вполне подпадает json-объект, который возвращает контроллер в случае апишки.


    Или для чистого API есть более подходящие архитектуры?

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

    PS: Не нужно придумывать красивое название для архитектуры, чтобы писать нормально.

    А так вообще для вдохновения посмотри на:
    - Hexagonal architecture
    - Onion architecture
    - Clean architecture
    - Ports and adapters
    - N-tier architecture
    - Vertical slice architecture
    Ответ написан
    1 комментарий
  • Почему программа вообще заходит в цикл и почему тут же завершается при присваивании?

    Ответ для C++
    Не указав инициализатора при объявлении переменной num, вы используете default initialization. Почему? Смотрим по ссылке:
    Default initialization is performed in three situations:
    1) when a variable with automatic, static, or thread-local storage duration is declared with no initializer;

    Это как раз ваш случай.

    Далее:
    The effects of default initialization are:
    ......
    otherwise, no initialization is performed: the objects with automatic storage duration (and their subobjects) contain indeterminate values.

    Итого, согласно третьему описанному случаю, ваша переменная num содержит неопределённое значение (indeterminate value).

    Читаем далее:
    Use of an indeterminate value obtained by default-initializing a non-class variable of any type is undefined behavior (in particular, it may be a trap representation), except in the following cases:
    ...

    Ваш случай не попадает под исключения, следовательно вы схлопотали undefined behavior.

    Что такое undefined behavior? Это значит, что компилятор что хочет, то и генерирует на выходе:
    Compilers are not required to diagnose undefined behavior (although many simple situations are diagnosed), and the compiled program is not required to do anything meaningful.

    Вывод: не делать так, чтобы в программе был undefined behavior.

    Ответ для C
    Не указав инициализатора при объявлении переменной num, вы используете implicit initialization. Смотрим по ссылке:
    If an initializer is not provided:
    - objects with automatic storage duration are initialized to indeterminate values (which may be trap representations)
    ...

    Это как раз ваш случай.

    Читаем далее:
    If an indeterminate value is used as an argument to any standard library call, the behavior is undefined. Otherwise, the result of any expression involving indeterminate values is an indeterminate value (e.g. int n;, n may not compare equal to itself and it may appear to change its value on subsequent reads)

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

    Вывод: не делать так, чтобы в программе встречалось использование indeterminate values.
    Ответ написан
    3 комментария
  • Для чего нужна двойная ссылка &&?

    Это называется rvalue reference
    Ответ написан
    Комментировать
  • Какая само мало требовательная ос кроме Chrome OS?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Alpine Linux наверное
    Ответ написан
    Комментировать
  • Сколько занимает в памяти Struct{}{}?

    не смотря на то что сама структура занимает 0 байт, конечно же есть накладные расходы на ее объявление, хранение указателя, ссылки и т.п. Так что это совсем не 'ничего', но использование struct{} имеет наименьшее потребление памяти https://medium.com/easyread/golang-series-empty-st...

    P.S. https://www.reddit.com/r/golang/comments/om990a/ho...
    Там есть интересное пояснение как работает empty struct в golang.
    Ответ написан
    Комментировать
  • Зачем нужны дженерики, если можно проще?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Зачем нужны дженерики, если можно проще?

    дженерики тут ни при чем.

    По сути вы пытаетесь передать в print1 (в заккоментированном коде) срез другого типа. Да, тип элементов среза отвечает вашему интерфейсу intf, но сам срез нет. Следующий вызов вполне валиден, но с типам i1 и i2 вы такого не провернете.
    func main() {
      print1([]intf{nil, nil})
    }
    Ответ написан
    2 комментария
  • Как сделать регулярное выражение для строки 11.22-+2222.22-+333.22-+44.22?

    0xD34F
    @0xD34F Куратор тега Регулярные выражения
    ^\d{1,4}(\.\d{1,2})?([+-]\d{1,4}(\.\d{1,2})?){0,3}$
    Ответ написан
    2 комментария
  • Почему можно foo[len(foo):]?

    @iveronanomi
    Вы ошибаетесь, по поводу отсутствия документации на эту тему
    https://golang.org/ref/spec#Slice_expressions

    For convenience, any of the indices may be omitted. A missing low index defaults to zero; a missing high index defaults to the length of the sliced operand:


    a[2:]  // same as a[2 : len(a)]
    a[:3]  // same as a[0 : 3]
    a[:]   // same as a[0 : len(a)]
    Ответ написан
    Комментировать
  • Rust unsafe, какие есть подводные камни и как подходить к дизайну C API?

    vabka
    @vabka Куратор тега Rust
    Не пудри себе мозги и возьми уже готовую безопасную обёртку над raylib
    https://crates.io/crates/raylib

    А гайд по работе с unsafe - это rustonomicon

    unsafe сам по себе просто позволяет использовать сырые указатели + вызывать другие unsafe функции.

    Безопасная обётка - это когда ты при помощи типов и всяких валидаций гарантируешь корректное использование.
    Вот пример из того что выше:
    use raylib::prelude::*;
    
    fn main() {
        let (mut rl, thread) = raylib::init()
            .size(640, 480)
            .title("Hello, World")
            .build();
    
        while !rl.window_should_close() {
            let mut d = rl.begin_drawing(&thread);
    
            d.clear_background(Color::WHITE);
            d.draw_text("Hello, world!", 12, 12, 20, Color::BLACK);
        }
    }

    Если для вас это магия, то тогда нужно чуть глубже изучить Rust и посмотреть в исходники.

    На будущее: не пишите огромную портянку текста с кучей вопросов, а пишите только то что непосредственно относится к основному вопросу.
    Другие вопросы задавайте отдельно.
    Ответ написан
    Комментировать
  • Как узнать, онлайн ли человек в телеграм?

    Vindicar
    @Vindicar
    RTFM!
    > "status": "recently",
    Читаем доки.
    status (str, optional) – User’s Last Seen & Online status. Can be one of the following: “online”, user is online right now. “offline”, user is currently offline. “recently”, user with hidden last seen time who was online between 1 second and 2-3 days ago. “within_week”, user with hidden last seen time who was online between 2-3 and seven days ago. “within_month”, user with hidden last seen time who was online between 6-7 days and a month ago. “long_time_ago”, blocked user or user with hidden last seen time who was online more than a month ago. None, for bots.
    Ответ написан
    1 комментарий
  • Стоит, ли изучать delphi?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Лёгкость изучения сильно преувеличена, востребована только при поддержке старых проектов. Лучше посмотрите в сторону c# и visual studio
    Ответ написан
    2 комментария
  • Генератор логотипов для сайта бесплатный?

    VladimirARS
    @VladimirARS
    Ответ написан
    Комментировать
  • Есть ли примеры структуры go проекта с воркерами?

    EvgenyMamonov
    @EvgenyMamonov Куратор тега Go
    Senior software developer, system architect
    Есть смысл скомпилировать CLI приложение и запускать уже бинарник с нужными параметрами, например так
    yourprog worker1
    yourprog worker2

    Можно использовать вот эти библиотеки:
    https://github.com/urfave/cli (хороший и простой, советую начать с него)
    https://github.com/spf13/cobra (очень мощный, его использует Docker)

    Структура проекта у вас также немного изменится, в Go принято делать папочку cmd, типа так:
    cmd/
    cmd/worker1.go
    cmd/worker2.go

    Образец есть в каждой из библиотек, что я выше написал.

    По структуре проекта на Go уже был вопрос, вот тут хорошо описано Структура проекта на Golang?
    Ответ написан
    Комментировать