• Как найти на гитхабе живые форки?

    deepblack
    @deepblack
    insights -> network
    60d06c2da2b99542547445.png


    Там можно бегло оценить какой форк стоит выбрать.

    Либо как вариант автоматизировать это дело с помощью парсера реп (при условии что это оправданно)
    Ответ написан
    1 комментарий
  • Как реализовать систему входа по карте или qr коду?

    gbg
    @gbg Куратор тега Системное администрирование
    Любые ответы на любые вопросы
    Наймите специалиста, он вам все сделает. Причем начиная с техзадания.

    В вашей идее например нет никакого смысла в сканировании кода на стене, человек может просто нажимать кнопоньку на сайте или в приложении. Однако для этого нужно гарантировать, что на проходной есть гостевой вайфай.

    Более того, идея уязвима к тому, что код можно скопировать со стенки, и тогда некто Василий сможет под своей учеткой пропустить кого угодно, сканируя код сидя дома и присылая результат.

    Можете украсть идею у ЦППК - пользователь покупает билет, потом сканирует одноразовый код с монитора на турникете, "активируя" билет (так как код меняется, это доказывает, что человек физически стоит у конкретного турникета). Потом он может предъявлять уже другой код в качестве билета для проходя через турникеты и контролеров.

    Короче, это огрызок техзадания, а не вопрос, не по формату ресурса, к сожалению. У нас не приветствуются неконкретные вопросы и развязывание дискуссий и брейнштормов.

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

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Какие есть области без гитов

    Те, где кода на столько мало, что вести его историю нет необходимости.

    Без фрейморков

    Те, где фреймворки не помогают в решении задачи.

    Вероятно то, что вы ищите - школьный учитель по Pascal.
    Ответ написан
    Комментировать
  • Франшиза, как вести бухгалтерию и рекламу?

    alexgp13
    @alexgp13
    Руководитель ИТ-проектов
    Слишком объемный вопрос для тостера, причем обычно ответы на такие вопросы стоят достаточно больших денег...
    Обратитесь в аудиторскую компанию, там ответят на первую половину вопроса, заодно проконтролируют, чтобы данные о прибыли были правильными.
    На вторую половину вопроса Вам ответят в рекламном агентстве, можно и на фриланс к специалистам по продвижению обратиться.
    Ответ написан
    Комментировать
  • Какое направление выбрать, если не хочешь до конца жизни пилить формочки и гонять json?

    alexgp13
    @alexgp13
    Руководитель ИТ-проектов
    За свою жизнь мне довелось поработать в веб-разработке, автоматизации газопроводов, бухгалтерии, автоматизации бизнеса и даже дизайнером рекламы и журналистом. И останавливаться пробуя новое пока не собираюсь) При этом образование у меня - радиотехника.

    Образование не ограничивает круг возможных профессий, а жизнь иногда складывается так, что приходится заниматься совершенно неожиданными вещами. Выбирайте ту специальность, которая ближе Вам в данный момент, интернет здесь вряд ли подскажет оптимальный выбор, тем более что у каждого здесь свой собственный путь и своя правда - кто-то оканчивает ВУЗ и всю жизнь работает по специальности, а кто-то ищет себя в самых неожиданных областях.
    Ответ написан
    1 комментарий
  • Как правильно определять тип объекта в Typescript (React)?

    search
    @search
    мама говорит что я особенный
    Тайпскрипт правильно ругается потому что таргет события не обязательно должен быть дом элементом. События могут так же порождаться, например XHR запросами.

    Я бы на вашем месте сделал так называемую type guard функцию, в которой убеждался бы что таргет действительно элемент дом. Все элементы дом наследуются от объекта HTMLElement. Это можно использовать для проверки:

    const isHtmlElement = (v: any): v is HTMLElement => v instanceof HTMLElement;


    далее мы можем использовать эту функцию для проверки нашего таргета:

    const eventHandler = (e: Event) => {
      if (!isHtmlElement(e.target)) {
        return;
      }
      // Вот здесь мы можем смело работать с таргетом как с ДОМ Элементом
      e.target.classList.toggle('active');
    }


    УПД

    Еще информация к размышлению.

    Финальный код, сгенерированный тайпскриптом, не содержит информации о типах. В рантайме нельзя узнать тип интерфейса, выполнив, например `peremennaya instanceof VashInterfeis`. Но всегда можно создать type guard функию, которая будет определять что объект именно нужного типа по каким-то косвенным признакам (например по наличию определённых полей в объекте). Так как код guard функции невозможно провертить статическим анализватором, тайпскрипт не может гарантировать того что ваша guard фунция верна и не пропускает всё подряд. Поэтому, хорошим тоном является писать такой код, который не нуждается в подобных проверках. Это возможно. Код при таком подходе становится стройнее и легче для осмысления.
    Ответ написан
    1 комментарий
  • На каком этапе роста проекта приходится использовать Raw запросы?

    DevMan
    @DevMan
    на одних проектах вообще не использую, просто заранее тяжелые выборки загоняю в кэш.
    на других – вообще со старта. ибо много сырых данных, обновляющихся каждый день, а распихивать их по моделям нет ни смысла, ни необходимости (данные только читаются).
    в третьих - там, где не хватает возможностей и надо хитрить.

    в общем: все зависит, универсального ответа нет.

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

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Никто никому ничего не должен за исключением того, что прописано в законах и договорах.
    Ответ написан
    Комментировать
  • Должен ли бэкенд разработчик разрабатывать админку?

    JhaoDa
    @JhaoDa
    LaravelRUS Team
    sarcasm_on
    Да, в статье 99 Трудового кодекса так и написано
    2)... бэк енд должен самостоятельно сделать админку при разработке бэк енд
    8)... бэк енд разработчик должен сам понять и не утруждая заказчика сделать админку
    sarcasm_off

    Автор, проснись! Что за глупые вопросы? Какой «должен»? Как договоришься, так и будет. Конечно, заказчик хочет навалить на исполнителя побольше за те же деньги.
    Ответ написан
    Комментировать
  • Какой user agent у LetsEncrypt?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)


    Если честно, не вижу особого смысла ограничивать доступ к каталогу .well-known...
    Ответ написан
    Комментировать
  • Какое семейство микроконтроллеров не будет иметь проблемы с поставками на ближайший год?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Предлагаю обратиться экстрасенсам )
    На более популярные - будет повышенный спрос - соотвественно производители не будут справляться с производством - соответственно могут быть проблемы с поставками.
    Менее популярные - быстрее всего объем выпусков прикрутят, - тоже проблемы с поставками....
    Заказчики в связи с кризисом - также могут переключаться на неожиданные комбинации, чем провоцировать спрос.
    Где установится рыночный баланс - кто его знает.
    Те кто легко это может спрогнозировать - давно стали миллионерами.
    Ответ написан
    3 комментария
  • Какой роутер выбрать для дома?

    @antonwx
    Вам бы для начала продиагностировать проблему, прежде чем пытаться её решить. Временно подключите кабелем телевизор и посмотрите, уйдёт ли проблема. Если да, просканируйтe wi-fi пространство inssider-ом и попробуйте сменить канал на менее загруженный. Попробуйте временно роутер перенести к телевизору и посмотреть уйдёт ли проблема. Возможно проблема и не в роутере вовсе, а в сетевой карте телевизора, или в прошивке или же вообще в стриминговом сервисе.
    Ответ написан
    1 комментарий
  • Везде ли нужно проверять на существование элемента в массиве?

    @Vitsliputsli
    Вы описываете 2 стандартных подхода:
    1) падаем в ошибку при любой непонятной ситуации;
    2) при непонятной ситуации пробуем продолжить работу, если это возможно.
    1 подход применяется в тех местах которые работают критически важными бизнесово данными. 2 подход для маловажных вещей, которые не способны исказить вещи из предыдущего предложения.
    Т.е. в большинстве случаев нужно падать в ошибку, и только если знаете, что ошибка не несет никакого серьезного аффекта (к примеру выводить текст на экран жирным шрифтом или нет), то можно продолжать работу.
    Ответ написан
    Комментировать
  • Хайп вокруг ЯП Rust и C?

    bingo347
    @bingo347
    Crazy on performance...
    Насколько критичной проблемой для программиста является ручное управление памятью, которое называют недостатком языка Си?
    Неосвобожденная память (утечка памяти) - это самое безобидное, что может произойти.
    - Сделать free дважды - это UB
    - Забыли проверить результат malloc/calloc/realloc на не NULL, разыменовали - UB
    - Почитали память, в которую ни разу не писали - UB
    - Разыменовали указатель после free - UB
    - Гонка данных - UB
    - ...и еще дофига всего, от чего в лучшем случае программа просто будет работать неправильно, например спалит Ваш пароль, или переведет Ваши деньги на другой счет 10 раз.

    Новый язык программирования Раст, как заявляют, лишен этого недостатка

    Система типов Rust гарантирует лишь одно - в safe коде не будет UB. Утечка памяти, кстати, не является UB, поэтому память вполне себе можно утечь в safe коде, помимо циклических счетчиков ссылок std дает немало возможностей сделать это напрямую:
    https://doc.rust-lang.org/beta/std/mem/fn.forget.html
    https://doc.rust-lang.org/beta/std/mem/struct.Manu...
    https://doc.rust-lang.org/beta/std/boxed/struct.Bo...
    https://doc.rust-lang.org/beta/std/vec/struct.Vec....

    но разве число ошибок в программе зависит именно от наличия или отсутствия ручного управления памятью
    В Rust ручное управление памятью, как и в C и в C++, просто есть культура, что если некая структура аллоцировала память, то она ее освободит. Всякие Vec, Box и т.д. делают это в Drop. В C++ многие повседневные типы так же освобождают в деструкторе память, которую они выделили. Однако в Rust есть разделение на safe и unsafe код и для прикладного программирования safe возможностей более чем достаточно. В C++ же весь код unsafe.

    разве общее число ошибок не перераспределяется на другие недостатки программы
    Нет, не перераспределяется. Хорошая система типов действительно может избавить от многих ошибок, что в целом сделает ПО более надежным. Но надо понимать, что от всех ошибок не избавит ни что. Банальная дискоммуникация с заказчиком порождает огромное число багов.
    Но в Rust очень быстро привыкаешь к такому замечательному подходу в разработке, как Type Driven Development, который позволяет предупредить многие ошибки еще до написания кода. После Rust я стал применять этот подход и в других ЯП, и он работает очень хорошо, даже там, где типизация не такая строгая.

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

    P.S. Вот интересная статья про Rust к прочтению: https://steveklabnik.com/writing/a-sad-day-for-rust
    И к чему она привела: https://github.com/fafhrd91/actix-web-postmortem
    Ответ написан
    4 комментария
  • Хайп вокруг ЯП Rust и C?

    vabka
    @vabka
    Токсичный шарпист
    По порядку:
    Насколько критичной проблемой для программиста является ручное управление памятью, которое называют недостатком языка Си?

    С неправильным управлением памятью связано очень много ошибок. Например в хроме вроде около половины CVE с этим связано. Ещё можно вспомнить HeartBleed в OpenSSL, который тоже связан с неправильным управлением памятью.

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

    Да
    разве общее число ошибок не перераспределяется на другие недостатки

    1. Самые сложные в исправлении ошибки - кривое управление памятью и многопоточность, обе их Rust Решает
    2. Нет, ошибки не перераспределяются, это же не тараканы.
    являются ли ошибки с памятью ошибками программиста

    Если управление памятью ручное, то это ошибки, которые допустил разработчик.
    Если управление памятью автоматическое (хоть через GC, хоть через Borrow checker), то это ошибка компилятора/рантайма/языка.

    которые вылились бы в другое русло, не будь этой возможности ошибочного использования памяти?

    Не обязательно.

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

    rozhnev
    @rozhnev Куратор тега MySQL
    Fullstack programmer, DBA, медленно, дорого
    В MySQL, начиная с версии 8.0, вы можете использовать оконную функцию row_number():
    select 
    	class,
    	price
    from (
      select 
    	  class,
    	  price,
    	  row_number() over (partition by class order by price) rn
      from complex
    ) prices
    where 
    	(class=1 and rn < 3) -- 2 econom
    	or (class=2 and rn < 4) -- 3 comfort
    	or (class=3 and rn < 2) -- 1 premium
    ;


    Mysql online
    Ответ написан
    1 комментарий
  • Не могу понять, в чём ошибка?

    dyuriev
    @dyuriev
    A posteriori
    Каждый день одно и тоже
    1. Открываем официальную документацию: header();
    2. Офигиваем, что она доступна на русском
    3. Читаем:
      Помните, что функцию header() можно вызывать только если клиенту ещё не передавались данные. То есть она должна идти первой в выводе, перед её вызовом не должно быть никаких HTML-тегов, пустых строк и т.п. Довольно часто возникает ошибка, когда при чтении кода файловыми функциями, вроде include или require, в этом коде попадаются пробелы или пустые строки, которые выводятся до вызова header(). Те же проблемы могут возникать и при использовании PHP/HTML в одном файле.
    4. Ищем, какой вывод попал перед отправкой заголовков


    А так же, в конце то концов, внимательно читаем ошибку:
    Cannot modify header information - headers already sent by
    Вольный перевод:
    Невозможно изменить заголовки, так как они уже отправлены


    Читаем ошибку дальше:
    output started at /var/www/u1316098/data/www/battle-mine.ru/donate/buy.php:1
    Ох ниче себе, да?
    передача данных началась в первой строке /var/www/u1316098/data/www/battle-mine.ru/donate/buy.php
    Ответ написан
  • Как закодировать ответ в base64?

    Вам нужно переписать код так:
    $data = [
        'Hi' => 1,
        'D' => [
            'type' => 'xz',
            'anything' => $any2
        ],
        'Any' => [
            [
                'type' => 'xz',
                'anything' => $any2
            ]
        ],
        'Anything' => [],
        'Minus' => [
            'Content',
            'Content'
        ],
        'Block' => [
            'dog' => "Hello-$hello2",
            'cat' => '',
            'parrot' => ''
        ]
    ];
    
    if ($content != $content2) {
        $data['Anything'][] = [
            'block1' => $block2
        ];
    }
    
    $response = json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
    // $response = base64_encode($response);
    
    echo $response;


    Тогда его можно будет закодировать в Base64
    Ответ написан
    Комментировать
  • Как убирать disabled после ввода 18 символов в input через IMask?

    0xD34F
    @0xD34F Куратор тега JavaScript
    phoneDisabled.addEventListener('input', function() {
      buttonDisabled.disabled = phoneMask.unmaskedValue.length !== 11;
    });
    Ответ написан
    Комментировать
  • Какие еще преимущества у юнит-тестов, кроме того, что они отлично обеспечивают регрессионное тестирование?

    @jazzus
    500 ошибки это слишком просто, они в логах. Гораздо сложнее и грустнее обнаружить логическую ошибку, которая висела месяцами и никто не знал. Плюс, если ты уже код научился писать и юзаешь IDE, то все 500 ошибки будут в дев режиме. Тесты нужны, в первую очередь, для фиксации функционала и тз. Я пишу только http тесты и до разработки. Чтобы руками формы по 100 раз не забивать. А то я тут одно видео видел, где ларавельщик регистрацию проверял и с каждым изменением форму заново заполнял и отправлял. По мне так низкокачественная, скучная и неэффективная разработка. С тестами все проверки автоматом, просто разрабатываешь до зелени. И потом уверенно заливаешь на продакшн и знаешь, что все работает, как задумано, а не как получилось.
    Ответ написан
    6 комментариев