• Как открыть localhost для общей сети?

    @Kostik_1993
    Web Developer
    Развернуть приложение на VPS и не заниматься ерундой
    Ответ написан
    Комментировать
  • Какой выбрать монитор для кодинга?

    xez
    @xez Куратор тега Железо
    TL Junior Roo
    Вот статья: https://habr.com/ru/post/508824/
    Tl; dr;: берите 4K ips.
    Ответ написан
    Комментировать
  • Как вывести данные mysql для конкретного пользователя PHP?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) Читаем документацию:
    The enctype attribute can be used only if method="post".

    2) Файлы не передаются методом get
    3) Делаем выводы из 1 и 2.
    4) if(isset($_REQUEST['submit'])) - плохая проверка, начиная с того что я могу отправить форму не нажимая кнопку субмит, и заканчивая тем что такой проверкой вы не знаете какой запрос придет с клиента и что в нем будет (то есть вообще ничего кроме этой сомнительной переменной не проверяете).
    5) В данной структуре данных вы никак не можете привязать посты к пользователям. Либо нужно добавить поле, определяющее владельца поста, либо делать пивот таблицу, где записывать соответствия пар юзер-пост.
    6) Кроме того - у вас в коде отсутствует какое-либо понятие идентификации пользователей, то есть вы не знаете какой пользователь добавляет или запрашивает данные, что делает бесполезным само понятие принадлежности.
    Ответ написан
    Комментировать
  • Насколько решение безопасно?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Начать надо с ответа на вопрос - а почему тут нужны права рута? А можно ли обойтись без них?
    Ответ написан
    Комментировать
  • Генерировать числа с заданной вероятностью?

    Griboks
    @Griboks
    В каждом языке программирования присутствует специальная функция для генерирования случайных чисел от 0 до 1. Соответственно, вы представляете ваши числа в виде интервалов, а случайное число в виде относительной координаты. В какой интервал укажет координата, то число и является искомым.

    Пример
    Дана таблица:
    1 - 0.9
    2 - 0.8
    3 - 0.7

    Тогда интервалы будут следующие: 0-0.9, 0.9-1.7, 1.7-2.4.
    Допустим, сгенерировано случайно число 0.65 - примем его за относительные координаты.
    Переводим координаты в абсолютные 0.65*2.4=1.56. Следовательно, случайно число попадает в интервал 0.9-1.7, значит искомое число - 2.
    Ответ написан
  • Временная страница сайта?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    гуглить:
    Единая точка входа
    mod_rewrite
    MVC
    роутинг
    Ответ написан
    1 комментарий
  • Какую выбрать СУБД, если в день может быть более 11млн записей?

    При такой постановке задачи лучшим вариантом СУБД будет та, которую знают и умеют обслуживать ваши админы.
    С таким объёмом вставок справится любая мейнстримная на правильно подобранном железе. Что ещё вы собираетесь делать с этими записями нам неведомо, посему на выбор повлияеть не может.
    Ответ написан
    1 комментарий
  • Как разметить SSD при установке Ubuntu 22.04?

    xez
    @xez
    TL Junior Roo
    Если вы новичек - не парьтесь, пусть установщик разметит "автоматически" (или "по умоланию").
    Наберетесь опыта - сами поймете что и как размечать и монтировать.
    Ответ написан
    3 комментария
  • Какой протокол лучше выбрать для шифрованного обмена файлами?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    vpn + smb
    rsync + ssl
    torrent sync

    И на самбу не стоит гнать,
    Ответ написан
    Комментировать
  • Какой протокол лучше выбрать для шифрованного обмена файлами?

    @Drno
    Cifs - лол)) ни в коем случае)))

    Можно например rcync через ssh. Или его аналог - rclone
    Ответ написан
    Комментировать
  • Как сделать проверку SQLite, Python?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Вот здесь все описано.
    Ответ написан
    Комментировать
  • Как вывести текст в textarea не потеряв переносы строк в тексте?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    ВАРИАНТ 4-Й, очевидный
    1 - пишу абзац текста с переносами в textarea
    2 - Отправляю в SQL-базу ничего не меняя.
    3 - Оригинальные системные переносы сохраняются в SQL - базе, как и должны, поскольку любые заморочки с яваскриптами к базе данных не имеют вообще никакого, ни малейшего отношения
    4 - Читаю из SQL базы
    5 - Вывожу в обратно в texarea
    6 - В texarea ВСЁ РАБОТАЕТ! A magic! При том что мы вообще нигде ничего ни на что не меняли

    6a - По поводу HTML сущностей. Хотя в приведённом примере нет ни одного символа, который бы требовал перекодирования в HTML-сущности, тем не менее, при выводе любого текста в HTML, эти сущности действительно должны быть перекодированы в обязательном порядке, всегда, в 100% случаев. Причем с помощью не какой-то левой addslashes, а функции, которая действительно это делает, htmlspecialchars($var_zametka)

    7 - Собираюсь с мыслями, и напряжённо думаю - в каком месте у меня текст взаимодействует с яваскриптом? Который к выводу текста в текстарию не имеет ни малейшего отношения?
    8 - думаю...
    9 - думаю...
    10 - наконец-то нахожу.
    11 - перед тем, как отправлять текст в яваскрипт, кодируем его тем методом, который специально предназначен для отправки данных в яваскрипт, а не какими-то шаманскими заклинаниями и плясками с бубном.echo json_encode($var_zametka)
    12 - ВСЁ РАБОТАЕТ! Просто потому, что получилось расхлебать кашу в голове, в которой SQL путается с РНР, HTML c яваскриптом, а экранирование спецсимволов почему-то называется заменой на HTML-сущности. Хотя если открыть документацию на абсолютно бесполезную функцию addslashes, то там ни одного разочка слово HTML не встретится.
    Ответ написан
  • На ноутбуке не хватает места, 256 ГБ SDD. Лучшее решение для увеличения места?

    @Drno
    купи новый ssd на 1 тб
    клонируй на него систему
    купи бокс для старого ssd и юзай как флешку

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

    sheerluck
    @sheerluck
    Так как приходят новые люди и им нужно показывать только часть кода -- то надо заводить новый отдельный репозиторий. Отслеживать их не сложно. Добавлять и исключать людей не сложно.
    А свалку делать не надо.
    Ответ написан
    Комментировать
  • Как исправить проблему с созданием регистрации пользователей?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Это всё просто ужасно. Начиная прямо с первой строчки, class Register extends Database
    Делать отдельный класс для регистрации глупо. Если уж делать класс, то для манипуляции юзером в целом, а не одной только регистрации. Плюс, регистрация пользователя - это не база данных. И не должна наследовать классу Database.
    По сути, вы хотите натянуть ООП на обычное процедурное программирование. Не надо этого делать, получится самолёт из соломы. Сделайте простую функцию.

    Но это ещё цветочки. Остальных проблем тут выше крыши:
    1. Никогда не используйте сокращённый синтаксис INSERT. Всегда надо явно перечислять поля. Это, скорее всего, и является причиной ошибки. Но даже если нет, то проблемы всё равно вылезут в будущем
    2. Собственно сообщение об ошибке нам и надо получить от базы данных, чтобы понять в чем проблема. для этого к коду соединения с БД надо добавить строчку
      mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
      и после этого смотреть сообщение об ошибке
    3. Самое главное - SQL инъекция. Какой смысл делать регистрацию вообще, если любой дурак узнает пароли всех остальных пользователей или сможет авторизоваться вообще без пароля? Запросы надо выполнять только через подготовленные выражения
    4. И по поводу паролей. Пароли надо хранить в фаршированном виде, обработанными функцией password_hash()
    Ответ написан
    Комментировать
  • Будет ли использоваться индекс в запросе вида WHERE `field1` LIKE '_aa_a_'?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Нет разницы, один или 10.
    Для простоты индекс можно рассматривать как отсортированный список.
    Если список учеников в классном журнале отсортирован по алфавиту, то вы довольно быстро найдёте нужного.
    А теперь представьте, что вы по тому же самому списку ищете фамилию, на зная первой буквы. И тут уже без разницы, сколько букв мы не знаем. И одной достаточно, чтобы полностью поломать поиск.

    Точно такие же проблемы будут и у базы данных. Вместо отсортированного списка с выходом сразу на нужную букву, придётся тупо искать перебором.

    Полнотекстовый индекс также не является чем-то особенным в этом плане. Он устроен по совершенно тупому принципу: грубо говоря, БД берёт текст из колонки, и разбивает его на слова. И строит по этим словам снова точно такой же отсортированный список, с указанием, в каких строках это слово используется. То есть когда мы делаем запрос с match, то mysql находит искомое слово в индексе, и возвращает из него все строки.

    И точно так же полнотекстовый индекс не работает, если поставить звёздочку спереди. Мануал так и говорит:
    Words match if they begin with the word preceding the * operator

    То есть звездочка работает только если поставить её в конце слова.
    match against ('класс*') найдёт слово "классный", а '*accный' его уже не найдёт.
    То есть БД тебе сразу говорит, что для такого поиска полнотекстовый индекс будет бесполезен.
    Ответ написан
    Комментировать
  • Можно ли настроить синхронизацию хостов, шаблонов между двумя zabbix серверами?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    В чём заключается цель синхронизации? Отказоустойчивость предоставляет репликация базы и контейнеризация приложения, незачем тут, имхо, городить костыли сомнительного качества в угоду "незамороченности".
    Ответ написан
    4 комментария
  • Пара вопросов по поводу сборки ПК?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Во-первых: для каких целей ПК и какой бюджет?
    Второе: для данной конфигурации процессора и видеокарты блок питания слишком слабый, на грани - надо брать минимум 750-800 ватт, иначе БП будет работать на износ, а то и вообще с перегрузкой. У блока питания должен быть запас по мощности минимум в 20%, т.к. постоянная эксплуатация блока питания на максимальной мощности быстро приведет к его деградации и выходу из строя, а так же со временем и старением его мощность падает, что тоже может привести его к выходу из строя при постоянной перегрузке. Кроме того, если в будущем планируется апгрейд на более мощную видеокарту или еще какие девайсы - то это тоже надо учитывать при выборе БП и брать с учетом более мощной будущей видеокарты или просто дополнительным запасом мощности для питания дополнительных устройств. Вообще, на блоке питания крайне не рекомендуется экономить и лучше потратиться один раз на качественный БП, чем потом на весь компьютер, т.к. при выходе из строя БП есть шанс того, что он может утянуть остальное железо за собой в электронный рай всё или частично. Топ - SeaSonic, FSP, например.
    Третье: слишком маленький ССД - имеет смысл брать взять хотя бы на 1ТБ и обязательно M2 PCI-E 4.0 (скорость). Например что-то из самсунгов или интела.
    На счет совместимости: это нынче достаточно редкое явление, а когда случается - то обычно магазины идут на встречу и без проблем меняют несовместимое оборудование.

    Рекомендую обратить внимание на ежемесячную подборку железа от 3DNews: https://3dnews.ru/1073472/kompyuter-mesyatsa-senty...
    Ответ написан
    Комментировать
  • Как вы решаете проблему, когда нужно срочно пофиксить багу - через git stash? А если вдруг забудете что там stash? Есть еще методы?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    git commit -m "WIP"— достаточное красивое решение.
    Ещё можно создать дополнительный рабочий каталог для параллельной работы.
    git worktree add
    Тогда прятать недоделанное не понадобится.
    Ответ написан
    3 комментария
  • Глюки на сайте после программных изменений, пока не очистить кэш. Как от этого избавится?

    delphinpro
    @delphinpro
    frontend developer
    Браузер кэширует ресурсы по полному УРЛ, включая параметры запроса.
    Поэтому выход очень простой, и он повсеместно используется.
    Нужно дописать в queryString любой уникальный параметр.
    В лоб можно писать метку времени

    <script src="my_script.js?<?= time() ?>">

    Однако, с таким подходом файл будет постоянно загружаться заново при каждом запросе.

    Лучше ввести версионирование. Простейший вариант – вручную обновлять версию при изменении

    <script src="my_script.js?v=1">
    <script src="my_script.js?v=2">


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

    <script src="my_script.ab21df.js">

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

    В остальных случаях отлично подойдет вариант с подстановкой метки времени изменения файла

    <script src="my_script.js?v=<?= filemtime('/path/to/my_script.php') ?>">
    Ответ написан
    Комментировать