• Почему на сайтах всё чаще используют CAPTCHA третьей стороны?

    @alex1478
    Так проще для вебмастера: легко подключить и степень защиты от ботов выше чем у простой цифро-капчи из коробки.
    Ответ написан
    Комментировать
  • Почему на сайтах всё чаще используют CAPTCHA третьей стороны?

    vabka
    @vabka Куратор тега Веб-разработка
    Токсичный шарпист
    1. Решатель обычной циферной капчи пишется за пару вечеров.
    2. Иногда хочется обнаруживать ботов без всплывания капчи
    Решать эти задачи сложно и дорого, у разработчиков сайтов есть и более важные дела.
    reCAPTCHA и hCAPTCHA решают обе этих проблемы.
    Ответ написан
    Комментировать
  • Почему на сайтах всё чаще используют CAPTCHA третьей стороны?

    SagePtr
    @SagePtr
    Еда - это святое
    Сервисы капч видят статистику по всему интернету - на какие ещё сайты с данными капчами с конкретного IP заходят и с какой частотой - на основании всей совокупной информации делают выводы касательно легитимности пользователя и дают задание, если действия подозрительны или слишком много запросов в определённый промежуток времени. Если собственную капчу установить - такую статистику собрать физически не получится.
    Ответ написан
    Комментировать
  • Хайп вокруг ЯП Rust и C?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    не являются ли ошибки с памятью ошибками программиста, а не компилятора и языка программирования

    Вы попробуйте на Rust что нибудь написать. Там не то что ошибочный, там безошибочный код непросто скомпилировать))
    Ответ написан
    Комментировать
  • Хайп вокруг ЯП Rust и C?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Хайп вокруг ЯП Rust и C?

    Нет никакого хайпа. Кто писал на С - тот пишет и дальше. Кто хочет модно-стильно-молодежно - пишет на Rust
    ручное управление памятью, которое называют недостатком языка Си?

    Это не баг. Это фича (C)
    Это не недостаток языка. Это его достоинство. (Я сейчас конечно же про чистый С, а не про плюса). Языков с автоуправлением памятью - хоть #опой жуй. "Убивцев" С - тоже не меньше - появляются и исчезают, как пузыри, оставляя после себя неприятный запах...
    и не являются ли ошибки с памятью ошибками программиста,

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

    Броском кухонного ножа можно спасти жизнь человека. А можно ее забрать. Является ли возможность ножа убить насмерть ошибкой его разработчика? Нет, потому что нож предназначен для тех, кто умеет его применять. Не умеешь - используй столовый.
    разве общее число ошибок не перераспределяется на другие недостатки программы или программиста

    Нет конечно же, это же не тараканы :) их потравили в одной квартире - они "перераспределились" в другие
    Ответ написан
    Комментировать
  • Хайп вокруг ЯП 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?

    zagayevskiy
    @zagayevskiy
    Android developer at Yandex
    Уменьшение количества ошибок одного вида никак не влияет на количество ошибок других видов. Так что в целом количество ошибок уменьшается. Наверное.
    Ответ написан
    Комментировать
  • Хайп вокруг ЯП Rust и C?

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

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

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

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

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

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

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

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

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

    saboteur_kiev
    @saboteur_kiev Куратор тега Книги
    software engineer
    В офисе есть книжный шкаф, туда можно сдать. Но есть книги без времени. Для потомства оставляю.
    Ответ написан
    Комментировать
  • Куды вы деваете б/у литературу по программированию?

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

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

    vabka
    @vabka
    Токсичный шарпист
    Либо пусть на полке лежит
    Либо выкидываю
    Либо, если книга толстая, можно использовать как подставку под монитор
    Ответ написан
    Комментировать
  • Маркетинговые ходы вокруг языка Ассемблер?

    @galaxy
    Ведь опытные программисты укладываются в набор команд 8086
    Нет. Лет 30 уже никто не пытается уложиться в 8086. Наоборот, если уж берутся писать на ассемблере, то часто с целью использования каких-то железо-зависимых вещей.

    Как и программы на Си, программы на Ассемблере нужно пересобирать под каждую следующую платформу. Разве нет?
    Что вы вкладываете в слова "новая платформа"?
    Другая ОС? - да, надо пересобирать, и часто менять, ведь API разных ОС отличается. При этом C часто позволяет исходный код программы не трогать, т.к. функции стандартной библиотеки, POSIX API предоставляют платформонезависимый интерфейс. А вот в программе на asm соответствующий код придется переписать.

    Новая версия ОС? - здесь есть свои нюансы, но собранная статически программа обычно прекрасно работает на протяжении многих поколений ОС (вы же не загружаете новую версию, допустим, игры под каждую версию Windows? Взять вон diablo 2 - как работала она под Win 98, так же отлично тот же бинарник заведется в Win 10).

    Новый процессор? - эти вообще паталогически обратно совместимы. Код, написанный или скомпилированный чисто под 30-летний 386 будет работать на i9 (при условии совместимости по пунктам выше).

    Возвращаясь к первоначальному вопросу: вы, видимо, не понимаете или не придаете значения тому, что существуют не только x86 процессоры. Изначально ЯП высокого уровня разрабатывались именно с целью абстагировать код программы от конкретного железа. В 60-80-е годы не было единой и даже какой-то одной распространенной железной платформы, что же прикажете, допустим, стандартные утилиты Unix переписывать каждый раз с начала и до конца на новом (подчеркну, НОВОМ, другом) ассемблере?
    Даже сейчас, когда вроде бы кругом x86, есть Itanium (ну ок, был в недавнем прошлом), ARM (в виде нескольких версий архитектуры и огромном количестве железных воплощений), где-то теплятся SPARC и PowerISA. Наконец, микроконтроллеры (привет ардуинщикам).

    Коротко: ЯП высокого уровня (не только C) позволяются абстагироваться (до определенных пределов) от железа и от ОС и не менять исходный код программ при переносе на другую платформу, ограничиваясь механической процедурой перекомпиляции.
    Ответ написан
    7 комментариев
  • Какие преимущества получает программист сегодня при переходе с ASP.NET Core на PHP для веб-разработки?

    @caballero
    Программист
    нету никаких тонкостей. Зависит от проектов
    Ответ написан
    Комментировать