• Почему в базу данных попадает путь без слэшей?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    потому что данные в БД надо добавлять по-человечески, а не как пацаны в подворотне показали.

    Данные в БД надо всегда отправлять отдельно от самого запроса. Это непреложное правило, которое надо соблюдать всегда.
    Для этого надо
    • Заменить все переменные в запросе на специальные маркеры, которые называются плейсхолдеры или параметры, а по сути - просто знаки вопроса
    • Подготовить запрос к исполнению с помощью функции prepare(). Эта функция принимает строку запроса и возвращает экземпляр специального класса stmt, с которым в дальнейшем и производятся все манипуляции
    • Привязать переменные к запросу.
    • Выполнить подготовленный ранее запрос с помощью с помощью execute()

    В mysqli это будет так
    $sql = "INSERT INTO `events` (`title`, `discription`, `date`, `img`) VALUES (?,?,?,?)";
    $stmt = $link->prepare($sql);
    $stmt->bind_param("sssss", $title, $discription, $date, $path);
    $stmt->execute();

    bind_param() принимает в качестве параметров все переменные, которые должны попасть в запрос, в том же самом порядке, в котором стоят плейсхолдеры в запросе. Но кроме того, сначала в этой функции должны быть указаны типы для всех переменных, в виде строки, где тип переменной обозначается одной буквой. То есть букв в этой строке должно быть ровно столько, сколько дальше будет переменных. К счастью, можно особо не париться с типами и для всех переменных указывать тип "s".

    Но по-хорошему для работы с БД в РНР лучше использовать PDO, Тем более что там колупаться с bind_param не нужно, а можно сразу отправить все данные в execute
    $sql = "INSERT INTO `events` (`title`, `discription`, `date`, `img`) VALUES (?,?,?,?)";
    $stmt = $link->prepare($sql);
    $stmt->execute([$title, $discription, $date, $path]);

    И скажи спасибо что у тебя просто слеши пропали, а не всю базу шутники удалили
    Ответ написан
  • Есть ли нативный способ написать GUI на html/css для С++ программ?

    HemulGM
    @HemulGM
    Delphi Developer, сис. админ
    Хватит ерундой заниматься и используйте нормальные инструменты для GUI конкретного языка.

    Qt -тяжелая для одного виджета? А браузер для одного виджета не тяжелый?

    Пиши на шарпе или делфи тогда. Там с GUI куда лучше и легче.

    P.S. qt позволяет использовать css для настройки контролов.
    Ответ написан
  • Могу ли я в чистом javascript в асинхронной функции подождать возникновения события?

    lazalu68
    @lazalu68
    Salmon
    Конечно можете. После await у вас должен идти промис, который будет ресолвиться из обработчика события. Если речь о событиях DOM, то как-то так:

    HTMLElement.prototype.waitFor = function(event_name) {
        if (event_name) {
            return new Promise((res, rej) => {
            	const listener = function() {
            		res()
            		this.removeEventListener(event_name, listener)
            	};
    
            	this.addEventListener(event_name, listener);
            })
        } else {
            throw 'No event passed to waitFor method!';
        }
    }
    
    async function foo() {
    	const start = new Date();
    	await document.querySelector('body').waitFor('click');
    	console.log('uspeshno dojdalis clicka, jdali celih ' + ((new Date().getTime() - start.getTime())/1000) + ' sekund');
    }
    
    foo();
    Ответ написан
    7 комментариев
  • Почему функция на python выдает ошибку спустя 40 минут работы?

    @dooMoob
    Ну а что тут разбираться, у вас стек переполняется при увеличения числа вложенных вызовов. Память как бы не бесконечная. Вам скорее всего надо это на бесконечный цикл переписать
    Ответ написан
    3 комментария
  • Как мы перенесли квадратный корень с числителя в знаминатель?

    @AVKor
    Сокращением дроби на корень из х.
    Ответ написан
    Комментировать
  • Почему не работает json.loads?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Потому что строковое представление словаря - это не JSON.
    Ответ написан
    Комментировать
  • Какова стоимость и сроки создания браузера?

    zagayevskiy
    @zagayevskiy
    Android developer at Yandex
    Миллионы долларов и сотни человеколет.
    Ответ написан
    3 комментария
  • Возможность упаковки кругов в прямоугольник?

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

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Да. Но есть нюанс.
    Если это линки одного домена - нужно контролировать максимальное количество параллельных соединений к одному домену и частоту запросов.
    Ответ написан
    Комментировать
  • Как на питоне реализовать такую функцию?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    1. Выучить Python
    2. Выяснить какие есть библиотеки для парсинга и какая подойдёт вам
    3. Изучить документацию выбранной библиотеки
    4. Написать скрипт
    Ответ написан
    Комментировать
  • Какие распределенные файловые системы или хранилища сейчас популярны?

    @MechanID
    Админ хостинг провайдера
    Ну тут вопрос сначала о бюджете и только потом о технологиях.
    приведу реальный пример - есть 100ТБ электронных писем(почтовый хостинг) - миллиарды мелких файлов, есть зоопарк стораджей которые отдают это по NFS в контейнеры и виртуалки. Никаких обджект стораджей и цефа(или другой распределенной ФС).
    сами стореджи - от просто 2U серверов с кучей дисков до СХД dell unity различный моделей.
    горячего резервирования нет (ибо дорого), есть бекапы.
    Поэтому вам нужно тщательно считать - возможно резервирывание и распределенный сторедж это то что вы не можете себе позволить, а вот просто 2U сервера от например supermicro на 24 или 50 дисков, которые отдадут NFS шару соседним серверам с контейнерами это то что вы можете позволить.
    Отдельно нужно считать сколько стоит минута или час простоя вашего сервиса.
    Ответ написан
    8 комментариев
  • Как запустить программу как демон в Go?

    EvgenyMamonov
    @EvgenyMamonov Куратор тега Go
    Senior software developer, system architect
    Если сделать вот так ./main & - тогда при завершении ssh сессии отвалится и сам демон.

    Всё действительно сильно зависит от ОС.

    Если говорить о Linux и о самом простом способе, то можно вот так
    nohup ./main > error.log 2>&1 &
    Этот способ подходит для любых бинарников, которые не делают fork, т.е. ведут себя также, как и Go'шный http ListenAndServe.

    Второй вариант - это запуск сервиса через systemd или init.d в зависимости от того, какой в вашем Linux.
    Я предпочитаю именно этот вариант, особенно, когда нельзя использовать Docker (например на виртуальных машинах с Virtuozzo).
    Для systemd (например на CentOS) можно создать файл /etc/systemd/system/yourservice.conf примерно такого содержания
    [Unit]
    Description=YourServie
    After=network.target
    After=syslog.target
    
    [Service]
    User=nobody # user ID под которым должен работать ваш демон
    Group=nobody
    Type=simple
    WorkingDirectory=/opt/yourservice
    ExecStart=/opt/yourservice/yourservice >> /var/log/yourservice.log 2>&1
    Restart=always
    
    [Install]
    WantedBy=multi-user.target


    Третий вариант - использовать Docker, инструкций много в интернете, если этот вариант актуален - напишите, я помогу найти нормальную.

    Четвёртый вариант, который обычно используется в ПО типа Nginx и т.д.
    В общем случае нужно:
    - породить новый процесс, т.е. сделать fork (вызвать системный вызов)
    - настроить вывод stdout, stderr в файлы (опционально)
    - "отвязаться от сессии" вызвать системный вызов setsid
    - сделать chdir куда нужно
    - настроить обработку сигналов SIGINT, SIGTERM, чтобы иметь возможность корректно завершать работу или перечитывать конфиги

    Возможно я что-то упустил в этом списке, давно уже демонов таким образом не делал, использую или Docker или systemd/init.d, так намного проще :)

    Могу еще добавить, что 4й вариант для Go считается антипаттерном.

    Вот тут https://socketloop.com/tutorials/golang-daemonizin... есть пример, правда он не очень удачный, там очень много нюансов.
    Ответ написан
    Комментировать
  • Есть ли python с нестрогой типизацией?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Слабая типизация для слабых программистов.
    Ответ написан
    3 комментария
  • Стоит ли сегодня новичку изучать C/C++?

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

    И он спрашивает вас - а стоит ли мне заниматься X?

    НУ ОТКУДА МЫ ЗНАЕМ, стоит ли вам заниматься X? Вот я программирую уже больше 20 лет, 16 из них я программирую на C++, 14 - получаю за это зарплату в виде пяти, а потом и шестизначной суммы

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

    Вам этот ответ как-то поможет? Особенно если у вас нет желания углубленно ковыряться в тонкостях архитектуры вычислительных систем и радоваться лишним выжатым из процессора миллисекундам?

    Если у вас есть желание работать типа в айти 5/2 с 9 до 18, получать стабильные 90к рэ в месяц - есть более "легкие" пути.

    Чем грозит неправильный выбор при высокой зарплате? Размазыванием слез и других жидкостей по хабру в духе "ребята, мне 25 годиков, на мне жена, дите, ипотека, я получаю три штуки баксов в месяц, но я совсем выгорел, у меня депрессия, тревога, импотенция, жена говорит, что я эмоционально холоден к ней, изменяет и грозит разводом...

    КАКОГО ПСИХОТЕРАПЕВТА МНЕ ВЫБРАТЬ, ШТОБ ПОМОХ?"
    Ответ написан
    4 комментария
  • Как программисту отдыхать и организовать распорядок дня?

    @podde
    самый младший сисадмин
    Не вините себя. У вас объективно очень много времени уходит на дорогу.
    Совершенно серьёзно думаю, что в такой ситуации надо попробовать поговорить с руководителем на предмет хотя бы частичной (пару раз в неделю) удалённой работы. А лучше попробовать вообще выпросить удалённый режим.
    Если нет – пробовать искать другую работу (поближе к дому или удалённую).
    Ну, действительно, по пять часов в день на дорогу – это не дело.
    Ответ написан
    Комментировать
  • Почему id модели не меняется при удалении другой модели в django?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    Вся суть идентификаторов в том, что они неизменны. Чревато было бы, если бы статьи "упорядочивали свои идентификаторы".
    Ответ написан
    Комментировать
  • Что это за конструкция в моделях django?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Стоит выучить Python прежде, чем браться за написанный на нём Django.
    Ответ написан
    4 комментария
  • Объясните, плиз зачем нужен react и vue?

    Ответ на вопрос "почему" заключается в одной емкой фразе: потому что сложно синхронизировать интерфейс и состояние.

    Представьте, что у вас есть простой UI какого-нибудь ToDoApp. Вам всего-то нужно сделать так, чтобы при вводе новой задачи она появлялась в списке, а при нажатии на крестик напротив удалялась бы. Проще простого!

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

    На этом этапе вы можете начать велосипедить. Писать какие-то утилиты для работы с DOM. Разделите index.js на несколько файлов, сообразно DDD или хотя бы единой ответственности. Допустим даже, что вашим приложением внезапно стали пользоваться, у вас куча бизнес-идей. Вы начинаете наваливать фичи, структура становится все запутаннее, кода становится все больше, а еще приложение начинает тормозить. Вы проводите небольшой анализ и понимаете, что проблема в излишне частом обращении к DOM - вы дергаете его на каждый чих, ведь с jquery это так просто! И что делать? Писать еще один велосипед, чтобы обновлять DOM пакетно? А как отслеживать изменения в данных с сервера? Это ж сколько работы!

    К счастью, все вышеописанное, и даже гораздо больше, уже решено в Google, Facebook, а также некоторыми талантливыми энтузиастами. И у нас есть Angular, Vue, React, Svelte, которые предлагают вам возможность создавать быстрые, поддерживаемые приложения с минимумом шаблонного кода и продуманной архитектурой.
    Ответ написан
    Комментировать
  • Выполнение python скрипта каждые 25 минут?

    DevMan
    @DevMan
    любой планировщик задач для вашей оси.
    Ответ написан
    Комментировать
  • Какие нужны знания чтобы стать МАСТЕРОМ в области ремонта ПК и ноутбуков?

    @lonelymyp
    Хочу вылезти из минуса по карме.
    Курсов как таковых нет, но в основном нужны классические понятия элеткротехники, элеткроники. там конечно преподают древнее старьё, дай бог чтобы не ламповую технику, но хотябы правила кирхгофа вызубришь, 09.03.02 будет скорее будет бесполезна. Смотри там по ситуации, может будет возможность перевестись в процессе если есть более толковые специальности.

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

    Честная работа мастером по ремонту компов обречена на нищету.
    Это настолько малоприбыльно что если ты будешь в одиночку только компы ремонтировать, у тебя скорей всего не хватит денег даже на аренду офиса в приличном месте. Поэтому кроме ремонта придётся ещё заниматься и всем другим связанным с электричеством + торговля + какие-то ещё услуги.
    Лишь немногие кто смог распиариться через сообщества или ютуб канал как-то более менее могут внятно существовать в одиночку.
    Ответ написан
    Комментировать