Задать вопрос
  • Стоит ли поступать в вуз на программу по математике, если в будущем хочешь иметь профессию, связанную с программированием?

    15432
    @15432
    Системный программист ^_^
    Выбирайте "прикладная математика и информатика" в вузе посложнее. Я закончил ВМК МГУ по этому направлению и программирования у нас было от силы 5%, зато под 30 различных математических предметов.

    Программист (имхо) это прежде всего математик. Для разработки алгоритмов нужно мыслить алгоритмами, этому как раз там учат.
    Ответ написан
    1 комментарий
  • Необходимость сохранения инвариантов при мат. индукции?

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    Очевидно, да. Чтобы доказать утверждение по индукции, вам надо из индукционного предположения P(k) доказать P(k+1). Если P(k+1) состоит из кучи частей Pi(k+1), то надо их все доказать. Ведь иначе у вас P(k+1) окажется истинным лишь частично, а значит вы индукционный шаг не доказали.
    Если вам надо доказать, что "все овцы имеют 4 белые ноги", а вы выводите, только "у них 4 ноги", то вы не доказали исходное утверждение, ибо из "4 ноги" не следует "4 белых ноги". Может быть, у них 4 черных ноги.
    Ответ написан
    1 комментарий
  • Чем опасно держать свой публичный почтовый сервис?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    Серверов стало меньше, потому что крупные публичные почтовые серверы ужесточили правила приемки писем. Для почтового сервера сейчас нужно иметь SPF, DKIM, DMARC, PTR и следить, чтобы не попасть в черные списки.
    Раньше любой утюг мог отправить почту, которую приняли бы все.
    За 5 минут сервер, от которого будут принимать почту сейчас не настроить
    Ответ написан
    1 комментарий
  • Как засудить провайдера за ограничения к иностранному VPS?

    NeiroNx
    @NeiroNx
    Программист
    Да никак - тут две разных правовых зоны. Провайдер российский - обязан соблюдать рососийские законы. А VPS - не обязан соблюдать российские законы. По сути все что ты купил в EU - в россии не имеет никакой юридической силы, тоесть российский провайдер вообще не обязан тебе давать доступ к тому VPS.

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

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Никак не засудить. Провайдерт обязан пропускать трафик через ТСПУ, которым управляет Роскомнадзор. Сам провайдер не знает, что там происходит, что блокируется, что пропускается.
    Это всё равно, что подать в суд на таксиста, который не довёз вас до дома из-за знака "кирпич", ну и на ГАИ заодно.
    Ответ написан
  • Возможно ли написать программу, которая будет удалять все данные с дисков?

    VoidVolker
    @VoidVolker Куратор тега Железо
    Dark side eye. А у нас печеньки! А у вас?
    Да, именно удалять — возможно. А вот скорость удаления данных с диска зависит от скорости работы накопителя. Для полного удаления данных необходимо полностью обнулить каждую ячейку памяти в накопителе. По умолчанию ОС удаляет только запись о файле в ФС, а вот содержимое файла остаётся и будет перезаписано когда-нибудь в будущем, когда дойдёт очередь до данного сектора/ячейки памяти. Кроме того, для более надёжного удаления данных с HDD используется многократная запись, чтобы не осталось даже остаточного заряда, который теоретически можно считать. Есть даже специальные приложения для удаления данных с дисков с многократной записью в каждую ячейку. Аналогично и для шифрования — надо сначала считать данные с диска, зашифровать их, записать на диск и только потом удалить оригинальные данные.

    Единственное, что может очень быстро удалить данные с диска — устройства для физического уничтожения дисков. Для HDD используются мощные электромагниты. С SSD несколько сложнее, т.к. там используется флеш-память: тут уже требуется физическое разрушение микросхем — измельчить в специальном шредере очень мелко, разогреть больше сотни-полутора градусов, сжечь электромагнитным импульсом (из разряда экзотики конечно же - ибо куда сложнее и есть риск сжечь чего лишнего). Так же существуют специальные SSD со встроенным механизмом уничтожения.
    Ответ написан
    Комментировать
  • Возможно ли написать программу, которая будет удалять все данные с дисков?

    CityCat4
    @CityCat4
    Жил да был черный кот за углом...
    Не с того начали обсуждение :) Обсуждение вопроса защиты информации всегда начинается с обсуждения модели нарушителя. То есть с ответа на вопрос "какую ситуацию я хочу предотвратить и от кого защититься". Потому что разные категории "кого" имеют разные возможности в том числе и в отношении "наплевать на закон и состояние здоровия".

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

    Никакое шифрование вас не спасет от гопоти - опять же данные она может быть и не получит, но с помощью паяльника может изрядно попортить Вам здоровье

    Поэтому рассмотрение вопроса надо начинать с конкретизации задачи - кто защищает, что защищает, от кого защищает. Технические-то средства есть - это крайне мощный ЭМИ. Неудобство в том, что отлаживать сложно, ибо он сжигает не только ssd, но и все вокруг :D
    Ответ написан
    1 комментарий
  • Оператор, операция, функция, процедура - что всё это значит?

    В отрыве от конкретного языка программирования нет смысла рассматривать эти термины.
    Ответ написан
    Комментировать
  • Покупка macbook air m4?

    GavriKos
    @GavriKos
    Микропетпроджект - https://voidtrack.space/
    Я бы советовал покупать железку под потребности софта. Если софт требует винду и x86 - покупать железку на которой нативно работает винда и x86.
    Если вам надо пахать - вы же не покупаете поршак?
    Ответ написан
    Комментировать
  • Говорят,что не надо знать матем. при изучении программирования, но почему все задачи математические?

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

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

    В универах и остальных заведениях подобного характера математику и программирование скрещивают для того чтобы будущий программист научился на самом базовом уровне выстраивать алгоритмы решения задачи. Грубо говоря, шаг 1 + шаг 2 + шаг 3 + шаг 4 + шаг 5 = результат. Если тебе чисто рассказывать про переменные, циклы, массивы и т.д. ты не поймешь нахрена это все надо и как это использовать чтобы зарабатывать деньги. Если тебе с нулевой дать решать бизнес задачи то это только лишнее грузилово мозга в и так не совсем простой сфере. Поэтому и используют математику как самое простое где можно показать как использовать те или иные конструкции в языках программирования и научить склеивать это все так чтобы получить результат требуемый.
    Ответ написан
    Комментировать
  • Почему i? Почему переменную, используемую в циклах, обычно называют именно i?

    15432
    @15432
    Системный программист ^_^
    Пошло из математики (Xi, Yj), продолжилось в Фортране (начиная с имени i переменные по умолчанию интовые были), потом все как-то привыкли
    Ответ написан
    Комментировать
  • Как называется такая структура данных?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Никак не называется. Можно структуры комбинировать для ваших задач, но это частные случаи применения структур, не настолько частые, чтобы давать этой комбинации какое-то имя. Если уж хочется назвать это как-то, то это все еще будет хеш-таблица с какими-то вспомагательными пристройками для каких-то дополнительных нужных вам свойств (итерация).

    И вообще, у вас тут намудрено, почему нельзя сделать просто:
    let objects: HashMap<Uuid, Object>;

    Тут все такой же O(1) доступ к элементу по id. Зачем вам массив? Вы там добились простой и cache-friendly итерации по всем объектам? Не факт, что это уже не реализовано внутри HashMap. По крайней мере во многих языках можно проитерироваться по всем объектам в стандартной хеш-таблице.

    Зато у вас там удаление элемента - это что-то сложное. Особенно, если вы не хотите избежать фрагментации и неиспользованного места в массиве.
    Ответ написан
    4 комментария
  • Можно ли добиться постоянного O(nlogn) для квиксорта в любом случае?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Да, можно. Для этого надо в качестве pivot'а выбрать медиану. если это сделать за O(n) в худшем случае, то общая сложность QuickSort'а будет O(n log n).

    Для выбора медианы за O(n) есть, например, вот такой алгоритм. В каких-то источниках его еще называли алгоритмом кнута-пратта-мориса-ривеста-тарьяна. Кажется, но я их найти не могу, так что я какие-то фамилии напутал, но помню, что там было 5 великих информатиков.

    На практике же это не применяют, потому что этот алгоритм хоть и имеет линейную сложность в худшем, константа там такая, что там на квадрат хватит и еще на логарифм сверху останется. Просто используя какие-нибудь случайные числа можно добиться гораздо лочшей производительности.
    Ответ написан
    Комментировать
  • Какой мак мини взять - на интеле 2018 или M2?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    Если ограничений м1 по софту и т.п. нет, т весь нужный вам софт есть под arm - надо брать его. Работает быстрее интела, не лагает.
    И так как свежее, вероятно дольше будет обновляться.
    Ответ написан
  • Что делать если клиент не отдает деньги?

    an-tar
    @an-tar
    Full stack web developer
    А чем мотивирует задержку клиент?
    Все варианты возможны - ограничьте доступ, сделайте бекап, если выплаты были обещаны много ранее через полгода. В суде вряд ли что-то удастся доказать, или это будет долго и муторно. Вам урок - документы нужны, вот как раз для такого случая.
    Решать вам, по ситуации и контексту, мы тут всех нюансов не знаем.
    Ответ написан
    4 комментария
  • Используется ли двухканальный режим оперативной памяти внутри VirtualBox?

    @Drno
    Он используется на хосте.
    А виртуалка уже юзает то, что используется на хосте
    Ответ написан
    Комментировать
  • Из-за чего программа C++ на amd работает быстрее чем на intel?

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

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Доказательство не верно из-за индуктивного перехода. Вы рассматриваете только уже отсортированные наборы задач. Не ясно, что добавляя задачи в другом порядке вы получаете варианты не лучше. Вы так же не показали, что вот эти 2 варианта дают оптимальное время для k+1 задачи.

    Правильное доказательство весьма простое и без индукции. Общее время будет
    Max(sum{i-начальнику}(bi), max{i - подчиненным}(ai))
    .
    Отсюда видно, что если вы какую-то задачу дали подчиненному, то все задачи с меньшим A нет смысла давать начальнику. Ведь второе слагаемое-максимум от этого не изменится, но первое увеличится. Можно "бесплатно" выполнить эти задачи подчиненными. Поэтому в оптимальном ответе вы даете какое-то множетсво минимальных A подчиненым, а остальные начальнику. Иначе можно какие-то задачи перекинуть с начальника на подчиненного и уменьшить первое слагаемое не меняя второе, уменьшив таким образом ответ, т.е. в этом случае решение точно не оптимальное.
    Чтобы все варианты возможных оптимумов перебрать надо отсортировать задачи по возрастанию A. Это код и делает. поддерживается сумма B у всех оставшихся задач, а от текущей берется A - который и будет максимумом для всех задач с меньшим A.
    Ответ написан
    Комментировать
  • Существуют ли эталонно красиво написанные программы?

    pindschik
    @pindschik
    ФЫВА ОЛДЖ
    да, их две:

    10 print "Hello world!"

    и еще:

    program HelloWorld;
    begin
    writeln('Hello World!');
    end.

    Не уверен, что можно считать эталонами варианты на С или других языках в принципе :)
    Ответ написан
    1 комментарий
  • Какая сложность у этого алгоритма?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Цикл while же выполняется пропорционально количеству цифр в числе..
    Да. А количество цифр в числе C это ⌊log10C⌋ + 1.
    Элемент суммы с меньшей степенью (1) отбрасываем, округление вниз убираем, основание логарифма неважно, получаем logC
    Ответ написан
    6 комментариев