• Как исправить код чужого репозитория?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Гуглить git flow.
    Ответ написан
    Комментировать
  • Как исправить код чужого репозитория?

    ayazer
    @ayazer
    Sr. Software Engineer
    создаете свою форку -> создаете в своей форке новую ветку -> исправляете баг в новой ветке -> создаете pull request с ветки своей форки в основную ветку оригинального репозитория. И обычно в более-менее популярных репозиториях есть список требований/рекомендаций которые надо выполнять если хотите чтоб ваш код вмерджили
    Ответ написан
    7 комментариев
  • Какая термопаста для процессора лучше Evercool Nano Diamond [TC-H03] или Arctic Cooling MX-4 (2019)?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Вместо подбора пасты, оверклокерской матери, памяти, проца, охлаждения. Просто купите норм проц. И я таки уверен что система будет стабильней. Даже с КПТ
    Ответ написан
    2 комментария
  • Как определить зависимость между числами зная несколько начальных значений и конечное?

    Никак, скорее всего.

    Простой пример: в Excel у злодея и в оборудовании зашит общий «секрет» – пара взаимно-простых чисел.
    N-й пароль это остаток от деления (N * p1) % p2

    К примеру, сможете продолжить последовательность? 14, 28, 42, 56, 70, 1, 15, 29, 43
    продолжение
    57, 71, 2, 16, 30, 44

    код и значения простых
    Тут намеренно взяты маленькие простые числа, поэтому заметна цикличность «паролей»:
    const p1 = 97;
    const p2 = 83;
    
    const pass = [];
    for (let n = 1; n < 10; n++) pass.push((n * p1) % p2);



    Попробуйте вытащить из своего оборудования код, проверяющий пароль и заменить его на свой, где пароль "password" )
    Ответ написан
    Комментировать
  • Линейный аддресc? Умножение на 16, как это работает вообще и за чем в модели памяти, 32 бит, с 32 бит регистрами?

    @galaxy
    Вы побухтеть пришли?
    Да, вот так это было устроено, сейчас, когда все это уже потеряло всякую актуальность, странно жаловаться. Вы еще не преставляете себе, на какие извращения шли, например, разработчики 8-битных игровых приставок.

    теперь выполняем следующую команду, и получаем 5000,(ffff+1=0) очевидно что программа совершит не предвиденный переход не пойми куда

    И? У вас код не поместился в сегмент, чьи это проблемы?
    Код большого размера (> 65KB) разбивался по разным сегментам. Для переходов у Intel были разные виды jump'ов (far/near).
    Ответ написан
    2 комментария
  • Клон telegram аккаунта, зачем?

    DevMan
    @DevMan
    или просто совпадение, или рассчет на то что люди будут ошибаться и писать ему.

    поддержка молчит ибо сказать ей нечего, кроме как вежливо послать.
    Ответ написан
    2 комментария
  • Что значит фраза "пайтон, язык с самым полным ООП"?

    HemulGM
    @HemulGM Куратор тега Python
    Delphi Developer, сис. админ
    Это ложное утверждение

    Wiki
    Дизайн языка Python построен вокруг объектно-ориентированной модели программирования. Реализация ООП в Python является хорошо продуманной, но вместе с тем достаточно специфической по сравнению с другими объектно-ориентированными языками. В языке всё является объектами — либо экземплярами классов, либо экземплярами метаклассов. Исключением является базовый встроенный метакласс type. Таким образом, классы на самом деле являются экземплярами метаклассов, а производные метаклассы являются экземплярами метакласса type. Метаклассы являются частью концепции метапрограммирования и предоставляют возможность управления наследованием классов, что позволяет создавать абстрактные классы, регистрировать классы или добавлять в них какой-либо программный интерфейс в рамках библиотеки или фреймворка[22].

    Классы по своей сути представляют план или описание того, как создать объект, и хранят в себе описание атрибутов объекта и методов для работы с ним. Парадигма ООП основывается на инкапсуляции, наследовании и полиморфизме[80]. Инкапсуляция в Python представлена возможностью хранения публичных и скрытых атрибутов (полей) в объекте с предоставлением методов для работы с ними[80], при этом на самом деле все атрибуты являются публичными, но для пометки скрытых атрибутов существует соглашение об именовании[81]. Наследование позволяет создавать производные объекты без необходимости повторного написания кода, а полиморфизм заключается в возможности переопределения любых методов объекта (в Python все методы являются виртуальными[81]), а также в перегрузке методов и операторов. Перегрузка методов в Python реализуется за счёт возможности вызова одного и того же метода с разным набором аргументов[80]. Особенностью Python является возможность модифицировать классы после их объявления, добавляя в них новые атрибуты и методы[36], также можно модифицировать и сами объекты, в результате чего классы могут использоваться как структуры для хранения произвольных данных[81].

    https://ru.wikipedia.org/wiki/Python
    Ответ написан
    Комментировать
  • SQL инъекция в UPDATE возможна ли?

    AndyPike
    @AndyPike
    Программист, full-stack developer.
    Точку с запятой можно впендюрить и продолжать запрос.
    UPDATE table SET test WHERE id = 0; DELETE * FROM users;
    Ответ написан
    6 комментариев
  • SQL инъекция в UPDATE возможна ли?

    Fernus
    @Fernus
    Техник - Механик :)
    Смысл есть!

    UPD:
    Поясню...я тебе в $id передам 9999 or 1 = 1 и все записи нафиг потерпят изменения!
    Ответ написан
    2 комментария
  • SQL инъекция в UPDATE возможна ли?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Инъекция может быть через любой запрос.
    И защищать тоже надо любые запросы.
    Никогда не надо торговаться, "а можно я не буду защищать именно этот запрос? Ну мааааам!"
    Надо просто всегда следовать простым правилам - любая переменная попадает в запрос только через плейсхолдер

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

    Уязвимость — это сама возможность с помощью переданных в запрос данных изменить его код.
    Даже если ты не знаешь ни одного способа ей воспользоваться, уязвимость от этого никуда не девается.
    Даже если та возможность, про которую ты знаешь, в данном случае не прокатит - остаются ещё тысячи других.
    Если есть уязвимость, то способы ей воспользоваться всегда найдутся.

    То есть сама уязвимость никак не зависит ни от каких второстепенных факторов - типа запроса, передаваемых данных, способов их валидации, твоих знаний SQL. Это сам факт. Можно подставить свой код в запрос? Значит он уязвим. А как конкретно можно нагадить - это отдельная тема.

    Кроме того, любая уязвимость - это всегда ошибки. Если в $id будет пусто, то запрос вызовет ошибку. Если в $id будет слово select то запрос вызовет ошибку. Если будет слово "привет", то запрос вызовет ошибку. Оно тебе надо?

    При этом разных вариантов возможных ошибок и способов воспользоваться уязвимостью - тысячи, им посвящены целые учебники и статьи. Но для того чтобы защищаться, не надо знать ни одного. Потому что защищаться надо не от отдельных способов эксплуатации, а закрывать саму уязвимость. И сделать это очень просто:
    1. Любые данные должны добавляться в запрос только через плейсхолдеры
    2. Любые другие элементы запроса должны выбираться из белого списка - заранее прописанных в нашем коде значений.


    Если вопрос "а можно я не буду защищаться?" вызван ленью, то это тоже решаемо. В принципе, лень - это очень важное качество для программиста. Главное - направить её в нужное русло.

    Если каждый раз писать по три строчки долго
    $sql = "INSERT INTO users SET email = ?, password = ?"; // заменяем на знаки вопроса
    $stmt = $db->prepare($sql); // подготавливаем запрос, получаем stmt
    $stmt->bind_param("ss", $email, $hash); // два знака вопроса - две переменных - две буквы s
    $stmt->execute(); // выполняем запрос

    То надо воспользоваться такой вещью, как программирование. И написать функцию, которая возьмет на себя всю рутинную работу.
    function prepared_query($mysqli, $sql, $params, $types = "")
    {
        $types = $types ?: str_repeat("s", count($params));
        $stmt = $mysqli->prepare($sql);
        $stmt->bind_param($types, ...$params);
        $stmt->execute();
        return $stmt;
    }

    и в итоге предыдущие 4 строчки превратятся в одну:
    prepared_query($db, "INSERT INTO users SET email = ?, password = ?", [$email, $hash]);

    или твой запрос:
    prepared_query($db, "UPDATE table SET test WHERE id = ?", [$id]);

    - просто, быстро, удобно и безопасно
    Ответ написан
    26 комментариев
  • Где можно найти алгоритм шахмат?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    В общем случае такие задачи решаются перебором. Для этого строится дерево возможных состояний доски начиная с текущего состояния. Потомки текущего состояния в этом дереве - это результаты всех возможных ходов очередного игрока. Это сильно ветвящееся дерево, а значит буквально через несколько ходов количество элементов в нём станет слишком большим, чтобы перебирать и оценивать их по очереди. Тут и речи не жёт о спуске по дереву до финальных (листовых) состояний, по которым можно однозначно удить о выигрыше.
    Очевидно, что дерево можно усекать и не рассматривать заведомо проигрышные или слишком затратные ходы, можно сравнивать состояния с определёнными предварительно просчитанными ситуациями. Чем их больше в БД, тем быстрее будет работать ваш алгоритм.
    В любом случае более менее эффективно играть в шахматы компьютеры научились только недавно и для этого нужны очень мощные компьютеры, большая БД и нетривиальные алгоритмы распознавания типовых паттернов на доске.
    Нельзя просто так взять и переделать готовый хороший шахматный алгоритм под себя. Вернее можно, но сложно.
    Зато попробовать написать что-то своё - это хорошее упражнение для мозгов.

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

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

    @Wexter
    Это нормально при использовании RAID контроллера без режима JBOD, в таком случае если необходимо отдать только один диск нужно создать RAID 0 из одного диска
    Ответ написан
    1 комментарий
  • Как редактировать большие файлы *.txt и *.lst?

    @d-stream
    Готовые решения - не подаю, но...
    Т.е. критерии такие:
    -быстрый поиск;
    -просмотр;
    -редактирование;
    -адекватная работа с ресурсами компа;
    -бесплатный;


    Это собственно описание БД
    Поэтому совет Роман Мирр имеет место быть.

    Тут скорее вопросы другого плана:
    - как часто будут эти файлы меняться извне? и будут ли?
    - поиск какого рода?
    Ответ написан
    3 комментария
  • Как редактировать большие файлы *.txt и *.lst?

    2ord
    @2ord
    Если текстовый файл имеет структуру таблицы или построчно представляет из себя слова, то конвертируйте в СУБД SQLite или другую. При переносе в СУБД каждая строка получит свой номер и можно будет манипулировать с данными при помощи SQL запросов.
    Ответ написан
    Комментировать
  • Как редактировать большие файлы *.txt и *.lst?

    @ComodoHacker
    Для просмотра и поиска я пользуюсь Far Manager.

    Насчет редактирования нужно уточнить, что за редактирование. Редактировать такие файлы вручную несколько странно. Обычно для этого используются утилиты для пакетного редактирования, типа awk, sed и т.п.
    Ответ написан
    6 комментариев
  • Уменьшает ли деление ssd на лог. разделы его срок службы?

    Zettabyte
    @Zettabyte
    Проф. восстановление данных ▪ Вопрос? См. профиль
    если диск поделен на 2 раздела, на одном ОС установлена, то раздел с системой же перезаписывается чаще

    Механизм трансляции SSD не должен учитывать никаких разделов. Микропрограмма диска не знает как вы его будете использовать, как поделите, и чем и что будете записывать.
    ОС хочет писать в сектор №322223 (который у вас в границах системного раздела), диск скажет ей, что записал, а сам запишет в "сектор" №184639305, установив в таблице трансляции соответствие между ними. При перезаписи реальное расположение данных снова изменится.

    если, например, у терабайтного диска свободно только 100гб(системный раздел 100гб), а остальное лежит мертвым грузом, то ресурс tbw можно делить

    Да, иметь мало незанятого/неиспользуемого объёма всего ССД плохо. "Заездить" малую часть диска проще, чем весь его объём.

    Производители обещают, что даже статические данные "перемешиваются" диском внутри себя независимо от пользователя, но у вас нет возможности проверить как это работает и происходит ли вообще.
    Некоторые обещают активно перемещать даже часто читаемые данные (видимо, чтобы лучше читались и не требовали коррекции ошибок контроллером), но здесь тоже можно положиться лишь на обещания.

    Лучше постарайтесь не опускать объём свободного пространства ниже 25%. Чем современнее модель SSD, тем это важнее.
    Ответ написан
    1 комментарий
  • Соглашаться ли получать меньше на испытательном сроке?

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