Задать вопрос
  • Как убрать спам баннеры о войне?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    https вестимо. Вставлять баннеры о чем угодно - от войны до женских прокладок может например провайдер. Или хостер. Или еще кто.

    PS: Скрой картинку под спойлер, плиз. И без того от политики тошнит.
    Ответ написан
    5 комментариев
  • Какой яп лучше подойдет для метапоисковой системы?

    @d-sem
    Язык лишь позволяет реализовать архитектуру. Даже на языках, более приспособленных к асинхронной работе, с плохой архитектурой получите тоже самое исчерпание ресурсов пока вы рассуждаете рамками одного скрипта. А с учетом незнания особенностей этого нового языка можно потерять очень много времени на дебаг.

    Поэтому выход в архитектуре. Асинхронность реализуется через очереди, а снижение нагрузки через кеширование.

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

    Пример:
    1. Точка API где собираются результаты паралельных запросов - Node.js с промисами которые работают с очередями для общения с п.2 и п.3, при необходимости в будущем переписать на golang, если будет тормозить;
    2. Точки где не нужны высокие нагрузки и много логики - php, python, любой язык который хорошо знаете. Если будет что-то становиться узким местом - переписывать компилирируемое и оптимизировать;
    3. Где высокая нагрузка - что-то компилируемое вроде golang.

    Соответственно, кеширование на уровне конечных точек позволяет не делать каждый раз новые запросы и переиспользовать результаты предыдущих и потому нагрузка будет расти более плавно.
    Ответ написан
    Комментировать
  • Как вызвать python функцию с аргументами из php скрипта?

    nochkin
    @nochkin
    На стороне питон-скрипта должен быть код, которые читает эти аргументы. Обычно это делается через sys.argv или argparse.

    Кстати, для PHP есть ещё system, который может быть удобнее и понятнее в данном случае.
    Ответ написан
  • У кого есть позитивный переход с Windows на Astra Linux в гос/бюджетной сфере?

    Цель конечно благая.
    Однако насчет успешного перехода - это всегда боль и слезы. Такие вещи проходят только при жесткой поддержке руководства (партия сказала 'надо!'), либо комп используется только например для экзамена в ГИБДД, как написал выше уважаемый коллега.
    Из того что точно всплывет:
    • Офисный пакет - полной совместимости между MS Office и Libre Office нет, а это значит негатив пользователей 'ты придумал поставить этот линекс, ты и исправляй документ'
    • Если в организации Exchange - то аутлука под линукс нет, все остальное - костыли. Они вроде бы как то работают, но 'полной совместимости нет'
    • 1С - даже если заработает в Линуксе (например веб-клиент), то вероятно поплывут формы, которые выгружаются в формате Word или Excel. А это значит что нужно чтобы те кто поддерживают 1С вам эти формы допилили, что может уже привести к прямым затратам.


    Я бы посоветовал подождать - есть подозрение что импортозамещение скоро пойдет галопом, и тогда у вас будет активная поддержка руководства.
    Ответ написан
    3 комментария
  • Как выполнить длительный PHP скрипт?

    Adamos
    @Adamos
    Клиент нажимает кнопку, его задача записывается в очередь, ему возвращается "ОК".
    Скрипт по крону разбирает очередь и отправляет отчет клиенту, например, на почту.
    Ответ написан
    5 комментариев
  • Какая топология у слотов оперативок в плате - MSI MPG Z690 EDGE WIFI DDR4?

    Вот инструкция: https://download.msi.com/archive/mnu_exe/mb/MPGZ69...
    Вот картинка из инструкции:
    62166eab7c3d1434276384.png
    Как эта топология называется не подскажу, но как вставлять думаю понятно.
    Ответ написан
    Комментировать
  • Какой то абсурд с bluetooth соединением?

    @Drno
    Ну во первых Вы купили дешевый китайский гамноадаптер
    Во вторых - скорее всего не хватает мощности, перебивает то же вифи например сигнал. Попробуйте вотнуть БТ адаптер подближе, спереди например. или положить его на стол перед собой на usb удлинители. если это решит вопрос - то проблема в помехах
    Ответ написан
    Комментировать
  • Как переписать подключение к базе данных, по принципам ООП?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Никак.
    Это не стёб и не троллинг. Это единственный возможный ответ на этот хороший, в сущности, вопрос.

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

    в данном случае перед ООП надо выучить куда более базовые вещи.
    Например научиться применять готовые классы, такие как mysqli
    узнать почему за использование @ программистам в аду льют кипяток на самые нежные части тела
    выучить что exit('Ошибка подключения'); - это говнокод
    ну и открыть для себя разделение логики работы с данными и логики отображения. То есть сначала получить все данные, а потом только выводить.

    Эту страницу можно переписать в соответствии с принципами аккуратного кода

    Сначала сделать файл config.php.
    Этот файл можно будет исключить из системы контроля версий и таким образом иметь на каждом сервере свой

    <?php
    return [
        'db' => [
            'host' => '127.0.0.1',
            'port' => 3306,
            'db'   => 'pizza',
            'user' => 'root',
            'pass' => '',
            'charset' => 'utf8mb4',
        ]
    ];

    потом сделать файл mysqli.php
    Этот файл можно будет включать во все скрипты, которым нужно соединение с БД
    <?php
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $db = new mysqli(
        $config['db']['host'], 
        $config['db']['user'], 
        $config['db']['pass'], 
        $config['db']['db'], 
        $config['db']['port']
    );
    $db->set_charset($config['db']['charset']);
    $db->options(MYSQLI_OPT_INT_AND_FLOAT_NATIVE, 1);


    Потом сделать страницу pizza.tpl.php в которую поместить весь HTML
    .
                <select id="single" class="form-control" name = '1234' >
                    <option value="" disabled selected style='display:none;'>выберите тип</option>
                    <?php foreach($types as $object): ?>
                        <option value ="<?=$object['id']?>"><?=$object['name']?></option>
                     <?php endforeach ?>
                </select>


    И потом сделать страницу pizza.php на которой собрать это всё вместе
    <?php
    $config = require 'config.php';
    require 'mysqli.php';
    
    $sql="SELECT * FROM pizza";
    $types=$db->query($sql)->fetch_all(MYSQLI_ASSOC);
    
    include 'pizza.tpl.php';


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

    @Akela_wolf
    Extreme Programmer
    Статическая переменная в функции. И проверять - если не null - то возвращать её значение. Это один из самых простых вариантов кэширования. При наличии у функции аргументов - статический массив.

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

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

    По второму случаю у вас в коде нарушение принципа единственности ответственности: функции method2 и method3 жестко связаны (coupled) с функцией method1 (а функция finish - с ними всеми). Собственно это и порождает проблему. Код можно переписать, например так:
    сlass Neptun(){
      private function method1(){
        $users_count = get_users();
        return $users_count;
      }
    
      private function method2($users){
        if($users > 10){
            return 'it more than 10';
         }
       }
    
      private function method3($users){
        if(in_array(10, $users)){
             return 'there are user with ID 10';
        }
      }
    
      public function finish(){
        $users = $this->method1();
         echo $this->method2($users) . ' ' . $this->method3($users);
      }
    }


    Все, функции method2 и method3 "расцеплены" (decoupled) с функцией method1. А "сборку" в общую конструкцию осуществляет публичный метод finish
    Ответ написан
    1 комментарий
  • Какой язык програмирования дает скомпилированый файл с самым маленьким размером?

    Griboks
    @Griboks
    Машинные коды дают минимальный размер программы.
    Ответ написан
    Комментировать
  • Какой язык програмирования дает скомпилированый файл с самым маленьким размером?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Assembler
    Ответ написан
    Комментировать
  • Какой язык програмирования дает скомпилированый файл с самым маленьким размером?

    почему такая большая разница?

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

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

    Если смотреть на компилируемые языки чуть более высокого уровня, то самый компактный выхлоп дают C, C++, и Rust, в зависимости от настроек компилятора, подключаемых библиотек, и используемых фич.

    В целом - 11 мегабайт даже для консольной утилиты сейчас копейки.
    Ответ написан
    1 комментарий
  • Можно ли заряжать ноутбук hp elitebook 830 g6 зарядкой от телефона xiaomi note 9 pro?

    ScriptKiddo
    @ScriptKiddo
    Можно, не повлияет. Если начал заряжаться - значит зарядка и ноут нашли подходящий допустимый протокол для заряда

    Но можно ли, не повлияет это на батарею ноута?

    Не переживайте, батарея вздуется сама по себе
    Ответ написан
    Комментировать
  • Почему работает htaccess на nginx?

    Lynn
    @Lynn
    nginx, js, css
    htaccess не работает в nginx. Возможно у вас там проксирование в apache
    Ответ написан
    Комментировать
  • Как спарсить закрытую страницу на PHP?

    @rPman
    Если сайт защищается от подобного, то необходимо более точно сымитировать поведение веб клиента, а именно все заголовки и возможно даже последовательность запросов перед нужным. Не исключено что даже тайминги так же учитываются (а еще я бы с хоста, с которого хоть иногда прилетают нетипичные запросы с юзерагентом curl маркировал бы как опасные и в песочницу бы отправлял с нетипичным поведением, чтобы еще сильнее запутать реверсинежнеринг)

    подробности смотри во вкладке network правая кнопка на запросе - копировать curl bash, там будет очень удобно и понятно все разложено по полочкам с примером
    Ответ написан
    Комментировать
  • Не отправляются данные веденные из input в бд (Mysql, PHP)?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    И не будет никакой ошибки, потому что код взят из какого-то древнего руководства, написанного обезьяной.
    Меня вот поражает, ну ОТКУДА вы вы выкапываете это дерьмо мамонта? На каком ютуб канале, какой гамадрил вот это вот всё вещает?

    - print "Ошибка!: " . $e->getMessage() писал дебил, потому что специально выводить ошибки не нужно - РНР и так выведет ошибку, если его об этом попросить.
    - try {} catch (PDOException $e) { писал дважды дебил, потому что ПДО будет кидать исключения только если ему об этом сказать при соединении. А дебил об этом не сказал
    - try {} catch (PDOException $e) { писал трижды дебил, потому что см. выше. Не нужно ловить ошибку, чтобы её вывести.
    - VALUES ('{$name}', '{$surname}', '{$age}', '{$email}', '{$phone}', '{$index}'"); - а вот это уже, я думаю, не руководство, а самодеятельность автора кода. Даже в дебильном руководстве такое вряд ли можно увидеть.
    - enter' => $submit - это уже тоже автор кода, от излишнего усердия и ПОЛНОГО не понимания своих действий
    - ну и да, почему-то в списке полей id_user есть, а в VALUES внезапно нету. "Где логика, где разум?" (с)

    В общем учимся работать с БД в РНР заново
    .
    // Параметры для подключения
    $db_host = "localhost";
    $db_user = "root"; // Логин БД
    $db_password = "root"; // Пароль БД
    $db_base = 'test'; // Имя БД
    $db_encoding = "utf8mb4" // кодировка 
    
    // Подключение к базе данных
    $db = new PDO("mysql:host=$db_host;dbname=$db_base;charset=$db_encoding", $db_user, $db_password);
    // Просим ПДО сообщать об ошибках
    $db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    
    // Собираем данные для запроса
    $data = array( 'name' => $name, 'surname' => $surname, 'age' => $age, 'email' => $email, 'phone' => $phone, 'index' => $index);
    // Подготавливаем SQL-запрос
    $query = $db->prepare("INSERT INTO `users`(`user_name`, `user_surname`, `user_age`, `user_email`, `user_phone`, `user_index`) 
                         VALUES (:name, :surname, :age, :email, :phone, :index)");
    // Выполняем запрос с данными
    $query->execute($data);


    Хотя бы так
    Ответ написан
    6 комментариев
  • Как создать объект для класса через функцию def?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Созданный экземпляр класса надо вернуть из функции при помощи return. А результат выполнения такой функции присвоить нужной вам переменной.
    spoiler
    Есть вариант через глобальные переменные, но это вообще зашквар и лучше так никогда не делать.
    Ответ написан
  • Как объединить результат foreach и разделить запятыми?

    rozhnev
    @rozhnev Куратор тега PHP
    Fullstack programmer, DBA, медленно, дорого
    Соберите теги в массив и объедините их
    $tags = array_column($val["tags"], "value");
    
    echo implode(',', $tags);


    PHP online
    Ответ написан
    Комментировать
  • Как узнать названия приложений для запуска их через команду sudo?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    набери
    ls /sbin
    и посмотри список "приложений".
    Можно также ls /bin и ls /usr/bin
    Ответ написан
    Комментировать